Suchen Sie eine neue Programmiersprache für die Webentwicklung? [geschlossen]

14

Ich frage mich, ob es weniger voreingenommene Ressourcen gibt, die einen guten Überblick über die Programmiersprachen und ihre beabsichtigten Ziele geben. Ich möchte eine neue Sprache lernen, aber der Besuch der Websites der einzelnen Sprachen funktioniert nicht. Jeder spricht darüber, wie großartig es ist, ohne die Schwächen oder spezifischen Ziele zu erwähnen .

Ruby ist eine dynamische Open-Source-Programmiersprache, deren Schwerpunkt auf Einfachheit und Produktivität liegt.

Python ist eine Programmiersprache, mit der Sie schneller arbeiten und Ihre Systeme effektiver integrieren können.

Vic Cherubini ist seit Jahren ein PHP-Entwickler und bringt es auf den Punkt:

Ich kannte PHP gut, hatte mein eigenes Framework und konnte schnell arbeiten, um etwas zum Laufen zu bringen.

Ich habe während der MVC-Revolution so programmiert. Als PHP-Entwickler bekam ich immer bessere Jobs (sprich: besseres Bezahlen, besserer Titel), aber als ich merkte, dass der Code, den ich in meiner Freizeit schrieb, großartig war und der Code, mit dem ich bei der Arbeit arbeitete, schrecklich war. Schlimmer als schrecklich. Scheußlich. OS Commerce Level schlecht. Nebenprojekte haben mich bei Verstand gehalten, weil der Code, mit dem ich bei der Arbeit gearbeitet habe, mich elend machte.

Aus diesem Grund ziehe ich mich für meine Nebenprojekte und neuen Programmierprojekte von PHP zurück. Ich habe mit PHP verbracht. Erschöpft, wenn Sie so wollen. Ich habe ein Niveau erreicht, in dem ich denke, dass ich mit dieser Sprache ganz oben bin, und wenn ich nicht bald zu einer neuen Sprache übergehe, bin ich vollständig mit dem Programmieren fertig und ich möchte das nicht.

Zu den von mir untersuchten Sprachen gehören JavaScript (für node.js), Ruby, Python und Erlang. Ich habe sogar an Scala oder C ++ gedacht.

Das Problem ist herauszufinden, welche für meine Bedürfnisse am besten geeignet sind.

Wo kann ich also den Hype überspringen und echte Informationen über den Reifegrad einer Plattform, die Größe der Community und die Stärken und Schwächen dieser Sprache erhalten? Wenn ich diese kenne, sollte es einfach sein, eine Sprache auszuwählen, um meine Webentwicklung fortzusetzen.

Aktualisieren

Ich möchte nur nicht 4 Monate später mit einer Sprache auskommen und finde, dass es scheiße ist, weil jeder Thread 4 MB Overhead hat, oder die maximale Anzahl gleichzeitiger Verbindungen 999 beträgt, es kein Paket gibt, das die "X" -Funktion ausführt, oder die Unterstützung ist Auslaufen für einen neuen Sprachzweig.

Xeoncross
quelle
14
Es ist schwer zu sagen, welche Ihren Anforderungen am besten entspricht, wenn Sie diese nicht angeben.
Vartec
3
Deshalb habe ich meine Bedürfnisse nicht definiert - meine persönlichen Bedürfnisse sind nebensächlich . Ich möchte wissen, wo ich suchen kann, um meine Anforderungen an eine bestimmte Programmiersprache anzupassen. Weil sich meine Bedürfnisse ändern können und ich wieder zurück muss.
Xeoncross
Es ist erwähnenswert, dass ein Programm auch mehr beinhaltet als nur die Ausführungsgeschwindigkeit . Die Entwicklungsgeschwindigkeit und die Art und Weise, wie Sie Ihre Anwendung (aufgrund der Sprache) erstellen müssen, spielen eine wichtige Rolle.
Xeoncross
4
Hier geht es weniger um Sprachen als vielmehr um die Reife und den Funktionsumfang der für sie verfügbaren Frameworks.
1
Ich schlage vor, Sie werfen einen Blick auf diesen ausgezeichneten Beitrag von Alex Martelli.
Phant0m

Antworten:

3

Ich wollte dies nicht als Antwort posten, aber Xeoncross hat mich darum gebeten.

(Anmerkung: Wenn jemand das Abschriftenproblem im kleinen Codebeispiel beheben könnte, wäre ich dankbar.)

Gepostet von Alex Martelli auf comp.lang.python : Was ist besser an Ruby als an Python? am 18. August 2003, 17:50 Uhr

Erik Max Francis schrieb:

"Brandon J. Van Every" schrieb:

Was ist besser an Ruby als Python? Ich bin mir sicher, dass es etwas gibt. Was ist es? Wäre es nicht viel sinnvoller, die Ruby-Leute danach zu fragen, als die Python-Leute?

