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.
Daarvoor dient commentaar niet.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 lijken mij de XML-tags handiger, waarmee je ook meteen je documentatie-bestand schrijft.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.
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 enzoPeterPan schreef:279 bladzijden.
(...)
Al dat gedoe levert geen fluit op (maakt alleen de kans op fouten groter). Zonde van de tijd als beginnend programmeur.
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 noemenPeterPan schreef:Wat is er op tegen dat ik de variabele waarin iemands leeftijd (tussen 0 en 120) als volgt declareer:
long leeftijd;
Onzin. Als het bijvoorbeeld om een lijst vectorcoördinaten gaat die naar je videokaart gepompt moet worden wil je juist geen doubles gebruiken.Met long zit je aan de veilige kant. Of wordt het programma daardoor traag?
Met float is het nog erger(lijker). Altijd double 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.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.
Tuurlijk wel, iedere fatsoenlijke compiler geeft een waarschuwing bijPeterPan schreef:Nadelen van int en float:
int: De compiler waarschuwt niet als de grenzen overschreden worden. Ga dan maar eens zoeken.
Code: Selecteer alles
int x = 100000000000;
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.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.
Een vreemde dwarsstraat. Als ik data copieer uit een bestand kan ik de data gewoon opslaan als long. Geen enkel probleem.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
Heb je het nog steeds over de beginnende programmeur?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.
Overschrijding treedt doorgaans op in runtime. Na de 10.000-ste stap in de binnenste loop (om maar een zijstraat te noemen).Tuurlijk wel, iedere fatsoenlijke compiler geeft een waarschuwing bij(als het een 32bits programma betreft tenminste).Code: Selecteer alles
int x = 100000000000;
En anders is het puur een tekortkoming van de compiler, en heeft niets te maken met de taal of het type int.
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.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.
Dit leert mij dat ik dus zeker C++ moet lerenRogier 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
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.
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.PeterPan schreef:int leeftijd; //de leeftijd van de persoon
float jaarsalaris; // het jaarsalaris van de persoon
Met long zit je aan de veilige kant. Of wordt het programma daardoor traag?
Met float is het nog erger(lijker). Altijd double gebruiken.
Waarom? Persoonlijk sta ik nogal twijfelachtig tegenover programmeertalen waar je niet zo maar eventjes een (bijvoorkeur interactieve, single-pass) compiler voor kunt schrijven.Persoonlijk sta ik nogal twijfelachtig tegenover programmeertalen waarvoor iedereen zomaar eventjes een compiler van kan maken.