Hey Leute,
habe es während meines Studiums aufgrund von anderen Interessen
ausserhalb der Technik versäumt, mich mit C/C++ zu beschäftigen.
Habe da jetzt neulich privat mich mit beschäftigt und wollte mal fragen,
wie man "relevante", für den lebenslauf wichtige Erfahrung in diesem
Bereich sammelt? Stehe kurz vor der BSC-Arbeit.
Soll ich ne Abschlussarbeit in C/C++ machen? Mit Bewerbungen für den
Werkstudentenjob im Bereich C/C++ bin ich bisher gescheitert.
VG
Du könntest an einem Open Source-Projekt mitarbeiten. Da kannst du dich
mit anderen Entwicklern austauschen und programmierst auch noch was
sinnvolles. Wenn du da nur an einigen Ecken mitarbeitest, wird es für
einen Arbeitgeber schwer nachzuvollziehen, was du da eigentlich getan
hast. Etwas anderes ist es, wenn du ein eigenes Projekt auf die Beine
stellst oder zu einem bestehenden Projekt einen größeren Teil, der mehr
oder weniger eng umrissen ist, beisteuerst.
Vielleicht ist google summer of code was.
siehe: https://developers.google.com/open-source/gsoc/
Ich glaube, du bekommst einen Mentor und vielleicht am Ende auch einen
Zettel, auf dem draufsteht, dass du was sinnvolles gemacht hast.
Was ist C/C++? C und C++ sind zwei sehr unterschiedliche Sprachen. C
lernt sich schnell, C++ vollständig zu lernen dauert lange da sehr
komplex. Erstmal solltest du dich also für eine der Sprachen
entscheiden. Ich persönlich würde immer zu C++ raten, da es für 99% der
Plattformen mittlerweile C++ Compiler gibt, C++ (mindestens!) genauso
effizient wie C ist und es allgemein wenig Grund gibt noch das doch arg
eingeschränkte C zu lernen.
Erfahrungen sammeln: Gute Bücher durcharbeiten und dort ggf. vorhandene
Übungsaufgaben machen, und dann üben, üben, üben: Einfach coole
Hobby-Projekte ausdenken die dir Spaß machen und durchziehen. Die kann
man auch gerne im Lebenslauf angeben, insbesondere wenn's was
vorzuführen gibt. Das macht man natürlich nicht so schnell, dauert ein
paar Jahre bis man nennenswerte Erfahrung & Kenntnisse gesammelt hat.
Hilfreich sind auch Wettbewerbe, wie z.B. Formula Student
(Embedded-lastig).
Deine Abschlussarbeit in der Sprache zu machen ist natürlich auch gut.
> Habe da jetzt neulich privat mich mit beschäftigt und wollte mal fragen,> wie man "relevante", für den lebenslauf wichtige Erfahrung in diesem> Bereich sammelt?
Mach ein paar ordentliche(!) Projekte, die Deinen Wissensstand
widerspiegeln und die Du bei einer Bewerbung vorzeigen kannst. Und mach
bei einer Bewerbung korrekte Angaben dazu. Aber glaub mir, weder C noch
C++ lernt man mal so eben. Bis man C oder C++ 'ein bisschen' kann
vergehen jeweils ein paar 10k Zeilen Code, denn die Syntax alleine zu
kennen reicht bei weitem nicht. Um sich 'gut' auf die Fahne schreiben zu
dürfen brauchts eher grob 2 (C) bzw. 5 (C++) Jahre belastbare Erfahrung
(Vollzeit, also 40h/Woche). Das Prädikat 'sehr gut' schaffen nur wenige
(kein Schwerz). Und wirf keinenfalls C und C++ in einen Topf, auch wenn
andere das häufig tun. Das sind zwei eigentlich grundverschiedene
Programmiersprachen, C++ kann nur zufällig (zumindest sollte man das so
sehen) einen Großteil von dem was C kann.
Es gibt da eine Seite im Internet, mit Namen: www.mikrocontroller.net.
Da posten alle möglichen Leute Probleme die sie mit den beiden Sprachen
haben, und manchmal kannst Du auch die Lösung verfolgen.
Natürlich gibt es auch viele andere Foren, aber oft ist dort der Tenor:
"Hier hast Du, friss oder stirb". Also tolle Programme, aber kein Ton
dazu, warum so und nicht anders. Sich als Anfänger durch ein Programm zu
hangeln, das mehrere hundert Zeilen hat, ist der richtige Job für jeden
der Sisyphos heißt.
Anleitungen, in Form mehr oder weniger aussagekräftiger Manuskripte,
gibt es natürlich zuhauf im Netz. Da hast Du aber nur die Wahl: Gefällt
mir der Stiel oder verstehe ich nur Bahnhof.
hmm.. warum auf c++ versteifen??
open source... da muss man schon ein bestimmter typ mensch sein für den
das freizeit und nicht arbeit bedeutet... sonst wird es hart neben
studium/arbeit.
bacheler arbeit in c++ ist moeglich macht es aber um so schwerer.
werkstudentenjob ist immer noch die beste möglichkeit... brauchst nicht
so viel eigendisziplin und wirst bezahlt. also weiter versuchen.
aber denke ich muss man flexibel bleiben... wuerde das feld zumindest
ausweiten auf jobs wo objekt orientiert geproggt wird. das bringt dich
in der hinsicht auf jeden fall weiter... letztendlich auch in c++
lg
einfach hinsetzen und ranklotzen, ein paar kleine private projekte zu
vorzeigen bei bewerbungen umsetzen, sauber dokumentieren, vielleicht
auch testfälle schreiben.
aber wenn bald die abschlussarbeit ansteht wirds wohl zu knapp, du hast
es einfach verpennt und 'andere Interessen' waren wichtiger. gibs zu:
saufen, weiber und party machen war es, richtig?
Programmierer schrieb:> Was ist C/C++? C und C++ sind zwei sehr unterschiedliche Sprachen. C> lernt sich schnell, C++ vollständig zu lernen dauert lange da sehr> komplex.
!!!
Lern das als Erstes.
Wer C/C++ schreibt und glaubt, es wäre dasselbe, der outet sich sofort
als Supernoob.
Ratlos schrieb:> Also eher C?
Als Grundlage zur MC Programmierung ist es sicher ganz klug, erstmal C
zu lernen. C++ ist hier noch nicht so verbreitet, wie z.B. auf PCs und
Macs.
Sicher wird ein komplexes Programm auf PCs heute keiner mehr im reinen C
schreiben, genauso wie die wenigsten kleinen bis mittleren MC Projekte
in C++ gemacht werden.
Ein schönes Beispiel für komplexere Projekte auf dem PC, Linux und Mac
ist z.B. Torque3D, eine OpenSource (MIT Lizenz) Spieleplattform in C++,
an der jeder selber mit basteln kann.
http://www.garagegames.com
Programmiere da selber ein wenig mit und es macht Spass, es gibt da auch
eine nette Community.
Matthias S. schrieb:> Als Grundlage zur MC Programmierung ist es sicher ganz klug, erstmal C> zu lernen. C++ ist hier noch nicht so verbreitet, wie z.B. auf PCs und> Macs.
Es gibt aber auch eine ganze Menge Code und Projekte in C++. Ich sage da
mal nur mbed und Arduino. Trotzdem wirst du in der MC Welt ohne C nicht
klar kommen. Wichtig ist vor allem die Unterschiede zu kennen und auch
die Fallstricke bei gleichzeitigem Einsatz von C, Assembler und C++. Für
ein "blinky" auf einem ESP8266/Arduino werden 17 C++ 22 C und 1
ASM-Dateien übersetzt. Bei mbed ist der C-Anteil wesentlich kleiner.
Ich persönlich halte es nicht für klug mit C++ anzufangen. Die meisten
Lehrbücher unterdrücken bewusst alles was aus den C-Bibliotheken kommt.
Das macht auch vor printf und Konsorten nicht halt. Da werden dann mal
eben für einfache Konsole - Ausgaben zig-mal new und delete verwendet,
auch wenn man das auf dem ersten Blick nicht sieht. Auf einem PC spielt
das keine Rolle aber im Embedded-Bereich sieht das schon wieder ganz
anders aus. Da ist aber auch die Anzahl der vernünftig nutzbaren C++
Konstrukte deutlich kleiner.
> Was ist C/C++? C und C++ sind zwei sehr unterschiedliche Sprachen.
so ist es.
> C lernt sich schnell, C++ vollständig zu lernen dauert lange da sehr> komplex.
das Gleiche gilt für C; schon mal was von GTK+ gehört, etc.?
Da wünsche ich Dir viel Spaß mit dem schnellen Lernen von C.
Wenn Du von C++ auf C reduzierst, kann es sogar noch schwieriger werden,
da eine Reihe von selbsternannten C++ Dozenten, die natürlich auch C
"können" die Konzepte von C nicht verstanden haben. Es gibt jede Menge
Müllcode und schlechte Beispiele im Netz - mit dem Ergebnis: C++ ist
besser.
Für C gilt das Gleiche wie für C++
An der der Oberfläche kratzen kannst Du nämlich bei beiden Sprachen und
bist dann der Experte für beide Sprachen ... wer es glaubt ...
Ein guter C++ Programmierer wird niemals ein guter C Programmierer sein
und umgekehrt - beide Sprachen sind komplex und werden kontinuierlich
weiterentwickelt.
Armes Deutschland schrieb:> Ein guter C++ Programmierer wird niemals ein guter C Programmierer sein> und umgekehrt - beide Sprachen sind komplex und werden kontinuierlich> weiterentwickelt.
Ein guter Programmierer ist vor allem einer der sein Problem in einer
vernünftigen Zeit löst und dabei wartbaren und dokumentierten Code
hinterlässt. Ständig den neusten Errungenschaften der Compilerbauer
hinterher zu hecheln macht in meinen Augen keinen Sinn. Das man der
ultimative Experte für eine Sprache ist wird höchstens an einer
Hochschule bezahlt, ansonsten steht das Problem in Vordergrund und dabei
ist manchmal weniger mehr. Klar machen die neusten Errungenschaften von
C++ an manchen Stellen Sinn, es ist aber nicht so, dass es für irgend
ein Problem eine zwingende Voraussetzung ist. Es gibt auch genügend
Projekte die laufen über 10 und mehr Jahre, die kann man nicht alle paar
Jahre neu machen nur weil es an der einen oder anderen Stelle heute
etwas eleganter geht. C++ ist sicher an einigen Stellen komplex aber C?
Komplex ist eventuell das was man damit macht, die Sprache selbst aber
nicht.
Armes Deutschland schrieb:> das Gleiche gilt für C; schon mal was von GTK+ gehört, etc.?> Da wünsche ich Dir viel Spaß mit dem schnellen Lernen von C.
Was hat das Verstehen des gtk+ Codes mit dem Verstehen von C zu tun?
Hier haben die Programmierer eine geballte Ladung komplexen Code
abgeliefert der aber nicht durch die Sprache C so komplex ist sondern
durch die Komplexität der Aufgabenstellung. Es wird wohl keine Sprache
geben, mit der man so was für jeden sofort verständlich implementieren
kann.
Ein ähnliches Beispiel für c++ ist wxWidget. Ich würde mir auch nicht
erdreisten zu sagen die Entwickler kratzen nur an der Oberfläche, obwohl
hier bei weitem nicht alle C++ Möglichkeiten ausgereizt sind. Das
Projekt läuft aber auch schon deutlich länger als 10 Jahre.
> Ein guter Programmierer ist vor allem einer der sein Problem in einer> vernünftigen Zeit löst und dabei wartbaren und dokumentierten Code> hinterlässt.
das sind die Basic Skills und da mag es sicherlich schon hapern.
> ständig den neusten Errungenschaften der Compilerbauer> hinterher zu hecheln macht in meinen Augen keinen Sinn.
als Informatiker mußt Du aber auf dem neuesten Stand bleiben und kannst
Dich nicht auf vorhandenen Wissen ausruhen - auch wenn diese Strategie
natürlich ausreichen kann!
> Das man der ultimative Experte für eine Sprache ist wird höchstens an> einer Hochschule bezahlt, ansonsten steht das Problem in Vordergrund und> dabei ist manchmal weniger mehr.
Du mußt die Vorgaben Deiner Firma erfüllen und die meisten haben auch
ganz klare Vorgaben bezüglich Tools und Compiler mit der die Aufgabe zu
lösen ist.
Du hast nicht die freie Auswahl für die Lösung der Aufgabe als
Angestellter.
Natürlich wird derjenige eingestellt, der nachweisbar mit Visual C++,
etc. programmiert hat und erst wenn der nicht dabei ist wird weiter
geschaut bzw. auf Freelancer oder Dienstleister ausgewichen.
> C++ ist sicher an einigen Stellen komplex aber C?> Komplex ist eventuell das was man damit macht, die Sprache selbst aber> nicht.
Du siehst C offenbar als abgeschlossene statische Sprache an ?!
Selbst Basic-Interpreter Sprachen findest Du auf dem Markt als
Neuauflage bzw. Revival mit allerlei interessanten Neuerungen ... nur
kein Schwein nutzt die natürlich wegen schlechter Doku, usw., usw.
Die Aufgaben ändern sich und damit auch die Möglichkeiten vorhandener
Sprachen ... oder es entstehen ganz neue Sprachen so wie Java, Ruby,
usw., um die Aufgabe überhaupt bestmöglich lösen zu können.
> Hier haben die Programmierer eine geballte Ladung komplexen Code> abgeliefert der aber nicht durch die Sprache C so komplex ist sondern> durch die Komplexität der Aufgabenstellung.
Hiermit gibst Du Dir die Antwort - es werden Erweiterungen geschaffen,
um ansonsten nicht lösbare Aufgaben lösbar zu gestalten.
Gtk+ und wxWidget kann man natürlich komplett isoliert betrachten, aber
da macht man es sich m.E. zu einfach - das ist Ansichtssache.