Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА
№ 1636 10-01-2007 14:25 | |
Ответ на »сообщение 1622« (AVC)
___________________________
Ответ на »сообщение 1620« (Сергей Губанов)
___________________________
Ответ на »сообщение 1586« (Илья Ермаков)
PROCEDURE (w: WeakPointer) Target* (OUT ptr: ANYPTR), NEW;
VAR adr: INTEGER;
BEGIN
adr := w.adr; (* make anchor in stack, to prevent concurrent GC *)
ptr := S.VAL(ANYPTR, w.adr);
adr := 0
END Target;
А почему нельзя просто так:
PROCEDURE (w: WeakPointer) Target* (OUT ptr: ANYPTR), NEW;
BEGIN ptr := SYSTEM.VAL(ANYPTR, w.adr);
END Target;
?
Наверное, потому что стек обрабатывается консервативно, а куча -- прецизно.
У меня другой вопрос: а когда вы (оба) NIL возвращать собираетесь?
Строка помещения якоря в стек необходима на тот случай, если произойдет прерывание на сборку мусора в середине инструкции ptr := S.VAL(ANYPTR, w.adr), и на объект больше не осталось ссылок. Тогда адрес объекта будет успешно извлечен в регистр, потом сборщик мусора, не найдя якорей на объект, обнулит указатель и удалит объект, но ведь адрес объекта уже был извлечен и будет возвращен... Поэтому до взятия адреса создаем якорь в стеке.
NIL явно не возвращается, w.adr обнуляется сборщиком мусора, когда объект более не имеет якорей.
№ 1635 10-01-2007 13:57 | |
Ответ на »сообщение 1634« (Снегурочка)
___________________________
Оберону в этом плане не повезло. В Америке была расписанная под орех Java, а Европе на Оберон (как и на все другое, даже менее ценное, было наплевать).
даже НЕ менее ценное
№ 1634 10-01-2007 13:54 | |
Ответ на »сообщение 1631« (pepper)
___________________________
Видимо играет роль совокупность факторов. Я, например, не слышал, чтобы кто-нибудь "раскручивал" Питон. Но тем не менее он стал популярен в мэйнстриме.
Python вовремя занял пустующую нишу: интерпретируемый скриптовый язык, созданный с целью создания интерфейсной прослойки для работы с распределенной Unix-подобной ОС Amoeba (известного Эндрю Таненбаума), оказался удачен для web-программирования и вторгся в епархию Perl почти одновременно с PHP.
Автор языка, Гвидо ван Россум, работал в группе по созданию Amoeba в Национальной исследовательском центре в Амстердаме. Он имел опыт работы с Modula-2+ и беседовал с разработчиками Modula-3 (языка, вышедшего из экспериментов с Modula-2+) из DEC Systems Research Center. Вдохновленный идеями Modula-3, Гвидо ван Россум загорелся желанием реализовать их на уровне интерпретируемого языка для конкретной задачи работы с Amoeba, где возможности "местного" языка ABC были явно недостаточны. Так примерно в 1990-1991 гг. (на 4 года раньше своего конкурента - PHP Расмуса Лердорфа) и возник Python.
Затем была пауза до 1995 г., когда уже в Америке Гвидо ван Россум продолжил развитие Python'а. В районе 2000 г. в это дело вложила денюжку BeOpen.com. Потом уже Digital Creations. Потом где-то в 2001-2002 гг. все было переведено силами Zope, O'Reilly и ASTi (и примкнувшего к ним Google) на известную схему: сформировать "некоммерческий" фонд (Python Software Foundation) и толкать софт как бесплатный, беря свой навар с услуг. Благо Интернет давал возможность формировать рынок таких услуг относительно малыми средствами (да и NASA подмогла). Так по сути европейский язык "об'американили", раскрутив почти с нуля.
Оберону в этом плане не повезло. В Америке была расписанная под орех Java, а Европе на Оберон (как и на все другое, даже менее ценное, было наплевать).
№ 1633 10-01-2007 11:25 | |
Ответ на »сообщение 1627« (Jean)
___________________________
Понимаю, что история не знает понятия "если бы", что получилось, то получилось. Только вот тень на плетень наводить не надо и выдавать желаемое за действительное. А то молодежь и в самом деле подумает, что С/C++ нет никакой альтернативы.
Я не говорил, что нет альтернативы C/C++. Мало того, я считаю, что C/C++ будут продолжать сдавать свои позиции в мэйнстриме. Есть жаба, есть шарп, есть скриптовые языки. Есть оберон. У всех свои достоинства и недостатки.
№ 1632 10-01-2007 11:21 | |
Ответ на »сообщение 1623« (AVC)
___________________________
Ответ на »сообщение 1615« (Alexey Veselovsky)
___________________________
С++ не стал бы столь популярным если бы он не был совместим с С. Увы.
Любопытно, почему несовместимость с Си не помешала, к примеру, популярности Явы?
Видимо потому что ява - изначально "карманный" язык одной крупной корпорации со всеми растекающимися отсюда последствиями, вроде сразу мощного фреймворка, компилятора, рекламы и т.п. и т.д. Кстати, успех той же явы отчасти базируется на успехе С++ и С ибо синтаксис весьма схож с С++ синтаксисом. +оттуда убрали то что больше всего мешало при программировании на оном С++. Также следует заметить, что ява как таковая - не шибко популярна. Популярны РЕШЕНИЯ на основе явы. В т.ч. сановские решения. На десктопе например, ява так и не прижилась.
С++ же не был изначально "карманным" языком какой-либо компании. Возник почти спонтанно. Да и сейчас ни одна из компаний не владеет "контрольным пакетом акций" C++, В отличае от той же явы или C#.
С - как тут уже говорилось, популярен благодаря Unix-системам. Кстати, С до сих пор более популярный язык (в том же линуксе например) чем С++ (если считать в строчках кода ПО что идет в дистрибутивах линуксовых). Причем значительно более популярный (или рапространенный...).
Если бы вместо С использовался какой-нибудь Оберон, то дыр в ОС было бы много меньше. Ибо наиболее частые дыры связаны именно с выходом за пределы массива. Конечно даже при написании ОС на Обероне, система должна использовать аппаратную защиту памяти и проч. Т.е. разные программы должны работать в РАЗНЫХ адресных пространствах. И с разным уровнем привилегий. Иначе будет плохо... Ибо вредоносный код может сделать в такой (бес защиты) что угодно.
№ 1631 10-01-2007 11:16 | |
Ответ на »сообщение 1625« (AVC)
___________________________
Т.е. дело все-таки не в совместимости с Си, а, например, в "фирменной" поддержке?
Видимо играет роль совокупность факторов. Я, например, не слышал, чтобы кто-нибудь "раскручивал" Питон. Но тем не менее он стал популярен в мэйнстриме.
№ 1630 10-01-2007 10:21 | |
>>>Вирт может делать со своими языками что угодно, дотачивая их до идеала, все
>>>равно ими никто не пользуется.
Между прочим, неплохая вещь - "дотачивать язык до идеала". Именно то, чего не хватает промышленности :)) В общем в университетах есть мозги, но нет денег, а в промышленности наоборот - есть деньги, мозги, конечно, тоже есть, только работать им не дают - они может и хотят "доточить" до идеала, но надо доллары "печь", пока поезд не ушел, не до идеалов тут :)
На счет "никто не пользуется": сами не хотите или начальство не разрешает. Интересно, как это у "орловцев" такая анархия получается - всем приказали идти "в ногу", а они поперек "толпы" лезут. Не иначе, как у Путина получили разрешение на использование Оберонов в российской индустрии. Я вот тоже себя немного "преступником" чувствую.
№ 1629 10-01-2007 09:52 | |
Ответ на »сообщение 1626« (Сергей Губанов)
___________________________
Если это вопрос ко мне, то я его не понял.
Вопрос к обоим, хотя скорее - к Илье.
Слабый указатель должен возвращать NIL (NULL), если объект больше не существует.
В приведенном наброске кода этого не видно; просто было интересно узнать какой механизм предполагается для этого использовать.
№ 1628 10-01-2007 09:46 | |
Ответ на »сообщение 1626« (Сергей Губанов)
2) Если ему есть до этого дело (что я абсолютно не понимаю), то почему тогда ptr := S.VAL(ANYPTR, w.adr), а не ptr := S.VAL(ANYPTR, adr)?
Хотя, действительно, ptr := S.VAL(ANYPTR, adr), наверное, вообще бессмысленно. Вобщем, я ничего не понимаю.
№ 1627 10-01-2007 09:45 | |
>>>И goto присутсвует в языке C++ не потому, что Страуструп не понимает
>>>прописных истин, преподносимых Виртом, а потому что иначе язык C++ ждала
>>>бы судьба оберонов.
А вот тут тебя точно "занесло".
Уж тебе, как профи, должно быть хорошо известно, что и почему было сделано.
Удачная судьба С и выросшего из него С++, конечно, имеет свои причины, но только "бедный" оператор goto и "замечательные качества" языка здесь совершенно не при чем. На С была написана успешная операционная система, которая, как говорится, "пошла". Вот и вся причина его "взлета". На определенном этапе развития языков программирования использовать язык, на котором написана сама операционка, оказалось удобным. А дальше уже пошла просто "раскрутка" по американскому варианту (вау, пейте только кока-колу, пишите только на С). И ты прекрасно понимаешь, что если бы история пошла по другому сценарию и для написания первых юниксов была бы выбрана, к примеру, виртовская Модула, то ты бы сейчас работал на каком-нибудь Оберон+ или Модуле#.
Понимаю, что история не знает понятия "если бы", что получилось, то получилось. Только вот тень на плетень наводить не надо и выдавать желаемое за действительное. А то молодежь и в самом деле подумает, что С/C++ нет никакой альтернативы.
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|