Är språket Rust framtiden för inbyggda system?

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
abcabc
Inlägg: 188
Blev medlem: 13 september 2014, 21:59:16

Är språket Rust framtiden för inbyggda system?

Inlägg av abcabc »

Jag har tidigare jobbat med programmering av inbyggda system på 90-talet, då med främst C men även lite C++ och Java. Även om C kändes gammalt redan då var C++ och Java ok, men idag känns de gamla.

Jag har varit på jakt efter ett programmeringsspråk som ersätter dessa, dels för mina husbehov, men främst för att försöka förutsäga vad branchen behöver.

C++ är föråldrat, dålig säkerhet, ingen vettig range control av arrayer, ingen inbyggd hantering av moderna typer som dynamiska mänger av blandade typer.

Jag har nog kommit fram till att Java ej är lösningen, dels är den föråldrad, och att den ej producerar maskinkod som nog visat sig vara fatalt.

Jag har kollat in Swift, jag hoppades mycket på den, den är kompilerande och producerar maskinkod. Fokus på säker och stabil kod. Bra objektorientering. Dock en normal garbage collector som gör den svår för inbyggda system, gör att prestanda blir för dålig. En mycket stor run-time-system som krävs att den finns för att kunna köra Swift över huvud taget, jag har hört 500k byte, vilket är mycket, det begränsar andvändningen rejält. Tafflig support för att hantera låg-nivå för att accessa minne. Annars ett modernt och trevligt språk. Kontrollerat av Apple, och även om det är öppet är de oklart om de verkligen vill sprida de utanför Apple-världen.

En annan språk är go från google, ok men saknar objektorientering vilket är mycket tråkigt, men är modernt med dynamiska typer enligt ovan, har dock en traditionell garbage-collector, vilket kan ge problem.

Min faforit och hopp nu är Rust, har moderna dynamiska typer, är modernt språk med de saker vi är vana vid från tex python, har viss objektorientering utan att gå till överdrift (så ej polymorft arv), tycks på något sätt klarat sig utan garbage collector, är helt öppet och det tycks finnas intresse av att det kanske skall ersätta C/C++ som arbetshästen för inbyggda system och hela os. Språket är fokuserat på att bygga stabil och säker kod, vilket är mycket bra.

Vad jag förstår så skrivs fortfarande linux i C, windows i C/C++ och macOS i C och Objective C, hela MS Office i C/C++, så C/C++ är fortfarade arbetshäsyen. Så om vi räknar in alla mobiltelefonet, tv-apparater, smarta klockor och kärnvapenmissiler, så kanske 98% av all maskinkod i värden som exekveras är C just nu. En filosofisk fråga blir hur man skall bedöma all PHP och javascript som i sin tur resulterar i C/C++ i slutändan

Jag har läst att USA militärindustri tidigare haft krav att använda ADA, men på senare år i ökande grad gått över till C (somär ett mycket äldre språk).

Vad tror ni? Kommer vi få leva med C/C++ i 20 år till för inbyggda system, operativsystem och liknande?
Senast redigerad av abcabc 26 juni 2018, 23:38:03, redigerad totalt 1 gång.
Användarvisningsbild
Lennart Aspenryd
Tidigare Lasp
Inlägg: 12607
Blev medlem: 1 juli 2011, 19:09:09
Ort: Helsingborg

Re: Är språket Rust framtiden för inbyggda system?

Inlägg av Lennart Aspenryd »

Nej!
Någon kommer att visa vägen, då går det forth.
All utveckling är grodhopp, och det krävs bra exempel och många som gemensamt hoppar på tåget. För det krävs en Führer som kan peka med hela handen.
Se vad som händer med Arduino, Visuino och alla gemensamma. det är ju mest krimskrans för att folk inte förstår att skriva en bra kravspecifikaton eller att grundligt ta sig an problemen.
Vi har ju, som jag ser det, helt tappat detta med pseudokod! Varför?
Själva implementeringsspråket är ju sedan sekundärt
Eller har jag fel där! Att det är viktigare att programmera än att förstå problemet och fokusera på en lösning!!

https://thenewstack.io/safer-future-rust/
Jag hade en kompis som jag visade C för! Han sa " det är ju farligt, man kan göra vad som helst!"
Det var iochförsig nästan fyrtiofem år sedan. ;-)
Har ju också varit på kurs i Danmark hos Bjarne S. Men han hade sin filosofi ur AT&T synpunkter.

