Bölüm 2. Ana programlama dilerinin evrimi ISBN 0-321-49362-1



Benzer belgeler
Bölüm1. İlk Bilgiler ISBN

PDP 2 Programlama Dilleri

Bilgisayar Programlama Dilleri

BIM Bahar Programlama Dilleri

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Bölüm 12. Nesne yönelimli programlama desteği

Bölüm 1. Ön Hazırlıklar ISBN

İfadeler bir programlama dilinde hesaplamaları belirtmede temel araçtır. İfadelerin değerlendirmesini anlamak için,

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

5. PROGRAMLA DİLLERİ. 5.1 Giriş

BÖLÜM 1: PROGRAMLAMAYA GİRİŞ

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Bahar. BM 211 Programlama Dilleri 3 1

İsimler ve Kapsam. 24 Şubat Programlama Dilleri - Pamukkale Üniversitesi 1

Bölüm 7. İfadeler ve atamalar ISBN

Özgür Yazılımlarla Web Programlama. Özlem Özgöbek

Bilgisayar Programlama. 1.Hafta

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

1.PROGRAMLAMAYA GİRİŞ

Ruby Nedir? 1.1 Amaçlar. 1.2 Ruby nin Yapısal Sıradüzeni

BEDEN EĞİTİMİ I: Haftalık ders 1 saattir (T-0 ) (U-l) (K-0).

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

Programlama Dili Nedir?

Bölüm 15. Fonksiyonel Programlama Dilleri ISBN

Programlama Dilleri 1

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Konular. Hafta 1 BLG339 PROGRAMLAMA DİLİ KAVRAMLARI

GÖRSEL PROGRAMLAMA - I

EĞİTİM ÖĞRETİM MÜNEVVER ÖZTÜRK ORTAOKULU II. DÖNEM BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ DERS NOTLARI

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı Đlkbahar Dönemi 13 Nisan Ad, Soyad Öğrenci No.

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

BİLGİSAYAR ORGANİZASYONU

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

10.DERS Yazılım Gerçekleştirme

Bilgisayarda Programlama. Temel Kavramlar

Chapter 8. Komut düzeyi kontrol yapıları ISBN

YZM 2116 Veri Yapıları

BİLGİSAYAR PROGRAMLAMA (C#) DERS NOTU 1

Dr. Fatih AY Tel: fatihay@fatihay.net

Bölüm 5. Adlar(Names), Bağlamalar(Binding s),tip Kontrolleri (Type Checking), ve Etki Alanları ( Scopes) ISBN

Windows Programlama Güz Dönemi

4. Bölüm Programlamaya Giriş

İNTERNET PROGRAMCILIĞI - II

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

1) Programlama dillerinin temel kavramlarını öğrenir. 1,2,4 1

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Bilgisayar Mühendisliği ve Yeni Teknolojiler. İbrahim SARAÇOĞLU

PROGRAMLAMA DİLLERİ. Teknoloji Fakültesi Bilgisayar Mühendisliği Öğr.Gör. Günay TEMÜR. Öğr.Gör.Günay TEMÜR

C# nedir,.net Framework nedir?

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

PHP 1. Hafta 1. Sunum

Bölüm 9. Altprogramlar ISBN

NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar

Öğr. Gör. Serkan AKSU 1

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

PROGRAMLAMAYA GİRİŞ DERS NOTLARI

AJAX nedir? AJAX nasıl çalışır? AJAX. Tahir Emre KALAYCI. Sunucu Yazılım Teknolojileri

Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi

BLG 1306 Temel Bilgisayar Programlama

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Program Nedir?(1) Programlamaya Giriş

1 PROGRAMLAMAYA GİRİŞ

Bölüm 5. İsimler, Bağlama, Tür Kontrolü ve Kapsam(Etki Alanı) ISBN

Programlama Dillerinin Tarihçesi

C #

C++ Dersi: Nesne Tabanlı Programlama

1.1. Yazılım Geliştirme Süreci

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

JAVASCRIPT JAVASCRIPT DİLİ

Programlama Dillerinde Kullanılan Veri Tipleri

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

Bölüm 6. Veri Türleri ISBN

AVRASYA UNIVERSITY. Dersin Verildiği Düzey Ön Lisans (X ) Lisans ( ) Yüksek Lisans( ) Doktora( )

BLM1011 Bilgisayar Bilimlerine Giriş I

Yazılım Mühendisliği Bölüm - 3 Planlama

1.BÖLÜM PROGRAMLAMA ve TEMEL KAVRAMLAR

