Skrivet av Mulfuß:
Började en gång i tiden som embeddedutvecklare med C och en del assembler. Sen kom IT-bubblan i slutet av 90-talet. Vi som lärt oss grunderna den hårda vägen hade inga problem att avancera. Häng inte upp dig så mycket på specifika datorspråk! Alla gör lite samma saker - likheterna är större än skillnaderna.
Hårda tillämpningar med tids- och minneskrav körs i C/C++ och nuförtiden mycket Rust. Ska man blanda in nätverk blir det Java. Inom en del web och mobilt är nästan Java ett boomerspråk - Javascript med veckans heta ramverk (Angular, Node, React,…), Dart med Flutter kommer starkt, Ruby, Swift, Kotlin är stort. Sen är Python bra mycket större än man tror .
Jobbar numera med säkerhet och har sett vad som körs ute på riktigt. Det är mycket embedded Linux som sätts upp med Yocto, ADO är enormt. När du jobbat ett tag kommer du underfund med vad du gillar och kan specialisera dig. Lycka till!
När jag hör frasen "Hårda tillämpningar med tids- och minneskrav" så tänker jag Ericsson Telecom, Volvo, Saab m.fl, jag tänker även att generella person som börjar dessa jobb har gått elektronik, datateknik på Chalmers, Kth eller motsvarande.
Men man får fundera på dels vilken nivå man själv ligger på och vad det finns för jobb? Och jag är tveksam på om arbetsmarknaden är så stor i sverige utanför de jag jobben nämnde där man behöver tänka så mycket på "Hårda tillämpningar med tids- och minneskrav".
Jag minns i högskolan när vi på mikrokontrollen hade 512 bytes SRAM, man fick verkligen tänka till. En studiekamrat tyckte det ej var tillräckligt utmanande utan han kodade sin egen seriella kommunikationsdel på en mikrokontroller som saknade hårdvara för detta. (USART)
Idag föreställer jag mig däremot att majoriteten av de i sverige, förutom Ericsson, Volvo etc. Kör med en "extremt kraftfull" mikrodator, (jämfört emot vår 8MHz, 512bytes sram) och de bara öser på med bibliotek som de inte riktigt vet vad de gör. Det kräver heller ingen direkt kännedom om hårdvaran, en spelutvecklare skulle ha jättelätt att direkt börja koda utan att lära sig något nytt. (bortsett från att lära sig nya bibliotek som i princip fungerar som den redan kan)
Och min poäng är att det är skillnad i vad man bör lära sig. Dessa extremt bloatade mikrokontroller så gäller det att lära sig att jobba med riktigt blotade bibliotek, lära sig även dessa bibliotek på servern när den jobbar emot iOT. Den personen som är skitbra på det hårdvarunära kan få stora problem här och vice versa.
Angående realtidskrav så finns det färdiga bibliotek eller hårdvara i mikrokontrollen som sköter om det, det är "ingen idag" som genom vanlig programkod försöker få till att kommunikation ut ska gå i 2400bps etc på en utgång.
Vanligt förr var att man fick tänka på timing att få dessa alphanumeric lcd displayer att fungera. Jag tror inte ens studenterna idag i skolan försöker sig på detta, de tar bara sitt färdiga bibliotek som de hittar som sköter om i princip allt. Detsamma gäller stegmotor, kanske någon i första programmeringskursen får testa att koda en sådan. (bra övning) Sedan kommer alla i praktiken använda extern hårdvara för detta eller färdiga bibliotek och de behöver aldrig ens veta vad ordet timing är för något, knappt behöver de veta hur man kan styra en stegmotor.
Detsamma gäller vad det är för mikrodatorer. Jag minns debatterna kring M68000, vs Atmel Avr, VS PIC och någon mer. Idag så behöver väl de flesta som kodar dessa inte ens tänka på vilken mikrodator det är, mer än att de bör ladda hem färdiga biliotek, utvecklingsmiljöer för rätt mikrokontroller och läsa rätt dokumentation för denna. Där de hade kunnat delat samma miljö och bibliotek, vilket säkerligen de också har börjat med.
Och poängen på mina påstående är att jag rekommenderar den stora skaran just på att lära sig jobba med de "stora bloatade biblioteken". Och inte gräva sig ner så mycket om detaljerna på mikrokontrollerna. Jag påstår inte att någon av dessa är svårare eller lättare än en annan. Men de flesta får begränsa sig vad de bör prioritera att lära sig.