Könnte oder könnte nicht, je nach den eigenen Zwecken - wenn jemand beispielsweise eine "soziologische Studie" über die Python-Community anstrebt, ist es wahrscheinlich, dass das Stellen von Fragen an diese Community mehr Aufschluss über Informationen gibt als an anderer Stelle :-). Persönlich habe ich gerne die Gelegenheit genutzt, Dave Thomas 'eintägigem Ruby-Tutorial bei OSCON zu folgen. Unterhalb einer dünnen Schicht von Syntaxunterschieden finde ich Ruby und Python erstaunlich ähnlich - wenn ich den minimalen Spannbaum unter fast allen Sprachen berechnen würde, wären Python und Ruby ziemlich sicher die ersten beiden Blätter, die zusammengeführt werden müssten ein Zwischenknoten :-).

Sicher, ich müde zu tun bekommen, in Ruby, der am Ende jeden Block das dumme „Endes“ eingeben ( und nicht nur unindenting) - aber dann ich komme zu vermeiden , dass die gleich dumm eingeben , : den Python am erfordert Start von Jeder Block, das ist also fast eine Wäsche :-). Andere Syntaxunterschiede wie @fooversus self.foooder die höhere Bedeutung von case in Ruby vs Python sind für mich genauso irrelevant.

Andere stützen ihre Programmiersprachenauswahl zweifellos auf solche Themen und führen die heißesten Debatten - aber für mich ist dies nur ein Beispiel für ein in Kraft gesetztes Parkinson-Gesetz (die Höhe der Debatten zu einem Thema ist umgekehrt proportional zu den Themen tatsächliche Bedeutung). Ein Syntaxunterschied, den ich für wichtig halte, und der für Python spricht - aber andere Leute werden zweifellos genau das Gegenteil meinen - ist, wie man eine Funktion aufruft, die keine Parameter akzeptiert. In Python (wie in C) wenden Sie zum Aufrufen einer Funktion immer den "Aufrufoperator" an - abschließende Klammern direkt nach dem aufgerufenen Objekt (in diesen abschließenden Klammern stehen die Argumente, die Sie beim Aufruf übergeben - if Wenn Sie keine Argumente übergeben, sind die Klammern leer. Damit bleibt die bloße Erwähnung eines Objekts, an dem kein Operator beteiligt ist, nur ein Verweis auf das Objekt - in jedem Kontext, ohne Sonderfälle, Ausnahmen, Ad-hoc-Regeln und dergleichen. In Ruby (wie in Pascal) übergeben Sie zum Aufrufen einer Funktion mit WITH-Argumenten die Argumente (normalerweise in Klammern, obwohl dies nicht immer der Fall ist) - ABER wenn die Funktion keine Argumente annimmt, wird sie implizit nur durch Erwähnung der Funktion aufgerufen. Dies mag die Erwartungen vieler Menschen erfüllen (zumindest derjenigen, deren einzige vorherige Erfahrung im Programmieren mit Pascal oder anderen Sprachen mit ähnlichen "impliziten Aufrufen" wie Visual Basic bestand) - aber für mich bedeutet es das Die bloße Erwähnung eines Objekts kann entweder einen Verweis auf das Objekt oder einen Aufruf an das Objekt bedeuten. Abhängig vom Typ des Objekts - und in den Fällen, in denen ich keinen Verweis auf das Objekt erhalten kann, indem ich es nur erwähne, muss ich explizit "gib mir einen Verweis darauf, nenne es NICHT!" verwenden. Operatoren, die sonst nicht benötigt werden. Meines Erachtens wirkt sich dies auf die "Erstklassigkeit" von Funktionen (oder Methoden oder anderen aufrufbaren Objekten) und die Möglichkeit des reibungslosen Austauschs von Objekten aus. Daher ist dieser spezifische Syntaxunterschied für mich ein schwerwiegender schwarzer Fleck gegenüber Ruby - aber ich verstehe, warum andere etwas anderes tun würden, obwohl ich ihnen kaum vehementer widersprechen könnte :-). Unterhalb der Syntax werden einige wichtige Unterschiede in der Elementarsemantik erläutert. Beispielsweise sind Zeichenfolgen in Ruby veränderbare Objekte (wie in C ++). Während in Python sie nicht veränderbar sind (wie in Java, oder ich glaube, C #). Auch hier können Leute, die in erster Linie nach dem urteilen, was sie bereits kennen, denken, dass dies ein Plus für Ruby ist (es sei denn, sie kennen sich mit Java oder C # aus :-). Ich denke, unveränderliche Strings sind eine exzellente Idee (und ich bin nicht überrascht, dass Java, wie ich finde, diese Idee, die bereits in Python war, neu erfunden hat), obwohl es mir nichts ausmacht, auch einen "veränderlichen String-Puffer" -Typ zu haben (und idealerweise eines mit einer besseren Benutzerfreundlichkeit als Javas eigene "String-Puffer"); und ich gebe dieses Urteil nicht wegen Vertrautheit - vor dem Studium von Java, abgesehen von funktionalen Programmiersprachen, wo Leute, die in erster Linie nach dem urteilen, was sie bereits kennen, denken vielleicht, dass dies ein Plus für Ruby ist (es sei denn, sie kennen sich mit Java oder C # aus, natürlich :-). Ich denke, unveränderliche Strings sind eine exzellente Idee (und ich bin nicht überrascht, dass Java, wie ich finde, diese Idee, die bereits in Python war, neu erfunden hat), obwohl es mir nichts ausmacht, auch einen "veränderlichen String-Puffer" -Typ zu haben (und idealerweise eines mit einer besseren Benutzerfreundlichkeit als Javas eigene "String-Puffer"); und ich gebe dieses Urteil nicht wegen Vertrautheit - vor dem Studium von Java, abgesehen von funktionalen Programmiersprachen, wo Leute, die in erster Linie nach dem urteilen, was sie bereits kennen, denken vielleicht, dass dies ein Plus für Ruby ist (es sei denn, sie kennen sich mit Java oder C # aus, natürlich :-). Ich denke, unveränderliche Strings sind eine exzellente Idee (und ich bin nicht überrascht, dass Java, wie ich finde, diese Idee, die bereits in Python war, neu erfunden hat), obwohl es mir nichts ausmacht, auch einen "veränderlichen String-Puffer" -Typ zu haben (und idealerweise eines mit einer besseren Benutzerfreundlichkeit als Javas eigene "String-Puffer"); und ich gebe dieses Urteil nicht wegen Vertrautheit - vor dem Studium von Java, abgesehen von funktionalen Programmiersprachen, wo Ich denke, unveränderliche Strings sind eine hervorragende Idee (und ich bin nicht überrascht, dass Java, wie ich finde, diese Idee, die bereits in Python enthalten war, neu erfunden hat), obwohl es mir nichts ausmacht, auch einen Typ "veränderlicher Stringpuffer" zu haben (und idealerweise eines mit einer besseren Benutzerfreundlichkeit als Javas eigene "String-Puffer"); und ich gebe dieses Urteil nicht wegen Vertrautheit - vor dem Studium von Java, abgesehen von funktionalen Programmiersprachen, wo Ich denke, unveränderliche Strings sind eine hervorragende Idee (und ich bin nicht überrascht, dass Java, wie ich finde, diese Idee, die bereits in Python enthalten war, neu erfunden hat), obwohl es mir nichts ausmacht, auch einen Typ "veränderlicher Stringpuffer" zu haben (und idealerweise eines mit einer besseren Benutzerfreundlichkeit als Javas eigene "String-Puffer"); und ich gebe dieses Urteil nicht wegen Vertrautheit - vor dem Studium von Java, abgesehen von funktionalen Programmiersprachen, woAlle Daten sind unveränderlich, alle Sprachen, die ich kannte, hatten veränderbare Zeichenfolgen - aber als ich die Idee der unveränderlichen Zeichenfolgen zum ersten Mal in Java sah (was ich gut lernte, bevor ich Python lernte), fand ich sie sofort hervorragend, sehr gut geeignet Die Referenzsemantik einer höheren Programmiersprache (im Gegensatz zur Wertesemantik, die am besten zu Sprachen passt, die näher an der Maschine und weiter von Anwendungen wie C entfernt sind) mit Strings als erstklassige, integrierte (und hübsche) entscheidend) Datentyp.

Ruby hat einige Vorteile in der Elementarsemantik - zum Beispiel das Entfernen von Pythons "Listen gegen Tupel", die eine äußerst subtile Unterscheidung darstellen. Aber meistens ist die Partitur (wie ich es halte, mit Einfachheit ein großes Plus und subtile, kluge Unterscheidungen ein bemerkenswertes Minus) gegen Ruby (z. B. mit geschlossenen und halboffenen Intervallen, mit den Notationen a..b und a .. .b [jeder will behaupten, dass es offensichtlich ist, was was ist? -)], ist albern - IMHO, natürlich!). Wiederum werden Leute, die eine Menge ähnlicher, aber subtil unterschiedlicher Dinge im Kern einer Sprache als PLUS und nicht als MINUS betrachten, diese natürlich "andersherum" zählen, als ich sie zähle :-).

