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

Содержание

Слайд 2

Введение

D — язык программирования общего назначения, предназначенный для прикладного и системного программирования.
В

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

Слайд 3

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

Облегчает написание кода, который без особых усилий может быть перенесен от

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

Слайд 4

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

Сохранены синтаксис и семантика языков C и C++.
Программы на

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

Слайд 5

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

Для программистов, регулярно пользующихся анализаторами кода

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

Слайд 6

Введение

D — язык программирования общего назначения, предназначенный для прикладного и системного программирования.
В

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

Слайд 7

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

Язык D не предназначен для уже существующих

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

Слайд 8

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

Классы
Объектно-ориентированная природа языка D происходит от классов. Модель наследования не

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

Объектно-ориентированное программирование

Слайд 9

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

Модули
Файлы исходного кода взаимно однозначно соответствуют модулям. Вместо включения (#include)

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

Эффективность

Слайд 10

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

Объявление против описания
C++ обычно требует, чтобы функции и классы были

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

Эффективность

Слайд 11

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

Объявление против описания
И более нет необходимости отдельного описания функций-членов, атрибутов

и спецификаций внешних объявлений (extern), как в языке C++:

Эффективность

Слайд 12

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

Объявление против описания
Заметка: Конечно же, в C++ тривиальные функции вроде

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

Эффективность

Но эквивалентный код на языке D будет рабочим:

Слайд 13

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

Шаблоны
Шаблоны в языке D предлагают простой путь поддержки обобщенного программирования,

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

Эффективность

Слайд 14

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

Настоящий typedef
В языках C и C++ оператор typedef на самом

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

Эффективность

Слайд 15

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

Язык D имеет поддержку обычных функций, включая глобальные функции, перегруженные

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

Функции

Слайд 16

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

Массивы в языке C имеют несколько недостатков, которые приходится корректировать:
Информация

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

Массивы

Слайд 17

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

В языке D оператор [ ] при объявлении массива ставится после типа

данных:

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

Слайд 18

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

Автоматическое управление памятью
Выделение памяти в языке D полностью контролируется методикой

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

Управление ресурсами (resource management)

Слайд 19

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

Легковесные составные типы данных
Язык D поддерживает простые структуры в стиле

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

Производительность

Слайд 20

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

Современный язык программирования должен сделать все, чтобы помочь программисту отловить

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

Надёжность

Слайд 21

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

Устойчивые к ошибкам методики
Динамические массивы вместо указателей;
Переменные-ссылки вместо указателей;
Ссылки на

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

Надёжность

Слайд 22

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

Проверки во время компиляции
Более строгая проверка на соответствие типа данных;
Никаких

пустых условий в цикле for;
Присвоения не возвращают булевого значения;
Проверка использования устаревших API;

Надёжность

Слайд 23

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

Приоритеты операторов и правила вычисления
Язык D сохранил операторы из языка

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

Совместимость

Слайд 24

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

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

Имя файла: Язык-программирования-D.pptx
Количество просмотров: 73
Количество скачиваний: 0