İşlevsel programlamanın gerçek dünyada uygulanması? [kapalı]


9

Her birinin son derece iyi olduğu alanları anlamak için kendimi farklı dillerle tanıştırmaya çalışıyorum. Şimdiye kadar C - yordamsal bir dil, C ++ ve java - statik yazılan Nesne Tabanlı diller ve groovy - dinamik yazılan Nesne Tabanlı bir dil.

Her programlama dili muhtemelen bir ihtiyaca cevap vermeye başlamıştır. Ve her dilin en az bir şeyde son derece iyi olduğunu düşünüyorum çünkü belirli bir alanda veya alanda standart haline geliyor. C gibi, C ++ da tarayıcı veya oyun geliştirme gibi alanlarda standart hale gelmiştir. Kolay betik oluşturma yeteneği, kurumsal dünyada Java, vb.İçin Linux dünyasında Python.

Şimdi Clojure veya Lisp gibi fonksiyonel bir programlama dili öğrenmek istiyorum. Peki, gerçek dünya senaryolarında fonksiyonel programlama dilleri nerede kullanılır? Uygulama veya kullanıcı arayüzü geliştirmek için Clojure veya Lisp kullanacağını düşünmüyorum. Peki, fonksiyonel programlamanın uygulanması hakkında kısa bir anlayış elde etmek için temel öğreticilerden ve öğrenme kaynaklarından geçtikten sonra ne tür projelere girmeliyim? Ve clojure gibi belirli bir dilde şiddetle tavsiye ediyor musunuz?


5
"Ve her dilin en az bir şey için son derece iyi olduğunu düşünüyorum çünkü belirli bir alanda veya alanda standart haline geliyor" Bu genellikle doğru değildir. Dillerin bir şekilde "uzman" olduğunu düşünmek tehlikeli bir varsayımdır. Birkaç dilde niş vardır, ancak genel olarak doğru değildir.
S.Lott

6
"Nasıl ve nereden başlayacağımı bilmiyorum." Eğiticilere başlamanıza engel olan nedir? Bu diller için öğreticilerin neden yararlı veya yararlı olmadığını açıklayabilir misiniz?
S.Lott

"C ++ & java" birbirleriyle çok, çok az şey yapar.
DeadMG

Fonksiyonel Programlama paradigmasını takip etmelerinin sebebi dışında Clojure veya Lisp'i öğrenmeniz için sizi gerçekten ilgilendiren şeyi saklayabilir miyim?
Maxood

3
"Gerçek zamanlı" derken şans eseri "gerçek dünya" mı demek istedin? Bu soru bağlamında biraz daha mantıklı görünüyor.
sepp2k

Yanıtlar:


13

Gerçek dünya fonksiyonel programlama dersiniz, sanırım Erlang.

Erlang, yüksek kullanılabilirlik gereksinimlerine sahip, büyük ölçüde ölçeklenebilir yumuşak gerçek zamanlı sistemler oluşturmak için kullanılan bir programlama dilidir. Bazı kullanım alanları telekom, bankacılık, e-ticaret, bilgisayar telefonu ve anlık mesajlaşmadır.

http://www.erlang.org/


3
+1 Korrecto! Ayrıca, fonksiyonel topraklardaki yeni başlayanlar için "en saf" fonksiyonel dilin Haskell olacağını da
eklemek isterim

5

Stanford Üniversitesi'nin Fonksiyonel Programlama üzerine harika bir ders dizisi var.Onları YouTube'da kontrol edebilirsiniz.

LISP yerine Şemaya bakmanızı tavsiye ederim. Şema , Lisp'in daha fazla geliştirmeyle değiştirilmiş bir versiyonudur. Şema çoğunlukla akademik ve eğitim amaçlı kullanılır. Thoretical compueter biliminde araştırma yapmak istiyorsanız harika bir dildir.

Uygulamalar :

Android için Google App Inventor, Kawa'nın Şema kodunu Android cihazlarda çalışan Java Sanal Makinesi için bayt kodlarına kadar derlemek için kullanıldığı Şema'yı kullanır. Elk Scheme, Synopsys tarafından teknoloji CAD (TCAD) araçları için bir komut dosyası dili olarak kullanılır.

FYI: Şemanın Kullanımı


Bu sorunun size yardımcı olup olmayacağını merak ediyorum: programmers.stackexchange.com/questions/25056/…
Maxood

1
Ve bu (ücretsiz! Ve çevrimiçi!) LISP kitabı: gigamonkeys.com/book ID3 etiket ayrıştırıcısı, web programlama ve spam filtreleme gibi "pratik" projeleri kapsar.
Hayal kırıklığına

5

Mailrank.com'un kurucusu Bryan O'Sullivan (Facebook tarafından satın alındı), bu yazılımın tüm sunucu tarafını Haskell'de kurdu. Bunu Strange Loop 2011'de sundu , video ve slaytlar çevrimiçi olarak mevcut.

Aynı adam Real World Haskell adlı bir kitap yazdı . Birkaç kişi programlama derslerinden bahsetti. Bu sizin ilgi alanlarınıza oldukça uygun olabilir (Erlang önerisini de seviyorum).


4

Finanstaki arkadaşlardan kantitatif ticaret şirketi Jane Street'in ticaret stratejilerini uygulamak için OCaml kullandığını biliyorum. Konuyla ilgili görüşmelere bağlantılar ile birlikte neden hakkında konuştukları bir sayfası var .


2

Heres Common Lisp başarı öykülerinin bir listesi:

http://wiki.alu.org/Industry%20Application

http://www.franz.com/success/

http://www.lispworks.com/success-stories/index.html

Common Lisp sadece kısmen işlevsel olsa da (OOP ve prosedürel yanı sıra kendinizi veya bir kütüphane ile uygulamak istediğiniz her şeyi destekler), çok pragmatik bir dildir ve yetkili bir programcının elinde son derece güçlüdür. Aslında mükemmel RESTAS çerçeveli web uygulamaları yazmak için kullanıyorum .

Ve şu anda üzerinde çalıştığım ticari python projesi sonunda lisp ile yazılmış hizmetler ile desteklenecek (RESTAS adıyla önerildiği gibi RESTful hizmetleri için mükemmel).


1

Derleyicilere dalmayı öneririm (genel amaçlı diller veya DSL'ler için) - burası fonksiyonel programlamanın en iyi olduğu yerdir. Bir spektrumun bir tarafındaki ADT'lerden ve desen eşleşmesinden diğer taraftaki Lisp makrolarına kadar keşfedilecek birçok ilginç ve kullanışlı şey olacaktır.


0

Hume'a bir göz atmak isteyebilirsiniz .

Gönderen Hume Programlama Dili sayfa:

Hume (Yüksek Dereceli Birleşik Meta-Çevre), eşzamanlı, güvenliği kritik öneme sahip sistemleri geliştirmek, kanıtlamak ve değerlendirmek için entegre bir araç setine sahip, güçlü bir şekilde yazılmış, çoğunlukla işlevsel bir dildir. Hume, gerçek zamanlı gömülü ve güvenlik açısından kritik sistemler de dahil olmak üzere, kaynakla sınırlı sistemler için dil tasarımının sınırlarını, yeni soyutlama ve güvenilirlik düzeyleri sunarak genişletmeyi amaçlamaktadır.

Gönderen wikipedia Hume sayfa:

Hume, St Andrews Üniversitesi ve Heriot-Watt Üniversitesi'nde geliştirilmiş, işlevsel tabanlı bir programlama dilidir İskoçya'daki ve 18. yüzyıl filozofu David Hume'un adını taşıyan . Hem son derece soyut, hem de zaman ve mekan yürütme maliyetlerinin kesin olarak çıkarılmasına izin verecek bir tasarım üretmeyi amaçlayan gerçek zamanlı gömülü sistemleri hedefler, böylece garantili sınırlı zaman ve alan kısıtlamaları altında yürütülecek programların yazılmasına izin verir.

Hume, fonksiyonel programlama fikirlerini sonlu durum otomatlarındaki fikirler ile birleştirmede alışılmadık bir durumdur . Automata, iletişim programlarını bir dizi "kutu" halinde yapılandırmak için kullanılır; burada her bir kutu, girişleri çıktılarla tamamen üst düzey desen eşleştirme kullanarak tamamen işlevsel bir şekilde eşler . Ayrıca, her biri oldukça farklı olan farklı makine özelliklerini ortaya çıkaran bir dizi seviye olarak yapılandırılması da olağandışıdır.

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.