Переходы
This commit is contained in:
parent
4c954c9186
commit
c1a5511959
|
@ -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 – организация, которая занимается разработкой этого компилятора. – *Прим. пер.*
|
||||||
|
|
|
@ -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-параллельные-вычисления)
|
Loading…
Reference in New Issue