Welche Programmiersprache als erstes lernen?
-
Dany5 schrieb:
Ich hab noch knapp 2 Jahre Zeit bevor vlt. die Lehre anfange, also habe ich 2 Jahre um Sprachen zu lernen.
Ja um was geht es den bei der Prozessarchitektur? Beispiele für systemnahe-sachen die man programmieren kann.
Systemnahe Sachen.
Versuch' mal das folgendes Programm zu entwickeln:
- Ein Prozess erzeugt zuerst zwei temporäre Dateien A und B.
- Danach erzeugt er einen Thread 1, der sich damit beschäftigen soll, beispielsweise am Port 25000 auf Datenpakete zu warten.
Wenn ein Datenpaket kommt, soll er es in die temporäre Datei A kopieren.
- Ein Thread 2 wird auch noch erzeugt. Er soll sich damit beschäftigen,
irgendwelche Antwort-Daten, die er in der temporären Datei B findet, über den Port 25001 zu versenden.
- Ein Thread 3 soll pro Sekunde 25 mal die momentane Zeit in die Datei A
schreiben.
- Nachdem der Haupt-Thread die beiden Threads 1 & 2 gestartet hat, schaut er immer in der temporären Datei A nach, ob Thread 1 Daten vom Port 25000 oder Thread 3 die momentane Zeit dort abgespeichert haben, verarbeitet sie, und erfindet ein Datenpaket 'Antwort' oder 'Broadcast', das er in in die Datei B schreibt, damit sie Thread 2 versenden kann.
- Weil alle drei Threads natürlich gleichzeitig ablaufen sollen, wäre es ungünstig, wenn Thread 1 gerade etwas in die Datei A schreibt, während der Haupt-Thread versucht, daraus zu lesen. Tja, und da hätten wir schon eine Problemstellung, die mit den 'Standard-Sprachmitteln' - egal welche Sprache -
überhaupt nicht lösbar wäre. Was man allerdings durchaus zur Verfügung gestellt bekommt, sind entsprechende Betriebssystem-Funktionen und -Eigenheiten, die in DLLs lagern, und die bei der Lösung der Problemstellung unumgänglich sind.
Weil man diese Funktionen so bequem mit C - Syntax aufrufen kann, ist es nur naheliegend, ein derartiges Programm in C und nicht in irgendeiner phantasievollen Mode-Sprache zu schreiben, die ihrerseits nichts anderes tut, als den DLL - Funktionen andere Namen zu geben (und damit zur allgemeinen Verwirrung beizutragen), und das dann als 'eigenes' Sprachkonstrukt dem Verwender der Phantasie-Sprache unterjubelt. Wozu eine Funktion über Umwege aufrufen, wenn's auch direkt == systemnahe geht, könnte man da sagen.--> Das ist jetzt nur ein Skizze für so eine typische Aufgabe, wo es einfach kontraproduktiv wäre, etwas anderes als C zu verwenden. Und wenn Du mal 'nen
Server für ein (MM)Online-Game basteln möchtest, könnte es durchaus passieren, dass derartige systemnahe Sachen interessant werden.
In allen anderen Fällen findet man wohl auch mit C#, Java, C++ usw. das Auslangen. Das Problem dabei: Man ist halt sehr unflexibel mit diesen Sprachen und im Falle von C# und Java davon abhängig, welche Neuheiten sich irgendwelche proprietären Sprachentwickler in der nächsten Zeit so einfallen lassen oder nicht. Für C++ gilt ähnliches.mfg
-
Ehrlich: Du gehst das ganze falsch an. Wenn du programmieren lernen willst, dann lern programmieren und diskutier nicht in einem Onlineforum darüber welche Programmiersprache du lernen solltest :p. Wenn du ernsthaft programmieren willst, dann wirst du im Leben eh nicht mit einer einzigen Programmiersprache auskommen. Daher ist die Wahl der Programmiersprache am Anfang gar nicht so wichtig. Vermutlich ist es sogar besser, wenn man mit einer Programmiersprache anfängt, die man später nicht mehr benutzt. Viele hier dürften zB mit BASIC oder Pascal angefangen haben.
Schau dir halt zu den Sprachen die dich interessieren ein paar Tutorials an und die die dir am besten gefällt nimmst du einfach.
C++:
http://www.stroustrup.com/Programming/Python:
http://docs.python.org/tutorial/
http://www.greenteapress.com/thinkpython/html/index.html
http://inventwithpython.com/chapters/Scheme:
http://docs.racket-lang.org/quick/index.html
http://www.htdp.org/2003-09-26/Book/curriculum-Z-H-1.html#node_toc_start(Und nimm kein C#, wenn du kein Sklave von Microsoft werden willst :p)
-
RHBaum schrieb:
...Anwendungsentwickler(meist c++)...
Das "meist c++" war mal. Ich programmiere zwar beruflich noch immer mit C++, aber kenne kaum noch eine Softwarefirma im Bereich der Anwendungsentwicklung die für neue Projekte nicht auf Java oder C# gewechselt ist.
Die Ausnahme hierzu ist eigentlich nur alten Anwendungen der Fall, wo ein Wechsel teuer wird (aber selbst dort habe ich schon einige Migrationsbemühungen festgestellt). Sehr selten habe ich den umgekehrten Weg erlebt (oder dem Wechsel zum Konkurrenzprodukt wie z.B. Java nach C++ oder C#).
-
Gut meine Entscheidung fällt auf C++ kann mir jemand zu dem ein gutes E-Book geben? Das möglochs in Deutsch geschrieben ist. und wie ist es bei C++ mit den Compilern etc.? Gibt es auch so ne IDE wie bei Visual Basic zu herunterladen?
-
Dany5 schrieb:
Das möglochs in Deutsch geschrieben ist.
Nein, Du brauchst kein deutsches Buch...
-
meine Entscheidung fällt auf C++ kann mir jemand zu dem ein gutes E-Book geben
OK, C++ ist eine Wahl für echte Kerle.
Tuts:
http://www.cpp-tutor.de/
http://www2.fh-augsburg.de/informatik/vorlesungen/XX/c_cplus/tutorial/henkel/
http://eitidaten.fh-pforzheim.de/daten/labore/i1lt/ckurs.pdf
http://www.henkessoft.de/C++/Cpp_school/__header.htm
http://www.henkessoft.de/C++/C++ Fortgeschrittene/C++_Fortgeschrittene.htmLetzte Warnung:
http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/c++_lernsprache_de
(Didaktisch ist C++, durch die Wurzeln in C, das es noch voll umfasst, eine Katastrophe)
-
Dany5 schrieb:
Gut meine Entscheidung fällt auf C++ kann mir jemand zu dem ein gutes E-Book geben? Das möglochs in Deutsch geschrieben ist.
In Deutsch gibt es kaum ein Umfassendes, was eine Empfehlung wert ist, im Englischen gibt es Thinking in C++ (kostenlos verfügbar).
-
Dany5 schrieb:
Wie möchte ich wissen was für eine Sprache ich lernen möchte, wenn ich nicht weiss um was es geht bei "Prozessorarchitektur"? Oder bei "systemnahes programmieren"?
So etwas realisiert man in der Regel in C.
Alte Hasen nehmen dafür auch Assembler oder Fortran, aber C ist eigentlich für die Systemnahe Programmierung die gängige Sprache.
Sowohl auf einem PC als auch im embedded Bereich.
-
Is Wurst mit was du anfängst. Wenn es dich net interessiert oder du kein Talent hast, gibst es eh bald wieder auf. Wenn es dich fesselt, dann schnupperst du automatisch in viele Sprachen rein und landest irgendwann bei "deinen" Sprachen.
-
this->that schrieb:
Is Wurst mit was du anfängst. Wenn es dich net interessiert oder du kein Talent hast, gibst es eh bald wieder auf. Wenn es dich fesselt, dann schnupperst du automatisch in viele Sprachen rein und landest irgendwann bei "deinen" Sprachen.
-
Also wenn du erstmal Erfahrung im Programmieren sammeln willst,
dann machst du das am besten durch viele Projekte, fängst also mit ganz konkreten Vorstellungen an, was irgentein Programm können soll, realisierst das und machst weiter.Und da würd ich ganz klar C# empfehlen,
ist am Anfang einfach sehr motivierend, weil man viele Dinge sehr einfach realisieren kann, weil das .Net Framework einfach gehalten ist.
Vor allem GUI Erstellung ist hier mit Visual Studio einfach und zumindest für mich ist es sehr viel motivierender in Projekten viel visualisieren zu können, anstatt einfach nur Konsolenausgaben zu haben.Wenn du dann Ahnung von der Denkweise vom Programmieren hast, kannst du auch Hardwarenahe Sachen einfacher realisieren,einfach weil du die Arbeitsweise (wie das Zerlegen eines Problems in viele Teilprobleme) schon verinnerlicht hast.
Ist denke ich von der Selbstmotivation her realistischer als dich ewig mit der Konsole rumzuquälen
-
da würd ich ganz klar C# empfehlen
die "freie" Variante: Java
-
Das "meist c++" war mal. Ich programmiere zwar beruflich noch immer mit C++, aber kenne kaum noch eine Softwarefirma im Bereich der Anwendungsentwicklung die für neue Projekte nicht auf Java oder C# gewechselt ist.
In meinem Umfeld isses eher Ruecklauefig. Java / C# war mal nen boom. Mittlerweile liefern fast alle SW Zulieferer wieder C++ ab.
Kann aber auch sein, das es an unserer Umgebung geschuldet ist. Wir haben hier nen quasi abgeschottetes Netz. Windows Updates werden ueber einen zentralen server auf die musterclients eingespielt ... nicht ueber einen M$ eigenen. Wir fahren staende, die ausserhalb scho lange out of date sind / so in der Kombi der versionen nicht gab. Dementsprechend schwer haben es Java Programme.
Wolln die ne neuere runtime, keine chance. (unser stand ist XP SP1 und paar zustaetzliche updates). Wuerden die user updaten, wuerden einige Wenige Progs die auf Java fusen nimmer laufenGlaub C# und .Net iss da etwas unkomplizierter ...
c# iss mittlerweile schnell genug, das man nen unterschied zu c++ nimmer merkt.Aber Java iss gefuehlt immer noch nen greul, wenn es um GUIs geht.
Weiterhin sind bei uns Linux / Unix desktops langsam und stetig am wachsen (Messplattformtraeger) und das in nem "reinen M$" Netz
Ok, das hat aber eher viel mit HW zu tun (Messtechnikplattformen). Da faellt C# soweiso raus ... dort ist zu 100% C/C++ der Weg.
Ciao ...
-
Java / C# war mal nen boom. Mittlerweile liefern fast alle SW Zulieferer wieder C++ ab.
Ich denke nicht, dass dies allgemein gilt, oder gibt es dafür statistische Belege?
-
Erhard Henkes schrieb:
Java / C# war mal nen boom. Mittlerweile liefern fast alle SW Zulieferer wieder C++ ab.
Ich denke nicht, dass dies allgemein gilt, oder gibt es dafür statistische Belege?
gleich kommt die TIOBE Liste!
-
Erhard Henkes schrieb:
da würd ich ganz klar C# empfehlen
die "freie" Variante: Java
Du könntest auch gleich schreiben: "Die Oracle Variante"
Zudem ist C# auch "frei". Sieh dir Mono an.Grüssli
-
gleich kommt die TIOBE Liste!
Huch, die kannt ich bisher gar nicht
naja google sei dank ...
C++ nur auf platz 3, ok ich leb in ner anderen Welt. Das was mir aber richtig Angst macht, ist das VB vor Python und C# liegtWas ich nur seh ist mein Umfeld (40 Firmen ca.), die Zeitungsannouncen in der C't (da find ich C++ Programmierer haeufiger gesucht, kann aber auch sein dass ich alles andere ueberlese^^), und das was sich auf meinen heimischen PC residiert. Hab kein Prog was in der Java der Engine laeuft z.b. ... selbst Eclipse iss mittlerweile kompiliert
Grad Programme "von der Stange" sind doch die meisten kompiliert und nicht interpretiert, oder ?
Was bei anderen firmen so an Spezialloesungen existiert, weiss ich ja ned, aber das Java da dominierend sein soll, haett ich ned gedachtCiao ...
-
RHBaum schrieb:
gleich kommt die TIOBE Liste!
Huch, die kannt ich bisher gar nicht
naja google sei dank ...
C++ nur auf platz 3, ok ich leb in ner anderen Welt. Das was mir aber richtig Angst macht, ist das VB vor Python und C# liegtLies, wie der TIOBE-Index erstellt wird.
Der taugt nichts bis gar nichts. Ausser, um C in den Himmel zu loben, weil C auf vielen Seiten vorkommt.
-
Dravere schrieb:
Erhard Henkes schrieb:
da würd ich ganz klar C# empfehlen
die "freie" Variante: Java
Du könntest auch gleich schreiben: "Die Oracle Variante"
Zudem ist C# auch "frei". Sieh dir Mono an.Grüssli
Beide sind nicht wirklich frei, wobei jedoch für C# wenigstens eine gute freie Implementierung vorliegt, für Java nicht. Nicht von Oracle entwickelte Implementierungen werden da ja auch gerne weggeklagt. So schade das auch ist, aber die schönen Zeiten mit Sun als Schirmherr von Java sind vorbei. Heute scheint C# dank Mono, Microsofts guten Beziehungen zu Novell und Novells Leistungen im Bereich Freier Software/Technologie doch wesentlich freier.
Eine wirklich freie Technologie ist LLVM und das Mono-Projekt arbeitet auch bereits an einem LLVM Backend. Damit wäre C# wirklich frei.
-
Ich hab nur noch ein Problem irgendwie geht das Starten ohne Debugging nicht ich sollte dies erstellen:
// Erster Test
#include <iostream>int main()
{
std::cout << "Mein erstes Programm!" << std::endl;
}Und ohne Straten ohne Debugging bleibt dieses Programm nicht offen sonder kommt und verschwindet sofort.