Welche Programmiersprache sollten Sie zuerst lernen? ʇdıɹɔsɐʌɐɾ: ɹǝʍsuɐ

Die Reise der meisten Menschen zum Programmieren beginnt mit einer einzigen Google-Suche bis spät in die Nacht.

Normalerweise ist es so etwas wie "Learn ______".

Aber wie entscheiden sie, nach welcher Sprache sie suchen?

„Sie scherzen immer über Java im Silicon Valley. Ich denke, ich sollte das lernen. “

Oder:

„Haskell. So heiß gerade jetzt. Haskell. "

Oder:

"Dieser Go-Gopher ist einfach so verdammt süß."

Und dann ist da noch der Rest von uns. Wir werden wahrscheinlich nach etwas suchen wie:

"Welche Programmiersprache soll ich zuerst lernen?"

Nur wenige Fragen werden so häufig gestellt, dass sie die vollständige Infografik-Behandlung erhalten. Aber das ist einer von ihnen:

Bildnachweis

Die Entscheidung für Ihre erste Programmiersprache kann ein unterhaltsamer Prozess sein - ähnlich wie bei einem dieser „Welche Quentin Tarantino-Charaktere sind Sie?“. Persönlichkeitstests.

Aber bevor Sie loslaufen, um Ruby zu lernen, weil Sie als Kind gerne mit Play-Doh gespielt haben, möchte ich Sie daran erinnern, dass hier ziemlich viel auf dem Spiel steht.

Sie benötigen Hunderte von Übungsstunden, um mit Ihrer ersten Programmiersprache auch nur aus der Ferne kompetent zu werden.

Sie sollten also die folgenden Faktoren berücksichtigen:

  • der Arbeitsmarkt für die Sprache
  • die langfristigen Aussichten für die Sprache
  • wie leicht die Sprache zu lernen ist
  • Welche Projekte können Sie während des Lernens erstellen (und mit Freunden teilen, damit Sie motiviert bleiben können)?

Jedes Jahr bringt neue Programmiersprachen und mit ihnen neue wissenschaftliche Arbeiten. Und neue Webcomics.

Ernsthaft. Schauen Sie sich dieses Juwel vom letzten Monat an:

Bei der Auswahl einer ersten Programmiersprache mangelt es nicht an Optionen. Um es ein wenig einzugrenzen, hier sind die häufigsten Google-Suchanfragen zum Erlernen der Programmierung in den letzten 12 Jahren:

Java hat seine Höhen und Tiefen gehabt.

Python hat sich allmählich zur beliebtesten Wahl entwickelt.

Aber darunter verbirgt sich der kleine Motor, der in den letzten Jahren langsam an Popularität gewonnen hat. Und diese Engine ist JavaScript.

Bevor ich über diese Programmiersprachen spreche, möchte ich Folgendes klarstellen:

  • Ich behaupte nicht, dass eine Sprache objektiv besser ist als jede andere
  • Ich bin damit einverstanden, dass Entwickler irgendwann mehr als eine Sprache lernen sollten
  • Ich argumentiere, dass sie zuerst eine Sprache gut lernen sollten. Und - wie Sie wahrscheinlich anhand des verkehrten Textes in meiner Überschrift erraten können - sollte diese Sprache JavaScript sein.

Beginnen wir mit der Untersuchung, wie Programmieren derzeit in der Schule unterrichtet wird.

Informatik 101

Die Universitäten haben traditionell Programmieren unter dem Dach der Informatik unterrichtet, was selbst oft als Erweiterung der Mathematik oder als Anbindung an einen Abschluss in Elektrotechnik angesehen wird.

Natürlich, wie Sie vielleicht schon gehört haben:

"Informatikunterricht kann niemanden mehr zu einem erfahrenen Programmierer machen, als das Studium von Pinseln und Pigmenten jemanden zu einem erfahrenen Maler machen kann." - Eric S. Raymond

Ab 2016 behandeln viele Universitäten das Programmieren immer noch wie Informatik und die Informatik wie Mathematik.

Infolgedessen konzentrieren sich viele einführende Programmierkurse auf Sprachen mit niedriger Abstraktionsebene wie C oder auf mathematisch fokussierte Sprachen wie MATLAB.

