Переходы

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 подразумевает, что каждая парадигма программирования ориентирована на свою задачу разработки. Поэтому он предполагает высокоинтегрированный объединенный стиль программирования, а не Единственно Верный Подход. - *Эклектизм*. D подразумевает, что каждая парадигма программирования ориентирована на свою задачу разработки. Поэтому он предполагает высокоинтегрированный объединенный стиль программирования, а не Единственно Верный Подход.
- *«Это мои принципы. А если они вам не нравятся, то у меня есть и другие»*[^1]. D старается всегда следовать своим принципам устройства языка. Иногда они идут вразрез с соображениями сложности реализации и трудностей использования и, главное, с человеческой природой, которая не всегда находит скрытую логику здравой и интуитивно понятной. В таких случаях все языки полагаются на собственное бесконечно субъективное понимание баланса, гибкости и особенно хорошего вкуса. На мой взгляд, D как минимум неплохо смотрится на фоне других языков, разработчикам которых приходилось принимать решения того же плана. - *«Это мои принципы. А если они вам не нравятся, то у меня есть и другие»*[^1]. D старается всегда следовать своим принципам устройства языка. Иногда они идут вразрез с соображениями сложности реализации и трудностей использования и, главное, с человеческой природой, которая не всегда находит скрытую логику здравой и интуитивно понятной. В таких случаях все языки полагаются на собственное бесконечно субъективное понимание баланса, гибкости и особенно хорошего вкуса. На мой взгляд, D как минимум неплохо смотрится на фоне других языков, разработчикам которых приходилось принимать решения того же плана.
[В начало ⮍](#введение)
## Кому адресована эта книга ## Кому адресована эта книга
Предполагается, что вы программист. То есть знаете, как решить типичную задачу программирования с помощью языка, на котором вы пишете. Неважно, какой конкретно это язык. Если вы знаете один из языков, произошедших от Алгола (C, C++, Java или C#), то будете иметь некоторое преимущество перед другими читателями синтаксис сразу покажется знакомым, а риск встретить «мнимых друзей» (одинаковый синтаксис с разной семантикой) будет минимальным. (Особенно это касается случаев, когда вы вставляете кусок кода на C в D-файл. Он либо скомпилируется и будет делать то же самое, либо не скомпилируется вообще.) Предполагается, что вы программист. То есть знаете, как решить типичную задачу программирования с помощью языка, на котором вы пишете. Неважно, какой конкретно это язык. Если вы знаете один из языков, произошедших от Алгола (C, C++, Java или C#), то будете иметь некоторое преимущество перед другими читателями синтаксис сразу покажется знакомым, а риск встретить «мнимых друзей» (одинаковый синтаксис с разной семантикой) будет минимальным. (Особенно это касается случаев, когда вы вставляете кусок кода на C в D-файл. Он либо скомпилируется и будет делать то же самое, либо не скомпилируется вообще.)
Книга, знакомящая с языком, была бы скучной и неполной, если бы не объясняла, зачем в язык включены те или иные средства, и не показывала наиболее рациональные пути использования этих средств для решения конкретных задач. Эта книга логично обосновывает добавление в язык всех неочевидных средств и старается показать, почему не были выбраны лучшие, на первый взгляд, проектные решения. Некоторые альтернативы требуют необоснованно высоких затрат на реализацию, плохо взаимодействуют с другими средствами языка, имеющими больше прав на существование, обладают скрытыми недостатками, которые не видны в коротких и простых примерах, или просто недостаточно мощны для того, чтобы что-то значить. Важнее всего то, что разработчики языка могут совершать ошибки так же, как и все остальные люди, поэтому, пожалуй, лучшие проектные решения те, которых никто никогда не видел. Книга, знакомящая с языком, была бы скучной и неполной, если бы не объясняла, зачем в язык включены те или иные средства, и не показывала наиболее рациональные пути использования этих средств для решения конкретных задач. Эта книга логично обосновывает добавление в язык всех неочевидных средств и старается показать, почему не были выбраны лучшие, на первый взгляд, проектные решения. Некоторые альтернативы требуют необоснованно высоких затрат на реализацию, плохо взаимодействуют с другими средствами языка, имеющими больше прав на существование, обладают скрытыми недостатками, которые не видны в коротких и простых примерах, или просто недостаточно мощны для того, чтобы что-то значить. Важнее всего то, что разработчики языка могут совершать ошибки так же, как и все остальные люди, поэтому, пожалуй, лучшие проектные решения те, которых никто никогда не видел.
[В начало ⮍](#кому-адресована-эта-книга) [Наверх ⮍](#введение)
## Структура книги ## Структура книги
Глава 1 это бодрящая прогулка с целью знакомства с основами языка. На этом этапе не все детали полностью видны, но вы сможете почувствовать язык и научиться писать на нем простейшие программы. Главы 2 и 3 необходимое перечисление выражений и инструкций языка соответственно. Я попытался скрасить неизбежную монотонность подробного описания, подчеркнув детали, отличающие D от других традиционных языков. Надеюсь, вам будет легко читать эти главы подряд, а также возвращаться к ним за справкой. Таблицы в конце этих глав это «шпаргалки», интуитивно понятные краткие справочники. Глава 1 это бодрящая прогулка с целью знакомства с основами языка. На этом этапе не все детали полностью видны, но вы сможете почувствовать язык и научиться писать на нем простейшие программы. Главы 2 и 3 необходимое перечисление выражений и инструкций языка соответственно. Я попытался скрасить неизбежную монотонность подробного описания, подчеркнув детали, отличающие D от других традиционных языков. Надеюсь, вам будет легко читать эти главы подряд, а также возвращаться к ним за справкой. Таблицы в конце этих глав это «шпаргалки», интуитивно понятные краткие справочники.
@ -46,6 +52,8 @@ D это язык, который последовательно стара
В главе 11 вы найдете информацию и рекомендации по построению больших программ из компонентов, а также небольшой обзор стандартной библиотеки D. В главе 12 рассмотрены вопросы перегрузки операторов, без которой серьезно пострадали бы многие абстракции, например комплексные числа. Наконец, в главе 13 освещен оригинальный подход D к многопоточному программированию. В главе 11 вы найдете информацию и рекомендации по построению больших программ из компонентов, а также небольшой обзор стандартной библиотеки D. В главе 12 рассмотрены вопросы перегрузки операторов, без которой серьезно пострадали бы многие абстракции, например комплексные числа. Наконец, в главе 13 освещен оригинальный подход D к многопоточному программированию.
[В начало ⮍](#структура-книги) [Наверх ⮍](#введение)
## Краткая история ## Краткая история
Как бы сентиментально это ни звучало, D дитя любви. Когда-то в 1990-х Уолтер Брайт, автор компиляторов для C и C++, решил, что больше не хочет работать над ними, и задался целью определить язык, каким, по его мнению, «он должен быть». Многие из нас в тот или иной момент начинают мечтать об определении Правильного Языка; к счастью, Уолтер уже обладал значительной частью инфраструктуры: генератором кода (back-end), компоновщиком, а главное широчайшим опытом построения языковых процессоров. Благодаря этому опыту перед Уолтером открылась интересная перспектива. По какому-то таинственному закону природы плохо спроектированная функциональность языка проявляется в логически запутанной реализации компилятора, как отвратительный характер Дориана Грея проявлялся на его портрете. Проектируя свой новый язык, Уолтер планомерно старался избежать таких патологий. Как бы сентиментально это ни звучало, D дитя любви. Когда-то в 1990-х Уолтер Брайт, автор компиляторов для C и C++, решил, что больше не хочет работать над ними, и задался целью определить язык, каким, по его мнению, «он должен быть». Многие из нас в тот или иной момент начинают мечтать об определении Правильного Языка; к счастью, Уолтер уже обладал значительной частью инфраструктуры: генератором кода (back-end), компоновщиком, а главное широчайшим опытом построения языковых процессоров. Благодаря этому опыту перед Уолтером открылась интересная перспектива. По какому-то таинственному закону природы плохо спроектированная функциональность языка проявляется в логически запутанной реализации компилятора, как отвратительный характер Дориана Грея проявлялся на его портрете. Проектируя свой новый язык, Уолтер планомерно старался избежать таких патологий.
@ -58,6 +66,8 @@ D это язык, который последовательно стара
Книга, которая сейчас перед вами, попытка восполнить это упущение. Надеюсь, читать ее вам будет так же приятно, как мне писать. Книга, которая сейчас перед вами, попытка восполнить это упущение. Надеюсь, читать ее вам будет так же приятно, как мне писать.
[В начало ⮍](#краткая-история) [Наверх ⮍](#введение)
## Благодарности ## Благодарности
У языка D было столько разработчиков, что я и не пытаюсь перечислить их всех. Особо выделяются участники новостной группы `digitalmars.D` из сети Usenet. Эта группа была для нас одновременно и рупором, и полигоном для испытаний, куда мы выносили на суд свои проектные решения. Кроме того, ребята из `digitalmars.D` сгенерировали множество идей по улучшению языка. У языка D было столько разработчиков, что я и не пытаюсь перечислить их всех. Особо выделяются участники новостной группы `digitalmars.D` из сети Usenet. Эта группа была для нас одновременно и рупором, и полигоном для испытаний, куда мы выносили на суд свои проектные решения. Кроме того, ребята из `digitalmars.D` сгенерировали множество идей по улучшению языка.
@ -69,5 +79,7 @@ D это язык, который последовательно стара
*Андрей Александреску*<br> *Андрей Александреску*<br>
Воскресенье 2 мая 2010 г. Воскресенье 2 мая 2010 г.
[В начало ⮍](#благодарности) [Наверх ⮍](#введение)
[^1]: Афоризм американского комика Граучо Маркса. *Прим. ред.* [^1]: Афоризм американского комика Граучо Маркса. *Прим. ред.*
[^2]: Название компилятора языка D `dmd` расшифровывается как Digital Mars D. Digital Mars организация, которая занимается разработкой этого компилятора. *Прим. пер.* [^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-параллельные-вычисления)