Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА
№ 3926 15-04-2007 12:03 | |
Ответ на »сообщение 3916« от (Антон Григорьев)
___________________________
Если вы это и говорили, то так, что никто ничего не понял
Ха-ха-ха... Это очень трудно... Хорошо, нет проблем... я повторю... ( см. »сообщение 3891« ) А Вы будьте любезны указать то место, которое Вам непонятно:
«а) есть логика разработки элемента;
б) есть логика создания системы;
в) логика элемента не должна включать в себя логику системы, то есть, не должна содержать даже намека на межмодульные связи»
Ни одного возражения (даже комментария) от «оберонщиков»...
Обычно в таких случаях люди пытаются объяснить ещё раз - другими словами и по возможности подробнее. Вы же в очередной раз демонстрируете тот способ ухода от ответа, который я уже наблюдал у вас в других ветках - "я уже говорил, перечитайте". На фига вообще тогда высказывать своё мнение, если вы не пытаетесь сделать его понятным?
Что же Вам не понятно? Ответ очень прост... Вы видите то, чего нет, но не не видите то... что есть. Как известно, тому, кто не желает видеть, очки не помеха... :)))
Вы, как обычно, конкретный вопрос проигнорировали
Вы читаете... или только пишите?.. У меня дан совершенно конкретный ответ: «Система, которая использует данный интерфейс. Если система не специфицировала, то выбор передается неким установкам по умолчанию или... случаю. Вас же не удивит, если, например, выборка из одной и той же базы данных вернет записи в разном порядке, если Вы явно не указали ORDER BY в запросе». Ха-ха-ха... (хотя чему удивляться...)
Именно так обычно говорят люди, которые хотят создать вокруг себя ауру мудрости - типа они знают что-то такое, что обычным людям недоступно, а потому и вслух произносить необязательно.
Хорошо, персонально, так сказать... для Вас... разжую... Со времен Аристотеля известно, что система – не тождественна сумме ее частей. Это раз. Разность между системой и суммой частей есть мера организации (по Богданову). Это два. Говоря современным языком, разность – это логика самой системы. Это три.
Далее... система, имеющая собственную логику, по всей видимости имеет и ее реализацию. Так вот, исходя из реализации этой самой логики системы и происходит подгрузка и связывание элементов. Если пользователь выбрал метод расчета, то подгружается соответствующий модуль, происходит привязка конкретной процедуры и... последующий вызов...
Вы же, как чёрт ладана, избегаете любой конкретики, постоянно уводя разговор в сторону жонглирования словами, причём теми словами, которые не имеют строгого определения, что позволяет играть на неоднозначностях их понимания.
Понимаете, проблема любого общения имеет два полюса: тот кто говорит, и тот кто слушает. Даже самый искусный лектор в санатории для умалишенных не будет иметь успеха, как и самый плохой лектор в умной аудитории. Понимаете? В общем случае проблемы возникают не по вине одной стороны?.. Конкретика с моей стороны (и на мой взгляд) дана исчерпывающе... но я вполне допускаю, что уровень конкретности у каждого свой... конкретно... :)))
Понятие системы настолько растяжимое, что даже программки типа Hello, World могут быть названы системными. Т.е. в таком понимании любое программирование является системным. Ну и зачем тогда, спрашивается, приделывать абсолютно ничего не уточняющее прилагательное к слову "программирование"?
Ха-ха-ха-ха... Вот, оказывается, в чем причина!.. Если Вы не знаете теории систем, то... какие претензии ко мне?.. Надеюсь, Вы не считаете меня обязанным пересказывать Вам довольно большой материал?..
Наверное, первое, что вы, ASU, хотите сказать после этого сообщения - это обвинить меня в переходе на личности.
Да, в этом, в отличие от знания теории систем, Вы безусловно, преуспели! Поздравляю! :)))
Да, признаю, что ваша личность мне ужасно не нравится, и мне уже надоело быть политкорректным и скрывать это.
О! До чего приятно мне слышать это от модератора!!! :))) Модератор, дающий волю своим пристрастиям – это просто цирк!!! Этакая беспристрастная пристрастность... :)))
Мне надоело, что любая ветка, в которой вы появляетесь, тут же превращается в бессмысленный флейм
Понимаете... смысл... он воспринимается индивидуально... так уж устроено (честное слово, это не я придумал) :))) Так вот, если Вы не понимаете смысла, то это еще не обязательно бессмысленность... Не так давно к нам приезжал АСУшник из Нижнего Новгорода, посмотрел, послушал разработчиков и уехал... закатив глаза (и собрав кучу набросков моделей)... смысл доходить начал... может быть... :)))
вы провоцируете оппонентов тем, что, с одной стороны, нагло игнорируете их самые сильные аргументы и вопросы
В студию вопросы, на которые я не ответил! (в ответ я приведу вопросы, на которые не ответили мне). Посмотрим, кто... кого... :))) Вот на примере этой ветки... никто из оберонщиков не взялся ни оспаривать системные принципы, ни то, что Оберон им не соответствует. Кто-то начал требовать сравнений Оберона с другими языками, кто-то рассказывать про реализации, в том числе, и свои... Но оспаривать не стали... К чему бы это?.. Ха-ха-ха-ха...
Я не знаю, то ли вам доставляет удовольствие, когда форум превращается в такую помойку, то ли в силу особенностей своего мышления именно это в считаете интересным разговором
Меня не сильно интересует Ваше мнение о моей особе... уж, извините... Но, не я сказал (и я в это даже не верю)... что «в споре рождается истина». Как ни странно... но многие полезные растения предпочитают расти на помойке, навозе, фекалиях... Вы огурцы любите? А яблоки?.. Может быть, чтобы произрастали полезные мысли, надо иметь под рукой помойку? Не задумывались над этим?... «Жизнь творит порядок, но порядок жизнь не творит» (Экзюпери). Жизнь творит «помойка»... :))) Ха-ха-ха-ха :)))
Но моя задача в этой ветке - сделать так, чтобы её участники черпали отсюда интересные идеи, а не противоречивые и, по большей части, весьма неприятные эмоции
Переходите работать в дендрарий будите дарить людям хорошие эмоции... и возиться с навозом... В принципе все это Вам уже знакомо... Только хлопот меньше... :)))
Это очень плохо совмещается с вашим присутствием в этой ветке, поэтому чем раньше вы её покинете, тем лучше
Лучше для кого?.. Для того, кто не знает теории систем?.. Кто не желает думать, но действовать?.. Ха-ха-ха... это для меня «питательная среда»... :)))
Всё равно всё закончится так же, как и в других ветках, которые вы "осчастливили" своим появлением - основные участники либо перестанут её посещать, либо станут бойкотировать ваши сообщения
С бойкотированием Вы явно перегнули... А ветки, где я принмал участие в дискуссиях не страдали отсутствием внимания... Займитесь анализами на досуге... :)))
Вот поэтому я и хочу, чтобы вас здесь не было, чтобы вам было здесь некомфортно
Вы даже не представляете... Мнение модератора, который не может быть беспристрастным... заслуживает... не усмешки, но... Нет ничего более смешного, чем указатель, в роли флюгера, чем сочувствующий палач, чем ... :)))
И заодно совершенно официально говорю, что если я замечу, как кто-то из участников, доведённый вашим словоблудием, тоже перейдёт на личности и скажет вам всё, что он о вас думает, я не буду применять к такому человеку никаких мер модераторского воздействия - вы это заслужили.
Ха-ха-ха-ха... Правосудие заменили травлей!.. Ату его, ату! Ха-ха-ха-ха... Да, сегодня совсем не скучный день! Спасибо, Антон, так смешно, давно не было... Спасибо! :)))
Желающие погавкать, вас приглашают на сцену!.. :)))
PS. «Все это было бы смешно, когда бы не было так грустно»... Модератор приглашает нарушать правило форума в угоду его модератора мнения... Да, здравствует очередная «оранжевая революция»... плевать на конституцию...
Тьфу... прости меня Господи.
№ 3925 15-04-2007 12:00 | |
Ответ на »сообщение 3915« от (Руслан Богатырев)
___________________________
Мы работаем в сфере программирования, где давно существует своя система ценностей, своя терминология. Есть такой термин systems programming (системное программирование). Если не затруднит -- представьте свое понимание этого термина, раз он расходится с общепринятой точкой зрения.
Во-первых, мне непонятно, почему система ценностей человечества (или хотя бы научной его части) должно расходится с «нашей системой ценностей». Может быть Вы возьмете на себя труд, объяснить, чем общепринятое понятие «система» отличается от понятия «системы» в программировании.
Во-вторых, я уже пояснял свое понятие системного программирования. Может быть Вы не сочтете за труд читать сообщения оппонентов?.. Повторю, «Под системным программированием я понимаю реализацию программных систем, безотносительно их области применения». ( см. »сообщение 3902« ) Ничего... личного...
№ 3924 15-04-2007 11:58 | |
Ответ на »сообщение 3914« от (Как слышно? Приём!)
___________________________
Только, к сожалению, "почти все". Некоторые так и не раскусили.
По одной из легенд... один маг умер выпив чистой воды... поскольку так и не смог определить, что же это за яд...
№ 3923 15-04-2007 11:56 | |
Ответ на »сообщение 3911« от AVC
___________________________
Я неустанно спрашиваю, где "находится" интерфейс, каким образом он доступен компилятору? :)
Повторяю еще раз... Интерфейс находится между уровнями системы...
Соответственно, все задачи можно разделить следующим образом:
а) определение уровней;
б) после выделения над- и под- уровней определение/понимание протоколов их взаимодействия;
в) реализация над- и под- уровней.
Как интерфейс доступен компилятору? В принципе не имеет значения, главное, чтобы элементы каждого уровня (модули, например) знали какой уровень они образуют. Для компилятора этого вполне достаточно, чтобы понять о каких интерфейсах (а их два: с тем, кому подчиняются, и с тем кто подчиняется) идет речь.
>>> Линкеры и библиотекари "в свое время" никак указанную задачу не решали.
>> То есть... как это не решали?
> Да так -- не решали и все. :)
Жаль, конечно... У меня решали... у Вас – нет...
Возьмем типичный пример: компиляцию и сборку сишной программы.
Никакого контроля типов для объектов другого модуля при компиляции не делалось.
Не делалось?.. Даже если был указан *.h файл?.. Странно... (Я не очень большой любитель Си, но у меня даже TASM делал проверку типов... очень строго... между прочим) :)
В лучшем случае, принималось на веру, то, что было написано в h-файле.
Ну, вот... Тусклый «свет в конце туннеля»... :)
А линкер вообще типами не занимался, а занимался только настройкой адресов.
И Вы считаете, что это плохо или неправильно? Если компилятор проверил, то задача линкера просто собрать воедино... Чего же еще от него желать? Важно, что:
а) процесс был строго разделен по классу решаемых задач;
б) каждая задача решалась качественно (для того задач того времени, разумеется).
А сейчас все повесели на одну кнопку и спорят о вещах... относящихся к совершенно разным задачам... IMHO. Это примерно то же самое, как сравнивать зеленое с теплым... Компилятор с какого языка поддерживает квалифицирующий импорт... Да, ни один компилятор его поддерживать не должен.
Роль линкера иногда была столь незначительна, что в системе программирования для последнего микропроцессора я вообще выкинул отдельный линкер, у меня линковкой сразу занимается ассемблер (в данном конкретном случае это проще и быстрее).
Да, я тоже пробовал FASM... «Удобно» сразу получать исполняемый файл... Неудобно то, что вмешаться в данный процесс можно только на основе директив компилятору, а этих директив становится столь много, и пользоваться ими столь неудобно (для выполнения самой простенькой задачи), что пришлось его (FASM) забросить...
Есть такое хорошее слово default... Если нет указаний, сделай по умолчанию... Но если разработчик хочет что-то указать, пусть у него будет такая простая возможность. IMHO... еще раз...
Ответ на »сообщение 3913« от AVC
___________________________
>>> Вопрос: где объявляется ("находится") интерфейс? ("Где находится Нофелет?" :) )
>> Между уровнями системы... вестимо... (или Вы хотите знать название файла? :) )
> Если Вас этот вопрос затрудняет, дам подсказку: кнопочки находятся на передней панели телевизора (или его remote control), но никак не человека. :)
Меня эти вопросы ничуть не затрудняют. Если позволите, то дам свой ответ: кнопочки находятся на интерфейсной панели телевизора или плиты. Кнопочка – это не горелка, кнопочка – это приспособление для человека (даже если находится на плите или поставляется с плитой). Попробуйте представить себе кнопку в виде иголки или столь тугую, что нормальный человек ее нажать не сможет. Представили? Хорошо... Надеюсь понятно?
№ 3922 15-04-2007 11:40 | |
Ответ на »сообщение 3915« (Руслан Богатырев)
___________________________
Ответ на »сообщение 3903« (ASU)
___________________________
Некое краткое введение в понимание этого термина в общепринятом смысле можно найти здесь: http://en.wikipedia.org/wiki/Systems_programming
Есть некоторое определение постарше и поближе:
...Основной задачей системного программирования является создание операционных систем, управляющих работой машины, программным путём расширяющих возможности машины и предоставляющих пользователю дополнительное обслуживание, не предусмотренное аппаратурой: возможность ввода и вывода одновременно с решением задач, автоматизация редактирования выдачи, вывод графиков, работа с экраном, диалог с машиной, возможность одновременного решения на машине многих задач (система разделения времени).
БСЭ, статья "Вычислительная математика"
№ 3921 15-04-2007 10:28 | |
Ответ на »сообщение 3904« (ASU)
___________________________
Ответ на »сообщение 3899« (AVC)
___________________________
А зачем «межмодульный»? Пусть будет соответствие интерфейсу?.. Если плата расширения соответствует протоколу (интерфейсу) PCI-E, то ее можно вставить во множество материнских плат имеющих данный разъем. А вот если она будет соответствовать какой-то одной плате... то проку будет мало.
Да, можно контролировать на соответствие интерфейсу, а не другому модулю. Т.е. интерфейсы лежат отдельно, в особых "пакетах интерфейсов", и на их основе производится "сверка". В Обероне возможна и часто используется и такая схема, просто отдельного вида "пакета для интерфейсов" не вводится. Используются модули общего вида. Просто интерфейсы выделяются в отдельный, третий модуль, который содержит исключительно секцию описаний. Этот модуль явно импортируется всеми модулями-агентами, взаимодействующими на основе описанных интерфейсов. При этом сами агенты друг друга импортировать уже не обязаны, они никак не связаны между собой, но жестко связаны с единственным описательным модулем - который выполняет роль общего договора, контракта по интерфейсам. Т.е. ваша схема с обособлением описания интерфейса прекрасно воплощается и в Обероне. Просто в Обероне модуль - универсальная "капсула" на все случаи жизни. Что в нее положите - тем и будет. Можно придумывать специализированные конструкции для хранения интерфейсов, но это уже не первая необходимость, и делать это стоит неспеша и осторожно (как, например, в языке Zonnon, являющимся экспериментальным ответвлением Оберон-семейства).
Связь между агентами на основе общих интерефейсов выстраивается на каких-то третьих модулях, которые выполняют роль "монтажных плат", точек коммутации. Саму коммутацию производят четвертые модули - диспетчеры либо начальные конфигураторы. Вас смущает, что коммутация выполняется "программно"? Ну так диспетчеры и конфигураторы весьма просты, код для них может генерироваться автоматически. Кроме того, с использованием метапрограммирования...
Ах да, возникал вопрос по метапрограммированию. Мы называем метапрограммированием совокупность а) доступа к описаниям языковых сущностей и символьной информации на этапе выполнения программы (рефлексия) б) механизм динамического доступа/модификации этих сущностей самой программой "на лету", например, по символьным именам. Это не часть языка, а механизм рантайма, но язык может быть приспособлен или неприспособлен для этого. Оберон хорошо приспособлен и достаточно прост для эффективной реализации этого механизма, поэтому в большинстве Оберон-сред он есть.
Таким образом, при метапрограммировании язык становится сам для себя скриптовым языком, что ли - как Вы правильно догадались.
Так вот, при использовании метапрограммирования легко сделать для приложения универсальный диспетчер, который позволит пользователю расставить галочки и нажать кнопочки, а затем все быстренько пересоединит "по щучьему велению".
Оберон удобен тем, что является своего рода "ассемблером" компонентного программирования, на котором удобно и быстро реализуются любые компонентные механизмы. Но сам язык - это не "пластилин", а набор жестких кубиков. Гибкие связи описываем и отстраиваем уже мы сами. Как захотим, так и построим. А внутри отдельных монолитных блоков (а такие блоки всегда будут. Те же процессоры делаются на одном кристалле, и никакой гибкостью внутри там и не пахнет...) используем предельно простые и понятные явные связи на основе квалифицированного импорта.
К вопросу о "пригодности Оберона для системного программирования".
Имелись в виду два аспекта: 1) для системного в том смысле, который я описал. Т.е. для написания ОС, критичных систем реального времени и т.п. Для этого по факту Оберон один из лучших языков сегодня.
2) для построения надежных и гибких архитектур ПО. В том смысле, который я назвал выше: "ассемблер архитектуры". Вы не найдете готовых супер-гипер-гибких конструкций внутри языка. Но легко построите их сами, как из конструктора Лего. И чем больше работаешь на Обероне, тем больше видишь небольших мелочей, которые при первом взгляде кажутся не особо значимыми, а затем понимаешь, что не будь сделано именно так - и использование того или иного приема/паттерна стало бы гораздо менее удобным.
И еще - под Обероном мы понимаем не только язык, а всю совокупность схем/приемов, апробированных в добром десятке операционных систем и сред этого семейства.
Вы приписали создание "гибких механизмов" лично мне, но я по большей части всего лишь описал типовые приемы, наработанные и повсеместно используемые в этих средах, с некоторыми дополнениями и терминами из своего опыта. Эти приемы гибких архитектур и составляют сердцевину того, что мы называем Оберон-технологиями.
№ 3920 15-04-2007 09:36 | |
Ответ на »сообщение 3917« (Geniepro)
___________________________
>>> Боюсь, это может быть достаточно безопасно только при использовании
>>> чистого ФП. В императивном мире это приводит к диким багам...
Мимо!
Дело не в функциональности vs императивности,
а в идеальный (чистый) vs реальный.
Багов нет только при достаточной вакуумированности и сферичности.
Хотя пятна на реальном Солнце опровергают и эти условия :)
№ 3919 15-04-2007 08:51 | |
Ответ на »сообщение 3918« (AVC)
___________________________
"между" -- лишнее слово... :(
№ 3918 15-04-2007 08:50 | |
Ответ на »сообщение 3912« (Руслан Богатырев)
___________________________
Значит, остается раздельная компиляция, в которой и интересует квалифицирующий импорт. С точки зрения компилятора (а другие этапы можно уже и не рассматривать, если останавливаемся на схеме раздельной компиляции), разницы между квалифицирующим и неквалифирующим импортом по сути нет.
Позволю себе усомниться.
Раздельная компиляция (возможно, здесь я ошибаюсь) в частности основана на том, что между интерфейс откомпилированного модуля гарантированно соответствует по типам его реализации.
Это совсем не то же самое, что в Си, где в h-файле может находиться некий прототип функции, а где она реализована в программе (и реализована ли вообще), и соответствует ли ее реальный тип заявленному в прототипе, Бог весть.
Поэтому в моем сознании между квалифицирующим импортом и раздельной компиляцией есть сильная корреляция.
№ 3917 15-04-2007 07:56 | |
Ответ на »сообщение 3902« (ASU)
___________________________
Я не думаю, что создатели первых машин думали о... компьютерных играх.
Вообще-то о компьютерных играх думала ещё... Ада Лавлейс, когда сочиняла первую программу для Аналитической Машины Чарльза Беббиджа ещё в... 19 веке! :о)
Система состоит из элементов... Открытая система постоянно обменивается элементами с внешней средой...
Боюсь, это может быть достаточно безопасно только при использовании чистого ФП. В императивном мире это приводит к диким багам...
Хм... Чем меряете жесткость?.. :) Отличия, пожалуйста, приведите...
Жёсткая ветвь дуба ломается под тяжестью выпавшего снега.
Гибкая ветвь сакуры сбрасывает снег и остаётся целой.
Так появились дзю-до и дзю-дзюцу... :о)
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|