Men det rätta språket, det är det du kan förmedla och som gör ditt jobb!
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Är språket Rust framtiden för inbyggda system?

Inlägg av lillahuset »

Med tanke på att Fortran kom 1957 (lyckat år) och finns planerad som Fortran 2018 och COBOL kom 1959 och finns som COBOL 2014 ska du nog inte räkna med att C (1972) dör i första taget.
Rust har nog en ganska tung uppförsbacke innan det har etablerat sig så att det blir en ny standard.
Python har funnits sedan 1990 och börjar väl bli något man kan räkna med som standard. Hur många använder Ada (1980) idag?

Lasp: Var "forth" en blinkning till språket. :)
Användarvisningsbild
abcabc
Inlägg: 188
Blev medlem: 13 september 2014, 21:59:16

Re: Är språket Rust framtiden för inbyggda system?

Inlägg av abcabc »

Vad jag förstår så används ADA fortfarande i militära projekt för inbyggda system i USA, tex F15 (:-). Det används även ett gammalt algol-baserat språk, nog ingen nyproduktion, kommer ej ihåg vad det heter. Så även om C/C++ används mer och mer i USA militärindustri så är fortfarande ADA stort.

Jag hittade info om att till 1998 var ADA ett krav, men då släppte man in C/C++ och annat.

Sedan är det i icke inbyggda system så klart java, php, python, C# och annat tråkigt som vanligt.
Senast redigerad av abcabc 27 juni 2018, 00:30:30, redigerad totalt 1 gång.
Användarvisningsbild
abcabc
Inlägg: 188
Blev medlem: 13 september 2014, 21:59:16

Re: Är språket Rust framtiden för inbyggda system?

Inlägg av abcabc »

Saken är den att Rust har inte så där jättemånga konkurrenter, förutom elefanten i rummet C/C++, kanske go och kanske delphi (en pascaldialekt).

Inom inbyggda system i hela världen så baseras allt avancerat inom hemelektronikindustrin på linux/unix och C/C++. Vissa enklare saker kanske annat än linux.

Min TV, blu-ray spelare, mobil, en "bridge" som jag har, min access punkt/switch har all linux. (Jag har hackat /kollat dem så jag vet.)

Jag tror/vet att alla dessa utvecklate önskar något modernare än C/C++, jag önskade det redan i början an 2000-talet!
Användarvisningsbild
abcabc
Inlägg: 188
Blev medlem: 13 september 2014, 21:59:16

Re: Är språket Rust framtiden för inbyggda system?

Inlägg av abcabc »

lillahuset skrev:Med tanke på att Fortran kom 1957 (lyckat år) och finns planerad som Fortran 2018 och COBOL kom 1959 och finns som COBOL 2014...

Roligt med någon som håller koll på dessa gamla språk, de har verkligen utvecklats, jag tror båda har inkluderar objektorientering. Speciellt fortran skulle faktiskt vara användbart även mer praktiskt.

Fortran används har jag läst i superdatorer, men kanske oftare mer speciella versioner av C med specialbibliotek.

Objektorientering kom ursprungligen från simula 67, ett Norskt språk som jag hoppas ni alla vet. Jag har skrivit en del kod som student fortran och simula, jag kan cobol men har aldrig använt det professionellt.
Användarvisningsbild
Lennart Aspenryd
Tidigare Lasp
Inlägg: 12607
Blev medlem: 1 juli 2011, 19:09:09
Ort: Helsingborg

Re: Är språket Rust framtiden för inbyggda system?

Inlägg av Lennart Aspenryd »

Javisst var det helt medvetet att det stod Forth på raden. Jag försökte mig på det och gillade hur man skrev, men nu kan jag inte komma ihåg något!
Och det är väl där som bedömningen skall ligga egentligen! Dvs. att det finns en möjlighet att komma ihåg vad man skrev utan dokumentation för framtida uppdateringar.
Språket Erlang spåddes väl en lysande framtid, jag tragglade nog igenom ADA under den tiden före.
Pascal, av Nicolas Wirth, och därmed det danska Delphi var väl avsett som ett undervisningsspråk pga det var lättläst osv.
Men språk har diskuterats i alla tider https://techworld.idg.se/2.2524/1.65849 ... scal-lever
Se bara på vårt eget modersmål hur franskan influerade allt via hovet genom tyskan för handel och nu det anglosaxiska arvet som kanske tas över av arabiska. Vi använder ju redan deras siffror! ;-)

