[disc] toekomst software ontwikkeling.

Pagina: 1
Acties:
  • 115 views sinds 30-01-2008
  • Reageer

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
In navolging van : [rml][ /14] tijd voor een impuls, niveau daalt[/rml] leek het me wel handig om een nieuw topic te openen om het nivo hier een beetje op te krikken.

Wat ik wil weten is hoe jullie denken over de toekomst van software ontwikkeling. Toen in een aantal jaren (denk intussen al weer een 7 jaar) geleden, begon met programmeren in c/asm/pascal was ik al blij met een editor met syntax highlighting en geintegreerde compiler/debugger.

Maar de afgelopen jaren is er veel aan software ontwikkeling veranderd. Er zijn nieuwe paradigma`s ontwikkeld en de daar bij behorende talen. Bestaande talen zijn verder uitgebreid of opnieuw geboren. Of aanvullende technieken zoals bv XP(eXtreme Programming: Refactoren, Unit testen, pair programming etc etc) worden bedacht.

Nieuwe modelerings technieken zoals bv UML met eventuele code generatie.

Verbeterde ide`s met syntax checking en refactor mogelijkheden en geintegreerde RAD tools zoals GUI builders en andere builders.

Maar waar zal software ontwikkeling heen gaan?

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Persoonlijk verwacht ik grotere scheiding tussen de elite programmers en het klootjesvolk programmers.

Ik verwacht dat de elite programmers geen software meer gaan schrijven maar tools, of blokken die kunnen gebruikt worden door het klootjesvolk programmers. En het grijze gebied wat er tussen ligt zal langzaam maar zeker verdwijnen.

Programmer - an organism that turns coffee into software.


Verwijderd

Er is veel veranderd, maar gaat het nu werkelijk beter?

Ik denk dat software ontwikkeling nog steeds te veel een ambacht is. Waar ontzettend veel technieken en methodes zijn, worden die nauwelijks of niet consequent toegepast door veel commerciele softwareontwikkelaars. Te vaak nog is de kwaliteit van software afhankelijk van de individuele developers, en niet van de structuur. En, zoals iemand (geen idee wie) ooit zei: "Heroic programming is not a sustainable business practice".

Als je een vergelijking zou trekken tussen het bouwen van een kantoorpand en een mission-critical systeem, zullen de tranen je in de ogen schieten van het lachen. Waar klanten concepten als zwaartekracht en bouwstandaarden begrijpen en accepteren, weigeren ze de wetten van software development te accepteren.

Zo wordt regelmatig tijdens een development cyclus op een te laat moment met grof geweld functionele wijzigingen doorgevoerd, die als quick hack geimplementeerd worden omdat anders de hele applicatie opnieuw gestructureerd moet worden, waardoor uiteindelijk de kwaliteit bagger is, de oplevertermijn overschreden wordt, en de de jurische geschillen rond de uiteindelijke prijs kunnen beginnen.

Maar is dat nou de schuld van klanten? Nee, niet helemaal. Hoewel klanten zelf verantwoordelijk zijn voor het stellen van onmogelijke eisen, zijn het uiteindelijk de IT bedrijven die deze onmogelijke eisen toch inwillegen om maar een klant binnen te halen.

De enige oplossing die ik zie is door de producent van software aansprakelijk te stellen voor de schade die een klant door toedoen van slechte software oploopt. In Nederland is hier al een precedent voor gezet met het veroordelen van Exact Software, maar toch is de regelgeving erg lastig. Zo zou het catastrofale gevolgen kunnen hebben voor Open Source software, aangezien je op deze wijze ook hobbyprogrammeurs aansprakelijk zou kunnen stellen voor miljoenenschade bij grote bedrijven als ze gebruik maken van OSS.

Wat betreft de techniek verwacht ik veel hypes en weinig 'silver bullits'. Eigenlijk doen we al jaren precies hetzelfde truukje, maar plakken we er telkens een ander naampje op. De stapjes zijn klein en evolutionair te noemen, maar worden vaak gemarket als revolutionair, om maar te kunnen verkopen.

  • Juup
  • Registratie: Februari 2000
  • Niet online
Hmmm... goede vraag.
Ik zie geen grote veranderingen aankomen. Wat mij betreft heeft alleen OO iets wezenlijk veranderd aan het programmeren.
Misschien zit er nog wel zo'n revolutie te wachten. Ziet iemand iets wat mogelijk een revolutie kan zijn?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Een revolutie hoeft niet zozeer een ander paradigma te zijn, maar dat kan ook te vinden zijn in veel / makkelijk te gebruiken libraties, handige tools die software ontwikkeling makkelijker maken, ide`s die beter kunnen inspelen op de behoefte van de programmeur (en dan met nadruk op refactoring). Maar die revolutie kan ook te vinden zijn in nieuwe RAD tools waardoor de ontwikkeltijd drastisch afneemt.

Ik wil graag weten op welke manier software ontwikkeling in jullie ogen in de toekomst gaat veranderen, of wat jullie graag veranderd zouden zien.

  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Verwijderd schreef op 14 augustus 2002 @ 15:14:
[goed verhaal geknipt]
Maar is dat nou de schuld van klanten? Nee, niet helemaal. Hoewel klanten zelf verantwoordelijk zijn voor het stellen van onmogelijke eisen, zijn het uiteindelijk de IT bedrijven die deze onmogelijke eisen toch inwillegen om maar een klant binnen te halen.
Ik ben bang dat je behoorlijk gelijk hebt met deze constatering. Voor IT bedrijven is het moeilijk om aan de ene kant de klant duidelijk te maken dat wat 'ie wil niet kan of dat 'ie dat niet moet willen, aan de andere kant moet de schoorsteen ook roken...

Verder is er natuurlijk het algemene probleem dat software een redelijk nieuw verschijnsel is en dat het erg moeilijk is om van te voren goed helder te hebben wat een stuk software allemaal doet. Zeker systemen met timingsafhankelijkheden zijn vaak erg lastig.

Uiteindelijk is het resultaat natuurlijk het gevolg van heel veel kleine en grote beslissingen. Naar mijn idee is de kwaliteit van de code een van de minst belangrijk dingen, als je praat over 'administratieve' software. De kwaliteit van de specs en in hoeverre deze inderdaad het gewenste proces beschrijven is veel belangrijker.

Tools waarmee je software maakt worden steeds beter: automatische syntax controle, GUI builders, test frameworks, strong-typed talen: het zijn allemaal stapjes vooruit. Maar je kunt kwalitatief nog zulke goede code maken, als het niet is wat de klant wil is het dus ook niet goed.

