# Begrifflichkeit: Software mit physikalischen Schnittstellen



## Tobse (1. Nov 2016)

Hallo zusammen 

ich bin grade auf der Suche nach einer guten Formulierung für eine Bewerbung.

Ich habe sehr viel mit Web-Technologien gearbeitet, würde aber sehr gern Software mitentwicklen, welche tatsächliche physikalische Schnittstellen hat (von Bildschirm und Tastatur von Sachbearbeitern abgesehen). 
Habt ihr mir vllt einen Tipp, wie ich das formulieren kann? Oder gibts dafür sogar einen Fachbegriff?

Grüße,
Tobse


----------



## sascha-sphw (1. Nov 2016)

In welche Richtung möchtest Du denn gehen, hier gibt es sehr viele Bereiche? Ich selbst habe Roboter und SPS Programmiert, da bist Du sehr Hardwarenahe, aber schöne Hochsprachen sind da Mangelware. Mikrocontroller wäre noch was, aber auch hier ist es dann eher Assembler oder C selten auch C++.

Aber diese Bereiche sind Grund verschieden zum Web.


----------



## Tobse (1. Nov 2016)

Danke für deine Antwort 

Hardwarenahe möchte ich auch nicht programmieren - die Features von Java gegenüber C und C++ möchte ich schon gern behalten  Go oder D wären eine Option, ist aber im Segment Hardware wahrscheinlich nur zu minimalen Anteilen vertreten.
Mir würde es schon reichen, Server zu programmieren, die Sensordaten auswerten o.ä; so in die Richtung IoT.


----------



## Thallius (1. Nov 2016)

Hm also ganz ehrlich das geht alles in den embeded Bereich und da ist Java nunmal nicht geeignet.

Gruß

Claus


----------



## Tobse (1. Nov 2016)

Thallius hat gesagt.:


> Hm also ganz ehrlich das geht alles in den embeded Bereich und da ist Java nunmal nicht geeignet.


Warum denn? Nur weil man einen Mikrokontroller anbindet, heisst das doch  nicht, dass der Server, der das Empfängt, auch Low-Level programmiert sein muss? Oder doch?


----------



## sascha-sphw (1. Nov 2016)

Tobse hat gesagt.:


> Server zu programmieren, die Sensordaten auswerten


Da fällt mir im Spontan auch nichts ein, aber generell kann ich Dir nur empfehlen Deine Bewerbung gezielt auf eine Stelle zu optimieren, ist zwar eine menge Arbeit, aber es kommt gut an.
Desweiteren würde ich mehr davon rein schreiben, warum die Firma mit Dir einen guten Fang machen und nicht, dass Dir die Firma einen Gefallen damit tun würde. Du musst den Leser neugierig machen, er soll das Gefühl bekommen etwas zu verpassen wenn er Dich nicht zu einem Gespräch einlädt.

Ich persönlich habe mich dann aber immer eher für den Sourcecode interessiert, aber ich bin ja auch kein HR Manager.


----------



## Thallius (1. Nov 2016)

Tobse hat gesagt.:


> Warum denn? Nur weil man einen Mikrokontroller anbindet, heisst das doch  nicht, dass der Server, der das Empfängt, auch Low-Level programmiert sein muss? Oder doch?



Ganz ehrlich? Das werden hier viele nicht verstehen aber wenn mich eine Firma als Consultant angagiert und die Frage ist mit was entwickelt werden soll, dann werde ich niemals Java empfehlen. Denn im Endeffekt bist du dann immer abhängig von der JRE wovon es alle paar Wochen eine neue gibt und die immer wieder neue und alte Fehler haben.

Ich habe jetzt einmal den Fehler gemacht und ein Tool für einen Konzern in Java geschrieben. Plötzlich funktioniert dieses Tool mit Java 8 101 nicht mehr, mit 102 geht es dann wieder. Blöd nur das es in dem Konzern andere Tools gibt die wiederum mit 102 nicht laufen dafür aber mit 101. wieder andere Tools laufen nur mit Java 6 und gar nicht mit Java 8...

Das ist einfach total Unprofessionel und nicht akzeptabel...

Da nehme ich lieber eine Compilersprache. Da läuft das Programm und fertig.

Wenn ich nun also im Hardware Bereich unterwegs bin, dann muss ich noch sicherer sein, dass meine Software immer funktioniert und nicht davon abhängig ist ob irgendeine andere Komponente mit der richtigen Version installiert ist,

Gruß

Claus


----------



## InfectedBytes (1. Nov 2016)

Außerdem kommt es nicht selten vor, das Sensordaten auch mal unsigned sind und das ist mit Java nunmal etwas problematisch. Da muss man dann ggf. unschön mogeln, wie etwa mit Long.compareUnsigned(x,y).


----------



## Tobse (1. Nov 2016)

sascha-sphw hat gesagt.:


> Da fällt mir im Spontan auch nichts ein, aber generell kann ich Dir nur empfehlen Deine Bewerbung gezielt auf eine Stelle zu optimieren, ist zwar eine menge Arbeit, aber es kommt gut an.
> Desweiteren würde ich mehr davon rein schreiben, warum die Firma mit Dir einen guten Fang machen und nicht, dass Dir die Firma einen Gefallen damit tun würde. Du musst den Leser neugierig machen, er soll das Gefühl bekommen etwas zu verpassen wenn er Dich nicht zu einem Gespräch einlädt.


Da hast du 100% Recht - das vergesse ich immer....



InfectedBytes hat gesagt.:


> Außerdem kommt es nicht selten vor, das Sensordaten auch mal unsigned sind und das ist mit Java nunmal etwas problematisch. Da muss man dann ggf. unschön mogeln, wie etwa mit Long.compareUnsigned(x,y).


Da sehe ich jetzt eher weniger das problem - solange es funktioniert. Im schlimmsten Fall kann ja auch BigInteger Abhilfe schaffen.

Da ist mir @Thallius Argument schon deutlich einleuchtender. Welche Sprache kannst du denn Empfehlen, wenn ich in diesen Bereich möchte? Habe mich deswegen in den letzten Wochen mal mit C++ beschäftigt. Aber so richtig ansprechend finde ich das nicht :/
In einer Stellenausschreibung stand sogar was von mehreren Jahren Node.js Erfahrung - und Node.js ist ja bzgl. Stabilität ein wirklicher Alptraum.


----------



## Thallius (1. Nov 2016)

Was gefällt dir nicht an C++? Ich finde es nach wie vor eine reizende Herausforderung in dieser Sprache zu Programmieren. Man hat alle Möglichkeiten muss aber eben auch alles selber kontrollieren. Für mich die Krönung der Programmierkunst. Das ist wie Auto fahren mir ESP und ABS (alles wird einem abgenommen = Java) oder eben ein Go-Card ohne alles. Das ist viel schwerer gibt einem aber auch viel mehr Befriedigung wenn man es schafft und beherrscht 

Gruß

Claus


----------



## Tobse (1. Nov 2016)

Thallius hat gesagt.:


> Was gefällt dir nicht an C++? Ich finde es nach wie vor eine reizende Herausforderung in dieser Sprache zu Programmieren. Man hat alle Möglichkeiten muss aber eben auch alles selber kontrollieren. Für mich die Krönung der Programmierkunst. Das ist wie Auto fahren mir ESP und ABS (alles wird einem abgenommen = Java) oder eben ein Go-Card ohne alles. Das ist viel schwerer gibt einem aber auch viel mehr Befriedigung wenn man es schafft und beherrscht
> 
> Gruß
> 
> Claus


Genau das ist mein Problem. Die ganzen Arraypointer und Objektkopien sind alles Features, die erst in wirklich krass performance-relevaten Szenarien benötigt werden. Diese ganze Dinge für die ganzen "Alltagsaufgaben" berücksichtigen zu müssen finde ich schlicht lästig. In den ersten Zeilen C++ Code, die ich jetzt geschrieben habe, sind 30% Boundary- und Nullpointer-Checks drin; das stört mich massiv. Vielleicht mache ich auch was falsch


----------



## InfectedBytes (1. Nov 2016)

Tobse hat gesagt.:


> In den ersten Zeilen C++ Code, die ich jetzt geschrieben habe, sind 30% Boundary- und Nullpointer-Checks drin;


