Поколения Языков Программирования с точки зрения Инструментов Сознания

Feb 08, 2014 20:04


Этот пост является продолжением поста про инструменты сознания.

Можно рассмотреть развитие языков программирования в соответствии с внедрением инструментов сознания в области программирования.
Много букв )

много букв, развитие 2.0, программирование, психология

Leave a comment

Comments 8

bossjak May 15 2014, 08:26:24 UTC
"На этом уровне каждое действие немедленно меняет вычислительную систему."

Хорошее наблюдение, КМК. Я про ожидаемое время обратной реакции на каждом уровне развития! Как пример - эволюция высшей нервной деятельности по пути наращивания тормозных функций.

Показательна сборка мусора. Сам термин я впервые слышу=)), но так понимаю, что уровень доверия тут очевиден. Так вот что примечательно, тут время реакции вообще перестаёт отслеживаться. Может ли этот момент быть важной характеристикой 4го уровня?

Reply

c8ne May 15 2014, 17:53:29 UTC
Да. Чем дальше в лес, тем время реакции менее предсказуемо. Не случайно, многие операционные системы пишутся на С (3) или С++ (3.5), а критические куски на ассемблере (2). Причем С++ очень многие пробуют, а потом от него отказываются как раз из-за непредсказуемости результирующего машинного кода.

На Java и С# (4) пишут уже пользовательские приложения, где время не особо критично. Пытались делать и операционные системы, но по факту там очень многое противоестественно выглядит.

(кстати, я добавил еще посты про каждый уровень в отдельности, есть ссылки из основного поста).

Reply


maksiq May 21 2014, 19:18:14 UTC
Тут реально интересно попробовать разобраться отдельно со структурами данных их сложностью и отдельно с алгоритмами и их сложностью. Собственно, говоря про LISP Вы разноуровневость по этим осям подметили. А по структурам данных где-то по-моему должен возникнуть SQL. Или это будет третья ветка? Хотя в linq на C# объектные типы с SQL вроде как объединили. В приниципе, наверное, можно говорить о структурах данных, что сложные вложенные структуры - это иерархии и правила, а вот sql и linq - это объекты и метаправила. А может, современный C# с linq, лямбдами и другими мультипарадигмальными конструкциями - это уже следующий, системный уровень, просто его еще не освоили по полной, используют парадигмы по-отдельности? Потому что лямбды, в которую инкорпорированны локальные переменные или члены класса - это больше, чем лямбды в функциональных языках ( ... )

Reply

c8ne May 22 2014, 09:46:15 UTC
Про обучение, я немного попозже отвечу, так как там достаточно много информации. Про SQL тоже отвечу отдельно.

В алгоритмике переход на уровень моделей и мета-правил это функциональное программирование. То есть функции, которые вызывают другие функции. Сложности с освоением FP, как и заключаются в необходимости настроить сознание на новый мета-уровень. Как только человек преодолеет этот барьер, он уже не понимает, как он без этого обходился раньше.

В языках структурного программирования, вроде С, это делалось достаточно тяжело, типа указатель на функцию + указатель на void который содержал дополнительную информацию. То есть, нужно было уходить за рамки ограничений языка, теряя возможность проверки типов, и затрудняя отладку.

Кстати, этот шаблон обычно появлялся в системах, которые были фактически OOP или FP (например GUI библиотека), но написаны на языке предыдущего уровня. И в них всегда было очень тяжело без сборки мусора.

Reply

maksiq June 2 2014, 17:33:19 UTC
Про функциональное программирование - не понимаю. Понятие ссылки на функцию появилось в C, а в С++ помимо этого появились виртуальные функции и генерики. При чем тут указатель на void?

И какие понятия/объекты языка соответствуют моделям и метаправилам в смысле алгоритмики в LISP или в Схеме или в F#?

Reply

SQL c8ne May 22 2014, 10:16:10 UTC
Отнесение SQL к какому либо уровню достаточно сложно, так как SQL не проектировался, как полноценный язык программирования. Это DSL для работы с данными.

В языке запросов SQL можно увидеть неполное освоение уровня иерархий и правил. Декомпозиция на под-запросы поддержана очень плохо. Переиспользуемые (в том числе и в других запросах) параметризованные запросы до сих пор плохо стандартизованы, а где есть, требуют некоторых специальных усилий. Также SQL очень плохо обрабатывает иерархические структуры данных, даже с последними расширениями. В этом отношении интересен Datalog, который является языком уровня иерархий и правил с самого начала, хотя и с существенными ограничениями ( ... )

Reply


Leave a comment

Up