Neden İşlevsel Programlama


38

İşlevsel programlama ile anlaşma nedir? Bunun hakkında çok konuşuyorum ama dürüst olmak gerekirse onları hiç faydalı bulmadım. Neden bu kadar çok üniversite görünüşte onlara öğretiyor?


6
AI programlamasında çok büyük.
aqua

3
@ aqua - neden olmasın diye bir cevap olmamalı mı?
Martin Beckett

5
Ayrıca, geleneksel OO dillerinin bile fonksiyonel programlamadan kavramları dahil etmeye başladığını belirtmek isterim. Linq (.NET'te), bu durumda bir durumdur.
apoorv020

Fonksiyonel programlamanın beyninizi daha fazla egzersiz yaptığını ve gerçekten öz kodlara yol açabileceğini düşünüyorum. Bu yüzden oldukça havalı.
Adel

2
@ apoorv020: Ve jenerikler, tuples ve çöp toplama ve ... hepsi işlevsel dillerden geliyor.
Jon Harrop

Yanıtlar:


60

Neden İşlevsel Programlamanın Önemi ile başlayın . Ardından, Fonksiyon Programlamanın Neden Önemli Olduğuna gidin . Birkaç kurşun:

  • İşlevsel programlama, problemleri farklı şekillerde düşünmenize olanak sağlar
  • Fonksiyonel soyutlama çok güçlüdür ve yapmanızı sağlar KURU diğer paradigmaların kullanılamaz yollarla kod yukarı
  • Çok çekirdekli geleceğimizde, işlevsel dillerin eşzamanlı görevlere ayrılması daha kolay olabilir (kesin olarak işlevsel olmayan diller de sorun üzerinde çok çalışsa da).
  • Saf işlevsel dillerde yazılmış programların (yan etki yok) matematiksel olarak doğru olduğunu kanıtlamak daha kolaydır.

5
+1 - Bunların hepsi mükemmel noktalar ve yapmayı denediklerimden hem daha net hem de daha ayrıntılı olarak açıklanıyorlar.
jmort253

1
Dördüncü nokta ile, demek ki dil doğru kanıtlanabilir veya programlar yazılı içinde dilin? Her neyse, hem saf olmayan dillerin hem de saf olmayan dillerde yazılmış programların doğru olduğu kanıtlanabilir, bu sadece daha zor ve daha karmaşıktır.
Jörg W Mittag

1
@ Jörg W Mittag, dilin özellikleri hakkında da mantıklı olmak çok daha kolaydır. Anlamlandırma anlambilimi, işlevsel diller için önemsizdir ve gereklilik için oldukça karmaşıktır.
SK-mantık

komik, ikinci bağlantının bazı "açık" argümanlar sağladığını, bilerek ilk bağlantıyı okumadığımı bile biliyorum.
jokoon

+1: Harika cevap. Özellikle # 1 ve 2 numaralı madde işaretlerini kelimelere koyma şeklinizi seviyorum.
Jim G.

9

İşlevsel Programlama kavramları, düşünce biçiminizi değiştirecek ve gerçek dünyadaki sorunları çözmenize yardımcı olacak bir temel oluşturur.

Kavram, neden hepimizin kariyerlerinde bu özel bilgiye ihtiyaç duymasak da, Bilgisayar Bilimi uzmanı olarak Çok Değişkenli Analiz, Cebir ve / veya Mühendislik Fiziğini neden öğrendiğimize benzer.

Bu nedenle Hukuk Okulları, BS Lisans derecesine sahip adayları seviyor. Matematiği incelemek size mantıksal bir şekilde çoklu kavramlar hakkında düşünmeyi öğretir ve fonksiyonel programlama size soyutlamaları ve problemleri çözmenize ve farklı bir ışıkta bakmanıza yardımcı olacak diğer önemli kavramları öğretir.

Özetle, fonksiyonel programlama size nasıl öğreneceğinizi öğretmede yardımcı olur.


Belki o zaman gerçekten bir isme ihtiyaç duymaz? Program tasarımı basitçe 'doğru' değil mi?

4

Başlarken, fonksiyonel programlama en iyi düşünme modelidir. Çünkü programlarınızın çoğu nesne yönelimi gerektirmeyecek. En azından benim deneyimim buydu.

Ancak şimdi, ekran ve mantığın ayrılmasını gerektiren bazı uygulamalara girdiğimde, her şeyin en iyisini yapmasını kolaylaştırmak için tüm mantığı ve ekran kodunu ayırmaya başladım.

Ancak, ilk olarak İşlevsel'de ustalaşmadıkça, bunun neden yapıldığını bilemezsiniz. OO'yu benim üzerimden aşağı indiren insanları hiç sevmedim ya da OO'nun her şey için bir çözüm olduğunu. Sadece, hangi yaklaşımı kullanırsanız kullanın, üzerinde çalıştığınız şey için mantıklıdır ve yapmak için harcadığınız işten çok fazla zaman alacak bir öğrenme eğrisi için çok dik değildir.


1
+1 - İş için en iyi tekniği kullanmaya başlamanızı sevdim: Mantıklı olduğundan emin olun.
jmort253

1
Ne yazık ki, sağduyulu sektörümüzde nadirdir. Çünkü her birimizin tamamen farklı deneyimleri vardır, ki yaptığımız hatalar farklıdır, her birimiz farklı alışkanlıklar geliştiririz ve neden böyle yaparız? Kaynak kontrolünü uyarlamak gibi, her zaman çalışan herkes için bir anlam ifade etmez. kullanıcının kendisi.
crosenblum

"Sağduyu, dünyadaki en adil dağınık şeydir, çünkü her biri, diğer tüm konularda tatmin etmesi en zor olanların bile, onlardan daha fazlasını isteme alışkanlığı içinde olmadıklarını, o kadar iyi bildiğini sanıyor. Sahip olmak." - Descartes

3

Çünkü fiilleri vurgular, isimleri değil. Bazen önemli olan fiiller.


OOP isimleri vurgular. Bazen önemli olan isimler. Hangisini nasıl biliyoruz? - Yanlış İkilem. Sistem Durduruldu

3

Çünkü genel olarak aynı görevi gerçekleştirmek için daha az kod kullanır. Yazmak için daha az kod, korumak için daha az koddur. Daha az kod olmasının yanı sıra, daha az duruma sahip olma eğilimi gösterir ve bu nedenle aklınıza gelmesi biraz daha basittir (buna alışınca).


Yani, bu sadece 'daha iyi' tanımı değil mi? Neden açıkladığınızdan başka bir şey yapmak istiyoruz?

2

Belki de üniversiteler tüm programlama paradigmalarından bir şeyler öğretmek istediğinden ve bazı şeyler için işlevsel programlama daha iyidir (oyun karakterleri hareketini tanımlamak ve animasyonları tanımlamak gibi)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.