Microsoft's C# en CLI erkend door ECMA

C|Net meldt dat de European Computer Manufacturers Association (ECMA) de programmeertaal C# en de Common Language Infrastructure (CLI), beide afkomstig van Microsoft, heeft erkend als standaard. ECMA is een van de standaardisatie-organisaties in de wereld, naast IEEE, ANSI en ISO. De erkenning heeft in zoverre waarde dat de standaarden gecontrolleerd worden door de ECMA en derde partijen informatie omtrent de standaarden, en in dit geval informatie over C# en de CLI, kunnen opvragen bij de ECMA, waardoor afhankelijkheid van Microsoft wordt vermeden.

C# en de CLI zijn hoekstenen van het op 13 februari 2002 te lanceren platform .NET. Om een zo breed mogelijke acceptatie onder ontwikkelaars te verkrijgen heeft Microsoft een aantal drempels geprobeerd weg te nemen. Een daarvan is de afhankelijkheid van een groot bedrijf wanneer het gaat om de definities van een standaard waarop ontwikkelaars hun programmatuur baseren:

dotnet LogoMicrosoft submitted the technology to ECMA last year with the hope that a standardized version of the software--administered by ECMA--will be adopted by other software makers for building .Net-compliant programs running on operating systems other than Windows, and thus expanding .Net's popularity.

"ECMA's decision to ratify C# and the CLI technology confirms Web services are and are going to continue to play an important role in the development of future innovations," Microsoft spokesman Dan Leach said. "Obviously ECMA's endorsement for C# and the CLI program supports Microsoft's vision for .Net and Web services."

Het is niet zo dat de technologie, zoals geïmplementeerd door Microsoft, nu vrij kopieerbaar is. Microsoft mag blijven bepalen wie de implementatie mag licenseren en wie niet. De implementatie van Ximian, genaamd Mono, valt daar buiten, het is puur gebaseerd op de door ECMA verstrekte standaarden, waardoor de standaardisatie al meteen zijn vruchten afwerpt. Voor de Microsoft-adepten is hier een link naar de press-release.

Met dank aan Anoniem: 19343 voor de tip.

Door Frans Bouma

Nieuwsposter

15-12-2001 • 17:46

24

Bron: C|Net

Reacties (24)

24
23
19
6
2
0
Wijzig sortering
Er heerst geloof ik veel verwarring:
De licenties gelden voor de IMPLEMENTATIE, niet voor de standaard, de taal zelf. Het betekent dus alleen dat compilers en andere software die Microsoft gemaakt heeft niet vrij gekopieerd/gebruikt mogen worden. Je mag echter natuurlijk wel zelf de taal implementeren, dus zelf een compiler bouwen bijvoorbeeld, daarvoor is het een standaard, Mono is een voorbeeld van een open source implementatie voor .net (nog in ontwikkeling).

Dit in tegenstelling tot Java, wat GEEN open standaard is, het is alleen van Sun. Sun geeft juist wel compilers en virtual machines gratis weg, maar zelf een implementatie van Java maken (bijvoorbeeld een uitgebreidere versie) mag niet zonder toestemming van Sun. Dit is dus precies de reden dat Microsoft .net en C# heeft ontwikkeld omdat ze problemen kregen met Sun.

Dat .net en C# door ECMA zijn gestandaardiseerd is goed nieuws (zeker voor diegenen die geen fan zijn van Microsoft), het betekent dat ECMA moet beslissen over eventuele uitbreidingen/veranderingen van de standaard, en dat Microsoft dus niet opeens zomaar eraan kan gaan sleutelen.

Behalve de standaard is .net op meerdere punten superieur aan Java: voor beide geldt dat er systeemonafhankelijke executables worden gecompileerd, maar waar voor Java een (trage) virtual machine nodig is, gebruikt .net een eenmalige "vertaling" naar code voor een specifiek OS. Deze vertalers mag je dus ook zelf bouwen. Stel dat er zo'n "vertaler" voor Linux komt, dan zou alle .net software ook onder Linux gedraaid kunnen worden, bijvoorbeeld Office XP dus (is nu grotendeels .net, maar wordt het volledig).

