Lisp'te (ciddi) web geliştirme yapmak mümkün müdür? [kapalı]


100

Neredeyse her türlü programlama dilinde, özellikle de Lisp gibi güçlü bir dilde (ister Scheme ister Common Lisp olsun) hemen hemen her tür uygulamayı yazmak mümkündür. Ancak web geliştirme için kullanmak pratik mi? Öyleyse, iyi bir başlangıç ​​noktası ne olmalıdır? Bu tür bir proje için uygun kaynaklar (araçlar, kütüphaneler, belgeler, en iyi uygulamalar, örnekler, vb.) Nerede bulunabilir?


2
"Pratik" ile ne demek istediğine bağlı. Mümkün, evet. Pratik, muhtemelen çoğu için değil. Sitenizi barındırmayı planlıyor musunuz? Kök kontrolüne sahip olacağınız kendi özel kutunuzu çalıştıracak mısınız? Bunun için ne kadar çaba harcamak istiyorsun?
çekirdek

Leonardo, şimdi bu konuyla ilgili bir kitap hazırlıyorum ve Lisp ile ilgilenen web geliştiricilerinden geri bildirim almak istiyorum. İsterseniz, Lisp'i kullanma fikrinizi nasıl ortaya çıkardığınızı ve böyle bir kitapta ne görmek istediğinizi lütfen bana bildirir misiniz? vsedach@gmail.com
vsedach

@chris - Yakın zamanda bazı yan projelerim için Scheme hosting'i kurdum; sandığımdan daha kolaydı - gcbhacks.dreamhosters.com/scheme-web-apps
gcbenison

2
Paul Graham'ın makalelerini okuyun. Web uygulamaları için LISP kullanma tartışmasında gözden kaçırdığı bir şey olduğundan şüpheliyim, ayrıca o harika bir yazar. paulgraham.com/avg.html ana sayfası: paulgraham.com/index.html
Kelly

Google çalışanları: Harika CL listesinde daha fazla ve güncel yanıtlar var .
Ehvince

Yanıtlar:


82

Evet, web geliştirme bugün Common Lisp'in güçlü yönlerinden biridir.

  • Bir web sunucusu olarak, Dr. Edmund Weitz'in eskiden tbnl olarak bilinen Hunchentoot'u kullanın .

    Mod_proxy'yi ters proxy olarak veya tek başına bir sunucu olarak kullanarak Apache'nin arka ucu olarak çalıştırabilirsiniz.

  • PHP tarzı şablonlardan Lisp makro korsanlarına ve XSLT'ye kadar çeşitli HTML oluşturma çözümleri mevcuttur. Sadece seçiminizi yapın.

    HTML-ŞABLONU bir örnektir.

  • Kapanış XML , XML ayrıştırma, serileştirme, XPath 1.0, XSLT 1.0 için kullanılabilir. Ayrıca, HTML etiketi çorbası ayrıştırması için Kapanış HTML'si de vardır.

    (Tam açıklama: Closure XML ve Closure HTML'nin sorumlusuyum.)

  • İsterseniz, Parenscript JavaScript deneyiminizi daha lispier yapabilir, ancak tabii ki kendiniz de düz eski JavaScript yazabilirsiniz.

    Common Lisp'de yazılan ve JavaScript'i devam desteği eklemek için dönüştüren jwac'larda bir başka harika JavaScript geliştirme çözümü .

  • Web hizmeti projeleri, bir sunucuya ek olarak bir HTTP istemcisi gerektirebilir.

    Drakma bugün bunun için kullanılacak kütüphanedir.

    PURI , URI manipülasyonu için kullanışlıdır.

    Ve dahası var! Bir başlangıç ​​noktası cliki'dir, örneğin cliki.net/web .

Web'de kimse sunucunuzun Common Lisp'de yazıldığını bilmiyor :-)


1
ve bu sadece ortak lisp ve sadece bir takım araçlar içindir ...
Attila Lendvai


1
@MattBall woof. yap. uluma.
2013

İnternette lisp sunucunuzun çığlıklarını kimse duyamaz.
kd4ttc

31

Common Lisp'de web geliştirme hem etkili hem de eğlencelidir.

Bazı örnekler:

CL-WHO , bir daha kapanış etiketini unutmadan HTML yazmanıza izin verir.

Web kilitleri , formları yerleşik doğrulama ile bildirimli olarak tanımlamanıza izin verir:

