Wybór między CL i Python do tworzenia stron internetowych

13

Pochodzę ze środowiska Java i po przeczytaniu tego krótkiego eseju Paula Grahama zacząłem zastanawiać się nad wyborem nowego języka, mianowicie Common Lisp, aby przyspieszyć moją pracę (jestem programistą).

Obecnie piszę projekty dla zwierząt, ale mam kilka biznesplanów na przyszłość. Paul mówi o LISP w swoim eseju jako „Tajnej broni”. Nie wiem, czy to stwierdzenie jest prawdziwe po 10 latach, ale zanurzyłem palce u stóp w fajnym tutorialu CL i wygląda na to, że LISP może być lepszy w tworzeniu stron internetowych.

Paul wspomina również o Pythonie jako dobry wybór, który faktycznie znam. Moje pytanie brzmi: który wybrać do przyszłych projektów internetowych?

O czym myślałem:

  • Nie zamierzam tworzyć aplikacji komputerowych, więc mogę wybrać język, który preferuję.
  • wygląda na to, że python ma bardzo dużą społeczność, a więc o wiele więcej bibliotek / frameworków w porównaniu do lisp
  • Dowiedziałem się, że lisp ma pewne funkcje (takie jak makra), których nie można znaleźć nigdzie indziej
  • Przeważnie pracuję sam lub z 1-2 innymi programistami, ale znalezienie kogoś z wiedzą sepleniącą może być trudne

Więc co o tym myślisz?

Adam Arold
źródło
Jak duża jest społeczność Python w porównaniu do PHP? Zakładam, że znalezienie programisty Python może być trudne, w porównaniu do znalezienia programisty PHP, więc wybieram między nimi tylko opcje, jeśli projekt jest eksperymentalny.
Alex,
Naprawdę nie lubię PHP, więc nie jest to dla mnie opcja. Ponieważ jestem moim jedynym szefem, nikt nie zmusza mnie do używania czegoś, czego nie lubię. :)
Adam Arold,
2
Społeczność deweloperska @Vash Python może nie być tak duża jak PHP, ale wciąż jest bardzo duża. Co więcej, uważam, że dokumentacja online Pythona jest znacznie lepsza niż PHP.
kwantowo
Myślę, że to prawda.
Adam Arold,
2
Nie wierzę, że nikt jeszcze nie wspomniał o Clojure!
Chiron,

Odpowiedzi:

7

Pochodzisz z języka Java, więc dlaczego nie sprawdzić języka programowania Clojure?
Jest to nowoczesny dialekt Lisp, który żyje w JVM, więc masz dostęp do wielu plików JAR.

Chociaż nie znajdziesz dopracowanych i gotowych do produkcji frameworków internetowych, takich jak Django i Rails we wszechświecie Clojure (przynajmniej teraz), ale programiści używają frameworków internetowych Noir i Compojure.
Możesz także wdrożyć aplikacje internetowe Clojure na platformie Heroku.

Clojure jest bardzo satysfakcjonujący, ale krzywa uczenia się jest naprawdę stroma. Czy jesteś gotowy na naukę programowania funkcjonalnego (zakładając, że nie znasz)? żyć poza światem OOP?

Python jest bezpieczną stroną: jest dojrzały, ma mnóstwo książek, wiele frameworków internetowych, ogromną pulę wiedzy i jest łatwy do nauczenia.

Więc decyzja jest naprawdę twoja.

Chiron
źródło
1
Ostatnio sprawdziłem Clojure i myślę, że to najbardziej odpowiada moim potrzebom! Dzięki za radę!
Adam Arold,
7

Lisp to język, który słyszysz, stojąc blisko i słuchając głosów dochodzących z wież z kości słoniowej. Inne języki, takie jak PHP, mogą nie być tak eleganckie lub potężne, ale są jak wspólny język, łatwy i wybaczający.

