Finns det några fördelar att använda C++ vid uC?
Re: Finns det några fördelar att använda C++ vid uC?
> C är ett trevligt programmeringsspråk då det inte är designad för ett visst ändamål.
Nja...
C var från början ett implementeringsspråk, d.v.s ett hjälpmedel för
att t.ex skriva operativsystem och dessa olika delar.
Se t.ex sidan 12 (sidan i PDF'en) och framåt:
http://www.cs.princeton.edu/courses/arc ... ignOfC.pdf
"Systems programming was the primary intended use"
Flera slides kring samma ämne:
http://www.cs.princeton.edu/courses/arc ... edule.html
Nja...
C var från början ett implementeringsspråk, d.v.s ett hjälpmedel för
att t.ex skriva operativsystem och dessa olika delar.
Se t.ex sidan 12 (sidan i PDF'en) och framåt:
http://www.cs.princeton.edu/courses/arc ... ignOfC.pdf
"Systems programming was the primary intended use"
Flera slides kring samma ämne:
http://www.cs.princeton.edu/courses/arc ... edule.html
Re: Finns det några fördelar att använda C++ vid uC?
Kul diskyssion det här
![Smile :-)](./images/smilies/icon_smile.gif)
Är det på skämt, ironi eller på allvar? Det är svårt att veta eftersom man inte kan höra tonfallet!johano skrev:Japp det är därför Windows är så överlägset Linux.
Senast redigerad av blueint 10 november 2013, 21:56:06, redigerad totalt 1 gång.
Re: Finns det några fördelar att använda C++ vid uC?
Hur skapades C?
Det måste vara många många matematiska års arbete + ologiska lösningar.
T.ex varför döpte man det till printf? Varför inte print? Scanf kan väll döpas till input?
Vilka funktioner gömmer sig bakom printf? Det måste ju vara rätt många funktioner som är direkt kopplade till hårdvaran?
Det måste vara många många matematiska års arbete + ologiska lösningar.
T.ex varför döpte man det till printf? Varför inte print? Scanf kan väll döpas till input?
Vilka funktioner gömmer sig bakom printf? Det måste ju vara rätt många funktioner som är direkt kopplade till hårdvaran?
Re: Finns det några fördelar att använda C++ vid uC?
printf = print formatted
scanf = scan formatted
Vill du att de ska heta PRINT och INPUT så titta på BASIC.
Vad som finns bakom printf skiljer sig emellan de olika miljöer som det finns C-kompilatorer till...
Och vad menar du med "många många matematiska års arbete + ologiska lösningar"? Det är inte mycket i C som är riktigt ologiskt.
scanf = scan formatted
Vill du att de ska heta PRINT och INPUT så titta på BASIC.
Vad som finns bakom printf skiljer sig emellan de olika miljöer som det finns C-kompilatorer till...
Och vad menar du med "många många matematiska års arbete + ologiska lösningar"? Det är inte mycket i C som är riktigt ologiskt.
Re: Finns det några fördelar att använda C++ vid uC?
Kanske lite på skämtSvenW skrev:Kul diskyssion det här
Är det på skämt, ironi eller på allvar? Det är svårt att veta eftersom man inte kan höra tonfallet!johano skrev:Japp det är därför Windows är så överlägset Linux.
![Wink :wink:](./images/smilies/wink.gif)
/johan
Re: Finns det några fördelar att använda C++ vid uC?
Ritchie tycke inte om B:s platformsberoende så han började knåpa på C ca 1969, 72-72 var det "klart"Al_Bundy skrev:Hur skapades C?
Och 78 skrevs referensverket nummer 1, "Kernighan & Ritchie C"
Re: Finns det några fördelar att använda C++ vid uC?
Så om C utvecklades från B, och B utvecklades från BCPL och BCPL utvecklades från CPL och CPL utvecklades från ALGOL 60 och ALGOL 60 utvecklades från ALGOL 58 och ALGOL 58 utvecklades från Fortran och Fortran utvecklades från Speedcoding, och Speedcoding utvecklades från Assembly language och Assembly language...hur skapades då Assembly language? ![Smile :)](./images/smilies/icon_smile.gif)
Nu blev det snurrigt, men riktigt häfigt att alla stora programeringsspråk är släkt med varandra.
Edit:
Detta påminner mig om X-zibit:
![Bild](http://i.qkme.me/3vejvx.jpg)
![Smile :)](./images/smilies/icon_smile.gif)
Nu blev det snurrigt, men riktigt häfigt att alla stora programeringsspråk är släkt med varandra.
Edit:
Detta påminner mig om X-zibit:
![Bild](http://i.qkme.me/3vejvx.jpg)
Re: Finns det några fördelar att använda C++ vid uC?
Asm är en notation av maskinkoden. Asm går att översätta direkt till 0 och 1 som processorn förstår sig på.
Re: Finns det några fördelar att använda C++ vid uC?
Maskinen jobbar (nästan) alltid med 1 och 0. Det är bara presentationen för människor som skiljer sig åt ![Wink ;)](./images/smilies/wink.gif)
På samma sätt så presenterar människor inte sina nervsignaler utan de formuleras med stämband och händer![Very Happy :D](./images/smilies/biggrin.gif)
![Wink ;)](./images/smilies/wink.gif)
På samma sätt så presenterar människor inte sina nervsignaler utan de formuleras med stämband och händer
![Very Happy :D](./images/smilies/biggrin.gif)
Re: Finns det några fördelar att använda C++ vid uC?
Blir lite nyfiken på vad det är för utbildning du går Al_Bundy, och på vilken skola?
Re: Finns det några fördelar att använda C++ vid uC?
Går en utbildning som har inget med elektronik att göra. Dock läser jag styr- och reglerteknik nu, vilket räknas som en elektronikkurs. Men det är bara en elektronikkurs på 7.5 hp på hela programmet.
Vi har Hook, Newton, *Fölmer, Euler och Laplace som kända vetenskapsmän. Nej, vi läser inte historia![Smile :)](./images/smilies/icon_smile.gif)
Mycket okänd man. Men Fölmer kom på formel till kuggspelet i ett kugghjul.
Vi har Hook, Newton, *Fölmer, Euler och Laplace som kända vetenskapsmän. Nej, vi läser inte historia
![Smile :)](./images/smilies/icon_smile.gif)
Mycket okänd man. Men Fölmer kom på formel till kuggspelet i ett kugghjul.
Re: Finns det några fördelar att använda C++ vid uC?
Om man räknar c med klasser så är det väll inte helt fel. Men modern c++ är inte c med klasser. Modern c++ är nog ganska olämpligt ens om standardbiblioteken skulle vara tillgängliga. Dessutom är inte modern c en underkategori av c++ längre. I vart fall sedan c99 har det väll funnits funktioner som inte finns i c++.
Re: Finns det några fördelar att använda C++ vid uC?
För att wiring som man valt som bas kompileras med en C++-kompilator.Al_Bundy skrev:Men vad är anledningen att C++ används så mycket vi bibliotek på Arduino?
För att det var praktiskt att använda ett språk som det redan finns kompilator för.
Take your pick.
Jag ids int' börja om debatten om det betyder att Arduino är C++ eller inte; faktum är dock att Arduino-skisserna kompileras med en C++-kompilator men Arduino använder inte C++ standard-bibliotek. Istället används wiring-biblioteken (pinMode(), digitalWrite() et c. kommer därifrån), tillsammans med Arduinos eget bibliotek av rutiner, klasser och objekt samt de bibliotek som man vill ta från tredje part på nätet.
Ta Serial på Arduino Uno som exempel. Serial är ett objekt av klassen HardwareSerial som instantierats i den kod som Arduino-miljön automatiskt lägger till omkring skissen innan den skickas till avr-g++. Klassen är drivrutin för UART:en i AVR-processorn och tillhandahåller de metoder du anropar från din skiss, till exempel begin() eller write(). Som synes nedan är HardwareSerial en alldeles vanlig C++-klass, som dock ärver Stream från Arduino-biblioteket.
Kod: Markera allt
// Utdrag ur Arduino HardwareSerial.h, Copyright Nicholas Zambetti
class HardwareSerial : public Stream
{
private:
// Jag har klippt bort de privata delarna i den här listningen
public:
HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer,
volatile uint8_t *ubrrh, volatile uint8_t *ubrrl,
volatile uint8_t *ucsra, volatile uint8_t *ucsrb,
volatile uint8_t *ucsrc, volatile uint8_t *udr,
uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x);
void begin(unsigned long);
void begin(unsigned long, uint8_t);
void end();
virtual int available(void);
virtual int peek(void);
virtual int read(void);
virtual void flush(void);
virtual size_t write(uint8_t);
inline size_t write(unsigned long n) { return write((uint8_t)n); }
inline size_t write(long n) { return write((uint8_t)n); }
inline size_t write(unsigned int n) { return write((uint8_t)n); }
inline size_t write(int n) { return write((uint8_t)n); }
using Print::write; // pull in write(str) and write(buf, size) from Print
operator bool();
};
På inbyggda platformar menar du?Graj skrev:Modern c++ är nog ganska olämpligt ens om standardbiblioteken skulle vara tillgängliga.
Jag skulle vilja säga att C++-11 tillför en hel del mekanismer som gör språket bättre anpassat för inbyggda system än tidigare C++-versioner. En stor av förändringarna är sådana att de tillåter kompilatorn att göra större andel av jobbet, sådant som tidigare fick göras i runtime. contexpr och "variadic templates" är nog de största förbättringarna i det avseendet. Delar av standardbiblioteket är klart användbart, medan andra delar är mer tveksamma. Container-klasserna kan vara användbara även i ett inbyggt system, man får antingen implementera new() och delete() eller implementera egna allocator-klasser, det senare brukar ändå bli ett krav många gånger. streambuf är riktigt användbart, men iostreams för standardio är oftast odugligt implementerat. Jag vill minnas att jag mätte upp knappa 200 kB kod för GNU libstdc++ iostreams på ARM Cortex-M3 vid något tillfälle - å andra sidan är det biblioteket optimerat för att vara generellt och att ha alla klockor och visslor som folk kan tänka sig snarare än för att vara litet och inbyggbart.