Finns det några fördelar att använda C++ vid uC?
Finns det några fördelar att använda C++ vid uC?
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++.
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++.
Re: Finns det några fördelar att använda C++ vid uC?
Var det samma lärare som påstod att Arduino brukar rekommenderas för styrsystem?
Re: Finns det några fördelar att använda C++ vid uC?
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...
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...
Re: Finns det några fördelar att använda C++ vid uC?
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.
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.
Re: Finns det några fördelar att använda C++ vid uC?
Denna kan vara en bra ide att titta igenom...
http://www.iar.com/Global/Resources/Sem ... iction.pdf
http://www.iar.com/Global/Resources/Sem ... iction.pdf
Re: Finns det några fördelar att använda C++ vid uC?
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!
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!
Re: Finns det några fördelar att använda C++ vid uC?
Japp.LHelge skrev:Var det samma lärare som påstod att Arduino brukar rekommenderas för styrsystem?
Re: Finns det några fördelar att använda C++ vid uC?
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.
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.
Re: Finns det några fördelar att använda C++ vid uC?
Min rekommendation är att du inte tar denne lärares ord som den enda sanningen.
Re: Finns det några fördelar att använda C++ vid uC?
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...
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...
Re: Finns det några fördelar att använda C++ vid uC?
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?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.
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.

Re: Finns det några fördelar att använda C++ vid uC?
Isåfall bör du nog sortera in utlåtandet bland kvällstidningarnas "säkra källor" ..Al_Bundy skrev:Japp.LHelge skrev:Var det samma lärare som påstod att Arduino brukar rekommenderas för styrsystem?

Re: Finns det några fördelar att använda C++ vid uC?
Han föredrar C++.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?
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.
Re: Finns det några fördelar att använda C++ vid uC?
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.
- 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?
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.