"На этом уровне каждое действие немедленно меняет вычислительную систему."
Хорошее наблюдение, КМК. Я про ожидаемое время обратной реакции на каждом уровне развития! Как пример - эволюция высшей нервной деятельности по пути наращивания тормозных функций.
Показательна сборка мусора. Сам термин я впервые слышу=)), но так понимаю, что уровень доверия тут очевиден. Так вот что примечательно, тут время реакции вообще перестаёт отслеживаться. Может ли этот момент быть важной характеристикой 4го уровня?
Да. Чем дальше в лес, тем время реакции менее предсказуемо. Не случайно, многие операционные системы пишутся на С (3) или С++ (3.5), а критические куски на ассемблере (2). Причем С++ очень многие пробуют, а потом от него отказываются как раз из-за непредсказуемости результирующего машинного кода.
На Java и С# (4) пишут уже пользовательские приложения, где время не особо критично. Пытались делать и операционные системы, но по факту там очень многое противоестественно выглядит.
(кстати, я добавил еще посты про каждый уровень в отдельности, есть ссылки из основного поста).
Тут реально интересно попробовать разобраться отдельно со структурами данных их сложностью и отдельно с алгоритмами и их сложностью. Собственно, говоря про LISP Вы разноуровневость по этим осям подметили. А по структурам данных где-то по-моему должен возникнуть SQL. Или это будет третья ветка? Хотя в linq на C# объектные типы с SQL вроде как объединили. В приниципе, наверное, можно говорить о структурах данных, что сложные вложенные структуры - это иерархии и правила, а вот sql и linq - это объекты и метаправила. А может, современный C# с linq, лямбдами и другими мультипарадигмальными конструкциями - это уже следующий, системный уровень, просто его еще не освоили по полной, используют парадигмы по-отдельности? Потому что лямбды, в которую инкорпорированны локальные переменные или члены класса - это больше, чем лямбды в функциональных языках
( ... )
Про обучение, я немного попозже отвечу, так как там достаточно много информации. Про SQL тоже отвечу отдельно.
В алгоритмике переход на уровень моделей и мета-правил это функциональное программирование. То есть функции, которые вызывают другие функции. Сложности с освоением FP, как и заключаются в необходимости настроить сознание на новый мета-уровень. Как только человек преодолеет этот барьер, он уже не понимает, как он без этого обходился раньше.
В языках структурного программирования, вроде С, это делалось достаточно тяжело, типа указатель на функцию + указатель на void который содержал дополнительную информацию. То есть, нужно было уходить за рамки ограничений языка, теряя возможность проверки типов, и затрудняя отладку.
Кстати, этот шаблон обычно появлялся в системах, которые были фактически OOP или FP (например GUI библиотека), но написаны на языке предыдущего уровня. И в них всегда было очень тяжело без сборки мусора.
Про функциональное программирование - не понимаю. Понятие ссылки на функцию появилось в C, а в С++ помимо этого появились виртуальные функции и генерики. При чем тут указатель на void?
И какие понятия/объекты языка соответствуют моделям и метаправилам в смысле алгоритмики в LISP или в Схеме или в F#?
Отнесение SQL к какому либо уровню достаточно сложно, так как SQL не проектировался, как полноценный язык программирования. Это DSL для работы с данными.
В языке запросов SQL можно увидеть неполное освоение уровня иерархий и правил. Декомпозиция на под-запросы поддержана очень плохо. Переиспользуемые (в том числе и в других запросах) параметризованные запросы до сих пор плохо стандартизованы, а где есть, требуют некоторых специальных усилий. Также SQL очень плохо обрабатывает иерархические структуры данных, даже с последними расширениями. В этом отношении интересен Datalog, который является языком уровня иерархий и правил с самого начала, хотя и с существенными ограничениями
( ... )
Comments 8
Хорошее наблюдение, КМК. Я про ожидаемое время обратной реакции на каждом уровне развития! Как пример - эволюция высшей нервной деятельности по пути наращивания тормозных функций.
Показательна сборка мусора. Сам термин я впервые слышу=)), но так понимаю, что уровень доверия тут очевиден. Так вот что примечательно, тут время реакции вообще перестаёт отслеживаться. Может ли этот момент быть важной характеристикой 4го уровня?
Reply
На Java и С# (4) пишут уже пользовательские приложения, где время не особо критично. Пытались делать и операционные системы, но по факту там очень многое противоестественно выглядит.
(кстати, я добавил еще посты про каждый уровень в отдельности, есть ссылки из основного поста).
Reply
Reply
В алгоритмике переход на уровень моделей и мета-правил это функциональное программирование. То есть функции, которые вызывают другие функции. Сложности с освоением FP, как и заключаются в необходимости настроить сознание на новый мета-уровень. Как только человек преодолеет этот барьер, он уже не понимает, как он без этого обходился раньше.
В языках структурного программирования, вроде С, это делалось достаточно тяжело, типа указатель на функцию + указатель на void который содержал дополнительную информацию. То есть, нужно было уходить за рамки ограничений языка, теряя возможность проверки типов, и затрудняя отладку.
Кстати, этот шаблон обычно появлялся в системах, которые были фактически OOP или FP (например GUI библиотека), но написаны на языке предыдущего уровня. И в них всегда было очень тяжело без сборки мусора.
Reply
И какие понятия/объекты языка соответствуют моделям и метаправилам в смысле алгоритмики в LISP или в Схеме или в F#?
Reply
В языке запросов SQL можно увидеть неполное освоение уровня иерархий и правил. Декомпозиция на под-запросы поддержана очень плохо. Переиспользуемые (в том числе и в других запросах) параметризованные запросы до сих пор плохо стандартизованы, а где есть, требуют некоторых специальных усилий. Также SQL очень плохо обрабатывает иерархические структуры данных, даже с последними расширениями. В этом отношении интересен Datalog, который является языком уровня иерархий и правил с самого начала, хотя и с существенными ограничениями ( ... )
Reply
Leave a comment