Тема: “Язык программирования D”
Введение
Основные особенности D
Возможности, унаследованные от C/C++
Для кого и чего предназначен язык D
Введение
Для кого и чего D не предназначен
Особенности языка D
Особенности языка D
Особенности языка D
Особенности языка D
Особенности языка D
Особенности языка D
Особенности языка D
Особенности языка D
Особенности языка D
Особенности языка D
Особенности языка D
Особенности языка D
Особенности языка D
Особенности языка D
Особенности языка D
Особенности языка D
Список использованной литературы:
Спасибо за внимание!!!
1.99M
Категория: ПрограммированиеПрограммирование

Язык программирования D

1. Тема: “Язык программирования D”

Выполнил: студент 4 курса группы
ИСТ 13/1 Протасов А.Э.
Руководитель: К.Т.Н. Исаева Г.Н.

2. Введение

D — язык программирования общего
назначения, предназначенный для
прикладного и системного
программирования.
В D собран опыт разработки десятков
компиляторов для самых разнообразных
языков программирования, а также
попыток создания крупных проектов на
этих языках. Язык D вобрал в себя
лучшее из тех языков (больше всего из
C++) и практично применил эти
возможности.
2

3. Основные особенности D

O Облегчает написание кода, который без особых
O
O
O
O
O
O
усилий может быть перенесен от компилятора к
компилятору, от компьютера к компьютеру, от
одной операционной системы к другой;
Поддержка нескольких подходов к
программированию: структурный и объектноориентированный, как минимум;
Лёгкость изучения языка для тех, кто имел дело с
языками C и C++;
Обеспечение прямого низкоуровневого доступа к
оборудованию;
Наличие контекстно-независимой грамматики;
Легкость создания интернациональных программ;
Возможность создания легковесных и
самостоятельных программ
3

4. Возможности, унаследованные от C/C++

O Сохранены синтаксис и семантика языков C и
C++.
O Программы на D могут быть написаны с
использованием функционального и объектноориентированного подходов.
O Поддерживается модель разработки по этапам
компиляция/линкование/отладка
O Обработка исключений (exception handling).
O Приведение типов в реальном времени..
O D поддерживает совместимость с соглашением
о вызове функций в языке C.
O Перегрузка операторов.
O Использование шаблонов.
4

5. Для кого и чего предназначен язык D

O Для
программистов, регулярно пользующихся анализаторами кода для
выявления ошибок еще до компиляции;
O Для людей, которые компилируют код с максимальным количеством
включенных уровней предупреждений (warning levels).
O Для тех, кто решил, что обещание лёгкого объектно-ориентированного
подхода к программированию в языке C++ не выполняется из-за его
сложности и запутанности;
O Для программистов, которых впечатляет мощь языка C++, но
разочаровывает необходимость ручного управления памятью и ловля багов,
связанных с указателями;
O Для проектов, нуждающихся во встроенных средствах тестирования и
верификации;
O Для команд разработчиков, разрабатывающих приложения, исходные
тексты которых содержат миллионы строк кода;
O Для программистов, которые считают, что язык программирования должен
поддерживать достаточное количество возможностей для абстрактной
работы с указателями;
O Для математических программистов. Язык D поддерживает работу с
комплексными числами и операторами определения NaN’ов (not a number) и
бесконечностей (infinity). Они были добавлены в стандарт C99, но не в C++.
5

6. Введение

D — язык программирования общего
назначения, предназначенный для
прикладного и системного
программирования.
В D собран опыт разработки десятков
компиляторов для самых разнообразных
языков программирования, а также
попыток создания крупных проектов на
этих языках. Язык D вобрал в себя
лучшее из тех языков (больше всего из
C++) и практично применил эти
возможности.
6

7. Для кого и чего D не предназначен

O Язык D не предназначен для уже
существующих программ (однако, D
поддерживает существующие API для
языка C).
O Для очень маленьких программ.
O В качестве первого языка
программирования.
O Для борцов за чистоту языка.
7

8. Особенности языка D

Объектно-ориентированное программирование
Классы
Объектно-ориентированная природа языка D
происходит от классов. Модель наследования
не поддерживает наследования от нескольких
классов, зато расширяется за счет
использования интерфейсов.
Перегрузка операторов
Классы могут быть приспособлены для
работы с уже существующими операторами.
Благодаря перегрузке операторов можно
создавать новые типы данных. Например,
можно создать тип данных для работы с
большими числами.
8

