Bugün işlevsel programlamaya değineceğiz. Daha spesifik olarak, bildirimsel ve zorunlu programlama arasındaki farka bakacağız.

İlk olarak, terimleri hızlıca gözden geçirelim. Sonra bu programlama stillerini karşılaştıracağız ve Java'da nasıl göründüklerine ve dilin mutlu bir arada yaşamalarını destekleyip desteklemediğine bakacağız.

İşlevsel programlama, işlevlerin prosedürel programlamada olduğu gibi alt programlar olarak değil, matematiksel işlevler olarak anlaşıldığı bir paradigmadır . Yani, bu iki paradigmada "işlev" sözcüğü farklı yorumlanır. Bunu unutmayın ve onları karıştırmayın. Alt programlara "yöntemler" adı verildiğinden, işlevler matematiksel işlevlere atıfta bulunduğundan (ayrıca: lambda işlevleri veya yöntem referansı), Java kafanızın karışmasına izin vermez.

Uygulamada, prosedürel programlamada, fonksiyonlar sadece girdi değişkenlerine değil, aynı zamanda dış faktörlere de (işlevin dışındaki diğer değişkenler veya sistemin durumu gibi) bağlıdır. Bu, aynı işlevi aynı bağımsız değişkenlerle ancak farklı bir bağlamda çağırmanın farklı sonuçlar üretebileceği anlamına gelir. İşlevsel programlamada, bir işlev aynı argümanlarla çağrıldığında, her zaman aynı sonucu verir, çünkü işlevler yalnızca girdi verilerine bağlıdır.

İşlevsel programlamanın artıları

  • Geliştirilmiş kod güvenilirliği
  • Kullanışlı birim testi
  • Derleme sırasında kod optimizasyonu için fırsatlar
  • Eşzamanlılık fırsatları

İşlevsel programlamanın eksileri

İşlevsel programlamanın dezavantajları, tüm bu aynı özelliklerden kaynaklanmaktadır:

  • Atama bildirimi yok. Bunun yerine, yeni değerler yeni değişkenlerde depolanır ve bu da belleği sürekli olarak ayırma ve otomatik olarak serbest bırakma ihtiyacına yol açar. Sonuç olarak, son derece verimli bir şekilde çöp toplama, işlevsel programları yürüten herhangi bir sistemin önemli bir parçasıdır.

  • Katı olmayan değerlendirme, işlev çağrılarının sırasının tahmin edilemez olduğu anlamına gelir ve bu da işlem sırası önemli olduğunda G/Ç sorunları yaratır.

Bu, işlevsel programlamaya ilişkin hızlı incelememizi sonlandırıyor. Şimdi programlama stillerine geçelim.

Zorunlu programlama, aşağıdaki özelliklerle karakterize edilen bir programlama paradigmasıdır:

  • Programın kaynak kodu talimatlardan (ifadelerden) oluşur.

  • Talimatlar sırayla izlenmelidir.

  • Önceki talimatların yürütülmesiyle oluşturulan veriler, sonraki talimatlar tarafından bellekten okunabilir.

  • Bir komut yürütülerek elde edilen veriler belleğe yazılabilir.

Emir dillerinin ana özellikleri şunlardır:

  • Boole değişkenlerinin kullanımı.
  • Atama operatörünün kullanımı.
  • Bileşik ifadelerin kullanımı.
  • Alt programların kullanımı.

Bir emir programı, doğal dillerdeki emir kipinde ifade edilen emirler gibidir. Başka bir deyişle, bir zorunlu program bir dizi komuttur.

Zorunlu programlama dilleri arasında C ve C++ bulunur.

Bildirimsel programlama, bir sorunun çözümünün belirtildiği bir programlama paradigmasıdır. Yani nihai sonuç, ona ulaşmanın yolu değil, açıklanmıştır. HTML, bildirim dilinin bir örneğidir. Bu dilde etiket yazarken sayfa üzerinde elemanların nasıl çizileceğini düşünmüyoruz. Biz sadece sayfanın nasıl görünmesi gerektiğini açıklıyoruz.

Başka bir bildirimsel programlama dili SQL'dir.

Gerçek hayattan bir örnek vererek iki programlama stilini karşılaştıralım : Bir kişiye belirli bir yere nasıl gideceğini nasıl açıklayacağız?

Şu durumu hayal edin: sokakta bir adam yanımıza geliyor ve "Müzeye nasıl gidebilirim?"

Zorunlu bir yaklaşımla, ona oraya yürüyerek nasıl gidileceğinin algoritmasını sağlardık:

  • tam burada dön
  • düz bir çizgide 2 blok yürümek
  • sağa dön

Bildirimsel bir yaklaşımla, sadece adresi verirdik ve sonra kişi kendi başına doğru yere giderdi.

Java şu anda çok paradigmalı bir programlama dilidir . Çoklu paradigma, dilin birkaç paradigmayı desteklediği anlamına gelir.

Uzun evrimi boyunca dil, nesne yönelimli modelini genişleterek kullanıcılarının farklı araçlara sahip olmasını ve kendi görevleri için en iyisini seçebilmelerini sağladı.

Sonuç olarak, Java şu anda hem zorunlu yaklaşımı (yöntem çağrıları için kod yazmak gibi) hem de bildirimsel yaklaşımı (çalışma zamanında kullanılabilen ek açıklamalar gibi) desteklemektedir.

Özetleyelim:

  • Çeşitli programlama paradigmaları vardır.

  • Bildirimsel ve zorunlu yaklaşımlar vardır.

  • Eldeki görev için en uygun olanı seçmelisiniz.

  • Java, her iki yaklaşımı da destekleyen çok paradigmalı bir dildir.