(defview signup (:type form :caption "Sign up")
  (username :satisfies #'valid-username)
  (password :present-as dual-password :parse-as dual-password)
  (receive-newsletter-p :present-as checkbox :parse-as predicate))

Ayrıca AJAX'ı tam otomatik bir şekilde destekler ve tarayıcı desteklemiyorsa normal bağlantılara geri döner.

cl-prevalence , SQL'e inanılmaz derecede basit bir alternatiftir.

Son zamanlarda pek çok insan bu teknolojileri görev açısından kritik uygulamalar için başarıyla kullanıyor.

En önemli CL açık kaynak projeleri aslında mükemmel topluluk desteğine sahiptir.


19

Web geliştirme için bazı web çerçeveleri var. Bir bak bakalım:

İyi desteklenen lisp araçları istiyorsanız, bunlar için ödeme yapmanız gerekir. Açık kaynak araçları etrafında çok büyük bir topluluk yok, bu yüzden Python'daki Django ile aynı düzeyde belgelere / benimsemeye sahip değiller.

İşte bazı ticari lisp ürünleri:

Reddit'in başlangıçta Lisp'de inşa edildiğini, ancak yazarlar daha sonra iyi kullanılmış ve belgelenmiş kitaplıkların eksikliğinden dolayı Python'a geçtiklerini belirtmek gerekir. ( bağlantı )


Kütüphanelerin "en büyük sorun" olduğunu söylüyor, ancak ondan hemen önce "reddit'in Mac'imde çalışmayacağını" söyledi; o zamanlar, Mac için düşük seviyeli soket kodunu çalıştıramayan tek bir iş parçacıklı CL vardı. Bu en azından bir anlaşma kırıcı gibi geliyor.
Ken

3
Ben büyük bir Lisp hayranıyım, benim için Python'un yerini alıyor. Ama C ++ ile çalışıyorum. Python prototiplerini anlayacak başka Python programcıları bulabilirim, ancak şimdiki Lisp yeniden canlandırması daha başarılı olana kadar, "neden Python veya Ruby kullanmadın?"
Aaron

11

Diğer çerçevelerle konuşamıyorum, ancak bir web sunucusu için Hunchentoot'u kullanırken çok şanslıydım (kendi başına iyi çalışıyor veya Apache'nin arkasına koyabilirsiniz ). Onu gerçekten parlatan şey (bu muhtemelen bazıları için şok olacaktır) kütüphanelerdir!

Web için CL'yi kullanmaktan gerçekten hoşlandığım şey, çalışırken hepsini değiştirebilmenizdir. Her zaman bir REPL'e sahip olursunuz ve sunucu kodunuzu çalıştırırsınız, daha sonra bu REPL'e bağlanabilir ve hiçbir şeyi durdurmak zorunda kalmadan kodun nasıl çalıştığını değiştirebilir veya inceleyebilirsiniz. Site çalışırken işlevleri yeniden tanımladım, işlev bir dahaki sefere çağrıldığında, sadece yeni kodu alıyor ve çalışıyor.


LISP'yi MongoDB ile arayüzlenebilir kılacak herhangi bir şeyin farkında mısınız?
MadPhysicist

9

Lisp web çerçevelerinin olmadığı efsanesini daha da ortadan kaldırmaya yardımcı olmak için, işte henüz bahsedilmeyenler:

Açıkçası pek çok insan Lisp'in birçok web çerçevesi yazmak için yeterince iyi olduğunu düşünüyor.

Herhangi bir web çerçevesi kullanmıyorum veya onaylamıyorum. Ortogonal araçları bir araya getirerek (David Lichteblau bazı iyi olanlardan bahsetmiştir) tasarım modellerini oluşturduğunuz uygulamaya gerçekten uygun bir şekilde kullanarak web uygulamaları oluşturmayı tercih ediyorum ve bu benim önerdiğim yaklaşım. Common Lisp, hem bu tür araçlar bolluğu hem de bunları bir araya getirmek için eşsiz bir yetenek sağlar.

Adam Petersen, geçen yıl Lisp web uygulamalarını bu tarzda oluşturmaya nasıl başlayacağınıza dair mükemmel bir giriş eğitimi yayınladı:

http://www.adampetersen.se/articles/lispweb.htm


8

