Plaats een reactie

Je mail wordt niet openbaar getoond. Het wordt enkel gebruik voor contact of notificatie vanuit het beheer.

🗨️ Wat vind jij? Stel direct je vraag of geef je mening – zonder registratie. Je reactie zet het topic weer bovenaan bij 'Laatste posts' en trekt snel nieuwe reacties aan🔥. Mocht je als vaste bezoeker willen reageren, dan kun je je ook registreren.

Bevestig dat je geen robot bent door de volgende vragen te beantwoorden.

Noor heeft 10 knikkers. Ze verliest er 4 in het gras. Hoeveel heeft ze er nog?

Antwoord: (vul een getal in)

Er zitten 5 vogels op een hek. Twee vliegen weg. Hoeveel blijven er zitten?

Antwoord: (vul een getal in)

Weergave uitklappen Voorafgaande berichten: Beginselen van programmeren

Re: Beginselen van programmeren

door mo » do 08 nov 2007, 12:05

Het probleem is reeds opgelost.

Re: Beginselen van programmeren

door mo » ma 05 nov 2007, 00:58

Weet iemand hoe ge een matrix kunt opslaan (met als elementen characters), en ge die dan kunt gebruiken om veranderingen aan te brengen. Dus alles blijft hetzelfde in die matrix behalve wa ge wil veranderen. En men moet de matrix bij elke stap tonen.

U doet me een groot plezier als u me kan helpen !

bedankt alvast

ps: die matrix maak ik een klasse, om daarmee te kunnen werken in mijn 'main'klasse etc, als ik meer uitleg moet geven of onduidelijk ben zeg het maar

Re: Beginselen van programmeren

door Schwartz » zo 04 nov 2007, 00:00

Garbage collection is wel fijn maar dan moet je dat wel opgeven met de volgende voorwaarden:

aktie toestaan

maximale tijd dat men deze aktie mag toepassen.

Het is erg vervelend om een garbage collection te hebben die te veel tijd duurt bij een spel waarbij men zit te schieten.

Stop plots het manneke om na een tijdje weer door te gaan.

ook irrirant als je zit te typem.

Ik heb liever een goede geheugencontroller die int64 af kan handelen en virtueel adressing kan toepassen.

Bij een geheugentekort kan deze geheugencontroller gewoon overal en alom de stukjes bijeen zetten en een hoger adres teruggeven dan je geheugen werkelijk is.

Ook zou men aan een geheugensectie moeten kunnen vertellen dat het niet zo belangrijk geheugen is wat op de harddisk gezet kan worden.

Een muziekcompositie behoeft men niet in het geheugen te hebben bij een tekort ervan.

Wel de software die een game bestuurt.

Re: Beginselen van programmeren

door qrnlk » za 03 nov 2007, 18:05

Nee die conclusie mag je niet trekken. ;)

Wellicht was mijn voorbeeld iets minder handig gekozen, call/cc was waarschijnlijk beter geweest? Nevermind hoe dan ook.

Javascript is btw een zeer mooie programmeertaal met een hoop vrij unieke eigenschappen. Zoals bijvoorbeeld OO zonder classes? Alleen Self heeft iets vergelijkbaar.

Blijft slechts over dat jij het blijkbaar acceptabel vind dat bijvoorbeeld Java met opzet beperkter is gemaakt dan strict noodzakelijk zou zijn geweest en dat ik een andere mening ben toegedaan. Holy wars are made of this... :D

maar niet deze keer :D

(Je hebt gelijk dat ik mijn manier van communiceren niet echt goed werkt op een forum. Mijn verontschuldiging.)

Re: Beginselen van programmeren

door EvilBro » za 03 nov 2007, 17:28

GC is geen bescherming, het automatiseren.
Nee, het is beschermen. GC wordt gedaan om o.a. memory-leaks te voorkomen. Veel programmeurs kunnen namelijk niet de discipline opbrengen om zelf netjes met geheugen om te gaan.
Wat ik bedoeld is misplaatst beschermen
Het probleem is dat je een heel specifiek idee hebt van 'misplaatst'. 'final' past bij java en is binnen die context volledig logisch. Als het niet is wat jij wilt dat het is, gebruik dan geen java. Dit is echter niet een zwakte van java, net zoals het geen zwakte is van een hamer dat je er geen schroeven mee kan uitdraaien.
(CPS was maar een voorbeeld.
Ja, daar ben je goed in... in 'maar voorbeelden'. Elke keer als ik je vraag om te concretiseren dan grijp je naar deze uitspraak.
Als je wilt weten wanneer je CPS gebruikt is moet je Scheme leren.
Ten eerste is dat niet wat ik vroeg (ik vroeg waarom je CPS in java wilde) en ten tweede lijkt me Scheme leren overbodig (CPS zou je zelfs in javascript kunnen doen als je echt zou willen). CPS is bij functionele talen vooral nodig om ervoor te zorgen dat ze nog enigzins efficient kunnen zijn (vooral als de taal lazy is, anders is je stack zo op...) met als trade-off dat de boel een stuk onleesbaarder wordt. Deze efficientie wordt voornamelijk veroorzaakt doordat de compiler het CPS formaat kan optimaliseren (of doordat de interpreter gedwongen wordt te evalueren). CPS zou niet nodig zijn als compilers 'slimmer' zouden zijn...

Sommige compilers zijn dit kennelijk ook. Ik heb voor de gein even twee keer hetzelfde programma geschreven in Haskell (bepaal de som van de getallen 1 t/m n), een met tail recursion en een zonder. Die zonder heeft een te kleine stack voor n = 1000000, die met niet. Echter als ik bij het compileren de optimalisatie flag meegeef dan worden beide omgezet naar ongeveer dezelfde code. Kennelijk is in dit geval de compiler dus 'slim' genoeg (en is de moeite van CPS dus voor niets).
Om het te begrijpen moet je er mee gewerkt hebben.)
Mag ik dan daaruit de conclusie trekken dat je er niet mee gewerkt hebt? ;)

Re: Beginselen van programmeren

door jhnbk » za 03 nov 2007, 13:47

wat is nu juist het voordeel van lisp? Ik vindt het namelijk nogal omslachtig om mee te werken. (ik ben dan ook na de basis van deze taal gestopt)

Re: Beginselen van programmeren

door qrnlk » za 03 nov 2007, 13:43

GC is geen bescherming, het automatiseren. Als je denkt dat ik dat bedoel met "beschermen" dan heb je mij niet begrepen. Wat ik bedoeld is misplaatst beschermen: de programmeur als kind behandelen, dingen die normaal mogelijk zijn met opzet onmogelijk te maken omdat men denkt dat de programmeur er niet mee kan omgaan. Helaas betekend dit dat de programmeurs die er wel mee weten om te gaan nodeloos worden beperkt terwijl de programmeurs die er daadwerkelijk niet mee om kunnen gaan nooit de kans krijgen om het te leren.

Een van de ontwerpers van Java merkte overigens eens het volgende op:

"And you're right: we were not out to win over the Lisp programmers;

we were after the C++ programmers. We managed to drag a lot of them

about halfway to Lisp." -- Guy Steele

(CPS was maar een voorbeeld. Als je wilt weten wanneer je CPS gebruikt is moet je Scheme leren. Het is onmogelijk om iets (op een forum) uit te leggen als mensen de concepten niet begrijpen, begrippen zoals continuations en call/cc bijvoorbeeld. Om het te begrijpen moet je er mee gewerkt hebben.)

Re: Beginselen van programmeren

door EvilBro » za 03 nov 2007, 13:13

Als je de toekomst van programmeer talen wilt weten kun je het beste kijken naar lisp-achtige talen.
Wat een onzin. Als je de toekomst van programmeertalen wilt weten dan moet je alle programmeertalen in het oog houden, alsmede de techniek waarvoor deze programmeertalen er zijn. Hetgeen als 'goed' wordt ervaren in de ene taal komt vanzelf terug in andere (nieuwere) talen. Natuurlijk zijn de meningen over wat 'goed' is verdeeld (vandaar dat er niet maar 1 programmeertaal is). Jij bent overduidelijk van mening dat Lisp het summum is. Dit verstoord echter je realiteitszin nogal.

Een voorbeeld hiervan is je standpunt wat betrefd garbage collection. Je vindt het aan de ene kant een enorm probleem als de programmeur 'beschermd' wordt, maar vervolgens ben je wel lyrisch over garbage collection (waarbij de programmeur 'beschermd' wordt tegen bepaalde zaken die mis kunnen gaan met geheugen allocatie). Niet echt consequent...

Je hebt overigens nog steeds niet uit de doeken gedaan waarom je CPS in java zou willen...

Re: Beginselen van programmeren

door qrnlk » za 03 nov 2007, 12:01

We hebben het wel over voor en nadelen hier, maar het grappige is dat de meeste programmeurs features die niet voorkomen in hun fav. programmeertaal niet eens opmerken. Door dat men "denkt" in C of Java, komt het niet eens in hun op dat er programmeer technieken zijn voorbij aan C of Java...

Pas later, heel geleidelijk, sijpelen deze dingen door in andere talen.

C had bijvoorbeeld geen garbage collection, Lisp vanaf het begin wel. Pas in de jaren negentig sijpelde dit door in kreeg Java het. Objective C heeft het nog maar net ontvangen. Merk echter op dat dit radicaal de semantiek van je taal veranderd en de manier waarop je er mee omgaat.

Soms heeft het gewoon tijd nodig.

Als je de toekomst van programmeer talen wilt weten kun je het beste kijken naar lisp-achtige talen. Met de tijd komen al die features (meestal minder krachtig gemaakt om de programmeur "te beschermen") in C-achtige talen terecht.

Re: Beginselen van programmeren

door jhnbk » za 03 nov 2007, 11:47

Ik snap niet eens wat van cps de bedoeling is?

snelheid, mooi ogende code?

Re: Beginselen van programmeren

door EvilBro » za 03 nov 2007, 11:17

Probeer dat maar een in Java.
Waarom zou ik?

Re: Beginselen van programmeren

door qrnlk » za 03 nov 2007, 10:53