C PROGRAMLAMA DİLİ. Hedefler

=~ Metodu 92 Karakter Sınıfları 94 sub ve gsub metotları 101 Hızlı Tekrar 102 Kontrol Noktası 103 Düello 106 Sonraki Bölümde 109

Algoritma ve Akış Diyagramları

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

PROGRAMLAMA TEMELLERİ

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Bölüm 10. Altprogramların gerçeklenmesi ISBN

DERS SEÇİM KILAVUZU. Sınıf Dönemi Kodu Adı Sınıf Dönemi Kodu Adı. Nesne Yönelimli Programlama. Yazılım Tasarımı ve Mimarisi

Nesne Yönelimli Programlama

Programlama Dilinin Özellikleri

Bölüm 10: PHP ile Veritabanı Uygulamaları

Ünite-3 Bilgisayar Yazılımı.

Temel Bilgisayar Programlama

BİLGİSAYAR TEKNOLOJİSİ VE PROGRAMLAMA DERS İÇERİKLERİ I. YARIYIL

3. Yarıyıl Ders Planı Kodu Ders Z/S Dil T+U Saat Kredi AKTS BBP 209

Transkript:

Bölüm 2 Ana programlama dilerinin evrimi ISBN 0-321-49362-1

Bölüm 2 Konuları Minimal donanım programlaması: Kodumsular (Pseudocodes) Bilim adamları ve mühendisler: Fortran Fonksiyonel Programlama: LISP Algoritma paylaşımı: ALGOL İş dünyası: COBOL Basit bir dil: BASIC Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-2

Bölüm 2 Konuları (devam) İki dinamik dil: APL ve SNOBOL Veri soyutlamanın başlangıcı: SIMULA 67 ALGOL türevi bazı diller Mantık Programlaması: Prolog Güvenli bir dil: Ada Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-3

Bölüm 2 Konuları (devam) Nesne yönelimli programlama: Smalltalk Komutlu (Impertive) / nesne yönelimli birleşimi: C++ Akıllı Cihazların dili: Java Skript dilleri: JavaScript, PHP, Python, Ruby JAVA kuzeni: C# İşaretleme/Programlama Hibrid (Karma) Dilleri Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-4

Dillerin soy ağacı Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-5

Donanım Programlaması: Kodumsular (Pseudocodes) Makine kodu neden kötü? Okunabilirliği zayıf Değiştirilebilirliği zayıfpoor modifiability Ifade yazımı sıkıcı Makine eksiklikleri: endeksleme ve kayan nokta yok Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-6

