Advocaat van de duiVBel

 
14 september 2008

Wat maakt een programmeertaal tot een Goede Programmeertaal?

Als je bij een software-ontwikkelhuis zoals Sogyo werkt, word je – als je daar nog weinig kaas van had gegeten – eerst eens flink warmgestookt in Java en/of C#. Twee Goede Programmeertalen, met een belangrijke overeenkomst: ze draaien allebei op een virtuele machine (VM). Code in deze talen wordt niet direct gecompileerd naar enen en nullen maar naar een tussentaal, Java Bytecode dan wel MSIL (“Microsoft intermediate language”) die door de VM – de JVM resp. het .Net-platform – wordt uitgevoerd.

Het voordeel van deze constructie is dat er meerdere talen naar die tussentaal gecompileerd kunnen worden. Een programma dat op deze VM draait, kan dan de bibliotheken gebruiken van andere programma’s, ook als die in een andere taal geschreven zijn. Ook de standaardbibliotheek kan zo gedeeld worden tussen de verschillende talen.

Enige tijd geleden kreeg ik van mijn opdrachtgever de vraag of ik even wat kon sleutelen aan een van hun programma’s. Nooit de beroerdste zei ik dat ik dat wel wilde doen. Maar wat bleek: dit programma was niet geschreven in C#, maar in ‘die andere’ veelgebruikte .Net-taal: Visual Basic. En het bleek zelfs dat sommige van mijn collega’s nauwelijks iets anders programmeerden dan VB.Net.

Shock! Horror! Ik zit toch bij een serieuze ICT-afdeling?! Want laten we wel wezen: overal waar je komt wordt er toch wel een beetje op VB neergekeken. Het is een taaltje voor beginners, hoor je dan, en inderdaad is BASIC destijds precies met die bedoeling opgezet. En ook toen ik bij Sogyo eens vroeg waarom we eigenlijk zo weinig in VB programmeren was het antwoord ook iets in de trant van ‘Ja, dat doe je nou eenmaal eigenlijk niet.’ En terecht, dacht ik toen.

Maar toen ik eens verder nadacht had ik ineens toch wel moeite om te bedenken waarom dat zo zou zijn. Misschien dat lezers mij kunnen herinneren, maar ik had eigenlijk veel minder moeite met argumenten bedenken waarom VB.Net juist net zo geschikt (of in elk geval niet minder geschikt) is als andere talen:

  • VB.Net is object-georiënteerd. Object-oriëntatie is tegenwoordig een minimumvereiste om als ‘echte’ programmeertaal aangemerkt te worden. Maar het oorspronkelijke BASIC mag dat dan wel niet geweest zijn – inmiddels zijn we toch al een heel stuk verder. Klassen, overerving, encapsulatie, interfaces, het zit er allemaal in.
  • VB.Net compileert ook naar het .Net-platform, dus de onderliggende motor is dezelfde als die van pakweg C#
  • Ook VB.Net kent annotaties, gestructureerd commentaar (<summary>…</summary>, <returns>…</returns>) bij methoden e.d., events, delegates, enz. enz. enz.
  • Als je Microsoft-examen doet, mag je zelfs kiezen of je C# of VB.Net-code wil zien. De bijbehorende studiekits zijn tweetalig. MSDN heeft, als er voorbeeldcode in meerdere talen beschikbaar is, VB.Net prominent bovenaan staan, en op de rest van het internet vind je ook bijzonder veel VB.Net-(voorbeeld)code.
  • Je hoort soms het argument dat je in VB makkelijk spaghetticode kan schrijven, maar uit ervaring weet ik inmiddels dat je daar VB helemaal niet voor nodig hebt. Het kan net zo goed in, bijvoorbeeld, C#.

Nou zijn er natuurlijk wat kleine verschillen tussen wat C# kan en wat VB kan. Inline delegates bestaan bijvoorbeeld niet in VB, dat is soms lastig. Maar om een taal daarop af te rekenen? Dan zou Java al lang en breed bij het grof vuil moeten staan, terwijl dat toch als een Goede Programmeertaal wordt gezien.

Verder is VB vaak net even wat breedsprakiger. Maar is dat dan een argument om een taal af te keuren? Dan zouden we ook eens naar een taal als C++ moeten kijken, waar je veel meer dingen met het handje moet regelen, zoals geheugenmanagement. Dat maakt dat je ook meer, en veel minder business-relevante, code moet schrijven. Toch vindt men VB.Net niet superieur aan C++.

Nou is deze blogpost niet bedoeld om iedereen maar aan VB.Net te krijgen. Ikzelf schrijf toch ook nog altijd veel liever code in C#. Maar… waarom is dat nou eigenlijk? Wat maakt een programmeertaal dan wèl tot een Goede Programmeertaal? Dat vraag ik me weleens af.

Discussie!


Werken met ?
Kijk dan bij onze mogelijkheden voor zowel starters als ervaren engineers.