Over beginselen van programmeren gesproken: CPS anyone? :D Probeer dat maar een in Java.

Re: Beginselen van programmeren

door Schwartz » vr 02 nov 2007, 23:11

Ik had vandaag er een te pakken:

8 foutmeldingen omdat ik een begin was vergeten te typen.

Hij gaf niet aan dat er 1 BEGIN commando missend was in de routine.

5 extra commandos erbij leren op rond de 200 kan echt geen hersenbreker zijn.

Bij een foutje geeft de compiler dan juist precies aan wat er missend is of juist te veel.

Basic was vroeger gemakkelijk te leren omdat die taal juist for next had en while wend en repeat until.

trouwens als alles op end eindigt dan hadden we ook repeat ....end moeten hebben.

En dan kon je met if voorwaarde then begin break;end; weer de lus kunnen verlaten...

Maar dat is onhandig en daarom hebben we until voorwarde; als einde markering.

Voor beginnende gebruikers is het toch eerst noodzakelijk om goed met if en then begin endl enzo te leren nesten.

En dan de else toepassen.

Ik gebruik nooit else maar alleen end else begin.

Een programmeertaal is er om problemen op te lossen, niet om mooi weer te spelen.

Ik heb vandaag mijn nieuwe compiler aan de timer aangesloten zodat elke file indien gewenst per seconde gecompileerd kan worden.

lekker traag maar als het te lang duurt heb ik een schakelaartje gemaakt dat de zaak dan weer vooruit helpt.

Ik heb hiervoor ndoig gehad:

een var in tprocedure type.

4 tal variabelen

een timer aansluiting

en wat if testen om de verschillende methoden te verwerken.

en een repat until lus omdat de zaak ook 10 files per keer zou kunnen afwerken.

je kunt met weinig commando veel bereiken....

Re: Beginselen van programmeren

door EvilBro » vr 02 nov 2007, 10:40

Daarom moet een compiler systeem op zulke fouten van de programmeur alert reageren.
Alle compilers zullen dit soort fouten detecteren. IDE's zijn er voor om dit soort fouten in een vroeg stadium om zeep te helpen.
Dat kan met meer commandos voor end.
Dat kan, maar dat is een uiterst vermoeiende oplossing voor iets dat veel makkelijker opgelost kan worden.
Ook voor de beginnende gebruiker is dit systeem beter omdat deze gebruikers vergeten een NEXT te typen op een for.
Voor beginnende gebruikers is dit juist een ramp. Ze moeten bij elke 'opening' een andere 'sluiting' leren. Hopeloos vermoeiend. Veel lastiger dan de regel "alles wat je 'opent met (' moet je sluiten met ')'". Zeker als je een IDE gebruikt die aan highlighting doet...

Re: Beginselen van programmeren

door Schwartz » do 01 nov 2007, 23:33

In pascal eindigt een hoop zaken op end;.

In lisp is dat dan een ) teken.

Leuk voor de compiler...

maar voor de programmeur die fouten maakt bij het intypen en zit te programmeren is het een ramp.

Daarom moet een compiler systeem op zulke fouten van de programmeur alert reageren.

Dat kan met meer commandos voor end.

Bij while hoort wend en bij for next.

Ik heb ook if endif, when endwhen react en endreact zodat men meerdere if structuren heb.

De compiler kan dan een missende endreact vermelden en de structuur bewaken tussen endif, endreact etc.

De compiler verwerkt minimaal 100000 commandos per seconde waardoor hij beter kan werken als elke programmeur.

Ook voor de beginnende gebruiker is dit systeem beter omdat deze gebruikers vergeten een NEXT te typen op een for.

In pascal kan men achter then maar 1 commando typen: komt zo weinig voor dat men altijd then begin nodig heeft.

Daarom is het onzinnig om een then enkelvoudig toe te passen.

Voor de logica is het leuk maar door then begin bekomt men moeie vingers door constant die begin te moeten typen.

Die 1 commando filosofie stamt nog uit de oertijd waarmen met systeemkaarten zat te werken.....

Wel leuk eigenlijk, je pakte de kaartenbak en pakte de data bijeen en maakte er een stapel van.

En hup de kaartlezer in die dan kaart voor kaart las.

Oh mijn god voor diegene die zo'n stapel uit zijn handen liet vallen.

Heel het programma lag dan ongesorteerd over de vloer.

Mijn eerste compiuter waarop ik wat deed was een Philips met 3 werkstations waarvan 1 met monitor en 2 met printer en toetsenbord.

Dus je moet werken zonder monitor....

Dat was in 1976.

Naderhand heb ik wat gedaan op een TANDY Model 4.

Maar liefst 80 tekenstjes op een regel en 24 regel vertikaal.

Je had 64000 byte geheugen waarvan maar liefst 1800 op werd gesoupeerd door dat videogeheugen.

Voor de basic had men 16k nodig..

Voor mijn tekstverwerker had ik hetzelfde ontwerp als nu de indeling van XP.

Een balk boven, een balk beneden waarbij deze in secties was opgedeelt.

Voor de tekst had je maar 14 regels ofzo want anders kon men niet snel genoeg scrollen.