Für uns in der Programmierwelt haben wir jetzt einen Wendepunkt erreicht. Vor zehn Jahren strömten Programmierer zu dynamischen Sprachen. Für die meisten von uns machten dynamische Sprachen das Programmieren nicht nur einfacher, sondern repräsentierten auch einen Trend. Heute genießen dynamische Sprachen keine besondere Gunst mehr. Programmierer verwenden jetzt eine Mischung aus neuen und alten Sprachen, um Projekte zu entwickeln. Ich kann nicht umhin zu fragen: Welche Programmiersprachen müssen Programmierer am meisten beherrschen, um auf Dauer wettbewerbsfähig zu bleiben?

Bevor wir diskutieren, welche Programmiersprachen in Zukunft populär sein werden, schauen wir uns zunächst die Gemeinsamkeiten und Unterschiede zwischen Programmiersprachen an.

Statische Sprachen vs. dynamische Sprachen

Wenn wir von dynamischen Sprachen sprechen, bezieht sich das „dynamisch“ eigentlich auf Variablentypen. Wenn Sie ein Programm in einer dynamischen Sprache schreiben, können Sie eine Variable deklarieren und dann ihren Typ während der Programmausführung ändern. Das Gegenteil von dynamischen Sprachen sind statische Sprachen, auch stark typisierte Sprachen genannt. Zum Beispiel sind C++ und Java stark typisierte Sprachen, während JavaScript, PHP und Perl dynamisch typisierte Sprachen sind.

In C++ müssen Sie beim Deklarieren einer Variablen ihren Typ angeben. Wenn Sie während der Programmausführung versuchen, den Typ der Variablen zu ändern, meldet der Compiler einen Fehler. Dasselbe gilt für Java.

53e16d183fc19

Aber JavaScript ist anders. In einem JavaScript-Programm kann der Typ einer Variablen während der Ausführung geändert werden. Tatsächlich müssen Sie beim Deklarieren einer Variablen ihren Typ nicht angeben. Wenn Sie eine Variable verwenden, können Sie ihr zunächst eine Ganzzahl zuweisen und diese Ganzzahl dann mit einer Zeichenkette überschreiben. All dies ist in dynamisch typisierten Sprachen erlaubt.

Obwohl dynamische Sprachen erst in jüngster Zeit populär geworden sind, wurde das Konzept eigentlich schon vor 50 Jahren vorgeschlagen.

Funktionale Sprachen

Mit der Entwicklung dynamischer Sprachen ist auch das Interesse der Menschen an funktionalen Sprachen gewachsen. In funktionalen Sprachen können Funktionen selbst in Variablen gespeichert werden, und in Variablen gespeicherte Funktionen können als Argumente an andere Funktionen übergeben werden. Die meisten heutigen Sprachen unterstützen funktionale Programmierung bis zu einem gewissen Grad. Zum Beispiel erlaubt es C++, dass Programmierer Funktionszeiger übergeben. Sprachen wie JavaScript machen das Übergeben von Funktionen noch einfacher. Daher wird C++ im Allgemeinen nicht als echte funktionale Sprache angesehen, während JavaScript als funktionale Sprache gilt und Haskell allgemein als hervorragendes Beispiel für eine funktionale Sprache betrachtet wird.

Garbage-Collection-Mechanismus

Theoretisch, solange du den Code korrekt schreibst, wirst du keine Fehler haben. Das klingt schön. Aber in der Realität, wenn du mit vielen anderen Programmierern an einem großen Projekt arbeitest, gibt es einen Fehler, der oft auftritt: Speicherlecks. Du definierst eine Variable, aber nachdem du sie verwendet hast, versäumst du es, diesen Speicher rechtzeitig freizugeben. Das nennen wir ein Speicherleck. Wenn ein Speicherleck auftritt und nicht rechtzeitig erkannt wird, wächst es, je länger das Programm läuft, bis es den gesamten Speicher des Systems verbraucht, und dann stürzt das System ab. Klingt schrecklich!

53e16c8e8239c

