Aardverschuiving in de TIOBE index

 
25 augustus 2010

Wel eens gekeken hoe populair jouw eigen favoriete programmeertaal is?

Op TIOBE’s Programming Community Index kun je dit opzoeken. De headline van de index voor juni deed mij weer eens terugkeren naar deze index:

Dinosaur Smalltalk falls off top 50

De wijze waarop TIOBE deze index bepaald loopt via Google: het gaat om een populariteitsscore op basis van zoekopdrachten via Google naar deze programmeertalen. Na vele jaren in die top te hebben doorgebracht (en volgens een ander onderzoek in 1994 op nummer 1 te hebben gestaan) is Smalltalk langzaam steeds meer op zijn retour. Het afgelopen jaar heb ik een klein projectje gedaan met VisualWorks Smalltalk voor een klant die een Mac applicatie wilde. Daarnaast hebben wij bij Sogyo de VisualWorks IDE ook gebruikt voor het maken van domein modellen met Exploratory Modeling, en een interne workshop webontwikkeling met behulp van Seaside, een aan Ruby/Rails superieur framework.

Maar de aardverschuiving waarop ik duid in de titel van deze blog gaat niet over Smalltalk, maar over een andere programmeertaal die daar ontzettend veel gemeen mee heeft: Objective-C. Vanuit de 32ste positie staat Objective-C nu op de 9de, waarmee het talen als Ruby en Javascript heeft ingehaald. En aan die spectaculaire stijging lijkt nog geen einde te komen.

Toevallig ben ik het afgelopen jaar ook met Objective-C bezig geweest. Het kleine Smalltalk projectje waarnaar ik hierboven verwees heb ik voor mijn eigen genoegen ook geport naar Objective-C om er een native Mac OS X applicatie van te maken. Uitsluitend om te zien of mijn favoriete design patterns overeind bleven in die programmeertaal. En ik moet zeggen: ik wist niet wat mij overkwam. Daarnaast heb ik een iPhone applicatie ontwikkeld — daarvoor worden dezelfde programmeertaal en libraries (Cocoa genaamd) gebruikt.

Ik denk dat ik wel kan zeggen dat ik redelijk veeleisend ben in mijn gebruik van welke programmeertaal dan ook. Weliswaar zijn mijn meeste design restricties in vrijwel elke programmeertaal te realiseren (gebaseerd op de principes van losse koppeling en hoge cohesie), maar de ervaring heeft mij geleerd dat dynamische talen en met name Smalltalk mij daarin in hoge mate ondersteunen. Naarmate een taal restrictiever is (in typing en reflectie met name) moet ik meer oplossingen realiseren met behulp van frameworkjes (let op het verkleinwoord!). Dat ervaar ik als een omweg, hoewel het doel altijd te bereiken is.

Objective-C bleek echter bij mijn twee projectjes onverwacht behulpzaam te zijn, zelfs zo extreem dat ik moest concluderen dat Smalltalk misschien nog bovenaan staat op mijn eigen lijstje van favoriete programmeertalen, maar dat Objective-C een “close-second” is.

Waardoor heeft Objective-C mij zo kunnen charmeren?

Ten eerste de extreme vorm van reflectie: alles wat ik gewend was te doen in Smalltalk was mogelijk. En ik vermoed dat dingen die ik niet gewend ben te doen in Smalltalk ook mogelijk zijn. Reflectie, runtime introspectie, closures of lambda functies, class extensions, interfaces waren allemaal beschikbaar. En, moet ik zeggen, uitstekend gedocumenteerd door Apple op de developers site.

Ten tweede de extreme efficiëntie van de runtime. Een redelijke applicatie beneden de 900 kB? Ik wist niet wat ik zag toen ik mijn applicatie deployde! Objective-C compileert (met de op vele platformen beschikbare GCC compiler) gewoon naar C. Dat het mogelijk was met die extreem dunne schil om C zo’n dynamische taal te creëren is geniaal. Omdat Objective-C zo’n dunne schil om C is, is het ook mogelijk om binnen de broncode Objective-C en C (en C++) naar willekeur te mixen. C staat nog steeds in mijn top drie, en ik vond het heerlijk om daar zo makkelijk toegang toe te houden. In Smalltalk moet je toch via dll’s koppelen met C. Maar de omvang is niet het enige, de performance is ook niet mis. Ik kan je hier geen metrieken laten zien, daar heb ik nog niet de tijd voor genomen, maar ik stond versteld van de snelheid van complexe algoritmes.

