Динамические языки поддерживаются.NET 4,0 ДОЛЛАРА

Вы знаете списка динамических языков ту.NET поддержки за 4,0 ДОЛЛАРА?

Я знаю IronRuby, IronPython поддерживаются. Не уверенный, если IronScheme. F#? Что еще?

Спасибо!

10
задан tranmq 15 January 2010 в 21:41
поделиться

3 ответа

Единственным реальным преимуществом является возможность его использования в операторе switch . Все остальные вещи, на которые способен перечисление, можно просто сделать с помощью простого класса ванили с помощью частного конструктора, экземпляры которого, в свою очередь, объявляются как открытые статические конечные поля рассматриваемого класса (typesafe образца). Другое преимущество перечисления, очевидно, что это делает код менее подробным, чем вы бы сделать с простым ванильным классом.

Но если я не ошибаюсь, в C++ (или это было C #?) можно использовать Последовательности в операторе switch . Таким образом, преимущество перечислений в Java ничтожно мало по сравнению с C++. Тем не менее, то же самое было предложено для Java 7, не уверен, что он сделает это.

-121--2180543-

Java 5 перечислений произошло из шаблона перечисления типа Джошуа Блоха Эффективная Java (первая редакция), чтобы избежать подводных камней перечислений в C/C + +/C # (которые просто

В основном константы int и перечисления int не являются наборными. Вы можете передать любое значение int. В C/C + + вы можете сделать это:

enum A { one, two, three };
enum B { beef, chicken, pork } b = beef;

void func(A a) { ... }
func((A)b);

К сожалению, шаблон перечисления typesafe из Effective Java имел много шаблона, не все это очевидно. Наиболее примечательным является то, что вам пришлось переопределить метод private readResolve , чтобы остановить создание новых экземпляров Java при десериализации, что нарушило бы простую проверку ссылок (т. е. с помощью оператора = = вместо равно () ).

Таким образом, Java 5 enums имеют следующие преимущества по сравнению с ints:

  • Безопасность типа;
  • Java 5 enums может иметь поведение и реализовывать интерфейсы;
  • Java 5 enums имеют некоторые чрезвычайно легкие структуры данных, такие как EnumSet и EnumMap .

Java 5 перечисляет эти преимущества по сравнению с использованием только классов:

  • Шаблон с меньшей склонностью к ошибкам (частный конструктор, readResolve () и т.д.);
  • Семантическая корректность. Вы видите, что что-то является перечислением, и вы знаете, что это просто представляет ценность. Ты видишь класс и не уверен. Может, где-то есть статический заводской метод и т.д. Перечисления Java 5 гораздо более четко указывают на намерение.
-121--2180537-

IronPython и IronRuby будут единственными официально поддерживаемыми динамическими языками.

C # 4,0 будет иметь новое ключевое слово «dynamic», которое будет создавать динамические объекты на основе DLR. По иронии судьбы, ключевое слово using dynamic является статическим объявлением. Дополнительные сведения о ключевом слове «dynamic» на URL-адресах IronPython .

Я думаю, что много путаницы в DLR происходит из числа ложных запусков для других языков. По причинам, которые я до сих пор не могу понять, Microsoft предпочла не продолжать поддержку Managed JScript. Интересная дискуссия на странице DLR в Codeplex , где сотрудник MS заявляет

DLR JScript был экспериментальным для информирования о дизайне DLR (деревья выражений, взаимодействие, сайты вызовов, хостинг и т.д.). JS, который мы выпустили с фьючерсами asp и динамическим sdk Silverlight, стал очень старым и непригодным для использования, поскольку DLR продолжал развиваться для выпуска в CLR 4.0. К сожалению, на данный момент нет планов по разработке и выпуску DLR-hostable JScript.

даже после того, как Managed JScript был представлен в качестве языка DLR первого класса, так что где-то вдоль линии это мнение изменилось. VBx никогда, казалось, не сходил с мертвой точки в том, что касается динамических функций. IronLisp стала IronScheme , которая не полностью мертва (кандидат на релиз вышел в октябре, но никаких обновлений кода с ноября). Нуа (Lua for the DLR) была DOA в 2008 году.

Особо следует отметить Phalanger , PHP для .Net. Хотя на данный момент не в DLR, согласно Википедии , постоянно предпринимаются усилия, чтобы поместить его в DLR.

10
ответ дан 3 December 2019 в 23:50
поделиться

Из Wikipedia: Dynamic Language Runtime

Услуги DLR в настоящее время используются в Развитие версии Ironruby, .Net Реализация Рубина Язык, а для Ironpython.

В 2007 году Microsoft планировала использовать DLR для предстоящих Visual Basic .NET 10,0 (VBX) и управляемый JScript (ECMAScript 3.0). Однако по состоянию на август 2009 года Microsoft не имеет больше планов реализации управляемого Jscript (Ecmascript 3.0) на DLR, и нет дальнейших упоминаний о Visual Basic .NET работает на DLR был сделан Microsoft на Visual Основные обновления развития. Похожий на C #, Visual Basic сможет Доступ к объектам с динамических языков построен на DLR, такой как IronPython и Ironruby [.

Иронсхема, предстоящая схема Реализация [, планировала построить DLR, но решил отказаться от этой идеи, потому что DLR ветвь проект используется из синхронизировать с багажником, а также потому, что DLR, по словам разработчиков, не мог поддержать большинство из Требования к схеме.

1
ответ дан 3 December 2019 в 23:50
поделиться

Jetfire - это динамический язык .net, доступный по адресу http://jetfire.codeplex.com . Синтаксис языка основан на C#.

Проект предоставляет доступ к объектам Jetfire с помощью "дианамических" объектов (DLR) .net C# 4.0.

2
ответ дан 3 December 2019 в 23:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: