Hoera, een prijs.
Normaal win ik nooit een prijs. Maar dat komt misschien omdat ik oplossingen van puzzels meestal niet instuur. Maar in december liet ik mij verleiden een oplossing naar de SDN te sturen. En prompt win je dan wat: een 180 dagen trial versie van Visual Studio. Aan de ene kant best wel leuk want dat was precies wat ik wilde hebben. Maar aan de andere kant verwachten ze van je dat je dat je binnen een maand je bevindingen wereldkundig maakt. Misschien had ik toch maar beter geen prijs kunnen winnen…
Installeren dat pakket.
Enfin, meteen aan de slag dan maar. Installeren dan maar. En meteen een probleem, want dat mag ik dus niet als simpele gebruiker. Dat vind ik toch altijd wat merkwaardig: ik mag, als gebruiker zelf programma’s maken, ik mag icoontjes naar dat programma op mijn desktop of in mijn startmenu aanmaken maar ik mag dat kennelijk niet geautomatiseerd. Want eigenlijk is dat precies wat een installatieprogramma doet (of zou moeten doen).
Maar zo’n simpele gebruiker ben ik niet want gelukkig mag ik ook inloggen als beheerder. Dat doen we dus maar. Natuurlijk wil je, om alles te kunnen proberen de volledige versie installeren. Gelukkig probeer ik dat op mijn vrij nieuwe laptop te doen en is de 4 Gb die daar voor nodig is nog wel beschikbaar. Drie kwartier later ben ik klaar. Nou ja klaar, ik mag mijn computer opnieuw opstarten om de installatie af te ronden. Ook al zo’n merkwaardig installatie-fenomeen. Als alles dan weer is opgestart blijkt dat ik ook de documentatie nog even moet installeren. Weer 2 Gb en een kwartier wachten kwijt. En dan heb ik nog maar één van de drie schijfjes gebruikt. Nu hoeven die gelukkig ook niet (hoop ik): de ene is een bèta versie van hetzelfde, de andere is SQL-server. Altijd handig om te hebben, maar nu even niet.
Dan even wat anders doen. Mijn oude vertrouwde Delphi (versie 6) opstarten. Die valt meteen over een instelling die niet goed staat. Fijn. We zetten hem terug en zien wel wat er van komt. Ook zijn er her en der wat icoontjes gewijzigd. Ook zo’n fenomeen bij installaties waar je lang of kort over kan discussiëren maar wat je niet altijd wilt.
Aan de slag.
Maar goed, mijn Delphi lijkt gewoon te werken dus laten we snel verder gaan met het Visual Studio want daar gaat het tenslotte over.
Maar waar te beginnen? Laten we eerst die 2 Gb documentatie aanvallen. Daar vinden we vrij snel een ingang “Visual Basic Guided Tour” met een ingang “Creating Your First Visual Basic Program”. En die geeft 5 stappen om je programma te maken. Tja, dan zou je die help op je andere computer willen zien zodat je op het ene scherm de help kan lezen en op de andere de code kan maken. Maar nog eens 2 Gb installeren willen we natuurlijk niet. Kunnen we er vanaf de andere computer bij? Dus snelkoppeling kopiëren, paden aanpassen en opstarten. Dat is dus jammer, dat kan dus niet, we krijgen, heel subtiel, de melding dat de configuratie niet klopt en dat opnieuw installeren het probleem kan oplossen.
Dus Visual Studio maar opstarten. Die vraag wat onze basisbehoefte, qua taal is. We kiezen dus voor het moment voor Visual Basic en doen “start”. Wachten want kennelijk is deze keuze niet verwacht. “Het kan een paar minuten duren” is de mededeling. En dat klopt nog ook!
En dan een programma maken.
En dan echt aan de slag. We maken een nieuw project aan en kunnen door naar stap 2. Die wil ons een webbrowser laten maken maar dat is natuurlijk veel te gemakkelijk. Laat ons gewoon een “hallo wereld” applicatie gaan maken. Als die lukt zal die webbrowser ook wel lukken!
Dus een button en een tekstbox op het form plaatsen. Die kan je mooi op elkaar uitlijnen. Dat gaat in ieder geval een stuk soepeler dan de Delphi 6 waarin ik normaal werk. Snel wat eigenschappen wijzigen. Dat is nou weer jammer: in Delphi zie je al wat gebeuren als je ook maar één letter intikt, hier gebeurt er pas wat na de enter. Dubbel klik op de Button levert een event. Maar hoe krijg je een messagebox in Visual Basic. Maar gelukkig is ook hier een code-completion actief dus na het intypen van “Show” zien we dat er een Messagebox is. En via de help zien we snel wat we als argument(en) mogen opgeven. Snel even een titel toevoegen bij wijze van verfraaiing. Dat mag even niet, je moet eerst het programma sluiten. Daar zit natuurlijk wel wat in als je gebruik maakt van een interpreter. Maar goed, ondanks alle gestuntel met haakjes, quotjes en andere details die je het leven zuur maken hebben we onze mededeling binnen een half uur de wereld in gestuurd.
Maar waar is mijn programma gebleven? Voorlopig nog nergens. Dat wil zeggen er is ergens waar ik dat niet wil een map “Temporary Projects” aangemaakt en daar is een en ander te vinden. En bijna alles staat er vier keer…. Zo heb ik ook vier exe’s (met dezelfde naam en omvang). En ze werken nog alle vier ook! Dus we sluiten maar eens af en kijken wat er gebeurt. We geven aan dat we willen saven, geven een naam. We hebben nog steeds alles vier keer maar nu op de locatie die we hebben aangegeven.
Op naar een andere taal.
Maar het werkt. Hoe simpel kunnen we dan iets maken in een andere taal. Dus we zeggen “File New” en kiezen voor een C++ applicatie. Nu hoeven we in ieder geval niet lang te wachten. Maar een handvol seconden en we kunnen beginnen. Het form opnieuw aanmaken duurt misschien twee handen vol seconden maar zeker niet meer. Maar dan het event. Hoe zit het hier met de syntax voor de messagebox. Naïef als we zijn kopiëren we die uit het VB project. Maar dat werkt dus niet. Hup de help weer in. Dat is nou weer jammer. Die heeft keurig onthouden dat we de vorige keer aangegeven hebben vooral geïnteresseerd te zijn in de Visual Basic informatie. Dat we inmiddels zijn omgeschakeld naar een andere taal wordt kennelijk niet doorgegeven. Dan doen we het toch gewoon handmatig (lang leve de automatisering). Via de “See Also” vinden we een voorbeeld. Natuurlijk: in plaats van MessageBox.Show moet je nu MessageBox::Show intikken. Maar hoe krijg ik de text uit mijn textbox nu weer in de messagebox. De TextBox1.Text uit Visual Basic levert een onbegrijpelijke foutmelding. Doe een Help en dan wordt je keurig gemeld dat die “.” fout is. Maar wat dan wel? Intuitief zou je TextBox1::Text verwachten. Maar dan krijg je de foutmelding dat de Textbox niet in je namespace zit. Dat zal wel kloppen als je alles over namespaces weet, maar als je dat (nog) niet weet zit je toch vreemd te kijken. Hoezo zal die textbox die ik net heb aangemaakt niet in mijn namespace zitten? Maar goed, je ziet ergens een pijltje staan dus TextBox1->Text proberen. En ja hoor, er is weer een Hallo wereld applicatie geboren.
Afronden die evaluatie.
Gisteren kreeg ik een mailtje van de SDN. Het blijkt al weer tijd te zijn eerste kennismaking af te ronden en dit verslag in te leveren. Natuurlijk is het een illusie te veronderstellen dat je een pakket van deze omvang binnen drie weken goed kan evalueren. Misschien als je verder niets om handen hebt, maar dan nog: je hebt toch ook af toe wat “bezinktijd” nodig. Ten eerste is er de ergernis over de manier waarop de producent met mijn resources omgaat. Natuurlijk de 6 Gb die nodig is om het volledige pakket te installeren. Maar daar kan je nog van volhouden dat het programma nu eenmaal ook zaken moet ondersteunen die slechts door een enkeling worden gebruikt. Maar hoe kan het dat je voor een eenvoudige Hallo Wereld applicatie (in C++) ruim 10 Mb schijfruimte kwijt bent? En dat terwijl de exe maar 28 Kb is. Voor Visual Basic is de situatie iets gunstiger: daar ben je nog geen halve Gigabyte kwijt voor een programma van 39 Kb. Maar daar is er wel de verwondering waarom hetzelfde vier keer moet worden opgeslagen. Overigens is er in het kader van het Visual Basic gebruik ook nog op mijn dataschijf nog eens 1 Mb “ongespecificeerde” data geschreven.
Op voorhand is het sterke punt van het pakket is dat je binnen dezelfde ontwikkelomgeving gebruik kan maken van verschillende programmeertalen. Altijd prettig als je door omstandigheden gedwongen wordt uit te wijken naar een andere taal. Je weet dan al waar alle knoppen zitten en wat de sneltoetsen zijn dus je hoeft je dan alleen op de verschillen in de syntax te concentreren. Dat blijkt in de praktijk dus erg tegen te vallen. Het aanroepen van een MessageBox met als parameter de text uit een Textbox heeft wat mij betreft helemaal niets met de syntax van een programmeertaal te maken. Maar toch moet je nog behoorlijk wat aanpassen om de code uit de ene taal in het event van de andere te laten werken. Te vrezen valt voor de herbruikbaarheid van minder triviale code.
Wie is de winnaar?
Maar is dat Visual Studio nu beter of minder goed dan het mijn vertrouwde Delphi (versie 6). Ik zou daar niet echt een uitspraak over willen doen. Natuurlijk ben je vertrouwder met het pakket wat je al langer gebruikt en heb je daarin de dingen die je niet bevielen aangepast, of je hebt met de beperkingen leren leven. Eerlijk gezegd vallen de overeenkomsten nog meer op dan de verschillen. Het kostte in ieder geval, afgezien van het vinden van de juiste syntax, geen enkele moeite om een kleine applicatie te maken. En natuurlijk zijn er best 100 (kleine) verschillen te vinden maar als je die objectief gaat toewijzen zal de vergelijking waarschijnlijk, afhankelijk van de persoonlijke voorkeuren, ergens tussen de 40-60 en 60-40 uitkomen.
Overigens is er één detail dat sterk in het voordeel van Delphi spreekt. Natuurlijk streef ik, net als iedereen perfectie na en probeer ik alles in één keer goed te doen. Alleen lukt dat niet altijd (nou ja eerlijk gezegd meestal niet). En dus moet ik nogal eens hercompileren om de (volgende) fout te vinden. In Delphi kan ik dat met een sneltoets (F9) doen. In Visual Studio via een optie in het menu (die geen sneltoets aangeeft). Dat zijn dus veel muisbewegingen en klikken en dus sterk verhoogde kans op RSI. Maar wie weet is er ergens een mogelijkheid sneltoetsen toe te wijzen. Ik heb hem (nog) niet gevonden.