Categorieën: Development, .Net

Tags:


Reacties (5)

  • Ramon Stouten schreef:

    Dit is inderdaad een “eeuwige” strijd tussen de kampen.
    Ikzelf heb mijn eerste programma’s geschreven in (AutoCAD, MS Office) VBA.
    Via VBA ben ik in VB beland en later overgegaan naar VB.NET. Dit is, zoals Stefan Bookholt al eerder opmerkte, inderdaad een wereld van verschil.
    Er is mij ooit verteld, mocht je als VB adept naar VB.NET willen gaan, je misschien nog beter het Framework kan verkennen in C#. Dit om het jezelf te realiseren dat je daadwerkelijk wat anders aan het doen bent.

    Overigens zijn wij bij mijn huidige werkgever sinds een half jaar met nieuwe projecten overgestapt naar C#. Beweegredenen zijn o.a. geweest: serieuze help-docs zijn het meest in C#, eventuele nieuwe collega’s hebben veel vaker ervaring in C# etc.

    Een antwoord op wat een Goede Programmeertaal is weet ik niet goed. Volgens mij is een Goede Programmeertaal dat wat je goed ligt en waar je mee kunt realiseren wat je in je hoofd hebt.

    Geplaatst op 25 september 2008 om 23:06 Permalink

  • Chris de Kok schreef:

    Interessesantie kwestie inderdaad. Eén van de grootste open-source projecten: DotNetNuke, is in VB.NET geschreven. Hoewel uitbreidingen (modules) niet persé in VB hoeven.

    Ik vond een leuke site die (bijna) alle taalconstructies van C# en VB.NET naast elkaar legt:

    http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

    Leuk om die kleine syntax verschillen te zien. Zoals het ontbreken van een ++ operator en een extra WHEN clausule bij het afvangen van een exceptie in VB.

    Als ik hier naar kijk krijg ik wel de indruk dat VB structureel meer typwerk lijkt…

    Geplaatst op 17 september 2008 om 11:30 Permalink

  • MarcelDevG schreef:

    Helaas, het VB syndroom is er nog steeds, ook bij Microsoft zelf. Natuurlijk komt het deels omdat het voor velen ‘vroeger’ de eerste intro was met het programmeren. Elke computer c.q. PC had wel een vorm van Basic in zich. Later, hebben velen zich verdiept via Office in VBA. Vele boekhoud pakketten zijn hun leven begonnen met Basic.
    Echter, de taal en tools ontbrak het net aan de mogelijkheden om echte shrink-wrap producten te maken. Ook werd het onhoudbaar op het gebied van onderhoudbaarheid en hergebruik. Sinds vb.net is dat eigenlijk verleden tijd. Hoewel voor shrink-wrap producten nog steed C++ king is, is voor de rest VB.Net uitwisselbaar voor C#. Echter, bij Microsoft zelf is het nog steeds een ondergeschoven kind. Kijk maar naar de (serieuze) samples en de help-documentatie. Over generic classes en functies zijn bijna geen goede documentatie en/of samples. Dit komt volgends mij deels omdat het VB team zelf ook voornamelijk in C++ en C# programmeert.
    Ik ga op de PDC het VB team daar maar eens op aanspreken. VB Forever.

    Marcel

    Geplaatst op 15 september 2008 om 23:43 Permalink

  • Stefan Bookholt schreef:

    Er zit een wereld van verschil tussen VB (6) en VB.NET. Net zoals (visual) c++ nauwelijks iets te maken heeft met c++.NET. Eigenlijk is voor bijna iedere programmeertaal wel een compiler geschreven die de code omzet naar MSIL. Je gebruikt dan alleen (een deel van) de syntax om de uiteindelijke IL te fabrieken.

    Maar wat maakt een programmeertaal nu een goede taal? Voor mijzelf is goede tooling onmisbaar. Deze stelt je in staat om zonder bakken met parate kennis toch goede applicaties te bouwen, mits je de juiste concepten paraat hebt. Ik heb het dan met name over intellisense en documentatie etc.

    Geplaatst op 15 september 2008 om 13:27 Permalink

  • Ivo Limmen schreef:

    Ik denk dat Visual Basic een slechte naam heeft gekregen door mensen die in hun vrije tijd applicaties hebben lopen bouwen die uiteindelijk in productie zijn beland. Dit argument geld uiteraard ook voor:
    * Microsoft Access
    * Microsoft FoxPro
    * Perl
    * PHP
    * … (En vul maar in)

    Ikzelf heb meer dan 20+ jaar ervaring in verschillende BASIC varianten. Je kan er goed software mee schrijven en makkelijk. Zo wil ik nog eens wat gaan bouwen in GAMBAS (http://gambas.sourceforge.net/) ook een soort Visual Basic maar dan voor Linux.

    Geplaatst op 15 september 2008 om 8:51 Permalink