Lassen Sie sich durch diese Vergleiche nicht in die Irre führen und denken Sie, dass die beiden Sprachen sehr gut sindanders wohlgemerkt. Sie sind nicht. Aber wenn ich gefragt werde, ob ich "capelli d'angelo" mit "spaghettini" vergleichen möchte, nachdem ich darauf hingewiesen habe, dass diese beiden Nudelsorten für niemanden unterscheidbar und in jedem Gericht, das Sie zubereiten möchten, austauschbar sind, hätte ich das unweigerlich mikroskopisch untersuchen, wie sich die Längen und Durchmesser unmerklich unterscheiden, wie sich die Enden der Litzen in einem Fall und nicht in dem anderen verjüngen und so weiter - um zu erklären, warum ich persönlich lieber Capelli d hätte 'angelo als Pasta in jeder Art von Brühe, würde aber Spaghettini als Pastasciutta bevorzugen, um mit geeigneten Saucen für so lange dünne Pastaformen (Olivenöl, gehackter Knoblauch, gehackte rote Paprika und fein gemahlene Sardellen, zum Beispiel - aber wenn Sie Knoblauch und Paprika in Scheiben schneiden, anstatt sie zu hacken, sollten Sie statt des dünneren Abklingens von Spaghettini den schärferen Körper von Spaghetti wählen. oder sogar - ich bin ein Ketzer ...! - leichte Minze ...] Blätter - im allerletzten Moment vor dem Servieren). Hoppla, tut mir leid, es zeigt, dass ich ins Ausland reise und seit einiger Zeit keine Pasta mehr habe. Aber die Analogie ist immer noch ziemlich gut! -) und wäre gut beraten, auf die Achoview zu verzichten und stattdessen etwas frisches Frühlingsbasilikum hinzuzufügen [oder sogar - ich bin ein Ketzer ...! - leichte Minze ...] Blätter - im allerletzten Moment vor dem Servieren). Hoppla, tut mir leid, es zeigt, dass ich ins Ausland reise und seit einiger Zeit keine Pasta mehr habe. Aber die Analogie ist immer noch ziemlich gut! -) und wäre gut beraten, auf die Achoview zu verzichten und stattdessen etwas frisches Frühlingsbasilikum hinzuzufügen [oder sogar - ich bin ein Ketzer ...! - leichte Minze ...] Blätter - im allerletzten Moment vor dem Servieren). Hoppla, tut mir leid, es zeigt, dass ich ins Ausland reise und seit einiger Zeit keine Pasta mehr habe. Aber die Analogie ist immer noch ziemlich gut! -)

Also, zurück zu Python und Ruby, kommen wir zu den zwei großen Dingen (in Bezug auf die eigentliche Sprache - das Verlassen der Bibliotheken und anderer wichtiger Hilfsmittel wie Tools und Umgebungen, das Einbetten / Erweitern jeder Sprache usw. usw.) es fürs Erste - sie würden sowieso nicht für alle IMPLEMENTIERUNGEN jeder Sprache gelten, zB Jython vs Classic Python sind zwei Implementierungen der Python-Sprache!):

  1. Rubys Iteratoren und Codeblöcke im Vergleich zu Pythons Iteratoren und Generatoren;

  2. Rubys GESAMT, ungezügelte "Dynamik", einschließlich der Fähigkeit, jede vorhandene Klasse, einschließlich aller eingebauten, "wieder zu öffnen" und ihr Verhalten zur Laufzeit zu ändern - im Gegensatz zu Pythons gewaltiger, aber     begrenzter Dynamik, die das Verhalten der vorhandenen nie ändert eingebaute Klassen und ihre Instanzen.

Persönlich halte ich 1 für eine Wäsche (die Unterschiede sind so tief, dass ich leicht sehen konnte, wie die Leute beide Ansätze hassen und den anderen verehren, aber auf MEINER persönlichen Skala gleichen sich die Vor- und Nachteile fast aus); und [2] ein entscheidendes Problem - eines, das Ruby viel besser zum "Basteln" geeignet macht, ABER Python eignet sich auch besser für den Einsatz in großen Produktionsanwendungen. In gewisser Weise ist es lustig, weil beide Sprachen so VIEL dynamischer sind als die meisten anderen, dass am Ende der entscheidende Unterschied zwischen ihnen und meinem POV davon abhängen sollte - dass Ruby in dieser Hinsicht "auf elf geht" (die Referenz) hier geht es natürlich um "Spinal Tap"). In RubyDAS KANN ICH TUN ! Das heißt, ich kann die eingebaute Zeichenfolgenklasse dynamisch ändern

a = "Hallo Welt" 
b = "Hallo Welt" 
wenn a == b 
    print "gleich! \ n" 
sonst 
    "anders! \ n" drucken 
Ende
 

WIRD "gleich" drucken. In Python gibt es KEINE Möglichkeit, das zu tun. Für die Zwecke der Metaprogrammierung, der Implementierung experimenteller Frameworks und dergleichen ist diese erstaunliche dynamische Fähigkeit von Ruby extrem reizvoll. ABER - wenn es um große Anwendungen geht, die von vielen Leuten entwickelt und von noch mehr gepflegt werden, einschließlich aller Arten von Bibliotheken aus verschiedenen Quellen, und die auf Client-Sites in Produktion gehen müssen ... nun, ich WILL nicht Eine Sprache, die so dynamisch ist, vielen Dank. Ich verabscheue die Idee, dass eine Bibliothek andere, nicht miteinander in Beziehung stehende Bibliotheken, die sich darauf verlassen, dass diese Zeichenfolgen unterschiedlich sind, unwissentlich aufbricht - das ist die Art von tief und tief verborgenem "Kanal" zwischen Codeteilen, die LOOK und SHOULD BE separate sind, die den Tod bedeuten umfangreiche Programmierung. Indem Sie ein Modul das Verhalten eines anderen "verdeckt" beeinflussen lassen,

