Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2016-08-03, 17:48
  #1
Medlem
Tom.Of.Finlands avatar
Jag skulle vilja fråga er hur mycket mindre minne tar C jämfört med C++?
Citera
2016-08-03, 17:51
  #2
Medlem
Eeh, vad menar du?
Citera
2016-08-03, 18:20
  #3
Medlem
Tom.Of.Finlands avatar
Citat:
Ursprungligen postat av Motherofgod
Eeh, vad menar du?

Vi säger att jag gör ett program i C som utgör en sak. Sedan gör jag ett program i C++ som utför exakt samma sak. Hur stor är skillnaden i minne då ungefär?

För orsaken varför C väljs framför C++ har väll med minne att göra?
Citera
2016-08-03, 19:12
  #4
Medlem
Citat:
Ursprungligen postat av Tom.Of.Finland
Vi säger att jag gör ett program i C som utgör en sak. Sedan gör jag ett program i C++ som utför exakt samma sak. Hur stor är skillnaden i minne då ungefär?

För orsaken varför C väljs framför C++ har väll med minne att göra?

Nej. Tex till microcontrollers finns ofta bara C. Om det tar mer minne beror hur på hur du programmerar i C++.
Citera
2016-08-03, 20:06
  #5
Medlem
Tom.Of.Finlands avatar
Citat:
Ursprungligen postat av flirk
Nej. Tex till microcontrollers finns ofta bara C. Om det tar mer minne beror hur på hur du programmerar i C++.

Varför oftast bara C? Vad är det som gör så att C är mer använt än C++? C++ kan allt som C kan och har mycket mer tillägg så som templets och färdiga klasser.

Alltså borde C vara "gammalt och svagt"? Eller hur?
Citera
2016-08-03, 20:17
  #6
Medlem
Citat:
Ursprungligen postat av Tom.Of.Finland
Varför oftast bara C? Vad är det som gör så att C är mer använt än C++? C++ kan allt som C kan och har mycket mer tillägg så som templets och färdiga klasser.

Alltså borde C vara "gammalt och svagt"? Eller hur?

Anledningen är att det är lättare att skriva en kompilator till C än C++ och C++ features tex inte krävs i ett microcontroller program (beror såklart på hur stark den är och hur avancerade program som skrivs) men det är iaf sant för mindre microcontrollers.

C är inte svagt, det är väldigt optimalt för hårdvarunära programmering där man är inne och pillar på bitar och behöver explicit kontroll över minne och exekvering.

Ska man sen skriva större program och ovan nämnda saker inte är viktiga så är C inget bra val, det krävs ju mycket fler rader kod för att göra samma sak jämfört med C++ eller ännu bättre Python.

Men det är helt enkelt olika verktyg för olika problem.
Citera
2016-08-03, 20:20
  #7
Medlem
bithaxs avatar
Tror C är vanligare för lågnivå programmering av ett antal anledningar.

1. Ett C API kan användas för både C och C++ utveckling. Du har alltså inte låst dig till någon av dessa språk genom att välja C.

2. Om du skall bygga t.ex. en kernel eller en minneshanterare kan du inte göra det i den nuvarande C++ standarden eftersom C++ förväntar sig att det finns stöd för t.ex. trådar. "new" och "delete" blir hyfsat meningslösa när du skriver koden för att implementera en malloc osv. På det hela taget kommer man att få ett subset av C++ som fungerar i denhär miljön, och många saker kommer att vara trasiga och leda till intressanta fel om man skulle råka använda dem.

3. För en ny arkitetktur är det lättare att porta en C kompilator och standardbiblioteket för C än att porta C++ kompilator med standardbibliotek. C standarden är betydligt mindre.

4. Det finns saker i C++ som är totalt brutna, där ingen kompilator egentligen gör rätt.

5. Kopieringsverkstad. Tidigare C++ standarder hade inte move constructorn. Det skapade mycket onödig kopiering av objekt.

6. "Konstiga arv". En anledning jag hört från folk som jobbar med detta.
__________________
Senast redigerad av bithax 2016-08-03 kl. 20:37.
Citera
2016-08-03, 20:21
  #8
