On Mon, 26 Jul 2004 10:37:10 -0500, John Bokma
Post by John BokmaPost by Boudewijn van IngenIk vind namelijk dat iedereen die zichzelf "programmeur" wil noemen
kennis moet hebben van de elektronische kant van de zaak. En dus ook
kennis moet hebben van assembly en hoe die processor(en) je code
verwerken.
Lolbroek!
Ik maakte niet echt een grapje, hoor.
Post by John BokmaPost by Boudewijn van IngenAls je als programmeur geen idee hebt wat je instructies *doen* op
hardware-niveau, ben je per definitie een slechte programmeur.
Onzin natuurlijk. Als je met embedded software werkt, ok.
Het vervelende is, dat je *ALTIJD* met embedded software werkt. Ook
als jouw applicatie alleen maar functies aanroept in een BIOS, zoals
vroeger in DOS. Of zoals tegenwoordig, als jouw Windows[tm] applicatie
functies in het OS aanroept, waardoor weer functies in drivers worden
aangeroepen die nog steeds dezelfde (soort) BIOS aanroepen.
Het is natuurlijk heel makkelijk om die verantwoordelijkheid af te
schuiven. Maar volkomen onterecht, mijns insziens...
Ik ben altijd nieuwsgierig geweest. En ik wilde dan ook altijd zoveel
mogelijk weten van de interne werking van die BIOS en Windows[tm]. En
ik heb dat nog steeds. Want meestal is de documentatie die erbij
geleverd wordt ronduit klote. Dan moet er dus het een en ander
uitgezocht worden. Doe ik dat niet (of niet goed) dan komt de klant
wel naar *mij* toe met die beroemde opmerking: "Hij doet het niet!".
Dus zoek ik dat uit, en zorg ik ervoor dat ik dat gezeur niet krijg.
Zo moeilijk is dat namelijk helemaal niet.
Post by John BokmaMaar als je
software maakt wat op een VM draait (Java), of extreem op het OS hangt,
wat heeft het dan voor zin als je de instructieset van de processor kan
dromen?
Ik denk dat het in dat geval ook niet zozeer zaaks is om de
instructieset van één of meerdere processors te kunnen "dromen", maar
wel essentieel dat je in grote lijnen (beter nog, in detail) weet hoe
die "VM" in elkaar zit. En daarvoor zul je toch op zijn minst weer een
praktisch basis-begrip moeten hebben over de werking van op zijn minst
één processor.
Post by John BokmaIk ben daar na mijn Archimedes mee gestopt. Ben ik ineens een
slechte programmeur? En ja, ik stam ook uit de tijd van computers zelf
in elkaar solderen (heb o.a. een groot deel van de hardware in mijn
Archimedes vervangen :-D)
Jij hebt die basis-kennis dus in huis. Als ik jou voorzie van de
juiste Intel boeken, een soldeerbout, en een zee van tijd, krijg jij
het dus vast ook wel voorelkaar om een rudimentaire P4 processor in
elkaar te solderen (die een heel woonhuis beslaat).
Iemand met die (potentiele) kennis begrijpt over het algemeen wel wat
zijn (of haar) code doet met de inhoud van een (geheugen)chip.
Over dat soort mensen had ik het dus juist niet.
Post by John BokmaPost by Boudewijn van IngenEn er zijn tegenwoordig heel veel van die amateurs, die wel in een of
ander scripttaaltje het een en ander voor elkaar kunnen krijgen (er
"scripttaaltje", eh, je hoort toch niet tot die groep mafketels die
menen dat je alleen een programmeur bent als je taal niet
geinterpreteerd wordt?
Mijn probleem met "interpreters" is niet meer hetzelfde als het
vroeger was.
Vroeger was het probleem met de meeste geinterpreteerde (dialecten
van) programmeertalen dat ze traag waren, in vergelijking met code die
keihard direct gecompileerd werd naar machinecode.
Dat argument wordt nu langzamerhand "uit beeld gesneeuwd" door het
feit dat de hardware die we nu hebben zo snel is, en de
functionaliteit die we van de programmaas verwachten zo gecompliceerd,
dat in de praktijk dat snelheidsverschil nauwelijks meer opvalt.
Het oude argument dat "geinterpreteerde" code zo "portable" is lijkt
het dus toch te gaan winnen. Code moet overal gaan draaien. Een
concept wat mijn gevoel van veiligheid volkomen wegneemt.
Want we hebben tegenwoordig niet alleen te maken met "programmaas" als
zodanig. Als het aan MS ligt, kan elk text-document, elk plaatje, en
alle andere denkbare vormen van informatie ook ergens weer een
"interpreter" aanspreken, die allerlei dingen doet op je systeem waar
je geen controle over hebt.
Drijfzand, lijkt mij.
Post by John BokmaPost by Boudewijn van Ingenzijn al virussen op die manier geschreven). Scriptkiddies.
Een virus schrijven kan zelfs via een GUI, klik, klak, heb ik begrepen.
Scripting en scriptkiddies heeft weinig met elkaar te maken.
Ik heb daar wel eens wat beter naar gekeken en het is nog niet zo
eenvoudig dat je met een gui en een paat klikken klaar bent, als je
een *echt* virus zou willen maken. (Je bent er met dat soort tools wel
van verzekerd dat je eigen computer met vierhonderd virussen besmet
is, natuurlijk.)
Maar er zijn tools te downloaden en tekstfiles met tips, waaruit
iemand met een minimale kennis van zaken (diezelfde kennis van
hardware en software waar ik het al de hele tijd over heb), zelf een
origineel virus zou kunnen destilleren. Iemand die dat goed doet, mag
zich dan ook wat mij betreft best als "programmeur" adverteren.
Toch vreemd dat het schrijven van een virus zelden op een CV
aangetroffen wordt. Want *iemand* moet toch die virussen bedacht
hebben, waar die tips vandaan komen???
Maar in werkelijkheid zijn de meeste (90%, misschien meer) virussen
slechts variaties op bestaande virussen. Dat zijn dus jongetjes die
zelf niet in staat zijn om te begrijpen hoe het virus werkt, maar wel
de "signature" kunnen aanpassen. Vaak is daar niet meer voor nodig dan
een hex-editor.
De mensen die "programmeren" door alleen maar andermans code "aan te
passen" zijn script-kiddies. (Dat is mijn definitie, althans.)
Post by John BokmaPost by Boudewijn van IngenMaar het idee dat iemand zichzelf in de "reclame" gooit als
"VB-programmeur" vertelt mij genoeg.
Een dergelijke minachting voor jezelf mag je nooit hebben. Tenzij je
erg, heel erg dom bent.
Onzin natuurlijk. Er is gewoon vraag naar VB programmeurs. Ik heb er
zelf een tijd over gedacht om het te gaan leren, juist omdat er vraag
naar was. Als ondernemer kan je je zelden de luxe veroorloven om op
alles te gaan neerkijken waar klanten om schreeuwen. Anders had ik jaren
geleden wel voor RISC OS blijven programmeren, of IRIX.
VB *leren*? Hoezo?
Ik ben ooit begonnen (op mijn twaalfde of dertiende levensjaar of zo)
met een ZX-80. Die kon in eerste instantie niets anders als ZX-BASIC.
Ik heb sindsdien zo'n beetje alle programmeertalen geleerd die er
bestaan en bestonden hebben (maar gelukkig alleen die, die algemeen
gebruikt werden, er zijn er meerdere duizenden). Maar iemand die
ZX-BASIC kent, heeft maximaal een dag of twee nodig om VB te "leren".
Als iemand VB moet gaan *leren* lijkt hij mij helemaal geen geschikt
materiaal voor een beroep als "programmeur".
Post by John BokmaPost by Boudewijn van IngenAls je "VB" kent ben je geen ptogrammeur. Not by a long shot.
Omdat? Klinkt net als: als je alleen met waterverf kan schilderen ben je
geen artiest. Donkey dung natuurlijk.
Als die artiest niets weet over olieverf, mag hij alleen maar
meepraten over zijn eigen ervaringen met waterverf.
Een wannabee "programmeur" die alleen maar kan meepraten over VB is
dus geen programmeur, maar een "VB-programmeur". Een amateur. Een
script-kiddie.
Post by John BokmaPost by Boudewijn van IngenNoem dan op zijn minst nog even achteloos tien andere programmeertalen
die je kent.
Ik ken aardig wat meer dan tien andere programmertalen, maar ik kan er
meestal maar 1 of 2 bijhouden. Wat heb je aan iemand die 4 jaar terug
voor het laatst C++ heeft geprogrammeerd? Of 10 jaar geleden LISP? Ik
probeer Perl en Java zo goed mogelijk bij te houden. Perl is een flink
stuk ouder dan Java, maar toch gebeurd daar nog veel in. Perl 6 zit er
aan te komen. Maak ik mij nog niet echt druk over, maar er staan nogal
wat veranderingen op stapel. Iemand die zegt, ik ken ook Perl, omdat ie
ooit eens 3 regels aangepast heeft in een CGI script (geschreven in Perl
4), tja, daar heb je dus niks aan.
Het gaat er niet om hoeveel parate kennis je hebt, het gaat erom hoe
snel je die boel (weer opnieuw) kan oppikken.
Als ik morgen een opdracht in (bijvoorbeeld) COBOL of Prolog zou
moeten doen, zou dat geen probleem zijn. Net zomin als het een
probleem is als ik een opdracht moet doen in een omgeving waarmee ik
nog nooit gewerkt heb.
Ik heb namelijk *niet* de beperking dat in een <vul hier je taal
in>-programmeur ben.
Post by John BokmaIkzelf zou voor de programmeur gaan die een taal van a tot z in de
vingers heeft.
Ik duidelijk niet. Ik heb liever iemand die de eisen van zowel de
hardwarekant als de software kant goed begrijpt. En dat zijn zelden
mensen die maar één programmeertaal kennen. Het moeten mensen zijn die
veel verstand hebben van de hardware (zowel de computers als de
netwerkinfrastructuur) als de software (niet alleen de source, maar
ook de interfaces, dus ook de menselijke kant) hebben. Die
programmeertaal is voor dergelijke mensen een eitje, echt.
Post by John BokmaIemand die C++ kan dromen lijkt mij een stuk waardevoller
dan iemand die meent: C, C#, C++, Java, Perl, Python, VB, Delphi, Lisp,
en Prolog te "kennen".
Leg mij dan maar eens de verschillen uit, (wat zijn de zwakke en
sterke punten van elk van die talen,) en waarom je in welke gevallen
elk van die talen zou willen gebruiken...
Post by John BokmaDie eerste zou ik sneller vertrouwen met een C#
project, dan die laatste, die meestal niet verder is gekomen dan de 1e 3
hoofdstukken van elke taal, *of* al een tijd er niks meer mee gedaan heeft.
Je hebt dan kennelijk al de eerste fout gemaakt. Als je al hebt
bepaald dat jouw project in één bepaalde taal geschreven moet worden,
heb je daarmee dus al een hele hoop mogelijkheden afgesneden. Het kan
zijn dat jij dacht dat je daar goede redenen voor had, maar het feit
dat je die keus maakt, betekent dat je jezelf al beperkt.
Meestal komt de keuze voor de programmeertaal pas in een vrij laat
stadium, als ik een project doe...
Tenzij ik iets moet doen voor een Pocket-PC (Pokke-PC, in de
volksmond) natuurlijk... ;-)
--
Groeten,
Boudewijn.