Wenn ich Ruby für eine so große Anwendung verwenden müsste, würde ich versuchen, mich auf Einschränkungen des Codierungsstils, viele Tests (die immer dann wiederholt werden, wenn sich ALLES ändert - auch wenn etwas völlig unabhängig sein sollte ...) und dergleichen zu verlassen. um die Verwendung dieser Sprachfunktion zu verbieten. Aber es ist meiner Meinung nach noch besser, das Feature überhaupt nicht zu haben - genau wie Python selbst eine noch bessere Sprache für die Anwendungsprogrammierung wäre, wenn eine bestimmte Anzahl von eingebauten Funktionen "festgenagelt" werden könnte, also WUSSTE ich, dass ZB len("ciao")ist 4 (anstatt sich unterschwellig darum kümmern zu müssen, ob jemand die Namensbindung lenim __builtins__ Modul geändert hat ...). Ich hoffe, dass Python irgendwann seine eingebauten Funktionen "festnagelt".

Das Problem ist jedoch geringfügig, da das Neueinbinden von eingebauten Funktionen in Python eine ziemlich veraltete und auch seltene Praxis ist. In Ruby erscheint es mir als sehr wichtig - genau wie die zu mächtigen Makrofunktionen anderer Sprachen (wie zum Beispiel Dylan) meiner Meinung nach ähnliche Risiken bergen (ich hoffe, dass Python niemals ein so mächtiges Makrosystem bekommt, nein Ganz gleich, wie verlockend es ist, "die Leute ihre eigenen domänenspezifischen kleinen Sprachen definieren zu lassen, die in der Sprache selbst eingebettet sind" - dies würde meiner Meinung nach Pythons wundervollen Nutzen für die Anwendungsprogrammierung beeinträchtigen, indem dem potenziellen Bastler, der dies tut, ein "attraktives Ärgernis" geboten wird lauert im Herzen eines jeden Programmierers ...).

Alex

phant0m
quelle
Ich habe dies als Antwort zuerkannt, da es sich um einen großartigen, relativ unvoreingenommenen Überblick über Ruby und Python als Ganzes handelt. Erklären, wie die Sprachen funktionieren und nicht .
Xeoncross
27

Viel Glück

Keine der angegebenen Beispielbeschreibungen ist objektiv oder überprüfbar. Sie sind alle Hype und Meinung.

... Einfachheit und Produktivität ... schneller ... effektiver.

Versuch es

Nehmen Sie ein kleines Beispielprojekt der Art, die Sie wahrscheinlich machen, und probieren Sie es mit allen Sprachen aus, die Sie interessieren. Dann posten Sie Ihre objektive Bewertung, und wir werden alle wissen.

Steven A. Lowe
quelle
2
Keine schlechte Idee, würde aber in der realen Welt nicht funktionieren. Ohne die Zeit dafür zu verwenden, jede Sprache vollständig zu verstehen, könnte ich niemals das vollständige Designmusterproblem und die Vorteile, die jedes System bieten könnte, vorhersehen. Ich bin sicher, dass es Monate dauern würde, in jeder Sprache zu arbeiten, um ein umfassendes Verständnis der Sprache selbst zu erreichen. Ich würde lieber von Reifenexperten hören, als monatelang jedes Rad zu überarbeiten, um herauszufinden, warum sie es so gebaut haben. Nachdem ich einige gute Kandidaten gefunden habe, werde ich dies auf jeden Fall tun.
Xeoncross
1
@Xeoncross: Mit jeder Sprache, die Sie ausprobieren, steigern Sie Ihre Erfahrung und können sie in anderen Sprachen einsetzen. 4 Monate zum Eintauchen in eine Sprache sind nie verloren; und wenn die Sprache wirklich Mist ist, brauchst du weniger als zwei Wochen, um es herauszufinden.
tdammers
Das ist wahr, es sollte nur ein paar Wochen dauern, um etwas aufzubauen, und ich würde von der Erfahrung profitieren, da Sprachen im Allgemeinen anderen Sprachen folgen.
Xeoncross
3
Ja, Sie sollten wahrscheinlich alle diese Sprachen ausprobieren, um eine gute Übereinstimmung zu finden. Das Problem ist jedoch, dass Sie eine neue Sprache nicht so verwenden, wie Sie es ursprünglich sollten. Am Ende machen Sie dasselbe, was Sie mit der Sprache gemacht haben, die Sie bereits beherrschen, nur mit einer anderen Syntax. Es dauert eine ganze Weile, um die Feinheiten jeder Sprache und die tatsächlichen Vorteile herauszufinden.
radix07
3
Es würde mich wundern, wenn es einen signifikanten Unterschied zwischen modernen Sprachen für allgemeine Zwecke geben würde. Dort habe ich es laut gesagt. Und in Kursivschrift . Lasset die Flammen beginnen!
Steven A. Lowe
8

Ich denke, ein Teil des Problems ist, dass jeder, der genug weiß, um eine oder mehrere Sprachen sinnvoll zu kommentieren , eine Tendenz hat. In fast vier Jahrzehnten der Programmierung habe ich in mehr Sprachen gearbeitet, als ich zählen kann. Ich kann Ihnen Meinungen (von denen einige datiert sind) zu einigen dieser Sprachen geben, aber keine dieser Meinungen wird unvoreingenommen sein.