Sanırım çok fazla kargaşa olmadan evet diyebiliriz.

  1. ilk HTTP sunucularından biri cl-http idi

  2. DrScheme'nin etrafındakiler program üzerinde kayda değer bir zaman harcadılar:

  3. www.franz.com kendi Web sunucusu (AllegroServer) ve web çerçevesi (webactions) üzerinde çalışır

  4. Şüpheniz varsa, Edi Weitz'in ortak lisp paketlerine bakın. Genellikle çalışırlar.

Yani evet, Common Lisp ile "ciddi" web programlama yapılabilir. Kendi adıma şu anda bazı Common Lisp rotalarını veya Ruby on Rails'i takip etme konusunda kararsızım. Her ikisini de her şeye tercih ederim. NET ....


4

Paul Graham'ın şirketi Viaweb , Common Lisp'te sonradan Yahoo Mağazaları haline gelen bir ürün yazdı . Görünüşe göre Yahoo daha sonra onu C ++ ile yeniden yazdı. Lisp programlaması için epeyce web kaynağı var.


1
Yahoo için bu doğruysa, bazıları bunu CL'nin bir web dili olarak başarısızlığı olarak görebilir. Ama bunu bir web prototipleme dili olarak CL'nin başarısı olarak görürdüm.
gcbenison

3
Paul Graham'ın Ortalamaları Yenmek üzerine notlarında dediği gibi, yeniden yazma işlemini bir başarısızlık olarak görmüyorum: "Yahoo, 2003 yılının Ocak ayında, C ++ ve Perl ile yazılmış yeni bir editör sürümünü yayınladı. Programın hayır olup olmadığını söylemek zor. bu programı C ++ 'ya çevirmek için tam anlamıyla bir Lisp yorumlayıcısı yazmaları gerektiğinden daha uzun süre Lisp ile yazılmıştı: bildiğim kadarıyla tüm sayfa üreten şablonların kaynak dosyaları hala Lisp kodudur. "
protist

viaweb, başka bir dilde, c ++ 'da yeniden yazmak için yaygın lisp'de prototiplenmemiştir. Yapımcıları tarafından, belirttiği çeşitli açık nedenlerden dolayı lisp dilinde yazılması ve çalıştırılması amaçlanmıştır, dil gücü, hızlı, evet prototipleme ve hızlı üretim, lisp'i çok iyi biliyordu vb. lisp dilinde yazmış, bazı kısımları lisp dilinde yazılmıştır. bir kez edindikten sonra söylentiye göre yeniden yazmışlar, emin değilim. bu, edinenin seçimidir, hatta vbasic veya pascal fortran olarak yazılabilir.
sçuçu

2

Bu soruda Lisp web uygulamaları için takım oluşturma hakkında bazı şeyler bulabilirsiniz. .

Reddit çalışanlarının Lisp'de bir web sitesi çalıştırma (ve Python'a geçiş) deneyimlerinden biraz bahsettiği Stack Overflow Podcast 27'yi de dinlemeye değer olabilir .


2

Görüşler değişir. Ortak akıl şudur: Farklı bir dil veya daha doğrusu LAMP, .NET, Ruby on Rails, Java gibi farklı bir web yığını kullanın. Lisp'de tanınmış başarılı web projesi Paul Graham'ın ViaWeb'iydi .Reddit başlangıçta lisp'de uygulandı, ancak daha sonra python'a geçti . Lisp kullanmaya karar verirseniz, Seibel'in kitabı Practical Common Lisp'i deneyin .


1
Gönderinize biraz daha FUD ekleme şansınız var mı?
jrockway

@ Yuval haklı. Bu yaygın bir bilgeliktir. Reddit değişti. Sanırım yazı, bu ortak bilgeliğin arkasında herhangi bir gerçek olup olmadığını soruyor.
Steve Rowe

1
@jrockway ve Steve Rowe - Ortak bilgeliğin bir nedeni var. Bunun FUD olduğunu sanmıyorum. ViaWeb'den beri LISP ile yazılmış başarılı bir web sitesi duymadım. Lütfen yanılıyorsam düzeltin. Programlama dilinin ideolojiye göre değil, liyakatlerine göre kullanılması gerektiğine inanıyorum.
Yuval F


0

Allegro Common Lisp'e bir göz atın. Özellikle web geliştirme için bir web sunucusu dahil olmak üzere bazı kitaplıkları vardı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.