|
You last visited: Today at 19:47
Advertisement
Übersicht: Programmiersprachen, Bücher & IDE's
Discussion on Übersicht: Programmiersprachen, Bücher & IDE's within the General Coding forum part of the Coders Den category.
01/03/2018, 22:12
|
#1
|
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 573
|
Übersicht: Programmiersprachen, Bücher & IDE's
Wichtig/Important
Deutsch:
Dieser Thread ersetzt den vorherigen Sticky 
Der original Thread ist am ende dieses Posts noch einmal Zitiert. Wer sich nur dafür interessiert kann sich entweder diesen anschauen, oder bis zum ende Scrollen. Viele Links habe ich soweit wie möglich auch in meinen Teil integriert.
English:
This thread replaces the old sticky 
The original thread is quoted as a whole in the end. While my part is (currently) only available in german while the original thread was also available in english. So if you are looking for the original thread, either follow the link above, or scroll to the end.
Einleitung
Wer mit dem Programmieren anfangen möchte wird zwangsläufig mit der Frage konfrontiert welche Programmiersprache man lernen möchte. Man möchte natürlich die beste Programmiersprache lernen, mit der man später am meisten machen kann, bzw. man möchte einfach keine Zeit und Mühe investieren eine Sprache zu lernen mit der man später nichts anfangen kann.
Mit diesem Beitrag versuche ich euch bei dieser Entscheidung nach bestem Wissen zu helfen.
Vorab, es gibt nicht die beste Programmiersprache, falls es die gäbe würden Unternehmen wie Microsoft oder Oracle nicht Millionen Dollar in die Entwicklung ihrer eigenen Sprachen stecken. Vielmehr lässt sich eine Programmiersprache als Werkzeug oder Instrument verstehen. Natürlich gibt es auch Diskussionen z.B. darüber welches Musikinstrument das beste ist (#GitarreMasterRace) aber eine Orgel mit einem Schlagzeug zu vergleichen macht wenig Sinn. So sieht es auch bei Programmiersprachen aus.
Genauso gibt es auch keine wirklich schlechten Programmiersprachen, zumindest unter den Modernen. Es gibt allerdings einige Nieschensprachen, z.B. Cobol welches im Bankensektor viel verwendet, welche für den großteil der Programmierer nicht von großem Nutzen sind.
Im folgenden werde ich auf die verschiedenen Eigenschaften einiger Programmiersprachen, die ich als erwähnenswert empfinde (natürlich zum Teil subjektiv), eingehen.
Jede Programmiersprache legt ihren Fokus auf verschiedene Aspekte, und die Wahl einer entsprechenden Programmiersprache kann den gesamten Fokus der Entwicklung bestimmen. Entscheidet man sich für z.B. C so legt man sehr viel wert auf effiziente Implementierung und Optimierung, wählt man Javascript so liegt der Fokus hauptsächlich auf Featureentwicklung und schnelle Resultate.
Dieser Fokus auf die verschiedenen Aspekte nennt man auf schlau Paradigma. Hier ein kurzer Ausschnitt des Wikipedia Artikels, welcher das Konzept gut zusammenfasst:
Quote:
|
Originally Posted by Wikipedia
Ein Programmierparadigma ist ein fundamentaler Programmierstil. "Der Programmierung liegen je nach Design der einzelnen Programmiersprache verschiedene Prinzipien zugrunde. Diese sollen den Entwickler bei der Erstellung von ‚gutem Code‘ unterstützen, in manchen Fällen sogar zu einer bestimmten Herangehensweise bei der Lösung von Problemen zwingen".
|
Programmieren lernen benötigt Praxiserfahrung. Wer versucht Programmieren zu lernen ohne wirklich was zu Programmieren ist zum scheitern verurteilt. Daher ist der erste Schritt euch zu fragen was wollt ihr machen. Nachdem ihr euch das überlegt habt könnt ihr anhand dessen eine Programmiersprache aussuchen deren Paradigmen euch dabei so gut es geht unterstützen.
Als ich vor fast 10 Jahren mit dem Programmieren angefangen habe, war ich fasziniert von dem MMORPG Flyff und dessen Private Servern. Mein Ziel war es damals Programme selbst schreiben zu können um meinen Private server zu bearbeiten und zu managen. Um eigene Quests zu erstellen oder NPC’s und Shops zu bearbeiten musste man sich durch Konfigurationsfiles arbeiten was per Hand sehr aufwändig und vor allem viel mehr sehr langweilig war. Damals habe ich mit VB.Net angefangen, da diese Sprache damals für solche Aufgaben sehr gut geeignet war (Auch wenn ich darüber damals nicht nachgedacht habe, immerhin war ich damals 12, ich habe mich da an Empfehlungen aus einem Forum gehalten)
Später hat sich mein Interesse geändert und statt schnell kleine Tools auf die Beine zu stellen war mein Ziel mehr über Computer zu lernen, wie funktioniert so ein Computer eigentlich. Mit dem Wechsel des Interesses habe ich dann auch die Programmiersprache gewechselt, zu Delphi.
Rückblickend betrachtet war das damals die richtige Entscheidung für mich. Was euer Ansporn ist müsst ihr euch aber selbst entscheiden. Ich kann euch lediglich sagen welche Sprachen euch wie sehr unterstützen.
Neben den Programmiersprachen werde ich hier noch einige Links zu IDE’s und Büchern Posten. IDE’s (Integrated Development Environments) sind Softwarepakete die alle Tools enthalten die zum Programmieren in einer bestimmten Sprache benötigt werden, sowie noch einige zusätzliche Tools die einem die Arbeit erleichtern können.
Nach dieser, doch gar nicht so kurzen, Einführung geht es jetzt auch mal zur Sache.
Imperativ und Deklarativ
Bei Programmiersprachen kann man generell in Zwei verschiedene Kategorien unterscheiden, deklarative und imperative Programmiersprachen.
Das Paradigma der imperativen Programmierung ist es dem Computer zu sagen wie er arbeiten soll. Jeder Arbeitsschritt wird dabei angegeben und das Ergebnis ist dann das was rauskommt nachdem alle Arbeitsschritte abgearbeitet sind. Ein kleines Beispiel, der Logarithmus ist eine Funktion aus der Mathematik die sagt wie oft man eine Zahl mit sich selbst multiplizieren muss um ein Ergebnis zu erhalten. Der Zweierlogarithmus von 8 ist also 3, denn 2*2*2 = 8 somit muss die Zahl Zwei insgesamt 3 mal mit sich selbst Multipliziert werden um 8 zu erhalten. Imperativ würde man so vorgehen:- Zahl = Eingabe
- Ergebnis = 0
- Ist Zahl kleiner gleich 1? Dann sind wir fertig. Gib Ergebnis zurück
- Zahl = Zahl / 2
- Ergebnis = Ergebnis + 1
- Wiederhole ab Schritt 3
Für unser Beispiel mit 8 wäre es also:- Zahl = 8
- Ergebnis = 0
- 8 ist nicht 1, also Zahl = 8 / 2 = 4, Ergebnis = 0 + 1 = 1
- 4 ist nicht 1, also Zahl = 4 / 2 = 2, Ergebnis = 1 + 1 = 2
- 2 ist nicht 1, also Zahl = 2 / 2 = 1, Ergebnis = 2 + 1 = 3
- Zahl ist 1, das Ergebnis ist 3
Auf der anderen Seite haben wir die deklarativen Sprachen. Bei denen sagt man dem Computer was berechnet werden soll, und lässt den Computer entscheiden wie er zu dem Ergebnis kommt. Deklarative Sprachen unterteilt man in logische Programmiersprachen und Funktionale Programmiersprachen. Die Logischen Programmiersprachen sind praktisch wenig relevant für die Meisten, und es gibt praktisch auch nur Prolog als relevanten Vertreter dieser Kategorie. Sie werden in der Künstlichen Intelligenz und bei der Entwicklung von Datenbanksystemen viel eingesetzt. Ich werde hier nicht weiter darauf eingehen, da das gebiete sind die für Einsteiger von geringer Relevanz sind.
Funktionale Sprachen
Zunächst einmal werde ich auf Funktionale Programmiersprachen eingehen. Funktionale Programmiersprachen zeichnen sich vor allem durch ihre nähe zur formalen Mathematik und ihre hervorragenden Eigenschaften zum Prototyping von I/O Programmen, also Programmen welche eine Eingabe bekommen und daraus eine Ausgabe berechnen sollen, aus.
Der folgende Abschnitt ist relativ lang und für die meisten Einsteiger wahrscheinlich irrelevant. Aus meiner Persönlichen Erfahrung sollte man um mit funktionalen Sprachen anzufangen einen gewissen Enthusiasmus für Mathematik und abstrakte mathematische Konzepte mitbringen, da diese Sprachen ansonsten relativ spezialisiert sind und man nicht so die „Aha“ Momente bekommt welche man beim imperativen Programmieren erhält. Zumindest für die erste Programmiersprache ist das sehr wichtig um die Motivation zu erhalten.
Wenn ihr euch damit nicht angesprochen fühlt und könnt ihr diesen Abschnitt auch überspringen, allerdings ist es, auch wenn ihr euch gegen eine solche Sprache entscheidet, hilfreich ein gewisses Grundwissen auch über diese Sprachen zu haben.
Funktionalen Programmiersprachen bauen auf dem Konzept des Lambda Kalküls aus der Mathematik auf. Das Konzept ist deutlich zu kompliziert um es hier in voller Gänze zu erklären, aber die grundlegende Idee ist es das Ergebnis einer Funktion nur abhängig von der Eingabe zu machen.
Am besten erkläre ich das an einem Beispiel mit unserem Logarithmus. In der funktionalen Programmierung ist das Konzept von Ausdrücken essenziell. Ein Ausdruck kann eine konstante sein (z.B. 25) aber auch eine Formel (z.B. 5*5). In Funktionalen Sprachen ist alles ein Ausdruck, welcher versucht wird auf ein Berechenbares Ergebnis herunter zu brechen (z.B. 5*5 = 25). Dazu kann man Funktionen definieren welche man in Ausdrücken verwenden kann. Eine funktionale Definition besteht aus mehreren Definitionen, wobei der Computer dann schaut, abhängig von der Eingabe, welche Definition er zurate zieht und formt damit dann die Eingabe zu einem neuen Ausdruck um.
Die Definitionen für unseren Logarithmus wären: - Ist Eingabe = 1, dann ist das Ergebnis = 0
- Sonst ist das Ergebnis = 1 + Logarithmus(Eingabe / 2)
Wenn man nun den Ausdruck Logarithmus(8) auflösen will schaut der Computer sich die zwei Definition an und sieht 8 ist nicht 1, nimmt daher die Zweite Definition. Logarithmus(8) = 1 + Logarithmus(4).
Der Ausdruck 1 + Logarithmus(4) ist allerdings noch nicht vollständig aufgelöst. Der Computer sieht sich das jetzt an und sieht: "1, damit kann ich rechen, Logarithmus(4), was ist das" und löst den Logarithmus(4) weiter auf. Schlussendlich sieht die Auflösung dann so aus
Logarithmus(8) = 1 + Logarithmus(4) = 1 + 1 + Logarithmus(2) = 1 + 1 + 1 + Logarithmus(1) = 1 + 1 + 1 + 0.
Hierbei hat der Computer die ersten 3 Mal die zweite Definition genommen, und im letzen Schritt dann die erste. Den Ausdruck 1 + 1 + 1 + 0 kann der Computer mit simpler Addition dann berechnen zu 3.
Übrigens, der Ausdruck Logarithmus definiert sich über sich selbst in der Zweiten Definition und wird so lange heruntergebrochen bis man auf dem simplen Fall von Eingabe = 1 gelangt. Dieses Verfahren nennt man Rekursion, eines der Kernkonzepte von funktionalen Programmiersprachen.
Funktionale Sprachen werden vor allem zur Realisierung von Mathematischen Formalen Systemen verwendet. Viel Einsatz finden sie vor allem in der Entwicklung von Kommunikationssystemen. Bekannte Funktionale Sprachen sind z.B.
Haskell. Diese Sprache wird z.B. von Facebook eingesetzt für den Spam Filter, sowie von AT&T, einem der Größten Telekommunikationsunternehmen der Welt, in der Netzwerksicherheitsabteilung um Beschwerden zu analysieren und zu testen. Erlang. Diese Sprache wurde von der Firma Ericsson entwickelt (daher auch der Name ERiccson LANGuage), welche diese Sprache für die Entwicklung von Netzprotokollen wie LTE verwenden.
OCaml. Diese Sprache wird auch von Facebook verwendet um den Javascript und PHP Sourcecode zu analysieren und mögliche Fehler zu entdecken, sowie von Bloomberg zur Evaluation von Finanziellen Risiken in ihren management Anwendungen.
Diese Sprachen ermöglichen es schnell Zuverlässige Software zu bauen durch ihre Einfachheit (für die Logarithmus Funktion haben 2 Zeilen gereicht statt 5 Zeilen Imperativ). Und sind vor allem für Zwecke gut bei denen man eine einfache Eingabe hat und daraus eine Ausgabe berechnen will. Diese Sprachen werden auch gerne für kleine Subsysteme verwendet, statt für ein großes System. Wenn man z.B. ein Spiel entwickelt, wäre für das Rendern (dem Zeichnen auf dem Bildschirm) solche Sprachen recht ungeeignet, für die Physikengine könnte man allerdings wunderbar eine Sprache wie Haskell nehmen und für den Rest dann eine Imperative Programmiersprache verwenden.
Wer allerdings keinen Spaß an Mathematik hat wird an diesen Sprachen (da diese aus einem Mathematischen Konzept erwachsen sind) wohl auch keinen Spaß haben.
Das war zwar nur ein sehr kleiner Einblick in die funktionalen Sprachen, aber für den Anfang sollte es reichen. Ich würde Funktionale Sprachen wirklich nur denen empfehlen die wirklich Spaß an Mathematik haben. Ansonsten würde ich empfehlen erst mit einer Imperativen Sprache zu beginnen und sich später wenn man etwas Erfahrung gesammelt hat sich den Funktionalen sprachen zu widmen.
Mit den deklarativen Sprachen aus dem Weg können wir uns nun den imperativen Sprachen widmen.
Theorie
Nun folgt etwas Theorie. Diese Theorie ist nötig um die Gründe zu verstehen warum sich die Programmiersprachen so unterscheiden, um allerdings nur einen Allgemeinen überblick zu erhalten ist es nicht unbedingt nötig und kann daher, falls kein übermäßiges Interesse an abstrakter Theorie besteht, übersprungen werden.
In der Imperativen Programmierung gibt es praktisch zwei Kernparadigmen, prozeduale Programmierung und Objektorientierte Programmierung. Die Objektorientierte Programmierung (kurz OOP) ist deutlich später aus der prozedualen Programmierung erwachen und ist mehr eine Erweiterung dieser.
Die Idee hinter der prozedualen Programmierung ist es komplexe Aufgaben in einzelne Prozeduren runterzubrechen. Viele Berechnungen, wie den Logarithmus, benötigt mal relativ oft, also erstellt man eine neue Prozedur „Logarithmus“ die eine Zahl als Eingabe bekommt und damit dann die Oben gezeigte Berechnung ausführt. Somit muss man nicht jedes mal immer wieder die selbe Berechnung hinschreiben, sonder kann einfach sagen:
Code:
Eingabe = 8
Ausgabe = Logarithmus(8)
Gib Ausgabe zurück
Prozeduren die einen Wert berechnen bezeichnet man für gewöhnlich als Funktionen. Prozeduren müssen aber keine Funktionen sein. Man kann z.B. auch eine Prozedur haben die etwas macht, aber keinen Wert berechnet. Z.B. das schreiben in eine Datei.
Somit kann ein Großes Problem zu vielen kleinen Problemen runtergebrochen werden (divide and conquer), welche dann einzeln gelöst werden können. Außerdem erlaubt das das einfache Austauschen von Programmteilen ohne dabei das gesamte Program ändern zu müssen.
Die Objektorientierte Programmierung geht noch einen Schritt weiter. Statt nur Funktionalität abzukapseln verknüpft das auch noch Daten mit der Funktionalität. Wenn man z.B. eine Fahrsimulation schreibt, so hat man irgendwo eine Prozedur Fahren die z.B. so arbeitet:
Code:
Fahren(Auto, Ziel)
Solange Auto.Position nicht Ziel:
Route = Navigiere (Auto.Position, Ziel)
Auto.Position = Route.NächsteStraße
Kurze Erklärung: Solange die aktuelle Position des Autos nicht das Ziel ist, berechne die nächste Straße und fahre dann dort hin.
Diese Funktion ist Fest an das Auto gebunden, und es macht praktisch keinen Sinn diese Funktionalität von der Eingabe, also dem Auto zu trennen. Die Idee hinter OOP ist nun Objekte einzuführen, welche Daten und Funktionalität enthalten.
Für unser Auto sähe das dann so aus:
Code:
Objekt Auto:
Daten:
Position
Methoden:
Fahre(Ziel)
Auto.Fahre(Ziel)
Solange DiesesAuto.Position nicht Ziel:
Route = Navigiere (Auto.Position, Ziel)
DiesesAuto.Position = Route.NächsteStraße
Jetzt haben wir ein Objekt Auto was sowohl die eigene Position enthält, als auch die Funktionalität. Prozeduren von Objekten Bezeichnet man übrigens als Methoden.
Unter Imperativen Programmiersprachen ist OOP aktuell Quasi Standard und alle Sprachen die ich im folgenden anspreche, bis auf C, unterstützen eine Form von OOP.
Was man auch noch verstehen muss bevor man Programmiersprachen vergleichen kann ist das Konzept von Variablen deren Typen.
Variablen sind Möglichkeiten Werte zu speichern. Man kann sie sich wie Beschriftete Boxen vorstellen. Wenn ich meine Studienbescheinigung irgendwo aufbewahren möchte tue ich sie in eine Box und beschrifte diese mit Studienbescheinigung. Wenn ich meine Studienbescheinigung dann suche ich einfach nach der Box auf der Studienbescheinigung drauf steht (an dieser Stelle wünscht sich der Autor er hätte sich für ein kürzeres Wort entschieden wenn ich es 4 mal schreiben muss, jetzt ists aber zu spät). So ähnlich funktionieren variablen. Wenn ich einen Wert, z.B. den Namen eines Benutzers speichern will lege ich eine Variable mit dem Namen Benutzername an. Dann kann ich diese beschreiben oder lesen wie ich lustig bin:
Code:
Variable Benutzername
Benutzername = Eingabe() // Benutzername vom Benutzer lesen
Ausgabe("Hallo, " + Benutzername) // Benutzername verwenden um Nutzer zu grüßen
Das Problem was wir nun haben ist, der Computer speichert intern alles als Kombination von 1 und 0 ab. Somit weiß der Computer nicht wenn er jetzt in einer Speicherzelle den wert 1000001 sieht ob das jetzt die Zahl 65 ist, oder der Buchstabe A. Dafür werden Typen verwendet. Ganzzahlen heißen Integer (kurz int) und Texte heißen String.
Der Variable muss man dann nur noch sagen was für ein Typ sie ist, und dann kann der Computer richtig mit dem Wert umgehen.
Z.B.
Code:
Variable Benutzername ist String
Variable Alter ist Integer
Ausgabe("Wie heißt du")
Benutzername = Eingabe()
Ausgabe("Wie alt bist du")
Alter = Eingabe()
Ausgabe("Hallo "+Benutzername+" du bist "+ Alter + " Jahre alt")
Da der Computer weiß das Benutzername ein Text ist, und Alter eine Zahl kann er die Ausgabe korrekt machen.
Als nächstes möchte ich die Syntax, also den Aufbau der Programmiersprachen, etwas näher betrachten. Auch das ist wieder etwas Theoretisch, allerdings es das so essenziell für die Wahl der Programmiersprache, dass ich jedem empfehlen würde diesen Abschnitt zu lesen.
Programmiersprachen kann man in 4 Syntaktische Gruppen unterteilen. Zum einen haben wir die C-artigen Sprachen. Deren Syntax leitet sich von der Syntax der Programmiersprache C ab. Dabei werden vor allem Symbole verwendet. Die Idee dahinter ist das Zeichen wie { und } schneller getippt sind als Worte wie begin und end. Außerdem erlauben diese Sprachen meist Konstrukte welche einige Zeilen Code sparen können, was allerdings auf kosten der Leserlichkeit geht. Ein solches Konstrukt wäre z.B. a = b = c = 1. Dabei wird a, b und c auf eins gesetzt.
C-Artige Sprachen sind Außerdem Case-Sensitiv, das bedeutet es wird auf Groß und Kleinschreibung geachtet. Auto ist also nicht auto und EinName ist nicht einName. Außerdem sind solche Sprachen Typstreng. Das bedeutet man muss immer einen Typen angeben, und der Typ einer Variable kann zwischendurch nicht wechseln.
Neben den C-artigen Sprachen gibt es noch die Wirthschen Sprachen, welche ihren Namen von Nikolaus Wirth bekommen haben. Deren Syntax geht vor allem auf die Programmiersprachen Algol und Pascal zurück, an denen Wirth einen maßgeblichen Teil der Entwicklung beigetragen hat. Diese Sprachen wurden für Didaktische Zwecke entwickelt und sollen zum einen gut leserlich und leicht verständlich sein. Zum Anderen sollen sie den Programmierer dazu zwingen sauber zu programmieren. Diese Sprachen zeichnen sich durch Worte aus die nahe an natürlicher Sprache sind und strikten Regeln die "unsauberen Code" verhindern sollen. Wirthsche Sprachen sind nicht Case-Sensitiv, das heißt die groß und Kleinschreibung ist komplett egal, da dies als Fehlerquelle angesehen wird. Wirthsche Sprachen sind auch Typstreng.
Dann gibt es da noch die Basic Sprachen. Diese Sprachen welche auf die Sprache Basic zurückgehen fokussieren sich darauf möglichst nahe an natürlichem Englisch zu sein, allerdings im Gegensatz zu Wirthschen Sprachen forcieren sie keinen Sauberen Programmierstiel. Im Gegenteil, Dijkstra (einer der wichtigsten Informatiker) schrieb sogar:
Quote:
|
Originally Posted by Edsger W. Dijkstra
Es ist praktisch unmöglich, einem Studenten gutes Programmieren beizubringen, wenn er vorher in BASIC programmiert hat. Als potenzielle Programmierer sind sie geistig verstümmelt ohne Hoffnung auf Besserung
|
Der letzte große Vertreter dieser Sprache ist Microsofts Visual Basic, welches dieses Problem damit angeht das es eine Option Strict gibt. Wenn diese aktiv ist forciert Visual Basic zum Teil sauberen Code. Ist allerdings nicht so streng wie Wirthsche Sprachen z.B. Pascal. Basic Sprachen sind nicht Case-Sensitiv, das heißt die groß und Kleinschreibung ist komplett egal. Außerdem sind sie zwar nicht typ streng, also man muss keinen Typen angeben, sie sind aber Typ statisch. Das heißt der Typ kann im Nachhinein nicht geändert werden. Im VB mit Option strict ist VB allerdings Typstreng
Zu guter letzt haben wir noch die Skriptsprachen Syntax, welche sich durch Skriptsprache wie PHP oder Perl etabliert haben. Diese Syntax legt den Fokus darauf schnell von einem Computer gelesen und Verstanden zu werden. So müssen Variablen oftmals mit einem $ anfangen, damit der Computer schon ab dem ersten Zeichen weiß womit er es zu tun hat. Was die Case-Sensetivity von Skriptsprachen angeht ist das ganze etwas naja, sagen wir mal speziell. PHP ist z.B. zum Teil Case Sensitive und zum Teil nicht. Eine Pauschale Aussage kann man hier nicht treffen. Skriptsprachen sind meist nicht Typstreng dafür aber Typ dynamisch. Das heißt eine Variable kann in einem Moment ein String sein, und im nächsten Moment eine Zahl, je nach dem was grade benötigt wird.
Syntax ist Geschmacksache und damit ein wichtiger Teil bei der Wahl der Programmiersprache. Da gibt es auch eigentlich keine großen Entscheidungshilfen, außer sich Code in verschiedenen Varianten anzuschauen und zu sagen was man ästhetischer findet. Ich persönlich mag Wirthsche Sprachen am liebsten, da ich selbst mitbekommen habe als ich von Visual Basic zu Delphi gewechselt hat wie sehr sich mein Programmierstil verändert hat (zum besseren). Natürlich kann man auch in C oder Basic sauber programmieren, ob man es macht ist aber eine andere Frage.
Um einen kleinen Einblick in die Syntax zu geben hier das Logarithmusbeispiel in den verschiedenen Stilen:
C
Code:
int Log2(int value) {
int result = 0;
while (value != 1) {
value /= 2;
result++;
}
return result;
}
Pascal (Altes Pascal, neues Pascal ist etwas anders, aber zur Demonstration ist das praktischer)
Code:
function Log2(Value: Integer): Integer;
var
Result: Integer;
begin
Result := 0;
While Value <> 1 do
begin
Value := Value div 2;
Inc(Result);
end;
Log2 := Result;
end;
Basic
Code:
Function Log2(Value As Integer) As Integer
Dim Result = 0
While Value <> 1
Value /= 2
Result += 1
End While
Return Result
End Function
Man merke das ich bei Result keinen Typ angegeben habe, unter Option Strict müsste es Dim Result As Integer = 0 heißen.
PHP (Script)
Code:
function Log2($Value) {
$Result = 0;
while ($Value != 1) {
$Value = $Value / 2;
$Result = $Result + 1;
}
return Result;
}
So dass war jetzt aber genug Theorie, kommen wir zu den Sprachen
Sprachübersicht
Hardwarenahe Sprachen
Beginnen wir mit den Hardware nahen Sprachen. Diese laufen direkt auf der Maschine habe damit großes Potential stark optimiert zu werden, und bieten die Möglichkeit viel über die Funktionsweise von Computern zu lernen. Leider muss man deshalb oft sehr kleinschrittig arbeiten, da man alles selbst machen muss. Außerdem kann es gut vorkommen das die Software die unter 64 Bit Windows problemlos funktioniert, unter 32 Bit Linux ganz und gar nicht funktioniert. Durch ihre Systemnähe hat der Programmierer auch viel Einfluss über Speicherverwaltung, was diese Sprachen sehr gut zur Entwicklung von Gamehacks macht.
C Als erstes hätten wir C. C ist explizit zur Entwicklung von Betriebsystemen entwickelt worden, mit dem Fokus so nah wie möglich an der unterliegenden Maschine zu arbeiten. C verwendet wie bereits erwähnt die C Syntax. C Wird vor allem im hardware nahen Bereich eingesetzt. So werden Betriebsysteme, Treiber und software für Mikrocontroller (z.B. Software für Autos, Öfen, etc.) fast ausschließlich in C entwickelt. C bietet nur sehr wenige Möglichkeiten höherer Sprachen, so ist C rein Prozedual und erlaubt keine OOP Entwicklung. C Code wird oft sehr unübersichtlich. C ist außerdem sehr stark Plattformabhängig. Auf einem 16 Bit System ist der typ int zum Beispiel 16 Bit groß, auf einem 32 Bit oder 64 Bit System allerdings 32 Bit. Diese Diskrepanzen können dafür sorgen das Code der perfekt auf einem System läuft auf einem anderen System praktisch nicht läuft.
Außerdem hat C eine sehr kleine Standardbibliothek. Das bedeutet man muss sehr oft Betriebsystem Funktionen verwenden. Damit ist es auch ein riesen Unterschied ob man Windows oder Posix (Linux, Mac, etc.) Systeme verwendet
Ich würde niemandem der nicht stark masochistisch veranlagt ist, oder hardware nah arbeiten möchte, C empfehlen. Wer allerdings Lust hat sich mit Microcontrollern eigene Dronen o.ä. zu bauen ist wohl am besten mit C beraten.
| IDE | Download |
|---|
| Visual Studio Express |  | | Code::Blocks |  | | Xcode IDE |  | | Eclipse |  | | NetBeans |  | | JetBrains CLion |  |
Pascal Als nächstes haben wir object Pascal bzw. Delphi. Diese Sprache ist eine Erweiterung zu dem alten Pascal, und ist sowohl OOP als auch prozedual. Obwohl man in Pascal theoretisch auch Betriebsysteme, Treiber, etc. schreiben könnte, wird Pascal dafür kaum verwendet, da zum einen C bessere Syntaktische Möglichkeiten dafür hat (durch die strikte Syntax würde der Code einfach mindestens doppelt so lang werden) und zum anderen C durch sein Design (da es genau dafür Designed wurde) besser für diese Zwecke optimieren lässt. Stattdessen bietet Pascal mit einer großen Standardbibliothek die Möglichkeiten relativ schnell komplexe Anwendungen zu schreiben, ohne dabei sich zu weit von der Maschine zu entfernen.
Außerdem ist Pascal, da es ursprünglich als Lehrsprache konzipiert war (mittlerweile aber mehr Richtung Multipurpose geht) sehr leserlich und forciert einen leserlichen Programmierstil.
Ich würde Pascal jedem empfehlen der gerne mehr über die Funktionsweise von Computern lernen will, allerdings dennoch in der Lage sein möchte größere Anwendungen mit vielen Features zu schreiben.
Um kurz klar zu stellen was ich mit größeren Anwendungen meine, das sind Anwendungen die viele Features verwenden wie Netzwerkkommunikation oder Grafische Anwendungen. Ohne eine Bibliothek die das unterstützt (z.B. in C) ist es meist ein sehr großer Aufwand so etwas zu schreiben. In Pascal ist z.B. das erstellen einer Grafischen Anwendung mit Buttons und Eingabefeldern mit wenigen Klicks in einem Grafischen Editor erledigt, und eine Chat Anwendung sind auch nur ein Bruchteil des Codes den man in C brauchen würde. Eine große Standardbibliothek garantiert auch mehr Unabhängigkeit vom System, da die Standardfunktionen so definiert sind das sie auf jeder Plattform gleich laufen.
| IDE | Download |
|---|
| Delphi Starter (Free) |  | | Delphi ($$$) |  | | Lazarus |  |
C++ Kommen wir zu C++. C++ ist nicht (wie oftmals fälschlicherweise angenommen) eine Erweiterung zu C, sondern ist eine neue Sprache die auf C aufbaut. C++ ist Objektorientiert und prozedual. Der größte Vorteil von C++ und gleichzeitig der größte Nachteil ist das C++ sehr C Kompatibel ist, also vieles von C 1:1 übernommen werden kann und in speziell markierten Bereichen man sogar reinen C Code programmieren kann. Damit erbt C++ alle Vor-und alle Nachteile von C. So kann man an stellen die hohe Performance brauchen C code verwenden, und überall sonst, wo Geschwindigkeit zweitrangig ist C++ verwenden.
Außerdem nimmt C++ unter den Programmiersprachen eine besondere Rolle ein. C++ ist dafür designed praktisch alles zu können. Fast jedes imperative Paradigma ist in C++ integriert. Das bedeutet nicht das es sinnig ist alle zu verwenden, einige Features schließen sich auch gegenseitig aus. Diese Features sind Integriert um vollständig zu sein. Es gibt kein übergeordnetes Designziel als das. Während andere Sprachen sich auf wenige Paradigmen Konzentrieren und diese forcieren um einen bestimmen Codingstil zu erzeugen ist in C++ praktisch alles möglich. Das hat allerdings auch den Nachteil, dass Code für ein und die selbe Aufgabe von verschiedenen Leuten komplett unterschiedlich sein kann. Das kann zu sehr viel Verwirrung und dummen Fehlern führen.
Die Standardbibliothek von C++ ist deutlich größer als die von C, und mit Drittbibliotheken wie Boost und QT kann man auch größere Anwendungen problemlos realisieren (Siehe Pascal abschnitt). Außerdem ist C++ wahrscheinlich die Sprache mit der größten Community, daher ist es nicht so schwer weitere Bibliotheken zu finden.
C++ würde ich denen Empfehlen die entweder mal alles sehen wollen was die Welt des Imperativen Programmierens zu bieten hat, oder Leute die Systemnah programmieren wollen denen C zu umständlich ist und kein Pascal lernen wollen.
Wer außerdem gerne Game engines schreiben will kommt um C++ nicht drum rum. Außerdem ist es mit der Unreal Engine auch einfach möglich Spiele zu schreiben ohne dabei bei 0 anfangen zu müssen.
| IDE | Download |
|---|
| Visual Studio Express |  | | Code::Blocks |  | | Xcode IDE |  | | Eclipse |  | | NetBeans |  | | JetBrains CLion |  |
Es gibt zwar noch viele weitere Hardwarenahe Programmiersprachen (Ada, D, etc.) aber die alle zu erwähnen würde jeden Rahmen sprengen.
Höhere kompilierte Sprachen
Nun kommen wir zu höheren kompilierten Programmiersprachen. Das sind Sprachen die zwar auch Maschinenennah laufen, allerdings durch das Sprachdesign dem Nutzer vieles abnehmen was er bei C(++) oder Pascal selbst machen müsste. Das macht sie zum einen recht effizient, erlaubt dem Nutzer allerdings gleichzeitig mit wenig aufwand viel zu erreichen.
Swift Zum einen hätten wir da Swift. Diese Sprache wurde von Apple entwickelt und ist praktisch nur relevant für Leute die für iOS oder MacOS entwickeln wollen. Swift ist Prozedual und OOP und hat sogar noch einige Elemente aus der Funktionalen Programmierung. Swift setzt sich zum Ziel gängige Fehlerquellen zu eliminieren und den Nutzer bei der schnellen Entwicklung komplizierter Funktionen zu unterstützen. Dafür bedient sich Swift bei allem was sich als gut bewährt hat. Swift ist eine sehr gute allrounder Sprache. Außerdem eignet sich Swift auch hervorragend für die Spieleentwicklung dank Apples SpriteKit.
Durch eine große Standardbibliothek von Apple ist es auch kinderleicht mit Swift jede Art von App schnell zu entwickeln
Swift würde ich jedem empfehlen der vor hat iOS oder MacOS Apps und Spiele zu entwickeln.
| IDE | Download |
|---|
| App Code |  | | Xcode |  |
| Book |
|---|
 |  |
GO Die zweite (und letzte Sprache) dieser Kategorie ist Go. Go ist eine von Google entwickelte Programmiersprache. Go zeichnet sich durch sehr gute Nebenläufigkeit aus. Zusammen mit der hohen Effizienz durch die Hardwarenähe ist Go hervorragend geeignet für Netzwerk und Serveranwendungen, sowie alles was gut im Multitasking sein muss. So wird Go zum einen natürlich von google verwendet, die YouTube Datenbankverbindung ist in Go geschrieben, sowie der Downloadserver von Google selbst. Außerdem ist Docker in Go geschrieben oder der Online dienst Cloudflare verwendet Go.
Go würde ich jedem Empfehlen der gerne Netzwerkanwendungen z.B. Chats, Filesharing Plattformen oder Server für Online Spiele schreiben möchte.
Leider fehlt mir bisher noch Literatur und IDE’s für GO. Falls jemand gute kennt kann er mich das doch bitte wissen lassen, dann füge ich diese hinzu.
Bytecode Sprachen
Die nächste Kategorie sind die so genannten Bytecode Sprachen. Hierbei wird das Programm nicht für den Tatsächlichen Rechner geschrieben auf dem es läuft, sondern diese Programme laufen in einer Virtuellen Maschine. Das erlaubt Code komplett unabhängig von dem System zu schreiben auf dem es läuft, während dennoch eine relativ hohe Geschwindigkeit erhalten wird, da Virtuelle Maschinen sehr effizient implementiert werden können. Außerdem erlaubt das der Virtuellen Maschine den Code zu beeinflussen wie es auf einer echten CPU kaum möglich wäre. Das erlaubt den Sprachen viele sehr angenehme Features zu implementieren die einem das Programmieren sehr einfach machen können. Dazu bieten diese Sprachen riesige Standardbibliotheken an, die praktisch alle anderen Sprachen in den Schatten stellen. Allerdings wird das vorhanden sein der VM auf dem Zielrechner vorausgesetzt. Durch das laden der VM brauchen die Anwendungen allerdings auch mehr Speicher und sind etwas langsamer.
.Net (C#/VB) Zunächst einmal sind da die .Net Sprachen C# (C-Sharp) und VB.Net (Visual-Basic.Net). Diese wurden von Microsoft entwickelt und sind für die schnelle Entwicklung mittelgroßer bis großer Anwendungen. Die Standardbibliotheken, das .Net framework enthält dazu alles was man braucht. Ob man nun einen Chatservice schreiben will, oder einen Musikplayer, alles lässt sich schnell und einfach realisieren. Da diese Sprachen von Microsoft entwickelt wurden zielen sie in erster Linie auf die Entwicklung für Windows, das Open Source Projekt Mono und Microsofts .Net core bieten allerdings die Grundfunktionalität des .Nets auch auf anderen Systemen an. So kann man auch Apps für iOS oder Android sowie Linux und Mac Anwendungen damit schreiben. Allerdings implementieren sie nicht den vollen Umfang des .Net und der Programmierer muss eventuell ein paar Dinge selbst in die Hand nehmen, die unter Windows einfacher sind.
Noch dazu bieten die Sprachen einfache Möglichkeiten der Nebenläufigkeit bieten damit also auch super Möglichkeiten des Multitaskings. Mit dem WPF Framework des .Net lassen sich auch sehr leicht grafisch aufwendige Anwendungen mit Effekten oder ähnlichem Realisieren.
Diese beiden Sprachen sind außerdem Austauschbar. Beide haben die selben Features und unterscheiden sich praktisch rein in der Syntax. Wer die Basic Syntax bevorzugt kann VB verwenden, wer die C Syntax bevorzugt kann C# nehmen.
Außerdem sind diese beiden Sprachen rein OOP, und forcieren damit die Nutzung von Objekten, da alles in .Net ein Objekt ist (im Gegensatz zu z.B. Swift was OOP und Prozedual ist).
Empfehlen kann ich diese Sprachen jedem der gerne schnell Resulate sehen will, in seinen Möglichkeiten allerdings nicht begrenzt sein möchte. Dafür muss man ein paar abstriche bei der Performance machen. Aber für den größten Teil der Anwendungen ist .Net mehr als schnell genug. C# und VB sind außerdem recht gut geeignet für die Entwicklung von Gamehacks, auch wenn durch die fehlende Hardwarenähe es teilweise nicht so einfach ist wie C(++) oder Pascal.
Durch die Gameengine Unity ist es auch sehr gut möglich in C# sehr einfach Spiele zu entwickeln. Wer einen einfachen einstieg in dieses Thema sucht ist mit C# definitiv gut beraten.
| IDE | Download |
|---|
| Visual Studio Express |  | | Project Rider |  | | Eclipse |  | | NetBeans |  | | SharpDevelop |  | | MonoDevelop |  | | Mono |  |
Leider kenne ich keine VB.Net Bücher. Falls jemand ein gutes kennt lasst es mich wissen.
Java Der zweite große Player in dieser Kategorie ist Java. Java verwendet seine VM Technologie um Programme überall zum laufen zu bekommen. Die JVM (Java Virtual Machine) läuft auf praktisch jedem System, was dafür sorgt das Java Anwendungen überall gleich laufen. So verwenden z.B. Radiohersteller Java, sodass sie nur die JVM für das Radio bereitstellen müssen, und ansonsten die selbe Software auf dem Radio laufen lassen können wie auf dem Vorgängermodell. Java kommt praktisch überall zum Einsatz, Autoradios, Fernseher, Computer und Handys. Java ist außerdem die Hauptsprache für Android Entwicklung.
Syntaktisch ist Java eine C-Artige Sprache, welche allerdings sehr strikt ist. Somit versucht Java Fehler aufgrund von unachtsamen Programmieren zu vermeiden und forciert einen sauberen Programmierstil. Java ist fast so strikt wie Pascal.
Java ist außerdem wie .Net rein OOP und bietet auch eine sehr große Standardbibliothek die problemlos mit dem .Net mithalten kann. Außerdem ist Java eine der meist verwendeten Sprachen überhaupt, was bedeutet das die Community und damit auch die Verfügbarkeit von Drittbibliotheken sehr groß ist. Java bietet auch einige sehr gute Möglichkeiten für einfache Entwicklung und Nebenläufigkeit wie .Net. Allerdings ist Java in den Letzen Jahren nicht mehr so innovativ und während zu C# und VB regelmäßig coole (subjektiv) neue Features hinzukommen die den Entwickler das Leben sehr einfach machen (sollen), ist Java da doch eher konservativer (was sich zum Teil auch auf die Striktheit zurückführen lässt).
Java würde ich allen Empfehlen die ihre Software auf allen Systemen laufen lassen wollen oder für Android Entwickler ist Java die Sprache der Wahl. Java eignet sich außerdem sehr gut für Netzwerk und Webentwicklung da die Java Enterprise Edition extra dafür entwickelt wird ausgelegt ist. Java ist aber praktisch gänzlich ungeeignet für Gamehacks.
| IDE | Download |
|---|
| IntelliJ IDEA |  | | NetBeans |  | | Eclipse |  |
Scriptsprachen
Die letze Kategorie sind die Skriptsprachen. Diese Sprachen haben meistens einen ganz bestimmten Zweck und sind darin sehr gut. Sie laufen nicht in einer Virtuellen Maschine sonder in einem Interpreter. Das ist zwar deutlich ineffizienter als die VM Variante, erlaubt aber noch mehr Funktionen die unter einer VM nicht möglich wären. Dazu gehören zum Beispiel Dynamische Typen. Skriptsprachen sind vor allem für sehr kleine Aufgaben geeignet, erlauben es dafür meist diese sehr einfach zu umzusetzen. Sie werden überall dort eingesetzt wo Geschwindigkeit keine rolle spielt so lange es "schnell genug" geht. Z.B. bei einer Website, wenn die Website 500ms zum laden braucht ist es egal ob das Programm was die Website generiert in 100ms oder in 10ms fertig ist.
AutoIt Zunächst einmal gibt es da die Sprache AutoIt, welche auf diesem Board recht beliebt ist. AutoIt ist entwickelt worden um, wie der Name bereits sagt, Vorgänge zu automatisieren. Sei es nun bei E-Bay auf ein Objekt zu bieten, Dateien zu durchsuchen, oder Klicks in einem Spiel zu simulieren (z.B. einen Farmbot zu erstellen), all diese kleinen Aufgaben sind mit AutoIt ein Kinderspiel. Das ist das worin AutoIt sehr gut ist. Für größere Projekte ist diese Minimalistisch gehaltene Sprache allerdings nicht gut geeignet. Viele Features die andere Programmiersprachen haben wurden weggelassen, da diese für den Kernzweck nicht benötigt werden.
AutoIt würde ich jedem empfehlen der einfach nur kleine Hilfsprogramme schreiben möchte oder einen sehr einfachen einstieg in Gamehacking sucht.
| IDE | Download |
|---|
| SciTE |  | | Automate Studio (Eigenwerbung) |  |
| Book |
|---|
 |
Javascript Die nächste Skriptsprache ist Javascript. Anders als der Name vermuten lässt hat die Sprache mit Java nichts gemein. Ursprünglich als kleine Sprache angefangen um Webseiten etwas mehr Funktionalität zu geben ist diese Sprache mittlerweile ein guter Allrounder geworden. Diese Sprache eignet sich vor allem sehr gut zur Entwicklung von Apps. Mit etwas HTML und CSS kann man kinderleicht kleine bis mittelgroße Apps erstellen, welche in einem Browser laufen. Das erlaubt es den Apps auf fast jedem System zu laufen. Sei es Android, iOS, oder auch SmartTV’s laufen mittlerweile fast ausschließlich mit Javascript. Noch dazu erlaubt es Node.js auch Serveranwendungen wie Webserver damit zu schreiben.
Javascript ist eigentlich prozedual, bietet allerdings auch eine sehr eigene Form des OOP an.
Javascript ist ein Muss für die Webentwicklung und ich würde es jedem empfehlen der vor allem Apps schreiben will, grade für Smartphones gibt es kaum einen einfacheren einstieg der vor allem sowohl iOS als auch Android abdeckt.
| IDE | Download |
|---|
| PhpStorm |  | | NetBeans |  | | Sublime Text |  | | Atom |  | | vsCode |  |
Wo wie schon bei Webentwicklung waren kommen wir nun zu PHP. PHP ist für das so genannte Backend von Webseiten entwickelt worden. Also alles was im Hintergrund passiert. Die Verbindung mit der Datenbank sowie das generieren von dynamischen/nutzerabhängigen Inhalten der Website kann durch PHP geregelt werden.
Ich würde PHP jedem empfehlen der Webseiten entwickeln möchte. Es gibt zwar mit Node.js oder Python alternative Skriptsprachen dafür, aber PHP ist nach wie vor die größte und ist der Quasi-Standard für die meisten großen Webapps.
| IDE | Download |
|---|
| PhpStorm |  | | NetBeans |  | | Sublime Text |  | | Atom |  |
Python Als letzes kommen wir zu Python. Python nimmt eine etwas besondere Rolle ein. Python bietet einem Zwar viele Vorteile von Skriptsprachen, erlaubt es dem Programmierer sich allerdings dennoch "die Hände schmutzig zu machen" durch die Möglichkeit zum Teil sehr Systemnah zu arbeiten. Somit muss man nicht immer C rausholen um mal eben ein paar kleine Systemanwendungen zu schreiben.
Gleichzeitig bietet Python vielseitige Einsatzmöglichkeiten, zum einen kann man damit Webanwendungen schreiben wie mit PHP oder Node.js, zum anderen wird es oft zum Automatisieren von Jobs im Systemen verwendet die recht Low level sind. Linux Distributionen wie Mint oder Ubuntu verwenden viele Python scripts um Konfigurationsdateien zu bearbeiten. Aufgaben die früher Klassisch in C gemacht wurden. Das erlaubt es sehr schnell einfache Tools zu schreiben, aber auch Prototypen für größere Projekte, welche bei erfolg danach in C oder C++ umgesetzt werden können.
Python ist auch beliebt für Mathematische Formeln zu berechnen, Bots für Chatservices zu schreiben, oder auch software für den Raspberry Pi (dem Python sogar seinen Namen gegeben hat) zu entwickeln.
Python ist eigentlich sehr gut für jeden der gerne in Programmierung in seiner Reinsten Form Reinschnuppern wollen, ohne die ganzen Nachteile von Hardware nahen Sprachen.
| IDE | Download |
|---|
| PyCharm |  | | Sublime Text |  | | Atom |  |
Schlusswort
Zunächst einmal möchte ich denen die diesen viel zu langen Beitrag vollständig gelesen haben danken. Auch wenn es mir viel Spaß gemacht hat diesen Beitrag zu schreiben ist es dennoch viel Aufwand gewesen und daher freut es mich das Leute genug Interesse gezeigt haben fast 40 tausend Zeichen in fast 6 tausend Wörtern zu lesen.
Ich hoffe ich konnte etwas Klarheit schaffen und euch bei eurer Suche nach der Richtigen Programmiersprache für euch unterstützen. Ich freue mich immer wieder wenn neue Leute mit dem Programmieren anfangen, da es zum einen sehr viel Spaß macht, zum anderen einfach ein wichtiges Handwerk zu beherrschen ist im Digitalen Zeitalter. Ich hoffe das ihr mindestens genauso viel Spaß am Programmieren findet wie ich. Falls ihr irgendwelche Rückfragen habt stellt sie doch gerne in diesen Thread, ich versuche sie so schnell und gut wie möglich zu beantworten.
Nun folgt noch der original thread von Devsome, komplett uneditiert. Falls es euch gefällt geht doch zu 
Programming language and their IDEs + Books & Tutorials
Reprimands / Verweise

Anwendungen / Application
C Plus Plus ( C++ )C++ ist eine von der ISO genormte Programmiersprache. Sie wurde ab 1979 als Erweiterung der Programmiersprache C entwickelt. C++ ermöglicht sowohl die effiziente und maschinennahe Programmierung als auch eine Programmierung auf hohem Abstraktionsniveau. Der Standard definiert auch eine Standardbibliothek, zu der verschiedene Implementierungen existieren.
C++ is an ISO standardized programming language, that was developed as an extension to the programming language C since 1979. C++ allows efficient and machine-oriented programming with a high level of abstraction. The standard also defines a standard library, for which many implementations are available.
| IDE | Download |
|---|
| Visual Studio Express |  | | Code::Blocks |  | | Xcode IDE |  | | Eclipse |  | | NetBeans |  | | JetBrains CLion |  |
CC ist eine imperative Programmiersprache. (Befehlende Programmiersprache) Sie wird zur System- und Anwendungsprogrammierung eingesetzt. Die grundlegenden Programme aller Unix-Systeme und die Systemkernel vieler Betriebssysteme sind in C programmiert. Zahlreiche Sprachen, wie C++, Objective-C, C#, D, Java, JavaScript, PHP, Vala oder Perl, orientieren sich an der Syntax und anderen Eigenschaften von C.
C is an imperative programming language (commanding programming language). It is used for system and application programming. All fundamental programs of Unix systems and the system kernels of many operating systems are written in C. Various languages, such as C++, Objective-C, C#, D, Java, JavaScript, PHP, Vala or Perl are oriented to the syntax and other properties of C.
| IDE | Download |
|---|
| Visual Studio Express |  | | Code::Blocks |  | | Xcode IDE |  | | Eclipse |  | | NetBeans |  | | JetBrains CLion |  |
C-Sharp (C#)C# ist eine typsichere, objektorientierte Allzweck-Programmiersprache. Die Sprache ist an sich plattformunabhängig, wurde aber im Rahmen der .NET-Strategie entwickelt, ist auf diese optimiert und ist meist in deren Kontext zu finden. Historisch wurde in C# fast exklusiv für Microsoft Windows entwickelt.
C# is a typical object oriented all-purpose programming language. The language per se is platform independent. However, it was developed within the .NET-strategy and therefore is optimized with regard to that strategy and can typically be found in that context.
| IDE | Download |
|---|
| Visual Studio Express |  | | Project Rider |  | | Eclipse |  | | NetBeans |  |
.NET.NET [ˈdɔtnɛt], teilweise auch als Microsoft .NET bezeichnet, ist der Name einer von Microsoft herausgegebenen Software-Plattform, die der Entwicklung und Ausführung von Anwendungsprogrammen dient. .NET besteht aus mehreren, auch als Plattform bezeichneten Frameworks, von denen .NET Framework als bekanntestes begrifflich oft synonym für .NET gebraucht wird, sowie Programmiersprachen und Entwicklungsumgebungen.
.NET [ˈdɔtnɛt], partially also referred to Microsoft .NET, is the name of a software platform published by Microsoft. Its purpose is the development and execution of application programs. Besides of other programming languages and development environments, .NET contains multiple frameworks, frequently termed as platforms, of which .NET Framework is the most popular terminology and is often used as a synonym for .NET.
| IDE | Download |
|---|
| Visual Studio Express |  | | SharpDevelop |  | | MonoDevelop |  | | Mono |  |
JAVAJava ist eine objektorientierte Programmiersprache, welches 2010 von Oracle aufgekauft wurde. Die Programmiersprache ist ein Bestandteil der Java-Technologie – diese besteht grundsätzlich aus dem Java-Entwicklungswerkzeug (JDK) zum Erstellen von Java-Programmen und der Java-Laufzeitumgebung (JRE) zu deren Ausführung. Die Laufzeitumgebung selbst umfasst die virtuelle Maschine (JVM) und die mitgelieferten Bibliotheken. Java als Programmiersprache darf nicht mit der Java-Technologie gleichgesetzt werden, Java-Laufzeitumgebungen führen Bytecode aus. Im Prinzip könnte jede Programmiersprache als Grundlage für Java Bytecode genutzt werden, meistens existieren aber keine entsprechenden Bytecode-Compiler.
Java is an object-oriented programming language, that was bought up by Oracle in 2010. The programming language is an integral part of the Java technology – that consists of the Java Development Kit (JDK) for the creation of Java programs and the Java Runtime Environment (JRE) for their execution. The runtime environment includes the Java Virtual Machine (JVM) and the provided libraries. Java as a programming language is not to confuse with the Java technology – Java runtime environments execute bytecodes, that can be used as a basis for every programming language. However, mostly there are no appropriate bytecode-compiler available.
| IDE | Download |
|---|
| IntelliJ IDEA |  | | NetBeans |  | | Eclipse |  |
SwiftSwift ist eine Programmiersprache entwickelt von Apple für iOS, macOS, tvOS, watchOS und Linux. Es handelt sich um eine objektorientierte Sprache, die Ideen von Objectiv-C, Rust, Ruby, Python, C# und anderen Programmiersprachen aufgreift.
Swift is a programming language developed by Apple for iOS, macOS, tvOS, watchOS and Linux. It is an object-oriented language, that takes up concepts of Objectiv-C, Rust, Ruby, Python, C# and other programming languages.
| IDE | Download |
|---|
| App Code |  | | Xcode |  |
| Book |
|---|
 |  |
AutoItAutoIt ist eine Software zum Ausführen von Skripten, mit denen hauptsächlich Abläufe unter Microsoft Windows automatisiert werden können, aber auch komplette Windows-Applikationen geschrieben werden können. AutoIt ist Freeware und läuft unter NT, 2000, XP, Vista, 7, 8 und 10.
AutoIt is a software for the execution of scripts, which are primarily used to automate procedures on Microsoft Windows. However, also complex Windows applications can be created with AutoIt. It is a freeware and is compatible with NT, 2000, XP, Vista, 7, 8, and 10.
| IDE | Download |
|---|
| SciTE |  | | Automate Studio |  | danke @ für Automate Studio
| Book |
|---|
 |
Webanwendungen/Web application
PHPPHP ist eine Skriptsprache mit einer an C und Perl angelehnten Syntax. Es wird verwendet für die Erstellung dynamischer Webseiten oder Webanwendungen. PHP zeichnet sich durch breite Datenbankunterstützung und Internet-Protokolleinbindung sowie die Verfügbarkeit zahlreicher Funktionsbibliotheken aus.
PHP is a scripting language with a syntax inspired by C and Perl. It is used for the creation of dynamic websites and web applications. PHP is characterized by broad database support and internet protocol integration, as well as the availability of numerous function libraries.
| IDE | Download |
|---|
| PhpStorm |  | | NetBeans |  | | Sublime Text |  | | Atom |  |
JavascriptJavaScript (kurz JS) ist eine Skriptsprache, die ursprünglich für dynamisches HTML in Webbrowsern entwickelt wurde, um Benutzerinteraktionen auszuwerten, Inhalte zu verändern, nachzuladen oder zu generieren und so die Möglichkeiten von HTML und CSS zu erweitern. Heute findet JavaScript auch außerhalb von Browsern Anwendung, so etwa auf Servern und in Microcontrollern.
JavaScript (short JS) is a scripting language, that was developed for dynamic HTML in web browsers originally, to evaluate user interactions, to modify, reload or generate contents, and thus expand the possibilities of HTML and CSS. Today, JavaScript is applied also beyond web browsers, for instance on servers or microcontrollers.
| IDE | Download |
|---|
| PhpStorm |  | | NetBeans |  | | Sublime Text |  | | Atom |  | | vsCode |  |
JQueryjQuery ist die meistverwendete freie JavaScript-Bibliothek, die Funktionen zur DOM-Navigation und -Manipulation zur Verfügung stellt.
Rund jede zweite Website und drei Viertel der 10.0000 meistbesuchten Websites nutzt jQuery (Stand. 2014)
jQuery is the most used independent JavaScript library, that provides functions for DOM navigation and manipulation.
Approximately every second website and three-quarters of the 10.000 most visited websites use jQuery (2014).
| IDE | Download |
|---|
| PhpStorm |  | | NetBeans |  | | Sublime Text |  | | Atom |  |
Allrounder
PythonPython ist eine universelle, üblicherweise interpretierte höhere Programmiersprache. Sie will einen gut lesbaren, knappen Programmierstil fördern. So wird beispielsweise der Code nicht durch geschweifte Klammern, sondern durch Einrückungen strukturiert. Wegen ihrer klaren und übersichtlichen Syntax gilt Python als einfach zu erlernen.
Phyton is a universal, usually interpreted as a higher programming language. It tries to promote an easy-to-read and short programming style. For example, the code is structured by indentations and not as usual with brackets. Owing to its clear and open syntax, Phyton ranks as an easy-to-learn programming language.
| IDE | Download |
|---|
| PyCharm |  | | Sublime Text |  | | Atom |  |
PerlPerl ist eine freie, plattformunabhängige und interpretierte Programmiersprache (Skriptsprache), die mehrere Programmierparadigmen unterstützt.Hauptziele sind eine schnelle Problemlösung und größtmögliche Freiheit für Programmierer.
Perl is an open and platform independent programming language (script language), supporting multiple programming paradigms. Main goals are quick problem solutions and greatest possible freedom for programmers.
| IDE | Download |
|---|
| Padre |  | | Komodo |  | | Sublime Text |  | | Atom |  |
Book
RubyRuby ist objektorientiert, unterstützt aber mehrere weitere Programmierparadigmen. Ein Programm in Ruby wird zur Laufzeit interpretiert. Es kann benutzt werden um Konsolen Anwendungen aber auch GUI-Tools, Spiele sind genauso möglich wie Datenbanken- oder Netzwerkzugriffe. Webapplikationen sind natürlich auch möglich.
Ruby is object-oriented but supports several additional programming paradigms. A program in Ruby is interpreted by its run time. It can be used for console applications or GUI tools, but also games, database and network accesses and web applications are possible.
| IDE | Download |
|---|
| Aptana |  | | RubyMine |  | | Komodo |  |
[Changelog]
02.03.2017 - published
04.03.2017 - added JetBrains CLion
04.03.2017 - added two more Javascript books
06.03.2017 - added en version - @
|
|
|
01/04/2018, 00:25
|
#2
|
elite*gold: 0
Join Date: May 2010
Posts: 6,853
Received Thanks: 5,106
|
#pinned
|
|
|
 |
Similar Threads
|
Übersicht: Bücher um programmieren zu lernen!
01/06/2017 - General Coding - 31 Replies
Hallo Community,
nachdem ich einige Topics bzw. explizit ein Topic gesehen habe, indem nach einem Buch bzw. einer PDF oder eBook gefragt wird, um Java zu lernen, habe ich mich entschlossen eine Übersicht an Büchern anzufertigen.
Anwendungen
C - Programmierung
C Primer Plus: Amazon.de: Stephen Prata: Englische Bücher (Rezension: 4,7 Sterne / Englisch)
|
Programmiersprachen Übersicht
08/26/2013 - General Coding - 65 Replies
Das es so einen ähnlichen Thread schon gibt(http://www.elitepvpers.com/forum/epvp-coders/ 57282-die-software.html) ist mir bekannt, allerdings handelt es sich dort nur um die Software und der Threadersteller ist gebannt.
Da aber selbst ich nicht allwissend bin, erlaube ich es euch in meiner unendlichen Güte mich zu ergänzen :p
C++
Bücher
Buch|Beschreibung
Die C++-Programmiersprache: Deutsche Übersetzung der Special Edition | Wohl das beste Buch. Allerdings für Anfänger eher...
|
All times are GMT +1. The time now is 19:48.
|
|