Ik zie dan ook het opstellen van specificaties als het gebied waar de grootste winst te halen valt. Specificatie-technieken zijn er in overvloed, maar helpen vaak niet voldoende bij de communicatie tussen klant en leverancier. Technieken zijn vaak ook te 'technisch'. Leg aan een klant maar eens uit hoe je een UML diagram moet lezen als de klant alleen maar in staat is om wat te emailen en tekstverwerken....

Ook andere specificatie technieken die de zaak eenvoudig proberen voor te stellen schieten te kort. Kijk maar eens naar NIAM. Op zich goed dat er vanuit een simpele beschrijving in gewone taal wordt gestart, maar de schema's zijn weer alleen voor de professionals te begrijpen. Het zoeken is denk ik dan ook naar een beschrijvingsvorm die formeel genoeg is om de specs goed vast te leggen en begrijpelijk genoeg om een goed communicatiemiddel te zijn tussen de leverancier en de klant.

With the light in our eyes, it's hard to see.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Hmmm... een goeie dit, maar zeker geen makkelijke... Waar zitten de visionairs in P&W ? :P

Er worden altijd nieuwe tools, paradigma's, etc... ontwikkeld om software-engineering te vergemakelijken of zelfs te automatiseren (CASE).
Ik denk dat deze laatste, CASE dus, (Computer Aided Software Engineering) geen grote vlucht zal nemen (dat is imho al gebleken). Het ontwerpen en maken van een informatiesysteem is een complexe taak en er zijn nooit 2 systemen dezelfde. CASE kan een hulpmiddel zijn, maar ik denk dat de rol van de analysten, designers en programmeurs toch nog altijd zal doorwegen.

Het internet heeft voor een grote verandering gezorgd in 'wat we met computers doen'. Dat had ook tot gevolg dat er nood was aan andere programma's en dat er nieuwe denkwijzes naar boven kwamen. Denk maar aan WebServices, ASP (Application Service Providers [software uit de muur zeg maar]), Network-Computer, ....

