Ana programlama dilerinin evrimi

Slides:



Advertisements
Benzer bir sunumlar
NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar
Advertisements

Yazılım Geliştirme ve Java
Algoritma ve Akış Diyagramları
C Programlama Dili AT&T Bell laboratuvarlarında, Ken Thompson ve Dennis Ritche tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiş.
WEB SERVİCE İDRİS YÜRÜK MAHMUT KAYA.
.NET FRAMEWORK.
PROGRAMLAMA DİLLERİ 1- Temel kavramlar
Nedir? Türkiye PHP Grubu – Dokuz Eylül Üniversitesi
İnternet Programcılığı
Veri ve Veri Yapıları Genel olarak bilgisayarlar.
C Programlama Diline Giriş
Önemli Programlama Dillerinin Gelişimi
Bölüm 1 Hazırlık.
Bilgi Teknolojisinin Temel Kavramları
Yazılım Mühendisliği Bölüm - 6 Gerçekleştirim
TEMEL BİLGİSAYAR BİLİMLERİ
Bölüm 1: Introductions (Tanıtım,Tanım)
Bilişim Tek. Öğrt. Cemil ŞAHİN Bilişim Tek. Öğrt. Cemil ŞAHİN PROGRAMLAMA DİLLERİ.
Yapısal Program Geliştirme – if, if-else
NESNEYE YÖNELİK PROGRAMLAMANIN TEMEL İLKELERİ GENEL BİR BAKIŞ
Nesneye Dayalı Programlama
PROGRAM GELİŞTİRME 1.HAFTA.
PROGRAMLAMA DİLLERİ
Yazılım Gelişimi. Donanım gelişimine paralel olarak süren yazılım gelişimi, son on yılda kayda değer bir ivmelenme ile bilgisayarları, herhangi bir uzmanlık.
Programlama Dilleri.
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
.NET Teknolojileri .NET mimarisi VB.NET, C.NET, C#.NET
Görsel Programlama Dr. Muhammet Balcılar
NESNEYE-YÖNELİK PROGRAMLAMA
Programlama Dilleri Yrd. Doç. Dr. Altan MESUT.
Quest Atlantis Dünya Üzerine Yayılmış Çok-Kullanıcılı Çevrim-İçi Eğitsel Bir Bilgisayar Oyununun Teknik Yapısı.
Ana Programlama Dillerinin Evrimi
1 Öğr. B.Aliyeva Öğr. B.Aliyeva Bilgisayar Yazılımı.
BİLİŞİM TEKNOLOJİLERİ ALANI
İnternet Teknolojisi Temel Kavramlar
Bilgisayar, Yazılım ve Algoritma
ALİ FINDIK Galatasaray Ünİversİtesİ 2015
WEB PROGRAMCILIĞI.
Bilgi Teknolojisinin Temel Kavramları
Programlama Dilleri Visual Basic C# C++ Pascal Delphi.
Modül 1: Giriş. Genel Bakış Temel.NET kavramları Geliştirme ortamında gezinti Bir C# projesi oluştur Use Visual Studio.NET Veriye eriş Hata ayıkla ve.
İnsan Kaynakları Bilgi Sistemleri
İsimler ve Bağlanma Names and Bindings
Bölüm 2: Önemli Programlama Dillerinin Gelişimi
Bilgisayar Mühendisliğine Giriş
Programlama Dili Nedir?
PROJENİN ADI “Doğrusal Konumlandırıcılar” için Profesyonel Kontrol Ara yüz Tasarımı ve İmalatı.
BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ
Genel Kavramlar Bölüm - 1. YAZILIM Bilgisayara işlemler yaptırabilmek ve karar verdirtebilmek için yazılan kalıplara denir. Yazılım, genel olarak donanım.
Barış Ceviz Yazılım Geliştiricisi Yazılım, Yazılımcı, Yazılım Dilleri.
BİLGİSAYAR PROGRAMLAMA Ders 1: Programlamaya Giriş
Fonksiyonel Programlama
C Programlama Dili Bilgisayar Mühendisliği.
PROGRAMLAMA TEMELLERİ
C Programlama Diline Giriş
1- C# Hello world Nesne Yönelimli Programlama - i
Bölüm 6 Veri Tipleri.
İsimler, Bağlamalar, Tip Kontrolü, Etki Alanları
Sentaks ve semantik tarifi
Fonksiyonel Programlama Dilleri
Bölüm 7 İfadeler ve atamalar.
Bölüm1 İlk Bilgiler.
Amazon Web Servisleri ve Javascript Dilinin Birlikte Kullanımı
Bilgisayar Mühendisliğine Giriş
Altprogramların gerçeklenmesi
ALGORİTMALAR VE PROGRAMLAMAYA GİRİŞ
NİŞANTAŞI ÜNİVERSİTESİ
Dünya Üzerine Yayılmış Çok-Kullanıcılı Çevrim-İçi Eğitsel
Genel PHP Akademik Bilişim 2003 Adana, Şubat 2003 Hidayet Doğan
Programlama Dilleri.
Sunum transkripti:

Ana programlama dilerinin evrimi Bölüm 2 Ana programlama dilerinin evrimi

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Ü

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Ü

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Ü

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

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Ü

Kodumsular: Kısa Kod 01 – 06 abs value 1n (n+2)nd power İ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Ü

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Ü

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Ü

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Ü

İ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Ü

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Ü

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Ü

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Ü

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Ü

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Ü

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Ü

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Ü

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Ü

İ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Ü

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Ü

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Ü

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Ü

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Ü

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Ü

Perl Skript dili Geliştirici: Larry Wall İş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Ü

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Ü

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Ü

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Ü

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Ü

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Ü

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Ü

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Ü

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Ü

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Ü

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 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Ü

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Ü

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Ü

İş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Ü

Ö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Ü