Sida 17 av 70

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 10:49:53
av Glenn
Al_Bundy skrev: Jag tycker att man borde kunna retunera flera värden samtidigt, utan att använda pekare. Detta skulle vara bra. Och lägg till objektorientering i C!
Då är det ju något helt annat, och bör kallas något annat, exempelvis C++..

Det är ju lite som att gnälla på att Morgan fortfarande använder träram i sina bilar, och tycka att dom borde gå över till moderna produktionsmetoder, när själva anledningen att deras kunder köper deras bilar ÄR att det är en helt nyproducerad handbyggd bil efter gamla byggmetoder.

(För den som inte vet vad Morgan tillverkar för bilar, ta en titt på https://www.morgan-motor.co.uk/ )

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 12:21:20
av Al_Bundy
Fast största kritiken mot C++ är att det är helt enkelt för stort. Tänk om man skulle lägga till lite småsaker i C som bara skulle underlätta helt enkelt. Lite grundläggande klasser skulle inte vara fel.

Men den som skapade C hade väll bra anledningar att forma C efter på detta sätt?

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 12:55:45
av Mr Andersson
För stort? Bara för att vissa saker finns måste man väl inte använda dem?
Ett av designmålen med c++, som de håller stenhårt på, är att du betalar inte för det du inte använder.

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 13:05:20
av Icecap
C++ lär knappast vara speciellt mycket större än samma program i C. Visst kan det vara en aning mer overhead med klasser men det är ju ganska lite.

Problemet verkar mer vara att programmören som "bara kan jobba i C++" fläskar på med en massa onödigt.

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 13:08:55
av Mr Andersson
Jo det är exakt det som är problemet.
Alla exempel man ser online om att c++ inte passar för embedded är skrivna som att det är ett desktop-program.

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 13:10:29
av Al_Bundy
Så det går inte fläska på med "onödigt" med C också? Vad är onödigt? Borde inte ett objekt vara mer nödvändligt än just en struct med massa funktionspekare?

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 13:13:11
av Icecap
Mr Andersson: Jo, just DET problem är ju välkänd!
"Jag brukar ha alla resurser i mängder så det har jag väl här med! Vaddå? Kan jag inte svina med minnet?"

Al: såklart kan man fläska på med onödigt i C också. Oftast är det så att ovana programmörer väljer en lösningsmodell som kan optimeras ganska duktigt men det kan såklart läggas in en massa funktioner som inte används.

Fast funktioner som inte används brukar utlösa en varning och länkaren tar inte med dom.

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 13:15:29
av Mr Andersson
Al_Bundy skrev:Så det går inte fläska på med "onödigt" med C också? Vad är onödigt? Borde inte ett objekt vara mer nödvändligt än just en struct med massa funktionspekare?
Klart att det går. Det går att skriva dålig kod i alla språk.

Ingen aning om vad du menar med mer nödvändigt. En c++-klass med metoder är snabbare än c-varianten med funktionspekare.

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 13:55:28
av Al_Bundy
Exakt. Borde inte C++ vara ett lämpligt språk för inbyggda system då? Allt har ju med den som skriver koden. Jag kan ju skriva skitdålig kod i C, men underbar kod i Python.

Om ni undrar om jag ska byta från C till C++? Nej, men jag gillar inte att folk slänger skit på C++ bara för att det är C++. Man använder det verktyg man är van med och det som fungerar.
Jag kör C för att STM32 erbjuder C som standard. Mer orkar jag inte bry mig. Men jag har åsikter att C borde ha faktiskt ha OOP för att underlätta.

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 14:09:07
av Al_Bundy
En fråga! Om jag ska kopiera värden från en matris till en annan, då skriver jag denna kod.

Kod: Markera allt

void copyval(matrix*a, matrix* b){
	int n = b->row;
	int m = b->column;
	float* ptr_a = a->data;
	float* ptr_b = b->data;

	// copy all values from matrix a to matrix b
	for(int i = 0; i < n; i++){
		for(int j = 0; j < m; j++){
			*(ptr_b++) = *(ptr_a++);
		}
	}
}
Jag anropar funktionen med

Kod: Markera allt

// Copy eye matrix to u
copyval(eye(n), u);
Där eye(n) retunerar en identitetsmatris. Måste jag radera denna eye(n) efter jag har "kört klart" copyval(matrix* a, matrix* b) ? Eller beror det på vilken kompilator jag använder? Just nu är det C11.

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 15:41:31
av Shimonu
Gafflar är dumma! Kan de inte vara som en liten skål också så man kan äta soppa med dem!? Hur svårt ska det var!? Varför ha man inte tänkt på det när man gjorde gaffeln?

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 15:49:27
av AndLi
Om du frågar om C har en garbage collector så är svaret nej.

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 16:27:42
av Al_Bundy
Betyder det att om jag omdeklarerar en int flera gånger så äts minnet upp?

Exempel:

Kod: Markera allt

for(int i = 0; i < 10; i++)
   int sum = 5*5;

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 16:27:58
av mankan
Du kanske också ska kolla om matris a och b har samma dimensioner också annars riskerar du skräpdata eller programkrasch.

Re: Matrisberäkningar med för STM32?

Postat: 15 januari 2019, 16:29:17
av mankan
Al_Bundy skrev:Betyder det att om jag omdeklarerar en int flera gånger så äts minnet upp?

Exempel:

Kod: Markera allt

for(int i = 0; i < 10; i++)
   int sum = 5*5;
Det är hög tid att du lär dig hur stack och heap fungerar oavsett programspråk.