Почему так хороша “Динамическая” часть Динамических языков?

Подписки MSDN на пользователя, а не для каждого устройства поэтому, пока Вы - единственный человек, использующий их, я думаю, что необходимо быть свободны использовать их дома. Я не знаю, что любое дифференцирование применяется к рабочему месту, если, конечно, Ваше рабочее место само не устанавливает такое правило.

От http://msdn.microsoft.com/en-gb/subscriptions/aa948867.aspx :

Подписки MSDN лицензируются для люди , кто может установить предоставленное программное обеспечение без ограничения . Программное обеспечение, предоставленное через Подписки MSDN, лицензируется для дизайна, разработки, теста и демонстрации Ваших приложений.

См. также http://msdn.microsoft.com/en-gb/subscriptions/aa948864.aspx .

6
задан RCIX 13 November 2009 в 22:59
поделиться

5 ответов

Два принципиально разных подхода к типам в языках программирования - это статические типы и динамические типы . Они позволяют использовать самые разные парадигмы программирования, и каждая из них имеет свои преимущества и недостатки.

Я настоятельно рекомендую отличную статью Криса Смита What to Know Before Debating Type Systems для получения дополнительной информации по этому вопросу.

] Из этой статьи:

Система статических типов - это механизм, с помощью которого компилятор проверяет исходный код и присваивает метки (называемые «типами») частям синтаксиса, а затем использует их, чтобы сделать вывод о поведении программы. Система динамических типов - это механизм, с помощью которого компилятор генерирует код для отслеживания типа данных (по совпадению, также называемых «типом»), используемых программой. Использование одного и того же слова «тип» в каждой из этих двух систем, конечно, не совсем случайно; однако лучше всего понимать это как имеющее своего рода слабое историческое значение. Большая путаница возникает из-за попыток найти мировоззрение, в котором «тип» действительно означает одно и то же в обеих системах. Это не так. Лучший способ подойти к проблеме - признать, что:

  • В большинстве случаев, статические и динамические типы.
  • Тем не менее, статические типы не ограничиваются проблемами, решаемыми динамическими типы.
  • Динамические типы не ограничиваются проблемами, которые могут быть решены с помощью статические типы.
  • По своей сути, эти две техники совсем не одно и то же.
8
ответ дан 8 December 2019 в 17:23
поделиться

Я бы начал с рекомендации прочитать сообщение Стива Егге о том, что слабый набор достаточно сильна , а затем его сообщение о динамических языках наносят ответный удар . По крайней мере, с этого вы должны начать!

2
ответ дан 8 December 2019 в 17:23
поделиться

Давайте проведем несколько сравнений преимуществ / недостатков:

Динамические языки:

  • Типовые решения могут быть изменены с минимальным влиянием на код.
  • Код может быть написанным / скомпилированным изолированно. Для написания кода мне не нужна реализация или даже формальное описание типа.
  • Чтобы найти какие-либо ошибки типов, приходится полагаться на модульные тесты.
  • Язык более сжат. Меньше набора текста.
  • Типы могут быть изменены во время выполнения.
  • Редактировать и продолжить намного проще реализовать.

Статические языки:

  • Компилятор сообщает обо всех типовых ошибках.
  • Редакторы могут предлагать подсказки, такие как Intellisense, гораздо более богато.
  • Более строгий синтаксис, который может быть расстраивает.
  • Обычно требуется больше типизации.
  • Компилятор может лучше оптимизировать, если знает типы заранее.

Чтобы немного усложнить ситуацию, учтите, что такие языки, как C #, становятся частично динамическими (в любом случае ощущается) с конструкцией var или такими языками, как Haskell, которые статически типизированы, но кажутся динамичными из-за вывода типа.

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

Главное, чтобы вы избегали большой избыточности, которая возникает из-за того, что программист «объявляет» то, то и другое. Аналогичное преимущество может быть получено за счет определения типа (например, boo ), но не так дешево и гибко. Как я писал в прошлом ...:

полная проверка типов или вывод требует анализа всего программа, которая может быть вполне непрактично - и останавливает то, что Ван Рой и Хариди в своем шедевре "Концепции, методы и модели Компьютерное программирование ", звоните" полностью открытое программирование ». Цитата из сообщения мой 2004 года выпуска: "" "Я люблю объяснения Ван Роя и Хариди, стр. 104-106 их книги, хотя я могу или может не согласиться с их выводами (которые в основном внутренняя разница крошечная - они указать на Оз и Алису как на совместимые языки без и со статическими набора соответственно), все баллы они делают хорошие. Самое главное, Я считаю, что способ динамической печати допускает настоящую модульность (сложнее с статическая типизация, так как дисциплина типа должен применяться в модуле границ), и "исследовательский вычисления в вычислительной модели, которая объединяет несколько программ парадигмы ».

« Рекомендуется динамическая типизация », они заключить, "когда программы должны быть как как можно более гибкий ". Рекомендую чтение Agile Manifesto понять, почему максимальная гибкость решающий в большинстве реальных прикладное программирование - и поэтому почему в упомянутом реальном мире а не в более академических кругами доктора Ван Роя и доктора Хадиди двигаться, динамический набор обычно предпочтительнее, и не такая уж мелочь поскольку они имеют значение. Тем не менее, они, по крайней мере, показывают больше осведомленность о проблемах, посвящая 3 отличные страницы обсуждения это, за и против, чем почти любой другая книга, которую я видел - большинство книг четко очерчены и сформированы приоритет так или иначе, поэтому обсуждение редко бывает таким сбалансированным как это;).

4
ответ дан 8 December 2019 в 17:23
поделиться

Динамические языки программирования в основном делают во время выполнения вещи, которые другие языки делают во время компиляции. Это включает расширение программы путем добавления нового кода, расширения объектов и определений или изменения системы типов во время выполнения программы, а не компиляции.

http://en.wikipedia.org/wiki/Dynamic_programming_language

Вот несколько общих примеров

http://en.wikipedia.org/wiki/Category:Dynamic_programming_languages ​​

И чтобы ответить на ваш исходный вопрос:

Они медленные, вам нужно использовать базовый текст редактор, чтобы написать их - никаких подсказок Intellisense или кода, их, как правило, очень сложно писать и поддерживать. НО самый известный (javascript) работает практически в каждом браузере в мире - я думаю, это хорошо. Давай назовем это широкая совместимость ». Я думаю, вы, вероятно, могли бы получить интерпретатор динамического языка для большинства операционных систем, но вы определенно не смогли бы получить компилятор для нединамических языков для большинства операционных систем.

-1
ответ дан 8 December 2019 в 17:23
поделиться
Другие вопросы по тегам:

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