C++ und wie geht es weiter?



  • Rudi205 schrieb:

    Neben der Programmierung von Mikrocomtrollern (die ich auch noch vom Namen kenne) weis ich garnicht was man mit C++ noch machen kann. Das wollte ich hier ein wenig erfahren. Sprich neben kleinen Anwendungen was lässt sich und wird standartmäßig in c programmiert?

    Grundsätzlich alles. C und C++ sind mit die verbreitesten Sprachen. Deswegen ist es schwr zu sagen, was genau nun das Gebit von C/C++ ist. Aber grundsätzlich ist alles gut, wo du irgendwie hardwarenah sein willst. Unter anderem: Microcontroller, Betriebssysteme, Computerspiele, High-Performance-Anwendungen aller Art...

    Ich persönlich schreibe eine Maschinenlernbibliothek in C++.



  • @Rudi205:
    Vielleicht wäre auch freie Mathe Software Octave (samt C++ Bib) auch eine richtige Wahl.



  • Gibt es denn ein gutes Buch / Dokument / PDF / Online Tutorial jeglicher Art, was zunächst nochmal auf die Grundlagen eingeht die man beherrschen muss.

    Und am besten auch eine Aufgabensammlung beeinhaltet um das Wissen selbst zu testen und ein bisschen mehr Erfahrung sammeln zu können ?



  • Ich kann das Buch "Grundkurs Software-Entwicklung mit C++" von Dietrich May sehr empfehlen. Ich habe es mir zugelegt, weil ich meine ziemlich eingerosteten C++-Kenntnisse auffrischen wollte.
    In dem Buch sind auch Übungen mit Lösungen drin. Gibt's bestimmt auch in deiner Uni-Bib. 👍



  • Rudi205 schrieb:

    Um Gotteswillen kein Flamewar. Sorry wenn ich das so schroff gesagt habe.

    Nein die Sache ist einfach folgende, in der Uni wurde kein Ausblick gewährt. Es wurden uns die Grundlagen beigebracht aber nicht die Anwendungsgebiete. Ich bin da ehrlich und meine damit.

    Neben der Programmierung von Mikrocomtrollern (die ich auch noch vom Namen kenne) weis ich garnicht was man mit C++ noch machen kann. Das wollte ich hier ein wenig erfahren. Sprich neben kleinen Anwendungen was lässt sich und wird standartmäßig in c programmiert?

    Grüße

    Bei Mikrokontrollern benutzt man immer noch traditionsbewusst C. Die erweiterten Features von C++ sind verpönt, weil sie auf Controllern mit nur geringer Rechenleistung und wenig Speicher problematisch sein können. Inzwischen sind die meisten Controller groß genug um mit der ganzen Vielfalt der C++-Möglichkeiten beharkt zu werden, aber trotzdem hat es sich noch nicht durchgesetzt.



  • Rudi205 schrieb:

    Da die Programmiersprache C++ in meinem Studium (Elektrotechnik) nur zwei Semester gelehrt wurde, frage ich mich aktuell, wie soll es weiter gehen ?

    Als Elektrotechniker wäre es sinnvoll, wenn du dich in C, VHDL und Verilog einarbeitest.
    Das wäre das typische Aufgabengebiet für einen Elektrotechniker im Bezug auf Software.

    Kauf dir also einen FPGA (z.B. Spartan 3) und 2-3 Microcontrollerboards
    zum Üben.
    Als µC macht es Sinn, mehrere kennenzulernen.
    Die gängisten wären hier AVR, MSP430 und ARM.

    Bei den ARM µC kannst du noch am ehsten deine C++ Kenntnisse anwenden, weil diese µC in der Regel auch die entsprechende Leistung und Speicherplatz haben.
    Bei den anderen kleineren µC bist du mit C weitgehend besser dran, wie Z schon sagte.

    Ich bin von der Programmierung angetan und finde es spaßig. Allerdings auf der anderen Seite auch kompliziert.

    Als E-Techniker solltest du bei den hardwarenahen Sachen bleiben.
    Also Steuerungssoftware für µC sowie natürlich das ganze Feld der FPGAs.
    Zu einem gewissen kleinen Teil kommen auch einfache Treiber ohne Overhead auf der Anwendungsebene in Betracht.

    Die Finger lassen solltest du von Software auf der Anwendungsebene, also so Sachen wie 3d Engines, Compiler und CO, denn da steigt die kompliziertheit nicht nur um Quadrat an, sondern hier bräuchtest du auch dann das ganze Hintergrundwissen eines Informatikers, zuminmdest wäre es sehr wertvoll das zu wissen.
    Wenn das das ist, was dich interessiert, dann wärst du zumindst momentan im falschen Studium.
    3d Treiber oder Treiber für Netzwerkkarten und Webcams sind ebenfalls noch eine Domäne, die man eher einem Informatiker anvertrauen sollte.

    Allerdings frage ich mich wie man dann weiter machen kann ? Welche Anwendungen und spezielle Gebiete kann man hier in den Fokus fassen? Was mir einfällt ist , da bei Elektrotechnik naheliegend, die Programmierung von Mikrocontrollern. Dazu gab es in den Vorlesungen nie etwas.

    Ich habe keine Ahnung in welchem Semester du bist, aber vielleicht kommt das noch später. Ich würde zumindest ziemlich stark damit rechnen, frage mal deine Kommilitonen aus dem höheren Semester.
    Desweiteren heißt Studieren natürlich, dass man sich auch in der Freizeit mit seinem Fach noch beschäftig, insofern wäre es sehr sinnvoll, wenn du dich mit µC und FPGAs beschäftigst.

    Als Ausblick hieß es immer Java ist besser haha allerdings denke ich würde ich lieber mit c++ weitermachen als java.

    Java läuft auf der reinen Anwendersoftwareschiene, die Wahrscheinlichkeit, dass du einmal in Java µC programmieren wirst, ist sehr gering.



  • Programmier doch mal nen rudiemntäres Schaltungssimulationsprogram.



  • Jepp, am besten klein anfangen! Schaltungssimulationsprogramm klingt da gut!



  • Eduart schrieb:

    Die Finger lassen solltest du von Software auf der Anwendungsebene, also so Sachen wie 3d Engines, Compiler und CO,

    Das lässt sich so pauschal nicht sagen. Ich komme aus dem E-Technik-Bereich und durfte auch schon mal eine Grafik-Engine für ein Fluorscent-Display coden, mit den üblichen Faxen wir BitBlt, Linien, Kreisen, etc. bis hin zur Darstellung animierter Gifs. Auch einen rudimentären Javaskript-Interpreter habe ich schon hinter mir, der aus Compiler und Virtual Machine besteht. Das Ding funktioniert zwar, aber wäre sicherlich viel besser geworden, hätte ich mich vorher mit Compilerbau auseinandergesetzt. Letztlich kann es nie schaden, sich auch als E-Techniker die Themen anzuschauen, mit denen sich Informatiker sonst herumschlagen.



  • Z schrieb:

    Eduart schrieb:

    Die Finger lassen solltest du von Software auf der Anwendungsebene, also so Sachen wie 3d Engines, Compiler und CO,

    Das lässt sich so pauschal nicht sagen. Ich komme aus dem E-Technik-Bereich und durfte auch schon mal eine Grafik-Engine für ein Fluorscent-Display coden, mit den üblichen Faxen wir BitBlt, Linien, Kreisen, etc. bis hin zur Darstellung animierter Gifs. Auch einen rudimentären Javaskript-Interpreter habe ich schon hinter mir, der aus Compiler und Virtual Machine besteht. Das Ding funktioniert zwar, aber wäre sicherlich viel besser geworden, hätte ich mich vorher mit Compilerbau auseinandergesetzt. Letztlich kann es nie schaden, sich auch als E-Techniker die Themen anzuschauen, mit denen sich Informatiker sonst herumschlagen.

    Der Punkt ist, das ein Informatiker aufgrund des dafür benötigten Hintergrundwissen es besser hingekriegt hätte. Zwar kann man sich auch bei anderen Themen umschauen, aber wenn er Informatikersachen machen will, dann soll er auch Informatik studieren.

    Warum du nun so etwas programmieren durftst, dürfte Zufall sein oder der Chef war schlichtweg zu geizig einen Informatiker dafür einzustellen.



  • Eduart schrieb:

    Z schrieb:

    Eduart schrieb:

    Die Finger lassen solltest du von Software auf der Anwendungsebene, also so Sachen wie 3d Engines, Compiler und CO,

    Das lässt sich so pauschal nicht sagen. Ich komme aus dem E-Technik-Bereich und durfte auch schon mal eine Grafik-Engine für ein Fluorscent-Display coden, mit den üblichen Faxen wir BitBlt, Linien, Kreisen, etc. bis hin zur Darstellung animierter Gifs. Auch einen rudimentären Javaskript-Interpreter habe ich schon hinter mir, der aus Compiler und Virtual Machine besteht. Das Ding funktioniert zwar, aber wäre sicherlich viel besser geworden, hätte ich mich vorher mit Compilerbau auseinandergesetzt. Letztlich kann es nie schaden, sich auch als E-Techniker die Themen anzuschauen, mit denen sich Informatiker sonst herumschlagen.

    Der Punkt ist, das ein Informatiker aufgrund des dafür benötigten Hintergrundwissen es besser hingekriegt hätte. Zwar kann man sich auch bei anderen Themen umschauen, aber wenn er Informatikersachen machen will, dann soll er auch Informatik studieren.

    Warum du nun so etwas programmieren durftst, dürfte Zufall sein oder der Chef war schlichtweg zu geizig einen Informatiker dafür einzustellen.

    Eigentlich stellt man für sowas wie einen JS-Interpreter keinen Informatiker ein, sondern nimmt eine freie Software, oder kauft ihn sich dazu. Aber in dem Fall war der Auftraggeber selbst ein Softwarehersteller, der Netzwerkkomponenten aller Schichten für embedded Systeme anbietet, der keinen Fremdcode verwendet und der kurzfristig mal eben eine Scripting-Engine brauchte. Er erinnerte sich, dass ich mal rumgelabert hatte einen BASIC-Interpreter programmiert zu haben, und bot mir den Auftrag an. Ganz unerfahren in solchen Dingen war ich also nicht.

    Letzlich läuft es ja oft so, dass derjenige den Job bekommt, der genug rumtrommelt und nicht der, der still und leise in seinem Kämmerlein hockt, aber möglicherweise der bessere Kandidat wäre.



  • Also vielen Dank nochmal.

    Gibt es jetzt ein Anfänger Buch welches ihr mir für die Programmierung von uC empfehlen könnt ?

    Bin aufjedenfall sehr erfreut über die vielen Antworten !



  • Rudi205 schrieb:

    Also vielen Dank nochmal.

    Gibt es jetzt ein Anfänger Buch welches ihr mir für die Programmierung von uC empfehlen könnt ?

    Bin aufjedenfall sehr erfreut über die vielen Antworten !

    Ich würde mal an deiner Stelle hier nachfragen, da sind auch die ganzen Elektroniker usw. vertreten:

    http://www.mikrocontroller.net/forum/mikrocontroller-elektronik

    So generell kann man deine Frage nämlich nicht beantworten, weil es erstmal darauf ankommt, für welchen µC du überhaupt programmieren möchtest.

    Da alle µC in der Regel in C programmiert werden, wäre ein gutes Buch für C der erste Schritt.
    Wie du dann aber dein gelerntes C wissen bei einem bestimmtem µC umsetzt, das ist wieder HW abhängig.



  • Eduart schrieb:

    Z schrieb:

    Eduart schrieb:

    Die Finger lassen solltest du von Software auf der Anwendungsebene, also so Sachen wie 3d Engines, Compiler und CO,

    Das lässt sich so pauschal nicht sagen. Ich komme aus dem E-Technik-Bereich und durfte auch schon mal eine Grafik-Engine für ein Fluorscent-Display coden, mit den üblichen Faxen wir BitBlt, Linien, Kreisen, etc. bis hin zur Darstellung animierter Gifs. Auch einen rudimentären Javaskript-Interpreter habe ich schon hinter mir, der aus Compiler und Virtual Machine besteht. Das Ding funktioniert zwar, aber wäre sicherlich viel besser geworden, hätte ich mich vorher mit Compilerbau auseinandergesetzt. Letztlich kann es nie schaden, sich auch als E-Techniker die Themen anzuschauen, mit denen sich Informatiker sonst herumschlagen.

    Der Punkt ist, das ein Informatiker aufgrund des dafür benötigten Hintergrundwissen es besser hingekriegt hätte. Zwar kann man sich auch bei anderen Themen umschauen, aber wenn er Informatikersachen machen will, dann soll er auch Informatik studieren.

    Warum du nun so etwas programmieren durftst, dürfte Zufall sein oder der Chef war schlichtweg zu geizig einen Informatiker dafür einzustellen.

    na klar doch....
    was ich schon alles tolles von informatikern erleben durfte.
    abstraktion hoch 1000 wo keiner mehr durchblickt (nicht mal der 'verursacher' selbst), jede programmzeile ist ein designpattern, wichtiger als das ergebnis ist wie der code aussieht, kein verständnis für hardwarenahe sachen, nicht in der lage schnelle oder pragmatische lösungen zu liefern.

    ein ehrgeiziger ET student kann problemlos in der software branche fuss fassen, ein informatiker in der ET branche hingegen sicher nicht!

    ich will nicht informatiker schlechtreden, aber den müll den du von dir gibst schon.



  • Rudi205 schrieb:

    Hallo an Alle,

    Da die Programmiersprache C++ in meinem Studium (Elektrotechnik) nur zwei Semester gelehrt wurde, frage ich mich aktuell, wie soll es weiter gehen ?

    Ich bin von der Programmierung angetan und finde es spaßig. Allerdings auf der anderen Seite auch kompliziert.

    Von der Uni hat man im Gründe genommen die Basics von C++ bekommen welche ich sicherlich nochmal auffrischen könnte.

    Allerdings frage ich mich wie man dann weiter machen kann ? Welche Anwendungen und spezielle Gebiete kann man hier in den Fokus fassen? Was mir einfällt ist , da bei Elektrotechnik naheliegend, die Programmierung von Mikrocontrollern. Dazu gab es in den Vorlesungen nie etwas.

    Als Ausblick hieß es immer Java ist besser haha allerdings denke ich würde ich lieber mit c++ weitermachen als java.

    Was denkt ihr zu dem Thema ?

    Grüße

    Im Prinzip steht dir mit C++ alles offen.
    Und auch als Elektrotechniker steht dir alles offen in Sachen Softwareentwicklung.
    In unserer Firma entwickeln wir mit C++ für unsere embedded systems, welche Linux als OS haben.
    Wir stellen inzwischen wieder eher Elektrotechniker als Informatiker für die SW Entwicklung ein. Viele Informatiker leben in ihrer abstrakten Welt. Versuchen alles möglichst allgemein zu gestalten. Letztlich ist die SW dadurch extrem langsam geworden.

    Aber zurück zum Thema, programmiere am PC einfach ein paar interessante Sachen:
    +Musik einlesen, mit FIR Filtern oder anderen digitalen Filtern bearbeiten und dann wieder abspeichern
    +Bilder einlesen, und verschiedene Bildbearbeitungen/erkennungen implementieren
    +GUI Frameworks kennenlernen (z.B. wxWidgets)
    +Mathematische Algorithmen probieren, z.B. FFT für Musikdateien
    +HEX Editor
    +einfache Spiele wie Snake
    +einfacher Matheparser der Ausdrücke wie (1+2)*3 lösen kann
    +Mikrocontroller Startset kaufen und mit C oder C++ programmieren
    +Raspberry pi kaufen, Linux kennenlernen und mit C oder C++ programmieren
    +usw...

    Als Buch empfehle ich "Der C++ Programmierer"

    P.S.: Dass Java besser ist, stimmt nicht, das ist eine ziemlich schwache Aussage des Lehrenden. Zumindest ist mir kein Betriebssystem bekannt, dass in Java programmiert wurde.



  • sdfsdfsf schrieb:

    na klar doch....
    was ich schon alles tolles von informatikern erleben durfte.
    abstraktion hoch 1000 wo keiner mehr durchblickt (nicht mal der 'verursacher' selbst), jede programmzeile ist ein designpattern, wichtiger als das ergebnis ist wie der code aussieht, kein verständnis für hardwarenahe sachen, nicht in der lage schnelle oder pragmatische lösungen zu liefern.

    ein ehrgeiziger ET student kann problemlos in der software branche fuss fassen, ein informatiker in der ET branche hingegen sicher nicht!

    Für den ET ist Software niemals Selbstzweck. Er steht auf dem Standpunkt: die beste Software ist keine Software. Das geht mir jedenfalls so. Ich versuche den Code auf das Nötigste zu beschränken. Für einfache Variablen nehme ich einfach "int", obwohl sie nie negativ werden können, und verzichte auf "const", obwohl sich ihr Wert nicht ändern kann. Code muss performant und möglichst primitiv sein. 🙂



  • tippgeber schrieb:

    P.S.: Dass Java besser ist, stimmt nicht, das ist eine ziemlich schwache Aussage des Lehrenden.

    Java ist nicht "besser" sondern anders.

    tippgeber schrieb:

    Zumindest ist mir kein Betriebssystem bekannt, dass in Java programmiert wurde.

    http://www4.cs.fau.de/Projects/JX/index.html



  • tippgeber schrieb:

    P.S.: Dass Java besser ist, stimmt nicht, das ist eine ziemlich schwache Aussage des Lehrenden. Zumindest ist mir kein Betriebssystem bekannt, dass in Java programmiert wurde.

    Jo. Anfangs waren es Deppen, die auf Java abfuhren, das war der erste große Hype. Ich nenne ihn die Zeit der veralberten Trottel. Dann kam der riesige Hype getragen durch die Ideologen, die Sun für viel viel fairer als Microsoft hielten und nur deswegen Mozilla-Firefox und Java benutzten, ich nenne ihn die Zeit der Professoren. Dann kam ein zwischen-Hype, wo alle Banken Java benutzen zur Kryptologie (!!! einself !!!, rofl, komischer gehts gar nicht, lecker, damals setze C gegen 70k Zeichen pro Sekunde durcgh und Java gegen 0.0007 Zeichen pro Sekunde durch den gleichen Algo, aber man läßt sich ja auf Messen bequatschen und der Fremde Verkäufer hat stehts viel mehr Recht als der Fachmann im Haus). Das war der dritte Hype von Bankern getragen. Und zur Zeit leben wir im vierten Java-Hype, der von Trollen getragen wird.

    Je nach lokaler Zeitdellatation kann es Leute, Organisationen und Landstriche geben, die noch vonn in den Hypes 1 bis 3 sind, Hochschulen bleiben gerne bis zu 50 Jahren veraltet, Banken so ca 30 Jahre, die IHK (als Aufsicht über die deutschen Ausbildungeberufe) so 80 Jahre, private Fortbildungsinstitute so ca 25 Jahre, populärwissenschaftliche Buchverlage (Galileo Press) 15 Jahre.



  • Java im Dauerhype, kann ja gar nicht besser sein.



  • Z schrieb:

    sdfsdfsf schrieb:

    na klar doch....
    was ich schon alles tolles von informatikern erleben durfte.
    abstraktion hoch 1000 wo keiner mehr durchblickt (nicht mal der 'verursacher' selbst), jede programmzeile ist ein designpattern, wichtiger als das ergebnis ist wie der code aussieht, kein verständnis für hardwarenahe sachen, nicht in der lage schnelle oder pragmatische lösungen zu liefern.

    ein ehrgeiziger ET student kann problemlos in der software branche fuss fassen, ein informatiker in der ET branche hingegen sicher nicht!

    Für den ET ist Software niemals Selbstzweck. Er steht auf dem Standpunkt: die beste Software ist keine Software. Das geht mir jedenfalls so. Ich versuche den Code auf das Nötigste zu beschränken. Für einfache Variablen nehme ich einfach "int", obwohl sie nie negativ werden können, und verzichte auf "const", obwohl sich ihr Wert nicht ändern kann. Code muss performant und möglichst primitiv sein. 🙂

    Ich denke auch, dass man SW nicht zu sehr abstrahieren darf.
    Wenn ich an unsere Firma denke, so sind die Module, die voll mit "super wiederverwendbaren Design Patterns" sind, die starrsten. Da wird tausendmal voneinander abgeleitet, da kannst du nicht mal einfach was ändern. Aber hauptsache alles ist "superflexibel".

    In meiner letzten Firma hat ein Info Student die Aufgabe bekommen, ein Modul zu schreiben dass E-Mails empfangen kann. Und das mit C#, in einer Sprache, wo dank der großen Klassenbibliothek eh schon vieles vorhanden ist.
    Jedenfalls hat dieser Typ wohl alles, was er in der Uni gelernt hat, umgesetzt. Das Ergebnis war eine riesige Ansammlung von sinnlosen Klassen die nur dazu da waren, "Struktur reinzubekommen und flexibel zu sein". Achso, funktioniert hats auch nicht. Dafür war die Klassenstruktur schön 😮
    Am Ende hat ein Maturant alles neu geschrieben und siehe da, es hat dann auch funktioniert.

    Versteht mich nicht falsch, es gibt super gute Informatiker, auch hier im Forum. Aber genau so Typen wie "Sone" sind es, die massenhaft Scheiße bauen (sprich Abstraktion hoch tausend, C++11 wo immer es geht einfach nur weil es "cooler" ist als C++03, alles vertempletifizieren usw...), und davon aber auch noch voll überzeugt sind.

    Schönen Tag noch!


Anmelden zum Antworten