Chance auf einen C++-Job als PHP-Umsteiger?
-
1500€ ist natürlich schon extrem billig, da werden einige Arbeitgeber schwach Vor allem, wenn du 10 Jahre Berufserfahrung als Entwickler hast. Du bist ja kein kompletter Anfänger, der keine Ahnung von Computern und Software hat und meint, er hätt sich privat ein bisschen C++ angeschaut. Man sollte davon ausgehen können, dass du dich in dem Bereich auskennst und dich auch in eine neue Sprache reindenken kannst. Wenn du sagst, du willst mit 1500 anfangen und in einem Jahr 2500 verdienen, wenn du dich eingearbeitet hast, würden denke ich einige mitmachen.
-
c++ progger schrieb:
Ich würde dir raten, dein bisheriges Know How, das du durch PHP gesammelt hast, nicht aufzugeben. Immer wieder werden in der Webentwicklung auch C++ Kenntnisse gefordert. Das wäre eventuell deine Chance: du entwickelst zwar dort auch noch ein bisschen PHP, aber durch deine C++ Kenntnisse und durch deine Motivation bleiben immer mehr Aufgaben bei dir hängen, die mit C++ zu tun haben.
Dem wollte ich nur mal zustimmen. Ich bin aktuell als C#/C++-Entwickler eingestellt. C# habe ich seit locker drei Jahren nicht mehr gesehen.
Davor war ich Java-Entwickler und hatte offiziell nix mit C++ zu tun. Zuerst mit Java, dann kam immer mehr C und C++ ins Spiel, wenn es darum ging, Sachen zu implementieren, die Java nicht anbot. Brauchbare C++-Kenntnisse sind schon willkommen.
Gehaltssprünge machst Du nur mit Jobwechsel. Weiterbildung wird meiner bisherigen Erfahrung nach nicht honoriert, sondern wird als "selbstverständlich" abgetan - egal ob es sich um std::map handelt oder ob man sich in ganz neue Bereiche auf eigene Kosten einarbeiten lässt.
-
@SwitchIO
Du musst ja nicht gleich €5000 Brutto verlangen, aber €1500 sind viel zu wenig. Damit kommunizierst du nur dass du nicht weisst was ein Programmierer wert ist und/oder dass du dich für sehr schlecht hältst.
Wenn ich mich richtig erinnere dann kann man einem Programmierer mit 10 Jahren Berufserfahrung in Ö gar nicht so wenig zahlen (kollektivvertraglich festgelegter Mindestlohn). Und in Ö ist das dann noch x14 und nicht x12.Ich würde dir empfehlen auf jeden Fall mehr zu verlangen als du momentan bekommst, zumindest €200-300. Runterhandeln lassen kannst du dich immer noch.
Aber wie oben schon angedeutet: nicht zu weit. Wenn du für so wenig Geld arbeitest, bekommt der Arbeitgeber bloss den Eindruck dass du nix kannst. Was dann trotz des für ihn so "günstigen" Angebots dazu führen kann dass er jmd. anderen nimmt.
-
Vielen Dank für die erneut sehr nützlichen Antworten. Das macht mir doch nun ein wenig Mut. Den Vorschlag, ein paar kleine Projekte in C++ zu machen, halte ich für äußerst sinnvoll. Dann kann der potentielle Arbeitgeber gleich sehen mit welchem Kenntnisstand er es zu tun hat.
Ich bestelle mir die Woche noch "Einführung in die Programmierung mit C++" von Bjarne Stroustrup, damit ich nochmal von der Pike auf anfangen kann, obwohl ich vieles schon kenne. In meiner Fach-Bibliothek schlummern schon die Werke: "Die C++ Programmiersprache(Bjarne Stroustrup)", "Effektiv C++ Programmieren(Scott Meyers)" und "Notizen zu C++(Peter Thömmes)". Vieles in den zuletzt genannten Büchern verstehe ich zwar, aber es ist doch schon viel Profistoff dabei. Deswegen steige ich nochmal im EG ein und kann ja dann die ganz trivialen Geschichten schneller durchackern.
Als Projekte werde ich was mit Bildbearbeitung machen, das hat mich schon immer interessiert und da habe ich auch schon mit mit C++/Qt angefangen gehabt und kann ein geladenes Bild in Echtzeit die HSV Parameter per Slider einstellen. Das ist nicht viel, aber das kann ich weiter ausbauen und dann auch zeigen.
Wenn ihr noch Ideen für kleine Projekte habt, dann immer her damit. Ich werde mit Sicherheit auch die ein oder andere Frage hier zur Implementierung oder auch der Mathematik dahinter hier rein stellen und mich dann auseinander nehmen lassen^^
Vielleicht kann ich mich dann schon Ende des Jahres irgendwo bewerben. Zur Not würde ich 2 Wochen kostenlose Probearbeiten anbieten, dann kann ich sehe ob es passt und der Arbeitgeber+Kollegen auch. Denn wenn ich was gelernt haben, dann ist es das, dass man Fachwissen dazu lernen kann, aber die Zwischenmenschliche Chemie ist mindestens genauso wichtig und die stimmt oder halt nicht.
Es wäre toll von dem Webkram weg zu kommen. Ich programmiere nun schon so lange PHP und habe kein einziges Buch darüber, da es mich privat überhaupt nicht interessiert und ich Fachbücher sonst liebe.
Wenn euch noch was einfällt, dann immer her damit, ansonsten bedanke ich mich für eure Zeit.
P.S.: @Xin: Das mit dem Assembler-Tutorial verschieben wir dann lieber. Ich will mich jetzt voll auf C++ konzentrieren. Da alles neben der Arbeit laufen muss, würde das nicht sonst nicht gut funktionieren.
-
SwitchIO schrieb:
Ich bestelle mir die Woche noch "Einführung in die Programmierung mit C++" von Bjarne Stroustrup, damit ich nochmal von der Pike auf anfangen kann, obwohl ich vieles schon kenne. In meiner Fach-Bibliothek schlummern schon die Werke: "Die C++ Programmiersprache(Bjarne Stroustrup)", "Effektiv C++ Programmieren(Scott Meyers)" und "Notizen zu C++(Peter Thömmes)". Vieles in den zuletzt genannten Büchern verstehe ich zwar, aber es ist doch schon viel Profistoff dabei. Deswegen steige ich nochmal im EG ein und kann ja dann die ganz trivialen Geschichten schneller durchackern.
Da scheint jedenfalls eine Menge brauchbares dabei zu sein. "Notizen zu C++" wollte ich mir auch mal zulegen, der Rest hört so oder so in eine gute Bibliothek eines C++-Entwicklers.
SwitchIO schrieb:
Als Projekte werde ich was mit Bildbearbeitung machen, das hat mich schon immer interessiert und da habe ich auch schon mit mit C++/Qt angefangen gehabt und kann ein geladenes Bild in Echtzeit die HSV Parameter per Slider einstellen. Das ist nicht viel, aber das kann ich weiter ausbauen und dann auch zeigen.
Ich finde das eine sehr gelungene Auswahl.
SwitchIO schrieb:
Vielleicht kann ich mich dann schon Ende des Jahres irgendwo bewerben. Zur Not würde ich 2 Wochen kostenlose Probearbeiten anbieten, dann kann ich sehe ob es passt und der Arbeitgeber+Kollegen auch.
Du bekommst so oder so eine 6 monatige Probezeit in der Du Dich beweisen musst/kannst und in der Dir als Arbeitnehmer steht es sowieso zu, zu kündigen.
Lerne, dann bewirb Dich als C++-Entwickler. Und dann lerne weiter. Es gibt zu wenige wirklich gute C++-Entwickler.
SwitchIO schrieb:
P.S.: @Xin: Das mit dem Assembler-Tutorial verschieben wir dann lieber. Ich will mich jetzt voll auf C++ konzentrieren. Da alles neben der Arbeit laufen muss, würde das nicht sonst nicht gut funktionieren.
Denke ich mir, aber ich frage immer mal wieder, denn gelegentlich findet sich auch mal einer mal, der mithilft. Nur so hält man solch ein Projekt am laufen.
Falls Du unabhängig davon Interesse hast, kannst Du auch die bisher vorhandenen Teile des C++-Tutorial lesen und mich kritisieren. Auch so etwas hilft.
Eine Verpflichtung gehst Du damit nicht ein.
-
Ich schaue mir gerne dein C++-Tutorial an.
-
SwitchIO schrieb:
Als Projekte werde ich was mit Bildbearbeitung machen, das hat mich schon immer interessiert und da habe ich auch schon mit mit C++/Qt angefangen gehabt und kann ein geladenes Bild in Echtzeit die HSV Parameter per Slider einstellen. Das ist nicht viel, aber das kann ich weiter ausbauen und dann auch zeigen.
Wenn ihr noch Ideen für kleine Projekte habt, dann immer her damit. Ich werde mit Sicherheit auch die ein oder andere Frage hier zur Implementierung oder auch der Mathematik dahinter hier rein stellen und mich dann auseinander nehmen lassen^^
das ist tatsächlich ein interessantes und brauchbares Projekt.
Sowas ähnliches hab ich auch einmal gemacht.
Anbei eine Anwendungsidee, du kannst natürlich auch ganz andere Dinge umsetzen, aber du wolltest ja Ideen haben, also hier kommt eine:Mach dir zuerst eine Klasse, die zumindest Bitmaps laden und speichern kann (später kannst du sie um JPG, PNG und ähnliches erweitern). Das Bitmap Format ist recht einfach, vor allem wenn du nur 24bit Bitmaps verwendest.
Du hast damit alle Pixel im Speicher, und kannst dann recht einfach darauf zugreifen, indem du eine Methode hast, die dir den Pixel liefert, den du dann auch verändern kannst.Beispielsweise könnte das Interface für die Bildklasse so aussehen:
// Interface für Image Klassen class IImage { public: virtual ~IImage(); virtual bool Load(const std::string& filename) = 0; virtual bool Save(const std::string& filename) = 0; virtual Pixel& PixelAt(uint32_t x, uint32_t y) = 0; virtual uint32_t GetWidth() const = 0; virtual uint32_t GetHeight() const = 0; };
Ein Pixel könnte z.B. so aussehen:
struct Pixel { // RGB + Alpha Kanal uint8_t red; uint8_t green; uint8_t blue; uint8_t alpha; // Grauwert uint8_t gray; bool isGray; // zusätzliche Daten int extraData; // Mit 0 initialisieren Pixel():red(0),green(0),blue(0),alpha(0),gray(0),isGray(false),extraData(0){} };
Ich hab aufbauend auf der Bildklasse dann einige Funktionen zur Bearbeitung und Objekterkennung geschrieben.
// Grenzwert: Graustufen void Threshold(IImage& img, uint8_t value); // Bilder vergleichen void DiffImage(IImage& img, IImage& background); // Graustufen Bild normalisieren, durchschnittlicher Pixelwert=128 void Normalize(IImage& img); // ... und viele mehr ...
Eine Anwendung davon war die Erkennung von Personen bei uns im Wohnzimmer mittels Webcam.
Um von der Webcam Bilder zu bekommen hab ich ein kleines Linuxprogramm (fswebcam) verwendet, welches ein Foto macht und dieses als JPG abspeichert.Zuerst einmal ein Foto vom leeren Wohnzimmer gemacht, und als bg.jpg gespeichert.
Mittels Skript ist dann alle paar Sekunden ein neues Foto namens test.jpg gemacht worden.
Das Skript hat danach mein Programm aufgerufen, welches nun mit der Objekterkennung startete:- beide Bilder in Instanzen der oben angeführten Klasse reinladen
- Bilder pixelweise in Graustufen umwandeln (gray=x*red+y*green+z*blue)
- normalisieren um Helligkeitsschankungen auszugleichen (sodass im Schnitt der Graustufenwert bei 128 lag)
- Pixelweise Differenz beider Bilder bilden, also die Graustufenwerte der beiden Bilder voneinander substrahieren
- Schwellwert bilden: Ab einem bestimmten Grauwert wird der Pixel weiß, darunter schwarz
- Nun siehst du sehr schön als weiße Flecken, wo eine Person steht
- Es gibt aber noch ein bisschen Rauschen im Bild, also glätten wir das Bild indem wir den Mittelwert aus einer Pixelregion (z.B. 9x9 Pixel) bilden
- Schwellwert nocheinmal bilden: diesmal sind die Objekte viel klarer und mit weniger Rauschen zu erkennen
- Du kannst nun diese Flecken ("Blobs") versuchen zu erkennen, und speicherst deren Eigenschaften (Position, Breite, Höhe, ...) in einer eigenen Struktur ab. Die einfachste Erkennung von Blobs ist, indem du zu jedem weißen Pixel die direkten weißen Nachbarn suchst, und von denen wieder die weißen Nachbarn, bist du schließlich alle hast und schauen kannst, was xmin,xmax,ymin,ymax, sind.
- Du kannst nun im Originalbild dort rote Rechtecke um die Stellen zeichnen, wo du die Blobs gefunden hast.
- Du kannst die Auswahl einschränken, indem du nur Blobs mit bestimmten Eigenschaften markierst, z.B. mit einer Mindestgröße
- Du speicherst das Bild als out.jpg ab und schon hast du eine Möglichkeit, Menschen mittels Webcam zu erkennen
Hier ein paar Schritte davon als Bilder:
http://de.tinypic.com/r/14e2c8m/8
http://postimg.org/image/iathl6v9p (falls der andere Link nicht funktioniert)Natürlich kann man da noch einiges optimieren, aber du siehst, dass man mit einfachen Mitteln bereits recht weit kommt!
Viel Spaß beim Lernen!
-
c++ progger schrieb:
Mach dir zuerst eine Klasse, die zumindest Bitmaps laden und speichern kann (später kannst du sie um JPG, PNG und ähnliches erweitern). Das Bitmap Format ist recht einfach, vor allem wenn du nur 24bit Bitmaps verwendest.
Völlig uninteressant, er hat ja schon geschrieben, dass er Qt verwendet, dass kann all diese Formate (und mehr) von Haus aus. Und selbst ohne Qt gibts zig Bibliotheken, die sowas können. Wer sowas selber schreibt, wird damit keinen beeindrucken, eher im Gegenteil.
Deine Pixelklasse gefällt mir auch nicht. Ich würd mir da auch auf gar keinen Fall die Grauwerte zusätzlich zu den Farbwerten speichern. Wenn du ein Graustufenbild haben willst, dann konvertierst du dein Farbbild und arbeitest mit der Kopie weiter.
Was du dann machst, finde ich schon interessanter. Da gibt es sicherlicher wesentlich raffinierte Ansätze, aber wenn du ohne die Theorie und fortgeschrittene Methoden zu kennen etwas brauchbares hinbekommst, finde ich das auf jeden Fall auch interessant und vorzeigbar.
-
Völlig uninteressant, er hat ja schon geschrieben, dass er Qt verwendet, dass kann all diese Formate (und mehr) von Haus aus. Und selbst ohne Qt gibts zig Bibliotheken, die sowas können. Wer sowas selber schreibt, wird damit keinen beeindrucken, eher im Gegenteil.
vielleicht ists oben nicht klar herausgekommen: bei mir war das ein Lernprojekt für C++. Daher auch das manuelle Laden von Bitmaps. Dadurch konnte ich File IO mit C++ lernen, ohne die üblichen faden Aufgaben wie "lade eine Textdatei und stelle sie auf der Konsole dar" machen zu müssen.
JPG hab ich später dann per libjpeg eingebunden.
Für Bitmaps gibts sicher auch irgendeine fertige Lib, wenn man Qt verwendet erübrigt sich die Frage sowieso.Was du dann machst, finde ich schon interessanter. Da gibt es sicherlicher wesentlich raffinierte Ansätze, aber wenn du ohne die Theorie und fortgeschrittene Methoden zu kennen etwas brauchbares hinbekommst, finde ich das auf jeden Fall auch interessant und vorzeigbar.
Danke.
War selber erstaunt wie viel man machen kann, wenn man erstmal ein paar Datentypen und Funktionen gebastelt hat, die grundlegende Dinge implementieren.
Schön finde ich beim Thema Bildverarbeitung/Erkennung auch, dass man eben gleich was sieht.
-
Sehr gute Übung, eine Klasse zum Laden von Bilder zu entwerfen. Leider aber tatsächlich nicht sooo motivierend, da ich mit Qt dies schon automatisch mit dabei habe. Die interessanten Formate wie JPG, PNG stelle ich mir schon kernig vor zu implementieren. Das ist kein Grund, es nicht per Hand zu machen, da es sehr viele Sachen für mein Malprogramm schon in Libs gibt(GEGL, OpenCV etc.), aber ich möchte bei solch größeren Projekten schon motiviert bleiben.
Ich habe mal einen rudimentären 3D-Studio-Max-Loader(undokumentiertes Binärformat) in C geschrieben, vielleicht kann ich den mit C++-Mitteln neu mit einbauen und das Model dann erst einmal nur als Wireframe darstellen.
So, leider muss ich langsam mit der Arbeit anfangen, PHP ruft(ich kann es nicht mehr sehen). Danke weiterhin für die Tipps und Anregungen.