Auswahl zwischen CL und Python für die Webentwicklung

13

Ich komme aus Java und nachdem ich diesen kleinen Aufsatz von Paul Graham gelesen hatte, fragte ich mich, ob ich mir eine neue Sprache, Common Lisp, zulegen sollte, um meine Arbeit zu beschleunigen (ich bin ein Webentwickler).

Ich schreibe zurzeit Haustierprojekte, habe aber einige Geschäftspläne für die Zukunft. Paulus spricht in seinem Aufsatz von LISP als "Geheimwaffe". Ich weiß nicht, ob diese Aussage nach 10 Jahren zutrifft, aber ich habe meine Zehen in ein nettes CL-Tutorial getaucht und es sieht so aus, als wäre LISP für die Webentwicklung überlegen.

Paul erwähnt Python auch als eine gute Wahl, die ich eigentlich kenne. Meine Frage ist: Welches soll ich für meine zukünftigen Webprojekte auswählen?

Woran ich dachte:

  • Ich werde keine Desktop-Anwendungen entwickeln, damit ich die Sprache auswählen kann, die ich bevorzuge.
  • Python scheint eine sehr große Community zu haben, daher gibt es im Vergleich zu Lisp mehr Bibliotheken / Frameworks
  • Ich fand heraus, dass Lisp einige Funktionen (wie Makros) hat, die nirgendwo anders zu finden sind
  • Ich arbeite meist alleine oder mit 1-2 anderen Programmierern, aber es kann schwierig sein, jemanden mit Lisp-Kenntnissen zu finden

Also was denkst du?

Adam Arold
quelle
Wie groß ist die Python-Community im Vergleich zu PHP? Ich gehe davon aus, dass die Suche nach einem Python-Entwickler im Vergleich zur Suche nach einem PHP-Entwickler ebenfalls schwierig sein kann. Daher habe ich in der Regel nur dann eine Auswahl zwischen diesen Optionen getroffen, wenn das Projekt experimentell ist.
Alex
Ich mag PHP nicht wirklich, daher ist dies für mich keine Option. Da ich mein einziger Chef bin, zwingt mich niemand, etwas zu benutzen, das ich nicht mag. :)
Adam Arold
2
Die Entwickler-Community von @Vash Python ist vielleicht nicht so groß wie die von PHP, aber immer noch sehr groß. Außerdem finde ich, dass Pythons Online-Dokumentation PHP weit überlegen ist.
Quanticle
Das ist wahr, denke ich.
Adam Arold
2
Ich glaube nicht, dass noch niemand Clojure erwähnt!
Chiron

Antworten:

7

Sie haben einen Java-Hintergrund. Warum sollten Sie nicht die Programmiersprache Clojure überprüfen?
Es ist ein moderner Lisp-Dialekt, der auf der JVM basiert, sodass Sie Zugriff auf Tonnen von JARs haben.

Sie werden im Clojure-Universum (zumindest im Moment) keine polierten und produktionsfertigen Web-Frameworks wie Django und Rails finden, aber Programmierer verwenden die Web-Frameworks Noir und Compojure.
Sie können Ihre Clojure-Webanwendungen auch auf der Heroku-Plattform bereitstellen.

Clojure ist sehr lohnend, aber die Lernkurve ist sehr steil. Sind Sie bereit, funktionale Programmierung zu lernen (vorausgesetzt, Sie sind nicht vertraut)? außerhalb der OOP-Welt zu leben?

Python ist die sichere Seite: Es ist ausgereift, mit vielen Büchern, vielen Web-Frameworks, einem riesigen Wissenspool und einfach zu erlernen.

Die Entscheidung liegt also ganz bei Ihnen.

Chiron
quelle
1
Ich habe kürzlich Clojure ausprobiert und denke, dass es das ist, was meinen Bedürfnissen am meisten entspricht! Danke für den Hinweis!
Adam Arold
7

Lisp ist die Sprache, die Sie hören, wenn Sie in der Nähe stehen und den Stimmen aus den Elfenbeintürmen lauschen. Andere Sprachen wie PHP sind vielleicht nicht so elegant oder mächtig, aber sie sind wie eine gemeinsame Sprache, einfach und nachsichtig.