9. Особенности языка D

Эффективность
Модули
Файлы исходного кода взаимно однозначно
соответствуют модулям. Вместо включения
(#include) файлов исходного кода достаточно
импортировать модуль. В этом случае нет
необходимости беспокоиться о том, что один и
тот же модуль будет импортирован несколько
раз, а, значит, и нет необходимости обрамлять
код в заголовочных файлах с использованием
макросов
препроцессора #ifndef/#endif или #pragma
once.
9

10. Особенности языка D

Эффективность
Объявление против описания
C++ обычно требует, чтобы функции и классы
были объявлены дважды — объявление происходит
в заголовочных файлах (*.h), а описание происходит
в файлах исходного кода (*.cpp). Это утомительный
и подверженный ошибкам процесс. Очевидно, что
программисту достаточно объявить функцию или
класс лишь однажды, а компилятор должен
впоследствии извлечь информацию об объявлении и
сделать ее доступной для импортирования. Именно
так работает язык программирования D, например:
10

11. Особенности языка D

Эффективность
Объявление против описания
И более нет необходимости отдельного описания
функций-членов, атрибутов и спецификаций
внешних объявлений (extern), как в языке C++:
11

12. Особенности языка D

Эффективность
Объявление против описания
Заметка: Конечно же, в C++ тривиальные функции вроде
{ return 7; } тоже описаны внутри класса, но более сложные
должны быть описаны отдельно. Вдобавок, если нужны
опережающие ссылки (ссылки на класс или функцию, которые
объявлены, но ещё не определены), то для этих объектов нужны
прототипы (prototype). Следующий код не будет работать в C++:
Но эквивалентный код на языке D будет
рабочим:
12

13. Особенности языка D

Эффективность
Шаблоны
Шаблоны в языке D предлагают простой путь
поддержки обобщенного программирования, в
то же время обеспечивая использование
частичной специализации.
Ассоциативные массивы
Ассоциативные массивы — это массивы, в
качестве индекса в которых можно
использовать любой тип данных, а не только
целые числа. По существу, ассоциативные
массивы являются хеш-таблицами, которые
облегчают создание быстрых, эффективных и
устойчивых к ошибкам таблиц символов.
13

14. Особенности языка D

Эффективность
Настоящий typedef
В языках C и C++ оператор typedef на самом
деле просто создает синоним типа данных и
никакого нового типа данных не объявляется. В
языке D оператор typedef объявляет новый тип
данных. Таким образом, код
создает новый тип данных handle. К новому
типу данных применяется проверка на
соответствие типу данных, а также при
перегрузке функций новый тип данных
отличается от того типа данных, на основе
которого он был создан. Например:
14

15. Особенности языка D

Функции
Язык D имеет поддержку обычных функций, включая глобальные функции,
перегруженные функции, встраивание функций, методы классов,
виртуальные методы классов, указатели на функции. Также в D реализованы:
Вложенные функции
Функции могут быть объявлены в теле других функций, что очень полезно
для ограничения области видимости вспомогательных функций.
Функциональные литералы (function literals)
Анонимные функции могут быть встроены напрямую в выражение.
Динамические делегирования (closure)
Встроенные функции и методы классов могут использоваться при
делегировании обязанностей, что делает обобщенное программирование
проще.
Спецификаторы доступа к параметрам функций: in, out и inout
Данные спецификаторы не только делают объявления функций
говорящими сами за себя, но и открывает возможности компилятора для
помощи в нахождении ошибок.
Все эти возможности D позволяют использовать больше различных
программных интерфейсов, а также избавляет от необходимости
использовать различные искусственные приемы, как, например IDL (Interface
Definition Languages).
15

16. Особенности языка D

Массивы
Массивы в языке C имеют несколько недостатков,
которые приходится корректировать:
O Информация о размерности массива не прилагается к
массиву, поэтому должна извлекаться дополнительно и
передаваться отдельно.
O Когда массив передается в функцию, на самом деле
передается ссылка на него, даже когда прототип
функции говорит, что должен быть передан массив.
O Размерность массивов языка C не может быть изменена.
O В языке C нельзя произвести проверку на нарушение
границ массива.
O Массивы объявляются с использованием
оператора [ ] после названия массива. Это ведет к
использованию очень неуклюжего синтаксиса при
объявлении, скажем, ссылки на массив:
16

17. Особенности языка D

Массивы
В языке D оператор [ ] при объявлении
массива ставится после типа данных:
Этот код более легок для восприятия. В
языке D можно использовать несколько
видов массивов: указатели, статические
массивы, динамические массивы и
ассоциативные массивы.
17

18. Особенности языка D

Управление ресурсами (resource management)
Автоматическое управление памятью
Выделение памяти в языке D полностью контролируется
методикой сбора мусора. Опыт показывает, что
большинство сложных возможностей языка C++ требуют
последующего освобождения памяти. Методика сбора
мусора делает жизнь проще.
Явное управление памятью
Несмотря на то, что язык D поддерживает
автоматический сбор мусора, операторы new и delete могут
быть перегружены для определенных классов.
RAII
RAII — это современная методика разработки для
управления распределением и освобождением ресурсов.
Язык D поддерживает методику RAII в контролируемой и
предсказуемой манере, независимой от цикла сбора мусора.
18

19. Особенности языка D

Производительность
Легковесные составные типы данных
Язык D поддерживает простые структуры в
стиле языка C не только для совместимости с
этим языком, но и потому что они очень полезны
в тех случаях, когда возможностей классов
слишком много.
Встроенный ассемблер
Драйверы устройств, высокопроизводительные
системные приложения, а также встраиваемые
системы (embedded systems) требуют углубления
до уровня команд ассемблера. Программирование
на языке D не требует использования ассемблера,
но он реализован и является частью языка.
19

20. Особенности языка D

Надёжность
Современный язык программирования должен сделать все, чтобы
помочь программисту отловить ошибки в коде. Эта помощь может
проявляться по-разному: от обеспечения лёгкости использования
устойчивых методик до эвристического поиска компилятором явно
некорректного кода и проверок во время выполнения программы.
Отладочный код
Теперь отладка является частью языка. Отладочный код может
быть включен или отключен перед компилированием, при этом не
требуется использовать макросы или команды препроцессора.
Обработка исключений
Модель try-catch-finally предпочтительнее, чем просто try-catch,
потому что не требует создания временных (dummy) объектов,
деструктор которого будет выполнять то, что может сделать finally.
Синхронизация
Многопоточное программирование становится всё более
распространенным, поэтому в языке D реализованы базовые
возможности для создания многопоточных приложений.
20

21. Особенности языка D

Надёжность
Устойчивые к ошибкам методики
O Динамические массивы вместо указателей;
O Переменные-ссылки вместо указателей;
O Ссылки на объекты вместо указателей;
O Сбор мусора вместо явного управления памятью;
O Встроенные возможности синхронизации потоков;
O Встраиваемые функции вместо макросов;
O Уменьшение необходимости использовать
указатели;
O Явные размеры целого типа данных;
O Отсутствие неопределенности, касающейся
наличия знака у символьного типа;
O Отсутствие необходимости повторного объявления;
21

22. Особенности языка D

Надёжность
Проверки во время компиляции
O Более строгая проверка на соответствие
типа данных;
O Никаких пустых условий в цикле for;
O Присвоения не возвращают булевого
значения;
O Проверка использования устаревших API;
22

23. Особенности языка D

Совместимость
Приоритеты операторов и правила вычисления
Язык D сохранил операторы из языка C, а также их
приоритеты и правила вычисления.
Прямой доступ к API языка C
Язык D не только имеет типы данных, соответствующие
типам данных языка C, но и обеспечивает прямой доступ к
функциям языка C.
Поддержка всех типов данных языка C
Это делает возможным взаимодействие с API языка C или с
кодом существующей библиотеки языка C.
Обработка исключений операционной системы
Механизм обработки исключений языка D совместим с
механизмом обработки исключений операционной системы.
Использование существующих инструментариев
Код на языке D преобразуется в объектный файл
стандартного формата.
23

24. Список использованной литературы:

O https://ru.wikibooks.org/wiki/Язык_п
рограммирования_D
O Язык Программирования D.
Андрей Александреску. СанктПетербург – Москва 2012г.
24

25. Спасибо за внимание!!!

25
English     Русский Правила