AaroN schreef op donderdag 18 december 2008 @ 13:57:
Programmeren is het toepassen van al je kennis die je hebt op het gebied van computersystemen, algoritmes, programmeertechnieken, programmeertalen en wiskunde (misschien nog andere gebieden als psychologie voor user interfaces?). Je kunt mijns inziens niet leren programmeren door een programmeertaal als Java (of enig andere taal) te leren wanneer kennis van een van bovenstaande gebieden niet aanwezig is.
Ik zie programmeren als een functionerende applicatie ontwikkelen, en ben het dan ook niet met jou eens.
Als iemand een programma wil hebben wat een mooie 7segmenten output (even voor microcontrollers op een wekker, embedded systems, meer mijn richting), dan kan ik dat ontwikkelen met
if(x=0) { seg_A = true; seg_B = true; }
if(x=1) { seg_A = false; seg_B = true; }
Ik kan dat echter ook met een switch/case doen, veel netter. En als ik echt wil klooien met algoritmes, dan kan ik dat zelfs doen met een karnaugh-diagram en vervolgens
seg_B = !(x&0x02)
Dat laatste vind ik een algoritme, maximale performance eruit halen. Maar is dat altijd nodig? Nee. Iedereen die een ledje kan laten knipperen (electronica's Hello World), kan het goed genoeg maken. Bitfucken, switch/case of desnoods een if/else, ze krijgen het werkend.
Voor programmeertechnieken geld hetzelfde. Ik vind bitfucken erg leuk, maar je *hoeft* het niet te gebruiken. Met if, while en de juiste library functies aanroepen kun je het meeste wel implementeren. Tuurlijk is het handig om classes te gebruiken, overerving e.d. te gebruiken, maar niet altijd, en zonder dat kun je ook prima programmeren. Afhankelijk van je applicatie is dat een marteling, maar dat is nu even niet het punt
Computersystemen? Vooruit, maar daarvoor heb je niet veel meer dan basiskennis nodig. Als je iets wil opslaan, dan kun je dat in een file doen. Nouja, je moet dan weten wat een file is. Tegenwoordig weten teveel mensen niet eens meer wat een pointer is en hoe ze die kunnen gebruiken. Ja, je moet er wel wat van weten, nee, niet alles. Basiskennis is voldoende.
Programmeertalen? Wat bedoel je daar precies mee? Ik moet kennis hebben van andere programmeertalen voordat ik iets ontwikkel? Je hebt daarin gedeeltelijk gelijk, omdat voor sommige applicaties het makkelijker is om een specifieke programmeertaal te gebruiken. Maar dat maakt het niet noodzakelijk om een andere programmeertaal te kennen. Ikzelf heb pas sinds kort fatsoenlijk met VB leren programmeren, maar met C/C++ kan ik, ongeacht de (on)gebruiksvriendelijkheid van de compiler, toch nog sneller programmeren. Maar daar weet ik van dat het aan mij ligt
Wiskunde? Ik nodig je graag uit om bij sommige HBO-opleidingen te komen kijken. Wiskunde wordt, tot mijn grote ergenis overigens, niet standaard meer op fatsoenlijk niveau gegeven op de opleiding. Het heeft nadelen als je met beeldvorming werkt (2d, 3d, audio, externe inputs bij embedded, etc). Maar als je een CMS wil opzetten boeit het totaal niks. Niet veel meer dan if while in ieder geval.
Ik ben het er mee eens dat kennis van de punten die je noemt weldegelijk erg handig is, maar het is geen harde eis zoals jij aangeeft. Zonder dat kun je ook programmeren. Goed? Nouja, je kunt een functionerend programma opzetten binnen reeele tijd. Als ik kijk naar de lichting die van mijn opleiding & jaar af gaan komen, kun je daar al best tevreden mee zijn
Mijn kritieke mening is, onder andere over Java, dat het teveel library's heeft die de leercurve van het programmeren wegnemen. PHP is in dat opzicht, wat mij betreft, nog een stapje erger: je leert er geen algoritmes (meer) mee. Ik vind dat zelf een van de interessantere dingen aan programmeren. Niet hard noodzakelijk, maar soms is het toch verdomd handig als je library je in de steek laat.
En zoals
roy-t in "Is java de grootste vloek in de informat..." aangeeft: Memory leak is een bug die je moet fixen, niet afvangen. Voor mijn gevoel (ik programmeer niet in Java), leren mensen niet meer hoe noodzakelijk het is om naar geheugen te kijken.
In zo'n topic even voor de volledigheid, dit is puur zoals ik het ervaar. Ik heb net 5 jaar programmeerervaring op opleiding(en), maar geen echt interessante programmeerervaring buiten mijn huidige stage.