Und Abteilungsleiter bleiben im Allgemeinen auf Kurs und verweisen auf jährliche Ranglisten für Programmiersprachen wie den TIOBE-Index oder diesen vom IEEE:

Die meisten dieser Bestenlisten sehen praktisch identisch aus wie vor 10 Jahren.

Aber es kommt zu Veränderungen. Auch im akademischen Bereich.

Im Jahr 2014 überholte Python Java als beliebteste Unterrichtssprache in den besten US-amerikanischen Informatikprogrammen.

Und noch eine Änderung muss… irgendwann… passieren.

Denn wenn Sie sich die Sprachen ansehen, die tatsächlich von der Belegschaft verwendet werden, ergibt sich ein ganz anderes Bild:

JavaScript ist bei weitem die beliebteste Sprache, die von 49.397 Entwicklern verwendet wird, die auf die Umfrage 2016 von Stack Overflow geantwortet haben.

Mehr als die Hälfte aller Entwickler verwendet JavaScript. Dies ist für die Front-End-Webentwicklung von entscheidender Bedeutung und für die Back-End-Entwicklung immer relevanter. Und es expandiert schnell in Bereiche wie Spieleentwicklung und Internet der Dinge.

In Stellenausschreibungen wird JavaScript mehr erwähnt als in jeder anderen Programmiersprache als Java:

Daten vom weltweit größten Aggregator für Stellenausschreibungen, Indeed.com

Es ist kein Zufall, dass wir den Lehrplan unserer Open Source-Community auf JavaScript aufgebaut haben. In den letzten zwei Jahren haben mehr als 5.000 Menschen Free Code Camp genutzt, um ihren ersten Entwicklerjob zu bekommen.

Ich befürworte kein JavaScript, weil ich es unterrichte. Ich unterrichte JavaScript, weil es der sicherste Weg zu einem ersten Entwicklerjob ist.

Aber ist JavaScript das Richtige für Sie? Lohnt es sich, Ihre erste Programmiersprache zu sein? Lassen Sie uns die Faktoren untersuchen, die ich zuvor erwähnt habe.

Faktor 1: Der Arbeitsmarkt

Wenn Sie lernen, nur aus intellektueller Neugier zu programmieren, können Sie diesen Faktor überspringen. Aber wenn Sie - wie die große Mehrheit der Menschen, die das Programmieren lernen - diese Fähigkeit nutzen möchten, um einen Job zu bekommen, ist dies eine wichtige Überlegung.

Wie bereits erwähnt, wird Java in mehr Stellenausschreibungen erwähnt als jede andere Programmiersprache. JavaScript ist eine knappe Sekunde.

Aber hier ist die Sache mit JavaScript: Obwohl es das schon seit 20 Jahren gibt, wurde es erst kürzlich zu einem ernstzunehmenden Tool, mit dem Unternehmen wie Netflix, Walmart und PayPal ganze Anwendungen erstellen konnten.

Infolgedessen stellen viele Unternehmen JavaScript-Entwickler ein, aber es gibt nicht so viele auf dem Arbeitsmarkt.

Daten von Indeed.com

Es gibt 2.7 Java-Entwickler, die um jede offene Java-Position konkurrieren. Der Wettbewerb um PHP- und iOS-Jobs ist ähnlich hart.

Für jede offene JavaScript-Position gibt es jedoch nur 0,6 JavaScript-Entwickler. Es ist ein Verkäufermarkt für Entwickler mit JavaScript-Kenntnissen.

Faktor 2: Die langfristigen Aussichten

Das durchschnittliche JavaScript-Projekt erhält doppelt so viele Pull-Anforderungen wie das durchschnittliche Java-, Python- oder Ruby-Projekt. Darüber hinaus wächst JavaScript schneller als jede andere beliebte Sprache.

Quelle: Der Gitover-Status 2016 des Octoverse

Das JavaScript-Ökosystem profitiert auch von einer hohen Investition von Geld und technischen Talenten von Unternehmen wie Google, Microsoft, Facebook und Netflix.

Zum Beispiel hat TypeScript (eine statisch typisierte Obermenge von JavaScript) mehr als 100 Open-Source-Mitarbeiter, von denen viele Microsoft- und Google-Mitarbeiter dafür bezahlt werden, daran zu arbeiten.

