C zu C++ - Einfacherer Übergang?



  • Leute, die zuerst C lernen und darauf "aufbauend" dann C++, die kann man immer super am code erkennen 😃



  • Also, UMSETZBAR ist es ohne korrekte Syntax kaum, denn ohne Syntax gibt's auch keinen Compiler der es in ein Programm umsetzt.
    Aber selbst "darstellbar" ist es nicht. Selbst eine rein einfache, verbale Darstellung des ganzen verwendet nunmal den sprachlichen Syntax.

    Deswegen sehe ich auch kein Problem daran, Konzepte anhand eines Syntaxes zu erlernen, der sich auch praktisch einsetzen lässt.

    Worauf du (Cabanossi) halt achten musst, wenn du C und nicht C++ (oder auch umgekehrt) lernst, dass du nicht in eine Art "Lagerdenken" abgleitest, wie's bei manchen Leuten halt so ist. Siehst es ja hier. Darauf ziehlt das "Lern programmieren, nicht Programmiersprachen" letztlich ab. Eine Programmiersprache ist nur ein Syntax, der gewisse Konzepte ermöglicht, fördert, oder behindert.

    Ich sehe kein Problem mit C anzufangen, und Tod ist die Sprache sicher noch lange nicht, solange du eben aufgeschlossen bleibst, und auch bereit bist später für andere Aufgabenbereiche und Ideen teilweise radikal umzudenken.
    Programmieren ist ein recht großes Feld, und selbst eine Multiparadigmensprache wie C++ deckt dort nicht alles ab - insbesondere würde ich behaupten, C++ deckt nicht C ab, denn wer C++ wie C schreibt macht eben nunmal was falsch. 🙂

    Praktisch gesehen ist C++ komfortabler zu verwenden, hat aber manchmal unglaublich böse Fehler im Detail, also Sachen die man machen kann, bei den man auf den ersten Blick nicht sofort sieht, WARUM das jetzt falsch ist, weil einige Automatismen im Hintergrund laufen.



  • Cabanossi schrieb:

    Hallo liebes C-Plusplus Forum!

    Ich hätte nur eine kurze Frage, undzwar hatte ich mir vorgenommen mich vorerst in C einzuarbeiten, und dann in ferner Zukunft, falls nötig, auf C++ umzusteigen. Würde mir der Übergang mit C Kentinssen leichter fallen als direkt C++ zu lernen, oder ist mein ganzer Plan im Prinzip Mist?

    Der erste Gedanke ist oft der beste. Aber letztlich kommt es doch immer auch
    darauf an, was für eine Hardware du programmieren willst, welche Apis dir zusagen, welche du brauchst, was genau du programmieren willst und wie oft. Außerdem, welche Informationsquellen gibt es, welche sagen dir zu? Welche Ansprechpartner laufen in deiner Nähe herum, wie coden deine Freunde?
    Wenn du ein gutes Buch für dich in C findest, dann lerne C. Wenn du ein gutes
    Buch für dich in C++ findest, dann lerne C++.
    Aber die Zukunft gehört weder C, noch C++ ! (!)
    (und schade, dass es gar keine Power7 Notebooks gibt;)

    Eine gute Orientierung zum Thema Vorausschau ist z.B. auf der Seite

    http://knol.google.com/k/computing-with-nvidia-s-cuda-and-opencl#

    zu bekommen.



  • Ich denke ich kann sagen meine Hauptaugenmerke liegen in der Socket-Programmierung und Programme per Debugger zu beobachten und mit entsprechenden Programmen darauf zu reagieren (Reverse Engineering).



  • Wer zuerst C lernt um dann C++ zu lernen ist mit Anlauf gegen einen Baum gerannt. C++ war die erste Sprache, die ich konsequent gelernt hatte und ich war sehr zufrieden damit. Ich hab auch mal in C reingeschnuppert, doch ich musste diese Sprache einfach auslachen, weil sie in meinen Augen primitiv ist. Wenn C++ objektiv nicht schön ist, frag ich mich was C ist. C hat eigentlich nicht mal den Ansatz von Objektivität. Wie kann man über über C++ klagen, wenn man in C nur Funktionen bereit gestellt bekommt?
    Wer objekt orientiert programmieren will, dem würde ich sowieso C# oder Java empfehlen, wobei ich eher zu C# tendieren würde.



  • FreakY<3Cpp schrieb:

    Bla Bla

    Jemand musste sich auf dieses Niveau begeben. Und jetzt entsteht wieder ein Krieg, C vs C++. Sowas von erbärmlich 👎



  • Mit Socket-Programmierung kenn ich mich nicht aus. Aber bei Google gleich
    mal nachgeguckt, ergab die erste Seite:
    http://www.pc-adviser.de/socket_programmierung.html
    gar nicht so schlecht...;-)
    Letztlich hängts auch ein bißchen vom System ab, - (gcc vs Vcc vs etc.)

    Derweil kannst du mir vielleicht eher helfen zum Thema Debugger. Ich fange gerade an, nach einem Ersatz für das Windowsinterne Werkzeug Debug.exe zu suchen.
    Com Programme werden in 64bit Windowsen nicht mehr unterstützt.
    In diesem Zusammenhang nützt Ollydebug nur wenig.



  • Cabanossi schrieb:

    Ich denke ich kann sagen meine Hauptaugenmerke liegen in der Socket-Programmierung

    Da ist C gut geeignet.

    Cabanossi schrieb:

    und Programme per Debugger zu beobachten

    Das geht in so ziemlich jeder Sprache für die es debugger gibt ...

    Cabanossi schrieb:

    (Reverse Engineering).

    Für echtes reverse engineering dürften wohl tiefgreifende asm-Kenntnisse notwendig sein denn Programme kommen in der Regel nicht mit ihrem Sourcecode (naja, ausser MSIL basierten Sachen, aber C# war ja kein Thema)

    Source-Code von anderen lesen ist kein reverse engineering 😉



  • FreakY<3Cpp schrieb:

    Wer zuerst C lernt um dann C++ zu lernen ist mit Anlauf gegen einen Baum gerannt. C++ war die erste Sprache, die ich konsequent gelernt hatte und ich war sehr zufrieden damit. ...

    Du bekommst ja nicht mal nen 3.5-Zeiler richtig hin ohne gegen nen Baum zu rennen.
    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1870594.html#1870594



  • mngbd schrieb:

    Nimm was einfaches. Viele empfehlen Python oder Scheme.

    Scheme ist nicht einfach.



  • Cabanossi schrieb:

    Ich denke ich kann sagen meine Hauptaugenmerke liegen in der Socket-Programmierung und Programme per Debugger zu beobachten und mit entsprechenden Programmen darauf zu reagieren (Reverse Engineering).

    🙄

    Welches Auto soll ich mir kaufen? Mein Hauptaugenmerk liegt auf Linkskurven und Super-plus tanken.

    Ernsthaft, Reverse Engineering geht nicht ohne umfassende Kenntnisse der Zielplattform und der verwendeten Programmiersprachen. Lern also mindestens C, C++ und die Interna der (vermutlich) x86-Architektur; wenns um Windows geht auch noch WinAPI, .net, CLR und was sonst noch so zu Windows gehört, ansonsten halt das jeweilige Ziel-OS und dessen Architektur. In ein paar Jahren weißt du dann Bescheid und kannst mit reversen anfangen.



  • Registrierter Troll schrieb:

    Welches Auto soll ich mir kaufen? Mein Hauptaugenmerk liegt auf Linkskurven und Super-plus tanken.

    Man sollte sich gar kein Auto kaufen und nicht so spritorientiert denken.
    Kauf dir lieber Aktien, und fahr Fahrrad, das schont die Umwelt und erhöht den Spekulationsdruck, was wiederum gut für deine "Flüssigkeit" ist...:p



  • hahaha-ahahah schrieb:

    FreakY<3Cpp schrieb:

    Wer zuerst C lernt um dann C++ zu lernen ist mit Anlauf gegen einen Baum gerannt. C++ war die erste Sprache, die ich konsequent gelernt hatte und ich war sehr zufrieden damit. ...

    Du bekommst ja nicht mal nen 3.5-Zeiler richtig hin ohne gegen nen Baum zu rennen.
    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1870594.html#1870594

    Was soll daran falsch sein ? 🙄



  • FreakY<3Cpp schrieb:

    hahaha-ahahah schrieb:

    FreakY<3Cpp schrieb:

    Wer zuerst C lernt um dann C++ zu lernen ist mit Anlauf gegen einen Baum gerannt. C++ war die erste Sprache, die ich konsequent gelernt hatte und ich war sehr zufrieden damit. ...

    Du bekommst ja nicht mal nen 3.5-Zeiler richtig hin ohne gegen nen Baum zu rennen.
    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1870594.html#1870594

    Was soll daran falsch sein ? 🙄

    Kompiliert nicht.



  • Dann hast du entweder einen schlechten Compiler, oder du hast was vergessen, denn es geht...



  • Was soll daran falsch sein ? 🙄

    if(old_string[i] != ",") , die " " sind falsch. 🙄

    Ich hab auch mal in C reingeschnuppert, doch ich musste diese Sprache einfach auslachen, weil sie in meinen Augen primitiv ist.

    Lerne zwar auch momentan C++, ohne mich vorher mit C beschäftigt zu haben, aber diese Aussage ist schon ziemlich dämlich...



  • Achso den kleinen Beitrag meint er. Ja okay, da hab ich es wohl verwechselt 😃

    Lerne zwar auch momentan C++, ohne mich vorher mit C beschäftigt zu haben, aber diese Aussage ist schon ziemlich dämlich...

    Dann kannst du scheinbar auch so viel mitreden?
    Klar C kann was, wie man bei vielen Programmen gesehen hat, aber C++ ist C nur besser in meinen Augen, warum sollte ich mich also zurückbilden und was älteres und für mich schlechteres lernen. C++ ist nunmal besser strukturiert. Wer sich lieber mit C quälen will, kann das gerne tuen.
    Aber mittlerweile sag ich auch, dass ich C# besser als C++ finde. Es liegt immer im Auge des Betrachters.



  • Dann kannst du scheinbar auch so viel mitreden?

    Scheinbar kann ich objektiver beurteilen...
    Lachst du auch Assembler aus, weil das so unglaublich primitiv ist?
    Die meisten Sprachen haben ihre Daseinberechtigung, so auch C.

    warum sollte ich mich also zurückbilden und was älteres und für mich schlechteres lernen.

    Wenn jemand noch keine Programmiersprache kennt und dann C, statt C++ lernt, bildet er sich nicht zurück, sondern fort. Ich rede hier übrigens nicht von dir, sondern vom Threadstarter.

    Achso den kleinen Beitrag meint er. Ja okay, da hab ich es wohl verwechselt 😃

    Sicher...



  • C zu C++ - Einfacherer Übergang?

    Es ist kein Übergang. C++ ist eine ganz andere Programmiervorgehensweise mit anderen Vorstellungen.



  • FreakY<3Cpp schrieb:

    Klar C kann was, wie man bei vielen Programmen gesehen hat, aber C++ ist C nur besser in meinen Augen, warum sollte ich mich also zurückbilden und was älteres und für mich schlechteres lernen.

    Du kannst aber nicht so einfach Sprachen vergleichen, die völlig unterschiedliche Zielsetzungen haben und sich auf völlig unterschiedliche Paradigmen konzentrieren.

    C konzentriert sich auf prozeduale Programmierung und lässt High-Level-Features wie Garbage Collection, Exceptions, Polymorphie usw. bewusst weg. Was dabei rauskommt ist eine schöne, konsistente und einfache Sprache. Sprachen wie C# und Java abstrahieren von der Low-Level-Ebene von C und konzentrieren sich eher auf objektorientierte Programmierung, womit sie wieder halbwegs schöne und einfache Sprachen sind, aber mit ganz anderen Möglichenkeiten und Beschränkungen.

    C++ versucht, sehr viele Paradigmen zusammenzubringen. Wenn man tatsächlich all diese Paradigmen in einer Sprache braucht (also vor allem Sprachfeatures für OOP und gleichzeitig die Low-Level-Features von C, einschließlich Kompatibilität zu C selbst), ist das sicher nütztlich. Leider geht das nicht so problemlos, so dass es in C++ jede Menge unschöne Kompromisse und hässliche Workarounds gibt. Wenn man damit leben kann ok, aber trotzdem ist es sehr weit hergeholt, C++ pauschal als "besser als C" zu bezeichnen. Und vor allem dürfte klar sein, dass C++ um einiges schwieriger zu erlernen ist als C. Und mit Erlernen meine ich vollständiges Beherrschen, bei denen man wirklich alle Sprachfeatures und ihr zusammenwirken versteht.

    IMHO ist es das sinnvollste, erstmal C und eine High-Level-Srache wie Java zu lernen und sich dann (wenn man unbedingt will) an C++ heranzuwagen, bei dem man dann alles auf einmal hat. C vor C++ zu lernen ist sinnvoll, weil man das meiste von dem, was man bei C lernt, zwar bei C++ nicht jeden Tag direkt verwenden wird, aber trotzdem wissen muss, um nicht auf die Nase zu fallen. Dass man in C++ dann anders programmiert als in C steht außer Frage.

    C++ war nie dazu gedacht, von Leuten benutzt zu werden, die kein C können. 🙄


Anmelden zum Antworten