Zum Inhalt springen

Mit C oder C++ anfangen? (als Weiterbildung für erfahrenen Programmierer)


Empfohlene Beiträge

Geschrieben

Hallo!

Ich habe mich dazu entschlossen, C oder C++ zu lernen.

Die Wahl darauf fiel, weil ich für Linux als auch Windows Programme schreiben möchte sowie ggf. Mobile Clients als auch Embedded Systeme und Mikroprozessoren.

Programmieren an sich ist mir alles andere als fremd.

Seit mittlerweile fast 10 Jahren programmiere ich in Perl und verdiene damit auch mein Geld.

Aufgrund der Natur der Sprache beschränkt sich das allerdings auf Konsolen und Web-Anwendungen, wenn auch teils ziemlich umfangreich - also nicht nur ein kleines Gästebuch oder so.

(sowie HTML, JavaScript, VBScript und SQL - obwohl ich das selbst nicht als programmieren bezeichne)

Leider stoße ich aber immer wieder an Grenzen, wenn ich ein Programm für den PC benötigen würde - z.B. weil eine Hardware-nahe Programmierung erforderlich wäre.

Aufgrund meiner früheren Erfahrung zu DOS Zeiten mit Basic konnte ich auch das ein oder andere VisualBasic Programm an meine Bedürfnisse anpassen. (Hilfe und Tutorials findet man ja genug im Netz)

Auch wenn ich ein Fan von Basic bin (meine Mikroprozessoren programmiere ich z.B. mit Bascom AVR) möchte ich doch lieber C/C++ lernen, weil mit VB doch mal Grenzen gesetzt sind.

Also nach dem Motto: wenn schon, denn schon.

Nun aber endlich zu meiner Frage!

Womit soll ich anfangen? C oder C++ ?

Von beiden Sprachen weiß ich gelinde gesagt: rein gar überhaupt nichts!

Deswegen möchte ich mich hiermit auch an Leute wenden, die davon Ahnung haben.

Macht C++ zu lernen ohne Wissen in C vielleicht gar keinen Sinn? Ist es vollkommen egal?

Gehe ich richtig in der Annahme, dass es sowas wie ein "Visual C" nicht gibt? d.h, dass man auch keine Windows-Anwendungen in reinem C schreiben kann?

Ich bedanke mich für Eure Ratschläge schon im Voraus!

Geschrieben

Hi,

C und C++ sind verschiedene Sprachen, die einen großen Teil der Syntax teilen. Sie sind auch unter bestimmten Bedingungen kompatibel. Du kannst,und solltest sogar, beides unabhängig voneinander lernen.

Aber wenn du hardwarenahe Programmierung machst, würde ich dir C empfehlen, weil das schon handlicher und soweit ich weiss gerade in diesem Bereich sehr verbreitet ist.

dass man auch keine Windows-Anwendungen in reinem C schreiben kann?

Doch, das geht natürlich. Du kannst unter so ziemlich jedem Betriebssystem reine C und C++ Programme erstellen. Linux, und wohl auch auch Windows, sind größtenteils in C programmiert worden. Visual C gibt es zwar nicht, aber du kannst mit Visual C++ durchaus reine C Programme erstellen.

Geschrieben

Aber wenn du hardwarenahe Programmierung machst, würde ich dir C empfehlen, weil das schon handlicher und soweit ich weiss gerade in diesem Bereich sehr verbreitet ist.

Hier kann man sich definitiv streiten. C++ bietet eben die Möglichkeit entsprechenden OOP Design zu entwerfen, hat aber analog zu C auch die Möglichkeit hardwarenah zu arbeiten. Zusätzlich könnte man das auch in entsprechende Bibliotheken auftrennen (Hardware = C, Systemarchitektur = C++).

Doch, das geht natürlich. Du kannst unter so ziemlich jedem Betriebssystem reine C und C++ Programme erstellen. Linux, und wohl auch auch Windows, sind größtenteils in C programmiert worden. Visual C gibt es zwar nicht, aber du kannst mit Visual C++ durchaus reine C Programme erstellen.

Hier würde ich zu Bibliotheken raten, die auf beiden System lauffähig sind und den Code entsprechend Präprozessor Klauseln für das System bereit zu stellen bzw. wie oben erwähnt, die Trennung von Architektur und Hardware

Phil

Geschrieben (bearbeitet)

Danke erstmal für Eure Tipps.

