Prosedürel programlama - Procedural programming

Prosedürel programlama , prosedür çağrısı kavramına dayanan zorunlu programlamadan türetilen bir programlama paradigmasıdır . Prosedürler (bir tür rutin veya alt rutin ), gerçekleştirilecek bir dizi hesaplama adımını içerir. Herhangi bir prosedür, diğer prosedürler veya kendisi de dahil olmak üzere, bir programın yürütülmesi sırasında herhangi bir noktada çağrılabilir. İlk büyük prosedürel programlama dilleri, Fortran , ALGOL , COBOL , PL/I ve BASIC dahil olmak üzere 1957-1964 dolaylarında ortaya çıktı . Pascal ve C 1970-1972 dolaylarında yayınlandı.

Bilgisayar işlemcileri , bir yığın kaydı aracılığıyla prosedürel programlama için donanım desteği ve prosedürleri çağırmak ve onlardan geri dönmek için talimatlar sağlar . Diğer programlama türleri için donanım desteği mümkündür, ancak hiçbir girişim ticari olarak başarılı olmamıştır (örneğin, Lisp makineleri veya Java işlemcileri ).

Prosedürler ve modülerlik

Modülerlik , özellikle büyük, karmaşık programlarda genellikle arzu edilir. Girdiler genellikle sözdizimsel olarak argümanlar biçiminde belirtilir ve çıktılar, dönüş değerleri olarak teslim edilir .

Kapsam belirleme , prosedürleri modüler tutmaya yardımcı olan başka bir tekniktir. Prosedürün, kendisinin önceki örnekleri de dahil olmak üzere, açık bir yetkilendirme olmaksızın diğer prosedürlerin değişkenlerine (ve tersi) erişmesini engeller.

Genellikle küçük veya hızlı yazılmış programlarda kullanılan daha az modüler prosedürler, yürütme ortamında diğer prosedürlerin de değiştirebileceği çok sayıda değişkenle etkileşime girme eğilimindedir .

Basit bir arabirim belirleme, kendi kendine yetme ve yeniden kullanılabilir olma özelliğinden dolayı, prosedürler, programlama kitaplıkları da dahil olmak üzere farklı kişiler veya farklı gruplar tarafından yazılmış kod parçaları oluşturmak için uygun bir araçtır .

Diğer programlama paradigmaları ile karşılaştırma

Zorunlu programlama

Prosedürel programlama dilleri de zorunlu dillerdir, çünkü yürütme ortamının durumuna açık referanslar yaparlar. Bu, değişkenlerden ( işlemci kayıtlarına karşılık gelebilir ) Logo programlama dilindeki "kaplumbağa"nın konumu gibi bir şeye kadar herhangi bir şey olabilir .

Genellikle, "yordamsal programlama" ve "zorunlu programlama" terimleri eşanlamlı olarak kullanılır. Bununla birlikte, prosedürel programlama büyük ölçüde bloklara ve kapsamlara dayanırken , zorunlu programlama bir bütün olarak bu özelliklere sahip olabilir veya olmayabilir. Böyle, prosedürel diller genellikle gibi bloklar üzerinde hareket olduğunu ayrılmış kelimeler kullanmak gibi if, whileve foruygulamak kontrol akışını oysa olmayan yapılandırılmış zorunlu diller kullanmak git ifadeleri ve şube tablolar aynı amaç için.

Nesne yönelimli programlama

Prosedürel programlamanın odak noktası, bir programlama görevini değişkenler , veri yapıları ve alt rutinler koleksiyonuna bölmek iken, nesne yönelimli programlamada bir programlama görevini davranış (yöntemler) ve verileri (üyeler) ortaya çıkaran nesnelere bölmektir. veya nitelikler) arayüzleri kullanarak. En önemli ayrım, prosedürel programlamanın veri yapıları üzerinde işlem yapmak için prosedürleri kullanmasına karşın, nesne yönelimli programlamanın ikisini bir araya getirmesidir , bu nedenle bir sınıfın örneği olan bir "nesne", "kendi" veri yapısı üzerinde çalışır.

Adlandırma, benzer semantiklere sahip olmalarına rağmen ikisi arasında değişir:

