Vilket eller vilka språk används när man programmerar exempelvis diskmaskiner och kaffebryggare?

Permalänk
Inaktiv

Vilket eller vilka språk används när man programmerar exempelvis diskmaskiner och kaffebryggare?

En kaffebryggare och även diskmaskiner har display samt olika program om när de ska starta bryggningen eller diska. När jag startade min kaffebryggare nyss så började jag fundera hur man programmerar de här köksapparaterna. Jag gissar på C++ och att det kopplas till knapparna på maskinerna. Jag försökte google efter den här informationen men kunde inte hitta något om det, så därför vänder jag mig till er för att se vad ni vet om detta.

Permalänk

Assembler, C, C++, Basic osv enligt wikipedia. https://sv.wikipedia.org/wiki/Mikrokontroller

Permalänk
Medlem

Det måste väl vara Java för att kaffebryggaren ska fungera ändå?

Edit:
Och diskmaskinen använder clean code.

Visa signatur

Louqe Ghost S1 MK3 | Asus ROG Strix B660-I Gaming WiFi | Intel Core i7 12700K | nVidia RTX 2070 Super FE | Corsair 64GB (2x32GB) DDR5 5600MHz CL40 Vengeance | Samsung 980 PRO M.2 NVMe SSD 2TB | Corsair SF750 750W 80+ Platinum | Noctua NH-L12 Ghost S1 edition | Kablar från pslate customs | 2 stk Dell Ultrasharp 3014 | Logitech MX Keys | Logitech MX Anywhere

Permalänk
Medlem

Troligtvis C, C++ har kräver lite mer minne för att stödja objekt. Tillverkarna vill inte välja dyrare mikrokontroller med mer minne om det går att undvika. Det kan också vara skrivet i assembly om det är riktigt tight med minne.

Permalänk
Arvid Nordqvist-mannen
Skrivet av sunefred:

Det måste väl vara Java för att kaffebryggaren ändå?

Eller https://coffeescript.org/ (java iofs)

Permalänk
Medlem
Skrivet av tcntad:

Java och JavaScript är inte samma sak.

Permalänk

Förr i tiden assembler, lite senare C eller motsvarande. Idag så består nog de bästa mest teknik komplicerade av flera språk och frågan är inte om någon har typ android i sig? Alltså man ska få mobilen ha kontroll över dem, de ska ha wifi anslutning etc. Glöm då assembler, det blir för dyr utvecklingskostnad.

C++ är jag tveksam till. Angående sparsamhet på minne så visst har det funnits detta, när jag läste på högskolan hade vi 512 byte ram i mikrokontrollen. Jag tror det dock inte är så stort problem idag.

Permalänk
Medlem
Skrivet av sunefred:

Det måste väl vara Java för att kaffebryggaren ändå?

Snyggt. Skönt att det inte tog mer än en halvtimme innan någon tog tillfället i akt.

Permalänk
Medlem
Skrivet av lillaankan_i_dammen:

Förr i tiden assembler, lite senare C eller motsvarande. Idag så består nog de bästa mest teknik komplicerade av flera språk och frågan är inte om någon har typ android i sig? Alltså man ska få mobilen ha kontroll över dem, de ska ha wifi anslutning etc. Glöm då assembler, det blir för dyr utvecklingskostnad.

C++ är jag tveksam till. Angående sparsamhet på minne så visst har det funnits detta, när jag läste på högskolan hade vi 512 byte ram i mikrokontrollen. Jag tror det dock inte är så stort problem idag.

Med tanke på hur långsamma menyerna i vissa av de här maskinerna är så borde de lägga lite mer tid på att skriva snabb kod kan jag tycka.

Permalänk
Medlem

Java som nämndes skämtsamt, men det kanske inte är lika vanligt nu för tiden..?

Visa signatur

www.fckdrm.com - DRM år 2025? Ha pyttsan.

Permalänk
Medlem
Skrivet av ELF:

Java som nämndes skämtsamt, men det kanske inte är lika vanligt nu för tiden..?

Java, .Net eller andra "garbage collected" språk som behöver en dedikerad runtime har alldeles för mycket overhead för inbyggda system.

Java är fortfarande dominerande inom vissa industrier, men inte inom inbyggda system med strikta strömbudgetar.

Visa signatur

Louqe Ghost S1 MK3 | Asus ROG Strix B660-I Gaming WiFi | Intel Core i7 12700K | nVidia RTX 2070 Super FE | Corsair 64GB (2x32GB) DDR5 5600MHz CL40 Vengeance | Samsung 980 PRO M.2 NVMe SSD 2TB | Corsair SF750 750W 80+ Platinum | Noctua NH-L12 Ghost S1 edition | Kablar från pslate customs | 2 stk Dell Ultrasharp 3014 | Logitech MX Keys | Logitech MX Anywhere

Permalänk
Datavetare

Nu nämndes Java rätt mycket som en skämt, men för lite mer avancerade kaffemaskiner är det rätt ofta sant då "embedded Android" blir allt vanligare i i inbyggda-system som har någon form av icke-trivial GUI kopplat till sig.

https://www.linkedin.com/pulse/7-reasons-consider-embedded-an...

"Inbyggda-system" är en gigantisk marknad som spänner från mikrokontrollers (som även de i viss utsträckning börjar använda sig av annat än C/C++, t.ex. MicroPython) till HPC-klass system.

En mer relevant separation blir då system med hårda realtidskrav (där C och C++ dominerar och i vissa lägen i praktiken är det enda som fungerar) och andra inbyggda-system med inga eller "mjuka" realtidskrav. I den senare klassen går det definitivt att använda Java, JavaScript, Python etc.

