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?
web-development
python
lisp
Adam Arold
źródło
źródło
Odpowiedzi:
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.
źródło
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?
źródło
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.
źródło
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.
źródło
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?
źródło
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.
źródło
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.
źródło
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.
źródło