Ich gehe davon aus, die richtige Sprache für den Job zu verwenden. Sie fragen speziell nach der Webentwicklung , aber das ist immer noch eine ziemlich breite Kategorie - sozusagen, dass Sie sich für Fotografie interessieren. Mikro? Astro? etc. Obwohl ich der Meinung bin, dass PHP keine emotional erfüllende Sprache für die Arbeit ist, ist es für viele Kunden die richtige Sprache, die auf einer Reihe von Faktoren basiert und / oder von einem Bus angefahren werden.

Vielleicht sollten Sie sich also die Kundentypen ansehen, die an Projekten interessiert sind, die sich für etwas anderes eignen, und dann daran arbeiten, sich für sie interessant zu machen.

Peter Rowell
quelle
Nun, da ich so gut in PHP bin, werde ich weiter daran arbeiten, da ich immer noch meinen Lebensunterhalt verdienen kann. Ich habe hauptsächlich über eine neue Sprache für meine eigenen Projekte nachgedacht . Etwas, das dazu beiträgt, meinem Leben wieder etwas Geschmack zu verleihen. Ich arbeite in nahezu allen Bereichen der Webentwicklung, die Sie sich vorstellen können, NLP, Textanalyse, CMS, APIs, Speicherung usw. Außerdem ist jemand mit Erfahrung in vielen Sprachen weitaus weniger geneigt als Menschen mit nur einem Designprozess.
Xeoncross
Ah. Dann werde ich meine Standardantwort auf Fragen vom Typ "Beste Sprache" geben: Python. Wenn ich das "signifikante Leerzeichen" ignoriere (was möglich ist), ist es für mich fast eine perfekte Sprache. Darüber hinaus gibt es eine erstaunliche Anzahl qualitativ hochwertiger Bibliotheken mit Python-APIs. ZB das NLTK, Natural Language Toolkit ( nltk.org ).
Peter Rowell
Ah, aber was macht Python besser? Die meisten Sprachen haben alle die gleichen Toolkits - es ist das Sprachdesign, das Dinge wie Threading, Parallelität, VM-Anforderungen, Kompilieren / Interpretieren, Persistenz usw.
einführt
Es macht einfach Spaß, Python zu programmieren. Das macht es für mich "besser". Es ist einfach genug, dass Sie keine hupende große IDE benötigen, um darin zu programmieren. Es hat aber auch viele interessante Funktionen wie Objekte, funktionale Programmierfähigkeiten, viele vorhandene Bibliotheken / Frameworks / Tools und eine blühende und enthusiastische Community mit vielen offenen / kostenlosen Dokumentationen, um Sie zum Laufen zu bringen.
John Gaines Jr.
2
Wahr. Die einfachste Erklärung ist, dass Python so ähnlich funktioniert wie mein Gehirn, und das macht mich nur produktiver. Ich frage mich selten: "Wie soll ich das jetzt in Python machen?" Obwohl die GIL (Global Interpreter Lock) ein kleines Problem darstellt, betrifft sie mich nicht so sehr, da ich mich häufiger mit Multiprozess- Situationen befasse (insbesondere mit mehrstufigen NL-Verarbeitungspipelines) als mit Multitasking . Ich mag auch die Vielzahl der Schnittstellenoptionen für den Zugriff auf neue externe Bibliotheken: ctypes, Boost, etc.
Peter Rowell
7

Python

Der universellste und allgemeinste Zweck von allen, aber auch im Falle der Web-Programmierung, bietet eine größere Auswahl an Produkten. Die standardisierte WSGI-Schnittstelle garantiert eine hervorragende Interoperabilität zwischen Framework und Servern. Einige bemerkenswerte Python-Webprodukte:

  • Django - vollwertiges, ausgereiftes High-Level-Framework mit fortschrittlichem ORM, Template-System, Formularverarbeitung usw.
  • Twisted - Framework für ereignisgesteuerte (asynchrone) Netzwerkprogrammierung. Es kann für Chats, Socket-Server und Webdienste verwendet werden.
  • Tornado - auch ereignisgesteuertes Framework, dieses wurde jedoch für asynchrone Webdienste entwickelt.

Rubin

Ruby ist auch eine ziemlich universelle Sprache. Das mit Abstand bemerkenswerteste Produkt ist Ruby on Rails. Das Design war Inspiration für viele (einschließlich Django, wie oben erwähnt).

JavaScript

Derzeit ist node.js die einzige serverseitige Option für JS. Es ist sehr ähnlich zu Tornado und Twisted (von denen es inspiriert wurde). Es fehlt jedoch immer noch ein vollwertiges Framework, das Django oder RoR ähnelt.

Scala

Da es sich um eine funktionale Sprache handelt, eignet es sich hervorragend für massiv paralleles Computing. Was die allgemeine Webprogrammierung betrifft, gibt es das von RoR inspirierte Lift - Web Framework, das beispielsweise von FourSquare verwendet wird.

