Язык программирования D: история и компиляторы
Содержание:
1.«Новая волна» языков программирования (Вы читаете данный раздел);
2. Документация, библиотеки и поддержка в IDE;
3. Устанавливаем компилятор;
4. Компилятор gdc и ldc.
Языки программирования традиционно разделяют на скриптовые, системные и «языки продуктивности». Конек скриптовых языков (Perl, PHP, Python и т. д.) - очень быстрая разработка и отладка без затрат времени на компиляцию, но ресурсоемкость и медлительность интерпретаторов четко очерчивают область их применения. Среди компилируемых системных языков доминируют С и С++. Они универсальны, но разработка на них идет медленно из-за сложного синтаксиса и долгих циклов компиляции и отладки. «Языками продуктивности» традиционно считают Java и C#. По производительности они занимают промежуточное положение и прекрасно подходят ,чтобы «склеить» различные готовые компоненты и библиотеки в единую систему, что и обеспечивает им ведущую роль в современном коммерческом программировании.
В последнее время технологии создания компиляторов достигли такого уровня, когда появилась реальная возможность объединить скорость и универсальность системных языков с удобством «языков продуктивности» и, в определенной мере, даже с гибкостью скриптовых языков. Это породило «новую волну» языков программирования, основными представителями которой являются D, Vala, Genie и Go. Все они - компилируемые строго типизированные языки, содержащие конструкции и парадигмы «сверхвысокого уровня», ранее доступные только в «продуктивных» и скриптовых языках. Все эти языки рассматриваются как инструменты высокопродуктивного кроссплатформенного программирования и все изначально свободны или имеют свободные реализации. D и Go претендуют также на то, чтобы сломать устоявшиеся (и уже порядком устаревшие) подходы к многопоточному программированию. Сложно сказать, потеснят ли представители этой «новой волны» сегодняшних лидеров, но познакомиться с ними однозначно стоит - возможно, за ними будущее.
Среди компилируемых языков высокого уровня альтернативы С++ долгое время просто не было. Однако любой программист на С++ скажет, что этот язык на самом деле ужасен. Его синтаксис очень сложен и нелогичен, макросы и директивы препроцессора устарели десятки лет назад, шаблоны используются как «тайная шаманская технология» и т.п. Это хорошо понимал и Уолтер Брайт (Walter Bright) из небольшой компании Digital Mars. В 1999 г. он решил создать «идеальный С++». Новый язык был назван D, как следующая логическая ступень развития С++. Очень скоро D перерос идею «улучшенного С++» и превратился в своего рода концепцию «идеального системного языка», вобравшего все лучшее из С++, С#, Java, Python и Eiffel. D вырос из прагматического осмысления обширного практического опыта, а не из теоретических предпосылок. Его базовый синтаксис очень похож на С++, но все неудачные элементы дизайна этого языка тщательно «вычищены», а из других языков привнесены многие современные идеи и конструкции. D предельно логичен, в нем нет никаких «мистических странностей», которыми так богат С++. Обратная совместимость с С сохранена на уровне типов данных, а не синтаксиса. Это позволяет не тянуть в новый язык весь устаревший багаж языка С (вроде препроцессора), но позволяет напрямую вызывать библиотеки, написанные на С.
В 2007 г. в развитии D случился перелом. Текущая версия языка была переведена в «режим поддержки» и стала называться D1, а весь накопленный опыт и новые идеи - перенесены в несовместимую версию D2. D2 стабилизировался только в 2010 г. и по праву может претендовать на роль самого молодого и самого совершенного системного языка. В D2 есть практически все современные наработки в области языков программирования:
- Модули и их встроенное тестирование.
- Ручное и автоматическое управление памятью.
- Динамические массивы со срезами и векторизацией.
- Ассоциативные массивы.
- Анонимные функции и замыкания.
- Шаблоны и «подмешивания».
- Выполнение кода на этапе компиляции.
- Встроенный ассемблер.
- Контрактное программирование.
- Конкурентное программирование и т. д.
Все это входит в базовый язык, поэтому D получился «большим» - в нем намного больше конструкций и ключевых слов, чем в С++, но многое их того, что в С++ делается только с помощью STL и boost, в D доступно сразу.
Простой и логичный синтаксис языка облегчает жизнь не только человеку, но и лексическому анализатору. Компиляторы D работают на порядок быстрее компиляторов С++, обеспечивая сопоставимую производительность. И D1, и D2 полностью совместимы с С на уровне типов данных и бинарного интерфейса (ABI), позволяют напрямую компоновать программы с библиотеками, написанными на С, без потерь производительности (нужен только модуль-обертка для заголовочных файлов С). D2 также «понимает» модель вызова extern в С++, т. е. может компоноваться с теми объектами С++, которые могут вызываться из С. В остальном (например, на уровне классов и шаблонов) D и С++ принципиально несовместимы.
Итак, с изучением языка программирования D мы на сегодня закончили и теперь можно приступить к делам более насущным! Для начала купить детские ветровки (http://www.kakosha.ru/verxnyaya-odejda/vetrovki/) для ваших малышей! Для этого Вам следует посетить сайт www.kakosha.ru, где продаются отличные и недорогие вещи для детей!
1.
2. Документация, библиотеки и поддержка в IDE;
3. Устанавливаем компилятор;
4. Компилятор gdc и ldc.
«Новая волна» языков программирования
Языки программирования традиционно разделяют на скриптовые, системные и «языки продуктивности». Конек скриптовых языков (Perl, PHP, Python и т. д.) - очень быстрая разработка и отладка без затрат времени на компиляцию, но ресурсоемкость и медлительность интерпретаторов четко очерчивают область их применения. Среди компилируемых системных языков доминируют С и С++. Они универсальны, но разработка на них идет медленно из-за сложного синтаксиса и долгих циклов компиляции и отладки. «Языками продуктивности» традиционно считают Java и C#. По производительности они занимают промежуточное положение и прекрасно подходят ,чтобы «склеить» различные готовые компоненты и библиотеки в единую систему, что и обеспечивает им ведущую роль в современном коммерческом программировании.
В последнее время технологии создания компиляторов достигли такого уровня, когда появилась реальная возможность объединить скорость и универсальность системных языков с удобством «языков продуктивности» и, в определенной мере, даже с гибкостью скриптовых языков. Это породило «новую волну» языков программирования, основными представителями которой являются D, Vala, Genie и Go. Все они - компилируемые строго типизированные языки, содержащие конструкции и парадигмы «сверхвысокого уровня», ранее доступные только в «продуктивных» и скриптовых языках. Все эти языки рассматриваются как инструменты высокопродуктивного кроссплатформенного программирования и все изначально свободны или имеют свободные реализации. D и Go претендуют также на то, чтобы сломать устоявшиеся (и уже порядком устаревшие) подходы к многопоточному программированию. Сложно сказать, потеснят ли представители этой «новой волны» сегодняшних лидеров, но познакомиться с ними однозначно стоит - возможно, за ними будущее.
История и возможности языка D
Среди компилируемых языков высокого уровня альтернативы С++ долгое время просто не было. Однако любой программист на С++ скажет, что этот язык на самом деле ужасен. Его синтаксис очень сложен и нелогичен, макросы и директивы препроцессора устарели десятки лет назад, шаблоны используются как «тайная шаманская технология» и т.п. Это хорошо понимал и Уолтер Брайт (Walter Bright) из небольшой компании Digital Mars. В 1999 г. он решил создать «идеальный С++». Новый язык был назван D, как следующая логическая ступень развития С++. Очень скоро D перерос идею «улучшенного С++» и превратился в своего рода концепцию «идеального системного языка», вобравшего все лучшее из С++, С#, Java, Python и Eiffel. D вырос из прагматического осмысления обширного практического опыта, а не из теоретических предпосылок. Его базовый синтаксис очень похож на С++, но все неудачные элементы дизайна этого языка тщательно «вычищены», а из других языков привнесены многие современные идеи и конструкции. D предельно логичен, в нем нет никаких «мистических странностей», которыми так богат С++. Обратная совместимость с С сохранена на уровне типов данных, а не синтаксиса. Это позволяет не тянуть в новый язык весь устаревший багаж языка С (вроде препроцессора), но позволяет напрямую вызывать библиотеки, написанные на С.
В 2007 г. в развитии D случился перелом. Текущая версия языка была переведена в «режим поддержки» и стала называться D1, а весь накопленный опыт и новые идеи - перенесены в несовместимую версию D2. D2 стабилизировался только в 2010 г. и по праву может претендовать на роль самого молодого и самого совершенного системного языка. В D2 есть практически все современные наработки в области языков программирования:
- Модули и их встроенное тестирование.
- Ручное и автоматическое управление памятью.
- Динамические массивы со срезами и векторизацией.
- Ассоциативные массивы.
- Анонимные функции и замыкания.
- Шаблоны и «подмешивания».
- Выполнение кода на этапе компиляции.
- Встроенный ассемблер.
- Контрактное программирование.
- Конкурентное программирование и т. д.
Все это входит в базовый язык, поэтому D получился «большим» - в нем намного больше конструкций и ключевых слов, чем в С++, но многое их того, что в С++ делается только с помощью STL и boost, в D доступно сразу.
Простой и логичный синтаксис языка облегчает жизнь не только человеку, но и лексическому анализатору. Компиляторы D работают на порядок быстрее компиляторов С++, обеспечивая сопоставимую производительность. И D1, и D2 полностью совместимы с С на уровне типов данных и бинарного интерфейса (ABI), позволяют напрямую компоновать программы с библиотеками, написанными на С, без потерь производительности (нужен только модуль-обертка для заголовочных файлов С). D2 также «понимает» модель вызова extern в С++, т. е. может компоноваться с теми объектами С++, которые могут вызываться из С. В остальном (например, на уровне классов и шаблонов) D и С++ принципиально несовместимы.
Итак, с изучением языка программирования D мы на сегодня закончили и теперь можно приступить к делам более насущным! Для начала купить детские ветровки (http://www.kakosha.ru/verxnyaya-odejda/vetrovki/) для ваших малышей! Для этого Вам следует посетить сайт www.kakosha.ru, где продаются отличные и недорогие вещи для детей!