Rose debug info
---------------

Подписка на блог

Customize in /user/extras/subscribe-sheet.tmpl.php.

Sample text.

Twitter, Facebook, VK, Telegram, LinkedIn, Odnoklassniki, Pinterest, РСС JSON Feed

Sample text.

Парадигмы в мышлении программиста

Парадигмы — различные подходы человека к осмыслению одного и того же явления.

Статья Роберта Флойда 1978 г. о парадигмах программирования здесь.

В отличие от парадигм по Томасу Куну в программировании происходит расширение, а не исключение парадигм.

Выступление Дейкстры 1972 г. «Смиренный программист» о влиянии инструментов на мышление.

Во многом стиль мышления определяется языком программирования:

Императивное программирование (или в узком смысле процедурное) — «фоннеймановская» (Паскаль, Си, Бейсик) — концепция программы, как набора указаний подлежащих исполнению («императив» — «приказ») центральным процессором или интерпретатором. Самая главная особенность императивного программирования — присваивание.

Про «фоннеймановскую» архитектуру см. выступление Джона Бэкуса в 1977 «Можно ли освободить программирование от стиля фон Неймана?».

К императивным языкам относятся командно-скриптовые языки, но они не «фоннеймановские».

Функциональное программирование (язык Haskell) — полная противоположность императивного. В основе лежат функции — «объекты первого класса», функции «чистые».

Декларативное программирование (или более узко — логическое) — программы формируются в виде набора логических правил, описывающих некоторую предметную область, а исполнение программы состоит в попытке доказать утверждение (язык Пролог). Язык SQL относится к декларативным, но не к логическим.

Объектно-ориентированное программирование (языки имеющие ООП надстройку: C++, Джава, С#, Go), см. Забытая история ООП, Алан Кэй, история SmallTalk. Данные в программе представляются в виде объектов — «черных ящиков». Все, что можно сделать с объектом — послать ему сообщение и получить ответ. В ООП инкапсуляция используется на уровне отдельных объектов. Класс — описание внутреннего устройства объекта.

Существуют «универсальные» парадигмы:
— «все есть поток байтов» в UNIX-way;
— «каждая программа должна решать одну задачу, и решать ее хорошо»;
— «все есть текст»;
— событийно-ориентированный способ построения программ;
автоматное программирование (задача про лифт);
— параллельное программирование;
— разделяемые данные;
— компиляция и интерпретация;
— рекурсия;
«побочный эффект».

Список использованных источников:

  1. Столяров А. В. «Программирование: введение в профессию» 3-ий том, МАКС Пресс (Москва), 2021 г.
Подписаться на блог
Поделиться
Отправить
 76   1 год   программирование
Дальше