Während Lisp viele Sprachen beeinflusst hat, hat es es nie zum Mainstream geschafft. Warum? Da viele Entwickler die Konzepte der Sprache nicht verstanden, erschien es ihnen eher undurchsichtig. Lisp ist für die Masse der Entwickler schwer zu verstehen. Haben Sie jemals eine Stellenbeschreibung gesehen, für die Lisp als Programmiersprache benötigt wird? Habe ich nicht "Warum fragst du? Weil es für viele Menschen schwer zu pflegen und zu lesen ist. In Lisp kann man viel häufiger nicht sofort erkennen, was ein Ausdruck tut, wenn man ihn einfach ansieht. Es fehlt eine gewisse Einfachheit, deshalb ist es nie zur Umgangssprache geworden.

Trotzdem hat Lisp viele Sprachen beeinflusst. Ich empfehle es für akademische Zwecke zu lernen. Es erweitert Ihre mentalen Grenzen, sodass Sie Probleme häufig aus einem anderen Blickwinkel betrachten können. Ich würde es jedoch nicht für Webanwendungen empfehlen, es sei denn, Sie führen eine Machbarkeitsstudie für eine Universität durch. Es fehlt die Unterstützung in Tools und Bibliotheken im Vergleich zu den anderen Optionen. Wenn Sie praktische Fähigkeiten erwerben möchten, die irgendwann etwas Geld einbringen und in Ihrem Lebenslauf präsentiert werden können, wählen Sie auf jeden Fall Python. Sie werden auch von Lisp profitieren, aber es ist weniger praktisch und akademischer Natur, obwohl Ihr gesamter Programmierstil davon profitieren könnte.

Heutzutage gibt es auch eine Renaissance der funktionalen Sprachen. Sie können sich auch mit F # für .NET oder Scala in der JVM befassen, wenn Sie einige Funktionskonzepte erlernen möchten.

Treffen Sie also Ihre Wahl. Wenn beide echte Sprachen wären, welche von diesen würdest du lieber lernen: Latein / Altgriechisch oder Französisch / Deutsch / Italienisch / Spanisch / Chinesisch / Arabisch?

Falke
quelle
Ich habe in der Gegend von Chicago einen Werbespot gesehen - nicht nur das, sie würden Sie ohne Erfahrung einstellen und Sie ausbilden. Ich wollte diesen Auftritt so sehr, aber der Weg zur Arbeit hätte mich umgebracht. Ich gebe jedoch zu, dass dies fast die einzige Anzeige ist, die ich seit vielen Jahren gesehen habe.
Bryan Oakley
Ok, was ich tun werde: Ich werde auch LISP und Python lernen, aber ich werde Python verwenden, aus den oben genannten Gründen. Danke für die Klarstellung.
Adam Arold
3

Der beste pragmatische Ratschlag, den ich geben kann, ist , Python zu lernen, wenn ich die Wahl zwischen gewöhnlichem Lisp und Python habe . Während der Technologe in mir meint, dass jeder, der Programme lernt, lispeln sollte, denke ich nicht, dass es Ihnen hilft, "Ihre Arbeit zu beschleunigen".

Wenn Sie lispeln lernen, werden Sie auf lange Sicht ein besserer Programmierer. Wenn Sie jedoch aus den von Ihnen angegebenen Gründen lispeln, werden Sie Ihren unmittelbaren Zielen IMO nicht näher kommen. Wenn Sie eine praktische, pragmatische Lösung suchen, lernen Sie Python. Es gibt einfach nicht genug Tools oder Möglichkeiten, um lisp zu verwenden, um Sie bei Ihren täglichen Aufgaben zu unterstützen, es sei denn, Sie müssen bei Ihren täglichen Aufgaben Emacs anpassen.

Auf der anderen Seite, wenn Sie Zeit zum Lernen und Lernen haben und bereit sind, die Folgen Ihrer Wahl in Kauf zu nehmen (ein Mangel an Werkzeugen, schwieriger zu findende Mitarbeiter, die lispeln usw.), sollten Sie lispeln. Es ist wirklich eine tolle Sprache.

Bryan Oakley
quelle
3

Ich würde die Verwendung von Lisp empfehlen, wenn Sie eine selbst motivierte Person sind, die über einen langen Zeitraum hinweg in der Lage ist, Ihre eigenen Codebibliotheken zu bearbeiten, gerne die Grenzen Ihrer Sprache auszuloten und gelegentlich Probleme bei der Konfiguration haben. Wenn Sie selbstständig sind, ist dies aufgrund seiner Makrofunktionen auf lange Sicht wahrscheinlich ein Produktivitätsschub.

Python ist nicht so flexibel, so schnell oder so leistungsfähig. Im Vergleich zu vielen anderen Sprachen ist es fast trivial zu lernen. Es ist in der Tat sehr blubby. Es hat breite Unterstützung, es ist die Modesprache du jour und es hat eine Menge Bibliotheken. Es ist wahrscheinlich ein bisschen besser, wenn Sie mit Leuten arbeiten müssen, die sich über das Erlernen neuer Sprachen beschweren.