Diese Art der unternehmensübergreifenden Zusammenarbeit ist mit Java schwerer zu finden. Oracle, dem Java durch die Übernahme von Sun Microsystems effektiv gehört, verklagt häufig Unternehmen, die versuchen, es zu erweitern.

Faktor 3: Schwierigkeit zu lernen

Dies ist eine Parodie auf einen XKCD-Comic.

Die meisten Programmierer würden zustimmen, dass Skriptsprachen auf hoher Ebene relativ einfach zu erlernen sind. JavaScript fällt zusammen mit Python und Ruby in diese Kategorie.

Obwohl die Universitäten immer noch Sprachen wie Java und C ++ als Muttersprachen unterrichten, sind sie erheblich schwieriger zu lernen.

Faktor 4: Projekte, die Sie damit erstellen können

Hier strahlt JavaScript wirklich. JavaScript läuft auf jedem Gerät mit einem Browser direkt im Browser. Mit JavaScript können Sie grundsätzlich alles erstellen und überall freigeben.

Aufgrund der Allgegenwart von JavaScript prägte Jeff Atwood, Mitbegründer von Stack Overflow, sein mittlerweile berühmtes Gesetz:

"Jede Anwendung, die in JavaScript geschrieben werden kann, wird schließlich in JavaScript geschrieben."

Und mit jedem Monat gilt Atwoods Gesetz.

Java hat einmal versprochen, auch überall zu laufen. Möglicherweise erinnern Sie sich an Java-Applets. Oracle hat sie Anfang dieses Jahres offiziell getötet.

Python leidet unter den gleichen Problemen:

„Wie kann ich dieses Spiel, das ich gemacht habe, meinem Freund geben? Noch besser, gibt es eine Möglichkeit, dies auf mein Telefon zu übertragen, damit ich es Kindern in der Schule zeigen kann, ohne dass sie es installieren müssen? Äh." - James Hague im Ruhestand von Python als Unterrichtssprache

Im Gegensatz dazu sind hier einige Apps aufgeführt, die Mitglieder unserer Open Source-Community in ihren Browsern auf CodePen erstellt haben. Sie können sich durchklicken und diese direkt in Ihrem Browser verwenden:

Simon-Spiel im Stil der 1970er JahreConways Spiel des LebensWikipedia-Suche zum Thema Star WarsEin schurkenhaftes Dungeon-Crawler-Spiel

Lerne eine Sprache gut. Dann lerne einen zweiten.

Wenn Sie immer wieder von Sprache zu Sprache springen, werden Sie nicht weit kommen.

Um über die Grundlagen hinauszugehen, müssen Sie Ihre Muttersprache gut lernen. Dann wird Ihre zweite Sprache viel, viel einfacher.

Von dort aus können Sie sich verzweigen und ein vielseitigerer Entwickler werden, indem Sie viele Sprachen lernen:

  • C ist eine großartige Möglichkeit, um zu lernen, wie Computer in Bezug auf die Speicherverwaltung tatsächlich funktionieren, und ist beim Hochleistungsrechnen nützlich
  • C ++ eignet sich hervorragend für die Spieleentwicklung.
  • Python ist großartig für Wissenschaft und Statistik.
  • Java ist wichtig, wenn Sie bei großen Technologieunternehmen arbeiten möchten.

Aber lernen Sie zuerst JavaScript.

OK, jetzt werde ich das Unmögliche versuchen - ich werde versuchen, Einwände aus dem Kommentarbereich zu antizipieren.

Einwand Nr. 1: Aber ist JavaScript nicht langsam?

JavaScript ist - für die meisten praktischen Zwecke - so schnell wie Hochleistungssprachen.

JavaScript (Node.js) ist um Größenordnungen schneller als Python, Ruby und PHP.

Es ist auch fast so schnell wie Hochleistungssprachen wie C ++, Java und Go.

Hier sind die Ergebnisse des umfassendsten aktuellen sprachübergreifenden Benchmarks:

Einwand Nr. 2: JavaScript ist jedoch nicht statisch typisiert

