From c1a5511959d94534dd5784f2129bd362b0fd9536 Mon Sep 17 00:00:00 2001 From: Alexander Date: Sun, 5 Mar 2023 19:41:48 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D1=85=D0=BE=D0=B4?= =?UTF-8?q?=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- book/00-введение/README.md | 12 ++++++++++++ book/README.md | 22 ++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 book/README.md diff --git a/book/00-введение/README.md b/book/00-введение/README.md index ad1da55..bcb32ab 100644 --- a/book/00-введение/README.md +++ b/book/00-введение/README.md @@ -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 – это язык, который последовательно стара *Андрей Александреску*
Воскресенье 2 мая 2010 г. +[В начало ⮍](#благодарности) [Наверх ⮍](#введение) + [^1]: Афоризм американского комика Граучо Маркса. – *Прим. ред.* [^2]: Название компилятора языка D `dmd` расшифровывается как Digital Mars D. Digital Mars – организация, которая занимается разработкой этого компилятора. – *Прим. пер.* diff --git a/book/README.md b/book/README.md new file mode 100644 index 0000000..c6b7d5f --- /dev/null +++ b/book/README.md @@ -0,0 +1,22 @@ +# Язык программирования D + +Андрей Александреску
+Язык программирования D
+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-параллельные-вычисления)