3 van 4

Re: C++ leren nog nuttig?

Geplaatst: wo 12 nov 2008, 22:57
door Vladimir Lenin
Dat zou moeten, maar in tegenstelling tot wat veel mensen denken bestaat er wel degelijk traditie wat betreft programmeren, stel je gebruikt een for, dan noem je die variabele ook meestal i, dat stamt uit de tijd van de Hongaarse notatie, toen was het verplicht om voor je variabele af te korten welk type het was, i staat dus voor integer. De regel is verdwenen, maar iedereen gebruikt nog i. En zo zijn er massa's voorbeelden. Hello World! is er bijvoorbeeld ook eentje van, dat komt omdat sommige regels dan weer wel en dan weer niet toegepast moesten worden, en men de code lang wilde gebruiken. Ik zeg je één ding over 10 jaar bestaan de int, long, float en double nog steeds.

Re: C++ leren nog nuttig?

Geplaatst: wo 12 nov 2008, 23:00
door Bart
Vladimir Lenin schreef:Ik steun je, de opzet van al die types was dat computers vroeger geheugens hadden van 64kB, en geen virtueel geheugen.

Tegenwoordig echter zijn er geheugen van 4GB en dat is helemaal geen uitzondering, 4 of 8 bytes meer maakt vandaag niets meer uit. want dat is toch maar 0.0000001% van het geheugen.


Dat geld niet voor embedded software.

Re: C++ leren nog nuttig?

Geplaatst: wo 12 nov 2008, 23:05
door Vladimir Lenin
zoals ik reeds zei, de tradities houden de boel (troep) in leven.

Re: C++ leren nog nuttig?

Geplaatst: wo 12 nov 2008, 23:14
door Cycloon
Volgens mij is er hardwarematig zelf helemaal geen verschil meer te vinden tussen een short of een int of w/e, beiden zouden wel eens evenveel geheugen kunnen reserveren. Door het systeem van paginering en virtueel geheugen hebben die zaken ook nog nauwelijks nut. Naar mijn mening laat je ze in gewone computer applicaties best achterwege. Indien je toch gaat naar hardware die beperkt is dan kan je gaan optimaliseren zo ver als je wil, vaak moet je dan sowieso al afstappen van allerlei programmeer technieken (zoals OO die enorm wat resources vreet) waardoor je die zaken er gerust kan bijnemen.

Re: C++ leren nog nuttig?

Geplaatst: do 13 nov 2008, 10:43
door PeterPan
Een goede programmeur weet welke type hij wanneer gebruikt. Als je echt netjes programmeert zou je zelfs je redenatie voor een bepaald type in de commentaar moeten schrijven.
Daarvoor dient commentaar niet.

Een goede manier is om vóór de declaratie van een functie/procedure te vertellen wat de functie doet; verklaren wat de inputparameters voorstellen en wat de uitvoerparameter is (en van welk type).

Verder binnen de functie alleen daar commentaar zetten als het echt wat toevoegt, dus niet als volgt

int leeftijd; //de leeftijd van de persoon

float jaarsalaris; // het jaarsalaris van de persoon

Fortran kent de zogenaamde impliciete declaratie: Alle variabelen die met i,j,k,l,m of n beginnen zijn van type long;

(vrijwel) de rest is van type double (de typen heten daar anders).

Dat zou ideaal zijn als de compiler het zou ondersteunen en zou aangeven welke variabelen niet geinitialiseerd zijn.

Nadelen van int en float:

int: De compiler waarschuwt niet als de grenzen overschreden worden. Ga dan maar eens zoeken.

float: Numerieke problemen zulllen je genezen en snel doen besluiten elke float in double te veranderen. Zoek de problemen niet op als ze niet hoeven te ontstaan.

Re: C++ leren nog nuttig?

Geplaatst: do 13 nov 2008, 13:38
door Vladimir Lenin
PeterPan schreef:Daarvoor dient commentaar niet.

Een goede manier is om vóór de declaratie van een functie/procedure te vertellen wat de functie doet; verklaren wat de inputparameters voorstellen en wat de uitvoerparameter is (en van welk type).

Verder binnen de functie alleen daar commentaar zetten als het echt wat toevoegt, dus niet als volgt

int leeftijd; //de leeftijd van de persoon

float jaarsalaris; // het jaarsalaris van de persoon

Fortran kent de zogenaamde impliciete declaratie: Alle variabelen die met i,j,k,l,m of n beginnen zijn van type long;

(vrijwel) de rest is van type double (de typen heten daar anders).

Dat zou ideaal zijn als de compiler het zou ondersteunen en zou aangeven welke variabelen niet geinitialiseerd zijn.

Nadelen van int en float:

int: De compiler waarschuwt niet als de grenzen overschreden worden. Ga dan maar eens zoeken.

float: Numerieke problemen zulllen je genezen en snel doen besluiten elke float in double te veranderen. Zoek de problemen niet op als ze niet hoeven te ontstaan.
Daarvoor lijken mij de XML-tags handiger, waarmee je ook meteen je documentatie-bestand schrijft.

