Scriptorama.nl

Header image showing a keyboard, mouse, laptop and books on design patterns

Interactieve shells rule!

Op mijn werk ontwikkelen we webapplicaties met .NET: ASP.NET met C#. Aangezien ik nog maar zo'n 4 maanden met .NET en C# werk, komt het nog wel eens voor dat ik niet precies weet hoe ik iets moet doen. Toen ik met PHP begon had ik hetzelfde, of sterker nog, ik heb het nog steeds. PHP wordt namelijk nog steeds uitgebreid.

Een van de kenmerken van C# is dat het een gecompileerde taal is. Als je iets wilt proberen houdt dat in dat je altijd de volledige cyclus door moet: Edit, Compile, Run. Lastiger is nog dat je OF een nieuw project moet beginnen OF ergens in je applicatie een test functie moet gaan maken. In PHP is het iets simpeler, je kunt gewoon ergens een PHP bestand neerplempen en dan uitvoeren. Werkt op zich goed, maar persoonlijk heb ik dan na een paar maanden een homedirectory vol met .php bestanden die de meest originele testnamen krijgen: blaat.php, hatzee.php, hatzee44.php, doeheteensofzo.php enzovoorts.

Hier komt de interactieve shell in zicht. Een interactieve shell stelt je in staat om statements in te voeren en deze direct te laten uitvoeren. Je hebt dus resultaat op het moment dat je op Enter drukt en dat spaart tijd. PHP is een geinterpreteerde taal en dat maakt een interactieve shell mogelijk, maar C# niet: C# is een gecompileerde taal. Gelukkig is .NET niet gelimiteerd aan 1 taal en na enig zoeken kwam ik voor .NET uit op een scripting taal voor .NET: Boo en die heeft een interactieve shell: booish.

Voorbeeld booish (Ctrl-D stopt de shell):

CODE:
  1. mathieu@loina:~ $ booish
  2. >>> import System.Collections;
  3. >>> b = Hashtable();
  4. {}
  5. >>> b.Add("website", "http://www.scriptorama.nl/");
  6. >>> b["website"]
  7. 'http://www.scriptorama.nl/'
  8. >>>

Zoals je ziet krijg ik, als dat van toepassing is, na elk commando direct resultaat. Je kunt dus enorm snel iets uitproberen. PHP heeft zelf ook een interactieve shell, en deze zit gewoon ingebouwd: (Ook hier stopt Ctrl-D de shell).

CODE:
  1. mathieu@loina:~ $ php -a
  2. Interactive mode enabled
  3.  
  4. <?php
  5. $b = array();
  6. $b['website'] = 'http://www.scriptorama.nl/';
  7. echo $b['website'];
  8. X-Powered-By: PHP/5.1.2
  9. Content-type: text/html
  10.  
  11. http://www.scriptorama.nl/

De interactieve shell van PHP werkt helaas wel net iets anders dan die van Boo. In Boo wordt een waarde direct geëvalueerd en getoond, zoals je vaak ziet in een debugger. In PHP moet je echt aangeven dat je iets wilt weergeven. Desondanks: toch best handig.