Web geliştirme için CL ve Python arasında seçim yapma


13

Java geçmişinden geliyorum ve Paul Graham'ın bu küçük makalesini okuduktan sonra, işimi hızlandırmak için Common Lisp adlı yeni bir dil almaya merak ettim (bir web geliştiricisiyim).

Şu anda evcil hayvan projeleri yazıyorum ama gelecek için bazı iş planlarım var. Paul, “Gizli silah” olarak yazdığı makalede LISP hakkında konuşuyor. Bu ifadenin 10 yıl sonra doğru olup olmadığını bilmiyorum ama ayak parmaklarımı güzel bir CL eğitimine daldım ve LISP web geliştirme için daha üstün olabilir gibi görünüyor.

Paul ayrıca Python'dan tanıdığım güzel bir seçim olarak da bahsediyor. Sorum şu: gelecekteki web projelerim için hangisini seçmeliyim?

Ne düşünüyordum:

  • Tercih ettiğim dili seçebilmem için masaüstü uygulamaları geliştirmeyeceğim.
  • python çok büyük bir topluluğa sahip gibi görünüyor, bu yüzden lisp ile karşılaştırıldığında çok daha fazla kütüphane / çerçeve
  • Lisp'in başka hiçbir yerde bulunamayan bazı işlevleri (makrolar gibi) olduğunu öğrendim
  • Çoğunlukla yalnız veya 1-2 başka programcıyla çalışıyorum ama lisp bilgisi olan birini bulmak zor olabilir

Yani ne düşünüyorsun?


Python topluluğu PHP'ye kıyasla ne kadar büyük? Ben bir Python geliştirici bulmak çok zor olabilir, bir PHP geliştirici bulmak karşılaştırıldığında, bu yüzden sadece proje deneysel ise seçenekleri arasında bu seçim eğilimindedir.
Alex

PHP'yi gerçekten sevmiyorum, bu yüzden bu benim için bir seçenek değil. Tek patronum olduğum için kimse beni sevmediğim bir şeyi kullanmaya zorlamıyor. :)
Adam Arold

2
@Vash Python'un geliştirme topluluğu PHP'ninki kadar büyük olmayabilir, ancak yine de çok büyüktür. Ayrıca, Python'un çevrimiçi belgelerinin PHP'lerden çok daha üstün olduğunu düşünüyorum.
parçacık

Bence bu doğru.
Adam Arold

2
Henüz kimsenin Clojure'dan bahsetmediğine inanmıyorum!
Chiron

Yanıtlar:


7

Java geçmişinden geliyorsunuz, neden Clojure programlama dilini kontrol etmiyorsunuz?
JVM'de yaşayan modern bir Lisp lehçesi, bu yüzden orada tonlarca JAR'a erişiminiz var.

Clojure evreninde Django ve Rails gibi cilalı ve üretime hazır web çerçeveleri bulamazken (en azından şu anda), ancak programcılar Noir ve Compojure web çerçevelerini kullanıyor.
Clojure web uygulamalarınızı Heroku platformuna da dağıtabilirsiniz.

Clojure oldukça faydalıdır, ancak öğrenme eğrisi çok diktir. İşlevsel programlamayı öğrenmeye hazır mısınız (aşina olmadığınızı varsayarak)? OOP dünyasında yaşamak için?

Python güvenli tarafıdır: olgun, tonlarca kitap, birçok web çerçevesi, büyük bilgi havuzu ve öğrenmesi kolay.

Karar gerçekten senin.


1
Son zamanlarda Clojure'u kontrol ettim ve bence en çok ihtiyacım olan şey bu! Tavsiye için teşekkürler!
Adam Arold

7

Lisp, yakın dururken ve fildişi kulelerden gelen sesleri dinlerken duyduğunuz dildir. PHP gibi diğer diller, zarif veya güçlü olmayabilir, ancak ortak bir dil gibidir, kolay ve affedicidir.