Man könnte sagen, wenn man den Speicher sofort nach jeder Verwendung einer Variable freigibt, werden dann Speicherlecks vermieden? Die Idee ist gut, aber die tatsächliche Situation kann viel komplizierter sein. Zum Beispiel erstellt man eine verkettete Liste, um Daten zu speichern, und diese verkettete Liste wird an eine andere Funktion übergeben, die von jemand anderem geschrieben wurde. In dieser Funktion wird die verkettete Liste kopiert, aber man weiß nichts davon. Sollte man die verkettete Liste löschen oder behalten? Angesichts dieser Situation haben Programmierer einen Ausweg gefunden: die Speicherrückgewinnung dem System zu überlassen. Wenn man eine Variable nicht mehr verwendet, durchsucht das System den Speicher, um den Speicher zu finden, der nicht mehr verwendet wird, und gewinnt ihn dann aktiv zurück. Das nennt man einen Garbage-Collection-Mechanismus. Für neu entwickelte Sprachen ist das ein sehr wichtiges Merkmal. Die Idee hinter der Garbage Collection ist, das Programmieren einfacher zu machen, damit sich Programmierer darauf konzentrieren können, großartige Software zu erstellen.

Es sollte beachtet werden, dass es tatsächlich mehrere verschiedene Garbage-Collection-Mechanismen gibt: Einer besteht darin, dass das System den Speicher regelmäßig durchsucht und Speicher findet, der nicht mehr verwendet wird; der andere besteht darin, dass das System für jede Variable einen Zähler führt und sie, sobald es feststellt, dass die Variable nicht mehr verwendet wird, sofort löscht. Technisch gesehen ist Letzteres kein Garbage-Collection-Mechanismus, sondern "Referenzzählung". Der erzielte Effekt ist jedoch derselbe.

Virtuelle Maschinen

53e16cae29817

Als Java Mitte der 1990er Jahre auf den Markt kam, störten sich viele daran, dass es Code nicht direkt in Assemblersprache kompilierte. Anders als C++ kompiliert Java das Programm zuerst in einen Zwischencode namens Bytecode. Zur Laufzeit ruft das System eine virtuelle Maschine auf, um den Bytecode auszuführen, und manchmal kompiliert es sogar den Bytecode in Assembler-Code. Als dieser Kompilierungsansatz erstmals auftauchte, beklagten sich Programmierer über seine Geschwindigkeit, aber das ist jetzt natürlich kein Problem mehr. Viele Sprachen laufen auf virtuellen Maschinen, wie das zuvor erwähnte Java und C#. Sprachen dieser Art haben inzwischen große Fortschritte bei der Geschwindigkeit gemacht.

Sprachen

Nach all dem Gesagten: Welche Sprachen sollten Programmierer eigentlich lernen? Nachfolgend sind fünf Sprachen, die in zukünftigen Jobs stark nachgefragt sein werden. Darüber hinaus habe ich eine sechste Sprache als „ehrenvolle Erwähnung“ aufgeführt.

53e16cda02d86

JavaScript, HTML5 und CSS3:

Technisch gesehen ist HTML5 keine Sprache, sondern eine Technologie. Zusammen mit CSS3 und JavaScript ermöglicht diese Technologie den Aufbau webbasierter Anwendungen. Sie können Software erstellen, die im Browser läuft. Der Vorteil ist, dass die Anwendungen, die Sie erstellen, eine beispiellose Portabilität haben – sie können auf fast allen Geräten laufen, einschließlich Telefonen. Vor einigen Jahren begann Facebook, HTML5 für seine mobilen Apps zu verwenden. Sie waren ihrer Zeit voraus; HTML5 war damals noch nicht ausgereift. Nach einer Weile kehrten sie zum traditionellen Modell zurück. In den letzten zwei Jahren haben Browser begonnen, die besten HTML5-Technologien umzusetzen, und die Nachfrage nach JavaScript ist entsprechend gestiegen. Wenn Sie wettbewerbsfähig bleiben wollen, ist dies eine Technologie, die Sie lernen müssen. (Auf der Serverseite verwenden viele große Unternehmen JavaScript in Form von Node.js.)

JavaScript-Beispiel:

Das folgende Beispiel zeigt, wie JavaScript eine Funktion in einer Variablen speichert und sie dann an eine andere Funktion übergibt. Um JavaScript zu lernen, siehe:JavaScript-Tutorial。

var myfunc = function() {
      alert('hi');

};
setTimeout(myfunc, 2000);

C#:

Vor fünfzehn Jahren hat Microsoft C# entwickelt, und seitdem ist C# weiter gewachsen und gediehen. Die Syntax von C# ähnelt Java (und auch C++). Visual Studio ist die bevorzugte Software für die C#-Programmierung und in einer kostenlosen sowie einer kostenpflichtigen Version erhältlich.

C# ist eine stark typisierte Sprache mit einer virtuellen Maschine. Die erste Version bot sehr wenig Unterstützung für funktionale Programmierung. Um 2006 fügte Microsoft der Sprache einige Funktionen für funktionale Programmierung hinzu. Wie Java hat auch C# seinen eigenen Garbage-Collection-Mechanismus.

C#-Beispiel:

Das Beispiel definiert eine Klasse namens Program, die eine Funktion namens Main enthält. Das Programm beginnt die Ausführung mit der Main-Funktion. Die Main-Funktion definiert eine stark typisierte Integer-Variable x und gibt den Wert von x auf dem Bildschirm aus. Um C# zu lernen, siehe:C#-Tutorial。

using System;
class Program
{

          static void Main()

{

int x = 1000;
Console.WriteLine(x);

}
}

Java:

Java steht kurz davor, seinen 20. Geburtstag zu feiern. Auch heute noch entwickelt sich Java weiter und reift. Im Jahr 2004 sagte ein Kollege von mir, es sei eine „Spielzeugsprache“. Nach ihren frühen Wachstumsschmerzen ist Java keine Spielzeugsprache mehr: Es unterstützt unzählige Websites und Datenbanken, und auch Open-Source-Office-Suiten wurden in Java entwickelt. Betrachtet man es heute, ist Javas Zukunft weiterhin rosig.

Java ist eine stark typisierte Sprache, die auf einer virtuellen Maschine mit integriertem Garbage-Collection-Mechanismus läuft. Obwohl sie keine funktionale Sprache ist, weist sie doch einige Merkmale funktionaler Programmierung auf.

Java-Beispiel:

Java und C# ähneln sich in vielerlei Hinsicht. In einem Java-Programm beginnt die Ausführung mit der main-Funktion. Wie im C#-Beispiel oben definiert die main-Funktion eine stark typisierte Integer-Variable x und gibt den Wert von x auf dem Bildschirm aus. Um Java zu lernen, siehe:Java-Tutorial。

public class HelloWorld
{

           public static void main(String[] args) {

        int x = 1000;|
      System.out.println(x);

    }
}

PHP:

PHP ist eine einfach zu verwendende Allzweck-Programmiersprache. Ihre Syntax ähnelt Java und C++. Auf einer sehr einfachen Ebene wird PHP verwendet, um veränderbaren Textinhalt in Webseiten einzubetten. Zum Beispiel könnten Sie PHP-Code in Ihrer Webseite haben, der das aktuelle Datum ausgibt. Wenn der Webseitencode an den Browser gesendet wird, gibt der entsprechende PHP-Code das aktuelle Datum auf dem Bildschirm aus. PHP kann weit mehr als Datumsangaben auf Webseiten ausgeben. Die Klassenbibliotheken von PHP können Datenbanken manipulieren (fast jede Datenbank, die Ihnen einfällt), wissenschaftliche Berechnungen durchführen und Text verarbeiten. Die Zukunft von PHP bleibt rosig.

PHP-Beispiel:

PHP-Code ist in ein HTML-Dokument eingebettet. Dieser PHP-Code setzt die Zeitzone auf Los Angeles und gibt dann die aktuelle Uhrzeit aus. Wenn der Browser das HTML-Dokument parst, wird der PHP-Code-Teil durch die Ausgabe dieses Codes ersetzt. Was schließlich auf dem Bildschirm angezeigt wird, ist also "Hello! The current time is", gefolgt von der aktuellen Uhrzeit. Um PHP zu lernen, siehe:PHP-Tutorial。

