\ 

Nederlog

 

21 December 2009

 

Gently going forth-ward (Dutch)



Zoals ik op 17 december vermeldde heb ik weer een nieuw speeltje gevonden, namelijk de programmeer-omgeving Forth (link naar info in deze tekst).

Het is allemaal zowel zeer fraai als zeer bijzonder, en bij voldoende gezondheid hoop ik er de komende tijd redelijk wat plezier mee te hebben, zodat ik misschien wat minder of wat korter stukjes voor Nederlog zal schrijven de rest van het jaar (dat ik hoop en verwacht bijna alleen binnenshuis door te brengen), al hangt wat ik doe en schrijf ook van mijn stemming en andere zaken af.

U moet dus maar zien - en mocht ik er tot het eind van het jaar even niet zijn dan weet u hiermee waarschijnlijk waarom.

De rest van dit stukje gaat vooral over programmeren, en een klein beetje over mijzelf, dus als u niet in programmeren geinteresseerd ben (en ik heb dergelijke regelmatige lezers) dan kunt u nu aan het kerstbroden maken, of wat u ook mag doen in deze tijd. Voor de paar anderen vervolg ik, naar ik hoop enigermate leerzaam.

Wat Forth betreft:

Ik vind het heel leuk en interessant, en mij doen dit soort dingen goed (o.a. omdat ik dankzij dit soort dingen zie dat er werkelijk intelligente andere mensen zijn), maar als ik Knuth mag geloven - n van de programmeer-genien: zie de Engelse Wikipedia - dan is hooguit 1 op de 50 mensen geinteresseerd in programmeren.

Volgens mij is Knuth nog wat optimistisch - en die ene op de vijftig zal z'n programmeerbezigheden dan veel waarschijnlijker verrichten in n van een klein handjevol zogeheten High Level Languages (HLLs) als C++, Java of Delphi.

Daar is niets mis mee, zoals de Neerlandse parlementaire frase luidt, behalve dat het de programmeurs in die (en dergelijke) talen weinig over computers zal leren, maar wellicht veel over hoe je een computer zo ver krijgt iets te doen met hulp van zo'n HLL.

Opnieuw is ook daar niets mis mee, voor wie vooral in geprogrammeerde oplossingen geinteresseerd is, en het heeft het bijkomend voordeel - zeker met iets als Delphi - dat dergelijke oplossingen (voor die ene op de vijftig dan die smaak heeft in dergelijke activiteiten) tamelijk snel en elegant geproduceerd kunnen worden (voor wie zo'n taal eenmaal onder de knien heeft).

Alleen zal het de programmeur niet zoveel over computers leren, en hoe die werken, en wel omdat HLL juist dienen om dat allemaal niet te hoeven weten en toch iets te kunnen programmeren, ja zelfs ingewikkelde dingen te programmeren.

Ikzelf ben echter heel sterk van de school dat ik wil begrijpen waarom dingen zijn als ze zijn en doen zoals ze doen, zodat ik programmatisch in meer geinteresseerd ben dan wat HLLs te bieden hebben.

Er zijn dan ongeveer drie mogelijkheden: C, Assembly en Forth, en ik zeg daar nu kort wat over.

Ik ben al sinds 1989 geen liefhebber van C, omdat ik de taal lelijk vind en een hekel aan haken heb - ik bedoel dus: "{", "(", ""), "}" e.d. - die heel goed zijn voor compilers, maar die mij irriteren als de code er vol mee staat.

Het is echter waar dat de IDEs sinds die tijd zeer verbeterd zijn en een gratis C die goed is geimplementeerd is Pelles C, van een slimme Zweed, dat u desgewenst kunt vinden door te googelen.

Tenzij u toevallig wel van veel haken en veel puzzelen houdt is C een stuk verteerbaarder dan C++, Visual C etc. maar dit is alleen een terzijde.

Vervolgens assembly. Ik heb daar de afgelopen 2 jaar het een en ander aan gedaan (voorzover mogelijk) en vond het zeer leerzaam, maar niet makkelijk, omdat er voor beginners nauwelijks goede programmeer-omgevingen voor blijken te zijn en omdat wie iets meer wil schrijven dan kleine nogal triviale programmaas nogal wat kennis van de Windows API nodig heeft, dat iets is dat ook al verre van makkelijk is, ook al omdat Microsoft dit slecht, niet of nauwelijks wenst te documenteren (tenzij wellicht tegen betaling).

Tenslotte Forth, dat ergens tussen C en Assembly zweeft, maar een geheel eigen en originele aanpak heeft, anders dan alle computertalen die ik zag - waarbij komt dat het aanzienlijk meer is dan een computertaal.

Ik heb er nu een dag of 4 naar kunnen kijken en vind het zeer interessant, fraai en origineel, maar het is waarschijnlijk waar dat dit typisch een taal voor geeks (hoogbegaafden) is.

Maar het biedt grote voordelen, als het kunnen beheersen van de hele computer (in beginsel), want met Forth kan alles, inclusief systeem-programmeren, en het kan ook alles bevatten: compiler, interpreter, editor, debugger, assembler, linker - alles geschreven in Forth, en toegankelijk en te wijzigen en uit te breiden naar believen door de Forth-programmeur.

Niet alleen dat: Het is een taal of beter: een programmeer-omgeving die vanaf het begin open source en gratis was, omdat de bedenker ervan, Chuck Moore, dat zo wilde, en er zijn dan ook zeer veel implementaties van, want Forth bestaat ook al bijna 40 jaar.

Wat meer over Forths hieronder, maar eerst een opmerking om een eventueel misverstand te voorkomen: Het is weliswaar een taal + omgeving die weinig bekend is, en afwijkt van alle andere programmeer talen + omgevingen, maar ook een die vooral door techneuten en echte betas, zoals bij de Nasa en onder astronomen, behoorlijk vaak en slim gebruikt is.

Er zijn dus een aantal indrukwekkende toepassingen in geschreven, en het is niet iets dat triviaal, oppervlakkig, of alleen voor speeltjes en/of academische verkenningen goed is - integendeel: Chuck Moore wilde een taal + omgeving die kracht en eenvoud combineerde, en op iedere computer kon draaien, en ontwikkelde Forth met dat doel, en zeer nauw gelieerd met de praktijk.

Dan over Forth-implementaties. Ik herhaal en breid uit wat ik op 17 december schreef:

Voor die paar zeldzame lezers die meer willen weten over Forth (Wikipedia-link) zie deze leerzame links

Er is heel wat meer bruikbaars, maar ik kan u verzekeren dat Win32Forth bijzonder goed verzorgd is, net als Starting Forth (html) en Thinking Forth (pdf), allebei van Leo Brodie.

Ik vermoed - ik heb ondertussen een stuk of vier andere Forth-implementations kort bezichtigd - dat Win32Forth op het moment verreweg de beste gratis Forth is, zeker voor beginners, en het is een feit dat het zeer goed verzorgd is, en een uitstekend IDE heeft, inclusief editing van Forth-source in html en directe hulp voor alle key-words en alle WinAPI-termen.

Die directe hulp - highlight klik: hulp is daar! - is bijzonder aangenaam en scheelt zeer veel tijd en moeite, en het geheel van Win32Forth is nogal duidelijk een met liefde en zorg gemaakt geek-produkt.

Kortom... ik kom de Kerst wel door, en als u een echte beta bent dan moet u eens naar Forth kijken, vooral als u wilt weten hoe programmeer-code nu echt samenhangt met wat de processor in de CPU doet en kan (dat u verder alleen met assembly kunt uitvinden).

Het is in ieder geval leuk en leerzaam, en wat ik boven noemde en linkte in Forth-verband is heel goed verzorgd, terwijl de bijzonder goede Win32Forth implementatie heel recent is.

Leuk, vooral voor liefhebbers van algebra! (*)


P.S. -1: Maar als gezegd: Het is zeer waarschijnlijk typisch voor hoogbegaafde betas die iets met programmeren hebben en niet bang zijn iets nieuws te leren.

O, en voor wie redelijk wat van wiskundige logica weet, inclusief Combinatory Logic of Quine's "Variables Explained Away" (dat u in zijn "Selected Logic Papers" vindt): En van de interessante punten van Forth (die het begrip ervan ook bemoeilijkt) is dat het eigenlijk zonder variabelen werkt, althans zoals gebruikt in andere talen, en wel omdat Forth de data direct van de stack haalt.

P.S. -2: Ik heb het eerste stuk van gisteren - Metrofraude: Alweer gelijk - docu 1: Keymessage - iets verbeterd en uitgebreid, en het tweede stuk van gisteren - Metrofraude: Alweer gelijk - docu 2: Groepsdenken - eindelijk aan de index toegevoegd. (Forth came inbetween, for I rather think about mathematical things than Dutch things.)

(*) Dat speelt namelijk ook een rol, ook met programmeren: Die ene op de 50 die Knuth noemde, die programmeren wel leuk kunnen vinden, zijn ook - volgens mij - typisch mensen die iets met algebra hebben.

Maarten Maartensz

        home - index - top - mail