Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 19:47

  • Please register to post and access all features, it's quick, easy and FREE!

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.

Reply
 
Old   #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:
  1. Zahl = Eingabe
  2. Ergebnis = 0
  3. Ist Zahl kleiner gleich 1? Dann sind wir fertig. Gib Ergebnis zurück
  4. Zahl = Zahl / 2
  5. Ergebnis = Ergebnis + 1
  6. 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.


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.


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.

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.



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.



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.



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.


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
warfley is offline  
Thanks
10 Users
Old 01/04/2018, 00:25   #2



 
Serraniel's Avatar
 
elite*gold: 0
The Black Market: 205/1/0
Join Date: May 2010
Posts: 6,853
Received Thanks: 5,106
#pinned
Serraniel is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.