Lisp birçok dili etkilemesine rağmen, onu ana akım haline getirmedi. Neden? Birçok geliştirici dilin kavramlarını anlamadığı için onlar için oldukça belirsiz görünüyordu. Lisp, geliştiricilerin geniş kitleleri için anlaşılması zordur. Hiç Lisp'i programlama dili olarak gerektiren bir iş tanımı gördünüz mü? Yapmadım. "Neden soruyorsun? Çünkü birçok insanın bakımını yapmak ve okumak zor. Lisp'de, bir ifadeye sadece bir ifadeyle ne yaptığını hemen söyleyemezsiniz. Belli bir basitlikten yoksun, bu yüzden asla ortak dil haline gelmedi.

Yine de Lisp'in birçok dil üzerinde etkisi oldu. Akademik amaçlar için öğrenmenizi öneririm. Zihinsel sınırlarınızı genişletir, böylece problemleri genellikle farklı bir bakış açısından düşünebilirsiniz. Ancak, bir üniversite için bir fizibilite çalışması yapmadıkça, web uygulamaları için kullanmanızı tavsiye etmem. Diğer seçeneklere kıyasla araçlar ve kütüphanelerde destek yok. Sonunda biraz para getirecek ve özgeçmişinizde sunulabilecek pratik beceriler edinmek istiyorsanız, elbette Python'u seçin. Lisp'ten de yararlanacaksınız, ancak genel programlama tarzınız bundan yararlanabilse de, daha az pratik ve daha akademik niteliktedir.

Ayrıca, bugünlerde işlevsel dillerin bir rönesansı var. Bazı fonksiyonel kavramları almak istiyorsanız JVM'de .NET veya Scala için F # 'a bakabilirsiniz.

Yani seçimini yap. Her ikisi de gerçek diller olsaydı, aşağıdakilerden hangisini öğrenmeyi tercih ederdiniz: Latin / Eski Yunanca veya Fransızca / Almanca / İtalyanca / İspanyolca / Çince / Arapça?


Chicago bölgesinde bir iş ilan lisp gördüm - sadece bu değil, onlar deneyim olmadan işe ve sizi eğitmek. O konseri öyle istedim ama gidip gelmek beni öldürürdü. Ancak itiraf edeceğim, sanırım bu uzun yıllar boyunca gördüğüm tek reklam.
Bryan Oakley

Tamam ne yapacağım: Ben de LISP ve Python öğreneceğim, ama ben Python kullanacağım, çünkü siz ve diğerlerinin yukarıda belirtilen nedenleri. Açıklama için teşekkürler.
Adam Arold

3

Ortak lisp ve python arasında bir seçim verildiğinde, verebileceğim en iyi pragmatik tavsiye python öğrenmek . İçimdeki teknoloji uzmanı, programların herkesin lisp öğrenmesi gerektiğini düşünürken, öğrenmenin "işinizi hızlandırmanıza" yardımcı olacağını düşünmüyorum.

Lisp öğrenirseniz, uzun vadede sizi daha iyi bir programcı yapacağına inanıyorum. Bununla birlikte, belirttiğiniz nedenlerden dolayı lisp öğrenmek, yakın hedefleriniz IMO'suna yaklaşmanıza neden olmaz. Pratik, pragmatik bir çözüm istiyorsanız, Python öğrenin. Günlük görevler emac'lerin özelleştirilmesini içermiyorsa, günlük görevlerinizde size yardımcı olmak için lisp kullanmak için yeterli araç veya fırsat yoktur.

Öte yandan, eğer (sert ko-işçi bulmak için araçlar bir eksiklik incelemek ve öğrenmek için zaman var, ve seçtiğiniz ramifications katlanmak isteyen olsun lisp ile gitmek, lisp vs). Gerçekten müthiş bir dil.


3

Uzun bir süre boyunca kendi kod kitaplıklarınızı çalıştırmaya uygun, dilinizin sınırlarını zorlamaktan ve yapılandırmadaki ara sıra sakıncasına aldırmamaya kendini motive eden bir kişi iseniz Lisp'i kullanmanızı tavsiye ederim. Eğer serbest meslek sahibi iseniz, makro özellikleri nedeniyle uzun vadede bir üretkenlik artırıcı olması muhtemeldir.

