Історія мов програмування

Робоча програма навчальної дисципліни (відповідно до вимог МОН України).
Документ містить мету, результати навчання, структуру змісту, систему оцінювання та літературу.

Код курсу: КА-121-07

Кафедра: Кафедра мовного забезпечення

Кількість кредитів ECTS: 6 (180 годин)

Рівень: Бакалавр / Магістр

Джерело структури: Енциклопедія мов програмування Groupoid Infinity (github.com/groupoid/languages)

Мета та завдання

Вивчення історії мов програмування через таксономію Енциклопедії мов програмування (Groupoid Infinity). Курс охоплює категорії від апаратних описів і асемблерів до чистих функціональних, логічних, залежно-типізованих та гомотопічних систем, з акцентом на синтаксис (BNF), внутрішнє представлення, семантику та мотивацію розміщення мов у категоріях.

Результати навчання

Структура курсу (модулі за таксономією)

  1. Передмова. Принципи енциклопедії
    Категорійний принцип, формальний опис (BNF, AST, семантика), класифікація статей. Редактор: Максим Сохацький (Groupoid Infinity).
  2. HW — апаратні описи
    VHDL, Verilog, Clash, Chisel, SystemC, Lava, BSV. Мови опису апаратури та синтезу.
  3. ASM — асемблери та машинні мови
    PDP-11, VAX, S/360, Intel, M68K, PowerPC, MIPS, ARM, SPARC, Super-H, RISC-V, MIR/LLVM.
  4. ALG — алгоритмічні мови
    C, BCPL, ALGOL, SNOBOL, Simula, Pascal, Oberon, COBOL, PL/1. Класичний імперативний та структурний стиль.
  5. ML — мови сімейства ML
    SML, MLj, Alice ML, OCaml, UrWeb, Flow, F#. Поліморфна типізація, інференція.
  6. PAR — паралельні та конкурентні
    Ling, Pony, Erlang, BPMN, Ada, E, Go, Occam, Oz, BLAS, LAPACK.
  7. PURE — чисті функціональні
    HOPE, Miranda, Clean, Charity, Joy, Mercury, Elm, PureScript.
  8. Fω — системи з поліморфізмом вищих порядків
    Scala, Haskell, 1ML, Plutus.
  9. LOGIC — логічні та доказові
    AUT-68, ACL2, LEGO, ALF, Prolog, CPL, Mizar, Dedukti, HOL, Isabelle, Z.
  10. ΠΣ — залежно-типізовані (Π, Σ)
    Coq, F*, Lean, NuPRL, ATS, Epigram, Cayenne, Idris, Morte, Dhall, Cedile, Kind.
  11. HoTT — гомотопічна теорія типів
    Menkar, Cubical, yacctt, redtt, RedPRL, Arend, Agda, Anders.
  12. AXIO — аксіоматичні / внутрішні мови Groupoid Infinity
    Joe, Bob, Alice, Henk, Frank, Christine, Per, Laurent, Anders, Dan, Jack, Urs, Fabien.
  13. MACR — макромови та метапрограмування
    Мови, у яких код є даними, а дані — кодом; основа метапрограмування та DSL.
    LISP (McCarthy, 1958–1960) — перша мова з homoiconicity, S-вирази, eval. Scheme (Sussman–Steele) — мінімальний діалект, continuations, hygienic macros. Clojure (Hickey) — сучасний Lisp на JVM/CLR/JS, персистентні структури. Racket — мова мов, #lang, потужна система макросів. Dylan, LFE (Lisp Flavoured Erlang), Common Lisp, Nemerle, Nim, Haxe, Perl, Elixir.
    Чому тут: спільна риса — програмна трансформація коду на етапі компіляції/інтерпретації, макроси як механізм розширення мови.
  14. OOI — об’єктно-орієнтовані та динамічні
    Мови з об’єктами, повідомленнями, динамічною типізацією або прототипами.
    Simula (Dahl–Nygaard, 1967) — перша ОО-мова, класи, спадкування. Smalltalk (Kay) — чиста ОО, все є об’єктом, повідомлення. Self — прототипна модель. JavaScript / TypeScript, Lua, Ruby, REBOL, Python, Io, PHP, Solidity, Java, Kotlin.
    Чому тут: акцент на інкапсуляції стану та поведінки через об’єкти, динамізм середовища виконання.
  15. CMP — компілювані системні мови
    Мови низького/середнього рівня з прямим контролем пам’яті, компіляцією в нативний код.
    C++ (Stroustrup) — розширення C класами та шаблонами. Rust — безпека пам’яті без GC, ownership. D, Swift, Zig, Fortran (класична наукова).
    Чому тут: орієнтація на системне програмування, продуктивність, контроль ресурсів, статична компіляція.
  16. SHELL — мови оболонок та скриптів
    Мови для автоматизації, конфігурації та інтерактивної роботи з ОС.
    PowerShell, Quake C, TCL, SH (Bourne/POSIX shell), CLIPS, BASIC (історично), FORTH (стекова).
    Чому тут: інтерпретовані, орієнтовані на glue-code, системне адміністрування та швидке прототипування.
  17. SVC — сервісні та інтерфейсні мови
    Мови опису інтерфейсів, контрактів та сервісів.
    IDL (Interface Definition Language), SOAP, ASN.1, gRPC / Protobuf.
    Чому тут: декларативний опис контрактів між компонентами, серіалізація, крос-мовна сумісність.
  18. MARK — мови розмітки та документів
    Мови для структурування документів, графіки та семантичної розмітки.
    TeX (Knuth), PostScript, XML, SVG, CSS, ROFF, OWL, SGML, RDF, SysML.
    Чому тут: фокус на структурі, представленні та семантиці даних/документів, а не на алгоритмах.
  19. CHCK — мови перевірки моделей та специфікації
    Мови для формальної верифікації, model checking та специфікації систем.
    TLA+ (Lamport), Twelf, Promela (SPIN), CSPM.
    Чому тут: орієнтація на доведення властивостей систем, темпоральну логіку, аналіз станів.
  20. ERP — корпоративні та прикладні системи
    Мови та середовища для бізнес-логіки та корпоративних додатків.
    FT, Salesforce Apex, BAAN.
    Чому тут: спеціалізація на бізнес-процесах, інтеграції з корпоративними системами.
  21. ARR — масивно-паралельні, наукові та масивно-орієнтовані
    Мови для чисельних обчислень, масивів, баз даних та наукових розрахунків.
    Julia, Wolfram Language, MATLAB, Octave, Futhark, APL (Iverson), GAP, SQL, cg, Clarion, Clipper, QCL, O, K, MUMPS, Q, R, S, J.
    Чому тут: векторні/масивні операції, математична нотація, висока продуктивність на числових даних, декларативний доступ до даних.
  22. Практична лабораторна: аналіз мови з енциклопедії

Система оцінювання (100 балів)

Шкала: 90–100 — відмінно; 75–89 — добре; 60–74 — задовільно; <60 — незадовільно.

Рекомендована література

← Назад до каталогу курсів