vartec
quelle
Es ist erwähnenswert, dass Dinge wie blockierungsfreie Antworten, Speichernutzung, Parallelität und andere Faktoren auf dem Markt für eine neue Sprache, die eine Webanwendung antreibt, immens sind.
Xeoncross
+1 für Django. Es hat mich umgehauen, als ich es gelernt habe ... oder ich war benommen, weil ich es und Python gleichzeitig gelernt habe. So oder so, eine großartige Technologie, die ich gerne noch einmal in meiner schwer fassbaren "Freizeit" betrachten würde.
zourtney
1
"... es fehlt immer noch ein vollwertiges Framework" Check out Express for Node - expressjs.com
T. Stone
@T: Ja, ich habe Express angeschaut. Eine der Stärken von Django und RoR ist ORM. Express scheint es nicht zu haben.
Vartec
3

In meinem letzten Webprojekt habe ich mit PHP angefangen, weil ich es zuvor für ein Webprojekt verwendet hatte (Schnellstart), aber ich hatte viele Probleme mit der Sprache, zB schlechte UTF-8-Unterstützung und dynamisches Tippen. Ich habe auch etwas Java-Hintergrund und ich genieße die statischen Typisierungs- und guten Refactoring-Tools. Java hat auch eine gute Leistung im Vergleich zu PHP. Mir gefällt aber auch die Ausdruckskraft der funktionalen Programmierung.

Scala und Play Framework

Aufgrund der obigen Erfahrung gefällt mir die Scala-Programmiersprache sehr gut, sie ist statisch geschrieben, unterstützt sowohl objektorientierte als auch funktionale Programmierung und bietet im Vergleich zu anderen für die Webentwicklung verwendeten Sprachen eine gute Leistung. Aber die Web-Frameworks für Java und Servlets haben mir nicht gefallen, und ich habe Play Framework gefunden , das sowohl Scala als auch Java unterstützt und einen sehr schnellen Entwicklungszyklus aufweist - speichern Sie die Datei und aktualisieren Sie Ihre Webseite. Ich war im letzten Monat sehr zufrieden mit Scala & Play Framework. Aber die Scala-Unterstützung in Play Framework ist noch nicht sehr ausgereift und auch die Werkzeugunterstützung nicht.

Kurz gesagt, ich empfehle Scala als Programmiersprache und Play Framework als Web Framework.

Jonas
quelle
Das Spiel sieht cool aus, hatte aber keine Chance, es wirklich ( wirklich ) zu testen. Ich komme aus einem ähnlichen PHP-Hintergrund und fand, dass Lift ziemlich einfach zu verstehen ist. Es scheint auch etwas ausgereifter zu sein als Play, aber ich bin zu neu in Scala, um schlüssig zu sein.
Yannis
3

Eigentlich betrachten Sie wahrscheinlich drei Arten von Ressourcen:

  • Diejenige, die die Grundlagen der Sprache erklärt und warum Sie sie verwenden möchten,
  • Derjenige, der mehrere Sprachen vergleicht.
  • Derjenige, der einen Aspekt einer Sprache kritisiert.

Beide Ressourcen wären voreingenommen.

  • Wenn Sie etwas über eine Sprache erklären, versuchen Sie meistens, den Leser davon zu überzeugen, sie zu verwenden. Man würde also selten sagen, dass die Sprache scheiße ist.
  • Wenn Sie mehrere Sprachen vergleichen, haben Sie immer eine persönliche Präferenz für eine von ihnen.
  • Wenn Sie etwas kritisieren, ist es kaum möglich, neutral zu sein.

Sie haben vielleicht eine Chance, einen neutralen Vergleich zu finden, aber es ist sehr schwierig, einen zu schreiben. Persönlich wäre ich niemals in der Lage, einen Vergleich zwischen einer echten Sprache und PHP zu schreiben, ohne PHP ständig zu kritisieren. Und ich bin mir ziemlich sicher, dass ich nicht allein bin, weil ich nicht neutral genug sein kann.


Wenn Sie einen Überblick über verschiedene Sprachen haben möchten, müssen Sie diese selbst lernen und viel lesen . Mit Lernen meine ich, die Grundlagen der Sprache zu kennen, aber in der Lage zu sein, Ihre eigene Meinung zu haben . Nicht weil Sie ein Ruby-Handbuch gelesen haben, können Sie erklären, was in dieser Sprache gut und was schlecht ist.

Dies bedeutet, dass Sie entweder Zeit (Monate oder sogar Jahre) mit dem Üben verbringen müssen. Oder du kannst viel lesen. Aber versuchen Sie, widersprüchliche Dinge zu lesen . Wenn jemand schreibt, dass er PHP hasst und PHP eine der schlimmsten Sprachen überhaupt ist, insbesondere im Vergleich zu echten Sprachen wie Ruby, C # oder Java, versuchen Sie auch, eine Person zu finden, die sagt, dass PHP wunderbar ist und einfacher zu bedienen ist als C #, viel schneller als Java und viel ... (ich weiß wirklich nicht was) als Ruby.