Dit betekent dus, dat mogelijk over een tijdje Office op nog meer OSen gedraaid kan worden. Microsoft wordt hierdoor dus gedwongen om van Windows daadwerkelijk een goed product te maken, ze zijn er zelf van overtuigd dat Windows nu en vooral in de toekomst zo briljant wordt, dat Linux geen echte bedreiging is... de tijd zal het leren.
Ik ben een stuk minder enthousiast over de mogelijkheden om een .NET CLR op andere platformen te implementeren.

In principe zijn deze stappen van Microsoft natuurlijk uitermate goed. Standaarden zijn per definitie goed en zeker als dit de volledige controle van een bedrijf met zo'n enorme monopolie positie zoals Microsoft kan beperken.

Maar goed, ze zijn bij Microsoft ook niet achtelijk. De .NET CLR bevat enorme hoeveelheden libraries die zeer specifiek op het MS Windows platform gericht zijn. Op dit platform zijn deze libraries goed te implementeren, op andere platformen is het naar mijn mening nagenoeg onmogelijk. Een voorbeelden hiervan zijn de WinForms. Deze zijn IMHO door geen enkel ander bedrijf dan Microsoft te implementen voor andere platformen. Mocht er al iemand aan een implementatie gaan werken dan zal deze voorlopig totaal incompatible zijn door ander tekengedrag, andere events enz. Het is gewoon veel te hoog gegrepen om zo'n enorme GUI library platform-onafhankelijk te verklaren. Een ander voorbeeld is ADO .NET.

Het implementeren van een C# compiler en een runtime die .NET IL kan uitvoeren is geen enkel probleem. Dat kan iedereen met een informatica opleiding zowat wel. De libraries, daar gaat het om. Pas was er in P&W op the Gathering of Tweakers nog een leuk voorbeeld: iemand hoe je de system directory kunt vinden in de .NET CLR. Daar was dus inderdaad een methode voor in de library. Ik ben benieuwd waar de sytem directory zich op een platform als Linux bevindt. Juist: die is er niet.

Ik geloof pas in de platform-onafhankelijkheid van .NET als ik een grote applicatie met een GUI, database toegang, XML en XSL gebruik zie draaien op een ander platform dan Microsoft Windows.

Overigens kan je op het Java Platform ook een heleboel andere talen gebruiken. Het is niet alleen aan de taal Java voorbehouden om naar Java bytecode te implementeren. Java bytecode is wel minder of on-geschikt voor bepaalde andere talen (exotische zoals functionele of onveilige zoals C++). .NET IL doet het wat dat betreft een stuk beter: ook Haskell zal er bijvoorbeeld op gebruikt kunnen worden. Het is dan wel weer erg jammer dat alle talen die nu op .NET draaien volledig omgebogen worden om ook goed in .NET te draaien. Dit toont naar mijn mening aan dat er nog steeds gebreken in het systeem zitten. Voorbeelden: VB .NET, J#, C++.
Java is altijd bedoeld als netwerk platform: veiligheid voor alles. Daarom heeft het Java Platform ook zijn beperkingen. Java is echter wel het enige platform wat vertrouwd kan worden in een browser (Applets) of applicatie, gestart via het web (Java Webstart). Voorlopig zie ik nog geen technologie in .NET die mijn in staat stelt om onbekende code veilig te draaien. Dit zal ook lastig worden vanwege de aard van .NET IL.
Ehm, éénmalige vertaler?? ik neem aan dat je dan een soort pre-compiled code krijgt?? ik bedoel niet de echte broncode; en dus niet leesbaar; maar nog net niet gespecificeerd voor een bepaald os? klinkt ietwat vaag. hoe moet ik me dat allemaal voorstellen :?
mag je nu zelf een compiler voor de c# taal maken of niet? Een standaard is toch iets wat vrij te gebruiken is, anders is het toch geen standaard?
" Een standaard is toch iets wat vrij te gebruiken is, anders is het toch geen standaard?"

Dat slaat als een tang op een varken...

