Finns det några fördelar att använda C++ vid uC?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Finns det några fördelar att använda C++ vid uC?

Inlägg av Al_Bundy »

Hej!

En lärare till mig påstog att han föredrar C++ före C när det gäller uC-programmering för att det är lättare och mindre grötigt.
Stämmer detta?
Finns det någon fördel att använda C++ före C i uC programmering?

Jag har alltid varit van att när det gäller hårdvaruprogrammering så är det C som gäller för man kan komma åt mycket mer i hårdvaran än vad C++ kan, men man får bygga mer i C än C++.
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Re: Finns det några fördelar att använda C++ vid uC?

Inlägg av LHelge »

Var det samma lärare som påstod att Arduino brukar rekommenderas för styrsystem?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Finns det några fördelar att använda C++ vid uC?

Inlägg av sodjan »

Det går inte bara att säga "C++" eller "C" så där enkelt utan att
specificera vad man menar. Man kan skriva kod som är nästan
bara vanlig C och köra det genom en C++ kompilator. Är det då
C++ som man använder eller har skrivit?

Andra kanske menar att det inte är "riktig" C++ om man inte kör
objektorienterat fullt ut. Och då lär det bli stökigt på maskiner
med små resurser som de flesta 8-bit miljöerna.

Så frågan går inte att förstå eller besvara om man inte har ett par exempel
på vad som avsågs med "grötigt" med C resp "mindre grötigt" med C++.

> så är det C som gäller för man kan komma åt mycket mer i hårdvaran än vad C++ kan

Om det nu är så, så är det ju bara att skriva ett par funktioner i C som gör det
som inte går i C++ och anropa dom. Det är ingen principell skillnad mot att skriva
ett par lågnivårutiner i ASM som man anropar från C. Eller (som jag har) ett par
rutiner i Fortran eller C som anropas från Cobol...
Användarvisningsbild
Icecap
Inlägg: 26645
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Finns det några fördelar att använda C++ vid uC?

Inlägg av Icecap »

Al: mitt råd är att ta utlåtande från den lärare men åtskilliga nypor salt... kanske en hel skottkärra salt.

Antingen luras h*n, annars är det en lärare med dåligt överblick.

C++ är precis som vanligt C - med lite tillägg så att säga. Och är man en skaplig programmör kan man strukturera koden alldeles utmärkt utan att gå till C++ - och man bör göra det hursomhelst!

Inte för att visa hur bra man är men för att när man öppnar ett halvt år gammalt projekt och ska trimma lite på det kan man bli förtvivlad om det fattas skaplig struktur och kommentarer. Så för den egna skull ska man strukturera ordentligt, det är helt enkelt en "överlevnadsfråga" för en själv.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Finns det några fördelar att använda C++ vid uC?

Inlägg av Micke_s »

Denna kan vara en bra ide att titta igenom...

http://www.iar.com/Global/Resources/Sem ... iction.pdf
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Finns det några fördelar att använda C++ vid uC?

Inlägg av sodjan »

Jag noterar två saker. Dels så visar deras analys (som jag skrev)
att nyttan/priset för C++ beror väldigt mycket på vad man använder.
Dels så var analysen gjort med ARM som målmiljö vilket kan göra
värderingen av "free/cheap/expensive" lite annorlunda än om man
har 8-bitars arkitekturer (AVR/PIC) som målmiljö.

Alltså, utgångsfrågan är för generell i sin formulering för att kunna
ge så mycket andra svar än "it depends".

PS: Intressant PDF för övrigt!
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Finns det några fördelar att använda C++ vid uC?

Inlägg av Al_Bundy »

LHelge skrev:Var det samma lärare som påstod att Arduino brukar rekommenderas för styrsystem?
Japp.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Finns det några fördelar att använda C++ vid uC?

Inlägg av sodjan »

Diskussionen med läraren är svår att kommentera eftersom vi inte
har tillgång till den, enbart till din tolkning av den. Man måste veta
i vilken kontext som det ena eller det andra sas för att bedöma det.
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Re: Finns det några fördelar att använda C++ vid uC?

Inlägg av LHelge »

Min rekommendation är att du inte tar denne lärares ord som den enda sanningen.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Finns det några fördelar att använda C++ vid uC?

Inlägg av sodjan »

Som sagt, helt omöjligt att kommentera.
Vi vet inte vad "uC" står för i det aktuella fallet.
Vi vet inte vad "mindre grötigt" avser för något.

Det *kan* rent teoretiskt vara så att läraren hade helt rätt.
I den faktiska kontexten som gällde just i den diskussionen...
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Re: Finns det några fördelar att använda C++ vid uC?

Inlägg av Kaggen »

Al_Bundy skrev:En lärare till mig påstog att han föredrar C++ före C när det gäller uC-programmering för att det är lättare och mindre grötigt.
Vad för typ av microcontroller talade ni om? 8, 16 eller 32 bitars? Vad talade ni om för övriga resurser som minne och klockfrekvens? Vad talade ni om för problem som skulle lösas?

C++ är ju en utökning av C som gör C mer objektorienterat med klasser m.m (man skall tänka att allt är objekt). Tanken i sig är inte dum, även om många anser att försöka göra C objektorienterat är som att måla läppstift på grisen. Så vitt jag vet kommer du lika nära hårdvaran med C++ som med C eftersom grundsyntaxen i mångt och mycket är lika. Däremot beroende vilka av de specifika funktionerna för C++ du utnyttjar så kan den kompilerade koden bli större och prestandan bli lidande i vissa fall. Vilket inte alltid är så lyckat om vi talar små 8-bitars uC med begränsade resurser.

Arduino använder väl C++ i grunden om jag minns rätt? Jag tvivlar dock på att dom använder C++ fullt ut med operator overloading och RTTI m.m. Jag är dock ingen expert på området.

Det går att använda delar av objektorienterat tänk när man programmerar även om man kör vanilla C (eller andra språk) som icecap skriver.

Personligen tycker jag att vissa lösningar är som gjorda för C++ med klasser och objekt. Å andra sidan så kan vissa lösningar bli väldigt fula när gränsen mellan vad som skall ingå i ett objekt och hur kommunikation mellan dessa skall ske är lite luddig. Verkligheten är som bekant inte enbart svart eller vit. Jag skall väl också säga att jag inte är någon expert på C++ heller. :)
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: Finns det några fördelar att använda C++ vid uC?

Inlägg av blueint »

Al_Bundy skrev:
LHelge skrev:Var det samma lärare som påstod att Arduino brukar rekommenderas för styrsystem?
Japp.
Isåfall bör du nog sortera in utlåtandet bland kvällstidningarnas "säkra källor" .. ;)
Gimbal
Inlägg: 8672
Blev medlem: 20 april 2005, 15:43:53

Re: Finns det några fördelar att använda C++ vid uC?

Inlägg av Gimbal »

Al_Bundy skrev:En lärare till mig påstog att han föredrar C++ före C när det gäller uC-programmering för att det är lättare och mindre grötigt.
Stämmer detta?
Han föredrar C++.
vi får väl tro honom, HAN föredrar C++, så det stämmer nog. Mer ska vi nog inte läsa in i det, för något bra tips i allmänhet är det inte, tycker JAG.
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Re: Finns det några fördelar att använda C++ vid uC?

Inlägg av LHelge »

Jag föredrar då hellre C#, med garbage collector, stort väldokumenterat bibliotek med i princip allt som kan tänkas behövas och marknadens överlägset bästa utvecklingsmiljö/debugger. Jag hade nog även föredragit Java framför C++, om det sedan är lämpligt att köra på en microkontroller är en annan fråga. I vissa specifika fall är det säkert det, men i allmänhet inte.
Användarvisningsbild
Krille Krokodil
Inlägg: 4062
Blev medlem: 9 december 2005, 22:33:11
Ort: Helsingborg

Re: Finns det några fördelar att använda C++ vid uC?

Inlägg av Krille Krokodil »

Jag hade en lärare på LTH som nästan var klar med doktorandstudierna i kravspecifikation på mjukvara som inte alls personligen gillade objektorienterad programmering, motsvarande lyxiga åsikter möter man knappast inom arbetslivet, där köper man de verktyg som är effektivast för den peng man kan få och kör på det. Perspektiven på universiteten kan vara väldigt snäva ibland.
Skriv svar