Welche Programmiersprache sollte ich erlernen ?

01/19/2012 22:40 DROP³#1
Hey,
Ich habe schon Tage, wenn nicht sogar Wochen nach der Antwort auf diese Frage gesucht.
Die Suchfunktion des Forums habe ich auch benutzt und wirklich sehr viele Themen zu dieser Frage gefunden.
Trotzdem habe ich noch keine Antwort auf meine Frage gefunden: "Welche Programmiersprache sollte ich erlernen ?"

Nun möchte ich einfach mal einen eigenen Thread zu dieser Frage eröffnen.

Die einen sagen AutoIt (Ja ich weiß, dass AutoIt keine Programmiersprache ist.)
und die anderen sagen ich sollte gleich mit C++ beginnen,
da dies die "beste" Sprache mit unbegrenzten Möglichkeiten ist.
Java und Visual Basic wird Anscheinend auch sehr oft für den Einstieg empfohlen.

In Visual Basic habe ich mich die Tage schon einmal eingelesen und auch schon ein paar kleine Tools programmiert.
(E-Mail Client, Spam Bot, Passwort Generator)
Gefällt mir eigentlich ganz gut, aber so wirklich Überzeugt bin ich noch nicht.

Das programmieren sollte mir Spaß machen.
Ein Richtiges Ziel habe ich dabei (noch ?) nicht vor Augen.

Wenn ihr mir eine Sprache empfehlt, sagt nicht einfach "AutoIt, weils einfach qaiiL ist !!! *-*" sondern beschreibt,
Was man mit dieser Sprache alles machen kann und was nicht.
Zählt bitte die Vor- und Nachteile der jeweiligen Sprache auf und warum ihr mir genau diese Sprache für den Enstieg empfehlen könnt.

Könnt ihr mir Bücher empfehlen ? Am besten wären ein Amazon Link und einige Wörter dazu.
Dieses C++ Tutorial wurde mir jetzt schon mehrmals empfohlen: [Only registered and activated users can see links. Click Here To Register...]
Was haltet ihr davon ?
Sollte ich dieses wählen, falls ich mich für C++ entscheide ?

Ich hoffe ihr könnt mir bei dieser wirklich schweren Entscheidung helfen.
Danke schon einmal im voraus.
01/19/2012 23:04 Dr. Coxxy#2
Eine ungefähre zielrichtung, was du programmieren willst solltest du schon haben, ansonsten wirst du dich nicht entscheiden können...

kurze zusammenfassung:

Assembler:
Pros:
-kompletter hardware zugriff
-tiefes verständnis des speichers und der cpu
-reversing :P
-hohe geschwindigkeit
-µC programmierung mit maximaler effizienz

Cons:
-seeeeehr kleinschrittig und für schon geringfügig größere projekte kaum noch ordentlich zu verwalten als einzelne person
-verbreitung, sowie samples im i-net sind dürftig.

C:
Pros:
-Immer noch recht hardwarenah und voller speicherzugriff
-schnell
-idr. gewinnt man dabei auch ein tieferes hardwareverständnis
-sehr weit verbreitet (findest viele samples, kannst µCs programmieren etc...)

Cons:
-immer noch recht kleinschrittig

C++:
Pros:
-sowohl hardwarenahe programmierung möglich da eigtl. alles geht, was in C auch geht
-als auch Objektorientierte Programmierung
-exceptions, errorhandling allgemein
-std
-schnell
-sehr weit verbreitet

Cons:
-überspringt eventuell die imo nötigen hardwareverständnisse

C#:
Pros:
-recht schnell
-objektorientiert
-windows nimmt einem viel arbeit ab
-schnelle ergebnisse

Cons:
-langsamer als oberen
-nur windows (gibt aber auch ne recht gute portierung für linux soweit ich weiß)

Java:
Pros:
-Cross Platform
-sehr weit verbreitet
-als interpretierte sprache noch recht schnell
-klassen etc...
-bibliothek