Aber wenn du hardwarenahe Programmierung machst, würde ich dir C empfehlen, weil das schon handlicher und soweit ich weiss gerade in diesem Bereich sehr verbreitet ist.

Nun gut. Vielleicht habe ich das zu hochgegriffen formuliert.

Ich habe jetzt nicht vor eigene Treiber für meine Hardware zu schrieben oder den Level-1 Cache der CPU anzusprechen :D

Es geht mir eher um's Ansprechen von Schnitstellen und der Arbeit mit mitgelieferten APIs von Hardware und einfache Graphikfunktionen (z.B. ein GUI für eine Steuerungs-Panel)

Und soweit ich das bis jetzt mitbekommen habe, wäre dafür sogar VisualBasic mehr als ausreichend. (oder sogar viel einfacher damit)

Ich habe also nicht gerade vor, meine eigene 3D Engine zu programmieren :D

Was für Gründe gäbe es Eurer Meinung nach, C dem C++ vorzuziehen?

Nachtrag:

wenn ich auch für Linux und Embedded Systeme programmieren möchte, brauche ich mir wohl Java, C# oder Delphi gar nicht ansehen - oder?!

Auch wenn z.B. Java auf Linux zwar läuft, denke ich doch, dass es eher eine "Außenseiter-Sprache" auf diesem Gebiet ist, nicht wahr?!

Eine gute Hilfestellung einer großen Community und "Hilfsmaterial" sind ja auch nicht zu unterschätzen und bis jetzt ist mir glaube ich noch kein einziger Linux Source-Code in was anderem als C oder C++ unter gekommen. Bestenfalls noch Python.

Bearbeitet von Bluebrain
Geschrieben

Es geht mir eher um's Ansprechen von Schnitstellen und der Arbeit mit mitgelieferten APIs von Hardware und einfache Graphikfunktionen (z.B. ein GUI für eine Steuerungs-Panel)

Wenn es um fertige Libs geht, dann spielt es keine Rolle ob Du Deinen Source in C oder C++ schreibst, denn Du linkst ja gegen die entsprechenden Libs

Was für Gründe gäbe es Eurer Meinung nach, C dem C++ vorzuziehen?

Das einzige Kriterium wäre wirklich elementarste Hardwareprogrammierung. Bei allen anderen Dingen C++

wenn ich auch für Linux und Embedded Systeme programmieren möchte, brauche ich mir wohl Java, C# oder Delphi gar nicht ansehen - oder?!

Kommt drauf an, was das "Embedded System" kann. Im Bereich Handheld kann man durchaus auf MS Technologien setzen

Auch wenn z.B. Java auf Linux zwar läuft, denke ich doch, dass es eher eine "Außenseiter-Sprache" auf diesem Gebiet ist, nicht wahr?!

Woher kommt diese Wahrheit. Matlab ist z.B. Javabasiert und läuft unter Linux, Mac und Windows. Nur weil es Java ist, heißt das nicht, dass man es nicht auch unter Linux laufen lassen kann.

Und ich würde Java nicht als "Außenseiter Sprache" bezeichnen (und das Argument kommt nicht, weil ich Mod für Java bin). Es kommt letztendlich auf das Problem und die Portierung an

Eine gute Hilfestellung einer großen Community und "Hilfsmaterial" sind ja auch nicht zu unterschätzen und bis jetzt ist mir glaube ich noch kein einziger Linux Source-Code in was anderem als C oder C++ unter gekommen. Bestenfalls noch Python.

Eclipse, Matlab sind mal zwei Systeme, die mir direkt einfallen

Phil

Geschrieben
Das einzige Kriterium wäre wirklich elementarste Hardwareprogrammierung. Bei allen anderen Dingen C++

Das ist mal ne Aussage. Damit hast Du mich glaube ich überzeugt, mich auf C++ zu stürzen.

Kommt drauf an, was das "Embedded System" kann.

z.B. kleine Linux-Flash PCs für Steueraufgaben, Terminals oder als MP3 Player. Sowas in der Art.

Und ich würde Java nicht als "Außenseiter Sprache" bezeichnen (und das Argument kommt nicht, weil ich Mod für Java bin).

NEIN! Keinesfalls! Java ist auf jeden fall eine mittlerweile sehr weit verbreitet Sprache und auch eine, ich nenne es jetzt mal "tolle" Sprache.

bzgl. "Außenseiter Sprache" habe ich das rein auf die Verbreitung bezogen, wenn es etwas mehr in Richtung hardware geht. wie z.B. Linux Set-Top-Boxen, Mediaplayer oder ähnliches in der Richtung.