Chociaż Lisp wpłynął na wiele języków, nigdy nie wszedł do głównego nurtu. Dlaczego? Ponieważ wielu programistów nie rozumiało pojęć języka, wydawało im się to raczej niejasne. Lisp jest trudny do zrozumienia dla ogromnej rzeszy programistów. Czy widziałeś kiedyś opis pracy wymagający Lisp jako języka programowania? Nie mam "Dlaczego pytasz? Ponieważ dla wielu osób jest to trudne do utrzymania i czytania. W Lisp znacznie częściej nie można od razu powiedzieć, co robi wyrażenie, po prostu na nie patrząc. Brakuje mu pewnego rodzaju prostoty, dlatego nigdy nie stał się wspólnym językiem.

Niemniej jednak Lisp miał wpływ na wiele języków. Polecam naukę tego w celach akademickich. Poszerza twoje granice mentalne, więc często możesz myśleć o problemach z innego punktu widzenia. Jednak nie zalecałbym używania go do aplikacji internetowych, chyba że przeprowadzasz studium wykonalności dla uniwersytetu. Brakuje wsparcia w narzędziach i bibliotekach w porównaniu do innych opcji. Jeśli chcesz zdobyć praktyczne umiejętności, które w końcu przyniosą trochę pieniędzy i mogą być zaprezentowane na Twoim CV, to zdecydowanie wybierz Python. Ty również skorzystasz z Lisp, ale jest on mniej praktyczny i ma bardziej akademicki charakter, chociaż ogólny styl programowania może z niego skorzystać.

Ponadto w dzisiejszych czasach istnieje renesans języków funkcjonalnych. Możesz również zajrzeć do F # dla .NET lub Scali na JVM, jeśli chcesz poznać kilka funkcjonalnych koncepcji.

Więc dokonaj wyboru. Gdyby oba były prawdziwymi językami, których z nich wolisz się nauczyć: łacina / starożytna greka lub francuski / niemiecki / włoski / hiszpański / chiński / arabski?

Sokół
źródło
Widziałem pracę reklamującą seplenienie w okolicach Chicago - nie tylko to, zatrudniliby cię bez doświadczenia i przeszkolili. Tak bardzo chciałem tego koncertu, ale dojazdy zabiłyby mnie. Przyznam jednak, że myślę, że to prawie jedyna reklama, jaką widziałem od wielu lat.
Bryan Oakley,
Ok, co zrobię: nauczę się także LISP i Pythona, ale użyję Pythona, ponieważ z powodów wymienionych przez ciebie i innych. Dziękuję za wyjaśnienie.
Adam Arold
3

Biorąc pod uwagę wybór pomiędzy wspólnym seplenieniem a pytonem, najlepszą pragmatyczną radą, jaką mogę udzielić, jest nauka pytona . Podczas gdy technolog we mnie uważa, że ​​każdy, kto programuje, powinien nauczyć się seplenienia, nie sądzę, że nauka tego pomoże ci „przyspieszyć [twoją] pracę”.

Jeśli nauczysz się seplenia, wierzę, że na dłuższą metę uczyni cię lepszym programistą. Jednak nauka seplenienia z powodów, które podasz, nie zbliży cię do twoich bezpośrednich celów IMO. Jeśli chcesz praktyczne, pragmatyczne rozwiązanie, naucz się języka Python. Po prostu nie ma wystarczających narzędzi i możliwości, aby użyć seplenienia, aby pomóc ci w codziennych zadaniach, chyba że codzienne zadania wymagają dostosowania emacsa.

Z drugiej strony, jeśli masz czas na naukę i naukę, i jesteś gotów znieść konsekwencje swojego wyboru (brak narzędzi, trudniej znaleźć współpracowników, którzy dostają seplenienie itp.), Idź z seplenieniem. To naprawdę wspaniały język.

Bryan Oakley
źródło
3

Polecam korzystanie z Lisp, jeśli jesteś osobą zmotywowaną, która chętnie pracuje nad własnymi bibliotekami kodu przez długi czas, lubi przekraczać granice swojego języka i nie przeszkadza od czasu do czasu problemy z konfiguracją. Jeśli jesteś samozatrudniony, prawdopodobnie zwiększy wydajność w dłuższej perspektywie ze względu na jego funkcje makro.

