Nemerle — високорівнева мова програмування із статичною типізацією для платформи .NET. Вона надає можливість використовувати функціональний, об'єктно-орієнтований та імперативний підходи у програмуванні. Мова має відносно простий C#-подібний синтаксис та потужну систему метапрограмування.
Nemerle | |
---|---|
Парадигма | функціональна, об'єктно-орієнтована та імперативна |
Дата появи | 2003 |
Творці | , , Prof. and at |
Розробник | Вроцлавський університет і JetBrains |
Останній реліз | 1.2.404.0 (13 листопада 2014) |
Система типізації | статична, сувора, виводима |
Під впливом від | C#, ML |
Вебсайт | nemerle.org |
Назва Nemerle виникла завдяки книжці Урсули Ле Гуїн «Чарівник Земномор'я», а саме за ім'ям чародія Nemmerle. Відмінний від оригінального спосіб напису із однією «m» є свідомим рішенням.
Характеристика мови
Головні концепції:
- Наявність локальних функцій (лексичних замикань). Функція є повноправним об'єктом, тобто може бути збережена у змінну, передана як аргумент в іншу функцію або повернена функцією.
- Гарантована оптимізація хвостової рекурсії, тобто хвостова рекурсія завжди замінюється циклом під час компіляції.
- Виведення типів. Зокрема, можливо виведення типів локальних змінних і виведення сигнатури локальних функцій.
- Відсутність чіткої межі між інструкцією і виразом. Наприклад, умовний оператор може знаходитися всередині арифметичного виразу. Нема жодної необхідності у використанні інструкції return.
- Блоки коду, що скасовують необхідність у таких інструкціях як break і continue.
- Алгебричні типи даних, кортежі та зіставлення зі зразком.
- Спрощений синтаксис роботи зі списками. Спискові літерали.
- Типобезпечні макроси та квазі-цитування.
- Часткове застосування операторів і функцій — проста генерація обгортки деякої функції, в котрій частина параметрів підставляються наперед, а частина передається безпосередньо під час виклику функції.
Інтегроване середовище розробки
Nemerle може бути інтегрована у Visual Studio 2005 або Visual Studio 2008. Також вона має своє власне, повністю безкоштовне, інтегроване середовище розробки базоване на Visual Studio 2008 Shell.
Приклади
Hello, World!
Традиційна програма «Hello World!» може бути реалізована у такий більш-менш C#-подібний спосіб:
class Hello { static Main () : void { System.Console.WriteLine ("Hello, world!"); } }
або простіше:
System.Console.WriteLine("Hello, world!");
Макроси
Макроси забезпечують «завуальоване» генерування коду із додатковими статичними перевірками компілятором. Вони дозволяють генерувати вихідний код програмованим шляхом.
Наприклад, ось таким чином можна використати макроси Nemerle для SQL:
ExecuteReaderLoop ( "SELECT firstname, lastname FROM employee WHERE firstname = $myparm", dbcon, { System.Console.WriteLine ("Name: {0} {1}", firstname, lastname) });
замість
string sql = "SELECT firstname, lastname FROM employee WHERE firstname = :a"; NpgsqlCommand dbcmd = new NpgsqlCommand (sql, dbcon, dbtran); dbcmd.Parameters.Add("a", myparm); NpgsqlReader reader = dbcmd.ExecuteReader(); while(reader.Read()) { string firstname = reader.GetString (0); string lastname = reader.GetString (1); System.Console.WriteLine ("Name: {0} {1}", firstname, lastname) } reader.Close(); dbcmd.Dispose();
і це не тільки переховування деяких операторів, але й додаткова робота виконана компілятором задля розуміння рядку запиту, використаних змінних, а також стовпчиків повернених базою даних. ExecuteReaderLoop макрос згенерує код, що є приблизно еквівалентним тому, що можна набрати ручним способом. Більш того, він з'єднується з базою даних на етапі компіляції щоб перевірити вірність введеного SQL запиту.
Посилання
- Домашня сторінка мови програмування [Архівовано 11 лютого 2012 у WebCite](англ.)
- Project Hosting on Google Code [Архівовано 11 лютого 2012 у WebCite](англ.)
- (англ.)
- Nemerle форум [ 11 травня 2008 у Wayback Machine.](англ.)
- Nemerle з 99 пляшок пива [ 28 вересня 2007 у Wayback Machine.](англ.)
- Цікаві факти стосовно Nemerle у щоденнику akiramei [ 1 листопада 2007 у Wayback Machine.](яп.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Nemerle visokorivneva mova programuvannya iz statichnoyu tipizaciyeyu dlya platformi NET Vona nadaye mozhlivist vikoristovuvati funkcionalnij ob yektno oriyentovanij ta imperativnij pidhodi u programuvanni Mova maye vidnosno prostij C podibnij sintaksis ta potuzhnu sistemu metaprogramuvannya NemerleParadigmafunkcionalna ob yektno oriyentovana ta imperativnaData poyavi2003Tvorci Prof and atRozrobnikVroclavskij universitet i JetBrainsOstannij reliz1 2 404 0 13 listopada 2014 Sistema tipizaciyistatichna suvora vivodimaPid vplivom vidC MLVebsajtnemerle org Nazva Nemerle vinikla zavdyaki knizhci Ursuli Le Guyin Charivnik Zemnomor ya a same za im yam charodiya Nemmerle Vidminnij vid originalnogo sposib napisu iz odniyeyu m ye svidomim rishennyam Harakteristika moviGolovni koncepciyi Nayavnist lokalnih funkcij leksichnih zamikan Funkciya ye povnopravnim ob yektom tobto mozhe buti zberezhena u zminnu peredana yak argument v inshu funkciyu abo povernena funkciyeyu Garantovana optimizaciya hvostovoyi rekursiyi tobto hvostova rekursiya zavzhdi zaminyuyetsya ciklom pid chas kompilyaciyi Vivedennya tipiv Zokrema mozhlivo vivedennya tipiv lokalnih zminnih i vivedennya signaturi lokalnih funkcij Vidsutnist chitkoyi mezhi mizh instrukciyeyu i virazom Napriklad umovnij operator mozhe znahoditisya vseredini arifmetichnogo virazu Nema zhodnoyi neobhidnosti u vikoristanni instrukciyi return Bloki kodu sho skasovuyut neobhidnist u takih instrukciyah yak break i continue Algebrichni tipi danih kortezhi ta zistavlennya zi zrazkom Sproshenij sintaksis roboti zi spiskami Spiskovi literali Tipobezpechni makrosi ta kvazi cituvannya Chastkove zastosuvannya operatoriv i funkcij prosta generaciya obgortki deyakoyi funkciyi v kotrij chastina parametriv pidstavlyayutsya napered a chastina peredayetsya bezposeredno pid chas vikliku funkciyi Integrovane seredovishe rozrobkiNemerle mozhe buti integrovana u Visual Studio 2005 abo Visual Studio 2008 Takozh vona maye svoye vlasne povnistyu bezkoshtovne integrovane seredovishe rozrobki bazovane na Visual Studio 2008 Shell PrikladiHello World Tradicijna programa Hello World mozhe buti realizovana u takij bilsh mensh C podibnij sposib class Hello static Main void System Console WriteLine Hello world abo prostishe System Console WriteLine Hello world Makrosi Makrosi zabezpechuyut zavualovane generuvannya kodu iz dodatkovimi statichnimi perevirkami kompilyatorom Voni dozvolyayut generuvati vihidnij kod programovanim shlyahom Napriklad os takim chinom mozhna vikoristati makrosi Nemerle dlya SQL ExecuteReaderLoop SELECT firstname lastname FROM employee WHERE firstname myparm dbcon System Console WriteLine Name 0 1 firstname lastname zamist string sql SELECT firstname lastname FROM employee WHERE firstname a NpgsqlCommand dbcmd new NpgsqlCommand sql dbcon dbtran dbcmd Parameters Add a myparm NpgsqlReader reader dbcmd ExecuteReader while reader Read string firstname reader GetString 0 string lastname reader GetString 1 System Console WriteLine Name 0 1 firstname lastname reader Close dbcmd Dispose i ce ne tilki perehovuvannya deyakih operatoriv ale j dodatkova robota vikonana kompilyatorom zadlya rozuminnya ryadku zapitu vikoristanih zminnih a takozh stovpchikiv povernenih bazoyu danih ExecuteReaderLoop makros zgeneruye kod sho ye priblizno ekvivalentnim tomu sho mozhna nabrati ruchnim sposobom Bilsh togo vin z yednuyetsya z bazoyu danih na etapi kompilyaciyi shob pereviriti virnist vvedenogo SQL zapitu PosilannyaDomashnya storinka movi programuvannya Arhivovano 11 lyutogo 2012 u WebCite angl Project Hosting on Google Code Arhivovano 11 lyutogo 2012 u WebCite angl angl Nemerle forum 11 travnya 2008 u Wayback Machine angl Nemerle z 99 plyashok piva 28 veresnya 2007 u Wayback Machine angl Cikavi fakti stosovno Nemerle u shodenniku akiramei 1 listopada 2007 u Wayback Machine yap