Cons:
-langsamer als oben erwähnte
-VM
-kein direkter speicherzugriff, addressierung etc.

Scriptsprachen a autohotkey, autoit etc:
Pros:
-sehr schnelle ergebnisse
-sehr einfach
-findet auch recht viele codesamples

Cons:
-lahm
-meist nur windows
-sehr beschränkter befehlssatz

natürlich stimmt das alles in bestimmten situationen nicht immer, nur ein grobes raster und dass ich bei java die virtual machine unter cons aufliste wird einige bestimmt auch ärgern... etc.

grob wage ich zu sagen:
1 codezeile scriptsprache -> 5 Zeilen Java/C# -> 20 Zeilen C++ -> 50 Zeilen C -> 150+ Zeilen Assembler

Mein Rat:
mit c oder assembler nötigen hardwarekenntnisse erlernen, dann auf C++ gehen.
oder (davon halte ich nicht so viel, aber wirst du oft hören):
mit c# anfangen, grundlegende strukturen und objektorientierung lernen (abstraktion mit klassen, polymorphie, listen, bäume etc.), wenn du dann geschwindigkeit optimieren willst oder dich einfach nur für hardwarenahes programmieren interessierst C/C++.
01/19/2012 23:23 DROP³#3
Danke für die schnelle Antwort.

Mein aktueller Favorit ist C++, da man damit scheinbar alles machen kann.
Hardwarekentnisse habe ich nicht wirklich.
Ist das denn zwingend notwendig ?
Und was meinst du mit: "-std" ? Stunde ? o.O
01/19/2012 23:25 Dr. Coxxy#4
Quote:
Hardwarekentnisse habe ich nicht wirklich. Ist das denn zwingend notwendig ?
kommt drauf an was du machen willst, ein hardwareverständnis hilft einem enorm bei optimierungen und einfach um der sache willen, zu verstehen was der compiler eigtl. macht und wie die befehle sich auf die hardware auswirken :P
Um dir ein windows projekt zusammenzuzimmern - nein.

std:
https://de.wikipedia.org/wiki/C%2B%2...dardbibliothek

hab noch nen paar sachen oben reineditiert, also lies nochmal :P


natürlich gibt es noch viel mehr programmiersprachen wie javascript, php &flash z.b. für webprogrammierung, wie gesagt, solltest schon ein grobes ziel haben was du vorhast, alles wirst du nicht (ordentlich) lernen können ;)
01/20/2012 12:08 DROP³#5
Naja, Web-Anwendungen und Websites wollte ich eigentlich nicht coden.
HTML / CSS / PHP Kommt daher nicht in Frage.

Sagen wir einfach mal: Mein Ziel ist es einen YouTube-Bot oder einen Paysafecard- bzw. Passwort-Manager zu programmieren.

Sowas in der Richtung.
Einfach ein paar nützliche Tools / Programme für die Allgemeinheit.

edit:
Code:
#include <iostream>

using namespace std;

int main()
{
	int BlackBox;
	cout << "Gib eine ganze Zahl ein:";
	cin >> BlackBox;

	int WhiteBox;
	cout << "Gib eine zweite ganze Zahl ein:";
	cin >> WhiteBox;

	int RedBox;
	RedBox = BlackBox + WhiteBox;


	cout << "Die Summe der Summanden " << BlackBox << " und " << WhiteBox << " ist " << RedBox << endl;
	system("pause");
}
Insane oder ? :o
01/20/2012 14:15 Dr. Coxxy#6
desktop anwendungen dir per gui eventbasiert mit dem benutzer kommunizieren -> C#.
dürfte da am einfachsten/schnellsten gehen.
spricht natürlich nichts dagegen c++ zu lernen, einfacher wirds aber in c# gehen.

