Toon posts:

[.NET] HET voordeel van .net: Mondrian

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb net een artikel gelezen in Dr. Dobbs Journal over mondrian. Mondrian is een strict functionele taal voor het .net framework van microsoft.

Wat is hier nu zo geweldig aan? Via het common language runtime model kunnen functies geschreven in mondrian gebruikt worden in elke taal die clr ondersteund (bijvoorbeeld C#). Voorbeelden hiervan zijn bijvoorbeeld oneindige lijsten (van priemgetallen bijvoorbeeld) of algoritmen die efficienter met behulp van lazy evaluation kunnen worden opgelost.

Ik ben zelf meer een Java programmeur maar vind dit wel een mooie constuctie. Wat vinden jullie hiervan? Kan dit bijvoorbeeld ook in Java? Of wordt dit weer 1 grote marketing scam van Microsoft?

link naar mondrian: hier
link naar DDJ:
hier

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
XKB: Ik heb net een artikel gelezen in Dr. Dobbs Journal over mondrian. Mondrian is een strict functionele taal voor het .net framework van microsoft.
Haha grappig dat ik dat hier tegenkom :) . Modriaan is in feite een kloon van Haskell en oorspronkelijk voornamelijk gemaakt door Erik Meijer, docent aan de Universiteit Utrecht en nu een hoge pief in het .NET ontwikkelings-team. Velen zullen hem wel kennen van zijn leuke praatjes in Nederland ;) .
Wat is hier nu zo geweldig aan? Via het common language runtime model kunnen functies geschreven in mondrian gebruikt worden in elke taal die clr ondersteund (bijvoorbeeld C#). Voorbeelden hiervan zijn bijvoorbeeld oneindige lijsten (van priemgetallen bijvoorbeeld) of algoritmen die efficienter met behulp van lazy evaluation kunnen worden opgelost.
Het kan inderdaad sprookjes-achtig zijn, maar het is nog niet. Modriaan compileert naar C# (althans, de laatste keer dat ik het zag). Gecompileerde Mondrian code is absoluut niet geoptimaliseerd en gebruikt dus niet de features die MSIL biedt en Java Bytecode niet.

Mondriaan zou daarom ook uitstekend naar Java of Java Bytecode kunnen compileren. Ik heb een tijdje geleden wat geexperimenteerd met lazy-evaluation in Java (zal zo ff het topic opzoeken). By-design is dat dus gewoon mogelijk. Is de performance goed? Nee, dat niet.
Ik ben zelf meer een Java programmeur maar vind dit wel een mooie constuctie. Wat vinden jullie hiervan? Kan dit bijvoorbeeld ook in Java?
Dit kan wel in Java, maar er zijn we degelijk grote verschillen. Java bytecode is volledig opgezet als instructie-set voor Java (of een andere OO-taal). Zaken die je in een implementatie van een functionele taal typisch nodig hebt zoals optimalisatie van tail-recursie, stack-frames op de heap en het benaderen van niet lokale variabelen is allemaal niet mogelijk met Java Bytecode en wel met MSIL. Maar: dat is een bewuste keuze. De keuzen die bij MSIL gemaakt zijn hebben wel degelijk nadelen.
Of wordt dit weer 1 grote marketing scam van Microsoft?
Ja en nee dus :) . De samenwerking tussen verschillende paradigma's is erg interessant en het is leuk dat dat in .NET kan. Helaas is het ook zo dat paradigma's niet goed kunnen samenwerken. Je ziet namelijk dat alle talen '.NET-ified' worden om goed in het .NET Framework te passen. Dit zie je zelfs al bij C++, J# en VB .NET. Het is een sprookje dat je vanuit Mondriaan op een vloeiende manier alle .NET libraries kunt gebruiken of andersom. De paradigma's zijn daarvoor te incompatible IMHO.

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


Verwijderd

Topicstarter
Jammer dat ze mondrian naar c# omzetten.. dat beperkt het wel weer heel erg :(

En waarom wist ik dat jij als eerste zou reageren ;)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Zie dit topic:

[topic=197726/1/25]

Hier ben ik begonnen aan een implementatie van parser-combinators in Java, die ik nooit meer afgemaakt heb. Ik heb echter wel gewerkt met 'oneindige' lijsten en enkele eenvoudige combinators.

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


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
XKB: Jammer dat ze mondrian naar c# omzetten.. dat beperkt het wel weer heel erg :(
Inderdaad, ik was ook zwaar teleurgesteld toen ik het zag. Overigens schijnt men wel bezig te zijn met een Haskell compiler voor MSIL. In principe is dit ook beter mogelijk in MSIL dan in Java Bytecode. Er zijn in het verleden enkele papers verschenen over het Haskell compilers voor Java Bytecode, maar dit is nooit echt iets geworden. Als je het wilt doen, moet je naar een design compileren zoals ik handmatig deed.
En waarom wist ik dat jij als eerst zou reageren ;)
Stille liefde ;) .

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


Verwijderd

Topicstarter
Op zondag 20 januari 2002 14:55 schreef mbravenboer het volgende:

[..]

Inderdaad, ik was ook zwaar teleurgesteld toen ik het zag. Overigens schijnt men wel bezig te zijn met een Haskell compiler voor MSIL. In principe is dit ook beter mogelijk in MSIL dan in Java Bytecode. Er zijn in het verleden enkele papers verschenen over het Haskell compilers voor Java Bytecode, maar dit is nooit echt iets geworden. Als je het wilt doen, moet je naar een design compileren zoals ik handmatig deed.
Heb je misschien wat linkjes naar die papers?
[..]

Stille liefde ;) .
Dan ken je Clean waarschijnlijk ook wel?

Verwijderd

Op zondag 20 januari 2002 14:55 schreef mbravenboer het volgende:
Overigens schijnt men wel bezig te zijn met een Haskell compiler voor MSIL.
Dat heb ik idd toen ook eens gelezen, maar op heel internet is geen enkele link naar Haskell.Net te vinden :(.
Het lijkt me zeer interresant, want dan zou je c# (of VB.Net) en Haskell kunnen combineren, om de voordelen van beide te combineren!
Ook zou ik m'n Haskell kennis dan nog eens nuttig kunnen toepassen ;)

Weet iemand hier hoever Haskell.Net gevorderd is :?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
XKB: Heb je misschien wat linkjes naar die papers?
Ik weet zo niet waar ik ze vandaan had, dus heb ze zelf maar even online gezet. Download ze wel ff, want ik haal ze later weer weg:

http://www.pandoramix.org/temp/java-haskell/
Dan ken je Clean waarschijnlijk ook wel?
Ja, maar ik heb er nooit echt mee gewerkt. Gelukkig sluiten de meeste functionele talen aardig op elkaar aan :) . Als je Haskell kent zijn de verschillen tussen de talen slechts details... Er is trouwens weleens een topic geweest over Clean-Haskell, maar dat kwam niet echt op gang (zie vooral tweede pagina):

[topic=344737/1/25]

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


Verwijderd

Topicstarter
Ik heb ze gedownload.. Thanks!

Verwijderd

Topicstarter
Aanvulling: de volledige text van het artikel staat hier

veel plezier ermee
Pagina: 1