HOŞGELDİNİZ C# 2.0’ A GİRİŞ TAYFUN YİRDEM
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
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
C# 2.0’ A GİRİŞ İÇERİK (kaynakça) Microsoft, IBM, Sun Microsystem (JAVA), Bell Labs, Google
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 ???
GÜNÜMÜZDE BİLGİSAYARLAR? Hesaplamalar yapabilr 4 + 5 9 Mantıksal kararlar verebilir A=4, B=5 ise A < B İnsanoğluda bunu yapabilir, Sadece birkaç trilyon kat daha yavaş
GÜNÜMÜZDE BİLGİSAYARLAR? Bilgisayar programları / Yazılımlar Bilgisayarlar aptaldır, onları akıllı kılan komutlardır Bu komutların bütününe de program denir Bilgisayar siz ne derseniz onu yapar Donanım Bir bilgisayar sisteminin fiziksel düzeneği Somut kısım
GÜNÜMÜZDE BİLGİSAYARLAR? Bir bilgisayar 6 temel üniteden oluşur. 1)Veri girişi sağlayan birimler Fare, klavye, mikrofon 2)Veri çıkışı sağlayan birimler Yazıcı, monitör, hoparlör 3)Bellek birimleri RAM Çalışma sırasında henüz kaydedilmemiş olan verileri saklar
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 birim 5) İşlemci Diğer tüm aygıtların işlemlerini yönetir 6) İkincil bellek birimi Sabit disk, disket sürücü Hard=sağlam, floppy= güçsüz
PEKİ YA GEÇMİŞTE?
1940larda BİLGİSAYARLAR İlk elektronik bilgisayarlar ortaya çıktı. Devasa yapıda aygıtlar Hesaplama 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
1940larda BİLGİSAYARLAR Birinci nesil programlama dilleri yaratıldı. Makine dili Bilgisayar bileşenlerinin doğal dili Analog Kesintisiz iletim Ses kayıt bandına kayıt yapmak 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 kaydetmek
1940larda BİLGİSAYARLAR Birinci nesil programlama dilleri yaratıldı. Makine dili Bilgisayar bileşenlerinin doğal dili Her makine kendi makine dilini kullanır Machine dependent, yani onlara bağımlısınız
1940larda BİLGİSAYARLAR TEMEL PROBLEMLER Çok zaman alan ve hata yapma riskinin yüksek olduğu programlama yöntemi Yüksek seviyede donanım bilgisi gerektirir Çok detaylı işlemler yapılır Her bilgisayar ailesi kendi dilini kullanır Standart yok Yeni bir dile adapte olmak güç
1940-1950’lerde BİLGİSAYARLAR 2. Nesil programlama dili ASSEMBLY çevirme İnsan hafızası simgeleri daha kolay saklar Bu nedenle bir çeşit anımsama yöntemi olan mnemonics kullanıldı ADD, LOAD Çeviriciler tarafından makine diline çevrilirler Her bir komut asgari yapıdadır Düşük seviyeli dil Assembly de programlamayı yeterince kolaylaştırmadı
1955lerde BİLGİSAYARLAR 3. Nesil Diller FORTRAN ilk yüksek seviyeli dil Assembly diline göre daha anlaşılır ifadeler içerir Programcılar makineden bağımsız olarak çalışabilir hale geldi Öğrenmeyi, yazmayı,ve hataların ayıklanmasını oldukça kolaylaştıran diller. Gereksiz ayrıntılar yerine uygulamaya yoğunlaşma Mühendislikte bilimde birçok sayısal ağırlıklı problemin çözülmesini sağladı
1955lerde BİLGİSAYARLAR 3. Nesil Diller FORTRAN ilk yüksek seviyeli dil Dilin kendi yapısı içinde genel matematiksel hesaplar barındırıldı “+”, “-”, “/”, “*” Derleyiciler ile makine diline çevrilirler Algol 58 Fortrandan geliştirildi Cobol 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ştirildi EN ÖNEMLİSİ İnsanlar bilgisayarlar ile inglizce konuşmaya başladı
1955lerde BİLGİSAYARLAR 3. Nesil Diller FORTRAN ilk yüksek seviyeli dil x = a * b + c Hafızanın A adresindeki değeri al, ALU’da bir “register”e yükle; Hafızanın B adresindeki değeri al, yukardaki değerle(“A”) çarp ve sonucu aynı “register”de tut. Hafızanın C adresindeki değeri registerdeki değere (A * B) ekle. Registerdeki değeri (A * B + C) hafızanın X adresine koy.
1955lerde BİLGİSAYARLAR X = A * B + C Makine Diline Çevirelim 00010000000000000000010000000000 (A’daki değeri reg. yükle) Hex: 08 00 04 00 00100100000000000000010000000001 (B’deki değerle çarp) Hex: 24 00 04 01 00100011000000000000010000000010 (C’deki değeri reg. ile topla) Hex: 23 00 04 02 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
1955lerde BİLGİSAYARLAR Structured Programlama kavramı ortaya çıktı Edsger Dijkstra, Ole-Johan Dahl, CAR Hoare. Niclaus Wirth Pascal Algol üzerine modellendi Goto 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ı
1960lerde BİLGİSAYARLAR Structured Programlama kavramı ortaya çıktı Simula, Dahl, Nygaard ( Norway ) Nesne, sınıf (class), alt sınıflardan ilk defa bahsedildi
1970lerde BİLGİSAYARLAR Gelişmeler devam ediyor!!! Ken Thompson Bell Labs. Da “C” dilini yarattı B dilinin temelleri üzerine kuruldu Yü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 platformu Sistem programlaması yapmak için tasarlandı Her dilin kendi gücünden faydalanmak amacıyla bu dillerin tamamının desteklendiği bir yapı oluşturulmaya çalışıldı
1970lerde BİLGİSAYARLAR Gelişmeler devam ediyor!!! Alan Key, Adele Goldberg SmallTalk XEROX Palo Alto Research Center PARC Grafikler zenginleştirildi Fontlar ortaya çıktı Nesneye dayalı programlamadan bahsedildi Herş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ı
1980lerde BİLGİSAYARLAR Savulun!!! Nesneye Dayalı Programlama Deliyor 1979-1983: C++ Bjarne Stroustrop ( Bell Labs) “C with classes” olarak tanıtıldı. Geniş çapta kabul gören ilk OOPL. Tekrar tekrar kullanılabilinen programlama birimi nesne adını aldı. Sadece nesne kütüphanesindeki nesneleri kullanarak programlama yapma olanağı oluştu Prosedürler üzerinde değil nesneler üzerinde yoğunlaştırma gerektirir. En hızlı yazılım geliştirme tekniği
1990larde BİLGİSAYARLAR WEB WEB WEB WEB WEB WEB WEB WEB Tim Berners-Lee (CERN) HTML Hypertext Markup Language World Wide Web’ in dili Dünyanın en yaygın dili Scripting dilleri ortaya çıktı PERL Javascript, VBscript, PHP, ASP, JSP
1990larde BİLGİSAYARLAR 12/1998 – COOL projesi başladı 07/1999 – ilk dahili port First internal ports to COOL 02/2000 – Named changed to C# 07/2000 – First public preview release 02/2002 – VS.NET 2002, C# 1.0 released 05/2003 – VS.NET 2003, C# 1.1 released 06/2004 – Beta 1 of VS 2005, C# 2.0 04/2005 – Beta 2 of VS 2005, C# 2.0 11/2005 – VS 2005, C# 2.0 release
1940lar İlk elektronik bilgisayarlar ortaya çıktı Devasa yapıda aygıtlar Makine dili ile programlama Yazılan kodlar tekrar kullanılamaz Hesaplama yapmak ve makinelerin bakımı oldukça zor. ( Katot tüpleri, “bug” terimi ) 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öceklere verildi bu isim.
1940lar 1. Nesil 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ü ( Intel ve AMD farklı makine dili kullanır ). Dolayısıyla da onlara bağımlı
1940lar 1. Nesil Makine Dili PROBLEMLER Çok zaman alan ve hata yapma riskinin yüksek olduğu programlama şeklidir. Yüksek seviyede donanım bilgisi sahibi olmayı gerektirir. Çok detaylı işlemler yapılır. Her bilgisayar ailesi
1940ların sonu ve 1950+ 2. Nesil Assembly Dili toplantı anlamındadır. Mnemonics kullanılır “anımsama yöntemi” anlamındadır. Çeviriciler tarafından sonradan makine diline çevrilirler Her bir komut asgari yapıdadır. Düşük seviyel dil İnsan hafızası simgleri daha kolay saklar ADD, LOAD Assembly de programlamayı yeterince kolaylaştırmadı.
1955 3. Nesil Diller Fortran ilk yüksek seviyeli dil yaratıldı Mühendislikte ve bilimde birçok sayısal ağırlıklı problem çözülebildi. Assembly diline göre, daha anlaşılır ifadeler vardır. Uygulamaya yoğunlaşmayı sağlar donanım bilgisi gerektirmez Öğrenmesi yazması , hata ayıklanması çok kolay olan dillerdir. Programcılar makinelerden bağımsız olarak çalışabilir hale geldi
1955 3. Nesil Diller Fortran ilk yüksek seviyeli dil yaratıldı Genel matematiksel hesapları içerir “+”, “-”, “*” Derleyiciler ile makine diline çevrilirler Algol 58 Fortran dan geliştirildi. Cobol 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ştirildi İnsanlar bilgisayarlar ile ingilizce konuşmaya başladı
1955 3. Nesil Diller Yüksek seviyeli diller ------------------------------------------------------------------------- X = A * B + C Hafızanın A adresindeki değeri al, ALU’da bir “register”e yükle; Hafızanın B adresindeki değeri al, yukardaki değerle(“A”) çarp ve sonucu aynı “register”de tut. Hafızanın C adresindeki değeri registerdeki değere (A * B) ekle. Registerdeki değeri (A * B + C) hafızanın X adresine koy.
1955 3. Nesil Diller X = A * B + C Makine Diline Çevirelim ------------------------------------------------------------------------- 00010000000000000000010000000000 (A’daki değeri reg. yükle) Hex: 08 00 04 00 00100100000000000000010000000001 (B’deki değerle çarp) Hex: 24 00 04 01 00100011000000000000010000000010 (C’deki değeri reg. ile topla) Hex: 23 00 04 02 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
1955 3. Nesil Diller Yüksek seviyeli diller ------------------------------------------------------------------------- X = A * B + C Hafızanın A adresindeki değeri al, ALU’da bir “register”e yükle; Hafızanın B adresindeki değeri al, yukardaki değerle(“A”) çarp ve sonucu aynı “register”de tut. Hafızanın C adresindeki değeri registerdeki değere (A * B) ekle. Registerdeki değeri (A * B + C) hafızanın X adresine koy.
1955 3. Nesil Diller Yüksek seviyeli diller ------------------------------------------------------------------------- X = A * B + C Hafızanın A adresindeki değeri al, ALU’da bir “register”e yükle; Hafızanın B adresindeki değeri al, yukardaki değerle(“A”) çarp ve sonucu aynı “register”de tut. Hafızanın C adresindeki değeri registerdeki değere (A * B) ekle. Registerdeki değeri (A * B + C) hafızanın X adresine koy.
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
1970s Gelişmeler Sürüyor C Ken Thompson (Bell Labaratuvarlarında) B dilinin temelleri üzerine kuruldu Yüksek seviyede kurgu, düşük seviyede güç Ada Jean Ichbiah (France) Amerikan Savunma Bakanlığı tarafından geliştirildi. (.NET ile aynı yapıda çalışan ilk yapı) Sistem programlaması yapmak için tasarlandı. Her dilin kendi gücünden faydalanmak amacıyla bu dillerin tamamının desteklendiği bir yapı oluşturulmaya çalışıldı.
Programming Language History 1970s Smalltalk Alan Kay, Adele Goldberg (Xerox PARC) Palo Alto Research Center PARC Grafikler zenginleştirildi GUI Graphical User Interface “Font”lar Object-oriented / “Nesneye Dayalı” “Herşey bir nesnedir” mantığı oluştu. Nesneler mesajlar ile konuşur. Scheme, Gerald Sussman & Guy Steele (MIT) LISP “static scope” Değerin korunması Prolog vs.
1980s Savulun!!! Nesneye Dayalı Programlama Geliyor Object-oriented programming/Nesneye Dayalı Programlama Tekrar tekrar kullanılabilinen programlama birimleri Sadece nesne kütüphenesindeki nesneleri kullanarak dahi programlar üretilebilir. Hatta Microsoft .NET Framework 2.0 ile bunu biraz abarttı. Nesnelerin özellikleri üzerinde yoğunlaşma gerektirir, prosedürler (yordam) üzerinde değil. En hızlı yazılım geliştirme tekniğidir.
1980s Savulun!!! Nesneye Dayalı Programlama Geliyor Object-oriented programming/Nesneye Dayalı Programlama 1979-1983: C++ Bjarne Stroustrop (Bell Labs) “C with classes” olarak tanıtıldı. Geniş çapta kabul gören ilk nesneye dayalı program.
Programming Language History 1980s Object-oriented programming/Nesneye Dayalı Programlama Tekrar tekrar kullanılabilirn programlama birimleri Sadece nesne kütüphenesindeki nesneleri kullanarak dahi programlar üretilebilir. Hatta Microsoft .NET Framework 2.0 ile bunu biraz abarttı. Nesnelerin özellikleri üzerinde yoğunlaşma gerektirir, prosedürler ( yordam ) üzerinde değil. En hızlı yazılım geliştirme tekniğidir. 1979-1983: C++ Bjarne Stroustrop (Bell Labs) “C with classes” Geniş çapta kabul gören ilk nesneye dayalı program.
Programming Language History 1980s 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
Programming Language History 1990s HTML, Tim Berners-Lee (CERN) “Hypertext Markup Language” Language of the World Wide Web. A markup language, not a programming language. Scripting languages PERL. CGI or Apache module Languages within Web pages JavaScript, VBScript PHP, ASP, JSP Java, James Gosling (Sun)
C# History 12/1998 – COOL project started 07/1999 – First internal ports to COOL 02/2000 – Named changed to C# 07/2000 – First public preview release 02/2002 – VS.NET 2002, C# 1.0 released 05/2003 – VS.NET 2003, C# 1.1 released 06/2004 – Beta 1 of VS 2005, C# 2.0 04/2005 – Beta 2 of VS 2005, C# 2.0 ? ?/2005 – VS 2005, C# 2.0 release