Welche Programmiersprache als erstes lernen?



  • Dany5 schrieb:

    Ist C nicht C#?

    Nein, genauso wenig wie viele Bücher die ein "Visual C++" im Namen haben nicht C++ sondern häufig C++/CLI (was wieder eine andere Sprache ist) lehren.

    C ist eine prozedurale Sprache, die zumindest von der Sprachsyntax her keine direkte objektorientierte Programmierung zulässt (auch wenn man diese mehr oder weniger gut simulieren kann). C wird häufig in der Treiberentwicklung, im Embedded Bereich (Mikrocontroller...) und bei Betriebssystemen verwendet.

    C# ist eine Sprache die wiederum in diesen Bereichen weitgehend ungeeignet ist, und das .Net Framework verwendet (und damit hauptsächlich unter Windows relevant ist, auch wenn Mono einen großen Teil des .Net Frameworks abbildet). C# spielt seine Stärken eher in großen Anwendungen aus, wo es meist kurze Entwicklungszeiten und hohe Wartbarkeit wichtiger, als die Performance ist.

    Wobei ich glaube, das man dieses Thema eh schließen kann, wenn du diese Frage stellst nachdem bereits in Posts eindeutig C, C++, C#... als getrennte Sprachen erwähnt wurden, und du dir imho noch garnicht genug klar darüber bist, was du eigentlich willst.



  • 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"?



  • Jede Sprache, die sich in den letzten Jahren durchgesetzt hat, hat Vor- aber auch Nachteile, die "perfekte" Programmiersprache gibt es nicht.

    Ein sehr theorethische Ansatzpunkt 🙂 Eigentlich muesst man dieses Zitat in Stein meiseln und den Stein den Projektmanagern auf den Kopf schlagen bis sie laut schreien : "ja ich hab es verstanden !" 🤡

    Die Parxis sieht halt etwas anders aus 🙂

    @Dany5
    Aber Du bist jung und nicht mit den Altlasten des berufslebens vorbelastet !
    Nimm irgendeine Programmiersprache (+1 fuer jede zur Wahl stehende Option :p ) und bau ein oder zwei simple Anwendungen, ohne Dich in die Feinheiten der Programmiersprache zu verbeissen. So solltest nen Gefuehl fuer grundlegende ProgrammierDinge bekommen (Code kommentieren, Umgang mit variablen, schleifen, bedingungen .... vielleicht schon einige weiterfuehrende DesignThematiken/Techniken .... Iteratoren bspw. )

    Danach kannst DIch immer noch für eine Sprache entscheiden und da richtig tief einsteigen. Dann waehlst Du deinen wahren Weg !!! 😃
    Zur Auswahl stehen:

    - Script Kiddie (auch mit RL-Level über 30 möglich, besonders beliebte Sprachen: Java, PhP, perl ... vom Anwender gehasst weil immer irgendwelche besonderen runtimes mit installiert werden muessen)

    - Active X / .Net Sklave (beliebte Sprachen: c#, visual basic, visual basic script ... vom Anwender gehasst weil, siehe Script Kiddie, ok die meisten runtimes installiert windows nun per auto-update funktion, deswegen hassen die Anwender vielleicht eher M$, aber bleiben tut die Neigung zur extensiven verwendung fremder ActiveX/Net Komponenten mit optisch aufwendigen Effekten, die beim Anwender oft frühzeitig zu Augenkrebs fuehren ! beliebtestes Visualisierungs-Instrument: die Sanduhr von Windows !)

    - (semi)proffesioneller Programmierer (C++ fast pflicht, Anwender hassen Ihn, weil gerad die wichtigsten Funktionalitaeten auf Grund von Project-Fehlplanung oder Zeitdruck oder Rueckgang finanzieller Mittel, rausgekuerzt wurden, begleitet vom staendigen gedudel des Projektverantwortlichen "in der naechsten Version" ... welche wahrscheinlich nie erscheinen wird 😃 )

    - Hacker/Computer Nerd(mindestens C, besser Assambler, Anwender hassen den nicht, weil sie seine Programme ignorieren(wer will heutzutage schon auf kommandozeile arbeiten), oder die Programme so ausgelegt sind, dass der User auf keinen Fall mitbekommen soll dass die ueberhaupt laufen 😃 )

    Du hasst die Wahl 🙂

    P.S. nicht so Ernst nehmen und bitte keiner sich auf den Schlips getreten fuehlen 🙂

    P.S.S. willst du beruflich programmieren, gibts mehrere Hauptrichtungen eigentlich ... HTML Programmierer/Webseiten Admin (Web Sprache ala php, perl + Techniken ala Web2.0 ... ), Anwendungsentwickler(meist c++), Datenbankentwickler (SQL, PLSQL ... ). Themen dazwischen wird meist durch nicht IT Abteilungen zelebriert, also Fachabteilungen/kleinere Firmen wo nicht Programmierer sich Hilfmittel / Tools zusammenstricken bzw vorhandene Anwednungen erweitern/Scripten wenn diese das zulassen ...
    Aber selbst als Anwendungsentwickler solltest neben C++ mindestens noch eine scripstprache beherrschen, bzw schnell einarbeiten koennen und auch in der lage sein, C-Interfaces zuschreiben und bedienen.



  • 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.htm

    Letzte 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 😉



  • @asc

    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 laufen 🙂

    Glaub 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! 🙂


  • Administrator

    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# liegt 😃

    Was 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 gedacht 🙂

    Ciao ...


Anmelden zum Antworten