Met nieuwe liefdes gaat het natuurlijk vaker zo: Objective-C trekt mij momenteel meer om in mijn vrije tijd mee te spelen dan Smalltalk. En dat is in 20 jaar niet voorgekomen!

Kijk er eens naar. De taal is zeker niet Mac OS gebonden. Via OpenStep ook te gebruiken onder Windows of Linux. En vaardigheid in het ontwikkelen voor iPhone of iPad lijkt in deze tijd geen luxe.


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


Categorieën: Overige talen en platformen


Reacties (4)

  • Toevallig had ik het laatst ook al over de TIOBE index, als reactie op iemand die verbaasd was dat C# niet hoger uitkwam. Ik vond de resultaten niet heel onverwacht, maar wel discutabel vanwege de wijze van resultaatbepaling.

    Inmiddels worden dan wel meerdere zoekengines dan alleen Google gebruikt, vanwege een incident een paar jaar geleden. De populariteit van allerlei talen verschoof in eens enorm, in korte tijd. Het bleek dat Google zijn resultaten anders indexeerde en dat dat heel veel invloed op de TIOBE resultaten had.

    Het resultaat wordt dan ook nu bepaald door bij meerdere zoekmachines te bepalen hoeveel hits je krijgt als je zoekt op ” programming”. Dus met andere woorden, hoeveel wordt er over geschreven. En dan wordt er ook nog iets met false positives gedaan en een A/B/C-status van de taal. Voor de volledige beschrijving, zie: http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_definition.htm

    Daar valt nogal wat op af te dingen.. wat als talen voornamelijk buiten engelstalig gebied populair zijn, b.v. in Duitsland? Of China, Japan? En inderdaad, hoeveel erover geschreven wordt, kan betekenen dat de taal ingewikkeld is. Of dat de community van die taal veel meer publiek zichtbaar is op het internet omdat ze veel vertrouwder zijn met het internet als medium (denk aan website development talen i.t.t. oude mainframe talen). Of misschien bevoordeelt het wel talen die een plotselinge stijging populariteit doormaken, omdat er nog te weinig goed trainings- leesmateriaal buiten de blogs en websites beschikbaar zijn (Objective-C ?).

    Dus.. het zijn aardige resultaten en ik heb niet direct een goed uitvoerbare onderzoeksmanier die betere resultaten op gaat leveren, maar je moet wel heel voorzichtig zijn om er conclusies op te baseren, denk ik.

    Geplaatst op 26 augustus 2010 om 12:03 Permalink

  • Rob,

    Interessant overzicht. Meest opvallende dat ik eruit haal is dat dynamisch getypeerde talen in deze index inleveren op de statisch getypeerde talen. Dat druist wel enigszins in tegen mijn beeld dat dynamisch getypeerde talen toch wel met een opmars bezig zijn. Zou deze trend nu weer keren?

    Geplaatst op 25 augustus 2010 om 19:40 Permalink

  • Matthijs schreef:

    Wat grappig Rob.
    Het viel mij direct op dat c en c++ boven C# staan in de TIOBE index.
    Aangezien deze is gebaseerd op google zoekopdrachten, betekend dat dan dat een taal lastig is om te gebruiken zodat veel mensen er naar moeten zoeken of dat deze veel gebruikt wordt?
    Ik zou het interessant vinden als zo’n zelfde index gebouwd zou worden op basis van repositories en welke talen er gebruikt worden.

    Geplaatst op 25 augustus 2010 om 13:07 Permalink

    • Rob Vens schreef:

      Blijft natuurlijk enigszins discutabel om op deze wijze de populariteit te meten.
      Doet me denken aan een collega in mijn tijd als onderzoeker aan de universiteit. Daar evangeliseerde ik Smalltalk ook al, en hij was naar Amerika geweest en kwam terug met de “laatste mode”. Dat bleek C++ te zijn. Hij was namelijk naar een boekhandel geweest en daar stonden meters boeken over C++. En maar twee (!) boeken over Smalltalk. Zijn interpretatie: C++ is de mode. Mijn reactie: ziedaar hoe ingewikkeld C++ is in vergelijking.
      Of de stijging van C (die stond eerder namelijk niet voor C#) ook te wijten is aan Objective-C weet ik ook niet, dat zou nl. best kunnen. Het ging in ieder geval voor mij wel op, want ik vond het leuk C code te mixen met Objective-C.

      Geplaatst op 25 augustus 2010 om 13:15 Permalink