На базарной площади довольно часто можно слышать высказывания об
Обероне. Мне кажется, что на базарной площади пора появиться ветке об
этой системе и языке, что-то вроде "Мысли об Обероне". Что это такое, перспективы
этой системы, что
полезного можно извлечь из него для программирования на Дельфи
(например) и др.
Ivan
Всего в теме 4531 сообщение
Ссылки по теме "Оберон" и "Компонентный паскаль"
Отслеживать это обсуждение
- Free Pascal, Oberon, BlackBox
- Разработка препроцессора gpre для delphi\freepascal.
- Component Pascal и среда разработки BlackBox
- FreePascal: реальная альтернатива или OpenSource — блажь?
№ 4021 21-12-2005 05:16 | |
Ответ на »сообщение 3997« (AVC)
___________________________
Скажите, Вы видели рекурсивные определения, ну, скажем, в учебниках физики, математики и т.д. Что может дать человеку рекурсивное определение какого-либо понятия? Ничего. Это видно даже из приведённых мной примеров. Да, иногда -- и в математике в том числе -- функцию определяют рекурсивно, но это конечная рекурсия, т.е., например, наряду с рекурсивным определением вроде f(n) = 2*f(n - 1) обязательно указывается f(1) = 1.
В языках программирования ситуация несколько иная. Её нельзя смешивать с формальными определениями каких либо понятий, терминов.
№ 4020 21-12-2005 04:48 | |
Ответ на »сообщение 4019« (Как слышно? Прием!)
___________________________
Почему дерево распространено? Сам спрашиваю, сам, увы, отвечаю - намного лучше какая-нибудь простейшая стандартизация, чем никакой. Дерево - самая простая топология - связей на одну больше, чем элементов.
Вспомним теория графов. А лес -- не проще? Связей еще меньше.
№ 4019 21-12-2005 04:31 | |
Всегда восхищался свободой полёта мысли ASU!
Это ошарашивает как левостороннее движение в Таиланде.
В одном сообщении: "Передать смысл... нельзя".
Далее: "Необходимо... дабы в них (рассуждениях) был смысл.
Но смысл сначала надо открыть". И тут я в мозговой панике.
Я так не могу. Что-то внутри мешает. Надеюсь мозги.
Определение, вырванное из контекста нелепо.
Мысль изречённая есть ложь. Изреченная сто раз - истина.
Изречённая в разных аспектах и разными людьми.
Но изречённая, а не прошептанная в кулак или про себя.
Даёшь определения! Поскребите по сусекам, посучите лапками,
как та лягушка в кринке с молоком. Больше позитива!
Лучше частично правильное определение, чем никакого
или туман, экивоки и "угадай, что у меня в правом полушарии".
Re#3990 (hugi)
>Расстояние -- величина, характеризующая расстояние от одного объекта до другого.
Неплохо. То, что это характеристика о взаимотношениях двух объектов уже подмечено.
Попробуйте дать правильное определение аксиоматическому понятию :)
Рекурсия подразумевает (опять умолчание) вхождение и выход из неё.
Иначе тупо подвесим программу бесконечным циклом.
Моя ошибка! Я вроде комментировал, что пересократил.
Настоящим изымаю:
"Модуль предназначен для хранения, трансляции, объединения с другими
программными модулями".
Вместо него читать.
"Программный модуль - согласно ГОСТ 19781-90 - программа или функционально
завершенный фрагмент программы, предназначенный для хранения, трансляции,
объединения с другими программными модулями и загрузки в оперативную память".
Впрочем, получилась популяризация рекурсии и смысл-то не сильно изменился.
Насчёт чистого полиморфизма и "обработчиков" Оберона.
В Дельфи тоже можно образовывать объект не из класса, а из объекта.
Что тем самым делает его модулем. (Да, вот такая путаница в терминах).
Почему? Потому что он не "насажен" на дерево наследования классов.
Возможность есть, но её настойчиво не рекомендуют и не употребляют.
В соответствии с термином "considered harmful".
То есть отличие модуля и объекта - принадлежность второго к древовидному
генеалогическому дереву классов в соответствии с наследованием.
Почему дерево распространено? Сам спрашиваю, сам, увы, отвечаю -
намного лучше какая-нибудь простейшая стандартизация, чем никакой.
Дерево - самая простая топология - связей на одну больше, чем элементов.
То, что дерево (выводимое из наследования) навеяно удобством конструирования
и Природой внешних вещей /#4004 (info21)/ сомнительно.
Скорее это простейшая структурированная и стандартизированная, подчас
случайной реализацией, абстракция.
№ 4018 21-12-2005 04:07 | |
Ответ на »сообщение 4017« (ASU)
___________________________
Кстати, обратил внимание, что в ваших работах практически нет ссылок на источники. Это такая позиция, стиль или просто я опять был невнимателен?Мне бы не хотелось шокировать Вас своим ответом. Если интересно, то посмотрите обсуждение темы: «Информационные поля. О методологии науки и о лженауке».
Очень невежливо. Я задал вполне конкретный вопрос, в ответ вы меня отсылаете куда подальше. Лазить по другим форумам в поисках найти ответ на элементарный вопрос, разумеется, нет никакого желания. Цена вопроса не та.
Не сможете ли дать конкретные ссылки (пару номеров сообщений в форуме) на высказывания, где “договорились до отмены, как самого «наследования», так и «инкапсуляции»”. Видимо, был невнимателен, не заметил, когда и кто из оппонентов до такого успел договориться.
Хм... Пожалуйста, http://www.delphikingdom.ru/asp/talktopic.asp?ID=285&ref=msg&msg=3257#msg3257
Посмотрел на дату и обсуждение. Это другая дискуссия. Странно все это...
Однако, точно знаю, что апломб -- это чрезмерная самоуверенность. Вот иллюстрация моей мысли, привожу ваши же слова: “Например, я считаю что ни Г. Буч, ни Т. Бадд, ни многие другие «адепты» ничего не понимают в ООП.” Скажите, а есть кто-нибудь, кроме вас, кто понимает ООП и чьи работы можно почитать? Ха-ха-ха... :) Я понимаю, что Вы человек «энциклопедического склада»... без ссылок и определений Вам трудно воспринимать действительность такой, какова она есть. Но, увы, здесь я Вам ничем помочь не могу.
Понятно. Других работ, кроме ваших, нет.
Что ж до моего апломба, то... Вы желаемое выдаете за действительное. Потуги Буча и Ко... просто смешны, чтобы понять это надо просто внимательно прочитать то, о чем они пишут.
Да нет, не выдаю. Просто констатирую, что апломб налицо.
Давайте зададимся вопросом, что означает слово начетничество:Мне известно два значения:
1. Знания, основанные на механическом, некритическом усвоении прочитанного.
2. Способ усвоения, связанный с догматическим отношением к прочитанному.
Совершенно верно, оба определения вполне точны.
Да уж, некорректность свою не хотите признавать. Раз оба определения верны, в чем догма и начетничество, конкретно?
Перечитайте свои же сообщения, многие из них – простой пересказ чьих-то мыслей, либо ссылки на историю тех или иных событий. Вторая часть – это «приставание» с просьбами: «Дайте свое определения» (в адрес Сергея Губанова это звучит едва ли не в каждом Вашем сообщении). Не так?
Не, не так. Что касается Сергея Губанова, то я понял, что получить от него ясного выражения своей позиции (даже не определений) по конкретному вопросу практически нереально. Проблемы с этим. Так что "приставать" к нему больше не буду. Зачем вводить человека постоянно в неловкое положение?
По вашим репликам в рамках этой дискуссии для себя сделал некоторые выводы: претензии высказываются, но конкретикой не подкрепляются, собственная некорректность игнорируется, даже несмотря на то, что оппонент признает собственную некорректность.
Есть личные суждения человека, который считает себя много выше других. Никаких работ, отражающих авторскую точку зрения по обсуждаемой теме, порекомендовать не может.
Увы, по прочтению ваших работ я не вижу, что дает основание для такой завышенной самооценки. Возможно, богатый жизненный опыт. Кто знает...
№ 4017 21-12-2005 03:48 | |
Ответ на »сообщение 3996« (Руслан Богатырев)
___________________________
Кстати, обратил внимание, что в ваших работах практически нет ссылок на источники. Это такая позиция, стиль или просто я опять был невнимателен?
Мне бы не хотелось шокировать Вас своим ответом. Если интересно, то посмотрите обсуждение темы: «Информационные поля. О методологии науки и о лженауке».
Не сможете ли дать конкретные ссылки (пару номеров сообщений в форуме) на высказывания, где “договорились до отмены, как самого «наследования», так и «инкапсуляции»”. Видимо, был невнимателен, не заметил, когда и кто из оппонентов до такого успел договориться.
Хм... Пожалуйста, http://www.delphikingdom.ru/asp/talktopic.asp?ID=285&ref=msg&msg=3257#msg3257
Однако, точно знаю, что апломб -- это чрезмерная самоуверенность. Вот иллюстрация моей мысли, привожу ваши же слова: “Например, я считаю что ни Г. Буч, ни Т. Бадд, ни многие другие «адепты» ничего не понимают в ООП.” Скажите, а есть кто-нибудь, кроме вас, кто понимает ООП и чьи работы можно почитать?
Ха-ха-ха... :) Я понимаю, что Вы человек «энциклопедического склада»... без ссылок и определений Вам трудно воспринимать действительность такой, какова она есть. Но, увы, здесь я Вам ничем помочь не могу. Нет никаких проблем, с тем, чтобы показать нелепость многих «изречений» Буча, Бадда и многих других... Можно вспомнить конец 80-х, когда Буч разъезжал по конференциям посвященным ООП и агитировал «адептов» создать коалицию, в рамках которой разработать единую методологию ООП. Он патетически вещал: «Я вижу будущее и оно объектно-ориентированное». Над ним смеялись, смеялись откровенно, но не все... Наиболее слабая часть все же объединилась. Создать единую методику не удалось, создали объединенную, а попросту свалили в одну кучу совершенно несвязные вещи и подходы. «Месиво» помпезно преподносится, как нечто завершенное и законченное под названием UML...
Что ж до моего апломба, то... Вы желаемое выдаете за действительное. Потуги Буча и Ко... просто смешны, чтобы понять это надо просто внимательно прочитать то, о чем они пишут.
Если серьезно, то это печально. Упрек адресован мне (я такую статью точно не редактировал) или же изданию?
Никакого упрека нет, ни Вам, ни изданию. Ремарка была сделана с той целью, чтобы Вы не удивлялись, если прочтете статью, только и всего.
Приведу выдержку из моего сообщения: “Вот ведь какая штука: развитие объектного подхода (как подхода к проектированию систем) началось, по моим наблюдениям, в середине 1990-х годов. До начала 1980-х годов о самом ООП, из которого подход и вышел, вообще даже не говорили.” Скажите, пожалуйста, каким образом приведенные вами факты работы одного отдельно взятого коллектива (кстати, можно ли познакомиться с вашими работами по данной тематике, датированными серединой 80-х годов?) противоречат смыслу моей фразы?
А что один отдельно взятый коллектив не мог заниматься «развитием ООП»? И с моими работами можете познакомиться... приезжайте, если желаете.
Я посмотрел еще раз ваши материалы и согласен, что был невнимателен. В них действительно содержится информация о модульном программировании и его особенностях. Тут я был не прав. Признаю и приношу извинения. Но зачем же так сразу вешать ярлыки? Какие штапмы: “не удосужились”, “писатель”! Нехорошо это.
Штампы? Помилуйте... Вы же сами признаетесь, что не удосужились! И разве Вы не пишите?
Понимаю вашу обиду на мою невнимательность и на искромсанную статью в журнале
Забудьте Вы про «мои обиды»...
Давайте зададимся вопросом, что означает слово начетничество:
Мне известно два значения:
1. Знания, основанные на механическом, некритическом усвоении прочитанного.
2. Способ усвоения, связанный с догматическим отношением к прочитанному.
Совершенно верно, оба определения вполне точны.
Дискуссия началась с того, что я завел разговор о модульном программировании и его месте в современном мире. Отметил, что практически нет основополагающих классических работ по этой теме, что даже с ключевым понятием “модуль” существует путаница. Отметил, что ООП сегодня, на мой взгляд, характеризуется гегемонией, диктатурой. Это критический взгляд, не догматический. О какой догме вы ведете речь? Действительно, интересно в этом разобраться. Вы можете привести примеры работ, в которых излагаются те мысли, что я представил?
Перечитайте свои же сообщения, многие из них – простой пересказ чьих-то мыслей, либо ссылки на историю тех или иных событий. Вторая часть – это «приставание» с просьбами: «Дайте свое определения» (в адрес Сергея Губанова это звучит едва ли не в каждом Вашем сообщении). Не так?
С философской точки зрения ваше высказывание понять можно. Но с практической -- зачем нужен один из способов передачи смысла, если его, этот смысл передать нельзя?
Ха-ха-ха... Хорошо, что Вы задались этим вопросом. Но это вопрос к Вам, а не ко мне. Для себя я на него давно ответил.
Зачем нужны терминологические словари со словарными статьями?
Хм... Я бы рекомендовал метод проф. Преображенского: «В печку его!». Все же экономия газа, нефти, угля... хоть какая-то польза :)
Они дают “голую информацию” ни о чем или все же наполняют определенным смыслом слова в данной предметной области? Зачем вообще вводят термины? Может быть проще и легче говорить простыми и понятными словами? Или все же сложнее? Может ли термин быть без своего определения? Думаю, вряд ли.
Сплошь и рядом! Даже самые «распространенные» термины имеют множество разных не сводимых друг к другу определений. Я же уже говорил об этом. Дайте определения тем «терминам», о которых говорилось в прошлом сообщении. Не стесняйтесь! :)
Риторический вопрос: зачем же смысл открывать, если передать его, как выясняется, нельзя? Ваш укол мне понятен. Но без конкретики он не более чем очередной ярлык.
Для личного пользования... Оно не вредно, честное слово... :)
№ 4016 21-12-2005 03:28 | |
Ответ на »сообщение 4004« (info21)
___________________________
Поэтому ситуации, где требуется разделить наследование и полиморфизм, -- это речь о вещах совсем другого логического уровня, чем "конструкционный" уровень ЯП.
Вот я и задаю Александру Сергеевичу (ASU) вопрос: на каком уровне существует такой "чистый" полиморфизм?
Как его понимать?
Может быть, это вообще "идея чистого разума"? :)
А то, что я пытаюсь зацепиться за "конструкционный" уровень ЯП, то у меня есть свои причины.
В частности, недавно выяснилось, что не все одинаково оценивают полезность тех или иных языковых конструкций.
Например, как мне кажется, Руслан Богатырев проводит границу между Обероном и Обероном-2 на основании наличия в последнем type-bound procedures.
Получается, он не слишком высоко их оценивает.
Вот я и пытаюсь в этом (и не только в этом) разобраться.
А с тем, что существуют другие уровни, отличные от "конструкционного" уровня ЯП, я полностью согласен.
Хотя и не уверен, что наличие сходных качеств у разнородных объектов обязательно является "полиморфизмом".
С грустью признаюсь, что я до сих пор путаюсь в подобных вопросах.
Может быть, если ума к сорока не нажил, так его уже и не будет... :(
№ 4015 21-12-2005 03:23 | |
Ответ на »сообщение 3993« (ASU)
___________________________
Какие тезисы можно извлечь из вашего пояснения сути модуля и особенностей модульного программирования? См. [ http://www.alexus.ru/russian/articles/design/letter01/page02.htm ]
Попробую это сделать.
1. Появилась реальная потребность объединить и защитить данные и код, который их обрабатывает. Эта задача была решена в модульном программировании.
С моей точки зрения, данные и код -- суть понятия более низкого уровня (операционного, машинного). В этом контексте можно понять, что вы имеете в виду именно операционный модуль, а не языковой. Если операционный, то что конкретно (какие воплощения) вы подразумевали? Предполагаю, что все же языковой. Вообще говоря, "данные" и "код" в языке объединены и защищены и в рамках процедур (подпрограмм). Процедуры контролируют область видимости и область существования и являются капсулами для "кода" и "данных".
2. Модуль, в отличие от библиотеки подпрограмм, мог содержать не только подпрограммы, но и данные.
Какие данные? Что подразумевается под словом "данные" -- константы, переменные, типы? Не зря уточняю, ибо как трактовать класс -- как тип (особую форму) или как модуль (особую форму)? Класс -- это код, данные или и то, и другое? С точки зрения области видимости принято делить данные на глобальные, нелокальные (неглобальные) и локальные. Как только в языке появляется модуль, к которому приписываются такие сущности как константы, переменные и типы, возникает возможность представлять нелокальные сущности.
3. Данные, располагаемые в модуле, были глобальными и для модуля и для программы, которая использовала данный модуль.
Вот это положение мне непонятно. Если речь идет об эволюции языков модульного программирования, то скажите, какой конкретно язык вы имели в виду? Если "данные" располагаются в модуле (капсуле), то они могут быть видны снаружи, только если экспортируются. Любые "данные", располагаемые в модуле, нельзя считать глобальными.
4. Соответственно критичные к произвольным изменениям данные помещались в зону реализации и были недосягаемы для программы или других модулей. Про эти данные можно сказать, что они были инкапсулированы модулем.
Получается, что "инкапсулированы" означает "полностью скрыты". Рассмотрим ситуацию, когда часть типа данных описана в интерфейсе (типичная ситуация для Оберона в случае частичного экспорта для RECORD), а другая его часть (точнее, весь тип полностью) -- объявлена в реализации. Является ли тип в этом случае инкапсулирован в модуль? Если модуль предусматривает свою целостность на уровне связки интерфейс-реализация, то инкапсулированы абсолютно все сущности этого модуля (нельзя интерфейс оторвать от модуля и сделать самостоятельной сущностью), но при этом регулируются видимость и доступ к этим сущностям через интерфейс.
5. Если теперь сложить все элементы полученной мозаики воедино, то получится знакомая картина: все подпрограммы модуля собраны вместе по функциональному признаку и работают над одними данными, инкапсулированными в модуль; модуль имеет области кода, которые вызываются при инициализации и окончании работы модуля. Такой модуль можно назвать прообразом объекта.
Подпрограммы модуля могут объединяться отнюдь не только по функциональному признаку и могут оперировать данными других модулей, т.е. не инкапсулированными в данный модуль.
Можно ли модуль считать прообразом объекта? С точки зрения сущности языка программирования -- сомнительно. Модуль не порождается в языке как объект (в языке, но не операционной среде!). Модуль уникален в отличие от объекта. Модуль не взаимодействует с другими модулями подобно тому, как объекты взаимодействуют друг с другом: у модуля "взаимодействуют" лишь отдельные его сущности, а не он целиком. Получается, все, что его роднит с объектом, -- это объединение "кода" и "данных", что есть и у самой банальной подпрограммы.
С эволюционной точки зрения считать модуль прообразом объекта тоже сложно. Ни Simula, ни Smalltalk, ни C++, которые и определили лицо ООП, не проходили стадию использования модуля как конструкции языка программирования. Развитие Simula и Smalltalk шло в параллель с модульным программированием, попросту его не замечая.
Увы, увы… Чем отличается модуль от класса (и что такое модуль), а также что такое модульное программирование в вашей работе мне найти не удалось.
№ 4014 21-12-2005 03:22 | |
Ответ на »сообщение 3976« (Руслан Богатырев)
Я дал определение, удобное мне для выявления того, что является переменной в императивных языках, о которых мы говорим, а что не является.
Ну вот, опять не правильно. Типизация и императивность - разные вещи.
Возможно, мое определение вас лично не устраивает -- замечательно, приведите свое.
Сначала Вы просили привести Вам определение модуля, потом - полиморфизма. А теперь докатились до переменной. Если так дальше пойдёт, то, чувствую, через пару дней Вы попросите привести Вам определение константы. А дальше что будет? Как далеко заведут Вас Ваши многословные размышления вслух изливаемые в этот форум в виде потока сознания?
Но правда, не припомню, в каком из известных императивных языков есть переменная и нет типов данных.
Любой динамически типизируемый язык. Например, Mathematica.
Ответ на »сообщение 3983« (hugi)
С.Г. отказал Delphi в праве называться модульным языком, а я показал, что программы, написанные на нём, могут быть представлены как раздельно-загружаемые модули.
Уточнение/разъяснение
Модульный язык - это язык специально предназначенный/оптимизированный/заточенный для написания модульных систем. Вот тогда когда дельфийские юниты станут единицами исполнения, вот тогда язык Дельфи автоматически превратится в модульный язык. Но тут есть один важный момент. Сам язык-то автоматически превратится, но большинство программ которые на нём уже были написаны автоматически станут неправильными, так как эти программы расчитаны на то что все юниты загружаются при старте программы один раз и выгружаются при её завершении. А теперь-то они при старте программы не загружаются (а загружаются динамически - по требованию, да и программы как таковой теперь вообще нет - вместо неё модульная система), надо будет переписывать старые немодульные программы превращая их в расширения модульной системы.
Ответ на »сообщение 3986« (hugi)
Ну а определение модульной системы, может, приведёте всё-таки?
Что и Вы туда же? А определение полиморфизма и переменной Вам дать не надо? Во-первых, я не нанимался определения давать (тут по ним Руслан Богатырёв специализируется). Во-вторых, честно говоря, даже не уверен, можно ли дать строгие формальные определения таким понятиям как модульная система, полиморфизм, переменная. Проще пальцем показывать и говорить, что вот это модульная система, это полиморфизм, а это переменная. Чтобы понять что такое модульная система посмотрите, например, на BlackBox.
Ответ на »сообщение 3994« (ASU)
Если мне не изменяет память, то ссылку я приводил несколько лет назад на progz.ru.
Посыпаю свою голову пеплом, жую шляпу, кусаю локти - значит я тогда на неё не обратил внимания и сейчас очень сильно об этом жалею.
Ответ на »сообщение 3996« (Руслан Богатырев)
Риторический вопрос: зачем же смысл открывать, если передать его, как выясняется, нельзя?
Затем чтобы самому понять. Передать можно информацию. Но понять смысл принятой информации каждый человек должен сам. Смысл в чистом виде, увы, непередаваем.
№ 4013 21-12-2005 02:56 | |
Добрый день,
Подскажите пожалуйста линк на Oberon для LPC21xx или другой ARM.
Спасибо.
№ 4012 21-12-2005 01:14 | |
Ответ на »сообщение 4011« (Sergei)
___________________________
Просто для информации. В mailing list Bluebottle (не путайте с Blackbox) время от времени идут жалобы на нестабильность системы. Вчера прошло сообщение о нестабильности в "Heap and CG". Ответ разработчиков цитирую "current state as intolerable. Analysing the problem and finding a solution has a high priority in the next few months." В общем, как я понимаю, ошибки в ядре и если их исправление потребует нескольких месяцев, то рассматривать Bluebottle как продукт плка рановато.
На мой взгляд, к Bluebottle стоит относиться как к интересному исследовательскому проекту, со всеми вытекающими отсюда плюсами и минусами...
Отслеживать это обсуждение
Дополнительная навигация: |
|