Kürzlich sagte John Carmack, ein berühmter Spieleprogrammierer und Mitbegründer von id Software, in einem Interview, dass sich Programmierer darauf konzentrieren sollten, eine Programmiersprache gut zu lernen. Das hat mich etwas überrascht. Obwohl ich persönlich diesem Rat voll und ganz zustimme, ist diese Ansicht in heutigen Programmierkreisen umstritten.
Ich schätze, ich bin das, was jeder einen „alten Programmierer“ nennt. Ich bin nicht jung, ich beschäftige mich mein ganzes Leben lang mit dem Programmieren, und ich beschäftige mich seit meinem Eintritt in die Gesellschaft mit dieser beruflichen Tätigkeit. Manchmal fühle ich mich wie ein Programmiersprachen-Enthusiast, der die Entwicklung vieler Programmiersprachen miterlebt hat. Wenn wir auf diese spannende Geschichte zurückblicken, kommen wir zwangsläufig zu dem (falschen) Schluss, dass es nie schaden kann, noch ein paar Programmiersprachen zu beherrschen. Die historische Entwicklung der Programmiersprachen ist sehr spannend, die heutige Entwicklungssituation ist jedoch relativ friedlich.
In diesem Artikel möchte ich einen Rückblick auf die Vergangenheit geben, die gewonnenen Erkenntnisse zusammenfassen und einen Blick darauf werfen, welche Programmiersprache die beste standardisierte Sprache ist.
Als Computerhardware und Informatik als Disziplin allmählich auftauchten, begann sich auch die Computerprogrammierung (über die Anweisungen des Prozessors selbst hinaus) langsam zu entwickeln. In den ersten Jahrzehnten waren Programmiersprachen hauptsächlich der akademischen Welt vorbehalten und zogen eine kleine Gruppe von Forschern an. Die Möglichkeiten für Programmierer sind begrenzt und hängen hauptsächlich vom Fachgebiet ab.
COBOL wird für die Geschäftsprogrammierung verwendet, Fortran wird für die wissenschaftliche Programmierung verwendet und es gibt einige andere Sprachen, die normalerweise für bestimmte Bereiche, Forschung oder Hardware verwendet werden.
Die meisten Programmierer müssen sich während ihrer gesamten Programmierkarriere oder über einen längeren Zeitraum nur auf das Erlernen einer Programmiersprache konzentrieren. Obwohl sich einige Leute für die Gestaltung von Programmiersprachen interessierten, war das Gebiet damals noch sehr jung. Trotz einiger interessanter Innovationen ist noch nicht ausreichend verstanden, was zum Entwerfen einer guten Programmiersprache beiträgt.
Da die Anzahl der Computerhardware zunimmt und ihre Einsatzmöglichkeiten immer vielfältiger werden, beginnt auch die Anzahl der Programmiersprachen zu wachsen und die Wahl der Programmiersprache wird zu einem beliebten Thema. Man begann, Programmiersprachen zu klassifizieren. Wir können anhand der Art des Programmierers und des angestrebten Fachwissens erkennen, welche Sprache ein Programmierer wählen wird.
PC-Programmierbegeisterte nutzen das immer beliebter werdende BASIC. Dies ist eine sehr absurde und primitive Programmiersprache, die jedoch weit verbreitet ist und für eine Generation von Programmierern (einschließlich mir) zum Leitfaden geworden ist. Pascal führte die strukturierte Programmierung ein und hatte einen großen Einfluss (Pascal baute mit Turbo-Pascal und Delphi eine blühende Community auf, verschwand jedoch schließlich).
C, das aus UNIX stammt, wurde zu einer Systemprogrammiersprache. C++ wurde zum Nachfolger von C und entlehnte die objektorientierte Programmierung von Smalltalk und wurde zur Sprache professioneller Anwendungs- und Serviceentwickler. Schließlich machte Visual Basic (das nichts mit BASIC zu tun hatte) die „visuelle Programmierung“ populär, erfüllte die Anforderungen der Anwendungsentwicklung (die mit der Einführung von Windows schnell wuchsen) und wurde zur ersten Wahl für die Massen. Es wird jedoch allgemein angenommen, dass VB-Programmierer Domänenexperten sind, die Teilzeit-Programmierjobs erledigen, während C und C++ „professionelle“ Programmierer sind.
Zu diesem Zeitpunkt verstehen die Menschen das Design von Programmiersprachen immer noch nicht gut, was dazu führt, dass viele Aspekte des Designs vieler beliebter Programmiersprachen nicht ideal sind. Die C-Sprache ist einfach und leistungsstark, aber schwer zu beherrschen und es gibt zu viele Dinge, die schief gehen können. Obwohl C++ gute Absichten hat, ist es letztendlich schlecht konzipiert und unangenehm in der Verwendung. Visual Basic machte Spaß und war einfach, aber es war ein bisschen ein Trick und unter den damaligen technischen Bedingungen weder elegant noch effizient. Smalltalk und LISP waren sowohl interessante als auch elegante Sprachen, gerieten aber schließlich in Ungnade, weil sie an spezielle Hardware und teure Tools gebunden waren.
Später entstand das Internet. Das genaue Ausmaß der Auswirkungen des Internets auf Programmiersprachen ist möglicherweise nicht bekannt, aber es ist zweifellos ein wesentlicher Faktor. Vor langer Zeit waren Programmiersprachen eine Seltenheit und wurden normalerweise in Forschungslabors und großen kommerziellen Unternehmen entwickelt. Heute scheint es, dass jeder seine eigene Programmiersprache entwickeln kann. Eine Zeit lang entwickelte sich PERL zu einer beliebten Allzwecksprache, die alles von der Systemadministration bis zur Webprogrammierung abdeckte.
Später entwickelte sich Python von einer wissenschaftlichen Forschungssprache zu einer einfachen und leicht zu erlernenden Allzwecksprache. Obwohl es sich zunächst langsam entwickelte, eroberte es schließlich die ganze Welt. Es heißt, dass Brandan Eich von Netscape innerhalb weniger Tage JavaScript (als Browser-Erweiterungssprache mit sehr eingeschränkter Funktionalität) entwickelt hat. Dies beweist nicht nur, dass Eich ein Genie ist, sondern auch, dass die Menschen dieser Zeit ein gutes Verständnis für die Gestaltung von Programmiersprachen hatten.
In dieser Zeit entstanden viele andere Programmiersprachen, die bekannteste davon ist Java. Die Sprache selbst ist nichts Besonderes, aber die von ihr bereitgestellte JVM ist eine universelle Laufzeitumgebung, die „einmal schreiben, überall ausführen“ realisiert, was bedeutet, dass die Sprache sehr universell ist und nicht auf bestimmte Hardware, Betriebssysteme oder Einschränkungen beschränkt ist Zielumgebung. Streng genommen war die frühe JVM nichts Besonderes, aber sie läutete eine Ära immer ausgereifterer Sprachlaufzeiten und Bereitstellungsoptionen ein.
Seit der JVM haben Programmiersprachen begonnen, sich schnell in eine interessante Richtung zu entwickeln. Der von der Self-Sprache abgeleitete Just-in-Time-Compiler (JIT) (der Nachfolger von Smalltalk, obwohl ausgezeichnet, aber sehr gescheitert) wurde weiter untersucht, was zur Geburt von Javas HotSpot führte, und Microsoft führte die .NET CLR ein, um Java zu bekämpfen. .NET geht noch einen Schritt weiter und nutzt CLR (Common Language Runtime) als universelle Laufzeit für mehrere Sprachen, nicht nur C#. Rückblickend war dies ein Wendepunkt: Die Wahl der Programmiersprache wurde irrelevant.
Dies ist möglicherweise nicht der Hauptgrund, warum Microsoft diese Wahl getroffen hat (damals versuchten sie noch, weiterhin das sehr beliebte Visual Basic sowie C# zu unterstützen), und das noch dazu Die geschlossene Lizenzierung von Microsoft verhinderte letztlich, dass die CLR zur beliebtesten Betriebssystemumgebung wurde. Doch im ersten Jahrzehnt nach der Jahrtausendwende wurden Programmiersprachen immer zahlreicher und allgegenwärtiger.
Andererseits ist auch die Zahl der Programmierer explosionsartig gewachsen. Da die Nachfrage nach Software schnell wuchs und die Tools und das Wissen allgemeiner verfügbar wurden, wurden Millionen von Menschen auf der ganzen Welt Programmierer. Diese Programmierer sind Menschen und sehnen sich nach einer starken Gruppenidentität. So wie normale Menschen eine starke und irrationale Meinung über Sportmannschaften haben, haben Programmierer begonnen, bei der Wahl der Programmiersprachen Partei zu ergreifen. Viele Programmierer sind gezwungen, eine neue, einzigartige und spezielle Programmiersprache zu wählen.
Zum Beispiel behaupten einige Leute, dass funktionale Programmierung König ist, Ruby besser als Python ist, Scala die Datenwissenschaft völlig verändern wird und es Ihr Verlust ist, sich nicht für Clojure zu entscheiden ... Bei Zu diesem Zeitpunkt haben sich Programmiersprachen aus der linearen Entwicklung entwickelt und sind in eine chaotische darwinistische Phase des Überlebens des Stärkeren eingetreten.
Ich dachte, dass die Leute in dieser Zeit erkennen würden, dass einige Programmiersprachen zu verrückt sind, um es zu sein nachhaltig entwickeln. Dies war jedoch nicht der Fall, sondern die Situation nahm eine unerwartete Wendung. Im Zeitalter des „Cloud“-Computing, in dem viele Anwendungen und Dienste über eine große Anzahl verteilter Knoten im Internet bereitgestellt werden, scheint es keine Rolle mehr zu spielen, welche Programmiersprache verwendet wird. Programmierer entwickeln unabhängige Komponenten, die miteinander kommunizieren. Warum sich also mit Programmiersprachen beschäftigen? Komponenten müssen nicht wissen, in welcher Sprache die anderen geschrieben sind. Wenn Programmierer gerne Komponenten in der Sprache X schreiben, dann verwenden Sie diese Sprache. Wen interessiert das.
Das Gleiche gilt für Komponenten, die auf verschiedenen Maschinen ausgeführt werden. Mit der Veröffentlichung von Docker haben Container an Popularität gewonnen, unabhängig davon, ob es sich um eine Anwendung handelt, die auf einer Maschine ausgeführt wird, oder durch Orchestrierungssoftware Die gemeinsame Arbeit an einem Maschinencluster kann problemlos mithilfe desselben Paradigmas verwaltet werden.
Menschen entwickeln auch heute noch neue Programmiersprachen, von denen viele vielversprechend sind und mit Spannung erwartet werden. Einige sind domänenspezifisch (Swift, Kotlin und Dart für mobile Apps, Solidity für Ethereum-Smart Contracts), während andere allgemeiner sind, aber jede Sprache profitiert von den im Laufe der Jahrzehnte gewonnenen Erkenntnissen (für Go für Cloud-Programmierung, Rust für System). Programmierung, TypeScript, eine Obermenge von JavaScript usw.).
Gleichzeitig hat die Programmierwelt einen neuen Reifegrad erreicht, bei dem wir nicht mehr jedem neuen Trend hinterherlaufen und jede neue Sprache übernehmen. Wir sind alle erwachsen geworden.
Es besteht kein Zweifel, dass einige Programmiersprachen tatsächlich besser sind, während andere besser dafür geeignet sind Verarbeitung einiger spezifischer Anwendungsfälle. Jeder, der schon länger programmiert, weiß, dass das Erlernen einer neuen Sprache überhaupt nicht schwierig ist. Die meisten Programmierer können die Grundlagen einer neuen Sprache problemlos an nur einem Nachmittag erlernen und sind nach ein paar Tagen mehr oder weniger produktiv. Neue Programmierer können mit jeder der wichtigsten Programmiersprachen beginnen und ihre Programmierkenntnisse problemlos auf andere Sprachen anwenden.
Häufige Änderungen in Programmiersprachen sind jedoch aus zwei Hauptgründen keine gute Sache. Erstens ist das Erlernen einer Programmiersprache ein bisschen so, als würde man Schach spielen lernen. Sie können die Regeln schnell erlernen, aber das bedeutet nicht, dass Sie erfahrene Spieler schlagen können. Man muss Strategien erlernen, und das braucht Zeit und Übung. Dabei handelt es sich um ein Ökosystem aus Best Practices, Fallstricken, Optimierungstechniken sowie Bibliotheken, Tools und Communities. Zweitens ist die Programmierung zwar einfach, aber fehleranfällig.
Selbst mit allgemeiner Programmiererfahrung und den besten Tools ist die Umwandlung von Ideen in Computercode kein intuitiver Akt. Unabhängig davon, welche Intuition ein Programmierer entwickelt, muss er einen Zyklus aus wiederholter Verwendung, sofortigem Feedback und Fehlerkorrektur durchlaufen. Jedes Mal, wenn Sie die Programmiersprache wechseln, zahlen Sie einen Preis. Meiner Erfahrung nach ist die Wahl der Programmiersprache also wichtig, aber wenn man einmal eine Wahl getroffen hat, sollte man langfristig dabei bleiben.
Bis 2022 müssen wir bei der Auswahl einer Programmiersprache die folgenden Punkte berücksichtigen.
Zuallererst ist die wichtigste Überlegung der Anwendungsbereich der Sprache. Wenn es sich um eine bestimmte Domäne handelt und eine domänenspezifische Sprache verwendet werden muss, wird die allgemeingültigste Sprache bevorzugt. Glücklicherweise sind Laufzeit und Bereitstellung kein Problem mehr, da Java „einmal schreiben, überall ausführen“ vorschlägt und Kosten und Lizenzierung keine Einschränkungen mehr darstellen. Heutzutage sind grundsätzlich alle Programmiersprachen, Laufzeiten und diverse Tools kostenlos verfügbar. Wenn eine Sprache für einen besonderen Anlass nicht geeignet ist, kann man nur sagen, dass sie nicht populär genug ist und sich nicht bei allen verbreitet hat, oder dass die Sprache aufgrund einiger grundlegender Faktoren wirklich nicht für die Aufgabe geeignet ist.
Beliebtheit ist wichtig. Wir sollten eine Sprache wählen, die über eine starke Community, umfangreiche Informationsquellen und eine große Anzahl anderer Programmierer verfügt, mit denen wir zusammenarbeiten oder die wir einstellen können. Es lohnt sich nicht, eine unpopuläre Sprache zu wählen. Wenn Sie auf besondere Umstände stoßen, wird die Auswahl schwieriger. Keine Sprache ist für alle Szenarien geeignet, aber im Idealfall sollte eine gemeinsame Mainstream-Sprache für die meisten Szenarien ausreichen.
Schließlich sollte die Programmiersprache, die wir wählen, besser sein als die meisten anderen Sprachen. Selbst im Jahr 2022 gibt es immer noch einige schreckliche Programmiersprachen, die schwer zu erlernen und zu verwenden sind und Programmierer leicht in Schwierigkeiten bringen können.
Angesichts der obigen Aussage glaube ich nicht, dass wir tatsächlich eine große Wahl haben. Werfen wir nun einen Blick auf diese besten Programmiersprachen.
JavaScript ist in der Welt der Programmiersprachen wie Englisch, das von Menschen zur Kommunikation verwendet wird. Es handelt sich um die beliebteste und vielseitigste Programmiersprache, die für viele verschiedene Szenarien geeignet ist (Browser/Frontend, System/Backend, als Erweiterungssprache in vielen Umgebungen eingebettet). Die Laufzeitumgebung von JavaScript (V8/Node/Deno) ist sehr effizient, verfügt über viele tolle Tools und eine große Community.
TypeScript ist eine Obermenge von JavaScript, die leistungsstarke Typisierungs- und Standardtools einführt und sich schnell zur Standardwahl für die JS-Programmierung entwickelt.
Rust verfügt über alle Funktionen von C/C++, ist einfacher zu verwenden und weist nicht allzu viele Fallstricke auf. Die Community und das Ökosystem von Rust sind stark und wachsen und die Tools sind großartig zu verwenden. Wenn Rust alle Funktionen bietet, die Sie benötigen, ist es definitiv die beste Wahl. Wo Sie bisher nur C oder C++ verwenden konnten, können Sie jetzt Rust wählen. Darüber hinaus entwickelt Rust auch eine eigene universelle Sprache für WebAssembly (WebAssembly kann als die ultimative „Einmal schreiben, überall ausführen“-Laufzeitumgebung bezeichnet werden).
Ich verwende Python seit mehr als 20 Jahren. Leider ist Python (Stand 2022) immer noch keine echte Allzweck-Programmiersprache. Ein Grund dafür ist, dass Python immer noch sehr ineffizient ist und in vielen leistungsorientierten Situationen nicht verwendet werden kann. Ein weiterer Grund ist, dass es nicht in gängige benutzerorientierte Umgebungen wie Webbrowser oder Mobiltelefone gelangt ist. Trotzdem ist Python immer noch eine hervorragende Programmiersprache und nimmt eine wichtige Position in der Datentechnik/Datenwissenschaft/Maschinenlernen ein. Wenn Sie also in diesen Bereichen arbeiten, ist Python definitiv eine Sprache, die es wert ist, kennen und lieben zu lernen. So wie es aussieht, wird sich Python wahrscheinlich weiterhin zu einer universellen Sprache für die Datenwissenschaft entwickeln, aber es wird ihm möglicherweise nicht gelingen, in diesem Bereich Fuß zu fassen.
Go ist eine Sprache, die sich sehr gut für die „Cloud“-Programmierung eignet. Die Go-Sprache ist elegant, einfach zu erlernen und zu verwenden und verfügt über eine hervorragende Community, ein hervorragendes Ökosystem und hervorragende Tools. Es wird häufig in Kernprodukten im Cloud-Native-Bereich verwendet und wird daher auch in Zukunft Bestand haben. Leider ist Go nicht universell einsetzbar und kann nicht außerhalb von Internetservern verwendet werden. Darüber hinaus funktioniert es aufgrund der Designauswahl von Go in der C/C++-Welt nicht gut. Go ist gut, aber wenn Sie eine Wahl treffen müssen, kann Rust alle Funktionen implementieren, die Go bieten kann. Mit der Zeit wird Go möglicherweise durch gängige Systemprogrammiersprachen ersetzt.
C# und sein Ökosystem sind großartig und man kann damit viel erreichen. Java ist C# in jeder Hinsicht unterlegen, daher verstehe ich nicht, warum es irgendjemandem gefallen sollte, aber Java ist wirklich beliebt. C# ist nicht nur als System- und „Geschäftssprache“ weit verbreitet, sondern erstreckt sich mittlerweile auch auf mobile Anwendungen und Browser. Leistungsstarke Laufzeit, tolles Ökosystem. Sofern Sie jedoch nicht einige der maßgeschneiderten Laufzeit- und Toolfunktionen von C# benötigen, wird es für C# kurzfristig schwierig sein, mit JavaScript und Rust zu konkurrieren.
Laut dem Lindy-Effekt werden C und C++ auch in den nächsten Jahrzehnten weiterhin beliebt sein. Wenn Sie bereits Experte in diesen beiden Sprachen sind, müssen Sie sich bei der Jobsuche auf keinen Fall Sorgen machen. Wenn in diesem Bereich Bedarf besteht, ist es auch eine gute Wahl, sich Zeit für das Erlernen beider Bereiche zu nehmen. Ansonsten ist die Wahl von Rust besser geeignet.
Diese Sprachen haben ihren Platz in bestimmten Bereichen. Wenn eine mobile UI-Programmierung erforderlich ist, sind diese eine gute Wahl. Aber JavaScript ist universeller einsetzbar und eignet sich auch für die mobile Entwicklung, daher sollten wir uns eher für JavaScript entscheiden.
LISP ist etwas ganz Besonderes, auch wenn Sie dieses Bedürfnis in Ihrer täglichen Arbeit nicht haben, sollten Sie es lernen. Racket ist eine hochmoderne, sehr komplexe Sprache (eigentlich handelt es sich um ein Toolkit zum Sprachaufbau). Es wird gemunkelt, dass Clojure leistungsstark ist, da es auf die JVM abzielt und Java-Bibliotheken nutzen kann. Aber ich bin mir nicht sicher, wie nützlich dieses Verkaufsargument ist.
Funktionale Sprachen sind wichtig. In manchen Fällen sind sie die bessere Wahl. Haskell ist der Vertreter der funktionalen Programmierung. F# hat eine bessere allgemeine Anwendbarkeit, da es auf der CLR läuft und .NET-Bibliotheken verwenden kann. Scala ist nicht rein funktional, sondern sehr allgemein und läuft auf der JVM.
Julia ist perfekt für den Bereich Mathematik. Sowohl R als auch MATLAB sind in bestimmten Situationen gut. Im von Python dominierten Bereich der Datentechnik dürfte es für diese Programmiersprachen jedoch schwierig sein, zu überleben.
Wenn Sie sich für Shell-Programmierung interessieren, ist PowerShell mit Abstand die beste Wahl. Es funktioniert auf allen Betriebssystemen, daher gibt es keinen Grund, eine andere Shell zu verwenden. PowerShell kann auch als universelle Programmiersprache betrachtet werden, aber tatsächlich wird sie von niemandem außerhalb der Systemverwaltung verwendet.
Auch diese Sprachen hatten ihre glorreichen Tage, hauptsächlich als Web-„Backend“-Sprachen. Ganz gleich, was Sie von diesen Sprachen halten, Sie sollten Ihre Mühe nicht länger damit verschwenden. Sie sterben alle.
VB hat die Welt verändert, wird aber jetzt ausgemustert, sowohl als Allzwecksprache als auch als Erweiterung für andere Programme. Funktionen, die früher mit VB erreicht werden konnten, lassen sich heute mit anderen modernen Sprachen besser erreichen.
Ich liebe Programmiersprachen und bin immer neugierig auf neue Sprachen. Derzeit ist TypeScript jedoch meine erste Wahl für C, gefolgt von Rust an zweiter Stelle, wenn Leistung und Low-Level-Zugriff erforderlich sind. Ich glaube, dass fast alle Programmierer im Jahr 2022 ähnliche Ansichten haben werden wie ich.
Das obige ist der detaillierte Inhalt vonReflexion eines alten ausländischen Programmierers: Sie können nicht gleichzeitig C, Python und Java haben, konzentrieren Sie sich einfach darauf, eine Programmiersprache gut zu lernen!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!