<html>
<body>
Hello! The current time is
<?php

      date_default_timezone_set('America/Los_Angeles');
      echo (strftime('%c'));

?>
</body>
</html>

Swift:

Dies ist eine brandneue Sprache, die von Apple entwickelt wurde. Im Allgemeinen würde ich nicht empfehlen, dass Leute eine brandneue Sprache lernen. Aber bedenken Sie, dass wir über Apple sprechen, und Sie können diese brandneue Sprache bereits verwenden, um iOS-Apps zu erstellen. Tatsächlich gibt es bereits Anzeichen dafür, dass Swift die Zukunft der iOS-Programmierung werden wird. Die Syntax von Swift ist JavaScript sehr ähnlich, jedoch ohne Semikolons und Klammern.

53e16d600894a

Swift ist eine stark typisierte Sprache, die auf einer virtuellen Maschine mit Garbage-Collection-Mechanismus ausgeführt wird.

Swift-Beispiel:

Das Beispiel definiert eine Variable namens str, die eine Zeichenkette speichert. Obwohl der Typ von str nicht explizit angegeben ist, ist Swift stark typisiert, und der Compiler bestimmt anhand der Zeichenkette auf der rechten Seite der Zuweisungsanweisung, dass str vom Typ Zeichenkette ist. Um Swift zu lernen, siehe:Swift-Tutorial für Anfänger。

var str = "Hello, World!"
println (str)

Erlang:

Erlang ist eine Programmiersprache, die 1986 von Ingenieuren bei Ericsson erfunden wurde. Ursprünglich eine Sprache, die speziell für den Telekommunikationsbereich entwickelt wurde, hat sie sich inzwischen zu einer universell einsetzbaren Programmiersprache entwickelt und gedeiht im cloudbasierten, hochleistungsfähigen parallelen Rechnen. Heute nutzen Menschen Erlang, um leistungsstarke Software wie CouchDB und Riak zu bauen. Es ist eine unverwechselbare Sprache mit einer sehr ungewöhnlichen Art, mit Zeichenketten umzugehen, aber sie ist auch leicht zu lernen.

Sollten wir Erlang lernen? Obwohl es nicht viele Stellen gibt, die Erlang erfordern, werden Sie, wenn Sie die Sprache wirklich beherrschen, wahrscheinlich einen hervorragenden Job bekommen. Es ist ein Kompromiss. Bevor Sie die Sprache wirklich beherrschen, müssen Sie viel Mühe investieren, aber wenn Sie es geschafft haben, sind die Belohnungen ebenfalls hoch.

Erlang-Beispiele:

Im Folgenden sehen Sie eine komplexe Version des "hello world"-Beispiels. Denken Sie daran, Erlang ist eine ausgereifte Sprache. Wenn Sie wirklich vorhaben, sie zu lernen, besuchen Sie bitte:http://learnyousomeerlang.com。

-module(hello).
-export([start/0]).
start() ->

      spawn(fun() -> loop() end).

loop() ->

      receive

        hello ->
        io:format("Hello, World!~n"),
       loop();

   goodbye ->
   ok

Abschließende Gedanken

Programmierer können sicherlich überall Arbeit finden, aber nicht unbedingt in einer Position, die Ihnen besonders gefällt. Der Schlüssel liegt darin, wirklich nützliche Technologien zu lernen und den guten Job zu finden, der zu Ihnen passt. JavaScript, C#, Java, PHP oder C++ zu lernen, ist nicht verkehrt. Wenn Sie anfangen, Swift zu lernen, sind die zukünftigen Beschäftigungsaussichten hervorragend. Wenn Sie sich im Hochleistungsprogrammieren versuchen möchten, werfen Sie einen Blick auf Erlang, auch wenn Stellen, die Erlang erfordern, vielleicht nicht sofort auftauchen. Egal, welcher Sprache Sie sich derzeit widmen, Sie müssen sie bodenständig lernen und beherrschen; das ist der Schlüssel.

(Englische Quelle:News.Dice, Übersetzer: moqiguzhu)