Сопоставьте C, JavaScript, Rust и Haskell по следующим критериям: система типов (статическая/динамическая, сильная/слабая), управление памятью (ручное, сборщик мусора, владение/заём), модель конкурентности и типичные источники ошибок (UB, race conditions, lazy evaluation pitfalls)

6 Ноя в 08:38
6 +6
0
Ответы
1
C
- Система типов: статическая, относительно слабая (много неявных преобразований, Т‑система не предотвращает многие ошибки).
- Управление памятью: ручное (stack + heap via `malloc`/`free`).
- Модель конкурентности: нет встроенной — потоки/процессы через ОС/`pthreads`; с C11 — атомарные операции и модель памяти.
- Типичные источники ошибок: undefined behavior (out‑of‑bounds, use‑after‑free, dangling pointers, UB от знаковых переполнений), data races при отсутствии синхронизации, трудности с управлением ресурсами.
JavaScript
- Система типов: динамическая, слабо/любообразно типизированная (много автоматических приводов типов).
- Управление памятью: сборщик мусора (GC).
- Модель конкурентности: одна потоковая модель с событийным циклом (event loop) + асинхронность (callbacks/promises/async‑await); параллелизм через Web Workers / Worker Threads; SharedArrayBuffer+Atomics для общих данных.
- Типичные источники ошибок: ошибки из‑за неявных приводов типов, асинхронные ошибки (некорректная обработка промисов, race при взаимодействии с воркерами/общей памятью), утечки через замыкания, невыполненные промисы (unhandled rejections).
Rust
- Система типов: статическая, сильная (строгая проверка типов), с выводом типов; разграничение safe/unsafe.
- Управление памятью: владение/заём (ownership/borrowing) + RAII, без GC; возможен `unsafe` для ручной работы.
- Модель конкурентности: нативные потоки, async/await (futures) для нечётких задач; типовая система и трейты (`Send`/`Sync`) предотвращают data races в safe‑коде.
- Типичные источники ошибок: компилятор ловит многие ошибки на этапе компиляции (борровка); UB возможен в `unsafe` блоках, логические гонки/deadlock в неправильном использовании атомиков/`unsafe`, ошибки при FFI.
Haskell
- Система типов: статическая, сильная, выраженная через систему типов Hindley–Milner с выводом; чисто функциональная.
- Управление памятью: сборщик мусора (GC).
- Модель конкурентности: лёгкие (green) потоки в рантайме GHC, STM (software transactional memory), async, параллелизм через многопоточность рантайма.
- Типичные источники ошибок: подводные камни ленивости (space leaks, неожиданное накопление thunks), lazy I/O pitfalls, runtime exceptions в IO, возможные race/deadlock при работе с mutable state/IO/STM, непредвиденная задержка исполнения из‑за ленивости.
6 Ноя в 09:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир