Future Programming History

31
1 HOŞGELDİNİZ C#’A GİRİŞ TAYFUN YİRDEM (2005)

Transcript of Future Programming History

Page 1: Future Programming History

1

HOŞGELDİNİZ

C#’A GİRİŞ

TAYFUN YİRDEM (2005)

Page 2: Future Programming History

2

NEDEN BU EĞİTİMİ DÜZENLEDİK?

• Kursların fiyatları oldukça yüksek

• Kitaplardan çok çektik!!!

• Bilgiyi paylaşmak

• Üniversitelerimizde C# dersi açılmadı

• Yarışma!!!

• Bence güzel bir etkinlik

Page 3: Future Programming History

3

SİZ NEDEN BU EĞİTİME KATILMAK İSTEDİNİZ?

Beklentileriniz

Programlama bilginiz

Programlamaya olan ilginiz

Prog. geleceği hakkındaki düşünceleriniz

İngilizce bilginiz

İstekleriniz

Page 4: Future Programming History

4

İÇERİK (kaynakça)•Microsoft, •IBM,•Sun Microsystem (JAVA), •Bell Labs, •Google

C# 2.0’ A GİRİŞ

Page 5: Future Programming History

5

NEDEN C#

• Microsoft <>Açık Kaynak

• İş bulma olanakları

• Tek bir dil ile “Windows, Web, Mobil, Servis”

• Linux MONO projesi

• Microsoft’ un büyük çaptaki ilk AR-GE ürünüMicrosoft’ un AR-GE geçmişi?

• Geleceğin teknolojileri ???

Page 6: Future Programming History

6

GÜNÜMÜZDE BİLGİSAYARLAR?

• Hesaplamalar yapabilr4 + 59

• Mantıksal kararlar verebilirA=4, B=5 iseA < B

İnsan da bunları yapabilir.Hem de bir çok trilyon kat daha hızlı yapabilir.

Page 7: Future Programming History

7

GÜNÜMÜZDE BİLGİSAYARLAR?

• Bilgisayar programları / YazılımlarBilgisayarlar aptaldır, onları akıllı kılanlar komutlardırBu komutların bütününe de program denirBilgisayar siz ne derseniz onu yapar

• DonanımBir bilgisayar sisteminin fiziksel düzeneğiSomut kısım

Page 8: Future Programming History

8

GÜNÜMÜZDE BİLGİSAYARLAR?

• Bir bilgisayar 6 temel üniteden oluşur1)Veri girişi sağlayan birimler

Fare, klavye, mikrofon2)Veri çıkışı sağlayan birimler

Yazıcı, monitör, hoparlör3)Bellek birimleri

RAM

Page 9: Future Programming History

9

GÜNÜMÜZDE BİLGİSAYARLAR?

• Bir bilgisayar 6 temel üniteden oluşur.4) Aritmetik ve mantık birimi ALU

Hesaplamalar yapan, kararlar verebilen birim5) İşlemci

Diğer tüm aygıtların işlemlerini yönetir6) İkincil bellek birimi

Sabit disk, disket sürücüHard=sağlam, floppy= güçsüz

Page 10: Future Programming History

?

• Bir bilgisayarı farklı sorumluluktaki parçalara ayırmanın yararları nelerdir? Bu ayrım,– Fiyatını nasıl etkiler?– İşlem gücünü nasıl etkiler?– Fiziksel boyutunu nasıl etkiler?– ...– ...– ...

10

Page 11: Future Programming History

11

PEKİ YA GEÇMİŞTE?

Page 12: Future Programming History

12

1940larda BİLGİSAYARLAR

İlk elektronik bilgisayarlar ortaya çıktıDevasa yapıda aygıtlarHesaplama yapmak ve makinelerin bakımı çok zor“Bug” terimi nasıl ortaya çıktı

Harvard UNIV. Mark II Aiken Calculator?Yoksa debugging ile ilişkisi mi var

Makine dili ile programlama

Page 13: Future Programming History

13

1940larda BİLGİSAYARLAR

Birinci nesil programlama dilleri yaratıldı. Makine dili Bilgisayar bileşenlerinin doğal dili

AnalogKesintisiz iletimSes kayıt bandına kayıt yapmak

DijitalBilgi parçalara ayrılır / kesik kesik0 (yokluk) ve 1(varlık) kullanılır

Düşük voltaj?Yüksek voltaj?

CD’ye ses kaydetmek

Page 14: Future Programming History

14

?

Makine Dili Bilgisayar bileşenlerinin “doğal dili” • Analog