Kodumsular: Kısa Kod İfadeler soldan sağa kodlanırdı Örnekler: 01 06 abs value 1n (n+2)nd power 02 ) 07 + 2n (n+2)nd root 03 = 08 pause 4n if <= n 04 / 09 ( 58 print and tab Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-7

Fortran 90 Özellikler Modüller Dinamik diziler İşaretçiler Özyineleme CASE komutu Parametre tip kontrolü Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-8

Fortran Değerlendirmesi Biliminsanların / mühendislerin kullandığı dil Eniyileyen derleyiciler Değişkenlerin tipi ve yeri çalışma öncesi belli Bilişim dünyasının ortak dili Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-9

Fonksiyonel Programlama: LISP LISt Processing (Liste İşleme) dili MITde by McCarthy tarafından tasarlandı Yapay zeka araştırmalarının aşağıdakileri yapabilen bir dile ihtiyacı vardı Dizler yerine, listeler içinde veriyi işlemek Sayısal yerine sembolik hesaplama Sadece iki veri tipi var: atomlar ve and listeler Sentaks lambda calculus tan esinlendi Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-10

İki tane LISP Listesi dahili temsili (A B C D) (A (B C) D (E (F G))) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-11

LISP Değerlendirmesi Fonksiyonel programlamanın öncüsü Değişken ve atama yok Kontrol sadece özyineleme ve şartlı ifadelerle Yapay zekanın önde gelen dillerinden (diğerleri: Prolog ve türevleri) COMMON LISP ve Scheme are LISPin güncey versiyonları Modern fonksiyonel diller: ML, Miranda, ve Haskell Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-12

Scheme MITde 1970 lerde geliştirildi Küçük Statik kapsam (static scoping) Fonksiyonlar birinci sınıf varlık Basit sentaks, eğitim için ideal Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-13

ALGOL 60 Başarılar 20 yıl boyunca algoritma yayınlamanın yolu Sonraki buyurucu (imperative) diller hep ondan esinlendi İlk makine-bağımsız dil BNF ile sentaksı resmen belirlenen ilk dil Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-14

ALGOL 60 (devam) Başarısızlıklar Yaygın bir şekilde kullanılmadı Sebepler Girdi/çıktı eksikliği programları taşınamaz yaptı Çok esnek implementasyonu zor Fortranın yaygın kullanımı ve insanların değişmek istememesi Resmi sentaks tanımı IBM desteği olmaması Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-15

COBOL Ticaret dili Tasarım amaçları Basit İngilizceye benzemeli Kullanması kolay olmalı Bilgisayar kullanıcıları sayısını artırmaya yardımcı olmalı Derleyici teknolojisi ile sınırlu olmamamlı Tasarım komitesindekiler: bilgisayar üreticileri ve Savunma bakanlığı temsilcileri Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-16

COBOL Değerlendirmesi Katkıları İlk kez üst seviyeli bir dilde makro özelliği Hiyerarşik veri yapıları İçiçe seçme komutları 30 karaktere kadar uzun isimler Ayrı veri bölümü Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-17

COBOL: Savunma bakanlığı etkisi ABD Savunma bakanlığının zorunlu kıldığı ilk dil Hala daha ticari uygulamalarda en yaygın olarak kullanılan dil Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-18

BASIC Tasarlayıcılar: Kemeny & Kurtz (Dartmouth) Tasarım amaçları: Bilim öğrencisi olmayanların öğrenmesi kolay Dostça olmalı Programlar hızlı yazılabilmeli Kullanıcı zamanı bilgisayar zamnından daha önemli Şimdiki popüler verisyonu: Visual BASIC Zaman paylaşımı ile yaygın olarak kullanılan ilk dil Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-19

İki dinamik dil: APL and SNOBOL Özellikleri: dinamik tipleme, dinamik hafıza ayırımı Değişkenler tipsiz Değişkenlerin tipi içlerindeki değerden gelir Değişkene değer atandığı vakit değişkene hafıza ayrılır Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-20

APL: A programlama Designed by Ken Iverson around 1960 Ifade gücü yüksek (operatör sayısı çok) Programlari okuması zor Dizi yönelimli programlama dili Tek satırlık programlar Hala daha kullanımda Örnek program: Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-21

SNOBOL String işleme dili. Mucidi: Farber, Griswold, ve Polensky, Bell Labbs, 1964 Güçlü string eşleme operatörleri Diğer dillere göre daha yavaş Hala daha bazı metin işleme gerektiren yerlerde kullanılıyor. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-22

Veri soyutlamanın başlangıcı: SIMULA 67 Sistem benzetimi (simulasyonu) için Nygaard and Dahl tarafından Norveçte tasarlandı ALGOL 60 ve SIMULA I den esinlendi Ana katkıları Korutinler bir tür alt program Sınıflar, nesneler, kalıtım Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-23

Pascal - 1971 Wirth tarafından geliştirildi Yapısal programlamayı öğretmek için tasarlandı Küçük, basit, çok yenilik içermiyor En büyük etkisi programlama öğretimine 1975-2000 arasında programala öğretimi için kullanılan en yaygın dil Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-24

C - 1972 Dennis Richie tarafında sistem programlaması için tasarlandı (Bell Labs) BCLP, B, ve ALGOL 68 dillerinden evrimleşti Güçlü operatör kümesi Zayıf tip kontorlü UNIXin yazılım dili UNIX aracılığı ile yaygınlaştı Birçok kullanım alanı Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-25

Perl Skript dili İşletim sistemi komutlarını üst düzeyli olarak çalıştırır Diğer örnekler: sh, awk, tcl/tk Geliştirici: Larry Wall Perl değişkenleri statik tipli, dolaylı olarak tanımlanır Üç tane isim uzayı. Değişkenin ilk harfine göre bağlı olduğu isim uzayı anlaşılır. Hem genel amaçlı, hem de Web programlaması için yaygın olarak kullanılır. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-26

Mantığa Dayalı Programlama: Prolog Comerauer ve Roussel (University of Aix- Marseille) tarafından Kowalskinin yardımı ile geliştirildi Matematiksel mantığa dayalı Prosedürel değil (ne yapılmasını söyleriz, nasıl yapılmasını değil) Özet olarak çıkarsama (inferencing) kullanarak sorulara cevap veren akıllı bir veri tabanı diyebiliriz Verimlilik problemleri var Uygulama alanı: yapay zeka Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-27

Güvenli bir dil: Ada Tasarımı için çok kaynak harcandı Adını ilk programcı olan Augusta Ada Byron dan alır Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-28

Ada nın değerlendirilmesi Katkıları Paketler veri soyutlama desteği İstisna idaresi - gelişmiş Genel program birimleri Eşzamanlılık görev (task) modeli aracılığı ile Yorumlar O zamanki yazılım mühendisliği ve dil tasarımı konusunda ne biliniyorsa ADA da var Dilin karmaşıklığından dolayı ilk derleyiciyi üretmek zor oldu ve uzun zaman aldı (5 yıl) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-29

Ada 2012 Conditional expressions, Case expressions Iterators Preconditions and postconditions Vector/matrix libraries Task-safe queues Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-30

Nesne Yönelimli Programlama: Smalltalk Alan Kay, ve Adele Goldberg tarafından Xerox PARC ta geliştirildi İlk gerçek nesne yönelimli programlama dili implementasyonu (veri soyutlama, kalıtım, dinamik bağlama) Grafik arayüzlerin öncülüğünü yaptı Nesne yönelimli programlamanın gelişmesine katkısı oldu Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-31

Komut ve nesne yönelimli programlama birleşimi C++ 1980 de Stroustrup tarafından Bell Labs da geliştirildi C ve SIMULA 67 den evrimleşti İstisna mekanizması var Büyük ve karmaşık bir dil Popülaritesi nesne yönelimli programlama ile birlikte arttı 1997 de ANSI standardı onaylandı Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-32

Benzer nesne yönelimli diller Eiffel ( Bertrand Meyer - 1992) Direkt oalrak başka bir dilden türemedi C++ a göre daha basit ve küçük C++ kadar popüler değil (C++ ya geçis daha kolaydı çünkü birçok programcı C dilini zaten biliyordu) Delphi (Borland) Pascal + nesne yönelimli programlama C++ ya göre daha şık ve güvenli Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-33

JAVA: Komut tabanlı nesne-yönelimli bir dil 1990 ların ilk yarısında Sun da gömülü sistemler için geliştirildi C++ ya dayalı Sadeleştirilmiş ( struct, union, enum, işaretçi aritmetiği ve zorunlu tip değiştirmelerinin çoğu yok) Sadece nesne yönelimliliği destekler Referenslar var ama işaretçiler yok Applet desteği var Eşzamanlılık desteği var Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-34

Java Değerlendirmesi C++ nın birçok güvensiz özeliği JAVA da yok Eşzamanlılık var Veritabanı, Applet, görsel arayüz kütüphaneleri var Taşınabilirdir: Java Sanal Makinesi, Tam zamanında derleyiciler Web programlaması için yaygın kullanım Önceki dillere göre yaygın kullanıma en hızlı erişen dil Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-35

Web için Skript dilleri JavaScript Istemci tarafı HTML-gömülü dinamik HTML dokumanı yaratmaya yarayan dil Saf tercüme Sentaksı JAVA ya bir miktar benzer, ama ayrı bir dil PHP Rasmus Lerdorf tarafından tasarlandı Sunuca tarafı HTML-gömülü skript dili Saf tercüme Python Nesne yönelimli tercüme ile çalışan skipt dili Tip kontrolü var ama dinamik tipli CGI programlaması için kullanılabilir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-36

Web için Skript dilleri Ruby Japonyada Yukihiro Matsumoto tarafından tasarlandı Perl ve Python yerini almayı amaçladı Saf nesne yönelimli dil Operatörler metod olarak gerçeklendiği için tekrar tanımlanabilir Saf tercüme ile çalışır Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-37

C-tabanlı başka bir dil: C#.NET geliştirme platformunun bir parçası Esinlendiği diller: C++, Java, Delphi Parçalara dayalı yazılım geliştirme dili Tüm.NET dilleri (C#, Visual BASIC.NET, Managed C++, J#.NET, and Jscript.NET) tip sistemleri ortaktır, böylece tüm dillerden ayni sınıf kütüphanesi kullanılabilir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-38

İşaretleme/Programming Hybrid Languages XSLT extensible Markup Language (XML): Web işaretmeleme dili extensible Stylesheet Language Transformation (XSTL) XML dokumanlarını görsel hale dönüştiren bir dil Programlama yapıları var (eşleştirme, XML dokumanı elemanları üzerinde iterasyon) JSP Java Server Pages: dinamik Web dokümnaları için teknolojiler kolleksiyonu servlet: sunucu üzerinde barınan ve istek üzerine çalıştırılan JAVA programı; servlet çıktısı tarayıcı üzerinde görünür Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-39

Özet Bazı önemli programlama dillerinin gelişimi ve özellikleri Dil tasarımında dikkat edilmesi gereken konular Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ 1-40