Python nie jest tak elastyczny, szybki ani tak potężny. W porównaniu do wielu innych języków nauka jest prawie banalna. W rzeczywistości jest bardzo obleśny. Ma szerokie poparcie, jest modnym językiem du Jour i ma mnóstwo bibliotek. Prawdopodobnie jest trochę lepiej, jeśli musisz pracować z ludźmi, którzy narzekają na naukę nowych języków.

Gdybym sprawdzał pod kątem zatrudnienia kogoś, kto był dobry w Lisp, w porównaniu do kogoś, kto był dobry w Pythonie, od razu założyłbym, że osoba Lisp była lepszym programistą i informatykiem niż osoba Python (wszystkie inne rzeczy są równe).

Jestem okropnie stronniczy, jestem pewien.

Paul Nathan
źródło
1
Zależy czy nie rozumiem o co ci chodzi!
Adam Arold,
2

Jeśli chcesz podkreślić, o czym mówił Paul Graham, opowiadałbym się za Lispem. Różnica w podejściu i sposobie myślenia, jaką popiera rodzina języków Lisp, ma o wiele większy potencjał, by wpłynąć na ciebie jako programistę, z powodu zachęty do odmiennego myślenia. I chociaż sam tego nie zrobiłem, wygląda na to, że tworzenie stron internetowych w Lisp jest dość dobrze obsługiwane: zobacz to pytanie w SO.

Python jest świetnym językiem i wcale go nie powalę. Istnieje wiele dobrych frameworków i narzędzi dla Pythona i łatwiej będzie znaleźć osoby, które już ją znają, kiedy zajdzie taka potrzeba.

Ostatecznie, ze względu na obecne środowisko, wybór Lisp wydaje się zawsze sprowadzać do pytania „Czy chcesz korzystać z tego, czego chcesz, czy chcesz korzystać z tego, co przemysł już używa?” Jaka jest twoja odpowiedź na to pytanie?

przedpola
źródło
2

Jeśli nie masz presji czasu, użyj Lisp. Nauka Lisp zmieni sposób, w jaki patrzysz na Python (i każdy inny znany Ci język), ale nauka Python nie zmieni sposobu, w jaki patrzysz na Lisp (jeśli go znasz). Lisp to więcej niż nowe narzędzie w przyborniku. To nowy sposób myślenia.

W tym momencie spójrz na Factor lub inny język konkatenacyjny . Języki konkatenatywne są niesamowite, ponieważ uczą cię, jak myśleć w kombinatorach . Nauka języka konkatenatywnego zmieni sposób, w jaki postrzegasz wszystkie inne języki.

Na koniec ćwicz swój prawy mózg. Formalizm języków programowania zmusza nas do nadmiernego wykorzystywania lewego mózgu do rozwiązywania problemów. Aktywuj prawy mózg, aby uzyskać dostęp do kolejnej zmiany paradygmatu.

Scant Roger
źródło
0

Lisp to tylko narzędzie, tak jak każdy inny język. Z pewnością ma przydatne funkcje. Jednocześnie możliwe jest uzyskanie tego samego wyniku w prawie każdym innym języku, może to zająć więcej czasu i kodu. Główny problem z Lisp polega na tym, że MUSISZ dostać przynajmniej hosting VPS, ponieważ nie ma hosta współdzielonego (o którym wiem), który obsługuje dowolną różnorodność Lisp na ich platformie.

Chciałbym zasugerować, że skoro jesteś programistą Java, spójrz na Groovy (a nawet Scalę). Umożliwiają korzystanie z bibliotek Java i interfejsów API oraz zapewniają wzrost wydajności.

Jetti
źródło
VPS nie stanowi problemu, ponieważ moje pomysły również nie będą działać z hostingiem współdzielonym.
Adam Arold,
0

Nie znam tony o Lisp poza jej początkami. Wiem o Pythonie:

5 minut po wylądowaniu pierwszego latającego talerza społeczność Python przygotuje coś do połączenia z systemami I / O.

Ponadto, pochodząc głównie z JavaScript, znalazłem w Pythonie bardzo naturalne dopasowanie. Być może odwrotność może być prawdziwa.

Ponadto Django jest w zasadzie strukturą do naśladowania w dzisiejszych czasach.

Erik Reppen
źródło