Over paradigma's; er zullen altijd wel mensen met nieuwe paradigma's op de proppen komen. (Zo blijven we niet stil staan). Object Oriented Programming geraakt meer en meer ingeburgerd en toch is er al sprake van een ander paradigma: Aspect Oriented Programming.
(http://aosd.net/).

Feit is dat je als software-ontwikkelaar bij moet blijven, zowel op vlak van talen en tools als paradigma's.

Op vlak van 'business':
Ik denk wel dat IT-diensten leveranciers (detacheringsbureau's, security-consultants, ...) in de toekomst meer kans zullen hebben op overleven dan de 'klassieke' software-huizen. Die diensten-leveranciers moeten mi minder investeringen doen dan de gewone IT-bedrijven. Ze verkopen mensen en kennis ipv producten.

https://fgheysels.github.io/


Verwijderd

whoami schreef op 14 augustus 2002 @ 16:09 o.a. het volgende:
Het internet heeft voor een grote verandering gezorgd in 'wat we met computers doen'. Dat had ook tot gevolg dat er nood was aan andere programma's en dat er nieuwe denkwijzes naar boven kwamen. Denk maar aan WebServices, ASP (Application Service Providers [software uit de muur zeg maar]), Network-Computer, ....
Daar zie ik inderdaad wel iets in.

Ik denk dat software systemen meer en meer zullen bestaan uit bundeling van services die extern worden afgenomen, zoals dat met ASP (software uit de muur, prachtige omschrijving) gebeurt. Kijk bijvoorbeeld naar Passport van Microsoft. Daarbij zullen applicaties voornamelijk gekoppeld gaan worden m.b.v. WebServices en Message Queing.

[ Voor 0% gewijzigd door Verwijderd op 14-08-2002 16:17 . Reden: typo ]


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Euh... misschien lijk ik nu ineens enorm n00b, maar WHAT THE FUCK is een paradigma? :D

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


Verwijderd

LuCarD schreef op 14 augustus 2002 @ 14:54:
Persoonlijk verwacht ik grotere scheiding tussen de elite programmers en het klootjesvolk programmers.

Ik verwacht dat de elite programmers geen software meer gaan schrijven maar tools, of blokken die kunnen gebruikt worden door het klootjesvolk programmers. En het grijze gebied wat er tussen ligt zal langzaam maar zeker verdwijnen.
Ik denk dit niet, ik denk dat het klootjesvolk gaat afvallen in de professionele sfeer. Dat is een gevolg van wat MrX al meldt:
De enige oplossing die ik zie is door de producent van software aansprakelijk te stellen voor de schade die een klant door toedoen van slechte software oploopt. In Nederland is hier al een precedent voor gezet met het veroordelen van Exact Software, maar toch is de regelgeving erg lastig. Zo zou het catastrofale gevolgen kunnen hebben voor Open Source software, aangezien je op deze wijze ook hobbyprogrammeurs aansprakelijk zou kunnen stellen voor miljoenenschade bij grote bedrijven als ze gebruik maken van OSS.
Ik denk dat er richtlijnen en standaarden moeten komen voor de bedrijfszekerheid van software, net zoals bij andere vormen van architectuur en industrieel ontwerp. Ik zie echter niet dat dit per se schadelijke gevolgen heeft voor het OSD model: ten eerste kan OSS net zo goed voldoen aan deze standaarden, en ten tweede is het de verantwoordelijkheid van de gebruiker als hij sub-standaard software gebruikt.

De ontwikkelaar moet dus aansprakelijk zijn op het moment dat hij claimed dat zijn software aan de standaard voldoet, terwijl dat niet het geval is.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
MUBA schreef op 14 augustus 2002 @ 16:21:
Euh... misschien lijk ik nu ineens enorm n00b, maar WHAT THE FUCK is een paradigma? :D

paradigma = denkwijze.
(Staat ook in de Dikke VanDale hoor).

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Verwijderd schreef op 14 augustus 2002 @ 16:24:
[...]


Ik denk dit niet, ik denk dat het klootjesvolk gaat afvallen in de proffesionele sfeer. Dat is een gevolg van wat MrX al meldt:
Jammergenoeg.
Eigenlijk is dit iets wat in het verleden (tot voordat de Internet-bubble spatte, tot 2000/2001) eigenlijk gebeurt is. (IT) Bedrijven hadden informatici tekort, dus wierven ze iedereen aan die wat van computers afwist (als je een pc kon aanleggen was je bij wijze van spreken al goed genoeg). Mensen zonder achtergrondkennis, maar die een 3-weekse cursus 'software-ontwikkeling' of iets dergelijks gevolgd hadden, werden als volwaardige programmeur aangeworven etc.
Door de economische recessie echter moesten bedrijven gaan besparen. En hoe kun je als bedrijf o.m. beter besparen dan besparen op personeel. Jammergenoeg voor de 'klootjes-informatici' (maar zoveel te beter voor de IT-sector), waren het die mensen die er het eerst uitvlogen. (Dit zie ik ook in het bedrijf waar ik werk).

https://fgheysels.github.io/


Verwijderd

Ik dacht altijd dat de toekomst de code generatie die tegenwoordig al een "hetzij een beetje beperkt" in UML pakketen aangeboden de toekomst zal zijn.

Meer visual programmeren, tegenwoordig biedt ieder IDE al een soort ClassView, ik kan me voorstellen dat dit meer wordt uitgebreidt naar een soort diagram waarbij je nauwelijks meer bezig bent met het typen van source maar meer met het (indirect) creeren van source code dmv diverse modelleringstechnieken (UML of een toekomstig alternatief).

Het zou hetzelfde principe kunnen zijn dat als je een electronische schakeling schematisch weergeeft (functionaliteit definieren) waarbij de "compiler" er een layout van de printplaat bij maakt waarbij berekend wordt welke componenten waarvoor het meest geschikt zijn.

Kortom: het definieren van functionaliteit middels modellen waarbij de computer zorgt voor de daadwerkelijke implementatie

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Ik denk dat een belangrijk aspect komt: multiplatform, zoals Java of .NET. In de toekomst verwacht ik dat steeds meer programma's multiplatform zullen zijn.

Ten tweede: Client-Server architectuur, "Microsofts plan" : Programma draait eigenlijk op de server en die client gebruikt het semi-remote, het wordt eerst gedownload (of de benodigde data), zdat de gebruiker bezig kan.

Alle details van .NEt zijn me echter wat ontsprongen onderhand. Ik wacht eerst todat het goed gebruikt wordt voordat ik (misschien) overstap

Verwijderd

41.6C.6D.61.72 schreef op 14 augustus 2002 @ 16:36:
Ik denk dat een belangrijk aspect komt: multiplatform, zoals Java of .NET. In de toekomst verwacht ik dat steeds meer programma's multiplatform zullen zijn.

Ten tweede: Client-Server architectuur, "Microsofts plan" : Programma draait eigenlijk op de server en die client gebruikt het semi-remote, het wordt eerst gedownload (of de benodigde data), zdat de gebruiker bezig kan.
Don't believe the hype.

Software vind je niet alleen op PC's maar ook in verwarmingen, ovens, ijskasten, gsm's en ander speelgoed, noem maar op. Dit soort software ga je natuurlijk niet client-server modelleren, en het heeft ook weinig zin dit soort software multiplatform te bouwen, ze is immers zeer hardware-specifiek.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
41.6C.6D.61.72 schreef op 14 augustus 2002 @ 16:36:
Ik denk dat een belangrijk aspect komt: multiplatform, zoals Java of .NET. In de toekomst verwacht ik dat steeds meer programma's multiplatform zullen zijn.
Als java niets aan zijn client gedeelte gaat doen dan heeft java in mijn ogen 100% gefaald op de desktopmarkt aangezien er nauwelijks desktop apps zijn voor java die onder het grote publiek bekend zijn.

Als ik de keuze kreeg om een desktop app te laten maken in .NET of in java dan wist ik het wel. Dan maar 5% minder klanten maar wel een app waar niemand een gek gevoel aan overhoud omdat het er gek uitziet of omdat het traag is.
Ten tweede: Client-Server architectuur, "Microsofts plan" : Programma draait eigenlijk op de server en die client gebruikt het semi-remote, het wordt eerst gedownload (of de benodigde data), zdat de gebruiker bezig kan.
Als je het programma helemaal op de server laat lopen dan gaat die het wel lastig krijgen. En verder is dit een thin client architectuur en niet aan ms gebonden. Trouwens webstart van java kan ook gewoon app downen + libs checken en starten.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Alarmnummer schreef op 14 augustus 2002 @ 16:56:
[...]

Als ik de keuze kreeg om een desktop app te laten maken in .NET of in java dan wist ik het wel. Dan maar 5% minder klanten maar wel een app waar niemand een gek gevoel aan overhoud omdat het er gek uitziet of omdat het traag is.
Een beetje off-topic misschien, maar ik denk net dat je 5% (of misschien wel meer) minder klanten gaat hebben als jouw applicatie traag is en er raar uit ziet.
Het kan consumenten niets schelen (en meestal weten ze het ook niet) in welke taal het programma geschreven is dat ze gebruiken. Conclusie: ik vind dit een rare opmerking van jou. Net alsof mensen gaan weigeren om een app. te gebruiken omdat ze in .NET is geschreven en niet in Java.

https://fgheysels.github.io/


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
met de 5 procent bedoelt ik non windows os`en. Doordat je kiest voor .NET desktop app ga je platform onafhankelijkheid verliezen maar je app ziet er wel strak uit en werkt ook snel.

En ik pik er over het algemeen zo een java app uit. Kloten gui, slecht ontworpen schermen, traage schermen een funny looking. Ik denk dat de keuze in veel opzichten snel genomen is :) Ik verkies zelfs non java apps boven java apps.

Verwijderd

offtopic:
[quote]Alarmnummer schreef op 14 augustus 2002 @ 17:05:
met de 5 procent bedoelt ik non windows os`en. Doordat je kiest voor .NET desktop app ga je platform onafhankelijkheid verliezen maar je app ziet er wel strak uit en werkt ook snel.

En ik pik er over het algemeen zo een java app uit. Kloten gui, slecht ontworpen schermen, traag een funny looking. Ik denk dat de keuze in veel opzichten snel genomen is :) *ik verkies zelfs non java apps boven java apps*[/quote]

Ook gij, Brutus??? :+

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Alarmnummer schreef op 14 augustus 2002 @ 17:05:

En ik pik er over het algemeen zo een java app uit. Kloten gui, slecht ontworpen schermen, traage schermen een funny looking. Ik denk dat de keuze in veel opzichten snel genomen is :) *ik verkies zelfs non java apps boven java apps*


Gij zijt nen raren. :P
Een Javahova die zelf niet graag applicaties gebruikt die in Java geschreven zijn.

Maar goed, ik vermoed dat we zo een beetje teveel off-topic gaan....
Gelieve het beginpad opnieuw te betreden. :)

https://fgheysels.github.io/


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Verwijderd schreef op 14 augustus 2002 @ 16:32:
Het zou hetzelfde principe kunnen zijn dat als je een electronische schakeling schematisch weergeeft (functionaliteit definieren) waarbij de "compiler" er een layout van de printplaat bij maakt waarbij berekend wordt welke componenten waarvoor het meest geschikt zijn.

Kortom: het definieren van functionaliteit middels modellen waarbij de computer zorgt voor de daadwerkelijke implementatie
Oftewel de zogenaamde 4e generatie talen.
Ff een korte uitleg, hoewel de meesten dit wel weten:
1e generatie talen: binair programmeren (schakelingen op 1 of 0 zetten) en hexadecimaal,

2e generatie: Assambler

3e generatie: de algemeen gebruikte talen (C(++), Visual Basic, ASP, PHP, Perl, Fortran, Cobol etc)

En de 4e generatie is dus wat jij omschrijft: de "programmeur" zegt alleen wat er moet gebeuren, computer begint de code te bouwen. Dit principe bestaat al! Het is alleen nooit populair geworden, omdat een computer nooit precies bepaalde gegevens weet waar een programmeur wel over beschikt, dus de computer zal een hoop dingen in de code inbouwen om er voor te zorgen dat het programma altijd werkt, terwijl de menselijke programmeur die dingen wel weet en dus een hoop regels zou weglaten waardoor het programma kleiner kan blijven.

Een voorbeeld hiervan kan ik zo snel ff niet noemen.

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Haskell, Clean, Prolog, SQL.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
MUBA schreef op 14 augustus 2002 @ 17:15:
[...]


Oftewel de zogenaamde 4e generatie talen.
Niet echt, jij doelt op de 5GL talen.
De 4GL talen zijn de talen/tools zoals Delphi, VB, Powerbuilder. De RAD ontwikkeltools zeg maar.

In uw uitleg gooi je de 3GL en de 4GL talen samen:
C, C++, COBOL, Pascal = 3GL
Delphi, VB, Powerbuillder = 4GL.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04


Dat is volgens mij weer heel iets anders, en zeker geen 5GL talen.

https://fgheysels.github.io/


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Oh dan is het in mijn informaticaboek verkeerd uitgelegd, die had het over 4 generaties waarbij de 4e de tools waren die automatisch grove code genereerden...

maar je kan VB wel gebruiken als een 3gl, want je kan al die wizards enzo gebruiken maar je kan ook gewoon alles zelf bouwen... maar dat wou ik niet zeggen.

Ehm met voorbeeld bedoelde ik een voorbeeld van wat voor gegevens de tool niet weet en waardoor die dus teveel code maakt maar die de menselijke programmeur wel weet.

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
whoami schreef op 14 augustus 2002 @ 17:21:

[...]


Dat is volgens mij weer heel iets anders, en zeker geen 5GL talen.
Ik bedoel 4e generatie talen. En dit zijn 4e generatie talen, namelijk de declaratieve talen.

[edit]
Een 4e generatie taal kan ook code genereren (doet haskell en clean bv) dus als je wilt zeggen dat iedere code generende taal 4e generatie is, dan zijn zij dat hier alleen al om.

[ Voor 0% gewijzigd door Alarmnummer op 14-08-2002 17:38 . Reden: foute link ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Alarmnummer schreef op 14 augustus 2002 @ 17:29:
[...]

Ik bedoel 4e generatie talen. En dit zijn 4e generatie talen, namelijk de declaratieve talen.


Daar ga ik niet mee akkoord, maar ik ga nu naar huis, dus een onderbouwing van mijnentwege volgt (hopelijk) later.

Hum, nog eentje uit de oude doos. Ik heb hem zelf nog niet volledig doorlezen (eens vluchtig beken), en blijkt dat ik geen gelijk heb. Maar goed, ik ben eigenwijs en blijf mijn eigen 'indeling' behouden. (Misschien gebruiken we in Belgie wel een andere indeling dan in de rest van de wereld).

Wat houdt 4GL nou precies in.

https://fgheysels.github.io/


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
whoami schreef op 14 augustus 2002 @ 17:31:

[...]


Daar ga ik niet mee akkoord, maar ik ga nu naar huis, dus een onderbouwing van mijnentwege volgt (hopelijk) later.

Hum, nog eentje uit de oude doos. Ik heb hem zelf nog niet volledig doorlezen (eens vluchtig beken), en blijkt dat ik geen gelijk heb. Maar goed, ik ben eigenwijs en blijf mijn eigen 'indeling' behouden. (Misschien gebruiken we in Belgie wel een andere indeling dan in de rest van de wereld).

Wat houdt 4GL nou precies in.
Ik raad je aan het topic even goed door te lezen :)

en gekke belgen ;) wannabee hollanders :P :+ ;)

Verwijderd

In feite houdt software engineering zich bezig met de vraag hoe het beste de gezamenlijke kennis van domein experts zo getrouw mogelijk verwerkt kan worden in een computer systeem. In de regel is de programmeur geen domein expert, maar is diegene die "de taal van de computer" spreekt.

Persoonlijk denk ik dat deze discussie te breed is en beperkt zou moeten worden tot een aantal invalshoeken, zoals bv.:

1. Hoe ziet een toekomstig programmeerparadigma eruit dat beter aansluit bij een menselijk "plaatje" van het te implementeren gedrag? Denk aan Aspect Oriented Programming.
2. Hoe zal ondersteuning kan een programmeeromgeving bieden aan (een groep van) programmeurs? Vb. CASE-tools, versiebeheer, syntax highlighting, etc.
3. Hoe kan het beste omgegaan worden met verschillende "soorten" deelnemers aan een software project? Dus programmeurs, domein experts, managers (zowel aan de zijde van de klant als de ontwikkelaar), gebruikers, software testers, etc. eXtreme Programming valt naar mijn weten onder deze categorie.
4. Hoe zal de verhouding tussen proprietary software en de Open Source community gaan vergroeien. Ik ben van mening dat de Open Source een enorme groei zal (blijven) doormaken en dat de kwaliteit van deze software steeds beter zal worden. Kijk maar naar de stand van zaken nu. Wellicht dat er een soort certificering voor Open Source software zal komen, zodat het probleem van verantwoordelijkheden beter aan te pakken is.