– Kesintisiz ses dalgası– Sas kayıt bandına ses kaydetme işlemi

• Dijital– Bilgi parçalara ayrılır, kesik kesik– 0 ve 1 kullanılır.

• 0 – düşük voltaj• 1 – yüksek voltaj

– CD’ye ses kaydetme işlemi– Makinelere özgü kayıt => Bağımlılık!

• Mekanik vs Elektronik?

Page 15: Future Programming History

15

1940larda BİLGİSAYARLAR

Birinci nesil programlama dilleri yaratıldı. Makine dili Bilgisayar bileşenlerinin doğal dili

Her makine kendi makine dilini kullanırMachine dependent, yani onlara bağımlısınız

Page 16: Future Programming History

16

1940larda BİLGİSAYARLAR

TEMEL PROBLEMLERÇok zaman alan ve hata yapma riskinin yüksek olduğu programlama yöntemiYüksek seviyede donanım bilgisi gerektirirÇok detaylı işlemler yapılırHer bilgisayar ailesi kendi dilini kullanır

Standart yokYeni bir dile adapte olmak güç

Page 17: Future Programming History

17

1940-1950’lerde BİLGİSAYARLAR

2. Nesil programlama dili ASSEMBLY çevirmeİnsan hafızası simgeleri daha kolay saklarBu nedenle bir çeşit anımsama yöntemi olan mnemonics kullanıldı ADD, LOAD Çeviriciler tarafından makine diline çevrilirlerHer bir komut asgari yapıdadır Düşük seviyeli dilAssembly de programlamayı yeterince kolaylaştırmadı

Page 18: Future Programming History

18

1955lerde BİLGİSAYARLAR

3. Nesil Diller FORTRAN ilk yüksek seviyeli dilAssembly diline göre daha anlaşılır ifadeler içerirProgramcılar makineden bağımsız olarakçalışabilir hale geldiÖğrenmeyi, yazmayı,ve hataların ayıklanmasınıoldukça kolaylaştıran dillerGereksiz ayrıntılar yerine uygulamaya yoğunlaşmaMühendislikte bilimde birçok sayısal ağırlıklı problemin çözülmesini sağladı

Page 19: Future Programming History

19

1955lerde BİLGİSAYARLAR

3. Nesil Diller FORTRAN ilk yüksek seviyeli dilDilin kendi yapısı içinde genel matematiksel hesaplarbarındırıldı “+”, “-”, “/”, “*” Derleyiciler ile makine diline çevrilirlerAlgol 58 Fortrandan geliştirildiCobol iş matematiği için kullanılmaya başlandıBASIC programcılığa yeni başlayanlar için yaratıldıLISP yapay zeka uygulamaları için geliştirildiEN ÖNEMLİSİBilgisayarlar inglizce öğrenmeye başladı!!!

Page 20: Future Programming History

20

1955lerde BİLGİSAYARLAR

3. Nesil Diller FORTRAN ilk yüksek seviyeli dil x = a * b + c

1. Hafızanın A adresindeki değeri al, ALU’da bir “register”e yükle;

2. Hafızanın B adresindeki değeri al, yukardaki değerle(“A”) çarp ve sonucu aynı “register”de tut

3. Hafızanın C adresindeki değeri registerdeki değere (A * B) ekle

4. Registerdeki değeri (A * B + C) hafızanın X adresine koy.

Page 21: Future Programming History

21

1955lerde BİLGİSAYARLAR• X = A * B + C Makine Diline Çevirelim1. 00010000000000000000010000000000 (A’daki değeri reg. yükle)

Hex: 08 00 04 002. 00100100000000000000010000000001 (B’deki değerle çarp)

Hex: 24 00 04 01 3. 00100011000000000000010000000010 (C’deki değeri reg. ile topla)

Hex: 23 00 04 02 4. 00010001000000000000010000000011 (Registerdeki değeri X’e taşı)

Hex: 11 00 04 03

• MOV A, ACC• MUL B, ACC ASSEMBLY’ye çevirince• ADD C, ACC• STO ACC, X

Page 22: Future Programming History

22

1955lerde BİLGİSAYARLAR

Structured Programlama kavramı ortaya çıktıEdsger Dijkstra, Ole-Johan Dahl, CAR Hoare.Niclaus Wirth Pascal

Algol üzerine modellendiGoto kaldırıldıHerşeyin bir türü olması sağlandıProsedür içinde prosedür mantığı ortaya çıktıAğırlıklı olarak öğretim programları için tasarlandı

