Skip to content

feat(20-arithmetics): перенос теории из Python и адаптация под java#305

Open
fey wants to merge 1 commit into
mainfrom
update-20-arithmetics-from-python
Open

feat(20-arithmetics): перенос теории из Python и адаптация под java#305
fey wants to merge 1 commit into
mainfrom
update-20-arithmetics-from-python

Conversation

@fey

@fey fey commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Что сделано

Второй модуль по плану docs/python-alignment-java/MAPPING.md (после 10-basics, PR #303). Теория шести уроков модуля Арифметика расширена до паритета с эталонным курсом Python и адаптирована под Java. Локаль только RU (en/es — отдельной фазой).

Объёмы теории (RU README, было → стало, % от Python)

Урок Было Стало % от Python
10-basics20-basic 1200 4143 87%
20-operators25-operator 1158 2149 94%
30-commutative27-commutativity 635 1467 99%
40-composition30-composition 945 1788 87%
50-priority40-priority 1354 2345 109%
60-float43-float 1595 3167 101%

Адаптация под Java (не калька с Python)

  • Целочисленное деление как ключевая особенность: 8 / 2 = 4, 7 / 2 = 3, 2 / 8 = 0, 1 / 2 = 0. В Python / всегда даёт float — здесь это явно переосмыслено.
  • Убран оператор степени ** (в Java его нет): степень показана через умножение 3 * 3 * 3.
  • Убрано целочисленное деление // (в Java / для целых уже целочисленное).
  • 60-float: дробный результат деления только если хотя бы один операнд дробный (1.0 / 2), плюс Java-специфика Integer.MAX_VALUE, IEEE 754.
  • 30-commutative: 2 / 8 = 0 использован как наглядная иллюстрация целочисленного деления.

Исправлен баг

В уроке 10-basics пример 3 + 4; подавался как «тихо отрабатывающая программа» (калька с Python). В Java голое выражение-statement не компилируется (error: not a statement). Заменено на арифметику внутри System.out.println(...) с сохранением идеи «вычислить ≠ показать».

Что НЕ тронуто

  • Урок 80-linting — намеренно вне этого PR. Он перерабатывается отдельно в рамках in-flight миграции линтера checkstyle → spotless (ветка update-dockerfile-jdk25). Включение его сюда дало бы конфликт и текст про checkstyle, который удаляется. Требует решения по инструментарию.
  • Задания: App.java, Test.java, EXERCISE.md — без изменений (все рабочие и педагогически эквивалентны Python).
  • Локали es/en — без изменений.

Проверки

  • ✅ Все 6 тестов уроков зелёные на JDK 25 (выводы: 9 / 87 / 15,2 / 10 / 49 / 0.0858).
  • ✅ Все числовые результаты в теории подтверждены компиляцией javac.
  • data.yml проходят ajv-валидацию против lesson.json; yamllint без замечаний.
  • ✅ rumdl (markdown) — без замечаний в изменённых файлах.
  • ✅ Соблюдены правила Hexlet: самодостаточность уроков, без ё и «ёлочек», адаптация терминологии под Java.
  • ✅ Преждевременных конструкций (if, ++, методы строк, степень) нет — соответствует месту модуля в курсе.
  • ✅ Ревью с точки зрения студента, изучающего Java с нуля: блокирующих замечаний нет.

🤖 Generated with Claude Code

Расширена теория шести уроков модуля "Арифметика" до паритета с эталонным
курсом Python и адаптирована под Java. Урок 80-linting в этот PR не входит:
он перерабатывается отдельно в рамках миграции линтера на spotless.

- 10-basics: целочисленное деление, остаток, оформление выражений
- 20-operators: операнды, бинарные и унарные операции, унарный плюс и минус
- 30-commutative: коммутативность, 2/8=0 как иллюстрация целочисл. деления
- 40-composition: пошаговые вычисления, приоритет, унарный минус
- 50-priority: приоритет операций, скобки, читаемость
- 60-float: IEEE 754, целочисл. деление vs дробное, погрешность

Исправлен баг: пример "3 + 4;" как самостоятельная программа не компилируется
в Java (not a statement). Заменен на арифметику внутри println.

Адаптация под Java: убраны ** и //, целочисленное деление вместо авто-float.
data.yml: перенесены definitions/tips из Python, имена уроков оставлены Java.
Задания (App.java/Test.java/EXERCISE.md) не менялись. Локаль только RU.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant