Sida 2 av 3

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

Postat: 9 november 2013, 00:53:55
av blueint
Det är säkert bra med garbage collection när quadrokoptern flyger.. ;)

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

Postat: 9 november 2013, 00:55:38
av sodjan
Man lär kanske behöva det efteråt i alla fall... :-)

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

Postat: 9 november 2013, 12:37:07
av LHelge
Haha, precis!

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

Postat: 9 november 2013, 16:48:26
av blueint
Glöm inte överladdade funktioner.. "fly_forward() .. fly_down()" ..oops ;)

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

Postat: 9 november 2013, 19:04:37
av Al_Bundy
sodjan skrev: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.
Ja, han sa bara det när jag frågade han.
Det blir liksom "enklare" sa han för man behöver inte skriva så mycket kod jämfört med C.

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

Postat: 9 november 2013, 19:06:15
av Al_Bundy
Men om vi tar t.ex Arduino.

Det mest av Arduinos bibliotek är skrivna i C++, vissa C. Men vad är anledningen att C++ används så mycket vi bibliotek på Arduino?

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

Postat: 9 november 2013, 19:31:42
av blueint
Fråga din lärare vad han anser om egenskapen hos C++ att svälla ordentligt i kodstorlek och sämre exekveringshastighet vid användande av mikrokontrollers? i synnerhet om det är 8-bit..

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

Postat: 9 november 2013, 20:16:04
av Al_Bundy
Ska göra det.

Jag hör väldigt mycket kritik till C från C++ programmerare, men jag hör sällan kritik från C till C++ programmerare.
Hur kommer det sig?

Edit:
Jag har kollat upp vad man kan göra i C och egentligen så kan man göra ALLT som finns. Med tanke på att alla språk är skapade ur C för C är det bästa hårdvarunäraspråket på marknaden.

Men om vi bortser från andra språk och fokuserar mer på stora program och spel. Då har jag räknat upp:
* Quake 1
* Quake 2
* Quake 3
* Linux
* OpenGL
* Doom 1
* Doom 2
* GTK+ (GUI-bibliotek för C)

Mer kommer jag inte på, men det finns säkert stora program som Microsoft Office som är gjorda i C.

Hur som helst.
Om C kan göra allt, varför håller sig inte folk till C då?

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

Postat: 9 november 2013, 20:23:36
av gkar
C++ i sig är inte långsamt, det är snabbare än C i vissa fall tack vare att kompilatorn har större frihet.
Att det sväller storleksmässigt hänger på vad man säger åt kompilatorn att kompilera för kod.
Samma sakt med, C,.

Det är svårare att hålla nere kodstorleken i C++ eftersom det sker saker som visserligen är definerade hur de sker, men som alla inte tänker på att de genereras.

Egentligen är det samma sak med garbage collection. Du måste alltid ta i beaktande att programmet stannar odefinerat länge för att städa upp. Och du bör testa det genom att stanna programmet slumpmässga tider på slumpmässiga ställen utan att det blir problem.

Okunniga programmerare ger dålig kod.

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

Postat: 9 november 2013, 23:12:17
av blueint
C++ blir med andra ord svårt att bedöma hur det beter sig. Känns ju bra i realtidssystem..

Anledningen till att man använder använda andra programspråk än C är att andra språk kan vara effektivare för den specifika uppgiften att uttrycka sitt problem i. Exempel: Perl, VHDL, shell, Lisp, Prolog, Basic osv.

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

Postat: 9 november 2013, 23:23:41
av Al_Bundy
Om vi tar t.ex C och C++ då.
Båda kan man göra spel/program/koda hårdvara i.

Dessutom spel och program som är skrivna i C är mycket snabbare, flexibel och buggar inte.
Jag minns när man spelade Doom och Quake. Man kände verkligen i spelet att här finns det C-kod.
Det såg man också när man kollade på systemkraven.

Jämför man Unreal och Quake vid samma tidpunkt. Dessa spel var två konkurrenter till varandra. De hade ungefär samma story, samma miljö och grafikfunktioner osv. Men ändå så var Quake snabbare, krävde mindre, men spelet var lika stort som Unreal.

Undreal var gjort i C++.
Quake var gjort i C.

Nu tar vi program.

Program som är skrivna i t.ex QT brukar enligt mig dra rätt mycket minne av datorn jämfört med program som är skrivna i GTK+. Gnome är skriven i C och KDE är skriven i C++.
GTK+ är skriven i C.
QT är skriven i C++.

I detta fall så är gnome mycket snabbare än KDE.

Nu tar vi operativsystem.
Windows är skrivet i C++.
Linux är skrivet i C.

Japp. Ni förstår poängen.

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

Postat: 9 november 2013, 23:57:40
av johano
Japp det är därför Windows är så överlägset Linux.

/johan

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

Postat: 10 november 2013, 00:01:46
av blueint
Man kanske inte skall underskatta effekten att slarviga programmerare oftast undviker språk som ställer krav på tankeverksamheten ;)

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

Postat: 10 november 2013, 00:44:20
av sodjan
> Ja, han sa bara det när jag frågade han.

Eftersom vi varken vet vad du faktiskt frågade läraren eller i
vilken kontext, så är lärarens svar fullständigt värdelöst för oss.

> Med tanke på att alla språk är skapade ur C...

Herre jävlar vad du yrar!
Du har absolut inte en aning om vad du talar om.
*Självklart* är inte alla språk skapade ur C, du kan ju
försöka förklara hur de språk som är äldre än C är det...

> Om C kan kan göra allt, varför håller sig inte folk till C då?

C (kanske) kan göra allt, men C kan inte göra allt bäst.

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

Postat: 10 november 2013, 11:24:55
av Icecap
C är ett trevligt programmeringsspråk då det inte är designad för ett visst ändamål.

Det finns språk som är inriktat på administrativa system (kolla bara med sodjan om det), det finns språk som är utvecklat för högre matematik, astronomi osv.

C är underbart fritt från detta: det är lika bra/dålig på det hela...

C++ är inte nödvändigtvis "värre" i µC-världen än C - men C++ medför delar som man inte kan ha lika mycket kontroll över vilket kan ställa till det.

En klass i C++ har t.ex. en constructor och en destructor, alltså en kodbit som körs när programmet startas hhv. avslutas. I en PC kan detta vara trevligt, man kan reservera minne och lämna av det igen och då en PC ofta startar och stoppar program är detta en bra grej.

Men i en µC är det mycket sällsynt att man använder dynamisk minneshantering, speciellt med 8-bitars PIC/AVR/dylika!

Sedan finns det saker som att en klass i C++ kan ha "dolda" funktioner och variabler, alltså funktioner/variabler som bara klassen kan se internt men det omgivande program inte kan se. Detta betyder att man kan bestämma att "denna funktion o denna också kan resten av projektet se, resten är klassens egna!" Kalla det en brandvägg om du vill. Trevligt att ha!

Detta kan man till stor del uppnå i C också vid att skapa en egen fil som inkluderas, då kan man deklarera funktioner och variabler som 'static' och då syns de bara inom den filen.

Det som kan ställa till det med C++ är att klasser kan "ärvas", alltså att någon har gjort en tidigare klass och som man måste bättre på av någon anledning. Då kan man säga att en ny klass är det sanna som den gamla klassen + lite tillägg, man behöver då bara att skriva koden för själva tilläggen då.

Mycket smidigt och snabbt - men vet man hur den gamla klassen kom till? Klasser kan alltså ärvas i (oändligt) många led och plötsligt är ursprunget till klassen osäkert, exakt vad klassen gör i alla led är tappat i det dunkla och hela kontrollen flyter lite.

Visst, det kan vara bra programmörer som har haft hand om det hela och allt är bra - men ta de enkla funktioner som finns till Arduino: det är ju inte alla som är lika bra och buggfria eller hur?

Och sitter man med ett system som kan orsaka skada om det blir fel (t.ex. pelletsbrännarstyrning, blir det fel kan pannan explodera! På riktigt!) då är det inte kul att inte veta exakt vad allting gör.