Medlem
Citat:
Ursprungligen postat av Tom.Of.Finland
Vi säger att jag gör ett program i C som utgör en sak. Sedan gör jag ett program i C++ som utför exakt samma sak. Hur stor är skillnaden i minne då ungefär?

För orsaken varför C väljs framför C++ har väll med minne att göra?

Det beror som sagt på hur du skriver det. DU kan skriva C i C++, C är ett subset av C++. Men du kanske också skulle kunna skriva ett kortare program i C++. Det KAN då eventuellt ta större plats.
Citera
2016-08-03, 21:19
  #9
Medlem
Tom.Of.Finlands avatar
Citat:
Ursprungligen postat av bithax
Tror C är vanligare för lågnivå programmering av ett antal anledningar.

1. Ett C API kan användas för både C och C++ utveckling. Du har alltså inte låst dig till någon av dessa språk genom att välja C.

2. Om du skall bygga t.ex. en kernel eller en minneshanterare kan du inte göra det i den nuvarande C++ standarden eftersom C++ förväntar sig att det finns stöd för t.ex. trådar. "new" och "delete" blir hyfsat meningslösa när du skriver koden för att implementera en malloc osv. På det hela taget kommer man att få ett subset av C++ som fungerar i denhär miljön, och många saker kommer att vara trasiga och leda till intressanta fel om man skulle råka använda dem.

3. För en ny arkitetktur är det lättare att porta en C kompilator och standardbiblioteket för C än att porta C++ kompilator med standardbibliotek. C standarden är betydligt mindre.

4. Det finns saker i C++ som är totalt brutna, där ingen kompilator egentligen gör rätt.

5. Kopieringsverkstad. Tidigare C++ standarder hade inte move constructorn. Det skapade mycket onödig kopiering av objekt.

6. "Konstiga arv". En anledning jag hört från folk som jobbar med detta.

Så på punkt 2 så menar du att C är portabel då den använder absolut det lägsta man kan använda för att prata med hårdvara?
Citera
2016-08-03, 21:57
  #10
Medlem
buzzkillingtons avatar
Citat:
Ursprungligen postat av Tom.Of.Finland
Vi säger att jag gör ett program i C som utgör en sak. Sedan gör jag ett program i C++ som utför exakt samma sak. Hur stor är skillnaden i minne då ungefär?

För orsaken varför C väljs framför C++ har väll med minne att göra?
Det finns massor av bra och dåliga anledningar till att man väljer C framför C++. Några kan vara att man är bättre på C, att man är beroende av verktyg som bara funkar eller funkar bättre med C, att man tycker att C++ är för bökigt, att man antar att C-kompliatorn kommer att ge bättre prestanda eller att man ska göra relativt enkla grejer där ett stort objektorienterat språk helt enkelt är overkill.

C är ett väldigt enkelt språk som beskrivs i sin helhet i en ganska tunn bok. C++ är nåt helt annat.
Citera
2016-08-03, 22:52
  #11
Medlem
bithaxs avatar
Citat:
Ursprungligen postat av Tom.Of.Finland
Så på punkt 2 så menar du att C är portabel då den använder absolut det lägsta man kan använda för att prata med hårdvara?

Nej, men det är en bra tradeoff. En assembler är enklare att skriva än en kompilator, men att skriva allt i assembler blir onödigt krångligt.

Minimalism är dock tilltalande. C är mer minimalistiskt än C++.
Citera
2016-08-03, 22:53
  #12
Medlem
Tom.Of.Finlands avatar
Citat:
Ursprungligen postat av buzzkillington
Det finns massor av bra och dåliga anledningar till att man väljer C framför C++. Några kan vara att man är bättre på C, att man är beroende av verktyg som bara funkar eller funkar bättre med C, att man tycker att C++ är för bökigt, att man antar att C-kompliatorn kommer att ge bättre prestanda eller att man ska göra relativt enkla grejer där ett stort objektorienterat språk helt enkelt är overkill.

C är ett väldigt enkelt språk som beskrivs i sin helhet i en ganska tunn bok. C++ är nåt helt annat.

Kan det inte vara så att C aldrig ändras? C har varit sig lik sedan begynnelse. C++ har ändrats rätt mycket med årens gång.

Blir lättare att bygga lågtidsprojekt med C än C++?
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback