Za největší výhodu platformy .NET je považována podpora více programovacích jazyků a vysoká úroveň integrace mezi nimi.
Výraznou výhodou CLR je podpora více programovacích jazyků a vysoká úroveň integrace mezi nimi. Třída, napsaná v jazyku C#, může dědit z třídy napsané v jazyku Visual Basic, C++, PHP nebo Python. Spolupráce mezi jazyky je tak transparentnější než dříve.
Jak to funguje? Umožňují to informace vybavené metadaty. Rozhraní třídy je, bez ohledu na použitý jazyk, vždy stejné. CLR používá metadata k zajištění všech rozhraní a volacích konvencí mezi jazyky. V .NET se nevyužívá IDL, protože jej nikdo nepotřebuje.
Jazyková integrace je považována za největší přínos platformy .NET. Není nutné nutit vývojáře, kteří zvládají jeden jazyk, aby se přizpůsobovali jinému jen proto, aby se srovnala práce celého týmu. Křížová jazyková dědičnost otevírá další nové možnosti.
Přehled jazyků použitelných v .NET
Je mi známo cca. 40 jazyků, které je možné v .NET využívat. Pokusím se uvést informace o nejznámějších z nich. Většina jazyků musela být pro použití v .NET upravena.
Boo
Objektově orientovaný jazyk navržený pro využívání na platformě .NET, který je přímým potomkem jazyka Python. Je integrován do vývojového prostředí #Develop. Domovskou stránku projektu naleznete zde.
C
Mocný programovací jazyk původně vyvinutý pro potřeby UNIXu, který je logikou velmi blízký assembleru, ale jeho kód je mnohem čitelnější. V současné době patří mezi nejpoužívanější jazyky. Mnoho dnešních jazyků používá syntaxi blízkou jazyku C. Pro kompilaci pro platformu .NET je možné použít kompilátor lcc.
C#
Vysokoúrovňový objektově orientovaný programovací jazyk vyvinutý společností Microsoft zároveň s platformou .NET. Je založený na jazycích C++ a Java. Syntaxi čerpá z jazyka C. Původní kompilátor jazyka C# je součástí .NET Frameworku. Od něho byl odvozen Mono C# Compiler – kompilátor pro MONO Framework. Zajímavá varianta použití je Script# – je to prototyp nového kompilátoru, který kompiluje (resp. convertuje) jazyk C# do jazyku JavaScript, je tak možné psát klientské scripty přímo v jazyku C# (je určen pro ASP.NET „Atlas“).
C++
Jazyk, který podporuje několik programovacích stylů (paradigmat), jako je procedurální programování, objektově orientované programování a generické programování, není tedy jazykem čistě objektovým. Je to jeden z nejrozšířenějších programovacích jazyků. V .NET je tento jazyk znám pod názvem C++/CLI a jeho kompilátor se instaluje společně s Visual Studiem.
Cobol
Programovací jazyk vyvinutý v 60. letech 20. století pro databázové aplikace. Jazyk je velmi blízký angličtině. Sestavení programů je možné v minimálním čase a s minimálním úsilím. Možností využití v .NET je komerční varianta NetCOBOL, který je obohacen o prvky OOP.
Fortran
Jedná se o poměrně starý jazyk určený zejména pro vědecké výpočty a numerické aplikace. V .NET je použitelná jeho komerční varianta Fortran for .NET.
F#
Objektově orientovaný jazyk odvozený od jazyka Caml. Je poměrně složitý na naučení, ale na druhou stranu nabízí v .NET více možností než třeba jazyk C# – ten by se měl jeho možnostem přiblížit ve verzi 3.0. Hodí se především pro numerické aplikace. Portál věnovaný jazyku F# naleznete zde.
Java
Objektově orientovaný jazyk, který je založený na jazyku C. V době psaní tohoto článku je nejpoužívanější. Jeho hlavní výhoda je přenositelnost aplikací na více systémů. Jeho obdobou v .NET je J#, který je součástí .NET Frameworku, k běhu navíc vyžaduje MS Visual J# Redistributable Package.
JavaScript / JScript
Multiplatformní objektově orientovaný skriptovací jazyk. Zpravidla se používá při programování webových stránek a zapisuje se přímo do (X)HTML kódu stránky. Stejně jako hodně dalších jazyků patří do rodiny jazyku C. S jazykem Java nemá nic společného. Pro .NET je možné použít JScript .NET.
Object Pascal
Rozšíření programovacího jazyka Pascal o vlastnosti objektově orientovaného programování. Velmi často se kvůli své jednoduchosti využívá k výuce programování. Je součástí vývojového prosředí Delphi, kde je možná přímá kompilace pro .NET.
PHP
Jazyk určený především pro programování dynamických webových stránek, ale je v něm možné vytvářet i „okenní“ aplikace. V posledních verzích se projevuje snaha o zavedení OOP. Skupina českých studentů vytváří kompilátor pro .NET s názvem Phalanger.
Python
Interpretovaný objektově orientovaný programovací jazyk. Je vyvíjen jako open source projekt, který zdarma nabízí instalační balíky pro většinu běžných platforem. Položil základ jazykům Boo a Ruby. Pro .NET je vyvíjen jako IronPython. Jako jeden z mála jazyků má šanci stát se základním jazykem pro vývoj na platformě .NET.
Ruby
Interpretovaný skriptovací programovací jazyk. Díky své jednoduché syntaxi je poměrně snadný k naučení, přesto však dostatečně výkonný, aby dokázal konkurovat známějším jazykům, jako je Python, na kterém je založený. Na rozdíl od něj je však plně objektově orientovaný, doslova vše v Ruby je objekt. Ruby .NET je kompilátor pro .NET Framework a Mono Ruby .NET je kompilátor pro MONO Framework.
Small Talk
Objektově orientovaný jazyk, který je jednoduchý na naučení. Jeho přístup k objektům se v základě liší od jazyků C#, nebo Java. Dobrou možností využií v .NET je #Smalltalk.
Visual Basic .NET
Plně objektově orientovaný dialekt jazyka BASIC. Jazyk je pro začátečníka jednoduchý na naučení, ale velká popisnost jazyka způsobuje, že kód zapsaný ve VB je na počet znaků obsáhlejší a méně „elegantní“, než zápis ve většině jiných jazyků. Původní kompilátor je součástí .NET Framewroku. Mono Basic Compiler je odvozen od výše zmíněného Mono C# Compileru a je využíván v MONO Frameworku.
Když zhodnotím situaci všech jazyků, tak se jako nejvhodnější volba jeví jazyk C#, který je pro .NET původně určen a jeho kompilátor je „čistší“ než kompilátory většiny ostatních jazyků, protože neobsahuje nic pro zajištění kompatibility. Dobrou volbou jsou také jazyky VB.NET, Boo a IronPython. Máte-li zvláštní požadavky (kombinování managed a unmanaged kódu, rychlejší přístup k WinAPI), tak určitě zvolte C++. Další jazyky se používají jen zřídka, ale přesto vám nic nebrání je alespoň zkusit.