Re: C++ leren nog nuttig?

Geplaatst: vr 14 nov 2008, 10:57
door Rogier
PeterPan schreef:279 bladzijden.

(...)

Al dat gedoe levert geen fluit op (maakt alleen de kans op fouten groter). Zonde van de tijd als beginnend programmeur.
Mee eens, voor de beginnende programmeur is dit echt overkill. Maar ik denk dat C++ sowieso niet de ideale taal is om mee te beginnen als je nog moet leren programmeren. Talen als (Visual)Basic of PHP zijn dan makkelijker denk ik: veel functies voorradig, en je hoeft niet moeilijk te doen met types, declareren van variabelen en alloceren van arrays enzo :D

Daarentegen voor de programmeur met wat meer ervaring is C++ juist wel een aanrader, omdat je veel explicieter kan uitdrukken wat er precies moet gebeuren.
PeterPan schreef:Wat is er op tegen dat ik de variabele waarin iemands leeftijd (tussen 0 en 120) als volgt declareer:

long leeftijd;
Op zich niets. Maar wie weet moet je later een keer leeftijden kopiëren uit andere data, waar de leeftijd als (unsigned?) char was gedefinieerd en -1 als 'unknown' gold (of ~0 indien unsigned). Krijg je ineens leeftijden van 255, want -1 of ~0 als long is iets anders. Om maar een dwarsstraat te noemen :D
Met long zit je aan de veilige kant. Of wordt het programma daardoor traag?

Met float is het nog erger(lijker). Altijd double gebruiken.
Onzin. Als het bijvoorbeeld om een lijst vectorcoördinaten gaat die naar je videokaart gepompt moet worden wil je juist geen doubles gebruiken.
PeterPan schreef:Bovendien vind ik dat een programmeur zich moet bezighouden met het ontwikkelen van algoritmen en zich niet moet hoeven te bekommeren om administratieve zaken (zoals hoeveel bits zit er in een int).

In toekomstige programmeertalen zullen deze mankementen moeten verdwijnen.
Ligt er maar helemaal aan wat (en op welk abstractieniveau) je programmeert. Bij het wegschrijven van bestanden in een bepaald formaat is het juist essentieel om te weten hoeveel bits er in een int zitten. Of bij het bewerken van afbeeldingen maakt het nogal een verschil of je met 8, 16, 24 of 32 bit kleurdiepte werkt.
PeterPan schreef:Nadelen van int en float:

int: De compiler waarschuwt niet als de grenzen overschreden worden. Ga dan maar eens zoeken.
Tuurlijk wel, iedere fatsoenlijke compiler geeft een waarschuwing bij

Code: Selecteer alles

int x = 100000000000;
(als het een 32bits programma betreft tenminste).

En anders is het puur een tekortkoming van de compiler, en heeft niets te maken met de taal of het type int.
float: Numerieke problemen zulllen je genezen en snel doen besluiten elke float in double te veranderen. Zoek de problemen niet op als ze niet hoeven te ontstaan.
Te kort door de bocht, dat is echt maar één kant van het verhaal. Als je alleen maar in algoritmes denkt doen die details er niet toe. Maar de exacte implementatie is net zo belangrijk, en het hangt compleet van de situatie af (en niet zozeer van de taal) waar je wel en geen rekening mee hoeft te houden.

Re: C++ leren nog nuttig?

Geplaatst: vr 14 nov 2008, 13:24
door PeterPan
Als je C++ wilt leren is mijn advies: Leer eerst C.

Een geweldig boek is The C Programming Language (zie http://en.wikipedia.org/wiki/The_C_Program...Language_(book) )

van Kerninghan en Ritchie.

Het beste programmeerboek dat ik ken. Helder en klein. In een paar uur ken je de taal.

Dan nog de stap naar C++. Daarvoor ken ik geen enkel compact boek dat me bevalt.

Re: C++ leren nog nuttig?

Geplaatst: vr 14 nov 2008, 13:38
door PeterPan
Op zich niets. Maar wie weet moet je later een keer leeftijden kopiëren uit andere data, waar de leeftijd als (unsigned?) char was gedefinieerd en -1 als 'unknown' gold (of ~0 indien unsigned). Krijg je ineens leeftijden van 255, want -1 of ~0 als long is iets anders. Om maar een dwarsstraat te noemen :D
Een vreemde dwarsstraat. Als ik data copieer uit een bestand kan ik de data gewoon opslaan als long. Geen enkel probleem.
Onzin. Als het bijvoorbeeld om een lijst vectorcoördinaten gaat die naar je videokaart gepompt moet worden wil je juist geen doubles gebruiken.

Ligt er maar helemaal aan wat (en op welk abstractieniveau) je programmeert. Bij het wegschrijven van bestanden in een bepaald formaat is het juist essentieel om te weten hoeveel bits er in een int zitten. Of bij het bewerken van afbeeldingen maakt het nogal een verschil of je met 8, 16, 24 of 32 bit kleurdiepte werkt.
Heb je het nog steeds over de beginnende programmeur?
Tuurlijk wel, iedere fatsoenlijke compiler geeft een waarschuwing bij

Code: Selecteer alles

int x = 100000000000;
(als het een 32bits programma betreft tenminste).

En anders is het puur een tekortkoming van de compiler, en heeft niets te maken met de taal of het type int.
Overschrijding treedt doorgaans op in runtime. Na de 10.000-ste stap in de binnenste loop (om maar een zijstraat te noemen).
Te kort door de bocht, dat is echt maar één kant van het verhaal. Als je alleen maar in algoritmes denkt doen die details er niet toe. Maar de exacte implementatie is net zo belangrijk, en het hangt compleet van de situatie af (en niet zozeer van de taal) waar je wel en geen rekening mee hoeft te houden.
Niet kort door de bocht. Natuurlijk is de implementatie heel belangrijk, maar numerieke problemen treden vroeg of laat op, hoe numeriek bewust je ook programmeert.

Re: C++ leren nog nuttig?

Geplaatst: vr 14 nov 2008, 13:52
door Vladimir Lenin
Het lastige aan werken met een float, is dat elke wiskundige expressie met doubles werkt, waardoor je het altijd opnieuw moet omzetten.

Re: C++ leren nog nuttig?

Geplaatst: vr 14 nov 2008, 14:22
door jhnbk
Rogier schreef:Mee eens, voor de beginnende programmeur is dit echt overkill. Maar ik denk dat C++ sowieso niet de ideale taal is om mee te beginnen als je nog moet leren programmeren. Talen als (Visual)Basic of PHP zijn dan makkelijker denk ik: veel functies voorradig, en je hoeft niet moeilijk te doen met types, declareren van variabelen en alloceren van arrays enzo :D

Daarentegen voor de programmeur met wat meer ervaring is C++ juist wel een aanrader, omdat je veel explicieter kan uitdrukken wat er precies moet gebeuren.
Dit leert mij dat ik dus zeker C++ moet leren :D

Re: C++ leren nog nuttig?

Geplaatst: vr 14 nov 2008, 14:35
door qrnlk
PeterPan schreef:int leeftijd; //de leeftijd van de persoon

float jaarsalaris; // het jaarsalaris van de persoon
Ik zou persoonlijk voor bedragen geen float gebruiken maar een integer (als weergave van het aantal centen, of zelfs gedeelten van centen). Alle berekeningen zijn dan snelle integer berekeningen. Pas op het moment dat je het moet weergeven op scherm of papier schaal je het bedrag. Het is mijn ervaring dat mensen veel te snel floats gebruiken. Buiten zeer specifieke doeleinden kun je vrijwel altijd wel een manier bedenken om het in integers of rationals te berekenen.

Re: C++ leren nog nuttig?

Geplaatst: za 22 nov 2008, 00:09
door Revelation
Met long zit je aan de veilige kant. Of wordt het programma daardoor traag?

Met float is het nog erger(lijker). Altijd double gebruiken.


Met long zit je helemaal niet aan de veilige kant, aangezien je long-bytelengte platformafhankelijk is. Verder wil ik nog eens beamen wat Rogier al zei, floats hebben de absolute voorkeur voor communicatie met de GPU. Floats zijn de native format van de GPU en ook van OpenGL.

Re: C++ leren nog nuttig?

Geplaatst: za 22 nov 2008, 02:43
door Lathander
Persoonlijk sta ik nogal twijfelachtig tegenover programmeertalen waarvoor iedereen zomaar eventjes een compiler van kan maken.

Re: C++ leren nog nuttig?

Geplaatst: za 22 nov 2008, 09:02
door qrnlk
Persoonlijk sta ik nogal twijfelachtig tegenover programmeertalen waarvoor iedereen zomaar eventjes een compiler van kan maken.
Waarom? Persoonlijk sta ik nogal twijfelachtig tegenover programmeertalen waar je niet zo maar eventjes een (bijvoorkeur interactieve, single-pass) compiler voor kunt schrijven.

Een compiler/interpreter is zeker een lastig stuk software maar er is niets magisch aan. Een taal met een syntax/grammatica die zo complex is dat het onmogelijk is om er een single pass compiler voor te schrijven is vaak ook vrijwel onleesbaar voor mensen.

Een taal met een veel eenvoudigere syntax/grammatica zodat je er in een weekend een compiler zou kunnen schrijven hoeft niet minder expressief te zijn. Op grond van mijn ervaring zou ik zelfs het tegenovergestelde veronderstellen, namelijk dat een dergelijke taal meer expressie kracht zal hebben.

Een vergelijkbaar programma geschreven in een taal met een eenvoudigere structuur is vaak sneller geschreven en korter dan een functioneel equivalent programma geschreven in een meer complexere taal. Tevens zal de code van verschillende programmeurs geschreven in een taal met een eenvoudigere structuur meer met elkaar overeenkomen dan de code geschreven in een taal met een veel complexere structuur.

Dit zijn volgens mij allemaal voordelen van talen met een eenvoudige structuur: De software wordt sneller geschreven, het zijn kortere programma's, en er is minder variatie tussen programmeurs met verschillende mate van ervaring.