Neden Lisp öğrenmeliyim? [kapalı]


125

Gerçekten Lisp öğrenmem gerektiğini hissediyorum ve bunu yapmama yardımcı olacak pek çok iyi kaynak var.

Karmaşık sözdiziminden vazgeçmiyorum, ancak "geleneksel ticari programlamada" prosedürel bir dil yerine onu kullanmanın mantıklı olacağı yerler bulabilirdim.

Piyasada Lisp ile yazılmış ticari bir katil-uygulama var mı?


5
Orada olmayan şey tarafından ertelenmek zor.
Kaz

Philip Greenspun'un özgeçmişini okuyun . Gerçek Lisp çalışmasıyla dolu.
Kaz

1
Ayrıca burada . Greenspun, tümü Lisp kullanarak veya Lisp dahil olmak üzere paket anahtarlamalı ağ simülasyonu, DSP tasarımı, işlemci tasarımı, VLSI düzeni, makine mühendisliği otomasyonu, hafriyat otomasyonu ve üzerinde ve üzerinde çalıştı. Bir Lisp makinesinde geliştirilen araçları kullanarak Hewlett Packard'ın PA-RISC mimarisinin tasarlanmasına yardımcı oldu.
Kaz

Lisp'te geliştirilen bazı uygulamalar - Emacs, G2, AutoCad, Igor Engraver ve Yahoo Store
Arulx Z

Yanıtlar:


55

Lisp'in ana kullanımlarından biri Yapay Zeka'dır. Üniversitedeki bir arkadaşım lisansüstü bir yapay zeka kursu aldı ve ana projesi için Lisp'te bir " Lights Out " çözücü yazdı . Programının birden fazla sürümü biraz farklı AI rutinleri kullandı ve 40 kadar bilgisayar üzerinde yapılan testler oldukça güzel sonuçlar verdi (Keşke benim bağlantı kurabileceğim bir yerde çevrimiçi olsaydı, ama öyle olduğunu sanmıyorum).

İki sömestr önce Abbott ve Costello'nun "İlk Kimde" rutinini simüle eden etkileşimli bir program yazmak için Scheme (Lisp tabanlı bir dil) kullandım. Kullanıcının girdisi, uygun bir yanıtın ne olacağını seçmek için oldukça karmaşık veri yapılarıyla (diğer dillerdeki haritalara benzer, ancak çok daha esnek) eşleştirildi. Ayrıca 3x3 slayt bulmacasını çözmek için bir rutin yazdım (daha büyük slayt bulmacalarına kolayca genişletilebilen bir algoritma).

Özetle, Lisp'i (veya Şemayı) öğrenmek, AI'nın ötesinde pek çok pratik uygulama sağlamayabilir, ancak diğerlerinin de belirttiği gibi son derece değerli bir öğrenme deneyimidir. Lisp gibi işlevsel bir dilde programlama, özyinelemeli düşünmenize de yardımcı olacaktır (diğer dillerde özyineleme ile sorun yaşıyorsanız, bu çok yardımcı olabilir).


5
Neden Lisp'in yalnızca AI için iyi olduğunu söylüyorsunuz? Ayrıca, çok paradigmalı bir dildir. İşlevsel, sağladığı birkaç paradigmadan yalnızca biridir.
Luís Oliveira

6
Sadece AI için kullanıldığını söylemedim, ana kullanımlarından birinin AI olduğunu söyledim. Okudun mu?
Justin Bennett

32
"Lütfen Common Lisp'in yalnızca Veritabanları, Birim Test Çerçeveleri, Spam Filtreleri, ID3 Ayrıştırıcıları, Web Programlama, Shoutcast Sunucuları, HTML Oluşturma Yorumlayıcıları ve HTML Oluşturma Derleyicileri için yararlı olduğunu varsaymayın, çünkü bunlar uygulanacak tek şeylerdir. Practical CL "kitabı
Mikael Jansson

23
@JustinBennett evet dedin. Burada: "Özetle, Lisp'i (veya Şemayı) öğrenmek AI'nın ötesinde pek çok pratik uygulama sağlamayabilir". İnsanların yanlış yaparken yüzleşmesinden nefret ediyorum.
Luka Ramishvili

127

Lisp, onu desteklemek için geniş ve karmaşık bir çalışma süresine sahip büyük ve karmaşık bir dildir. Bu nedenle Lisp, büyük ve karmaşık problemler için en uygunudur.

Şimdi, karmaşık problem aynı değildir karmaşık biri. Bir kompleks sorun küçük ayrıntılar bir sürü biridir, ancak zor olmadığı. Bir havayolu rezervasyon sistemi yazmak karmaşık bir iştir, ancak yeterli para ve programcı ile zor değildir. Farkı anladın mı?

Karmaşık bir sorun, kıvrımlı, geleneksel bölme ve fethetmenin işe yaramadığı bir sorundur. Bir robotu kontrol etmek veya tablo şeklinde olmayan verilerle (örneğin diller) veya son derece dinamik durumlarda çalışmak.

Lisp, çözümün genişletilebilir olması gereken problemler için gerçekten çok uygundur; klasik örnek, emacs metin düzenleyicisidir. Tamamen programlanabilir ve dolayısıyla kendi başına bir programlama ortamıdır.

Norvig, PAIP adlı ünlü kitabında , Lisp'in keşifsel programlama için ideal olduğunu söylüyor. Yani, tam olarak anlaşılmayan bir soruna bir çözüm programlamaktır (çevrimiçi rezervasyon sisteminin aksine). Başka bir deyişle: Karmaşık sorunlar.

Dahası, Lisp öğrenmek size unutulmuş temel bir şeyi hatırlatacaktır: Von Neumann ve Turing arasındaki fark. Bildiğimiz gibi, Turing'in hesaplama modeli ilginç bir teorik modeldir, ancak bilgisayar tasarımı için bir model olarak işe yaramaz. Öte yandan Von Neumann, bilgisayarların ve hesaplamanın nasıl yürütüleceğine dair bir model tasarladı: Von Neumann modeli. Von Neumann modelinin merkezi, yalnızca bir belleğiniz olması ve hem kodunuzu hem de verilerinizi orada depolamanızdır. Bir Java programının (veya C # veya ne isterseniz) Turing modelinin bir tezahürü olduğuna dikkat edin. Programınızı kesin olarak somut olarak belirlediniz. Ardından, üzerine atılan tüm verilerle başa çıkabileceğinizi umarsınız.

Lisp, Von Neuman modelini sürdürüyor; kod ve veriler arasında keskin, önceden belirlenmiş bir sınır yoktur. Lisp'de programlama, zihninizi Von Neumann modelinin gücüne açar. Lisp'te programlama, eski kavramları yeni bir ışıkta görmenizi sağlar.

Son olarak, etkileşimli olarak, programlarınızı geliştirirken (derleyip çalıştırmanın aksine) onlarla etkileşim kurmayı öğreneceksiniz. Bu aynı zamanda programlama şeklinizi ve programlamaya bakışınızı da değiştirir.

Bu giriş ile nihayet sorunuza bir cevap sunabilirim: "Geleneksel" dilleri gölgede bıraktığı yerler bulacak mısınız?

Gelişmiş bir programcıysanız, gelişmiş araçlara ihtiyacınız vardır. Ve Lisp'ten daha gelişmiş bir araç yoktur. Veya başka bir deyişle: Sorunlarınız zorsa cevap evettir. Aksi yok.


30
"ama yeterli parayla ve programcılarla bu zor değil" - bu, yeterince fazla programcı verildiğinde imkansız hale geldiğini söyledi ;-)
Jonas Kölker

Lisps'in anında kod üretme yeteneği hakkında bir şeyler okudum, ancak derlenebileceğini de okudum .. yorumlanmış ve derlenmiş yürütmeyi karıştırabilen uygulamalar var mı? veya hangisi kendi derleyicisini içerir?
centaurian_slug

@centaurian_slug: Evet, kesinlikle. Bu gücün bir parçası. Kasıtlı olarak sakatlanmayan herhangi bir sürümün derleyicisi / yorumlayıcısı çalışma zamanında kullanılabilir olacaktır. Örneğin, bir geliştirici web sunucusunda özel bir bağlantıda oturum açabilir, bazı hata ayıklama yapabilir, bazı sınıf ve işlev tanımlarını güncelleyebilir ve gerekirse bu tanımlara dayanan her şeyi yeniden derleyebilir. Tüm bunlar sunucu hazır ve çalışırken. Muhtemelen SOX uyumluluğu konusunda endişeli bir kuruluşta yasal değildir, ancak endüstrilerin Java ve C # gibi braindead dillerini kullanmasının bir nedeni de budur
James


46

karmaşık sözdizimi ??

Lisp için sözdizimi inanılmaz derecede basittir .

Peltekçe yazılmış katil uygulaması: emacs . Lisp, bir editörün yapabileceğini düşündüğünüz hemen hemen her şeyi yapmak için emacs'i istediğiniz gibi genişletmenize izin verecektir.

Ama , eğer sadece lisp öğrenmelidir istemek için ve hiç iş yerinde kullanmak asla olabilir, ama yine de harika.

Ayrıca şunu da eklemek istiyorum: lisp'in mantıklı olacağı yerler bulsanız bile, muhtemelen başka kimseyi java, c ++, c #, python, ruby ​​vb. Yerine kullanılması gerektiğine ikna edemezsiniz.


@Justin: Muhtemelen emacs çekirdeğinin C'de yazıldığını belirtmek gerekir. Ama bu sadece nit-toplama - tüm komutlar elisp ile yazılmıştır.
Bernard

3
veya daha doğrusu - ortak lisp'in temel sözdizimi basittir. defmacro, sözdiziminin genişletilmesine izin verir ve yerleşik makroların bazıları (örneğin, defmacro) inanılmaz derecede karmaşık hale gelebilir; lambda listeleri, iç içe geçmiş alıntılar, vb.
Aaron

Emacs'in C kısmının yapıştırıcı kod olduğunu söylemek neredeyse doğru.
Luka Ramishvili

Emacs başvuru kılavuzuna göre, "Emacs'deki düzenleme komutlarının çoğu Lisp'de yazılmıştır; birkaç istisna Lisp'de yazılabilirdi, ancak verimlilik için onun yerine C kullanın." gnu.org/software/emacs/manual/html_mono/emacs.html#Intro
dpritch

25

İlk elden deneyimlerime cevap veremem ama Paul Graham'ın Lisp üzerine yazdıklarını okumalısınız . "Katil-uygulama" kısmına gelince , Ortalamaları Yenmek'i okuyun .


2
+1. Bu cevap, ilk web uygulaması olan Yahoo Stores'un kısmen lisp dilinde yazılmış olduğundan bahsetmelidir. Wikipedia'dan Alıntı: 1998'de Yahoo! Inc., Viaweb'i 455.000 Yahoo! yaklaşık 49 milyon $ değerinde olan hisse senedine Yahoo! Mağaza.
Steven Lu

17

Lisp'de yaklaşık bir yıl boyunca profesyonel olarak program yaptım ve kesinlikle öğrenmeye değer. Tüm standart kodu, mümkün olduğunda işlevlerle ve değilse makrolarla değiştirerek, kodunuzdaki fazlalığı kaldırmak için benzersiz bir fırsata sahip olacaksınız. Ayrıca çalışma zamanında benzersiz esnekliğe erişebilir, kod ve veriler arasında serbestçe çeviri yapabilirsiniz. Dolayısıyla, kullanıcı eylemlerinin dinamik olarak karmaşık yapılar inşa etme ihtiyacını tetikleyebildiği durumlar, Lisp'in gerçekten parladığı yerdir. Popüler havayolu uçuş planlayıcıları Lisp'te yazılmıştır ve Lisp'te de çok sayıda CAD / CAM vardır.


9

Programlamayı seviyorsanız, onun saf eğlencesi için Lisp'i öğrenmelisiniz. XKCD , ortaya çıkan entelektüel aydınlanmayı mükemmel bir şekilde ifade eder. Budist rahip için meditasyon ne ise, programcı için Lisp'i öğrenmek demektir (ve ben bunu herhangi bir küfür çağrışımı olmaksızın kastettim).


9

Lisp, küçük DSL'ler oluşturmak için çok kullanışlıdır. İş yerinde çalışan bir Kutuda Lisp'in bir kopyası var ve SQL sunucu veritabanlarını sorgulamak ve C # ile veri katmanları vb. Oluşturmak için küçük DSL'ler yazdım. Tüm kazan plakası kodum artık C # 'a çıktı veren lisp makrolarında yazılıyor. HTML, XML ve bununla her türlü şeyi üretiyorum. Lisp'i günlük kodlama için kullanabilsem de, Lisp pratik faydalar sağlayabilir.


Bunun için dotlisp.sourceforge.net/dotlisp.htm kullanıyorum .
Mark Hurd

5

Bir dilin ortak girinti kurallarını kullanmadığında herhangi bir dil çok daha zor görünür. Biri Lisp'i takip ettiğinde, onun bir sözdizimi ağacı yapısını kolayca nasıl ifade ettiğini görür (not, bu tam olarak doğru değildir çünkü önizleme biraz uzanır; r'ler özyinelemeli hızlı sıralama argümanında fns ile hizalanmalıdır):

(defun quicksort (lis) 
  (if (null lis) 
      nil
      (let* ((x (car lis)) 
             (r (cdr lis)) 
             (fn (lambda (a) 
                   (< a x))))
         (append (quicksort (remove-if-not fn 
                                           r)) 
                 (list x)
                 (quicksort (remove-if fn 
                                       r))))))

1
Bence söylediklerinizde adil bir eleştiri var. Sadece "sunduğunuzdan çok daha zor görünüyor ve burada sunulduğu gibi çok daha net görünüyor" demek istiyorum. Girinti kurallarına uyulmazsa birçok dilin çok daha kafa karıştırıcı göründüğünü kabul etmeniz gerektiğini düşünüyorum. Ayrıca, örneğin Java ve Lisp'in girintisini karşılaştırırsak, doğru girintilemek için genellikle her dilin temel yapılarının aynı düzeyde bilgi gerektirdiğini söyleyebilirim. Ancak, tamamen öznel olmasına rağmen, hala zor göründüğünü söylemek doğru.
John waffle ile

1
Biraz daha basit hale getirmek için, standardı letkullanabilir ve değişmeyecek defunşekilde tanımlamak için işlevin başında a kullanabilirsiniz fn.
Aaron Robson

4
@FerretallicA Bir şeyin "kolayca okunabilir" veya "kendi kendini tanımlayan" olup olmadığını hangi temelde belirlersiniz? İngilizceye benzerlik mi? Çince "kolayca okunabilir" mi? Matematiksel gösterim ne olacak? İnsan tarafından okunması kolay değil mi? Bu tür bir argüman sinir bozucu anlamsızdır, çünkü gizli mesajı şudur: "Bu, akıl yürütmeyi ilk öğrendiğim gibi görünmüyor."

3
Daha çok "çürütme" nin "Whinge whinge" gibi geliyor. Programlama dili koklama testini deneyin. Daha önce programlamamış birini alın ve ona bir VB kodu sayfası ve bir Lisp kodu sayfası gösterin. Sol cevizime bahse girerim, iki sıradan gözlemcinin hangisinden anlamlı gözlemler daha kolay çıkarabileceğine.
nathanchere

1
Çinli, Japon, Koreli, Sümer, Hintçe veya Arap programcı olmayan birinin, basit bir tartışma için testisinizden vazgeçme konusundaki küstah arzunuz hakkında ne düşüneceğini merak ediyorum.

4

Yeni bir dil öğrenmenin zaten bildiğiniz dillerdeki programlama stilinizi her zaman etkilediğini gördüm. Benim için her zaman ana dilim olan Java'daki bir sorunu çözmek için farklı şekillerde düşünmemi sağladı. Genel olarak, programlama açısından ufkunuzu genişlettiğini düşünüyorum.


Çünkü iyi bir programcısın. Kötü programcılar eski becerilerini yeni bilgilerle etkilemek yerine yenilerini yazarken zaten bilinen dillerde düşünürler. Peki lisp'ten sonra neden Java kullanıyorsunuz? :) Java, Lisp, imo'dan sonra kullanımı en zor olanıdır.
Luka Ramishvili

4

Kendinize lisp öğrenmeniz gerekip gerekmediğini sormanız gerekiyorsa, muhtemelen buna ihtiyacınız yoktur.


8
Aksini söyleyebilirim: lisp'i zaten anlıyorsanız, çünkü benzer bir dille deneyiminiz varsa, o zaman muhtemelen gerekli değildir. Lisp'in neler sunabileceğini anlamıyorsanız, maruz kalmanızdan faydalanabilirsiniz.
Mr Fooz

@MrFooz, lisp'in lispy kısmını öğrenme ihtiyacını ortadan kaldırabilecek benzer diller yoktur. Lisp'in temel özellikleri hiçbir dilde bulunmaz. Çoğu olsa da.
Luka Ramishvili

Hedeflerinize bağlı olarak. Ölmek istiyorsan nefes almana gerek yok. Ama bu yapmamalısın anlamına gelmez.
mimoralea

4

Seksenlerde kolejde "lisp dersi" aldım. Sınıfta sunulan tüm kavramları karıştırmamıza rağmen, lisp'i harika yapan şey konusunda hiçbir takdir görmedim . Korkarım ki pek çok insan lisp'e başka bir programlama dili olarak bakıyor, ki bu da üniversitedeki bu dersin benim için yıllar önce yaptığı şeydi. Lisp sözdiziminden (veya eksikliğinden) şikayet eden birini görürseniz, lisp'in büyüklüğünü kavrayamayanlardan biri olma ihtimali yüksektir. Çok uzun zamandır o insanlardan biriydim.

Yirmi yıl sonra, lisp'e olan ilgimi yeniden canlandırdığımda, lisp'i ilginç kılan şeyi "anlamaya" başladım - zaten benim için. Kapanışlar ve lisp makroları tarafından zihninizi uçurmadan lisp öğrenmeyi başarırsanız, muhtemelen noktayı kaçırmışsınızdır.


Ben ikinci oldum. Şu anda Lisp'e ikinci baskınım, 5 yıl okul dışında. Hala yeşil olduğunuzda Lisp'in bir terimi yeterli etkiye sahip olmayabilir - yalnızca meta programlamaya odaklandığımı hatırlıyorum ve henüz meta programlama ve esnekliği takdir etmemiştim.
Aaron

4

LISP / Scheme'i öğrenmek size daha fazla uygulama alanı sağlamayabilir, ancak işlevsel programlama, kuralları ve istisnaları hakkında daha iyi bir fikir edinmenize yardımcı olacaktır.

Sırf iç içe geçmiş altı saf işlevin güzelliğindeki farkı ve yan etkileri olan altı iç içe işlevin kabusu arasındaki farkı öğrenmek için zaman ayırmaya değer.


4

Gönderen http://www.gigamonkeys.com/book/introduction-why-lisp.html

Lisp hakkında en sık tekrarlanan efsanelerden biri onun "ölü" olduğudur. Common Lisp'in, örneğin Visual Basic veya Java kadar yaygın olarak kullanılmadığı doğru olsa da, yeni geliştirme için kullanılmaya devam eden ve yeni kullanıcıları "ölü" olarak çekmeye devam eden bir dili tanımlamak garip görünüyor. Bazı yeni Lisp başarı öyküleri arasında, Yahoo şirketini satın aldığında Yahoo Store haline gelen Paul Graham'ın Viaweb'i; Online bilet satıcısı Orbitz ve diğerleri tarafından kullanılan ITA Software'in uçak bileti fiyatlandırma ve alışveriş sistemi QPX; Naughty Dog'un PlayStation 2 için oyunu, Jak ve Daxter, büyük ölçüde etki alanına özgü bir Lisp lehçesiyle yazılmış Naughty Dog adlı, derleyicisinin kendisi de Common Lisp'te yazılan, GOAL adında icat edildi; ve Roomba, yazılımı, Common Lisp'in aşağı doğru uyumlu bir alt kümesi olan L ile yazılmış otonom robotik elektrikli süpürge. Açık kaynaklı Common Lisp projelerine ev sahipliği yapan Common-Lisp.net Web sitesinin büyümesi ve son birkaç yılda ortaya çıkan yerel Lisp kullanıcı gruplarının sayısı belki de daha da önemli.


4

"Lisp, sonunda elde ettiğinizde yaşayacağınız derin aydınlanma deneyimi için öğrenmeye değer; bu deneyim, Lisp'in kendisini hiç kullanmasanız bile, geri kalan günlerinizde sizi daha iyi bir programcı yapacaktır."

--Eric S. Raymond, "Nasıl Hacker Olunur"

http://www.paulgraham.com/avg.html


3

Lisp'in ticari bir ortamda asla kullanamayacağınız dillerden biri olduğunu kabul ediyorum. Ancak, başaramasanız bile, öğrenmek kesinlikle bir bütün olarak programlama anlayışınızı genişletecektir. Örneğin, üniversitede Prolog'u öğrendim ve daha sonra hiç kullanmadım, bana birçok programlama kavramını daha iyi anladım ve (bazen) kullandığım diller için daha büyük bir takdir sağladım.

Ama eğer öğreneceksen ... elbette On Lisp'i oku


Küçük not: Lisp, Lisp'e uygun bir giriş değildir, önce başka bir şey okuyun. Practical Common Lisp'i öneririm.
Luís Oliveira

3

Lisp öğrenmek Javascript'i tamamen farklı bir ışık altında tutacaktır! Lisp sizi hem özyinelemeyi hem de tüm "birinci sınıf nesneler olarak işlevler" -paradigm olarak kavramaya gerçekten zorlar. Scheme vs Javascript hakkındaki Crockfords mükemmel makalesine bakın . Javascript belki de günümüzün en önemli dilidir, bu yüzden onu daha iyi anlamak son derece yararlıdır!


1
En önemli dil? Sanmıyorum, efendim.
TraumaPony

7
Eh, bir web tarayıcısı olan hemen hemen her cihazda (ve muhtemelen olmayan birkaç cihazda) kullanılabilir, bu nedenle son kullanıcı uygulamalarını çalıştırma dilleri söz konusu olduğunda, muhtemelen gezegendeki herhangi bir programlama dilinin en yüksek penetrasyonuna sahiptir. . Açıkçası, neyin önemli olduğuna dair tamamen farklı bir fikre sahip olabilirsiniz. Kanseri tedavi etmek için mi kullanılacak? Muhtemelen değil. Ancak, beğenin ya da beğenmeyin, önümüzdeki yıllarda (web) uygulama geliştirmenin temel taşlarından biri olacaktır.
Erlend Halvorsen

1
Ben de aynı şekilde gittim! Javascript'in işlevsel ve prototipleme özelliklerini zaten kullanıyor olsam da, Lisp Javascript'i öğrendikten sonra yine de benim için yeni bir dil oldu.
Luka Ramishvili


3

Tamam, tuhaf olabilirim ama Paul Graham'ın denemelerini o kadar da sevmiyorum ve eğer Common Lisp'i zaten anlamadıysanız Lisp gerçekten çok kaba bir kitap. Bunun yerine, Siebel'in Pratik Ortak Lisp'i için gidin derim . "Katil uygulamalara" gelince, Common Lisp yerini ITA gibi niş mağazalarda buluyor gibi görünüyor , bu nedenle Rails'in Ruby için olduğu gibi CL ile eşanlamlı bir uygulama olmasa da, endüstride bunu kullanan yerler var. biraz kazma.


2