Aber das hast du in Java doch auch^^
In C++ ist es halt nur gefährlicher wenn man sie weglässt 

Ansonsten hat C++ auch ne menge toller Features die in Java leider fehlen. Insbesondere structs, unsigned datentypen und operator overloading


----------



## Tobse (1. Nov 2016)

Nehmen wir also mal an ich möchte jetzt mit C++ arbeiten - für eine Stelle brauche ich Berufserfahrung damit. Und meinen Web-Entwickler Kollegen mit C++ zu kommen brauche ich nicht versuchen. Wie komme ich an die nötige Erfahrung damit?
Die Alternative wäre, dass ich das jetzt hobbymäßig lerne und mich in 1-2 jahren auf eine Junior C++ stelle in diesem Segment bewerbe. Das wäre nicht das, was ich mir jetzt vorgestellt habe... :/


----------



## tommysenf (1. Nov 2016)

Tobse hat gesagt.:


> Mir würde es schon reichen, Server zu programmieren, die Sensordaten auswerten o.ä; so in die Richtung IoT.


Du solltest dir klar sein wo genau du hinwillst. Willst du die Sensoren direkt ansprechen, dann kommst du oft nicht um c herum. In größeren Projekten ist es aber meist so, das die Sensoren ihre Werte meist nur ins System "pumpen". Die darauf aufsetzenden Systeme sind dann oft in Java implementiert. Sehr gut kenne ich mich im Gasmarkt aus, da ich hier viele Jahre einer der Hauptentwickler einer der führenden Branchenlösungen war. Auch Geolocation Sachen wie das Flottenmanagement von TomTom ist zum Beispiel komplett in Java implementiert. In letzter Zeit sind mir eigentlich keine größeren Systeme, gerade im IoT Bereich über den Weg gelaufen, welche in C++ implementiert waren.


----------



## Tobse (2. Nov 2016)

tommysenf hat gesagt.:


> Du solltest dir klar sein wo genau du hinwillst. Willst du die Sensoren direkt ansprechen, dann kommst du oft nicht um c herum. In größeren Projekten ist es aber meist so, das die Sensoren ihre Werte meist nur ins System "pumpen". Die darauf aufsetzenden Systeme sind dann oft in Java implementiert. Sehr gut kenne ich mich im Gasmarkt aus, da ich hier viele Jahre einer der Hauptentwickler einer der führenden Branchenlösungen war. Auch Geolocation Sachen wie das Flottenmanagement von TomTom ist zum Beispiel komplett in Java implementiert. In letzter Zeit sind mir eigentlich keine größeren Systeme, gerade im IoT Bereich über den Weg gelaufen, welche in C++ implementiert waren.


Dieser Auffassung war ich auch. Auf die Hardwarenahe programmierung mit den Sensoren oder Motoren habe ich nicht viel Lust. Die Daten dann aber zentral auszuwerten stelle ich mir aktuell ziemlich interessant vor und das würde ich gerne machen.
Wenn das in C++ geschieht - meintwegen. Ein bisschen mehr Abstraktion (D finde ich z.B. toll, Go oder Swift gingen auch) wäre mir aber schon lieb. Dann kann ich mich beim Coden auf fachliche Korrektheit konzentrieren statt auf Bufferowerflows :/


----------



## tommysenf (2. Nov 2016)

Tobse hat gesagt.:


> Die Daten dann aber zentral auszuwerten stelle ich mir aktuell ziemlich interessant vor und das würde ich gerne machen.



Keine Angst, da kommst du mit Java ziemlich weit. Ich würde dir da aber Vorschlagen dich ein wenig mit BigData Sachen wie Hadoop und mit Data Warehousing auseinanderzusetzen, wenn du da noch keine Kenntnisse haben solltest.


----------



## Tobse (2. Nov 2016)

tommysenf hat gesagt.:


> Keine Angst, da kommst du mit Java ziemlich weit. Ich würde dir da aber Vorschlagen dich ein wenig mit BigData Sachen wie Hadoop und mit Data Warehousing auseinanderzusetzen, wenn du da noch keine Kenntnisse haben solltest.


Ich weiss, wie die Dinge funktionieren; praktische Erfahrung steht noch aus.


----------