Na gut.

Dann starte ich jetzt mal mit C++

Wenn ich so gut in C++ bin und mich weiter vertiefen möchte, um z.B. richtig Performance-abhängige 3D Sachen oder andere Berechnungen zu proggen, kann ich mir C ja immer noch ansehen.

Danke! :)

Geschrieben

Dann starte ich jetzt mal mit C++

Wenn ich so gut in C++ bin und mich weiter vertiefen möchte, um z.B. richtig Performance-abhängige 3D Sachen oder andere Berechnungen zu proggen, kann ich mir C ja immer noch ansehen.

Schaut Dir einmal Qt an Qt - A cross-platform application and UI framework

Develop applications and user interfaces once, and deploy them across Windows, Mac, Linux/X11, embedded Linux, Windows CE and S60 (coming soon) without rewriting the source code

Das wäre für die Portierbarkeit sicherlich bei Dir interessant

Phil

Geschrieben

Im Durchstöbern von Büchern zu C und C++ bin ich auch immer wieder über dieses Qt gestolpert.

Hatte aber nicht gewusst, dass es so portabel ist.

SEHR interessant! Danke!

Habe auch noch einen Thread in einem anderen Forum gefunden, wo es im Prinzip um das gleiche Thema ging: C oder C++

Einig geworden sind die sich nach mehreren Seiten auch nicht. :)

Und bevor ich noch länger überlege, WOMIT ich anfange, sollte ich lieber mal mit IRGENDWAS anfangen.

Ich glaube nämlich, dass ich wohl beides brauchen werden.

Konkretes Beispiel bei einem Kunden von mir, einer Spedition:

- kabelloser Scan von Paketen: Handheld

- Ansteuerung eines Barcode-Druckers

- Kommunikation mit einer Waage, Serielle Schnittstelle, Integration ins Versandlogistik-System

- Steuerung einer USV über den Linux-Server

- Kabellose Bildübertragung von einer Digitalkamera

- PDFs digital signieren

- etc...

Habe das alles zwar auch ohne C++ hinbekommen, aber eben alles etwas komplizierter.

Nur wie gesagt: Perl programmiere ich nun mal schon seit 10 Jahren wirklich täglich, auch privat, und da hab ich auch schon so einiges drauf.

Allerspätestens jedoch, wenn ich ein GUI bräuchte, steig ich nun mal mit Perl aus. Die Mensch-Maschinen Schnittstelle ist halt immer nur ein Browser oder die Konsole.

C++ macht zwar zwischen Windows und Linux keinen Unterschied, aber das meiste für Linux ist halt doch in reinem C geschrieben.

Und da ich ja nicht jedes Mal das Rad neu erfinden möchte, wäre daher C dann doch sehr hilfreich, sich vorhandenes einfach nur anzupassen.

Auch in Sachen Mikroprozessor-Programmierung ist neben ASM hauptsächlich C im Einsatz (vom AVR-GCC wird C++ z.B. nur teilweise unterstützt)

Auch im Hardware-Nahen Embedded-Bereich ist man mit C besser dran.

Für meine Einsatzgebiete scheint es mir also nur eine richtige Antwort zu geben: sich mit beidem zu beschäftigen.

übrigens:

Ein kommendes Projekt von mir, wo es darum geht, dass ein Standalone-System graphische Anzeigen auf einem Bildschirm machen muss, hat mich schließlich dazu getrieben, jetzt endlich C/C++ anzugehen.

Denn auch wenn ich das wohl auch mit meinen "allgemeinen" Programmierkenntnissen in VisualBasic hinbekommen hätte, kommt das leider nicht in Frage, da nur ein Linux System bei diesen Geräten in Frage kommt.

Das zeigt auch wieder mal meine Meinung zu Windows vs. Linux.

Linux ist nicht besser als Windows und Windows ist nicht besser als Linux.

Beides hat seine bevorzugten Einsatzgebiete.

z.B. kann ich mit Linux leider überhaupt nichts am Desktop anfangen (am Arbeitsrechner) aber Gott behüte mich vor Windows Web-Servern und ASP (musste Auftrags-bedingt mal damit arbeiten: einfach nur ein Graus!)

So lieber Leser: wenn Du bis hier hin gekommen bist, dann ist Dir anscheinend wirklich gerade sehr langweilig gewesen! :D ... aber der Mensch hat nunmal ein mitteilungsbedürfnis! ;)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...