Denken Sie daran: Wenn Sie eine Sprache bereits gut beherrschen, werden Sie am Anfang sehr kritisch sein, wenn Sie eine andere Sprache lernen. Es ist wie bei Linux-Benutzern, die Windows hassen, und bei Windows-Benutzern, die Linux hassen: Tatsächlich ist keines der Betriebssysteme besser; Ein Linux-Benutzer kann nur nicht mit Windows umgehen und umgekehrt. Erst wenn Sie genug Erfahrung in beiden Bereichen gesammelt haben, können Sie richtig entscheiden, welches für Sie besser ist.


Letztes, oft vergessenes: Es ist auch sehr wichtig, die "Umgebung" einer Sprache beurteilen zu können:

  • Wie gut ist das Framework (oder die am häufigsten verwendeten Frameworks)?
  • Ist es einfach, einen Hosting-Service zu finden? Schätzen Sie die IDE?
  • Gibt es viele gut geschriebene Bibliotheken von Drittanbietern?
  • Besteht die Community aus hochprofessionellen Entwicklern oder hauptsächlich aus Anfängern, die weder etwas über das Programmieren im Allgemeinen noch über die Sprache selbst wissen?
  • Ist die Dokumentation ausführlich genug und leicht zu suchen und zu verstehen?
  • Werden die Sprache und die Frameworks regelmäßig aktualisiert?
  • etc.
Arseni Mourzenko
quelle
Ich bin völlig einverstanden. Auf diese Fragen suche ich eine Antwort. Sie erwähnen viel lesen - und das ist, was ich versuche - ich brauche viele Ressourcen, um über die Sprachen zu lesen, die ich untersuchen möchte. Obwohl es nicht möglich ist, einen unvoreingenommenen Bericht zu verfassen, sind einige viel ausgeglichener, und das ist alles, was ich wollte.
Xeoncross
2

Nun, da eines Ihrer Kriterien zu sein scheint, dass es Spaß macht, damit zu arbeiten, würde ich denken, dass Sie voreingenommene Informationen finden möchten. Wenn der Autor einer Sache eine Leidenschaft für die Sprache seiner Wahl hat, besteht eine gute Chance, dass er eine voreingenommene Bewertung abgibt.

Vielleicht solltest du es aus der anderen Richtung angehen. Da Sie den Eindruck haben, als würden Sie eher von einem Karriereschritt als von einem Hobby sprechen, sollten Sie sich vielleicht einige Stellenanzeigen ansehen, einige interessante Technologien / Sprachen suchen und sich diese ansehen.

Sprachen mit spezifischen Zielen haben viele Sprachen nicht. Die meisten der von Ihnen aufgelisteten Sprachen sind für allgemeine Zwecke gedacht. Beispielsweise ist die Sprache Ruby eine ziemlich universelle Sprache, die für viele Aufgaben geeignet ist. Wenn Sie ein Framework wie Rails hinzugefügt haben, hat dies ein ziemlich spezifisches Ziel.

John Gaines Jr.
quelle
1

Dies ist nicht genau das, wonach Sie gefragt haben, aber wenn ich nach etwas Ausschau halten wollte, das mich aus der beruflichen Furcht der Webentwicklung herausholt, und trotzdem diese Erfahrung und Kontakte nutzt, würde ich anfangen, Android- und iPhone-Apps zu schreiben. Wenn Sie eine App verkaufen können, die die Website eines Kunden ergänzt, können Sie sich von der Entwicklung eines Internets abheben, auf das zunehmend über mobile Geräte zugegriffen wird.

Karl Bielefeldt
quelle
Das ist wirklich keine schlechte Idee. Ich dachte auch darüber nach, mehr Zeit mit Illustratoren und Photoshop zu verbringen, um an meinen Designs zu arbeiten. Trotzdem möchte ich mehr über die Webanwendungsoptionen erfahren.
Xeoncross
0

Haben Sie wirklich das Limit von PHP erreicht oder nur das Limit von PHP, wie Sie es kennen?

Haben Sie in Drupal geschaut ? Es ist ein PHP-basiertes CMS- und Programmierframework, das gute Codierungsstandards und -praktiken nachdrücklich fördert. (Nachdem ich in früheren Jobs mit OSCommerce arbeiten musste, empfinde ich Ihren Schmerz dort.) Obwohl PHP-basiert, ist es anders genug, dass die "richtige" Art, etwas in reinem PHP zu tun, oft nicht die richtige Art ist, es in Drupal zu tun. und du wirst eine gute Lernkurve haben, um es wirklich zu meistern. Dies kann jedoch Ihre Sichtweisen auf die Fähigkeiten von PHP als Sprache und die Webentwicklung insgesamt verändern.

Garrett Albright
quelle
Das letzte Mal, als ich mir Drupal (4 & 5) ansah, war es ziemlich schlimm. Vielleicht verwenden ihre neueren Versionen jetzt die richtigen Standards. Trotzdem, so langsam es ist, würde ich mich viel lieber an die großartigen Frameworks halten.
Xeoncross