Ikzelf studeer Kennistechnologie; in feite informatica/kunstmatige intelligentie met een nadruk op de koppeling tussen kennis in "the heads of the experts" en kennis/computersystemen. Momenteel werk ik aan mijn afstudeerscriptie over Computational Reflection. Dit onderwerp houdt zich bezig met de vraag hoe computer systemen gebouwd kunnen worden die een notie hebben van hun eigen gedrag en de effecten die hun gedrag hebben in de omgeving waarin het systeem opereert.

Hierdoor zullen computer systemen beter in staat zijn om te anticiperen op bv. veranderende omstandigheden, beter in staat zijn om nuttige informatie te rapporteren naar de gebruiker, enz. Momenteel wordt dit soort gedrag op een ad hoc manier geimplementeerd. Mijn onderzoek richt zich dus op de vraag hoe dit op een meer structurelere manier bereikt kan worden.

Voor de werkelijk geinteresseerde lezer kan ik met klem het artikel "Metaprogramming and Free Availability of Sources" van een franse wetenschapper Francois-Rene Rideau aanbevelen:

http://fare.tunes.org/articles/ll99/mpfas.html

In dit artikel legt hij uit waarom metaprogramming (programma's die zelf programma's schrijven/wijzigen/etc.) in de toekomst meer en meer noodzakelijk zal worden. Daarnaast legt hij uit dat dit valt en staat bij de aanwezigheid van vrij toegankelijke, gratis source code.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Alarmnummer schreef op 14 augustus 2002 @ 17:40:
[...]

Ik raad je aan het topic even goed door te lezen :)


Ik zei toch al dat m'n ongelijk bewezen (min of meer) werd in dat topic?
* whoami gaat het toch nog eens doorlezen.

Ik heb toch enigszins gelijk wat betreft m'n visie over wat een 5GL taal is:
5GL or fifth-generation language is programming
that uses a visual or graphical development interface to
create source language that is usually compiled with a 3GL
or 4GL language compiler. Microsoft, Borland, IBM, and
other companies make 5GL visual programming products for
developing applications in Java, for example. Visual
programming allows you to easily envision object-oriented
programming class hierarchies and drag icons to assemble
program components.
Maar goed, dit is beyond the scope van dit topic. Daarover verder discussieren doen we maar in het eerder aangehaalde topic.

https://fgheysels.github.io/


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Ik lees hier dat 5GL meer op logica inspeelt, ze noemen prolog als voorbeeld van een simpele 5GL. De classificatie is als volgt: 1GL - machine, 2GL - assembler, 3GL - procedural, 4GL - application, 5GL - AI techniques, inference languages, 6GL - neural networks (exhibits learning behaviour)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Misschien kunnen we beter even een nieuw topic openen.

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

offtopic:
Volgens mijn informatica boek (laatste druk), "AIV":

1e generatie: machine code (1100110)
2e generatie: ASM (mov eax, 10)
3e generatie: Hogere programmeertalen
4e generatie: SQL (query talen, code-generatoren, etc)
5e generatie: (OO) client-server, parallelle processing, KI, expertsystemen
6e generatie: CBD, distributed processing, netwerkprocessing, e.d.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Hmmm. Blijkbaar zijn er dus verschillende opvattingen. Maar goed, is het nu zo belangrijk die classificatie?

Ik denk dat we daarover misschien beter in dit topic daaromtrent verder discussieren en hier terug on-topic gaan.

https://fgheysels.github.io/


  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 27-08 08:10
The point of no return gaat eens komen! Bedrijven zijn volledig afhankelijk aan het worden van de informatiesystemen, maar willen daar steeds vaker minder aan uitgeven.

Ik kan bij software tegenwoordig alleen maar aan ad-hoc denken en "nee" dat willen we er niet aan uitgeven. Waarom is dat zo duur? Is toch maar gewoon klikken! #$#$%@$%^&* fucking, weet je hoe lang ik daarvoor gestudeerd heb randd->b!

Software wordt steeds minder op waarde geschat wat nadelig is voor de doorontwikkeling van de methodieken/technieken.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Maar het is soms ook lastig om duidelijk te maken dat sommige dingen niet mogelijk zijn, of dat ze een enorme lading werk veroorzaken. Ik en mijn baas zijn dat wel in balans, hij zegt ja en ik zeg nee ;) Uiteindelijk komen we meestal wel op een werkbaar compromis uit maar het is lastig om een niet programmeur iets uit te leggen. En dan kan je nagaan, mijn baas die heeft nog 1 jaar informatica gedaan op de universiteit dus hij weet er wel iets van af, daarom petje af voor alle mensen die dat eeuwige gezeur aanmoeten horen hoe lang het nog gaat duren en of er nog even iets bij in kan.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Alarmnummer schreef op 15 augustus 2002 @ 10:27:
Maar het is soms ook lastig om duidelijk te maken dat sommige dingen niet mogelijk zijn, of dat ze een enorme lading werk veroorzaken. Ik en mijn baas zijn dat wel in balans, hij zegt ja en ik zeg nee ;) Uiteindelijk komen we meestal wel op een werkbaar compromis uit maar het is lastig om een niet programmeur iets uit te leggen. En dan kan je nagaan, mijn baas die heeft nog 1 jaar informatica gedaan op de universiteit dus hij weet er wel iets van af, daarom petje af voor alle mensen die dat eeuwige gezeur aanmoeten horen hoe lang het nog gaat duren en of er nog even iets bij in kan.
Haha ja dat ken ik. Dat heb ik bij mijn baas ook altijd. Die komt altijd met de fantaschtiste ideen en denkt dat dat dan even in een minuutje gemaakt kan worden enzo. Ik denk dat dat ook een van de grote problemen is dat klanten niet goed genoeg weten wat mogelijk is en hoeveel werk sommige dingen zijn. En als je dan een offerte uitbrengt gaan ze lopen zeuren dat het veel te lang duurt en veels te duur is omdat ze denken dat het in een half uurtje gemaakt is

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Zoals Dijkstra het mooi wist te zeggen:
Je moet ze niet geven wat ze willen, maar wat ze nodig hebben.
:)

  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Verwijderd schreef op 14 augustus 2002 @ 18:04:
In feite houdt software engineering zich bezig met de vraag hoe het beste de gezamenlijke kennis van domein experts zo getrouw mogelijk verwerkt kan worden in een computer systeem. In de regel is de programmeur geen domein expert, maar is diegene die "de taal van de computer" spreekt. [..]
Dit is denk ik de blik de jij op de wereld hebt gekregen door de opleiding die je volgt. Het algemene probleem is uiteraard de formalisering van de kennis die ten grondslag ligt aan een bepaald stuk software.

