Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Eigen taal ontwikkelen.  (gelezen 3933 keer)

Eigen taal ontwikkelen.
« Gepost op: 2009/08/26, 21:00:08 »
Hoi!

Ik vroeg me 'even' af. Zou het hypotetisch gezien mogenlijk zijn om een eigen taal te ontwikkelen? Allez ik weet dat het mogelijk is, maar hoe zou dit dan in z'n werk gaan?

Alvast bedankt!

Offline Ronnie

  • Lid
    • ronnie.vd.c
Re: Eigen taal ontwikkelen.
« Reactie #1 Gepost op: 2009/08/27, 00:41:33 »
Veel verstand heb ik er niet van, maar je zult een soort van compiler moeten hebben, die jou taal omzet naar machine taal.
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Documentatie Terminal

Offline joop13

  • Lid
Re: Eigen taal ontwikkelen.
« Reactie #2 Gepost op: 2009/08/27, 00:58:36 »
Volgens mij is Python ook begonnen als een privé projectje en je kunt er ook gewoon aan meewerken.....http://www.python.org/dev/
Door gebrek aan visie gaat het volk ten onder, een keur van raadgevers brengt het tot bloei.

Twee laptops 16.04 Ubuntu, 1 laptop Linux Mint,

Re: Eigen taal ontwikkelen.
« Reactie #3 Gepost op: 2009/08/27, 08:42:17 »
Of je programmeert 'm in C. C an sich is weer gemaakt in assembly geloof ik, maar dat wil je tegenwoordig echt niet meer gebruiken voor grote projecten...

Offline MartijnB

  • Lid
    • http://www.mbastiaan.nl
Re: Eigen taal ontwikkelen.
« Reactie #4 Gepost op: 2009/08/27, 08:59:07 »
Volgens mij is C uiteindelijk weer in C geschreven XD. De eerste compilers zijn inderdaad wel ASM geweest.

Re: Eigen taal ontwikkelen.
« Reactie #5 Gepost op: 2009/08/27, 14:33:35 »
Het is niet zo vanzelfsprekend hoor... Voordat je nog maar begint te programmeren aan je compiler of (makkelijker) interpreter, moet je toch heel wat dingen overpeinzen...

1) Ga je een weakly typed (zoals python, javascript) of strong typed (Java, C(++)) programmeertaal maken?
2) Welke types worden vooraf ingebouwd? Kunnen die naar elkaar geconverteerd worden? Wat gebeurt er bij een foute conversie?
3) Kan je wiskundige operaties op een type uitvoeren? Hoe wordt dit genoteerd, welke operators zijn er?
4) Zijn er functies? Hoe worden functies genoteerd? Kunnen die parameters krijgen? Hoe wordt dat weer genoteerd? Kunnen ze geen, één, of meerdere dingen retourneren, notatie? Worden types per kopie of per referentie doorgegeven, of kan de gebruiker kiezen (notatie!) ?
5) Zijn er klassen? Hoe worden deze genoteerd? Is er overerving (+notatie)? Zijn er public/private/protected entries? Hoe worden die beschermd (compiler controleert, name mangling, ...)? Notatie?
6) Is er multiple inheritance? Notatie? Hoe ga je het 'diamantprobleem' aanpakken?
7) Zijn er abstracte klassen? Notatie? Kan je een klasse benaderen door een verwijzing naar zijn subtype? Hoe ga je dit soort aanroepen oplossen? Kan een klasse zijn supertype weten? etc...
8) Zijn operator overloads mogelijk? Notatie? Kan men operators toevoegen? Notatie?
9) Zijn er templates? Ga je jezelf van kant maken? Hoe noteer je dat allemaal?
10) Welke keywords wil je reserveren? Kunnen die keywords afhankelijk van hun context iets anders betekenen, of zelfs geen keyword meer zijn? En hoe noteer je ze? Waar zet je ze?

Als je dat allemaal overpiekert hebt, en je hebt nog steeds zin om je programmeertaal te maken, wordt het tijd om aan een interpreter of een compiler te werken. Voor- en nadelen:
Interpreter:
+ Snel te schrijven
+ Kan eenvoudig cross-platform gemaakt worden
- Traag
- Programma is niet 'native'
Compiler:
+ Programma is native
+ Na één compilatie kan je gewoon de binary draaien aan de gewone snelheid
- Ooh nee, je moet alles naar assemblerinstructies omzetten!
- En assembler is niet cross-platform

Goed, je leest nog steeds, dus nu heb je een compiler of interpreter, een taal, dus we zijn klaar en die boel uploa... wacht, je kan nog niets met de taal. Je wilt ook nog een standaardbibliotheek. Nu kan je meteen testen of je taal goed is, plus, het roept een hoop nieuwe vragen op...
1) Ga je besturingssysteem-specifieke dingen in je stdlib zetten? Hoe ga je dat doen?
2) Ga je stukken uit de C-bibliotheek nodig hebben? Hoe ga je jouw taal met C linken? Is daar een extra stuk grammatica voor nodig?
3) Hoe ga je detecteren op welk OS je zit van uit de taal?
4) etc...

Goed, je hebt een taal, een compiler/interpreter, én een standaardbibliotheek. En als je dit allemaal zelf hebt gedaan, proficiat, en scheer die grijze baard eens af voordat je versie 0.0.1 gaat uploaden :P

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline JvH

  • Lid
Re: Eigen taal ontwikkelen.
« Reactie #6 Gepost op: 2009/08/27, 16:50:04 »
Oh, als dat alles is... :P

Offline Ronnie

  • Lid
    • ronnie.vd.c
Re: Eigen taal ontwikkelen.
« Reactie #7 Gepost op: 2009/08/28, 01:40:43 »
Oh, als dat alles is... :P

Deadline is over 2 weken, toch  O0
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Documentatie Terminal

Re: Eigen taal ontwikkelen.
« Reactie #8 Gepost op: 2009/08/28, 14:35:40 »
Haha :p

Bedankt allemaal. En de meeste dingen van SeySayux had ik toch echt al over nagedacht! (Wonderbaarlijk hé!)
Maar ik dacht eigenlijk aan iets makkelijkers. :')
Bijvoorbeeld in het begin gewoon een taal waar je maximum wat rekensommetjes mee zou kunnen maken :p
Ik weet dat het er nooit zal van komen, maar hypothetisch lijkt het me wel interessant.

Alvast bedankt xD

Offline track

  • Lid
Re: Eigen taal ontwikkelen.
« Reactie #9 Gepost op: 2009/08/28, 14:41:05 »
Maar in dat geval kun je in een bestaande taal naar smaak gewoon macro's aanmaken toch ?
Of je eigen functies, dat doe ik zelfs in mijn awk- scriptjes ...
En je zal zien, vaak is er al precies de functie die je zoekt, en in een geoptimalseerde versie zelfs.
(een andere nerd was dus sneller  ;) )

track
« Laatst bewerkt op: 2009/08/28, 14:44:06 door track »

Offline JvH

  • Lid
Re: Eigen taal ontwikkelen.
« Reactie #10 Gepost op: 2009/08/28, 21:17:33 »
Ik denk dat het de TS vooral om de uitdaging van het creëren van een nieuwe taal te doen is.

Offline JanClaeys

  • Lid
Re: Eigen taal ontwikkelen.
« Reactie #11 Gepost op: 2009/08/28, 21:53:04 »
1) Ga je een weakly typed (zoals python, javascript) of strong typed (Java, C(++)) programmeertaal maken?
???

Python is strongly typed, C & C++ zijn weakly (of toch minstens "minder strongly) typed (waarschijnlijk bedoelde je dynamic vs. static typing?).

Zie:
http://en.wikipedia.org/wiki/Weak_typing
http://en.wikipedia.org/wiki/Strong_typing
http://en.wikipedia.org/wiki/Type_system
Jan Claeys
Ubuntu-nl IRC team - Ubuntu-be LoCoTeam Contact

Re: Eigen taal ontwikkelen.
« Reactie #12 Gepost op: 2009/08/29, 18:31:48 »
1) Ga je een weakly typed (zoals python, javascript) of strong typed (Java, C(++)) programmeertaal maken?
???

Python is strongly typed, C & C++ zijn weakly (of toch minstens "minder strongly) typed (waarschijnlijk bedoelde je dynamic vs. static typing?).

Zie:
http://en.wikipedia.org/wiki/Weak_typing
http://en.wikipedia.org/wiki/Strong_typing
http://en.wikipedia.org/wiki/Type_system
Ik bedoelde inderdaat dynamic versus static, maar zowel Python als C(++) zijn strongly typed.
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: Eigen taal ontwikkelen.
« Reactie #13 Gepost op: 2009/09/01, 10:24:13 »
Haha :p

Bedankt allemaal. En de meeste dingen van SeySayux had ik toch echt al over nagedacht! (Wonderbaarlijk hé!)
Maar ik dacht eigenlijk aan iets makkelijkers. :')
Bijvoorbeeld in het begin gewoon een taal waar je maximum wat rekensommetjes mee zou kunnen maken :p
Ik weet dat het er nooit zal van komen, maar hypothetisch lijkt het me wel interessant.

Alvast bedankt xD


Het is idd handig om simpel te beginnen. Ik zou dan even kijken naar Compiler Constructers http://en.wikibooks.org/wiki/Compiler_Construction. Hiermee kun je relatief snel een simpel taaltje definieren.
Zelf heb ik ooit voor school moeten spelen met YaCC en Lex: http://www.google.nl/search?q=yacc+lex+tutorial
Maar er zijn ook genoeg andere compiler-compilers...

stukje theorie: http://nl.wikipedia.org/wiki/Lexicale_analyse
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!