Croga schreef op zaterdag 01 augustus 2015 @ 16:06:
[...]
En toch zie je daar ook steeds meer C# en/of Java langs komen. Een vriend van me programmeert video cameras en die dingen hebben gewoon een JVM draaien. Ja, ze moeten ook hier en daar wat C schrijven om de poorten aan te kunnen sturen (aangezien ze nogsteeds niet snappen dat ze die 1.5 cent die ze besparen op wéér een nieuwe chip honderd keer kwijt zijn aan de nieuwe drivers die er geschreven moeten worden) maar het gros van de besturing draait gewoon in een VM.
Als ik kijk naar, bijvoorbeeld, de stormvloed kering bij Rotterdam dan is er inderdaad wat low-level spul nodig om de hardware te programmeren maar dat valt in het niet bij de hoeveelheid Java code die het uitlezen, analyseren en aansturen doet. Ik gok zomaar dat het 10% low-level, 10% UI, 80% intelligentie is.
Wellicht dat mijn 99% een hyperbool is en het dichter bij de 85% zal liggen. Punt verandert daar niet heel hard mee. Als je van iedere programmeur gaat vragen bij C te beginnen dan zal een groot deel afhaken simpelweg omdat ze, terecht, het nut er niet van inzien.
Ik ben het met je eens dat het in een complete stack net perse een groot deel uitmaakt van de custom software die je schrijft, maar je zal eigenlijk nooit een stack tegen komen waar je geen C, C++ of ASM tegen komt. Eigenlijk komt het een beetje neer op aan welke kant van het verhaal je zit; als integrator die wat laagjes lijmlogica nodig heeft is de kans erg klein dat je daadwerkelijk buiten managed taal hoeft te komen. Als entry-level engineer zal je er ook niet echt bij terecht komen. Dat maakt inderdaad een groot deel van de massa op. Ik zou zeggen, 50%, maar het kan natuurlijk meer zijn. 85% of 80% is dan weer te veel vanuit mijn perspectief, maar dat hangt denk ik van de projecten die je kiest af.
Neem bijvoorbeeld consumentenelectronica zoals een printer; daar zal voor een Windows systeem 80% C# in zitten, 10% C++, en 10% C, verspreid over de GUI, drivers, en printer firmware. Natuurlijk zijn er ook diverse smart-printers, die draaien soms VxWorks (helemaal C en ASM) of Linux (C, C++, wat scripting), maar hebben dan voor de low level hardware controle alsnog een microcontroller of CPLD/FPGA voor de afhandeling. Is goedkoper in massaproductie en betrouwbaarder en sneller dan een full stack OS met CLR/JVM er op

En zo zit dat dus met nagenoeg alles wat je in een Media Markt of vergelijkbare winkel koopt.
Natuurlijk zijn er ook systemen waarbij alles 'lekker makkelijk' gebouwd is, zoals geldautomaten, parkeerautomaten enz. waar meestal gewoon Windows op draait met een slappe WinForms applicatie en seriele/USB randapparatuur voor.. alles
Voor veel mensen lijkt het er op dat alles er magisch gewoon is, zoals de CLR, JVM, Kernel, compilers enz. Maar die worden ook allemaal actief onderhouden, geforkt en gecommercialiseerd door diverse bedrijven met dedicated teams. Natuurlijk zal de verhouding iets van 1 op 5 zijn, waarbij je zowel qua kosten als qua personeel voor 1 programmeur die ook low-level skills heeft 5 kan krijgen die maar 1 of 2 dingen kunnen. (zoals bijv. C# met .NET en Java met Spring ofzo)
En om even on-topic in te haken op de HR-vraag: het is dus heel sterk afhankelijk van wat je wil doen en waar je aan het werk wil. Als je bij een of andere App-startup gaat werken maakt het geen zak uit wat je precies geleerd hebt op school, je past in het bedrijfje of je past niet. Als jij met Xamarin een App kan bouwen of het bedrijfje er al mee werkt, dan zit je goed. Stel dat je bij een groot softwarehuis gaat werken, dan is de kans groot dat je het eerste jaar vooral vuile klusjes mag opknappen en moet leren wat je precies moet weten en gaat doen, en is die hele opleiding met Xamarin vooral 'leuk en aardig' en niet heel relevant. Je moet snel een taal kunnen leren, een framework kunnen begrijpen, en de architectuur en patronen kunnen herkennen. Of dat dan in C++, C#, Obj-C, Java of LISP is maakt geen zak uit. Hetzelfde geldt voor tooling en OS. Je kan nu wel alles in Windows willen doen met Visual Studio ofzo, maar dat is niet waar de wereld op draait. Overal is een stuk gereedschap voor welke het beste werkt. Zodra je embedded dingen gaat maken, of voor non-Windows platforms kom je er heel snel achter dat je met een Microsoft-eilandje niet heel ver komt. Dan beperk je jezelf in waar je kan solliciteren en aan het werk kan. Natuurlijk is er (nu nog) genoeg Microsoft-werk te vinden, en zit er in alle bedrijven van groot tot klein genoeg gebakken lucht om zelfs als je (nog) niet precies weet wat je aan het doen bent een jaartje te kunnen leren en op niveau kan komen. Het enige wat je daar voor nodig hebt is ervaring met het leren van dingen en de theorie van patronen, algoritmes en architectuur snappen, goed kennen, en weten waar je meer kan vinden. Als je op school klaar bent betekent het niet dat je nooit meer wat gaat leren
[
Voor 21% gewijzigd door
johnkeates op 01-08-2015 16:48
]