Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА
№ 2156 23-01-2007 07:06 | |
№ 2155 23-01-2007 07:02 | |
Ответ на »сообщение 2154« (Jean)
___________________________
Это, примерно, как "черный" и "нечерный".
А ООП - черное или нечерное?
№ 2154 23-01-2007 06:58 | |
>>>На мой взгляд, крайне упрощенное деление
Ну, уж какое есть :). Понятия "императивный" и "декларативный" являются практически противоположными по своему смыслу и поэтому покрывают все множество вариантов. Это, примерно, как "черный" и "нечерный".
Кстати, я посмотрел - в Инете у этой версии много сторонников. Все, что не императивное, объединять под общей вывеской "декларативной парадигмы" (ДП). А уж веток у ДП может быть сколько угодно: ФП, ЛП, языки типа SQL, HTML/XML (без языков сценария, разумеется) и т.д.
>>>Между ними есть разница в специфике решаемых задач
А я и не говорил, что нет разницы. Есть, но "непринципиального" характера - и там, и там используется "описательный", т.е. декларативный подход к определению алгоритма (в противоположность императивному подходу, когда все действия алгоритма должны быть расписаны точно и последовательно).
№ 2153 23-01-2007 06:44 | |
Ответ на »сообщение 2150« (Jean)
___________________________
1) Императивный, когда описывается последовательность действий алгоритма для решения задачи;
На мой взгляд, крайне упрощенное деление, мало что дающее в реальной жизни. Да и я лично не воспринимаю ООП как императивный подход (вне зависимости от взглядов Вирта). В конце концов - в общем случае, это классы и обмен сообщениями между объектами. Кто сказал, что обмен сообщениями императивен? И что это - "последовательность действий"?
В этом смысле между ФП и ЛП принципиальной разницы нет.
Между ними есть разница в специфике решаемых задач, для которых каждая из этих парадигм выигрышна или проигрышна. Эти задачи мной косвенно очерчены.
№ 2152 23-01-2007 06:41 | |
Ответ на »сообщение 2144« (Сергей Осколков)
___________________________
Алексей, когда говорят о состояних, это совсем не обязательно подразумевает ряд дискретных состояний, таких, что система может находиться только в одном из них и эволюция системы представляется как переход между этими состояниями.
Под состоянием можно понимать, как это понимается и в обыденном языке, набор характеристик объекта, более-менее полно описывающих его (в данный момент или например в данной точке пространства параметров, определяющих изменения (состояния) системы).
Например для баллистической ракеты это может быть положение, скорость, угловая скорость, угол тангажа и т.д.. Для предприятия (и программы управления производством) - это какой-то другой набор характеристик в данный момент.
Зная состояние ракеты в данный момент (плюс другие условия, в т.ч. точку, куда нужно попасть), мы можем определить, какое управляющее воздействие нужно в данный момент. И т.п.
Полностью с Вами согласен.
Действительно, здесь у меня получилось некоторое смешение двух несколько различных значений слова "состояние".
Вместе с тем, значения эти родственные. Как в одном, так и в другом случае текущее состояние влияет на ход дальнейших вычислений и на принимаемые решения: "Зная состояние ракеты в данный момент...".
В этом их общее отличие от вычисления значения фунции, зависящей только от значения входных параметров.
Если обобщить, в этом принципиальное отличие автоматов от "чистых" функций: у функций автомата есть еще дополнительный неявный параметр (аргумент) "состояние".
Как мне кажется, ИП естественнее отображает "состояние" с помощью переменных. ФП использует closures и т.п., что все-таки усложнение по сравнению с переменными.
Еще один момент.
В знаменитой книжке Буча утверждается, что объекты обладают "состоянием", "поведением" и "идентичностью".
ИМХО, "идентичность" как раз легче всего выражается посредством переменных.
Переменная может поменять значение, оставаясь при этом собой.
Кажется, иногда это плюс. :)
№ 2151 23-01-2007 06:28 | |
Ответ на »сообщение 2148« (Сергей Перовский)
___________________________
Однако деление это не строгое.
Разумеется, никакой строгости в моей реплике о парадигмах нет и в помине. Поэтому ко всем словам типа "чистый язык", "математическая основа" надо относиться с соответствующей долей скепсиса. "Чистый" - означает не перегруженный сущностями других парадигм (не "мультипарадигматический"),а "математическая основа" - фундамент, на котором базируется парадигма. Любая классификация (декларативный-недекларативный и т.п.) должна иметь какую-то практическую цель, в данном случае речь о комплексе Oberon-Smalltalk-Haskell-Prolog-Lisp.
Цель моей реплики - всплывшая в ходе обсуждения здравая идея интеграции разнородных языков: Оберона и Хаскеля. Вся остальная "классификация" служит этой цели, а заодно косвенно обозначает границы применимости того же ФП (было бы интересно увидеть опровержение моей мысли о том, что ФП хуже подходит для задач системного программирования, чем Си или Оберон и что Хаскель уступает им в роли промежуточного языка для кодогенерации).
Эволюция языков программирования показывает, что есть две ярко выраженных тенденции: гибридизация (совмещение парадигм в одном языке) и пуризм (минимизация использования в языке сущностей других парадигм).
Гибридизация ведет к сиюминутному успеху (ближняя и средняя перспектива), но в дальней перспективе - к закату, поскольку любая гремучая смесь с течением времени (и переосмыслением роли и места идей и подходов) взрывается. Вот почему гибридным языкам, чтобы выжить, надо постоянно "совершенствоваться", скрещивать ужа с ежом. Вот почему гибридные языки чаще всего развиваются/продвигаются крупными компаниями и несмотря на статус международных стандартов, толкаются именно ими исходя из интересов конкурентной борьбы. C++ (получил путевку в жизнь и доминирование в индустрии благодаря прежде всего Microsoft), Delphi (Borland), Java (Sun, IBM), C# (Microsoft).
Пуризм - это защитная реакция на "какофонию" гибридных языков. Если компании декларируют равенство и братство разных языков (представляющих собой разные "религии"/субкультуры), то почему нельзя в нынешних условиях эту декларацию превратить в реальность: создать тесно взаимодействующие комплексы взаимодополняющих/ортогональных языков, каждый из которых остается в своем мире (синтаксисе, семантике, прагматике)?
Как известно, есть две популярных языковых платформы, которые вроде бы дают основание для подобной интеграции: .NET (Microsoft) и Eclipse (IBM). На первой доминирующе-синтетическим языком является C#, на другом - Java.
Но интеграция на этих платформах весьма специфична и накладывает свои ограничения. Думаю, имело бы смысл подвергнуть обсуждению-анализу то, насколько они могут подойти для целей "интегрального пуризма" и не стоило бы подумать о своем Grand Challenge - создании платформы взаимодействия конкретных вышеперечисленных ортогональных языков, а не просто о паре Оберон/КП-Хаскель?
№ 2150 23-01-2007 06:12 | |
>>>Я бы поставил на один уровень ИП, ФП и ЛП.
А я бы объединил ФП и ЛП в один класс - ДЕКЛАРАТИВНОЕ ПРОГРАММИРОВАНИЕ (ДП).
В конце концов есть только два принципиально различных подхода к представлению алгоритма:
1) Императивный, когда описывается последовательность действий алгоритма для решения задачи;
2) Декларативный, когда описываются только множества, отношения, функции, правила вывода и другие сущности самой задачи, а создание нужной последовательности действий возлагается на транслятор языка;
В этом смысле между ФП и ЛП принципиальной разницы нет.
№ 2149 23-01-2007 06:05 | |
Ответ на »сообщение 2147« (info21)
___________________________
Для императивного программирования соотв. систематизацию дал Дейкстра в своем "программном исчислении". Про которое можно сказать (даже бегло заглянув в книгу Дейкстры), что оно скорее основано на обычной формальной логике, чем на конечных автоматах.
Слегка соврал. Виноват. Логика там описывает состояние переменных. Но все-таки математической "основой" ИП теория конечных автоматов не является, а является формализм Дейкстры.
№ 2148 23-01-2007 05:44 | |
Ответ на »сообщение 2141« (Снегнурочка)
___________________________
Спасибо за конструктив!
Однако деление это не строгое. Не в том смысле, что есть языки, реализующие элементы различных подходов. А в том смысле, что ООП может быть реализован на базе ИП и ФП. Идеи ООП относятся к другому "уровню" программирования.
(Тут нас ждут серьезные терминологические трудности, что за "уровень" я ввел?)
Соответственно, если ИП базируется на классической модели конечного автомата, то ООП использует модель ансамбля конечных автоматов.
Я бы поставил на один уровень ИП, ФП и ЛП.
ООП и модульное программирование (и может быть родовое) на другой.
№ 2147 23-01-2007 05:02 | |
Чистый представитель: Oberon
...
Математическая основа: конечные автоматы
Слова "математическая основа" в подобном контексте не могут употребляться буквально. Однако об их точном смысле почти никто не задумывается, откуда всякие недоразумения или несуразности, вроде утверждений об особой математической обоснованности ФЯ и т.п.
Грубо говоря, математика никакой "основы" в буквальном смысле дать не может. Математика обязана взять то, что есть (конкретные артефакты), и изучать их, т.е. систематизировать, выяснить структуру, построить аксиоматику и т.п. Это может увеличить ясность и помочь делать более элегантные артефакты данного класса.
Для императивного программирования соотв. систематизацию дал Дейкстра в своем "программном исчислении". Про которое можно сказать (даже бегло заглянув в книгу Дейкстры), что оно скорее основано на обычной формальной логике, чем на конечных автоматах.
Чистым представителем ИП Оберон не является -- хотя бы из-за наличия механизма рекурсивных функций, так что там можно написать любую частично-рекурсивную функцию, которую можно встретить в соотв. разделе мат. логики, рассматриваемом как "основание" ФП.
А чнстыми ИЯ являются разве что старые фортраны (IV, 77).
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|