|
|
@@ -9,7 +9,7 @@
|
|
|
|
|
|
## Диалектический материализм, как основа языка
|
|
|
|
|
|
-Из всех доступных философских направлений `диалектический материализм` наиболее полно отражает основную идею языка. Как известно, любой язык должен моделировать реально существующие материальные сущности и процессы. Либо скрытые процессы, но имеющие вполне материальную основу. Существует ряд сущностей и процессов, которые не имеют прямой реализации в реальном мире (например игры), но такие процессы смоделированные в виде состояний электронных структур всё-равно в нектором смысле существуют.
|
|
|
+Из всех доступных философских направлений `диалектический материализм` наиболее полно отражает основную идею проектируемого языка. Как известно, любой язык должен моделировать реально существующие материальные сущности и процессы. Либо скрытые процессы, но имеющие вполне материальную основу. Существует ряд сущностей и процессов, которые не имеют прямой реализации в реальном мире (например игры), но такие процессы смоделированные в виде состояний электронных структур всё-равно в нектором смысле существуют.
|
|
|
|
|
|
## Три закона диалектики, как основа проектирования языка
|
|
|
|
|
|
@@ -59,3 +59,99 @@
|
|
|
|
|
|
Вывод: язык программирования — производное от производительных сил информационной эпохи.
|
|
|
|
|
|
+### Противоречия, как двигатель развития языка
|
|
|
+
|
|
|
+В основе разработки любого языка — борьба противоположностей. Без противоречий нет движения, нет прогресса.
|
|
|
+
|
|
|
+Ключевые противоречия:
|
|
|
+
|
|
|
+- Абстракция vs Эффективность (* Чем выше абстракция — тем удобнее писать, но ниже контроль над железом; `Python` (высокоуровневый) vs `C` (низкоуровневый) *)
|
|
|
+- Безопасность vs Гибкость (* Безопасность требует ограничений, гибкость — свободы. `Rust` (гарантии владения) vs `C++` (управление памятью вручную) *)
|
|
|
+- Простота vs Мощность (* Простой язык ограничен, мощный — сложен в освоении. `Go` (простота) vs `Haskell` (высокая абстракция) *)
|
|
|
+- Статическая vs Динамическая типизация (* Предсказуемость против адаптивности. `Java` vs `JavaScript` *)
|
|
|
+- Централизованное vs Децентрализованное развитие (* Комитет vs сообщество. `ECMAScript` (стандарт) vs `Python` (**BDFL**, потом **PEP**)
|
|
|
+
|
|
|
+Эти противоречия неустранимы полностью, но они разрешаются на новом уровне в каждом новом языке.
|
|
|
+
|
|
|
+## Диалектический путь развития: от идеи к практике и обратно
|
|
|
+
|
|
|
+### Этап 1: Отрицание старого (первая стадия отрицания)
|
|
|
+
|
|
|
+Пример: `C` → `Python` → `Go`.
|
|
|
+
|
|
|
+Каждый новый язык отрицает недостатки предыдущего:
|
|
|
+
|
|
|
+- `C`: небезопасное управление памятью → `Python` добавляет ООП, динамическую типизация, но усложняет контроль.
|
|
|
+- `Python`: медленный, динамический → `Go` предлагает кратно больше безопасности и скорости, но с GC.
|
|
|
+
|
|
|
+### Этап 2: Отрицание отрицания (синтез на новом уровне)
|
|
|
+
|
|
|
+Go не просто "ещё один CPython", он синтезирует
|
|
|
+
|
|
|
+- ljдтаточн овысокую скорость,
|
|
|
+- Безопасность через статическую типизацию ,
|
|
|
+- Современный и понятный синтаксис,
|
|
|
+- Поддержку параллелизма.
|
|
|
+
|
|
|
+Это не возврат к низкоуровневому, а подъём на ступень выше — безопасное системное программирование.
|
|
|
+
|
|
|
+Закон отрицания отрицания в действии: развитие идёт не по кругу, а по спирали прогресса.##
|
|
|
+
|
|
|
+## Переход количества в качество
|
|
|
+
|
|
|
+Постепенное накопление улучшений:
|
|
|
+
|
|
|
+- Небольшие расширения синтаксиса (nеги-действия, сопоставление с образцом),
|
|
|
+- Улучшения системы типов,
|
|
|
+- Инструменты (форматтеры, линтеры),
|
|
|
+- Экосистема библиотек.
|
|
|
+-
|
|
|
+В какой-то момент происходит качественный скачок:
|
|
|
+
|
|
|
+Язык перестаёт быть "очередным инструментом" и становится платформой для новых форм практики.
|
|
|
+
|
|
|
+Пример:
|
|
|
+
|
|
|
+- `Python` → стал основой для `data science` и машинного обучения.
|
|
|
+- `JavaScript` → из "языка для кнопочек" превратился в полноценную платформу (Node.js, React, Deno).
|
|
|
+
|
|
|
+Количественные улучшения → качественное изменение роли языка в производстве.
|
|
|
+
|
|
|
+## Практика — критерий истины
|
|
|
+
|
|
|
+Диалектический материализм утверждает: не мысли определяют бытие, а наоборот.
|
|
|
+
|
|
|
+Применительно к языку программирования:
|
|
|
+
|
|
|
+Хороший язык не тот, который красиво выглядит в теории, а тот, который:
|
|
|
+
|
|
|
+- Решает реальные задачи,
|
|
|
+- Упрощает труд программиста,
|
|
|
+- Эффективен в производстве,
|
|
|
+- Развивается в условиях классовой практики (open source, промышленное применение).
|
|
|
+
|
|
|
+Пример:
|
|
|
+
|
|
|
+- `Scala` — мощный, но сложный → ограниченное распространение.
|
|
|
+- `Go` — простой, но эффективный → массовое внедрение в облаках.
|
|
|
+
|
|
|
+Практика показывает, что работает.
|
|
|
+
|
|
|
+## Роль сознания (программисты, как носители труда)
|
|
|
+
|
|
|
+Хотя материя первична, сознание вторично, но активно.
|
|
|
+
|
|
|
+Гениальные разработчики (как Мао говорил о "героях-массах") — `не творят из ничего, но осознают объективные законы и направляют развитие.`
|
|
|
+
|
|
|
+Пример:
|
|
|
+
|
|
|
+- Андрей Александреску (`D`),
|
|
|
+- Гвидо ван Россум (`Python`),
|
|
|
+- Грейдон Хоуф (`Rust`)
|
|
|
+
|
|
|
+Все они не изобретали законы, но воплотили диалектику практики в синтезе.
|
|
|
+Истинный прогресс — когда сознание не отрывается от практики, а руководит ею.
|
|
|
+
|
|
|
+## Заключение
|
|
|
+
|
|
|
+Все языки с точки зрения диалектическог оматериализма можно рассматривать, как идеалистические (такие как `brainfuck` и им подобные), материалистические (такие как `Оберон-7`), а также языки занимающие переходное положение (такие как `Go` или `Rust`). В рамках текущей работы будет предпринята попытка на уновом уровн осмысления создать язык программирования с опрой на идалектический материализм на столько, на сколько это возмсожно в текущих условиях.
|