Het lijkt wel onkruid. Oude programmeertalen die maar blijven terugkomen, wat er ook gebeurt. Is het goed of slecht dat talen als Assembler, Fortran en Cobol nu nog nodig zijn?
Een opmerkelijk bericht op Computable. Enkele oude programmeertalen winnen weer aan populariteit, blijkt uit een recente lijst van Tiobe. Het Eindhovense software-onderzoeksbureau stelt regelmatig de Tiobe Index van veelgebruikte softwaretalen samen.
Zo prijkt Assembler plots op de negende plaats van populaire programmeertalen, waar zij vorig jaar nog op plaats veertien stond. Assembler (in het Engels Assembly) ontstond in 1947 en gaat dus al bijna 75 jaar mee. Tegenwoordig wordt de taal vooral gebruikt voor ingebedde systemen, iot-apparaten en hobby-projecten, vertelt Seppe Vanden Broucke, professor aan de UGent en KU Leuven, aan Computable.
Oude krijger, grootste stijger
Fortran is een oude krijger én de grootste stijger in de lijst: hij flitst van plaats 37 naar 17. De taal, ontstaan in de jaren vijftig, blijkt vooral populair voor wetenschappelijke projecten waarbij machine learning belangrijk is.
Ook Cobol doet nog aardig mee in de programmeerwereld. De taal lijkt springlevend en staat op nummer 25 van de lijst van Tiobe. Springlevend? Cobol wordt vooral ingezet om oude systemen aan de praat te houden en zolang die legacy niet is vervangen, blijft Cobol nodig.
Tot slot is ook de revival van querytaal SQL opvallend. Volgens professor Vanden Broucke komt dit door de komst van NewSQL, zoals MongoDB, en cloudgerichte databanken zoals Snowflake. ‘Het duurt waarschijnlijk nog vele jaren voordat SQL dood valt te noemen.’
Wat vindt u?
Onkruid vergaat niet en sommige programmeertalen blijkbaar evenmin. De recente opmars van oude talen is opvallend en dus is Computable benieuwd naar uw mening.
Waarvoor gebruikt u nog oude programmeertalen? Is het positief of juist negatief dat oude talen ook nu nog veel worden toegepast? Wordt het niet tijd om afstand te nemen van legacysystemen, al was het maar omdat steeds minder mensen kennis van de benodigde oude programmeertalen hebben?
Ik vind het positief dat, ondanks de leeftijd van veel talen, de er mee gemaakte oplossingen nog steeds werken (we noemen het nu legacy, terwijl toen het gemaakt was ‘high tech’ genoemd werd).
Mijn inschatting is dat heel veel mensen onderschatten wat er bij komt kijken om een informatiesysteem dat al 30+ jaar is meegegroeid te vervangen. En veelal moet de ‘winkel tijdens de verbouwing open blijven’. Ga er maar aanstaan.
Natuurlijk neemt de kennis af, maar is dat erg? Mensen zijn toch ook in staat zich heel snel ‘nieuwe dingen’ eigen te maken, waarom zouden mensen dan ook niet in staat zich ‘oude dingen’ eigen te maken…
Ik vind dat je ‘de enorme opgaaf voor de vervanging van legacy’ niet uit de weg moet gaan, en vooral de vervanging van je legacy in gang moet zetten, maar doe dat zoals je een walvis zou eten: in heel kleine stukjes….
Ik ben het helemaal eens met Jos de Weerdt. Uiteindelijk zijn talen als ASMB, Cobol en Fortran net zoiets als het Latijn en Grieks van je schoolopleiding. Je mist ze niet totdat je ineens een phrase in zo’n taal tegenkomt. Dan weet je weer waarom deze antieke opleidingen nodig waren. Vervang “phrase” met oude software en het wordt onmiddellijk duidelijk dat deze oude talen nog de komende, waarschijnlijk tientallen, jaren nog steeds niet dood zijn en zelfs hard nodig blijven!
Blijft een vreemd verhaal over die talen. Cobol dat gebruikt wordt om legacy in stand te houden en SQL dat een revival zou hebben. De kracht van Cobol is dat het een taal is die goed aansluit bij het probleem, verwerking van data aan de hand van voorwaarden. Een leesbare taal die goed aansluit, dat is wat benadrukt wordt bij Cobol. Dat is volgens mij de reden, dat het nog steeds gebruikt wordt. Hadden er andere en betere oplossingen geweest dan hadden die allang al de plaats ingenomen. Conclusie: Cobol is een prima taal.
SQL is de taal voor het benaderen van het gros van de databases die achter systemen ligt. Revival klinkt alsof het opgegraven is. Die taal is nooit weggeweest, ondanks alle nieuwe ontwikkelingen.
Legacy, het is een term die staat voor vies en voos (langzaam, oud, achterhaald,….). Vooral gebruikt wordt om het eens even helemaal anders te gaan doen. Legacy kan ook staan voor bewezen en betrouwbaar. Zoals voor alle software geldt het moet een baasje hebben en er moet continuiteit in beheer en ontwikkeling zitten. Je kan ook iets maken in een heel modern framework maar als de klus geklaard is en de bedenkers en makers zijn allemaal weg, dan zit je ook een hele nare legacy. Vandaag werken aan de legacy van morgen.
Werkende software omdat we het legacy noemen zomaar vervangen: nee. Niets mis met oude talen als ze goed voldoen (C, Cobol) en doe je er zelf nog wat mee? Nee. Al zijn de meest talen (in mijn geval: php, javascript) de jongste niet meer.
40+ jaar oude systemen kennen een gelaagdheid in architectuur omdat er niets vervangen werd maar alleen meer toegevoegd. Het probleem ligt niet in een gebrek aan kennis in de code maar in een onwetendheid aangaande de businessprocessen. De toevoeging van objectgeoriënteerde talen, componenten of frameworks gingen niet om een bedrijfsgerichte modernisering waarbij nog eens goed gekeken werd naar de bedrijfslogica en hoe deze ondersteund wordt met code. Hierdoor zijn veel processen gedigitaliseerd maar niet geautomatiseerd want het probleem is niet een gebrek aan kennis van programmeertalen zoals ingebedde systemen, IoT-apparaten en hobby-projecten laten zien.
Een moderne software engineer is flexibel met programmeertalen. Dat betekent wel dat zij de concepten van programmeertalen goed snapt, om makkelijk te kunnen schakelen tussen Java en Pega, tussen Fortran en Cobol, en tussen JavaScript en Java. De verschillen die er toe doen zitten in de frameworks en libraries. Dat kost wat meer effort. En ook daarvoor moet je de concepten achter de frameworks doorgronden en niet alleen de “howto-trucjes” kennen.
Kortom: ik vind het geen probleem dat die oude talen persisteren. Ofschoon ik wel voorkeuren heb voor talen die mij helpen met onderhoudbare code te maken. Daarvoor heb je dingen nodig als strenge typering, declaratieve semantiek, algebraische datatypes en dergelijke. Daarin laten oude talen (en een boel nieuwe) nog wat te wensen over. En uitgebreide repositories met herbruikbare libraries en goede zoektools zijn bij ouden en nieuwe talen zeer nodig…
Programmeertalen zijn onderhevig aan mode en emotie. Dat is de reden dat op dit gebied steeds weer opnieuw het wiel wordt uitgevonden.
In dit artikel komt gelukkig wel naar voren dat oude programmeertalen ook weer voor nieuwe functionaliteit interessant kunnen zijn, zoals Fortran voor AI.
Assembler is een machinetaal, en het is afhankelijk van de processor welke instructies mogelijk zijn. Andere talen hebben een hoger abstractieniveau.
Eigenlijk is een programmeertaal een gereedschap om gewenste functionaliteit in de vorm van een uitvoerbaar softwareprogramma te realiseren.
Daarmee is iedere programmeertaal gelijkwaardig.
De verschillen zijn de toepasbaarheid in bruikbaarheid en functionaliteit op verschillende computerplatformen.
Daarbij is het ook mogelijk om via interfaces verschillende programmeertalen en platformen aan elkaar te koppelen, bijv. Windows HTML of Smartphone App koppelen aan aan een COBOL systeem met een met SQL benaderbare DB/2 database voor internet bankieren.
Ik geloof daarom ook niet aan een hiërarchie van de beste programmeertaal.
Wat denk je Willem, zijn hamers ook onderhevig aan mode en emotie? Hoe moet dan klauwhamer versus vuist en uitdeukhamer ordenen?