Переходы 5
This commit is contained in:
parent
666a01e954
commit
bbe57cd8b5
|
@ -81,7 +81,7 @@ D – это язык, который последовательно стара
|
||||||
|
|
||||||
[В начало ⮍](#благодарности) [Наверх ⮍](#введение)
|
[В начало ⮍](#благодарности) [Наверх ⮍](#введение)
|
||||||
|
|
||||||
[[🢀 Содержание]](../../) [Введение] [[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/)
|
[🢀 Содержание](../../) Введение [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/)
|
||||||
|
|
||||||
[^1]: Афоризм американского комика Граучо Маркса. – *Прим. ред.*
|
[^1]: Афоризм американского комика Граучо Маркса. – *Прим. ред.*
|
||||||
[^2]: Название компилятора языка D `dmd` расшифровывается как Digital Mars D. Digital Mars – организация, которая занимается разработкой этого компилятора. – *Прим. пер.*
|
[^2]: Название компилятора языка D `dmd` расшифровывается как Digital Mars D. Digital Mars – организация, которая занимается разработкой этого компилятора. – *Прим. пер.*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# 1. Знакомство с языком D
|
# 1. Знакомство с языком D
|
||||||
|
|
||||||
[[🢀 Введение]](../00-%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5/) [1. Знакомство с языком D] [[2. Основные типы данных. Выражения 🢂]](../02-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/)
|
[🢀 Введение](../00-%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5/) 1. Знакомство с языком D [2. Основные типы данных. Выражения 🢂](../02-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/)
|
||||||
|
|
||||||
- [1.1. Числа и выражения](#1-1-числа-и-выражения)
|
- [1.1. Числа и выражения](#1-1-числа-и-выражения)
|
||||||
- [1.2. Инструкции](#1-2-инструкции)
|
- [1.2. Инструкции](#1-2-инструкции)
|
||||||
|
@ -930,7 +930,7 @@ void main()
|
||||||
|
|
||||||
[В начало ⮍](#1-8-итоги) [Наверх ⮍](#1-знакомство-с-языком-d)
|
[В начало ⮍](#1-8-итоги) [Наверх ⮍](#1-знакомство-с-языком-d)
|
||||||
|
|
||||||
[[🢀 Введение]](../00-%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5/) [1. Знакомство с языком D] [[2. Основные типы данных. Выражения 🢂]](../02-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/)
|
[🢀 Введение](../00-%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5/) 1. Знакомство с языком D [2. Основные типы данных. Выражения 🢂](../02-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/)
|
||||||
|
|
||||||
[^1]: «Shebang» (от shell bang: shell – консоль, bang – восклицательный знак), или «shabang» (# – sharp) – обозначение пути к компилятору или интерпретатору в виде `#!/путь/к/программе`. – *Прим. пер.*
|
[^1]: «Shebang» (от shell bang: shell – консоль, bang – восклицательный знак), или «shabang» (# – sharp) – обозначение пути к компилятору или интерпретатору в виде `#!/путь/к/программе`. – *Прим. пер.*
|
||||||
[^2]: В этой книге под «параметром» понимается значение, используемое внутри функции, а под «аргументом» – значение, передаваемое в функцию извне.
|
[^2]: В этой книге под «параметром» понимается значение, используемое внутри функции, а под «аргументом» – значение, передаваемое в функцию извне.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# 2. Основные типы данных. Выражения
|
# 2. Основные типы данных. Выражения
|
||||||
|
|
||||||
[[🢀 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/) [2. Основные типы данных. Выражения] [[3. Инструкции 🢂]](../03-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8/)
|
[🢀 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/) 2. Основные типы данных. Выражения [3. Инструкции 🢂](../03-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8/)
|
||||||
|
|
||||||
- [2.1. Идентификаторы](#2-1-идентификаторы)
|
- [2.1. Идентификаторы](#2-1-идентификаторы)
|
||||||
- [2.1.1. Ключевые слова](#2-1-1-ключевые-слова)
|
- [2.1.1. Ключевые слова](#2-1-1-ключевые-слова)
|
||||||
|
@ -1264,7 +1264,7 @@ int c = (a = b, b = 7, 8);
|
||||||
|
|
||||||
[В начало ⮍](#2-4-итоги-и-справочник) [Наверх ⮍](#2-основные-типы-данных-выражения)
|
[В начало ⮍](#2-4-итоги-и-справочник) [Наверх ⮍](#2-основные-типы-данных-выражения)
|
||||||
|
|
||||||
[[🢀 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/) [2. Основные типы данных. Выражения] [[3. Инструкции 🢂]](../03-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8/)
|
[🢀 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/) 2. Основные типы данных. Выражения [3. Инструкции 🢂](../03-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8/)
|
||||||
|
|
||||||
[^1]: Впрочем, использование нелатинских букв является дурным тоном. – *Прим. науч. ред.*
|
[^1]: Впрочем, использование нелатинских букв является дурным тоном. – *Прим. науч. ред.*
|
||||||
[^2]: С99 – обновленная спецификация C, в том числе добавляющая поддержку знаков Юникода. – *Прим. пер.*
|
[^2]: С99 – обновленная спецификация C, в том числе добавляющая поддержку знаков Юникода. – *Прим. пер.*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# 3. Инструкции
|
# 3. Инструкции
|
||||||
|
|
||||||
[[🢀 2. Основные типы данных. Выражения]](../02-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/) [3. Инструкции] [[4. Массивы, ассоциативные массивы и строки 🢂]](../04-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B0%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B8-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8/)
|
[🢀 2. Основные типы данных. Выражения](../02-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/) 3. Инструкции [4. Массивы, ассоциативные массивы и строки 🢂](../04-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B0%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B8-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8/)
|
||||||
|
|
||||||
- [3.1. Инструкция-выражение](#3-1-инструкция-выражение)
|
- [3.1. Инструкция-выражение](#3-1-инструкция-выражение)
|
||||||
- [3.2. Составная инструкция](#3-2-составная-инструкция)
|
- [3.2. Составная инструкция](#3-2-составная-инструкция)
|
||||||
|
@ -1133,7 +1133,7 @@ D предоставляет все ожидаемые обычные инстр
|
||||||
|
|
||||||
[В начало ⮍](#3-16-итоги-и-справочник) [Наверх ⮍](#3-инструкции)
|
[В начало ⮍](#3-16-итоги-и-справочник) [Наверх ⮍](#3-инструкции)
|
||||||
|
|
||||||
[[🢀 2. Основные типы данных. Выражения]](../02-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/) [3. Инструкции] [[4. Массивы, ассоциативные массивы и строки 🢂]](../04-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B0%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B8-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8/)
|
[🢀 2. Основные типы данных. Выражения](../02-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/) 3. Инструкции [4. Массивы, ассоциативные массивы и строки 🢂](../04-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B0%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B8-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8/)
|
||||||
|
|
||||||
[^1]: Да-да, это «еще одно место, где используется ключевое слово `static»`.
|
[^1]: Да-да, это «еще одно место, где используется ключевое слово `static»`.
|
||||||
[^2]: Тип `enum` будет рассмотрен позже. Для понимания примера надо знать, что значения объявленные как `enum`, определены на этапе компиляции, неизменны и могут использоваться в конструкциях, вычисляемых на этапе компиляции. – *Прим. науч. ред.*
|
[^2]: Тип `enum` будет рассмотрен позже. Для понимания примера надо знать, что значения объявленные как `enum`, определены на этапе компиляции, неизменны и могут использоваться в конструкциях, вычисляемых на этапе компиляции. – *Прим. науч. ред.*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# 4. Массивы, ассоциативные массивы и строки
|
# 4. Массивы, ассоциативные массивы и строки
|
||||||
|
|
||||||
[[🢀 3. Инструкции]](../03-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8/) [4. Массивы, ассоциативные массивы и строки] [[5. Данные и функции. Функциональный стиль 🢂]](../05-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/)
|
[🢀 3. Инструкции](../03-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8/) 4. Массивы, ассоциативные массивы и строки [5. Данные и функции. Функциональный стиль 🢂](../05-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/)
|
||||||
|
|
||||||
- [4.1. Динамические массивы](#4-1-динамические-массивы)
|
- [4.1. Динамические массивы](#4-1-динамические-массивы)
|
||||||
- [4.1.1. Длина](#4-1-1-длина)
|
- [4.1.1. Длина](#4-1-1-длина)
|
||||||
|
@ -1351,7 +1351,7 @@ y += 100; // Хм...
|
||||||
|
|
||||||
[В начало ⮍](#4-7-итоги-и-справочник) [Наверх ⮍](#4-массивы-ассоциативные-массивы-и-строки)
|
[В начало ⮍](#4-7-итоги-и-справочник) [Наверх ⮍](#4-массивы-ассоциативные-массивы-и-строки)
|
||||||
|
|
||||||
[[🢀 3. Инструкции]](../03-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8/) [4. Массивы, ассоциативные массивы и строки] [[5. Данные и функции. Функциональный стиль 🢂]](../05-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/)
|
[🢀 3. Инструкции](../03-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8/) 4. Массивы, ассоциативные массивы и строки [5. Данные и функции. Функциональный стиль 🢂](../05-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/)
|
||||||
|
|
||||||
[^1]: quadrupeds (англ.) – четвероногие. – *Прим. пер.*
|
[^1]: quadrupeds (англ.) – четвероногие. – *Прим. пер.*
|
||||||
[^2]: Заметим также, что переход по нужному индексу статического многомерного массива происходит за один раз, а сам массив хранится в непрерывной области памяти. Например, для хранения массива `arr` типа `int[5][5]` выделяется область размером `5 * 5 * int.sizeof` байт, а переход по адресу `arr[2][2]` выглядит как `&arr + 2 * 5 + 2`. Если же статический массив размещается в сегменте данных (как глобальная переменная или как локальная с атрибутом `static`), а индексы известны на этапе компиляции, то переход по указателю вообще не потребуется. – *Прим. науч. ред.*
|
[^2]: Заметим также, что переход по нужному индексу статического многомерного массива происходит за один раз, а сам массив хранится в непрерывной области памяти. Например, для хранения массива `arr` типа `int[5][5]` выделяется область размером `5 * 5 * int.sizeof` байт, а переход по адресу `arr[2][2]` выглядит как `&arr + 2 * 5 + 2`. Если же статический массив размещается в сегменте данных (как глобальная переменная или как локальная с атрибутом `static`), а индексы известны на этапе компиляции, то переход по указателю вообще не потребуется. – *Прим. науч. ред.*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# 5. Данные и функции. Функциональный стиль
|
# 5. Данные и функции. Функциональный стиль
|
||||||
|
|
||||||
[[🢀 4. Массивы, ассоциативные массивы и строки]](../04-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B0%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B8-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8/) [5. Данные и функции. Функциональный стиль] [[6. Классы. Объектно-ориентированный стиль 🢂]](../06-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/)
|
[🢀 4. Массивы, ассоциативные массивы и строки](../04-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B0%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B8-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8/) 5. Данные и функции. Функциональный стиль [6. Классы. Объектно-ориентированный стиль 🢂](../06-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/)
|
||||||
|
|
||||||
- [5.1. Написание и модульное тестирование простой функции](#5-1-написание-и-модульное-тестирование-простой-функции)
|
- [5.1. Написание и модульное тестирование простой функции](#5-1-написание-и-модульное-тестирование-простой-функции)
|
||||||
- [5.2. Соглашения о передаче аргументов и классы памяти](#5-2-соглашения-о-передаче-аргументов-и-классы-памяти)
|
- [5.2. Соглашения о передаче аргументов и классы памяти](#5-2-соглашения-о-передаче-аргументов-и-классы-памяти)
|
||||||
|
@ -1790,7 +1790,7 @@ struct LinearCongruentialEngine(UIntType, UIntType a, UIntType c, UIntType m)
|
||||||
|
|
||||||
[В начало ⮍](#5-12-вычисления-во-время-компиляции) [Наверх ⮍](#5-данные-и-функции-функциональный-стиль)
|
[В начало ⮍](#5-12-вычисления-во-время-компиляции) [Наверх ⮍](#5-данные-и-функции-функциональный-стиль)
|
||||||
|
|
||||||
[[🢀 4. Массивы, ассоциативные массивы и строки]](../04-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B0%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B8-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8/) [5. Данные и функции. Функциональный стиль] [[6. Классы. Объектно-ориентированный стиль 🢂]](../06-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/)
|
[🢀 4. Массивы, ассоциативные массивы и строки](../04-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B0%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%B8-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8/) 5. Данные и функции. Функциональный стиль [6. Классы. Объектно-ориентированный стиль 🢂](../06-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/)
|
||||||
|
|
||||||
[^1]: Функция `find` ищет «иголку» (`needle`) в «стоге сена» (`haystack`). – *Прим. науч. ред.*
|
[^1]: Функция `find` ищет «иголку» (`needle`) в «стоге сена» (`haystack`). – *Прим. науч. ред.*
|
||||||
[^2]: Следует подчеркнуть, что проверка выполнения подобных соглашений выполняется на этапе компиляции, и если компилятор обмануть, например с помощью приведения типов, то соглашения можно нарушить. Пример: `(cast(int[])data)[5] = 42;` даст именно то, что ожидается. Но это уже моветон. – *Прим. науч. ред.*
|
[^2]: Следует подчеркнуть, что проверка выполнения подобных соглашений выполняется на этапе компиляции, и если компилятор обмануть, например с помощью приведения типов, то соглашения можно нарушить. Пример: `(cast(int[])data)[5] = 42;` даст именно то, что ожидается. Но это уже моветон. – *Прим. науч. ред.*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# 6. Классы. Объектно-ориентированный стиль
|
# 6. Классы. Объектно-ориентированный стиль
|
||||||
|
|
||||||
[[🢀 5. Данные и функции. Функциональный стиль]](../05-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/) [6. Классы. Объектно-ориентированный стиль] [[7. Другие пользовательские типы 🢂]](../07-%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B/)
|
[🢀 5. Данные и функции. Функциональный стиль](../05-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/) 6. Классы. Объектно-ориентированный стиль [7. Другие пользовательские типы 🢂](../07-%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B/)
|
||||||
|
|
||||||
- [6.1. Классы](#6-1-классы)
|
- [6.1. Классы](#6-1-классы)
|
||||||
- [6.2. Имена объектов – это ссылки](#6-2-имена-объектов-это-ссылки)
|
- [6.2. Имена объектов – это ссылки](#6-2-имена-объектов-это-ссылки)
|
||||||
|
@ -2638,7 +2638,7 @@ D полностью поддерживает технику невиртуал
|
||||||
|
|
||||||
[В начало ⮍](#6-17-итоги) [Наверх ⮍](#6-классы-объектно-ориентированный-стиль)
|
[В начало ⮍](#6-17-итоги) [Наверх ⮍](#6-классы-объектно-ориентированный-стиль)
|
||||||
|
|
||||||
[[🢀 5. Данные и функции. Функциональный стиль]](../05-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/) [6. Классы. Объектно-ориентированный стиль] [[7. Другие пользовательские типы 🢂]](../07-%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B/)
|
[🢀 5. Данные и функции. Функциональный стиль](../05-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/) 6. Классы. Объектно-ориентированный стиль [7. Другие пользовательские типы 🢂](../07-%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B/)
|
||||||
|
|
||||||
[^1]: Язык D также предоставляет возможность «ручного» управления памятью (manual memory management) и на данный момент позволяет принудительно уничтожать объекты с помощью оператора delete: `delete obj;`, при этом значение ссылки `obj` будет установлено в `null` (см. ниже), а память, выделенная под объект, будет освобождена. Если `obj` уже содержит `null`, ничего не произойдет. Однако следует соблюдать осторожность: повторное уничтожение одного объекта или обращение к удаленному объекту по другой ссылке приведет к катастрофическим последствиям (сбои и порча данных в памяти, источники которых порой очень трудно обнаружить), и эта опасность усугубляет необходимость в сборщике мусора. Из-за этих рисков оператор `delete` планируют убрать из самого языка, оставив в виде функции в стандартной библиотеке. Но при этом ручное управление памятью позволяет более эффективно ее использовать. Вердикт: задействуйте эту возможность, если уверены, что на момент вызова `delete` объект `obj` точно не удален и `obj` – последняя ссылка на данный объект, и не удивляйтесь, если в один прекрасный день `delete` исчезнет из реализаций языка. – *Прим. науч. ред.*
|
[^1]: Язык D также предоставляет возможность «ручного» управления памятью (manual memory management) и на данный момент позволяет принудительно уничтожать объекты с помощью оператора delete: `delete obj;`, при этом значение ссылки `obj` будет установлено в `null` (см. ниже), а память, выделенная под объект, будет освобождена. Если `obj` уже содержит `null`, ничего не произойдет. Однако следует соблюдать осторожность: повторное уничтожение одного объекта или обращение к удаленному объекту по другой ссылке приведет к катастрофическим последствиям (сбои и порча данных в памяти, источники которых порой очень трудно обнаружить), и эта опасность усугубляет необходимость в сборщике мусора. Из-за этих рисков оператор `delete` планируют убрать из самого языка, оставив в виде функции в стандартной библиотеке. Но при этом ручное управление памятью позволяет более эффективно ее использовать. Вердикт: задействуйте эту возможность, если уверены, что на момент вызова `delete` объект `obj` точно не удален и `obj` – последняя ссылка на данный объект, и не удивляйтесь, если в один прекрасный день `delete` исчезнет из реализаций языка. – *Прим. науч. ред.*
|
||||||
[^2]: На данный момент реализации D предоставляют средства выделения памяти под классы в стеке (с помощью класса памяти `scope`) или вообще в любом фрагменте памяти (с помощью классовых аллокаторов и деаллокаторов). Но поскольку эти возможности небезопасны, они могут быть удалены из языка, так что не рассчитывайте на их вечное существование. – *Прим. науч. ред.*
|
[^2]: На данный момент реализации D предоставляют средства выделения памяти под классы в стеке (с помощью класса памяти `scope`) или вообще в любом фрагменте памяти (с помощью классовых аллокаторов и деаллокаторов). Но поскольку эти возможности небезопасны, они могут быть удалены из языка, так что не рассчитывайте на их вечное существование. – *Прим. науч. ред.*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# 7. Другие пользовательские типы
|
# 7. Другие пользовательские типы
|
||||||
|
|
||||||
[[🢀 6. Классы. Объектно-ориентированный стиль]](../06-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/) [7. Другие пользовательские типы] [[8. Квалификаторы типа 🢂]](../08-%D0%BA%D0%B2%D0%B0%D0%BB%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B-%D1%82%D0%B8%D0%BF%D0%B0/)
|
[🢀 6. Классы. Объектно-ориентированный стиль](../06-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/) 7. Другие пользовательские типы [8. Квалификаторы типа 🢂](../08-%D0%BA%D0%B2%D0%B0%D0%BB%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B-%D1%82%D0%B8%D0%BF%D0%B0/)
|
||||||
|
|
||||||
- [7.1. Структуры](#7-1-структуры)
|
- [7.1. Структуры](#7-1-структуры)
|
||||||
- [7.1.1. Семантика копирования](#7-1-1-семантика-копирования)
|
- [7.1.1. Семантика копирования](#7-1-1-семантика-копирования)
|
||||||
|
@ -1991,7 +1991,7 @@ void main()
|
||||||
|
|
||||||
[В начало ⮍](#7-7-итоги) [Наверх ⮍](#7-другие-пользовательские-типы)
|
[В начало ⮍](#7-7-итоги) [Наверх ⮍](#7-другие-пользовательские-типы)
|
||||||
|
|
||||||
[[🢀 6. Классы. Объектно-ориентированный стиль]](../06-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/) [7. Другие пользовательские типы] [[8. Квалификаторы типа 🢂]](../08-%D0%BA%D0%B2%D0%B0%D0%BB%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B-%D1%82%D0%B8%D0%BF%D0%B0/)
|
[🢀 6. Классы. Объектно-ориентированный стиль](../06-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-%D1%81%D1%82%D0%B8%D0%BB%D1%8C/) 7. Другие пользовательские типы [8. Квалификаторы типа 🢂](../08-%D0%BA%D0%B2%D0%B0%D0%BB%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B-%D1%82%D0%B8%D0%BF%D0%B0/)
|
||||||
|
|
||||||
[^1]: Не считая эквивалентных имен, создаваемых с помощью `alias`, о чем мы еще поговорим в этой главе (см. раздел 7.4).
|
[^1]: Не считая эквивалентных имен, создаваемых с помощью `alias`, о чем мы еще поговорим в этой главе (см. раздел 7.4).
|
||||||
[^2]: Термин «клуктура» предложил Бартош Милевски.
|
[^2]: Термин «клуктура» предложил Бартош Милевски.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# 8. Квалификаторы типа
|
# 8. Квалификаторы типа
|
||||||
|
|
||||||
[[🢀 7. Другие пользовательские типы]](../07-%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B/) [8. Квалификаторы типа] [[9. Обработка ошибок 🢂]](../09-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA/)
|
[🢀 7. Другие пользовательские типы](../07-%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B/) 8. Квалификаторы типа [9. Обработка ошибок 🢂](../09-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA/)
|
||||||
|
|
||||||
- [8.1. Квалификатор immutable](#8-1-квалификатор-immutable)
|
- [8.1. Квалификатор immutable](#8-1-квалификатор-immutable)
|
||||||
- [8.1.1. Транзитивность](#8-1-1-транзитивность)
|
- [8.1.1. Транзитивность](#8-1-1-транзитивность)
|
||||||
|
@ -559,7 +559,7 @@ class Y
|
||||||
|
|
||||||
[В начало ⮍](#8-9-итоги) [Наверх ⮍](#8-квалификаторы-типа)
|
[В начало ⮍](#8-9-итоги) [Наверх ⮍](#8-квалификаторы-типа)
|
||||||
|
|
||||||
[[🢀 7. Другие пользовательские типы]](../07-%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B/) [8. Квалификаторы типа] [[9. Обработка ошибок 🢂]](../09-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA/)
|
[🢀 7. Другие пользовательские типы](../07-%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B/) 8. Квалификаторы типа [9. Обработка ошибок 🢂](../09-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA/)
|
||||||
|
|
||||||
[^1]: Такой подход был избран для квалификатора `const` в C++.
|
[^1]: Такой подход был избран для квалификатора `const` в C++.
|
||||||
[^2]: Это решение было предложено Саймоном Пейтоном-Джонсом.
|
[^2]: Это решение было предложено Саймоном Пейтоном-Джонсом.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# 9. Обработка ошибок
|
# 9. Обработка ошибок
|
||||||
|
|
||||||
[[🢀 8. Квалификаторы типа]](../08-%D0%BA%D0%B2%D0%B0%D0%BB%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B-%D1%82%D0%B8%D0%BF%D0%B0/) [9. Обработка ошибок] [[10. Контрактное программирование 🢂]](../10-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BD%D0%BE%D0%B5-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/)
|
[🢀 8. Квалификаторы типа](../08-%D0%BA%D0%B2%D0%B0%D0%BB%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B-%D1%82%D0%B8%D0%BF%D0%B0/) 9. Обработка ошибок [10. Контрактное программирование 🢂](../10-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BD%D0%BE%D0%B5-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/)
|
||||||
|
|
||||||
- [9.1. Порождение и обработка исключительных ситуаций](#9-1-порождение-и-обработка-исключительных-ситуаций)
|
- [9.1. Порождение и обработка исключительных ситуаций](#9-1-порождение-и-обработка-исключительных-ситуаций)
|
||||||
- [9.2. Типы](#9-2-типы)
|
- [9.2. Типы](#9-2-типы)
|
||||||
|
@ -494,6 +494,6 @@ void sendHTML(Connection conn)
|
||||||
|
|
||||||
[В начало ⮍](#9-7-неперехваченные-исключения) [Наверх ⮍](#9-обработка-ошибок)
|
[В начало ⮍](#9-7-неперехваченные-исключения) [Наверх ⮍](#9-обработка-ошибок)
|
||||||
|
|
||||||
[[🢀 8. Квалификаторы типа]](../08-%D0%BA%D0%B2%D0%B0%D0%BB%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B-%D1%82%D0%B8%D0%BF%D0%B0/) [9. Обработка ошибок] [[10. Контрактное программирование 🢂]](../10-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BD%D0%BE%D0%B5-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/)
|
[🢀 8. Квалификаторы типа](../08-%D0%BA%D0%B2%D0%B0%D0%BB%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B-%D1%82%D0%B8%D0%BF%D0%B0/) 9. Обработка ошибок [10. Контрактное программирование 🢂](../10-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BD%D0%BE%D0%B5-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/)
|
||||||
|
|
||||||
[^1]: Имеется в виду карточка из игры «Монополия». – *Прим. пер.*
|
[^1]: Имеется в виду карточка из игры «Монополия». – *Прим. пер.*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# 10. Контрактное программирование
|
# 10. Контрактное программирование
|
||||||
|
|
||||||
[[🢀 9. Обработка ошибок]](../09-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA/) [10. Контрактное программирование] [[11. Расширение масштаба 🢂]](../11-%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B0%D1%81%D1%88%D1%82%D0%B0%D0%B1%D0%B0/)
|
[🢀 9. Обработка ошибок](../09-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA/) 10. Контрактное программирование [11. Расширение масштаба 🢂](../11-%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B0%D1%81%D1%88%D1%82%D0%B0%D0%B1%D0%B0/)
|
||||||
|
|
||||||
- [10.1. Контракты](#10-1-контракты)
|
- [10.1. Контракты](#10-1-контракты)
|
||||||
- [10.2. Утверждения](#10-2-утверждения)
|
- [10.2. Утверждения](#10-2-утверждения)
|
||||||
|
@ -843,6 +843,6 @@ public:
|
||||||
|
|
||||||
[В начало ⮍](#10-9-контракты-и-интерфейсы) [Наверх ⮍](#10-контрактное-программирование)
|
[В начало ⮍](#10-9-контракты-и-интерфейсы) [Наверх ⮍](#10-контрактное-программирование)
|
||||||
|
|
||||||
[[🢀 9. Обработка ошибок]](../09-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA/) [10. Контрактное программирование] [[11. Расширение масштаба 🢂]](../11-%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B0%D1%81%D1%88%D1%82%D0%B0%D0%B1%D0%B0/)
|
[🢀 9. Обработка ошибок](../09-%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA/) 10. Контрактное программирование [11. Расширение масштаба 🢂](../11-%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B0%D1%81%D1%88%D1%82%D0%B0%D0%B1%D0%B0/)
|
||||||
|
|
||||||
[^1]: Ленивые аргументы описаны в разделе 5.2.4. – *Прим. науч. ред.*
|
[^1]: Ленивые аргументы описаны в разделе 5.2.4. – *Прим. науч. ред.*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# 11. Расширение масштаба
|
# 11. Расширение масштаба
|
||||||
|
|
||||||
[[🢀 10. Контрактное программирование]](../10-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BD%D0%BE%D0%B5-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/) [11. Расширение масштаба] [[12. Перегрузка операторов 🢂]](../12-%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2/)
|
[🢀 10. Контрактное программирование](../10-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BD%D0%BE%D0%B5-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/) 11. Расширение масштаба [12. Перегрузка операторов 🢂](../12-%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2/)
|
||||||
|
|
||||||
- [11.1. Пакеты и модули](#11-1-пакеты-и-модули)
|
- [11.1. Пакеты и модули](#11-1-пакеты-и-модули)
|
||||||
- [11.1.1. Объявления import](#11-1-1-объявления-import)
|
- [11.1.1. Объявления import](#11-1-1-объявления-import)
|
||||||
|
@ -1385,7 +1385,7 @@ void fastProcess()
|
||||||
|
|
||||||
[В начало ⮍](#11-10-5-рациональность) [Наверх ⮍](#11-расширение-масштаба)
|
[В начало ⮍](#11-10-5-рациональность) [Наверх ⮍](#11-расширение-масштаба)
|
||||||
|
|
||||||
[[🢀 10. Контрактное программирование]](../10-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BD%D0%BE%D0%B5-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/) [11. Расширение масштаба] [[12. Перегрузка операторов 🢂]](../12-%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2/)
|
[🢀 10. Контрактное программирование](../10-%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BD%D0%BE%D0%B5-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/) 11. Расширение масштаба [12. Перегрузка операторов 🢂](../12-%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2/)
|
||||||
|
|
||||||
[^1]: Прямой порядок байтов – от старшего к младшему байту. – *Прим. пер.*
|
[^1]: Прямой порядок байтов – от старшего к младшему байту. – *Прим. пер.*
|
||||||
[^2]: Обратный порядок байтов – от младшего к старшему байту. – *Прим. пер.*
|
[^2]: Обратный порядок байтов – от младшего к старшему байту. – *Прим. пер.*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# 12. Перегрузка операторов
|
# 12. Перегрузка операторов
|
||||||
|
|
||||||
[[🢀 11. Расширение масштаба]](../11-%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B0%D1%81%D1%88%D1%82%D0%B0%D0%B1%D0%B0/) [12. Перегрузка операторов] [[13. Параллельные вычисления 🢂]](../13-%D0%BF%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F/)
|
[🢀 11. Расширение масштаба](../11-%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B0%D1%81%D1%88%D1%82%D0%B0%D0%B1%D0%B0/) 12. Перегрузка операторов [13. Параллельные вычисления 🢂](../13-%D0%BF%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F/)
|
||||||
|
|
||||||
- [12.1. Перегрузка операторов в D](#12-1-перегрузка-операторов-в-d)
|
- [12.1. Перегрузка операторов в D](#12-1-перегрузка-операторов-в-d)
|
||||||
- [12.2. Перегрузка унарных операторов](#12-2-перегрузка-унарных-операторов)
|
- [12.2. Перегрузка унарных операторов](#12-2-перегрузка-унарных-операторов)
|
||||||
|
@ -1011,7 +1011,7 @@ unittest
|
||||||
|
|
||||||
[В начало ⮍](#12-12-итоги-и-справочник) [Наверх ⮍](#12-перегрузка-операторов)
|
[В начало ⮍](#12-12-итоги-и-справочник) [Наверх ⮍](#12-перегрузка-операторов)
|
||||||
|
|
||||||
[[🢀 11. Расширение масштаба]](../11-%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B0%D1%81%D1%88%D1%82%D0%B0%D0%B1%D0%B0/) [12. Перегрузка операторов] [[13. Параллельные вычисления 🢂]](../13-%D0%BF%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F/)
|
[🢀 11. Расширение масштаба](../11-%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BC%D0%B0%D1%81%D1%88%D1%82%D0%B0%D0%B1%D0%B0/) 12. Перегрузка операторов [13. Параллельные вычисления 🢂](../13-%D0%BF%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F/)
|
||||||
|
|
||||||
[^1]: Автор использует понятия «тип» и «алгебра» не совсем точно. Тип определяет множество значений и множество операций, производимых над ними. Алгебра – это набор операций над определенным множеством. То есть уточнение «с алгебрами» – избыточно. – *Прим. науч. ред.*
|
[^1]: Автор использует понятия «тип» и «алгебра» не совсем точно. Тип определяет множество значений и множество операций, производимых над ними. Алгебра – это набор операций над определенным множеством. То есть уточнение «с алгебрами» – избыточно. – *Прим. науч. ред.*
|
||||||
[^2]: В данном коде отсутствует проверка перехода за границы для оператора отрицания. – *Прим. науч. ред.*
|
[^2]: В данном коде отсутствует проверка перехода за границы для оператора отрицания. – *Прим. науч. ред.*
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# 13. Параллельные вычисления
|
# 13. Параллельные вычисления
|
||||||
|
|
||||||
[[🢀 12. Перегрузка операторов]](../12-%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2/) [13. Параллельные вычисления] [[Содержание 🢂]](../../)
|
[🢀 12. Перегрузка операторов](../12-%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2/) 13. Параллельные вычисления [Содержание 🢂](../../)
|
||||||
|
|
||||||
- [13.1. Революция в области параллельных вычислений](#13-1-революция-в-области-параллельных-вычислений)
|
- [13.1. Революция в области параллельных вычислений](#13-1-революция-в-области-параллельных-вычислений)
|
||||||
- [13.2. Краткая история механизмов разделения данных](#13-2-краткая-история-механизмов-разделения-данных)
|
- [13.2. Краткая история механизмов разделения данных](#13-2-краткая-история-механизмов-разделения-данных)
|
||||||
|
@ -1303,7 +1303,7 @@ D предлагает широкий спектр средств для раб
|
||||||
|
|
||||||
[В начало ⮍](#13-18-итоги) [Наверх ⮍](#13-параллельные-вычисления)
|
[В начало ⮍](#13-18-итоги) [Наверх ⮍](#13-параллельные-вычисления)
|
||||||
|
|
||||||
[[🢀 12. Перегрузка операторов]](../12-%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2/) [13. Параллельные вычисления] [[Содержание 🢂]](../../)
|
[🢀 12. Перегрузка операторов](../12-%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2/) 13. Параллельные вычисления [Содержание 🢂](../../)
|
||||||
|
|
||||||
[^1]: Число транзисторов на кристалл будет увеличиваться вдвое каждые 24 месяца. – *Прим. пер.*
|
[^1]: Число транзисторов на кристалл будет увеличиваться вдвое каждые 24 месяца. – *Прим. пер.*
|
||||||
[^2]: Далее речь идет о параллельных вычислениях в целом и не рассматриваются распараллеливание операций над векторами и другие специализированные параллельные функции ядра.
|
[^2]: Далее речь идет о параллельных вычислениях в целом и не рассматриваются распараллеливание операций над векторами и другие специализированные параллельные функции ядра.
|
||||||
|
|
Loading…
Reference in New Issue