Wat is de gemeenschappelijke taalinfrastructuur?
De Common Language Infrastructure (CLI) is een reeks internationale technische normen die de interoperabiliteit van computerprogrammeertaal bevorderen. Met CLI kunnen ook veel talen op hoog niveau applicaties ontwikkelen die onafhankelijk zijn van platforms en architecturen. Er zijn meer dan 30 programmeertalen voor dit doel gegroepeerd en maken gebruik van vier afdelingen van gemeenschappelijke programmeerspecificaties om CLI-conform te worden.
Door gebruik te maken van wat een Common Type System (CTS) wordt genoemd, met behulp van een set datatypes en bewerkingen en metadata-informatie over programmastructuren, kan in meerdere talen worden geschreven. De CLI compileert talen in een gemeenschappelijke tussentaal (CIL) en communiceert vanuit CIL de toepassingsaspecten naar de taal van de assemblagemachine, die de hardware aanpakt. Daarnaast zijn er gemeenschappelijke taalspecificaties (CLS), een basisregels die zijn ingesteld voor gebruik door elke taal die interoperatie zoekt, en een virtueel uitvoeringssysteem (VES) voor het laden, uitvoeren en genereren van runcodes voor alle CLI-compatibele programma's .
De meeste CLI-compatibele talen compileren rechtstreeks naar de CIL met behulp van de Common Language Runtime (CLR). Na te zijn gecompileerd en in de cache te hebben opgeslagen, past een just-in-time compiler vervolgens machinecode van de bestaande architectuur toe. De constructie van de assemblagemachinecode kan ook vóór de CLR worden gebouwd met een voor-tijd compiler.
Om CLI-compatibele talen te laten profiteren van objectspecificiteit, geeft de gemeenschappelijke taalinfrastructuur aan dat objecten alleen de functies hoeven vrij te geven die ze gemeen hebben met de andere CLI-compatibele talen wanneer ze worden aangeroepen. Van componenten van code die zijn ontwikkeld om alleen gegevenstypen te gebruiken die in de CTS worden geaccepteerd, wordt gezegd dat ze CLI-compatibel zijn en toegankelijk zijn voor alle andere CLI-compatibele talen. Bovendien wordt elk construct van een taal die niet snel kan worden geverifieerd door het type veiligheid van de code uitgesloten van de CLS, zodat alleen kan worden gezegd dat verifieerbare codes voldoen aan CLS.
Sommige programmeerfuncties zijn gemeenschappelijk voor zowel compilers als ontwikkelaars en andere zijn alleen beschikbaar voor compilers. De lijst is lang en vol met handige functies. Een functie die alleen beschikbaar is voor compilers is: trefwoorden die referentie-ID's bieden en die virtuele methoden kunnen vervangen door namen die trefwoorden zijn. Een functie die beschikbaar is voor zowel compilers als ontwikkelaars omvat: modificatiefuncties die zeggen dat zowel een eigenschap als de beoordelaars allemaal 'statisch' moeten zijn, allemaal 'virtueel' moeten zijn, allemaal 'instantie' zijn.
Implementatieprogramma's zijn voor desktops, servers, mobiele apparaten en gameconsoles. Programma's ter verbetering van computervisie en toolkits voor virtuele machines op laag niveau zijn ook ontwikkeld op basis van gemeenschappelijke talen die voldoen aan de infrastructuur. De runtimes van de gemeenschappelijke taalinfrastructuur wijzen systeembronnen toe en roepen randapparatuur efficiënt aan, hoewel ze platformonafhankelijk zijn.