x86 is ook een standaard, maar je moet (of moest?) er wel voor betalen.
klopt niet helemaal de "cd" was ook een standaard... maar mocht tot vorig jaar (als ik het goed heb) niet zomaar gebruikt worden zonder licentiegeld te betalen aan Philips...
Wat met ECMA wel zo is dat iedereen een standaard vrij kan bekijken. Daar hoef je geen licentiegeld voor te bepalen. Op deze manier wordt de kans groter dat C# geaccepteerd wordt. Ik moet zeggen dat ik het heel netjes vind van M$. Sun heeft Java nooit een echte open standaard gemaakt...
Hoezo heeft sun van Java geen open standaard gemaakt ? Iedereen mag toch alle broncode zien en alle white papers van java (staan zelfs op internet). De broncode van de java-compiler is toch ook openbaar :?
Java is inderdaad geen standaard en daar is ook bewust voor gekozen.

Dat Java niet open is, is niet helemaal waar. De source-code van de Java 2 SDK en de Java 2 Runtime Environment is volledig te downloaden onder de Sun Community Source Licence (een soort Shared Source). De source van de standaard Java libraries is beschikbaar in de Java 2 SDK. Veel losse componenten van Java zijn open-source (zoals bijvoorbeeld de nieuwe XML api's en de toekomstige Java Generics compiler).

Dat Sun volledig beslist wat er met Java gaat gebeuren is pas echt onzin. Zeer veel bedrijven doen mee in het Java Community Process en werken mee en stemmen mee over nieuwe onderdelen van Java. Hierdoor hebben ze een enorme invloed op de richtingen die Java uitgaat.

Ook is het voor iedereen mogelijk om een eigen JVM te implementeren omdat alles goed gedocumenteerd is. Veel bedrijven (zoals IBM) zijn hier ook aktief mee bezig.

Het is dan wel geen ECMA standaard (ik ga me niet uitlaten over de vraag of dat nuttig is), maar op een bepaalde manier is het wel open. Volledige controle heeft Sun in ieder geval niet.
Nope, Sun bepaald wat er met Java gebeurt en niemand anders.
Niemand kan er dus invloed op uitoefenen.

Dit is dus geen definitie van een open standaard.

Een van de grootste missers dus wanneer iedereen zegt dat Java open is..
Java is inderdaad geen standaard en daar is ook bewust voor gekozen.
Ik pik deze quote er even uit, maar dit geldt ook als een reactie op anderen. "Standaard" en "open standaard" zijn natuurlijk wel twee verschillenden dingen. Het hangt denk ik grotendeels af van je definitie van standaard. Als je zegt dat een standaard per definitie door een instituur als ECMA, IEEE of ISO beheert moet worden, dan is Java inderdaad geen standaard. Maar dat lijkt mij veel te beperkt. Java lijkt mij wel een standaard, aangezien eenduidig is vastgelegd hoe een programma in Java geschreven wordt.

Volgens mij is dit ook het enige relevante aan dit stukje: waar Sun het beheer van Java zelf doet, heeft Microsoft het beheer van de standaarden C# en CLI (fijn weer, dat ze een bekende afkorting hi-jacken, CLI staat al voor zolang als ik weet voor command line interface) uit handen gegeven.
<knip en plak modus>
More than two years ago, Sun said it would turn Java over to the same standards body, but withdrew its proposal on fears that it would lose control of Java's evolution. Java proponents argued that making Java an industry standard would give other companies a much stronger position in defining Java and determining the direction of the software. But Sun executives implied that standardizing through ECMA could result in a version of Java that worked differently from Sun's.
</knip en plak modus>

Java is geen standaard.
Anoniem: 28350 @roelio15 december 2001 18:10
Ik denk dat je daarvoor nog eerst een licentie van Microsoft moet hebben.
Ja, als je de link naar dat Mono volgt zie je dat ze daar al een c# compiler in elkaar hebben geknutseld, althans: ze zijn er mee bezig, want zo makkelijk is het natuurlijk niet :).
Anoniem: 25556 @roelio15 december 2001 19:32
Het is niet zo dat de technologie, zoals geïmplementeerd door Microsoft, nu vrij kopieerbaar is. Microsoft mag blijven bepalen wie de implementatie mag licenseren en wie niet.
Lijkt me dat 't er toch vrij duidelijk staat hoor..
Nu is het natuurlijk aan Sun om met een versie van C# te komen welke niet helemaal aan deze standaard voldoet }>
Sterker nog, het is aan Microsoft om met een versie te komen die niet aan de standaard voldoet en er is dan niemand die ze zal aanklagen (nou ja, dat weet je nooit zeker) omdat de taal door hunzelf ontwikkeld is.
Microsoft mag blijven bepalen wie de implementatie mag licenseren en wie niet.

dus als ik t goed begrijp, dan is er dus een nieuwe standaard aangenomen, die ontwikkeld is door ms. maar dat microsoft wel bepaalt wie wel en wie niet van de standaard gebruik mag maken?!

hoe moet deze standaard ooit een "echte" standaard worden op deze manier?
Das onzin dus als jij een taal ontwikkelt en deze standaarden laat vast leggen dan zou het bedrijf op de hoek die jou concurrent is gewoon van jou onderzoek gebruik kunnen maken. Er is natuurlijk behalve een economisch ook nog een technisch verhaal, als jij je standaarden dumpt en morgen stapt er een nieuwe groep op die jou software gaat aanpassen, en wel op zo een bepaalde manier dat het orginele idee verdwijnt dan ben jij daar natuurlijk niet blij mee. Deponeren van standaarden kan natuurlijk wel heel voordelig zijn voor 3e partijen, ze kunnen hun software bijvoorbeeld laten interfacen met jou software, of men kan bijvoorbeeld een goede editor maken voor jouw taal.
CLI ? Komt het nou omdat mijn eerste computers AmigaŽs waren of vinden jullie ook dat dat alleen voor Command Line Interface zou moeten staan? B-)
Het idee lijkt op dat van Java: de compiler maakt een soort machinetaal, maar dan niet voor een bepaalde computerinstructieset/OS, maar een soort zelfverzonnen machinetaal, die dus systeemonafhankelijk is, en waarin meestal veel hogere instructies mogelijk zijn dan in "normale" executables. Om een Java-programma uit te voeren heb je een zogenaamde virtuele machine nodig, die als het ware de zelfverzonnen instructieset emuleert, vandaar dat Java voor de performance niet zo goed scoort.
Bij .net wordt er geen virtuele machine gebruikt, maar een soort Just In Time (JIT) compiler als een onderdeel voor het eerst gerund wordt. Deze genereert dus wel systeemafhankelijke code, maar deze wordt opgeslagen, zodat als een onderdeel eenmaal 1 keer is uitgevoerd, het daarna veel sneller kan. Nadeel is natuurlijk wel dat dit ruimte inneemt op je hard disk, maar de performance kan wel optimaal worden met in eerste instantie systeemonafhankelijke code. Het lijkt inderdaad een beetje op pre-compiled code: de broncode is niet zomaar te achterhalen, maar het is wel al gecompileerd (compileren is behoorlijk rekenintensief, dus het zou niet echt wenselijk zijn als broncode steeds eerst gecompileerd moet worden), bovendien is het voordeel dat je niet afhankelijk bent van 1 specifieke programmeertaal, je hoeft dus niet perse C# te gebruiken om .net programma's te maken, wat bij Java wel altijd moest.
Dat is lekker voor ons!
Kunnen we straks benchmarken tussen verschillende platformen en processors..

Wanneer er bijvoorbeeld een SysMark.NET komt kunnen we als er een compiler voor de Mac beschikbaar is de performance van de Athlon tegen de G4 bekijken...

Universal benchmarking... :*)

}:O .Net !!
" Een standaard is toch iets wat vrij te gebruiken is, anders is het toch geen standaard?"

Het intellect van een foetus is nog hoger. Speciaal voor jou :

een wind is pas een wind als je 'm laat
Voor zover ik weet worden hier geen posts weggehaald, tenzij het illegaal is ?

/edit
oh ik zie het al, je posts zijn beide naar -1 gemod. Daardoor zijn ze waarsch. voor jou niet meer zichtbaar. Dit kun je instellen.

Op dit item kan niet meer gereageerd worden.