prosedürel Nesne odaklı
prosedür Yöntem
Kayıt Nesne
Modül Sınıf
Prosedür çağrısı İleti

Fonksiyonel programlama

Modülerlik ve pratik işlevsel dillerde kodun yeniden kullanımı ilkeleri, her ikisi de yapılandırılmış programlamadan kaynaklandığından, temelde prosedürel dillerdekiyle aynıdır . Yani mesela:

  • Prosedürler fonksiyonlara karşılık gelir. Her ikisi de aynı kodun programların çeşitli bölümlerinde ve yürütmenin çeşitli noktalarında yeniden kullanılmasına izin verir.
  • Aynı şekilde, prosedür çağrıları fonksiyon uygulamasına karşılık gelir.
  • Fonksiyonlar ve bunların modüler olarak birbirinden, fonksiyon argümanları, dönüş değerleri ve değişken kapsamları kullanılarak aynı şekilde ayrılır.

Stiller arasındaki temel fark, işlevsel programlama dillerinin prosedürel programlamanın zorunlu öğelerini kaldırması veya en azından vurgulamamasıdır. İşlevsel dillerin özellik seti, bu nedenle, salt işlevler açısından program yazmayı mümkün olduğunca desteklemek için tasarlanmıştır :

  • Prosedürel diller, programın yürütülmesini, paylaşılan durumu dolaylı olarak değiştirebilecek bir zorunlu komutlar dizisi olarak modellerken, işlevsel programlama dilleri, yürütmeyi yalnızca argümanlar ve dönüş değerleri açısından birbirine bağlı olan karmaşık ifadelerin değerlendirilmesi olarak modeller. Bu nedenle, işlevsel programlar ücretsiz bir kod yürütme sırasına sahip olabilir ve diller, programın çeşitli bölümlerinin yürütülme sırası üzerinde çok az kontrol sunabilir. (Örneğin, bir prosedür çağırma argümanları Şema başına herhangi bir sırada gerçekleştirilir.)
  • İşlevsel programlama dilleri , birinci sınıf işlevleri , anonim işlevleri ve kapanışları destekler (ve yoğun bir şekilde kullanır) , ancak bu kavramlar daha yeni prosedürel dillere dahil edilmiştir.
  • İşlevsel programlama dilleri , zorunlu döngü yapıları yerine kuyruk çağrısı optimizasyonuna ve daha yüksek dereceli işlevlere güvenme eğilimindedir .

Bununla birlikte, birçok işlevsel dil aslında tamamen işlevseldir ve programcının yordamsal tarzda veya her iki tarzın bir kombinasyonunda programlar yazmasına izin veren zorunlu/prosedürel yapılar sunar. İşlevsel dillerde giriş/çıkış kodunun prosedürel bir tarzda yazılması yaygındır .

Programlanması zor (ve dolayısıyla zorlayıcı) olmak adına yapılandırılmış programlama ilkelerinden kaçınan birkaç ezoterik işlevsel dil ( Unlambda gibi ) vardır. Bu diller, prosedürel ve işlevsel diller arasındaki ortak zeminin istisnasıdır.

mantık programlama

In mantık programlama , program tesislerinde bir dizi ve hesaplama aday teoremleri ispat etmeye çalışarak yapılır. Bu bakış açısından, mantık programları bildirimseldir ve sorunun nasıl çözüleceğinden çok sorunun ne olduğuna odaklanır.

Bununla birlikte, Prolog gibi mantık programlama dillerindeki sorunları çözmek için kullanılan SLD çözünürlüğü tarafından uygulanan geriye dönük akıl yürütme tekniği, programları hedef azaltma prosedürleri olarak ele alır. Böylece formun maddeleri:

H :- B 1 , …, Bn .

her ikisi de prosedürler olarak ikili bir yoruma sahip

göstermek için / çözmek H , göstermek / çözme B 1 ve ... ve B n

ve mantıksal çıkarımlar olarak:

B 1 ve … ve B n , H anlamına gelir .

Deneyimli mantık programcıları, etkin ve verimli programlar yazmak için prosedürel yorumlamayı kullanırlar ve programların doğru olduğundan emin olmak için bildirimsel yorumlamayı kullanırlar.

Ayrıca bakınız

Referanslar

Dış bağlantılar