Переходы

This commit is contained in:
Alexander Zhirov 2023-03-05 19:41:48 +03:00
parent 4c954c9186
commit c1a5511959
2 changed files with 34 additions and 0 deletions

View File

@ -1,5 +1,7 @@
# Введение
[🢀 Содержание](../../) [1. Знакомство с языком D 🢂](../01-%D0%B7%D0%BD%D0%B0%D0%BA%D0%BE%D0%BC%D1%81%D1%82%D0%B2%D0%BE-%D1%81-%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%BC-d/)
- [Кому адресована эта книга](#кому-адресована-эта-книга)
- [Структура книги](#структура-книги)
- [Краткая история](#краткая-история)
@ -26,12 +28,16 @@ D это язык, который последовательно стара
- *Эклектизм*. D подразумевает, что каждая парадигма программирования ориентирована на свою задачу разработки. Поэтому он предполагает высокоинтегрированный объединенный стиль программирования, а не Единственно Верный Подход.
- *«Это мои принципы. А если они вам не нравятся, то у меня есть и другие»*[^1]. D старается всегда следовать своим принципам устройства языка. Иногда они идут вразрез с соображениями сложности реализации и трудностей использования и, главное, с человеческой природой, которая не всегда находит скрытую логику здравой и интуитивно понятной. В таких случаях все языки полагаются на собственное бесконечно субъективное понимание баланса, гибкости и особенно хорошего вкуса. На мой взгляд, D как минимум неплохо смотрится на фоне других языков, разработчикам которых приходилось принимать решения того же плана.
[В начало ⮍](#введение)
## Кому адресована эта книга
Предполагается, что вы программист. То есть знаете, как решить типичную задачу программирования с помощью языка, на котором вы пишете. Неважно, какой конкретно это язык. Если вы знаете один из языков, произошедших от Алгола (C, C++, Java или C#), то будете иметь некоторое преимущество перед другими читателями синтаксис сразу покажется знакомым, а риск встретить «мнимых друзей» (одинаковый синтаксис с разной семантикой) будет минимальным. (Особенно это касается случаев, когда вы вставляете кусок кода на C в D-файл. Он либо скомпилируется и будет делать то же самое, либо не скомпилируется вообще.)
Книга, знакомящая с языком, была бы скучной и неполной, если бы не объясняла, зачем в язык включены те или иные средства, и не показывала наиболее рациональные пути использования этих средств для решения конкретных задач. Эта книга логично обосновывает добавление в язык всех неочевидных средств и старается показать, почему не были выбраны лучшие, на первый взгляд, проектные решения. Некоторые альтернативы требуют необоснованно высоких затрат на реализацию, плохо взаимодействуют с другими средствами языка, имеющими больше прав на существование, обладают скрытыми недостатками, которые не видны в коротких и простых примерах, или просто недостаточно мощны для того, чтобы что-то значить. Важнее всего то, что разработчики языка могут совершать ошибки так же, как и все остальные люди, поэтому, пожалуй, лучшие проектные решения те, которых никто никогда не видел.
[В начало ⮍](#кому-адресована-эта-книга) [Наверх ⮍](#введение)
## Структура книги
Глава 1 это бодрящая прогулка с целью знакомства с основами языка. На этом этапе не все детали полностью видны, но вы сможете почувствовать язык и научиться писать на нем простейшие программы. Главы 2 и 3 необходимое перечисление выражений и инструкций языка соответственно. Я попытался скрасить неизбежную монотонность подробного описания, подчеркнув детали, отличающие D от других традиционных языков. Надеюсь, вам будет легко читать эти главы подряд, а также возвращаться к ним за справкой. Таблицы в конце этих глав это «шпаргалки», интуитивно понятные краткие справочники.
@ -46,6 +52,8 @@ D это язык, который последовательно стара
В главе 11 вы найдете информацию и рекомендации по построению больших программ из компонентов, а также небольшой обзор стандартной библиотеки D. В главе 12 рассмотрены вопросы перегрузки операторов, без которой серьезно пострадали бы многие абстракции, например комплексные числа. Наконец, в главе 13 освещен оригинальный подход D к многопоточному программированию.
[В начало ⮍](#структура-книги) [Наверх ⮍](#введение)
## Краткая история
Как бы сентиментально это ни звучало, D дитя любви. Когда-то в 1990-х Уолтер Брайт, автор компиляторов для C и C++, решил, что больше не хочет работать над ними, и задался целью определить язык, каким, по его мнению, «он должен быть». Многие из нас в тот или иной момент начинают мечтать об определении Правильного Языка; к счастью, Уолтер уже обладал значительной частью инфраструктуры: генератором кода (back-end), компоновщиком, а главное широчайшим опытом построения языковых процессоров. Благодаря этому опыту перед Уолтером открылась интересная перспектива. По какому-то таинственному закону природы плохо спроектированная функциональность языка проявляется в логически запутанной реализации компилятора, как отвратительный характер Дориана Грея проявлялся на его портрете. Проектируя свой новый язык, Уолтер планомерно старался избежать таких патологий.
@ -58,6 +66,8 @@ D это язык, который последовательно стара
Книга, которая сейчас перед вами, попытка восполнить это упущение. Надеюсь, читать ее вам будет так же приятно, как мне писать.
[В начало ⮍](#краткая-история) [Наверх ⮍](#введение)
## Благодарности
У языка D было столько разработчиков, что я и не пытаюсь перечислить их всех. Особо выделяются участники новостной группы `digitalmars.D` из сети Usenet. Эта группа была для нас одновременно и рупором, и полигоном для испытаний, куда мы выносили на суд свои проектные решения. Кроме того, ребята из `digitalmars.D` сгенерировали множество идей по улучшению языка.
@ -69,5 +79,7 @@ D это язык, который последовательно стара
*Андрей Александреску*<br>
Воскресенье 2 мая 2010 г.
[В начало ⮍](#благодарности) [Наверх ⮍](#введение)
[^1]: Афоризм американского комика Граучо Маркса. *Прим. ред.*
[^2]: Название компилятора языка D `dmd` расшифровывается как Digital Mars D. Digital Mars организация, которая занимается разработкой этого компилятора. *Прим. пер.*

22
book/README.md Normal file
View File

@ -0,0 +1,22 @@
# Язык программирования D
Андрей Александреску<br>
Язык программирования D<br>
2012
## Содержание
- [Введение](00-введение)
- [1. Знакомство с языком D](01-знакомство-с-языком-d)
- [2. Основные типы данных. Выражения](02-основные-типы-данных-выражения)
- [3. Инструкции](03-инструкции)
- [4. Массивы, ассоциативные массивы и строки](04-массивы-ассоциативные-массивы-и-строки)
- [5. Данные и функции. Функциональный стиль](05-данные-и-функции-функциональный-стиль)
- [6. Классы. Объектно-ориентированный стиль](06-классы-объектно-ориентированный-стиль)
- [7. Другие пользовательские типы](07-другие-пользовательские-типы)
- [8. Квалификаторы типа](08-квалификаторы-типа)
- [9. Обработка ошибок](09-обработка-ошибок)
- [10. Контрактное программирование](10-контрактное-программирование)
- [11. Расширение масштаба](11-расширение-масштаба)
- [12. Перегрузка операторов](12-перегрузка-операторов)
- [13. Параллельные вычисления](13-параллельные-вычисления)