Blackbox.Metasystems.ru: Материалы семинара "Языки программирования и технологии "Оберон": перспективы для индустрии и образования" На сайте Blackbox.Metasystems.ru размещен давно обещанный сборник материалов семинара "Языки программирования и технологии "Оберон": перспективы для индустрии и образования", прошедшего 30 марта на физико-математическом факультете Орловского государственного университета. |
Комментарии |
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| Почитал я про Оберон немного. Первое впечатление: зоопарк! Как то много всяких оберонов и все они какие то разные... Надеюсь я ошибаюсь. |
|
Комментарии: 83
Зарегистрирован: 04.07.2004 21:44
| А каков зоопарк среди языков c фигурными скобками! Одних только названий языков не перечесть.
И для каждого "языка" по нескольку широко используемых компиляторов, обрабатывающих различные диалекты этого языка и библиотек, привязанных к одной платформе. На уровне "hello world" они ещё совместимы, но каждый сколь-нибудь крупный проект привязан к одному компилятору. Например, Linux - GCC, MFC - Visual, и т. д. Не существует даже реализации STL, которая компилировалась бы на всех С++.
Можно утверждать, что все языки семейства Оберон целиком по объёму менше, чем различия между диалектами, скажем С++. Их пожно все выучить за день. Никаких проблем.
Попробуем немного систематизировать зоопарк.
Названия основных языков семейства Оберон: -- Оберон -- Оберон-2 -- Асtive Оberon -- Соmponent Раscal -- Zоnnon
Названия некоторых программных продуктов: -- ВlackBox - это среда разработки на языке Соmponent Раscal под Windows -- Bluebottle - самая лучшая в мире операционная система на Асtive Оberon. |
|
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| Капитану: Какая у тебя ОС на домашнем компе, на рабочем? Какую ось ты используешь для написание емейлов, ползанья по инету, прослушивания музыки, для работы в конце концов? К какой оси привязана твоя повседневная компутерная жизнь? |
|
Комментарии: 952
| fedukoff, при том, что Bluebottle, к сожалению, действительно сейчас мало приспособолена для всего описанного, особенно на первом попавшемся железе, это прекрасный образец системной архитектуры и вообще пример того, как надо решать проблемы. Не хватает всего пары пустяков - драйверов да приложений...
Правда, я не совсем в восторге от Active Oberon. Он, конечно, на уровень выше массовых "попсовых" языков, однако ж, параллельность требующая ручного дерганья семафоров, осознания потоков и самой проблемы параллельности, ИМХО, не то, что нужно для массового программиста. Думать параллельно, к сожалению, из них могут совсем немногие. |
|
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| Ну вот. Что делать чтобы параллельность была прозрачна? Конечно! Еще один диалект! И все будут счастливы Имхо, такие вещи должны закладываться в язык изначально (ну или в к.н. из его веток, но изначально) |
|
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| Вообщето "пример, как надо решать проблемы" это, конечно, хороший пример, но лучше все таки стараться эти проблемы не допускать... |
|
Комментарии: 952
| Она и была заложена изначально в Active Oberon. И лучших реализаций надо еще поискать. Тем не менее, я считаю, что могут быть и лучшие реализации. Собственно, есть желание этим даже заниматься, да вот беда - платят сейчас больше сантехникам (о сантехниках чуть позже), а кушать почему-то хочется.
Кстати, может Капитан в курсе, почему же был свернут Juice, а если быть еще точнее, то технология Slim Binaries? Я бродил по сайту Михаэля Франца, что-то из его работ сейчас пересекается со Slim Binaries (SafeTSA?), но не видно прямой связи. |
|
Комментарии: 952
| fedukoff написал(а) ... Вообщето "пример, как надо решать проблемы" это, конечно, хороший пример, но лучше все таки стараться эти проблемы не допускать... Под проблемами в данном случае подразумеваются закладываемые в систему требования. |
|
Комментарии: 83
Зарегистрирован: 04.07.2004 21:44
| fedukoff написал(а) ... Какая у тебя ОС на домашнем компе, на рабочем? Какую ось ты используешь для написание емейлов, ползанья по инету, прослушивания музыки, для работы в конце концов? К какой оси привязана твоя повседневная компутерная жизнь? Любая, оказавшаяся под рукой. Чаще всего это Windows98.
Впрочем, всё перечисленное имеет лишь отдалённое отношение к понятию "самая лучшая в мире ОС".
Roman I Khimov написал(а) ... Правда, я не совсем в восторге от Active Oberon. Он, конечно, на уровень выше массовых "попсовых" языков, однако ж, параллельность требующая ручного дерганья семафоров, осознания потоков и самой проблемы параллельности, ИМХО, не то, что нужно для массового программиста. Думать параллельно, к сожалению, из них могут совсем немногие. Тут непонятно, где сопоставление, а где противопоставление.
На всякий случай уточню, что "попсовые языки" - это "ручное дёргание семафоров". В то время как в Асtive Оberon в большинстве случаев обходится без этого.
fedukoff написал(а) ... Ну вот. Что делать чтобы параллельность была прозрачна? Конечно! Еще один диалект! И все будут счастливы Параллельность не может быть абсолютно прозрачна. Она должно быть удобна для использования. Вот в Асtive Оberon она удобна для использования.
fedukoff написал(а) ... Имхо, такие вещи должны закладываться в язык изначально (ну или в к.н. из его веток, но изначально) Что это за язык такой? Уж не Java ли?
Roman I Khimov написал(а) ... Кстати, может Капитан в курсе, почему же был свернут Juice, а если быть еще точнее, то технология Slim Binaries? Я бродил по сайту Михаэля Франца, что-то из его работ сейчас пересекается со Slim Binaries (SafeTSA?), но не видно прямой связи. Потому что всё это лишь забавные игрушки.
SDЕ, технически на голову превосходящая всякие там "виртуальные стековые машины" - это лишь забавная игрушка. Это мнение самого Франца.
Это с технической точки зрения. А из шкурных интересов Франц предпочитает работать с Java. Ну что поделать. |
|
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| Что это за язык такой? Уж не Java ли? Java хорош, безспорно. Но и он имеет кучу всяких недочетов. Хотя из тех языков, с которыми мне приходилось сталкиваться Жаба самый-самый подходящий для решения стоящих передомной задач. Под словом "сталкиваться" я подразумевал не то чтобы книжку почитать и написать "ХЕЛЛОВОРЛД", а более-менее рабочий проект сделать...
ЗЫ: Не претендую на объективность. |
|
Комментарии: 952
| captain cobalt написал(а) ... На всякий случай уточню, что "попсовые языки" - это "ручное дёргание семафоров". В то время как в Асtive Оberon в большинстве случаев обходится без этого. Тем не менее, в самом Active Oberon Language Report философы по прежнему обедают с семафорами на 21 странице. Это наводит на подозрения. |
|
Комментарии: 83
Зарегистрирован: 04.07.2004 21:44
| Это не семафоры. Это вилки!
Дело в том, что семантика вилки в точности совпадает с семантикой семафора: если один философ схватил вилку, то её уже не сможет схватить другой, пока она не будет возвращена на место.
Семафоры там используются лишь для сокращения программного текста и действительно вызывает некоторую неясность.
Так что это не "просто" семафоры, это вилки - объекты (понятия) моделируемой предметной области. Такое совпадение семантики не совсем случайно - и семафоры и задача Обедающих Философов были придуманы Дейкстрой для вполне определённых целей. |
|
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| Бугага! Звучит как бред какойто! Вилки обедающих философов! Разьясни пожалуйста, что это значит! Не хочу раньше времени в языке разочаровываться....
|
|
Комментарии: 952
| ОК, возможно так. Там, правда, еще и опечатка есть в исходнике. Но это тоже детали. Когда ж будет порт BlackBox под GNU/Linux? Что ли пойти в ИЯФ РАН работать... |
|
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| ИЯФ РАН? Это что контора сантехников? |
|
Комментарии: 83
Зарегистрирован: 04.07.2004 21:44
| fedukoff написал(а) ... Бугага! Звучит как бред какойто! Вилки обедающих философов! Разьясни пожалуйста, что это значит! Не хочу раньше времени в языке разочаровываться.... Задача Обедающих Философов - это небольшая модель, придуманная Дейкстрой для демонстрации некоторых проблем параллелизма и способов их решения.
Придумана задолго до появления Оберонов.
Формулировка задачи есть почти в любом учебнике по операционным системам. Также её очень просто нагуглить.
Несмотря на забавную формулировку, задача далеко не так проста.
Но для Асtive Оberon никаких проблем. Полное решение занимает десяток-другой строк кода. |
|
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| Сорри... Как то с детства не силен в классике... ЧИЧАЗПОЧИТАЮ |
|
Комментарии: 952
| ИЯФ РАН - Институт Ядерной Физики Российской Академии Наук. Если я правильно понимаю, то это та же организация, что и Институт ядерных исследований. Или родственная, но это не так важно, как важно то, что там программируют на Обероне. Там все-таки не носки штопать, надо бы считать правильно. И много. И быстро. |
|
Комментарии: 40
Зарегистрирован: 05.11.2005 00:07
| Да уж, это наверное интересно , осцилляции нейтрино обсчитывать в реальном времени.... блин. Где мои 17 лет? |
|
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| Значит чего я скажу про философов. Не знаю, какую вам там в учебных заведениях лапшу вешуют, но тут самая главная задача, как эти философы между собой договариваться будут в конфликтных ситуациях (когда все хотят жрать). Я бы сделал очень просто: далбы каждому философу некое свойство - "сила голода". Это свойство влияло бы на выбор, какому из филосовов отдавать предпочтение в конфликтных ситуациях. А если оно одинаковое у всех, то тогда случайным образом (или первого попавшегося). Это на ура решило бы ситуацию, когда двое морят голодом одного, сидящего между ними. А на случай, когда все проголодались одновременно и одинаково, то выбирается первый попавшийся как приоритетный. |
|
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| К тому же... Почему это в обероне семафор называется вилкой? |
|
Комментарии: 952
| Хм, а как это вот с таким решением связывать?
Там есть такое: PROCEDURE TakeForks (i: INTEGER); BEGIN {EXCLUSIVE} Forks[i].Take; Forks[(i+1)MOD N].Take END TakeForks;
И это понятно (ибо EXCLUSIVE). В отличие от LOOP .... Think.... fork[first].P; fork[second].P; .... Eat .... fork[first.V; fork[second].V END
Я в трех соснах запутался или во втором случае ошибка? |
|
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| написал(а) ... fedukoff, ты только что усложнил модель философов и не создал решение, а изменил постановку задачи. Хотя, возможно, и приблизил ее к условной реальности. В задаче все одинаково голодны, когда голодны. Но иногда они думают.
Я почитал различные решения этой задачки в инете... Там у некоторых философы еще до кучи гуляли, а в столовую пускали максимум 4 штуки, чтобы от конфликтов избавиться, для чего ввели понятие "слуга" который закрывал дверь и не пускал одного философа, если в столовой уже четыре... А ты усложнил... |
|
Комментарии: 558
| помоему в оригинале философов было пять. Или это у Танненбаума пять. |
|
Комментарии: 558
| Кстати я тоже думаю, что усложнять не нужно, достаточно ввести понятие уровня голодности, или времени ожидания вилки, что почти то же самое... и все будет честно. |
|
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| Гыгы... Ты говоришь, подтверждая слова Романа, что усложнять не нужно, но вводишь "уровень голодности" (пару постов выше я назвал "силой голода"), что Роман назвал усложнением... |
|
Комментарии: 952
| Не пускать философа - нормальный ход, приоритетов от этого не появляется. А вот с силой голода появляется приоритетность и от этого все усложняется. Впрочем, тут есть момент того, откуда она берется - либо она является свойством философа (когда он орет "жрать хочу"), либо же это пытается вычислить сама наша система, дабы предотвратить длительное голодание отдельных особей. Во втором случае в постановке появляется некое требование о "справедливости" распределения вилок-спагетти.
Решение есть у Таненбаума, действительно, на 150 и далее страницах.
Решение из Active Oberon, кстати, корректное. Ну, кто б сомневался... Фишка в порядке взятия вилок, все берут сначала левую, а потом правую, а один сначала правую, а потом левую:
IF id # NofPhilo-1 THEN first := id; second := (id+1) ELSE first := 0; second := NofPhilo-1 END
Сосны-то аж три штуки, надо бы и поплутать. |
|
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| Если честно, я предполагал, что не важно, правша или левша философ... Они даже могут менять свою полярность переодически. Они могут насыщаться различное время, они могут отдыхать не обязательно строго определенное время... В общем, нам, их, философов не понять и не систематизировать. Но, мы можем предположить, что они гуманные существа, и если один занял вилку, а второй попросил его освободить, то силой они этот вопрос решать не станут. А "сила голода" это свойство именно философа, ибо макаронам пофиг, на сколько голодная тварь их будет поедать. Мне кажется, "ОСЛОЖНЯТЬ" это как раз вводить новые объекты (слуги, двери) и действия с ними связанные, что влечет за собой реакцию на эти действия у связаных объектов. А это уже цепная реакция, что чревато. Добавление одного свойства и одного действия объекту "философ", тянут за собой гораздо меньше кода, а следовательно ошибок и времени... |
|
Комментарии: 558
| Можно даже упрощать! А нехай все едять одной вилкой! пусть медленнее, зато проблем нету. к тому же есть чужой вилкой - негегеенично. |
|
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| НА самом деле если расставить все на свои места, то нужно рядом с каждой вилкой по одной ложке положить. Дело в том, что, на сколько я знаю, спагетти едят именно вилкой и ложкой, а не двумя вилками... Так что задача изначально не верная Ну и проблема тогда сама собой отпадает.... Правда, мне кажется, что таки их отпускать погулять переодически надо, а то от такой диеты они вскоре за столом не помястятся. |
|
Комментарии: 952
| fedukoff написал(а) ... Если честно, я предполагал, что не важно, правша или левша философ... А оно и так все равно, ведь нужны обе вилки. Просто если все сначала схватят левую вилку, то далеко они не продвинутся... А так один пытается овладеть правой. И все работает. |
|
Комментарии: 178
Зарегистрирован: 24.03.2005 17:32
| Было бы большой ошибкой расчитывать что именно так и должно происходить (все берут левую, а один правую). Ведь всем известно о цикле жизни ПО. И вдруг, в один момент окажется так что по какой то логике все должны брать в первую очередь только левую вилку. Так что лучше уж стразу заложить им способноть выходить из конфликтных ситуаций. |
|
Комментарии: 2
Зарегистрирован: 30.05.2005 10:28
| Тоже мнение http://www.delphikingdom.com/asp/talktopic.asp?ID=339 (N 703) |
Комментарии доступны только авторизованным пользователям, авторизуйтесь или зарегистрируйтесь на сайте здесь
|