Een bijkomstigheid is dat voor veel software eigenlijk geen echte domeinkennis aanwezig is. Voorbeeldje hiervan in een administratieve omgeving is bijvoorbeeld een applicatie die de verkoop van een nieuw produkt moet gaan ondersteunen. De 'echte ' kennis van hoe dat in z'n werk gaat is er nog niet, wel een idee van hoe het zou moeten gaan. Dit vraagt om flexibiliteit en creativiteit van de software ontwikkelaar.
4. Hoe zal de verhouding tussen proprietary software en de Open Source community gaan vergroeien. Ik ben van mening dat de Open Source een enorme groei zal (blijven) doormaken en dat de kwaliteit van deze software steeds beter zal worden. Kijk maar naar de stand van zaken nu. Wellicht dat er een soort certificering voor Open Source software zal komen, zodat het probleem van verantwoordelijkheden beter aan te pakken is.
Zelf heb ik het idee dat er eigenlijk twee type software zijn: commodity en custom. Commodity software doet dingen die voor een heel erg grote groep van gebruikers van belang zijn. Voorbeelden hiervan zijn OS'en, web servers, office applicaties etc. Custom software heeft een zeer beperkte doelgroep en lost zeer specifieke problemen op. De kracht van Open Source ligt vooral in de commodity software en volgens mij is er ook een verschuiving van custom -> commodity gaande.

Groot bijkomend voordeel van Open Source is dat er veel bouwblokken beschikbaar komen voor custom applicaties. Zelf heb ik laatst nog een systeem in elkaar gezet met James, een mail server die echt heel erg gemakkelijk te customizen is. Deze mengeling van open source commodity en custom aanpassingen biedt bedrijven de mogelijkheid om heel erg snel op maat gesneden oplossingen te bieden.

Hoe groter de pool van open source hoe sneller deze ontwikkeling zal gaan.
Bedankt voor de link, zal er eens naar kijken.

With the light in our eyes, it's hard to see.


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Een beetje offtopic, maar nog wel in de context (denk ik): Denken jullie dat de 'nieuwe' talen van Microsoft, VB.NET en C# echt de toekomstige talen worden {van microsoft}.. of blijft het bij (V)C(++), en VB6?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Ik denk dat het meer die kant opgaat omdat het nu veel makkelijker is om die talen met elkaar te combineren. Daardoor hoef je dingen maar 1 keer te ontwerpen en dat komt de kosten ten goede. Maar het ligt er natuurlijk wel aan over wat voor soort software je praat. OS`en en drivers en andere snelle zaken zullen natuurlijk in c/c++/asm geschreven worden, maar voor andere software ontwikkeling gaan ze in de toekomst hier wel op overstappen denk ik.

Maar denk dat het voor veel bedrijven op dit moment nog een beetje de kat uit de boom kijken is. Eerst kijken wat de nieuwe technieken te bieden hebben, want het kost natuurlijk wel erg veel geld om over te stappen op een nieuw omgeving ivm cursussen ed.

Uiteindelijk zullen ze er ook niet meer onderuit kunnen door de hoeveelheid nieuwe api`s die eventueel onmisbaar zijn die uitgebracht worden en de ondersteuning van talen en ide`s/tools. Grote ide bouwers zoals borland en ms die bieden nu ook al een .NET omgeving aan, en als je bv ms neemt zullen zullen ze denk ik niet zo stom zijn om meerdere product lijnen naast elkaar te laten bestaan. Na verloop van tijd neemt .NET het denk ik grotendeels over.

[ Voor 0% gewijzigd door Alarmnummer op 15-08-2002 11:24 . Reden: kromme zinnen :D ]


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Erg interresante vraag! Heb er eigenlijk nooit zo bij stilgestaan...

Wel is het zo dat met de nieuwe talen die Microsoft op de markt zet er nog niet echt een ontwikkeling is ontstaan richting 5GL, want we blijven nog gewoon hangen in de lagere (generatie) talen... Op zicht geeft dat niet aangezien je zo de stap voor de programmeurs kleiner maakt en deze dus eenvoudiger kunnen overstappen naar de nieuwe taal wat in de toekomst wellicht een goede stap gebleken mocht zijn....

Wat Alarmnummer zegt:
Ik denk dat het meer die kant opgaat omdat het nu veel makkelijker is om die talen met elkaar te combineren. Daardoor hoef je dingen maar 1 keer te ontwerpen en dat komt de kosten ten goede.
Maar eigenlijk doen wij (bij ons in het bedrijf) dat hier al een beetje voor onze eigen software (welke dan wel in één taal wordt geschreven middels modules o.i.d.). Dit bovenstaande is natuurlijk ook goed te combineren met de opensource gedachtengang, want als er meer en meer zaken zijn die via opensource gecombineerd zijn (Ik bedoel dus stukjes code zoals modules, objecten, etc) is het wel zo dat het steeds eenvoudiger wordt om te gaan programeren.

Met bovenstaande in acht nemen kom je dan ook weer in de visie van Francois-Rene Rideau, aangezien de programma's welke code gaan kloppen ook weer gebruik kunnen gaan maken van deze standaard te combineren modules (programma code).

Verder denk ik dat de toekomst ontwikkeling (op software ontwikkelings gebied) een stuk langzamer zal gaan dan wijzelf (o.a. ik) zou willen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
41.6C.6D.61.72 schreef op 15 augustus 2002 @ 11:06:
Een beetje offtopic, maar nog wel in de context (denk ik): Denken jullie dat de 'nieuwe' talen van Microsoft, VB.NET en C# echt de toekomstige talen worden {van microsoft}.. of blijft het bij (V)C(++), en VB6?



Dit worden wel de toekomstige talen van Microsoft. (Waarom zouden ze ze anders ontwikkelen en zij bepalen het echt wel of dat hun 'nieuwe talen' worden of niet). Als ze enkel nog VB.NET, C# (geen Visual Basic) en een C++.NET compiler (waar je trouwens nog native code kunt mee genereren) in hun Visual Studio steken, dan hebben de ontwikkelaars dir MS-producten gebruiken niet veel keuze.

Worden ze in het algemeen de talen? Ik denk wel dat ze een grote kans maken, MS heeft al meerdere keren de standaard gezet. Vooral het .NET platform voor Windows zal een 'standaard' worden. Delphi 7 zal ondersteuning bieden voor .NET en eigenlijk zal iedere toekomstige/nieuwe versie van een programmeertaal dat moeten doen.

