10000 Translate intro and index into Ukrainian · HowProgrammingWorks/Book@bcff1cd · GitHub
[go: up one dir, main page]

Skip to content

Commit bcff1cd

Browse files
authored
Translate intro and index into Ukrainian
1 parent 3a1492f commit bcff1cd

File tree

6 files changed

+169
-0
lines changed

6 files changed

+169
-0
lines changed

content/Abstract.uk.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Аннотація
2+
3+
Усі програми - це дані. Одні дані інтерпретуються, як значення, а інші - як типи цих значень, треті - як інструкції з обробки перших двох. Будь-які парадигми та техніки програмування - це лише спосіб формувати метадані, які дають правила і послідовність потоку обробки інших даних. Мультипарадигменне програмування бере краще з всіх парадигм і будує з них синтаксичні конструкції, що дозволяють більш зрозуміло та зручно описати предметну область. Ми зв`язуємо високорівневі DSL (доменні мови) із низькорівневими машинними інструкціями через безліч шарів абстракцій. Тут важливо не фанатично слідувати одній парадигмі, а найефективніше відображати завдання для виконання на машинному рівні. Найефективніше - це з меньшою кількістю шарів та залежностей, найбільш зручно для розуміння людиною, для підтримки та модифікації, забезпечення надійності та тестованості коду, розширюваності, перевикористання, зрозумілості та гнучкості конструкцій метаданих на кожному рівні. Ми вважаємо, що такий підхід дозволить отримувати як швидкі перші результати в розробці кожного завдання, так і не втрачати темпів при більшому потоку змін на етапах, коли проект вже достиг високої зрілості та складності. Ми постараємося розглянути прийоми та принципи програмування з різних парадигм через призму метапрограмування та не стільки змінити цим програмну інженерію, як її осмислення новими поколіннями інженерів.

content/Book.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ module.exports = {
44
en: require('./Book.en.js'),
55
ru: require('./Book.ru.js'),
66
cz: require('./Book.cz.js'),
7+
uk: require('./Book.uk.js'),
78
},
89
title: {
910
bold: true,

content/Book.uk.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = {
2+
title: 'Метапрограмування',
3+
subtitle: 'Мультипарадигмовий підхід в інженерії програмного забезпечення',
4+
copyright: '© Тимур Шемсединов, Спільнота Метархія',
5+
location: 'Київ, 2015 — 2022',
6+
};

content/Index.uk.md

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
# Зміст
2+
3+
1. Вступ
4+
1.1. Підходи до вивчення програмування
5+
1.2. Приклади на мовах JavaScript, Python та C
6+
1.3. Моделювання: абстракції та повторне використання
7+
1.4. Алгоритм, программа, синтаксис, мова
8+
1.5. Декомпозиція та поділ відповідальності
9+
1.6. Огляд спеціальності інженер-програміст
10+
1.7. Огляд парадигм програмування
11+
2. Базові концепти
12+
2.1. Значення, ідентифікатор, змінна та константа, літерал, присвоєння
13+
2.2. Типи даних, скалярні, посилання та структурні типи
14+
2.3. Контекст та лексичне оточення
15+
2.4. Оператор та вираз, блок коду, функція, цикл, умова
16+
2.5. Процедурна парадигма, виклик, стек та куча
17+
2.6. Функція вищого порядку, чиста функція, побічні ефекти
18+
2.7. Замикання, функції зворотного виклику, обгортки та події
19+
2.8. Винятки та обробка помилок
20+
2.9. Мономорфний код у динамічних мовах
21+
3. Стан застосунку, структури даних та колекції
22+
3.1. Підходи до роботи зі станом: stateful and stateless
23+
3.2. Структури та записи
24+
3.3. Масив, список, множина, кортеж
25+
3.4. Словник, хеш-таблиця та асоціативний масив
26+
3.5. Стек, черга, дек
27+
3.6. Дерева та графи
28+
3.7. Проекції та відображення наборів даних
29+
3.8. Оцінка обчислювальної складності
30+
4. Розширені концепції
31+
4.1. Що таке технологічний стек
32+
4.2. Середовище розробки та налагодження коду
33+
4.3. Ітерування: рекурсія, ітератори та генератори
34+
4.4. Структура додатку: файли, модулі, компоненти
35+
4.5. Об'єкт, прототип та клас
36+
4.6. Часткове застосування та каррування, композиція функцій
37+
4.7. Чейнінг для методів та функцій
38+
4.8. Домішки (mixins)
39+
4.9. Залежності та бібліотеки
40+
5. Поширені парадигми програмування
41+
5.1. Імперативний та декларативний підхід
42+
5.2. Структуроване та неструктуроване програмування
43+
5.3. Процедурне програмування
44+
5.4. Функціональне програмування
45+
5.5. Об'єктно-орієнтоване програмування
46+
5.6. Прототипне програмування
47+
6. Антипатерни
48+
6.1. Загальні антипатерни для всіх парадигм
49+
6.2. Процедурні антипатерни
50+
6.3. Об'єктно-орієнтовані антипатерни
51+
6.4. Функціональні антипатерни
52+
7. Процес розробки
53+
7.1. Життєвий цикл ПЗ, аналіз предметної областіи
54+
7.2. Угоди та стандарти
55+
7.3. Тестування: модульне, системне та інтеграційне тестування
56+
7.4. Перевірка коду та рефакторинг
57+
7.5. Оцінка ресурсів, план та графік розвитку
58+
7.6. Аналіз ризиків, слабкі сторони, нефункціональні вимоги
59+
7.7. Координація та корегування процесу
60+
7.8. Безперервна інтеграція та розгортання
61+
7.9. Багатоаспектна оптимізація
62+
8. Розширені концепції
63+
8.1. Події, таймери та EventEmitter
64+
8.2. Інтроспекція та рефлексія
65+
8.3. Серіалізація та десеріалізація
66+
8.4. Регулярні вирази
67+
8.5. Мемоізація
68+
8.6. Фабрики та пули
69+
8.7. Типізовані масиви
70+
8.8. Проекції
71+
8.9. I/O(введення-виведення) та файли
72+
9. Архітектура
73+
9.1. Декомпозиція, іменування та зв'язування
74+
9.2. Взаємодія між компонентами ПЗ
75+
9.3. Зв'язування через простори імен
76+
9.4. Взаємодія за допомогою викликів та колбеків
77+
9.5. Взаємодія за допомогою подій та повідомлень
78+
9.6. Інтерфейси, протоколи та контракти
79+
9.7. Цибулева (onion) або багатошарова архітектура
80+
10. Основи паралельних обчислень
81+
10.1. Асинхронне програмування
82+
10.2. Паралельне програмування, загальна пам'ять та примітиви синхронізації
83+
10.3. Асинхронні примітиви: Thenable, Promise, Future, Deferred
84+
10.4. Співпрограми, горутіни, async/await
85+
10.5. Адаптери між асинхронними контрактами
86+
10.6. Асинхронна та паралельна сумісність
87+
10.7. Підхід до передачі повідомлень та модель акторів
88+
10.8. Асинхронна черга та асинхронні колекції
89+
10.9. Lock-free структури даних
90+
11. Додаткові парадигми програмування
91+
11.1. Узагальнене програмування
92+
11.2. Програмування на базі подій та реактивне програмування
93+
11.3. Автоматне програмування: скінченні автомати (машини станів)
94+
11.4. Спеціалізовані мови для предметних областей (DSL)
95+
11.5. Програмування на потоках даних
96+
11.6. Метапрограмування
97+
11.7. Динамічна інтерпретація метамоделі
98+
12. Бази даних та постійне зберігання
99+
12.1. Історія баз даних та навігаційні бази даних
100+
12.2. Ключ-значення та інші абстрактні структури даних
101+
12.3. Реляційна модель даних та ER-діаграми
102+
12.4. Безсхемні, об'єктно- та документо-орієнтовані бази даних
103+
12.5. Ієрархічна модель даних та графові бази даних
104+
12.6. Колонкові бази даних та in-memory бази даних
105+
12.7. Розподілені бази даних
106+
13. Розподілені системи
107+
13.1. Міжпроцесна взаємодія
108+
13.2. Безконфліктні репліковані типи даних (CRDT)
109+
13.3. Узгодженість, доступність та розподіленість
110+
13.4. Стратегії вирішення конфліктів
111+
13.5. Протоколи консенсусу
112+
13.6. CQRS, EventSourcing

0 commit comments

Comments
 (0)
0