btw. Summe = 1.Summand + 2.Summand...
01/20/2012 14:19 MoepMeep#7
Wenn du keine interesse am gamehacking hast, nimm C#. Schöne syntax und dank .Net Framework alles was man braucht dabei ;)
01/20/2012 14:35 DROP³#8
Quote:
Originally Posted by Dr. Coxxy View Post
btw. Summe = 1.Summand + 2.Summand...
Ist mir schon klar. :D

Gamehacking wäre natürlich auch nicht schlecht.

Letztendlich kann man mit C++ am meisten machen, oder ?
Wenn ich jetzt C# lerne und später auf C++ umsteigen muss kann ich auch gleich mit C++ anfangen,
oder ist das für Anfänger "nicht geeignet".
Ich habe mir jetzt schonmal ein paar Tutorials angeschaut und muss sagen es sieht nicht leicht aus.

Was spricht gegen C++ und was dafür ?
01/20/2012 14:47 MoepMeep#9
C++ ist schnell, freiwillige OOP aber auch in vielen teilen 'umständlich'. Aber genau dort lernt man meiner Meinung nach richtiges Programmieren, .Net Sprachen nehmen einem zuviel Arbeit ab. Den Umstieg von C++ auf C# fand ich sehr einfach, aber gut, ich kann auch Java. Andersrum stell ich mir das doch einen tick schwerer vor.
Ich bin mittlerweile dazu übergegangen, meine hack-dll's in c++ zu schreiben und mein Gui in C#. :p
01/20/2012 15:08 DROP³#10
Was ist eine OOP ?

Also würdest du mir empfehlen, als erstes C++ zu lernen ?

Kann man eigentlich auch die GUI in VB und den Code in C++ machen ?
Denn mit VB ist das ja richtig easy. Zu easy sogar, wie ich finde.
01/20/2012 15:09 Keyosk#11
Lern Delphi, habe ich auch und es macht richtig Spaß ;)
01/20/2012 15:21 DROP³#12
Quote:
Originally Posted by Keyosk View Post
Lern Delphi, habe ich auch und es macht richtig Spaß ;)
Kannst du ein paar Worte dazu sagen, und warum du es für den Anfang empfehlen würdest ?

Aus dem Wikipedia Gelaber werde ich nicht schlau. :confused:
01/20/2012 15:39 Dr. Coxxy#13
OOP = objektorientierte programmierung -> Klassen etc.

C# vereinfacht einem das meiste unter windows enorm, während man sich in c++ noch oft mit "kleinigkeiten" rumplagen muss.
01/20/2012 16:07 xNopex#14
Quote:
.Net Sprachen nehmen einem zuviel Arbeit ab
Man ist nicht gezwungen die vorgefertigten Klassen zu verwenden, man kann, sofern man sich das auch wirklich antun will, auch umständlich selber alles programmieren. Dann lernt man auch in C# "richtiges Programmieren".

Quote:
Andersrum stell ich mir das doch einen tick schwerer vor.
Nicht schwerer, aber man lernt auf unangenehme Art und Weise die Vorteile von C# o.Ä. gegenüber C++ o.Ä. kennen.

Quote:
Kann man eigentlich auch die GUI in VB und den Code in C++ machen ?
Warum sollte man das bitte machen? Sicher geht das (Wahrscheinlich nicht so wie du es dir vorstellst, aber so in der Art ist es umsetzbar). Aber das ist nicht nur unschön, unklug, umständlich und dumm, sondern auch blödsinnig.

Quote:
Lern Delphi, habe ich auch und es macht richtig Spaß
Dass es Spaß macht liegt nicht unbedingt an Delphi, sondern daran, dass Programmieren allgemein Spaß macht :)
01/20/2012 16:50 Dr. Coxxy#15
Quote:
Aber das ist nicht nur unschön, unklug, umständlich und dumm, sondern auch blödsinnig.
nö, ist sogar recht normal.

gui in vb etc. schreiben und ne c/c++ dll einbinden die einem die geschwindigkeitsoptimierte arbeit abnimmt.