Als je wilt dat je als bedrijf een label 'designed for Windows bla' wilt krijgen van MS voor de door u ontwikkelde software, dan moet je van MS aan een aantal eisen voldoen. Een van die eisen zal in de toekomst wel worden dat je .NET - compatible code hebt.... Dus zal je als bedrijf er niet van onder kunnen.
MS zet alweer de standaard.

https://fgheysels.github.io/


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik geloof sterk in de opkomst van talen voor een speciek domein, ook wel bekend als domein specifieke talen ;) afgekort: DSL (domain specific language in het Engels). Het grootste bewijs hiervoor is de sterke opkomst van XML.

Waarom? Daarvoor moet ik eerst even kort iets filosoferen wat een programmeertaal nu eigenlijk is. Misschien komt dit stukje wat simplistisch over en denk je 'duh, dat weet ik wel', maar het is wel goed om er eens bij stil te staan. Gewoon doorlezen dus ;) .

Waarom gebruiken we programmeertalen? Waarom zijn er zoveel verschillende programmeertalen? Waarom gebruikt een programmeur vaak verschillende programmeertalen, terwijl hij in de het dagelijks leven meestal maar 1 taal spreekt (Nederlands in ons geval ;) )?

Programmeertalen zijn er om een computer op een prettige manier te instrueren. Een computer spreekt in principe maar 1 'taal'. Deze taal is gebaseerd op de architectuur van een computer en wordt 'leesbaar' gemaakt in de vorm van assembly. Assembly is een taal die volledig gericht is op de architectuur van de computer: registers, data, eenvoudige rekenkundige instructies, sprong-instructie enzovoorts. Als je een computer wilt vertellen wat hij moet doen, ligt het voor de hand om dit in de taal van de computer te doen. Als je een Fransman iets wijs wilt maken, moet je dat immers ook in het Frans doen. Maar ja, Frans is niet jouw taal en daarom is het in vrijwel alle situaties erg lastig om in je in het Frans uit te drukken. Veel liever zou je gewoon Nederlands praten. Het is daarom wellicht effectiever om een tolk in te schakelen en deze jouw Nederlandse boodschap te laten vertalen.

Dit is te vergelijken met de functie van een compiler. Een compiler zet een programma in bepaalde taal (de source taal) om in een equivalent programma in een andere taal (de target taal). Vaak is de source taal op dit moment een imperatieve taal zoals C, C++, C#, Java, Pascal enz. De target taal is vaak assembly.

Programmeertalen zijn ontworpen om jezelf prettig uit te kunnen drukken. Je wilt je probleem zo compact en duidelijk mogelijk omschrijven en programmeertalen trachten deze functionaliteit te bieden aan een programmeur. Problemen verschillen echter sterk: een administratie applicatie is iets heel anders dan een C# compiler en een dynamische website is iets heel anders dan routeplanner.

Daarom zijn er verschillende paradigma's. Het imperatieve paradigma is op dit moment voor 'normale' applicaties nog een zware monopolist. Het imperatieve paradigma is in feite een beetje een abstractie van de architectuur van de moderne computer: imperatief programmeren is sterk gebaseerd op de architectuur van de computer, maar maakt alles toch wat prettiger dan assembly. Imperatief object georienteerd programmeren abstraheert weer een beetje verder, maar is nog steeds sterk gebaseerd op de 'taal' van de computer. Alle 'belangrijke' talen zoals C++, C#, Java, Delphi, PHP verschillen niet bepaald fundamenteel: de verschillen zitten met name in details (of zelfs libraries) en niet bepaald in fundamentele verschillen in uitdrukkingsmogelijkheid.

Er zijn echter ook fundamenteel andere paradigma's. Deze paradigma's worden vaak verzameld onder de noemer 'declaratief'. Declarativiteit is een beetje een vervelende term, maar tegenwoordig wordt er vaak mee bedoeld dat je iets niet uitdrukt in de architectuur van de computer. Functioneel programmeren is hier een voorbeeld van. Bij functioneel programmeren is alles (echt alles!) een functie. Sommige zaken kan je hierin erg prettig en compact uitdrukken, andere zaken (imho) weer een stuk minder ;) .

Vergelijk het eens met de echte wereld: de Nederlandse taal zou je een general purpose language kunnen noemen. Nederlands kan je in principe wel gebruiken om alles uit te drukken. Java, C, C++, C# etc zijn ook general purpose languages: je kan ze voor alle doeleinden gebruiken. Haskell en Clean (functionele talen) zijn in feite eigenlijk ook nog wel een soort general purpose languages: ze bieden een fundamenteel andere manier om je uit te drukken, maar in principe kan je er alles aardig goed in uit drukken (let op dat ik de nadruk leg op 'aardig goed' omdat heel veel talen sowieso Turing compleet zijn, wat echter niet wil zeggen dat je iets ook prettig kunt uitdrukken).

SQL en XSLT zijn heel anders: dit zijn duidelijk geen general purpose languages, maar talen voor een specifiek domein. DSLs dus. SQL is uiteraard een taal om queries in te schrijven over een database. XSLT is een taal om transformaties te beschrijven op XML. Beide talen richten zich sterk op problemen in een bepaald domein en daarom kan je problemen in deze domeinen erg prettig in deze talen uitdrukken. XSLT is op dit punt toch nog een beetje anders dan XSLT: in SQL beschrijf je eigenlijk slechts vrij kleine expressies in relationele algebra en daarom noem ik het ook weleens een 'expressie taal'. XSLT is behoorlijk anders: een XSL Transformatie heeft weinig weg van een expressie zoals bijvoorbeeld een numerieke expressie of een expressie in de relationele algebra. XSLT speelt daarom een vrij bijzondere rol. Het is namelijk de eerste declaratieve taal (waarbij ik SQL dus negeer) die gebruikt wordt door een groot publiek: gewone programmeurs ('arbeiders', absoluut niet neerbuigend bedoeld), niet alleen onderzoekers of zeer hoog opgeleide programmeurs.

Terug naar mijn voorbeeld uit de echte wereld: Nederlands kan je dus voor alle doeleinden gebruiken, maar het is lang niet de meest geschikte taal voor alle doeleinden. Niet voor niets zijn er verkeersborden met tekens (in plaats van een omschrijving in het Nederlands) en niet voor niets gebruiken we 22:45 om de tijd aan te geven ipv twee en twintig uur vijf en veertig. Bij het uitprogrammeren van problemen is dit precies zo: een database query omschrijf je het liefst in een taal die zich speciaal richt op dit domein. SQL dus bijvoorbeeld. Een transformatie op een XML document ga je het liefst niet uitprogrammeren in Java met behulp van een DOM, maar beschrijf je in XSLT.