Men vad vill man med ett språk? Precis som med fordon finns det en massa tillämpningar där det passar olika bra.
Användarvisningsbild
abcabc
Inlägg: 188
Blev medlem: 13 september 2014, 21:59:16

Re: Är språket Rust framtiden för inbyggda system?

Inlägg av abcabc »

Jag tror jag är samma datorgeneratiion som du.
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Är språket Rust framtiden för inbyggda system?

Inlägg av Icecap »

Varje språk har sin fördel och nackdel och att ange språket som det viktiga är - i mina ögon - att skjuta bredvid målet.

Visst är det korrekt att man med C kan skjuta sig själva i foten med saft och kraft - men det betyder ju "bara" att man måste göra jobbet korrekt istället för att slarva.

Känner man att ett visst programmeringsspråk är det rätta för en själv - då är det väl det. Men det betyder inte att alla andra instämmar i det val.
Användarvisningsbild
abcabc
Inlägg: 188
Blev medlem: 13 september 2014, 21:59:16

Re: Är språket Rust framtiden för inbyggda system?

Inlägg av abcabc »

Jag håller med dig, i princip, att språk inte spelar så stor roll, eller om vi skall vara lite mer moderna, utvecklingsmiljö, att lära sig C++ eller java tar bara några dagar eller någon vecka (det är inte som franska).

Men samtidigt så missar vi en hel del saker om vi använder omoderna språk. Vi missar utveckling och förbättring, något som vi ingenjörer högaktar!

Jag tror det finns en orsak till att C/C++ och C# och php och javascript, och framför allt java idag är stora, det är inte språken, utan det är dess miljöer med dess bibliotek.

Men visst, cobol (eller java) har fantastiska utvecklingsmiljöer och fantastiska bibliotek, men jag tycker inte skall ske i cobol (eller java) för den skull, vi måste gå vidare.

Speciellt java har blivit det nya cobol, java är idag världens största programmeringingsspråk, det vill säga vi har fastnat i faktum att vi har utmärkta bibliotek, utvecklingsmiljöer och en utbildad arbetskraft, så ni med javakompetens kommer säkert ha arbete om 40 år, men ni jobbar redan nu med något gammalt, är det något ni vill viga ert liv till?
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Är språket Rust framtiden för inbyggda system?

Inlägg av Icecap »

Så i grova drag missar vi utvecklingen vid att inte använda funktioner andra har utvecklad?

Det finns tyvärr TALRIKA exempel på att "färdiga" funktioner har allvarliga fel och i mina ögon är Arduino (och liknande system) ett bra exempel på den ogenomsiktighet som finns - och hur dåliga program som skrivs av personer.

Det finns t.ex. vissa nätverksfel i rutiner som ligger till grund för väldiga mängder av applikationer, allt från drivrutiner till OS.

Så nej, för mig är dina argumenter att vi ska byta språk för att utvecklas - utan att du påvisar någon fördelar eller vinster. Lär hellre rätt tankesätt ut till programmeringssugna, det lär ge mycket mer effekt i utveckling än att byta programmeringsspråk.
Glattnos
Inlägg: 2972
Blev medlem: 29 oktober 2009, 20:01:18

Re: Är språket Rust framtiden för inbyggda system?

Inlägg av Glattnos »

Lite filosoferande:
Ingen CPU förstår ju något högnivåspråk så det är väl därför inte nyare språk slår igenom hela tiden. En CPU vet ju aldrig vilket språk ett program är skrivet i, så egentligen är inget högnivåspråk bättre än något annat utan snarare är alla lika dåliga(sett ur CPU:ns perspektiv) :)
Man kan jämföra med vanligt folkspråk. I Sverige pratar man Svenska för att andra gör det och i Tyskland pratar man tyska av samma anledning, både svenska och tyska kan säga samma saker men på lite olika sätt. En utomjording(CPU) förstår varken svenska eller tyska utan behöver en special-tolk(kompilatorn) som översätter till utomjordiska(maskinkod). Om det kommer ett nytt språk som är modernare och coolare än svenska och tyska så är det inte säkert att det kommer att slå igenom ändå, utomjordingen förstår ju ändå inte det språket utan kräver som vanligt en special-tolk.

