Programlama paradigması
Programlama paradigmaları, programlama dillerini yaptıkları işe göre gruplandırmanın bir yoludur. Diller birden fazla paradigmaya sahip olabilir.
Bazı paradigmalar, yan etkilere izin vermek veya işleri belirli bir sırada yapmak zorunda olmak gibi kodun çalıştırılma şekline bakar. Diğer paradigmalar kodun gruplanma şekline bakar, örneğin kodu bir veya iki parçaya (veya bunun yerine birçok küçük parçaya) ayırmak gibi. Diğer bazı paradigmalar, programı olduğu gibi yapan düzene ve parçalara bakar.
Zorunlu ve bildirimsel olmak üzere iki ana paradigma grubu vardır. Bir dil aynı anda her ikisine de sahip olabilir.
İçindekiler
· 1 Zorunlu programlama
· 2 Bildirimsel programlama
· 3 Diğer paradigmalar
· 4 Genel Bakış
· 5 Paradigmalarla ilgili sorunlar
· 6 Tarih
o 6.1 Makine kodu
o 6.2 Prosedürel diller
o 6.3 Nesne yönelimli programlama
o 6.4 Bildirimsel paradigmalar
· 7 İlgili sayfalar
· 8 Referanslar
· 9 Diğer web siteleri
Zorunlu programlama
Zorunlu programlarda, programcılar bilgisayara bir şey yapmak için yapılması gereken bir dizi sıralı adım verir. Eğer birisi bilgisayardan bir kedi yüzü çizmesini isterse, "Buraya bir daire çiz, şuraya iki küçük daire çiz, üstüne iki üçgen çiz" gibi talimatlar verebilir. Emredici programların bazen çok fazla yan etkisi olabilir.
İki ana zorunluluk paradigması vardır ve çoğu zaman bir dil her ikisine de sahip olacaktır:
- Yapılandırılmış - Bilgisayara her zaman belirli bir sırada olan talimatlar verilir. "3. adıma geri dön" gibi adımlara (goto deyimleri olarak bilinir) izin verilmez.
- Prosedürel - Program, programcının bir emir listesine bir isim vermesine izin verir, bu da bu emirleri daha sonra kullanabilecekleri bir "prosedüre" dönüştürür. Çoğu yapılandırılmış dil de prosedüreldir.
- Nesne Yönelimli - Fikirler bilgisayara nesneler, kendilerine verilebilecek bir dizi emir ve onlar hakkında bazı bilgilere sahip kod parçaları kullanılarak açıklanır.
Bildirimsel programlama
Bildirimsel paradigmalarda, programcı bilgisayara nasıl yapacağını değil, ne yapacağını söyler. Bilgisayarın bir kedi yüzü çizmesini istiyorlarsa, "Bir yüz çiz, iki göz, iki kulak ve bir ağız çiz" gibi talimatlar verebilirler.
En iyi bilinen bildirimsel paradigmalar şunlardır:
- Fonksiyonel - İşin çoğu yan etkisi olmayan fonksiyonlar tarafından yapılır.
- Mantık - Bir dizi gerçek ifade edilir ve ardından bir veya daha fazla "soru" sorulur.
- Olay güdümlü - Kod parçaları belirli şeyler olduğunda (bilgisayarın açılması gibi) çalışacak şekilde ayarlanır.
Diğer paradigmalar
Bazı paradigmalar hem emir hem de bildirim dillerinde bulunabilir. Bu paradigmalar genellikle kendi başlarına değil, yukarıdaki paradigmalardan biriyle birlikte bulunur.
Genel Bakış
Programlama dilleri, makinelerin ne için kullanıldıklarına göre gruplandırılabileceği gibi paradigmalara göre gruplandırılır.
Birkaç dil sadece bir ana paradigmaya uymaktadır, örneğin:
- Smalltalk (nesne yönelimli)
- Assembly (zorunlu, ancak yapılandırılmış veya nesne yönelimli değil)
- Haskell (fonksiyonel)
- Prolog (mantık)
Ancak çoğu dil birden fazla paradigmaya sahiptir. Birden fazla paradigmaya sahip olduğu için öne çıkanlardan bazıları şunlardır:
- Scala (nesne yönelimli, işlevsel, paralel)
- Visual Basic (olay güdümlü, nesne yönelimli)
- Common Lisp (prosedürel, fonksiyonel, nesne yönelimli, meta)
- Şema (fonksiyonel, prosedürel, meta)
- Perl (fonksiyonel, prosedürel, meta, nesne yönelimli, olay güdümlü)
- Python (fonksiyonel, nesne yönelimli, prosedürel)
- Ruby (fonksiyonel, nesne yönelimli, prosedürel)
- Wolfram Dili (fonksiyonel, prosedürel, genellikle bildirimsel)
- Oz (mantıksal, işlevsel, zorunlu, nesne yönelimli)
- F# (işlevsel, zorunlu, nesne yönelimli, meta)
Daha fazla paradigmaya sahip olmak her zaman iyi değildir. Daha az paradigmaya sahip olmanın iyi bir şey olabileceği bir zaman, sadece işlevsel olan bir dilin olduğu zamandır. Bu dillerden birindeki bir fonksiyon, bazen dilin aynı zamanda prosedürel olması durumunda yapması gerekenden daha az iş yapar (sadece bir grup şeyin gerçekten ihtiyaç duyduğu kısımlarının üzerinden geçmek gibi).
Birçok programlama paradigması, insanlara yaptırdıkları kadar yaptırmadıkları şeylerle de tanınır. Bunun doğru olduğu yerlerden biri de fonksiyonel dillerdir. İşlevsel bir dil yalnızca ya da çoğunlukla işlevsel olduğunda, genellikle yan etkilere izin vermez. Bunun doğru olduğu bir başka zaman da yapısal programlamadır: normal zorunlu dillerden farklıdır çünkü programcıların "goto deyimlerini" (programa daha önceki bir adıma gitmesini söyleyen deyimler) kullanmasına izin vermez. Bu ve diğer nedenlerden dolayı, insanlar bazen yeni paradigmaların yeterince şeye izin vermediğini düşünürler. Yine de bilgisayarın insanların bir şeyler yapmasına izin vermemesi bazen iyidir: insanların kodlarıyla ilgili sorunlardan kaçınmasına yardımcı olabilir ve bilgisayarın kodu daha hızlı çalıştırabilmesi için tahminlerde bulunmasına izin verebilir, hatta kod çalışmadan önce kodu sorunlara karşı kontrol edebilir!
Peter Van Roy'a göre çeşitli programlama paradigmalarına genel bakış
Paradigmalarla ilgili sorunlar
Harper ve Krishnamurthi gibi programlama dilleri üzerine çalışan bazı kişiler, paradigmaların programlama dillerini gruplandırmak için kullanılmasından hoşlanmamaktadır. Bu kişiler, pek çok programlama dilinin sadece paradigmalar halinde gruplandırılamayacağını, çünkü dillerin pek çok paradigmadan bir şeyler ve fikirler ödünç aldığını söylüyorlar.
Tarih
Zaman içinde yeni paradigmalar yaratıldı ve insanlar ya o sırada ya da geriye dönüp baktıklarında bunlara işaret etti. Yeni bir programlama yöntemi olarak kabul edilen ilk paradigmalardan biri 1960'lardaki yapılandırılmış programlamaydı. "Programlama paradigması" fikri, Robert W. Floyd'un ders verirken kullandığı 1978 yılından kalmadır. Robert'ın kastettiği anlamda "paradigma" kelimesi ilk olarak Thomas Kuhn tarafından Bilimsel Devrimlerin Yapısı (1962) adlı kitabında kullanılmıştır.
Makine kodu
En düşük seviyeli (bilgisayarın bir şeyleri nasıl anlamak istediğine en yakın) ve en eski programlama paradigması, zorunlu bir paradigma olan makine kodudur. Makine kodundaki yönergeler sadece belirli bir sıradaki sayılar kümesidir. Assembly dili biraz daha az düşük seviyelidir (ve biraz daha az eskidir). Assembly dilinde, bilgisayar için yönergelere anımsatıcılar (hatırlanması daha kolay isimler) verilir ve bellek adreslerine (bilgisayarda bir bilgi parçasını bulmak için yönergeler) isimler verilebilir. Bunlar bazen birinci ve ikinci nesil diller olarak adlandırılır.
1960'larda assembly dilleri, kütüphane KOPYASI, makrolar (program çalışmaya başlamadan önce normal koda dönüştürülen "özel" kod parçaları), çalışan prosedürler (bir isim verilen ve daha sonra kullanılmak üzere kaydedilen yönerge kümeleri) ve program dışından değişkenler (isim verilen ve daha sonra kullanılmak üzere kaydedilen öğeler) gibi yeni şeyler eklenerek daha iyi hale getirildi. Bu, insanların bazı kodları birden fazla projede kullanmasına ve READ/WRITE/GET/PUT gibi komutlar (yönergeler için isimler) sayesinde donanıma özgü sorunlarla (yalnızca bir tür bilgisayarda meydana gelen sorunlar) ilgili endişelenmelerine gerek kalmamasına izin verir.
Assembly, kodun hızlı olmasının önemli olduğu sistemlerde kullanıldı ve bazen hala kullanılıyor ve gömülü sistemlerde de çok kullanılıyor çünkü kullanıcının makinenin ne yaptığını tam olarak kontrol etmesini sağlıyor.
Prosedürel diller
1960'ların sonlarında insanlar prosedürel diller icat etmeye başladılar. Bu üçüncü nesil diller (şu anda yüksek seviyeli diller olarak adlandırdığımız dillerin ilk birkaçı) çözmeye çalıştıkları şeyle ilgili kelimelere sahipti. Örneğin,
- COmmon Business Oriented Language (COBOL) - dosya, taşıma ve kopyalama gibi kelimeler kullanır.
- FORmula TRANslation (FORTRAN) - matematiksel kelimeler ve semboller kullanır (yazı ve daktiloda kullanılan şekiller). Çoğunlukla bilim ve mühendislik için geliştirilmiştir.
- ALGOrithmic Language (ALGOL) - algoritmalar (bilgisayara ne yapacağını söyleyen adımlar kümesi) yazmak için yapılmıştır. Tıpkı FORTRAN gibi matematiksel kelimeler ve semboller kullanır.
- Programlama Dili Bir (PL/I) - herkes için yararlı olması gerekiyordu.
- Yeni Başlayanlar Çok Amaçlı Sembolik Talimat Kodu (BASIC) - yeni başlayanların programlamasına yardımcı olmak için yapılmıştır.
- C - birçok şeyi yapmak için tasarlanmış bir programlama dili. Dennis Ritchie 1969'dan 1973'e kadar AT&T Bell Labs'da bu dil üzerinde çalıştı.
Nesne yönelimli programlama
Birçok insan prosedürel dilleri kullanmaya başladıktan sonra, nesne yönelimli programlama dillerini icat ettiler. Bu dillerde, veriler ve "yöntemleri" (verileri manipüle etme yolları) tek bir "nesne" içine yerleştirilir. Richard Stallman gibi bazı programcılar, nesne yönelimli dillerin bilgisayara fikirleri açıklamak için prosedürel dillerden daha iyi olduğunu kabul etmemektedir.
Nesne yönelimli programlama bir dil değil bir paradigma olduğu için insanlar HLA (High Level Assembly) gibi nesne yönelimli assembly dilleri yapmışlardır.
Bildirimsel paradigmalar
Aynı zamanda, bazı insanlar bildirimsel programlama dilleri geliştiriyorlardı. Bildirimsel olmasıyla bilinen bir dil SQL'dir (tablolara bir şeyler eklemek ve çıkarmak için kullanılan bir dil).
İlgili sayfalar
- Zihniyet
- Tip sistem
- Turing tamlığı
Sorular ve Yanıtlar
S: Programlama paradigması nedir?
C: Programlama paradigması, programlama dillerini çalışma şekillerine göre gruplandırmanın bir yoludur.
S: İki ana paradigma grubu nedir?
C: İki ana paradigma grubu zorunlu ve bildirimseldir.
S: Emredici ve bildirimsel paradigmaların farkı nedir?
C: Emredici paradigmalar, yan etkilere izin vermek veya işleri belirli bir sırada yapmak zorunda olmak gibi kodun çalıştırılma şekline bakarken, bildirimsel paradigmalar kodun bir veya iki parçaya (veya bunun yerine birçok küçük parçaya) yerleştirilmesi gibi kodun gruplandırılma şekline bakar.
S: Bir dil hem zorunlu hem de bildirimsel bir paradigma olabilir mi?
C: Evet, bir dil aynı anda hem zorunlu hem de bildirimsel bir paradigma olabilir.
S: Bir programlama paradigması dilleri nasıl gruplandırır?
C: Programlama paradigmaları dilleri ne yaptıklarına göre gruplandırır. Kodun nasıl çalıştırıldığına, nasıl gruplandığına ve programı hangi düzen ve parçaların oluşturduğuna bakarlar.
S: Zorunlu ve bildirimsel dışında başka tür programlama paradigmaları da var mı?
C: Evet, zorunlu ve bildirimsel dışında başka tür programlama paradigmaları da vardır. Örneğin, bazıları kodun çalıştırılma şekline bakarken (yan etkilere izin vermek gibi), diğerleri kodun gruplanma şekline bakar (kodu bir veya iki parçaya koymak gibi).
S: Her dil yalnızca bir tür programlama paradigmasına mı aittir?
C: Hayır, her dil yalnızca bir tür programlama paradigmasına ait değildir; bazı diller birden fazla paradigma türünde olabilir.