Page 23: Future Programming History

23

1960larda BİLGİSAYARLAR

Structured Programlama kavramı ortaya çıktıSimula, Dahl, Nygaard ( Norway )

Nesne, sınıf (class), alt sınıflardan ilk defa bahsedildi

Edsger Dijkstra, CAR Hoare.Algol üzerine modellendi. GOTO kullanımı kaldırıldı. “Nesting”

Page 24: Future Programming History

24

1970lerde BİLGİSAYARLAR

Gelişmeler devam ediyor!!!Ken Thompson Bell Labs. Da “C” dilini yarattı

B dilinin temelleri üzerine kurulduYüksek seviyede kurgu, düşük seviyede güç

Jean Ichbiah “Ada” dili ortaya çıktıAmerikan Savunma bakanlığı tarafından geliştirildiİlk yazılım geliştirme platformuSistem programlaması yapmak için tasarlandıHer dilin kendi gücünden faydalanmak amacıylabu dillerin tamamının desteklendiği bir yapı oluşturulmaya çalışıldı

Page 25: Future Programming History

25

1970lerde BİLGİSAYARLAR

Gelişmeler devam ediyor!!!Alan Key, Adele Goldberg SmallTalk

XEROX Palo Alto Research Center PARCGrafikler zenginleştirildiFontlar ortaya çıktıNesneye dayalı programlamadan bahsedildiHerşeyin bir nesne olarak ifade edilebileceği fikri ortaya çıktıYüksek seviyede kurgu, düşük seviyede güç

Scheme, Gerald Sussman & Guy Steele (MIT)“Static scoping” kavramı ortaya çıktı

Page 26: Future Programming History

26

1980lerde BİLGİSAYARLAR

Savulun!!! Nesneye Dayalı Programlama Deliyor1979-1983: C++ Bjarne Stroustrop ( Bell Labs)

“C with classes” olarak tanıtıldıGeniş çapta kabul gören ilk OOPLClass => Design-Time, Object => Run-TimeProsedürler üzerinde değil nesneler üzerindeyoğunlaştırma gerektirirEn hızlı yazılım geliştirme tekniği

Page 27: Future Programming History

27

1990larda BİLGİSAYARLAR

WEB WEB WEB WEB WEB WEB WEB WEBTim Berners-Lee (CERN) HTML

Hypertext Markup LanguageWorld Wide Web’ in diliDünyanın en yaygın dili!!!

Scripting dilleri ortaya çıktıPERLJavascript, VBscript, PHP, ASP, JSP

Page 28: Future Programming History

28

?

• Tarihteki ilk “Bug” terimi, 1945 yılında Harvard Üniversitesi'nde geliştirilen bir hesap makinesi olan Mark II Aiken Relay Calculator’da bulunan bir güve nedeniyle kullanılmıştır. “Debugging” terimi de buradan çıkar. Hata ayıklama. Makinenin etrafında yuvalanan böcekleri ayıklama işlemi.

• C# mühendislik açısından eksiksizdir. Bilimsel açıdan eksikleri olabilir.

Page 29: Future Programming History

29

1960s Structured Programlama

• Edsger Dijkstra, Ole-Johan Dahl, CAR Hoare.• Pascal Niklaus Wirth

– Algol üzerine modellendi. – GOTO kullanımı kaldırıldı. – Very strongly typed Herşeyin bir türü var. İnteger,

string vs – Prosedür içinde prosedür “Nesting”– Ağırlıklı olarak öğretim programları için tasarlandı

• Simula, Dahl ve Nygaard (Norway)– Nesne, sınıf ve altsınıflardan ilk defa bahsedildi

Page 30: Future Programming History

30

Future it!

• Functional Programming• Extensive list of new concepts

– Lazy vs. eager evaluation– Pure vs. imperative features– Parametric polymorphism– Type inference– (Garbage collection)

• Hope• Clean• Haskell• SML• Caml

Page 31: Future Programming History

31

2005’den sonra eklenen sunumlar

• Yapay zeka uygulamaları ve felsefe için en uygun dil Türkçe’dir.– Matematiksel, şiirsel, ve sanatsal (vs vs vs) özellikler barındırır.

• Köklerden ve bu kökleri geliştiren eklerden oluşur.• Kökler kolayca(diğer dillerden yutarak) genişletilebilir.• Yutulan tek bir kök ile kaç adet sözcük üretilmiş olur?• Yapım ekleri, çekim ekleri vs hangi yazılm birimlerine benzeşir?• ...• ...• ...