Att försöka införa ett nytt folkspråk i ett land som redan har ett fungerande språk, samt skyltar, böcker och filmer på det språket som alla förstår, är ju inte lätt. Även om grammatik och meningsuppbyggnad är tekniskt sett bättre. I synnerhet om språket inte gör att man kan prata med fler(utomjordingar) än man kunde tidigare utan ändå behöver en tolk(kompilator).
Om man behöver nått annat än det språk man kan + tolk så ska man ju lära sig språket som just den utomjordingen man ska prata med pratar, vilket då borde motsvara lågnivåspråk.
Användarvisningsbild
abcabc
Inlägg: 188
Blev medlem: 13 september 2014, 21:59:16

Re: Är språket Rust framtiden för inbyggda system?

Inlägg av abcabc »

Lite mer filosofi:
Idag har de flesta inbyggda system bra med cpu och ram och flash, man behöver inte snåla så mycket på resurser, det är inte ekonomiskt om snålandet resulterar i säkerhetsproblem, dyrt underhåll och dyra utvecklingskostnader.

Vissa saker bör vara inbyggda i språk i grunden för att göra det säkert:

Ett exempel är att C saknar inbyggd kontroll att man inte accessar arrayer utanför vad arrayen är deklarerad för. Jag accepterar att man kan vilja stänga av en sådan kontroll, men att den överhuvud taget inte finns? Historiskt har denna sak troligen kostat samhället 100-tals miljarder i säkerhetsluckor, då många intrång utnyttjat detta.

C har många andra problem av liknande natur, tex att det inte _går_ att detektera overflow och liknande, även i de situationer när man är beredd att betala prestandapriset. Etc, etc.

Just detta med overflow och liknande är i och för sig ett problem med Swift insåg jag när jag gick igenom språket, det finns nu i Swift inget vettigt sätt att hantera det.

I och med att det är praktiskt omöjligt att kontrollera overflow överallt så är detta en bugg som det sannolikt finns hundratals av i alla våra prylar hemma.

Även multiprocess och trådning eller vad man vill kalla det bör vara inbyggt i grunden för att undvika att man korruptar data oavsiktligt.

C är en säkerhetsrisk.

Jag älskar C/C++ men inser att jag måste göra slut.
Senast redigerad av abcabc 27 juni 2018, 11:46:20, redigerad totalt 1 gång.
Användarvisningsbild
AndLi
Inlägg: 17042
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Är språket Rust framtiden för inbyggda system?

Inlägg av AndLi »

> man behöver inte snåla så mycket på resurser
Det argumentet håller bara när man håller på med småskalig utveckling där utvecklingskostnaderna är större än produktens hårdvarukostnader.

Men börjar man utveckla högvolymprodukter så funkar det inte att slänga in massa extra hårdvara för att programmeraren inte orkar tänka.
Lägg på 1 kr på en produkt som produceras i 50k per dag, 18 mille per år...

Jag räknar med att koda C till min pension, det är typ 25 år kvar...

Du behöver inte göra sluta med C, du behöver bara byta typen av projekt du jobbar i...
Användarvisningsbild
abcabc
Inlägg: 188
Blev medlem: 13 september 2014, 21:59:16

Re: Är språket Rust framtiden för inbyggda system?

Inlägg av abcabc »

Du har nog rätt i att C fortfarande kommer att vara det som gäller för kärnor i operativsystem, små inbyggda system, devicedrivers, BIOS, även om 25 år.

Tyvärr. För det finns inbyggda säkerhetsproblem, några nämnda ovan, det finns fler.

Så nog kan man hanka sig fram med god C-kunskap till pension, även om man är nyexad.

Men jag drömmer om vad man vill har utöver vad C klarar.

En sak som jag har inspirerats av Arduino är dess access av GPIO och annan HW, jag inser och förstår att hardcore HW-människor tycker att Arduinos funktioner för access av GPIO och annan HW är för ineffektiv, men samtidigt inser jag att C ganska enkelt skulle kunna implemenera dessa funktioner med liknande enkelhet men med full prestanda med en utökad makro-funktionalitet, alltså att man i kompileringsstadiet skulle kunna ha mer kraftfull funktionalitet, kanske speciellt att man mer skulle använda C egen syntax i makron, lite som verilog och VHDL gör, kolla in de språken, de kommer att ge er nya erfarenheter.

Jag tycker att C har varit lite för konservativa när det gäller makro-språket, dels att man inte gått över till C egen syntax, och att man inte utökat makrofunktionalitet, det är helt klart en bra sak när man prioriterar prestanda, nuvarande syntax är tyvärr något som gör mycket C-kod oläslig, speciellt linuxkärnan är mycket svårläslig på grund av makron.
Skriv svar