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

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43205
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

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

Inlägg av sodjan »

> 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
SvenW
Inlägg: 1124
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

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

Inlägg av SvenW »

Kul diskyssion det här :-)
johano skrev:Japp det är därför Windows är så överlägset Linux.
Är det på skämt, ironi eller på allvar? Det är svårt att veta eftersom man inte kan höra tonfallet!
Senast redigerad av blueint 10 november 2013, 21:56:06, redigerad totalt 1 gång.
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 »

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?
Zeela
Inlägg: 176
Blev medlem: 28 augusti 2008, 11:23:49
Ort: Åtvidaberg
Kontakt:

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

Inlägg av Zeela »

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.
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

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

Inlägg av johano »

SvenW skrev:Kul diskyssion det här :-)
johano skrev:Japp det är därför Windows är så överlägset Linux.
Är det på skämt, ironi eller på allvar? Det är svårt att veta eftersom man inte kan höra tonfallet!
Kanske lite på skämt :wink:

/johan
Användarvisningsbild
AndLi
Inlägg: 17368
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

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

Inlägg av AndLi »

Al_Bundy skrev:Hur skapades C?
Ritchie tycke inte om B:s platformsberoende så han började knåpa på C ca 1969, 72-72 var det "klart"

Och 78 skrevs referensverket nummer 1, "Kernighan & Ritchie C"
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 »

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? :)

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
eqlazer
Inlägg: 923
Blev medlem: 22 september 2007, 13:53:45
Ort: Göteborg

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

Inlägg av eqlazer »

Asm är en notation av maskinkoden. Asm går att översätta direkt till 0 och 1 som processorn förstår sig på.
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 »

Maskinen jobbar (nästan) alltid med 1 och 0. Det är bara presentationen för människor som skiljer sig åt ;)

På samma sätt så presenterar människor inte sina nervsignaler utan de formuleras med stämband och händer :D
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 »

Blir lite nyfiken på vad det är för utbildning du går Al_Bundy, och på vilken skola?
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 »

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 :)

Mycket okänd man. Men Fölmer kom på formel till kuggspelet i ett kugghjul.
Graj
Inlägg: 100
Blev medlem: 28 december 2006, 20:50:03
Ort: Linköping

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

Inlägg av Graj »

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++.
sm5tfx
Inlägg: 114
Blev medlem: 20 juli 2011, 14:28:41
Ort: Gnällbältet

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

Inlägg av sm5tfx »

Al_Bundy skrev:Men vad är anledningen att C++ används så mycket vi bibliotek på Arduino?
För att wiring som man valt som bas kompileras med en C++-kompilator.
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();
};
Graj skrev:Modern c++ är nog ganska olämpligt ens om standardbiblioteken skulle vara tillgängliga.
På inbyggda platformar menar du?

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.
Skriv svar