Wenn ich jemanden einstellen würde, der gut in Lisp ist, im Vergleich zu jemandem, der gut in Python ist, würde ich sofort annehmen, dass die Lisp-Person ein besserer Programmierer und Informatiker ist als die Python-Person (alle anderen Dinge sind gleich).

Ich bin schrecklich voreingenommen, da bin ich mir sicher.

Paul Nathan
quelle
1
Voreingenommen oder nicht, ich verstehe deinen Standpunkt!
Adam Arold
2

Wenn Sie betonen möchten, wovon Paul Graham sprach, würde ich mich für Lisp aussprechen. Die unterschiedliche Herangehensweise und Denkweise der Lisp-Sprachfamilie hat ein weitaus größeres Potenzial, sich auf Sie als Programmierer insgesamt auszuwirken, da Sie dazu ermutigt werden, anders zu denken. Und obwohl ich es selbst noch nicht getan habe, sieht es so aus, als ob die Webentwicklung in Lisp ziemlich gut unterstützt wird: Schauen Sie sich diese Frage bei SO an.

Python ist eine großartige Sprache, und ich werde es überhaupt nicht klopfen. Es gibt viele gute Web-Frameworks und Tools für Python, und es wird einfacher sein, Leute zu finden, die bereits mit Python vertraut sind, wenn Sie dies benötigen.

Letztendlich scheint die Entscheidung für Lisp aufgrund des aktuellen Umfelds immer auf die Frage hinauszulaufen, ob Sie das verwenden möchten, was Sie möchten, oder ob Sie das verwenden möchten, was die Branche bereits verwendet. Was ist deine Antwort auf diese Frage?

asfallows
quelle
2

Wenn Sie keinen Zeitdruck haben, verwenden Sie Lisp. Das Erlernen von Lisp ändert die Art und Weise, wie Sie Python (und jede andere Sprache, die Sie kennen) sehen, aber das Erlernen von Python ändert nicht die Art und Weise, wie Sie Lisp sehen (wenn Sie es gewusst haben). Lisp ist mehr als ein neues Tool in der Toolbox. Es ist eine neue Art zu denken.

Werfen Sie währenddessen einen Blick auf Factor oder eine andere konkatenative Sprache . Konkatenative Sprachen sind großartig, um Ihnen das Denken in Kombinatoren beizubringen . Wenn Sie eine verkettete Sprache lernen, ändert sich die Art und Weise, wie Sie alle anderen Sprachen anzeigen.

Trainieren Sie schließlich Ihre rechte Gehirnhälfte. Der Formalismus der Programmiersprachen zwingt uns dazu, unsere linke Gehirnhälfte zur Problemlösung zu überbeanspruchen. Aktivieren Sie Ihre rechte Gehirnhälfte, um auf einen anderen Paradigmenwechsel zuzugreifen.

Scant Roger
quelle
0

Lisp ist nur ein Werkzeug, genau wie jede andere Sprache. Hat es nützliche Funktionen, sicher. Gleichzeitig ist es möglich, dasselbe Ergebnis mit nahezu jeder anderen Sprache zu erzielen. Dies kann jedoch mehr Zeit und Code in Anspruch nehmen. Das Hauptproblem bei Lisp ist, dass Sie zumindest VPS-Hosting benötigen, da es keinen (mir bekannten) gemeinsam genutzten Host gibt, der verschiedene Lisp-Versionen auf der Plattform unterstützt.

Eine Sache, die ich vorschlagen würde, ist, dass Sie als Java-Programmierer einen Blick auf Groovy (oder sogar Scala) werfen. Mit ihnen können Sie Ihre Java-Bibliotheken und APIs verwenden und die Produktivität steigern.

Jetti
quelle
VPS ist kein Problem, da meine Ideen auch mit Shared Hosting nicht funktionieren.
Adam Arold
0

Ich kenne keine andere Tonne von Lisp als seine Ursprünge. Was ich über Python weiß, ist Folgendes:

5 Minuten nach der Landung der ersten fliegenden Untertasse hat die Python-Community etwas für die Anbindung an ihre E / A-Systeme zusammengestellt.

Da ich hauptsächlich von JavaScript ausging, fand ich, dass Python sehr gut passt. Vielleicht ist das Gegenteil der Fall.

Auch Django ist heutzutage so ziemlich der Rahmen, den man nachahmen muss.

Erik Reppen
quelle