Python esnek, hızlı veya güçlü değildir. Diğer birçok dile kıyasla öğrenmek neredeyse önemsizdir. Aslında çok Blubby. Geniş bir desteği var, fad dil du jour ve bir ton kütüphaneye sahip. Yeni diller öğrenmekten şikayet eden insanlarla çalışmak zorundaysanız muhtemelen biraz daha iyi olur.

Eğer bir Lisp'de iyi olan birini Python'da iyi olan birine göre işe alıyorsam, hemen Lisp kişisinin Python'dan daha iyi bir programcı ve bilgisayar bilimcisi olduğunu düşünürdüm (diğer her şey eşittir).

Acımasızca önyargılıyım, eminim.


1
Önyargılı mı, değil mi?
Adam Arold

2

Paul Graham'ın neden bahsettiğini vurgulamak isterseniz, Lisp lehine savunurum. Lisp dil ​​ailesi tarafından benimsenen yaklaşım ve zihniyet farkı, farklı düşünmeye teşvik edilmesi nedeniyle, bir programcı olarak sizi etkileme potansiyeline sahiptir. Kendimi böyle yapmamış olsam da, Lisp'teki web geliştirmenin oldukça iyi desteklendiği anlaşılıyor: SO'daki şu soruya bakın.

Python harika bir dildir ve ben onu hiç vurmayacağım. Python için birçok iyi web çerçevesi ve aracı vardır ve gerektiğinde zaten aşina olan kişileri bulmak daha kolay olacaktır.

Nihayetinde, mevcut ortam nedeniyle, Lisp'i seçmek her zaman "İstediğinizi kullanmak ister misiniz, ya da endüstrinin halihazırda kullanmakta olduğu şeyi kullanmak ister misiniz?" Bu soruya cevabınız nedir?


2

Zaman baskınız yoksa Lisp kullanın. Lisp'i Öğrenmek, Python'u (ve bildiğiniz diğer tüm dilleri) görüntüleme şeklinizi değiştirir, ancak Python'u öğrenmek Lisp'i görme biçiminizi değiştirmez (eğer biliyorsan). Lisp, araç kutusundaki yeni bir araçtan daha fazlasıdır. Bu yeni bir düşünce tarzı.

Siz oradayken , Factor'a veya başka bir bitiştirici dile bakın . Birleştirici diller, birleştiricilerde nasıl düşünüleceğini öğretmek için şaşırtıcıdır . Birleştirici bir dil öğrenmek, diğer tüm dilleri görüntüleme şeklinizi değiştirir.

Son olarak, sağ beyninizi kullanın. Programlama dillerinin biçimciliği bizi sol beynimizi problem çözme için aşırı kullanmaya zorlamaktadır. Oyun değiştiren başka bir paradigma değişimine erişmek için sağ beyninizi etkinleştirin.


0

Lisp tıpkı diğer diller gibi sadece bir araçtır. Yararlı özellikleri var mı, elbette. Aynı zamanda, hemen hemen diğer herhangi bir dilde aynı çıktıya sahip olmak mümkündür, sadece daha fazla zaman ve kod alabilir. Lisp ile ilgili temel sorun, platformlarında herhangi bir Lisp çeşitliliğini destekleyen paylaşılan bir ana bilgisayar (bildiğim) olmadığı için, en azından VPS hosting almanız GEREKİR.

Önerebileceğim bir şey, bir Java programcısı olduğunuzdan Groovy'e (hatta Scala'ya) bir göz atmanızdır. Java kitaplıklarınızı ve API'larınızı kullanmanıza izin verir ve üretkenlikte bir artış sağlar.


VPS sorun değil çünkü fikirlerim paylaşılan barındırma ile de çalışmaz.
Adam Arold

0

Lisp hakkında kökeni dışında bir ton bilmiyorum. Python hakkında bildiklerim şudur:

İlk uçan daire topraklarından 5 dakika sonra, Python topluluğu G / Ç sistemleriyle arayüz oluşturmak için bir şeyler bir araya getirecektir.

Ayrıca, öncelikle JavaScript'ten geliyor, Python'a çok doğal bir uyum buldum. Belki de tersi doğru olabilir.

Ayrıca, Django günümüzde taklit edilecek bir çerçevedir.

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.