Orsaken till att .NET/C# är rätt ovanligt beror långt mer på att det länge inte fanns på Linux och är därför långt ovanligare på Linux än de som listades ovan. Linux är totalt dominerande för inbyggda-system idag när man kliver upp på nivån där man använder ett OS. Är bara fallen som har hårda realtidskrav där man kör andra saker som VxWorks, QNX eller liknande.

Orsaken till att C och C++ fortfarande är bland de mest populära programspråken i diverse undersökningar beror väldigt mycket på att marknaden för inbyggda-system är så stor och dessa språk är fortfarande dominerande där. I Sverige verkar vi ha en relativt liten marknad för inbyggda-system jämfört med världen i stort, så här är nog andelen C/C++ jobb mindre än världen i stort.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

@Yoshman Definitivt en glidande skala. Finns t.om. prominenta företag som bygger inbyggda realtidssystem på Windows. (ex Beckhoff och deras kunder).

Visa signatur

Louqe Ghost S1 MK3 | Asus ROG Strix B660-I Gaming WiFi | Intel Core i7 12700K | nVidia RTX 2070 Super FE | Corsair 64GB (2x32GB) DDR5 5600MHz CL40 Vengeance | Samsung 980 PRO M.2 NVMe SSD 2TB | Corsair SF750 750W 80+ Platinum | Noctua NH-L12 Ghost S1 edition | Kablar från pslate customs | 2 stk Dell Ultrasharp 3014 | Logitech MX Keys | Logitech MX Anywhere

Permalänk
Medlem
Visa signatur

MB Gigabyte X570 I AORUS PRO RAM Corsair 16GB DDR4 3200MHz CL16 SSD Gigabyte AORUS NVMe Gen4 SSD 500GB CPU Ryzen 5 3600 GPU ASUS GeForce GTX 1660 Ti Chassi FD Node 202

Permalänk
Datavetare
Skrivet av sunefred:

@Yoshman Definitivt en glidande skala. Finns t.om. prominenta företag som bygger inbyggda realtidssystem på Windows. (ex Beckhoff och deras kunder).

Absolut! Inte alls ovanligt att kassasystem, bankomater och liknande kör någon variant av Windows. Men sett till hela marknaden för inbyggda-system har Windows försvinnande liten andel.

Och även om Windows CE i teorin är "hård-realtid" har jag hört en del horror-stories från folk som jobbat med systemet där hård realtid var ett krav...

Kör man en "vanlig" Windows är det per definition inte hård realtid. Likt Linux saknas vissa kritiska funktioner för att det ska kunna vara "hård realtid", men finns många system som kallas "realtid" som i praktiken är just "mjuk realtid" (vilket både Windows och Linux kan hantera).

En allt vanliga kombination för system som har hårda realtidskrav är att man kör Linux för allt förutom de delar som har de hårda realtidskraven. Där kör man t.ex. Zephyr eller liknande på systemkretsar med heterogen design. Sett "utifrån" känns systemet som om allt kör på Linux, men är vissa delar som kör t.ex. Zephyr på isolerade CPU-kärnor.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Och även om Windows CE i teorin är "hård-realtid" har jag hört en del horror-stories från folk som jobbat med systemet där hård realtid var ett krav...

Vi kanske tänker på samma företag då, men de har nu levererat produkter med väldigt tighta realtids-krav. Beckhoff har också fått göra en hel del modifieringar av Windows för att kunna tillgodose kraven.

Sen kan man undra varför man vill utsätta sig för detta och jag tror fördelarna framförallt är utvecklingstid i detta fallet. Utvecklarna av system och kringliggande verktyg kan alla sitta på en normal Windows installation och köra simulatorer lokalt.

Visa signatur

Louqe Ghost S1 MK3 | Asus ROG Strix B660-I Gaming WiFi | Intel Core i7 12700K | nVidia RTX 2070 Super FE | Corsair 64GB (2x32GB) DDR5 5600MHz CL40 Vengeance | Samsung 980 PRO M.2 NVMe SSD 2TB | Corsair SF750 750W 80+ Platinum | Noctua NH-L12 Ghost S1 edition | Kablar från pslate customs | 2 stk Dell Ultrasharp 3014 | Logitech MX Keys | Logitech MX Anywhere

Permalänk
Medlem
Skrivet av Yoshman:

En mer relevant separation blir då system med hårda realtidskrav (där C och C++ dominerar och i vissa lägen i praktiken är det enda som fungerar) och andra inbyggda-system med inga eller "mjuka" realtidskrav. I den senare klassen går det definitivt att använda Java, JavaScript, Python etc.

Ada är också rätt populärt inom hårda realtidssystem, till skillnad från C och C++ är det skapat för just det ändamålet.

Permalänk
Datavetare
Skrivet av pine-orange:

Ada är också rätt populärt inom hårda realtidssystem, till skillnad från C och C++ är det skapat för just det ändamålet.

Ada är faktiskt rätt trevligt!

Skulle säga att det är populärt inom ett väldigt snävt område: används av vissa företag inom "Aerospace & Defense", men långt ifrån alla (många kör C).

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk

Har skrivit C i inbäddade realtids-system (OSE Delta och VxWorks) mellan 1991 och 2007. Tror att C fortfarande är det som används när det kommer till minnessnålhet och snabbhet. Finns inget OS i systemet så lämpar sig C väl för bare metal programming. Finns ett OS är det troligen ändå skrivet i C.

Visa signatur

// Lars Lindehaven