Ik denk dat je in de toekomst steeds meer talen zult zien die zich richten op hele specifieke domeinen. Het wordt namelijk steeds lastiger om je op een compacte manier uit te drukken in een imperatieve taal: applicaties worden steeds groter en de correctheid en de structuur van zo'n applicatie is steeds lastiger in te zien. De enige manier om dit te verbeteren is om talen te ontwikkelen voor een specifiek domein. Talen voor userinterfaces (XUL), talen voor transformaties (XSLT, Stratego), talen voor queries (XPath. XQuery, SQL) enzovoorts. De toepassingen waar echt domein specifieke talen voor nodig zijn kan ik ook niet allemaal voorzien, dus je mag de lijst zelf aanvullen met goede voorbeelden ;) .

Het is misschien een vreemde sprong, maar XML is het levende bewijs van mijn bewering dat domein specfieke talen een belangrijke rol gaan spelen. Waarom?

XML is namelijk in feite niet echt nieuw. XML valt te formaliseren via een formalisme voor boom-achige talen: 'regular tree languages'. Waarom? Vrijwel alle programmeertalen worden beschrijven met behulp van een grammatica. Deze grammatica is vrijwel altijd een context-vrije grammatica. Allemaal iets om je echt even flink in te verdiepen en dus niet in een paar regels uit te leggen, maar het komt er op neer dat alle programmeertalen in feite een concrete syntax zijn voor boom-structuur: een abstract syntax tree. Deze abstract syntax tree is niets anders dan een regular tree in een bepaalde regular tree language.

Een klein voorbeeldje: 4 + 5 * 6 is een rekenkundige expressie. Een compiler werkt intern niet met de string '4 + 5 * 6', maar zet dit om naar een boom-structuur. Deze omzetting wordt uitgevoerd door een parser. Een parser zet een string in een bepaalde taal om naar een boom-structuur. Deze omzetting wordt gedaan aan de hand van de grammatica voor deze taal. De boom voor 4 + 5 * 6 zou er zo uit kunnen zien:

code:
1
2
3
4
5
6
7
8
9
add
   |
   ----- Int: 4
   |
   |---- multiply
       |
       ----- Int: 5
       |
       ----- Int: 6


De grammatica voor dergelijke rekenkundige expressies zou er zo uit kunnen zijn:

code:
1
2
add:      expression "+" expression -> expression
multiply: expression "*" expression -> expression

(waarbij er elders nog aangegeven moet zijn dat vermenigvulding een grotere prioriteit heeft dan optelling).

Laat ik nu eens deze boom anders gaan schrijven:

code:
1
2
3
4
5
add
   Int: 4
   multiply
      Int: 5
      Int: 6


en nog een keer anders:

code:
1
2
3
4
5
<add>
   <Int> 4
   <multiply>
      <Int> 5
      <Int> 6


en nog een keer anders:

code:
1
2
3
4
5
6
7
<add>
   <int> 4 </int>
   <multiply>
      <int> 5 </int>
      <int> 6 </int>
   </multiply>
</add>


Hum.... wachts eens.... dat is XML!

Als je op deze manier tegen XML aankijkt, is XML in feite een afsnij-route. XML slaat de hele concrete syntax over en begint gewoon bij de abstracte syntax (de voordelen hiervan zijn niet het onderwerp van dit topic, dus daar zal ik niet op in gaan...). Elke XML structuur die je ontwerpt is daaromte vergelijken met het ontwerpen van een 'echte' taal. Je ontwerpt een taal in de boom-vorm en je zou daar later nog best een concrete syntax voor kunnen verzinnen (wat met sommige XML talen ook gebeurt).

XML is naar mijn mening voor een groot deel zo populair geworden omdat je er heel gemakkelijk een domein specifieke taal (DSL !!) in kunt maken. Veel XML formaten zijn puur gericht op data, maar is er geen enkele reden waarom je talen voor data echt anders zou moeten behandelen.

XML is vanwege zijn verbositeit echter niet echt geschikt om in te programmeren. Dit is vaak een punt van kritiek op XSLT, terwijl XSLT eigenlijk nog maar voor een klein deel echt de XML aanpak aanhoudt (XPath heeft geen XML syntax). XML is daarom slechts een schets van de mogelijkheden in de toekomst. Het wordt namelijk dankzij allerlei tools en talen steeds makkelijker om eigen 'echte' talen te ontwikkelen. Zodra dit zo weinig moeite kost dat je echt grote voordelen krijgt bij het ontwerpen van een domein specifieke taal, zal er een ware explosie ontstaan van het gebruik van domein specifieke talen, zoals je ook een explosie gezien hebt in het gebruik van XML als uitwissel-formaat tussen applicaties.

Hier zie je code-generatie terug. De voorspelling dat DSLs een belangrijke rol zullen gaan spelen, staat in feite gelijk aan de voorspelling dat code generatie een belangrijke rol zal gaan spelen. DSLs moeten namelijk uiteindelijk toch uitgevoerd worden op een computer en hier komt code-generatie naar voren. DSLs zullen geimplementeerd worden door middel van een vrij eenvoudige compiler die een DSL vertaalt in een imperatieve taal: Java, C++, C bijvoorbeeld.

De kern van dit hele verhaal is dat je in een DSL gaat uitdrukken wat je probleem is in een specifiek domein. De compiler/code generator zorgt ervoor dat dit 'wat' vertaalt wordt in een 'hoe': De specificatie van wat het probleem is, wordt vertaald in een specificatie van hoe dit probleem moet worden uitgevoerd.

De generator van Otis, die je vast langs hebt zien komen, is een aardig voorbeeld: de specificatie van het probleem zit daar in de database: specificaties van tabellen in de database. Hij had daar ook een domein specifieke taaltje voor kunnen ontwerpen (of dat nu in abstracte syntax (XML) of concrete syntax is (wellicht SQL CREATES)), waarbij de vergelijking nog beter op zou gaan. Uit de specificatie genereert hij enorme smakken code. Deze code valt in een heel specifiek domein: communicatie met een (remote) database vanuit een OO-taal. Code generatie bespaart je hier enorm veel werk, omdat de 'compiler' van Otis weet hoe de specificatie vertaalt moet worden in een implementatie.

Zo. Nu vind ik dat ik wel weer genoeg heb getikt ;) . Ik hoop dat ik je heb kunnen boeien tot deze afsluiting ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1