Wie Python und Ruby wird JavaScript dynamisch eingegeben, was praktisch ist. Aber Sie können in Schwierigkeiten geraten. Hier beabsichtige ich zum Beispiel, dass Array ein Array ist. Ich setze seine Werte und überprüfe dann seine Länge - dh die Anzahl der darin enthaltenen Elemente.

exampleArray = [1, 2] -> [1, 2] exampleArray.length -> 2

Aber dann weise ich es versehentlich einer Zeichenfolge zu.

exampleArray = "text" -> "text" exampleArray.length -> 4

Diese Art von Fehlern tritt ständig in dynamisch typisierten Sprachen auf. Die meisten Entwickler setzen lediglich Überprüfungen ein, um dies zu verhindern, und schreiben entsprechende Tests.

Wenn Sie in Ihrer ersten Programmiersprache unbedingt statisch tippen müssen, empfehle ich Ihnen dennoch, zuerst JavaScript zu lernen. Dann können Sie TypeScript schnell abholen.

"Typescript hat eine Lernkurve, aber wenn Sie JavaScript bereits kennen, wird es reibungslos verlaufen." - Alex Ewerlöf über TypeScript

Einwand Nr. 3: Aber ich möchte wirklich eine mobile App erstellen

Ich empfehle immer noch, zuerst JavaScript zu lernen.

  1. JavaScript bietet verschiedene Tools zum Erstellen nativer mobiler Apps, z. B. Angular Cordova und React Native.
  2. Damit Ihre mobile App tatsächlich etwas Interessantes tun kann, benötigt sie wahrscheinlich ein geeignetes Back-End, das Sie mit einem geeigneten Webentwicklungsframework wie Node.js + Express.js erstellen möchten.

Es ist auch erwähnenswert, dass die besten Tage der Entwicklung mobiler Apps möglicherweise dahinter stecken.

Für den Anfang ist fast die Hälfte aller Entwicklerjobs Webentwicklung, so wie Menschen mobile Apps verwenden. Vergleichen Sie dies mit nur 8% der Jobs, bei denen mobile Apps entwickelt werden.

Die Berufe von 49.525 Entwicklern, basierend auf den Antworten auf die Stack Overflow-Umfrage 2016.

Die großartige Vision „Dafür gibt es eine App“ ist nicht verwirklicht. Stattdessen haben die meisten Smartphone-Besitzer das Herunterladen neuer Apps eingestellt.

Sicher - sie benutzen immer noch Apps. Meistens Facebook, Google Maps und eine Handvoll anderer. Daher konzentriert sich ein Großteil der Nachfrage nach Entwicklern mobiler Apps auf einige wenige große Arbeitgeber.

Die Aussichten für diese Jobs in der mobilen Entwicklung sind schwer zu prognostizieren. Viele Aspekte der Entwicklung, Wartung und Verteilung mobiler Apps sind mit JavaScript einfacher. Unternehmen wie Facebook und Google investieren daher stark in bessere Tools, um diese mithilfe von JavaScript zu erstellen.

Ab 2016 ist so ziemlich jede Entwicklung Webentwicklung. Alles berührt diese große Plattform, die „das Web“ ist. Und die nächste Welle von Geräten, mit denen Sie zu Hause sprechen, und Autos, die Ihre Kinder von der Schule abholen - alle werden auch über das Internet miteinander verbunden.

Und das bedeutet JavaScript.

Einwand Nr. 4: Ist JavaScript nicht eine Spielzeugsprache, die in 10 Tagen geschrieben wurde?

JavaScript hat eine skurrile Geschichte.

Sie werden zweifellos hören, wie Leute auf ihre Kosten Witze machen.

Nun, die Leute lieben es auch, C ++ zu hassen. Und wie JavaScript ist C ++ trotz dieses Hasses erfolgreich, und jetzt ist es auch so ziemlich überall.

Wenn es Ihnen jemals schwer fällt, JavaScript anstelle der Elite-Sprache der Woche zu lernen, denken Sie einfach an die berühmten Worte des Mannes, der C ++ erstellt hat:

"Es gibt nur zwei Arten von Programmiersprachen: diese Leute meckern immer und die, die niemand benutzt." - Bjarne Stroustrup

Ich schreibe nur über Programmierung und Technologie. Wenn Sie mir auf Twitter folgen, werde ich Ihre Zeit nicht verschwenden.