Karmaşık sözdizimi? Lisp'in güzelliği, gülünç derecede basit bir sözdizimine sahip olmasıdır. Bu, listenin her öğesinin başka bir liste veya temel veri türü olabileceği bir listedir.

Yalnızca başka bir veri türü olarak işlevler hakkında düşünme ve kullanma becerinizi geliştirdiği için öğrenmeye değer. Bu, zorunlu ve / veya nesne yönelimli bir dilde kodlama şeklinizi geliştirecektir çünkü kodunuzun nasıl yapılandırıldığı konusunda zihinsel olarak daha esnek olmanızı sağlayacaktır.


2

Diğer cevaplara eklemek için:

Çünkü SICP kursu (videolar burada mevcuttur ) harika: size Lisp ve çok daha fazlasını öğretiyor !



2

Clojure'u bugün Java sanal makinesinin üzerine testler ve komut dosyaları yazmak için kullanabilirsiniz . JVM'de uygulanan başka Lisp dilleri olsa da, Clojure'un Java ile entegrasyon konusunda en iyi işi yaptığını düşünüyorum.

Java dilinin kendisinin Java kodu için test yazma yoluna girdiği zamanlar vardır ("geleneksel ticari programlama" dahil). (Java'nın bir suçlaması olduğunu söylemiyorum - diğer diller de aynı sorundan muzdariptir - ama bu bir gerçektir. Java değil, konuya göre ayrıntıya girmeyeceğim. Lütfen yeni bir konu başlatmaktan çekinmeyin. birisi bunu tartışmak ister.) Clojure bu engellerin çoğunu ortadan kaldırır.


2

Lisp, geleneksel programlamayı kullandığınız her yerde kullanılabilir. O kadar farklı değil, sadece daha güçlü. Bir web uygulaması mı yazıyorsunuz? bir masaüstü uygulaması yazarak bunu Lisp üzerinde yapabilir misin? bunu Lisp üzerinde yapabilirsiniz, her neyse, bunu Lisp, Python veya başka herhangi bir jenerik programlama üzerinde yapabilirsiniz (sadece bir görev için uygun olan birkaç dil vardır).

En büyük engel muhtemelen patronunuzu, meslektaşlarınızı veya müşterilerinizi kabullenmek olacaktır. Bu, onlarla çalışmanız gereken bir şey. JVM'den kitaplıklara kadar Java altyapısının mevcut kurulum tabanından yararlanabilecek Clojure gibi pragmatik bir çözüm seçmek size yardımcı olabilir. Ayrıca, bir Java programınız varsa, bir eklenti mimarisi yapabilir ve bunun için Clojure eklentileri yazabilir ve sonunda Clojure'da kodunuzun yarısını yazabilirsiniz.


1

Bir neden değil, ancak (önemsiz) AutoCAD, LISP ve DCL çalışma zamanı desteğine sahiptir. VBA veya C ++ veya .NET SDK'larını kullanmak istemiyorsanız veya bir DIESEL ifadesi onu kesmiyorsa karmaşık makrolar (ActiveX otomasyonu dahil) yazmak için uygun bir yoldur.

AutoCAD'in birçok işlevi aslında LISP rutinleridir.


1

Bu bir süredir kendi kendime düşündüğüm bir konu ama aslında bir karara varamadım, çünkü her zamanki zaman ana sorun ...;)

Ve bu yazıda bu bağlantıları bulamadığım için onları kamu yararına ekliyorum:

Başarı ve Başarısızlık hikayesi: JPL'de Lisping

Gerçekten etkileyici bir başarı hikayesi: Orbitz şirketinde kullanılan Lisp

Java yerine Lisp kullanılıp kullanılmayacağının karşılaştırılması ve analizi: Java'ya Alternatif Olarak Lisp




0

Katil uygulaması? ITA Software'in uçuş arama motoru bunlardan biridir.

"Neden" e gelince, bu sizi büyük olasılıkla daha iyi bir geliştirici yapacak ve sizi daha kötü bir hale getirme olasılığı çok düşüktür. Bununla birlikte, lisp lehçelerini diğer dillere tercih etmenizi sağlayabilir.

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.