PROGRAMLAMAYA GİRİŞ Dr. Nafiz Ünlü
Niçin bir programlama dili öğrenmeliyiz? l Bazıları
yeni bilgisayar diline veya derleyici teorisi geliştirmeye ihtiyaç olmadığını söylerler
DOĞRU /YANLIŞ
Bir Programlama Dili Nedir? l l
l l
l l
Hesaplamayı tanımlamak için biçimsel bir gösterim Bir bilgisayara bir “kullanıcı arayüzü” “user interface” Herhangi bir doğal dilden daha fazla kusursuz araç Paradigmaların programlanması – Farklı anlamlı güç Sözdizimi + anlamsal Derleme, veya çevirmen veya çevirme
Programlama Dillerinin çekirdek yapısı l Diller
aklımızda organize ettiğimiz karışık bir yol için bir çerçeve sağlar
l Diller
anladığımız şeylerle iletişim kurmamız anlamına da gelir.
Programlama Dillerinin Kavramlarının Öğrenilmesi İçin Nedenler l
Dil kavramlarının öğrenilmesi için potansiyel yararlar ü Fikirlerin artırılması için kapasitenin artırılması ü Uygun bir dilin seçimi için geliştirilmiş geçmiş. Birçok programcı yeni bir proje için dil seçimi konusunda , o dilin bilinen bir dil olup olmadığına bakar ü Yeni bir dilin öğrenilmesi, tasarımı ve uygulaması yeteneğini artırır.
Programlama Dilleri Nasıl Farklıdır? Generasyonlar: l 1GL: Makine Kodu l 2GL: Sembolik assembler l 3GL: (makinadan bağımsız) diller l Fortran, Algol, Pascal, Smalltalk, C++, Java, Lisp, Haskell, Scheme, Prolog l 4GL: Özel alan uygulama generatörleri Ortak yapılar: Temel veri tipleri(sayılar vs.); değişkenler,ifadeler, deyimler, anahtar kelimeler, kontrol yapıları ve prosedür ve açıklamalar… Ortak Olmayan yapılar: Deklarasyon tipleri; spesifik tipler(stringler, diziler, matrisler, …); i; paketler/modüller; generik ve uzantılar; …
Anahtar Tezler l Tez
1: İhtiyaçlarınıza uygun programlama dili ile iş yapın; l
l Tez
Her programlama dili özelliklendirilmiş hedefleri karşılar.
3: Programlama dilini anlamak işinizin anahtarıdır.
Alanların Programlanması Bütün programlama dilleri aklımızdaki farklı hedefler ile geliştirilmiştir. Her dil uygun alanlar için tasarlanmıştır. l l l l l
Bilimsel uygulamalar: floating-point arithmetic (Fortran, Algol) İş uygulamaları: raporlar, desimal aritmetik (Cobol) Yapay zeka: Sembolik hesaplamalar (Lisp, Prolog) Sistem programlama: İşletim sistemi (C, Pascal) Skript diller: system configuration (sh, awk, Perl, Tcl)
Programlama Paradigmaları l
Imperative (Şartlı) stil: program = algoritmalar + data
l
Fonksiyonel stil: program = fonksiyon · fonksiyon
l
Logic programlama stili: program = gerçekler + rules (kurallar)
l
Object-oriented stili: program = objeler + messages
Diğer stiller ve paradigmalar: Olaylar, filtreler, listeler, sabitler..,
Imperative (Şartlı) Programlama l
Bu eski stil programlamadır. Hesaplama için algoritmalar ve açıklamalar , deyimler ve dallanmalar ı içerir.
l
Algoritmaların icrası için değişkenler tarafından tutulan veri değerlerine ihtiyaç vardır.
l
Diller assembler dillerini de içerecek şekilde sınıflandırılmıştır. Fortran, Algol, Pascal, C ve Ada.
l
Imperative programlama bilgisayar mimarisi için temel bir model olarak kullanılmıştır. the von Neumann model.
Fonksiyonel Programlama l Fonksiyonel
Programlama daha fazla matematiksel yaklaşımla lamda cebrine dayanır l Değişken kavramları pure Fonksiyonel Programlamada kullanılmamıştır.Hesaplama bir fonksiyon gibi tanımlanmıştır. (Giriş ve çıkış verileri uygulanan) l Bu stile uyan diller ; Lisp, ML, Scheme, Haskell.
Logic Programming l Matematiksel
yaklaşıma sahiptir l Kuralları vardır (Doğru veya Yanlış) l Aksiyomlardan başlar , teoremlere kadar gider ve sonuçlar doğrulanır. l En iyi bilinen logic programlama dili Prolog ‘dır.
Object-oriented Programming l Genelde
OOP class (Sınıf) ve inheritance (Kalıtım) özelliklerine dayanır. Pascal dilindeki değişken tipleri ile karşılaştırılabilir. l Bir class (sınıf) ortak özelliklerle tanımlanır. ( Pascal kaydı ve alanların set tanımı). l Kalıtsal özelliklede daha önceki sınıfın bir özelliği yeni sınıfa geçer. l Çok bilinen object-oriented dilleri; Smalltalk, C++, Eiffel, Java, ObjectPascal.
Sıralı Diller l Emirler
sırayla icra edilir l Pascal, Haskell, Smalltalk, Java,
Parallel Languages l Bu
dilde program multi-processor (distributed memory) mimarisne göre tasarlanmıştır. l Parallel dilde communication ve synchronization için özel bir yapı istenir. l En çok bilinen diller; Occam, Actor.
Özel-amaçlı diller Shell, Awk, Perl, Python, l l l
Rapid prototyping System administration Program configuration
Postscript, HPGL, Tex, RTF: l l
Text setting Description of text, graphical shapes, and images
HTML, XML: l
Markup languages
KISA ÖZET