| 
czarker
 | 
  Friday 18.02.2005 11:27
 | 
 
 | 
 
 
 | 
 
 
Зарегистрирован: Monday 10.01.2005 17:26 
Местоположение: Москва, т.д. 
Сообщений - 48 
 | 
Нет, товарищи! У вас получается, что Trusted- любой компилятор языка высокого уровня. Но в Windows полным-полного лагучего и, в некоторых случаях, вредоносного софта на языках высокого уровня. И т.д.  
   
 Я думал, что речь идёт об особом компиляторе, особо устроенном, имеющим интеллектуальную систему проверки на "агрессивность" кода. Ну а так...  
   
 И вообще, ваш идеал, похоже, - PalmOS4. Пейджер, который вообще не позволяет выйти за отведённые рамки. Нужен тебе 1 байт или 100 Кб - всё получай боксами по 40 (по-моему) Кб.  
 Полный trusted. Даже на C.
  Но это всё, конечно, моё сугубо личное мнение.
 | 
 
| 
Наверх
 | 
 | 
 
 
 
| 
AlexanderK
 | 
  Friday 18.02.2005 11:44
 | 
 
 | 
 
 
 | 
 
Зарегистрирован: Tuesday 05.10.2004 13:47 
Местоположение: 2:5020/829.5 
Сообщений - 49 
 | 
Я не вижу смысла строить систему именно в виде компилятора. Это ничего не даст.
 | 
 
| 
Наверх
 | 
 | 
 
 
 
| 
AlexanderK
 | 
  Friday 18.02.2005 11:55
 | 
 
 | 
 
 
 | 
 
Зарегистрирован: Tuesday 05.10.2004 13:47 
Местоположение: 2:5020/829.5 
Сообщений - 49 
 | 
<captain cobalt>  
 Замечательно!   
 Вот хорошая ссылка по теме:   
 http:/qnx.org.ru/index.php?option=com_minibb&action=vthread&forum=4&topic=2849   
 Краткое содержание: "Как мне инкапсулировать pthread-ы?" - спрашивает некто. "Используй Active Objects" - отвечает Оlej, и отмечает существенное отличие AO от "процессов".  
   
 А лучше объекты типа "COM-server".
 | 
 
| 
Наверх
 | 
 | 
 
 
 
| 
KSLcom
 | 
  Friday 18.02.2005 16:59
 | 
 
 | 
 
 
 | 
 
Зарегистрирован: Saturday 29.01.2005 20:47 
Сообщений - 5 
 | 
мдя... ну вы тут и нафлеймили   ))  
 ради поддержания образовательного флейма подкину ссылочку http://rsdn.ru/Forum/Message.aspx?mid=994725#994725 Там народ обсуждает необходимость защиты памяти в Оберон-ОС.  
   
 А если по существу... Вот если кто то сейчас собирается писать ОС, то хорошо если вменяемый результат будет к году 2010 и ОС будет эксплуатироваться лет эдак 10-15 на компах с процессором(ами) от 5 гигагерц, памятью от 8 гигабайт в которой живут десятки тысяч процессов/потоков (активных объектов). Неужели работа всего этого хозяйства будет зависеть от внимательности програмиста? Врятли. В Microsoft это тоже поняли и родили .NET, которая, я думаю, в будующем полностью заменит Win32API и вытеснит unmanaged код, оставив ему место в драйверах и т.п. Но у microsoft это всё пока впереди, а в BlueBottle эти идеи уже реализованы как 5 лет. Конешно BlueBottle и Windows не сравнимы, но ведь BluеBottle это типа прототип системы построенной на новой концепции.
 | 
 
| 
Наверх
 | 
 | 
 
 
 
| 
AlexanderK
 | 
  Friday 18.02.2005 18:14
 | 
 
 | 
 
 
 | 
 
Зарегистрирован: Tuesday 05.10.2004 13:47 
Местоположение: 2:5020/829.5 
Сообщений - 49 
 | 
Тогда и писать по большому счёту ничего не нужно, всё равно всё MS со временем напишет. И .Net и WinFS и всё остальное прочее. Подводим итог - проект успешно завершён   
 | 
 
| 
Наверх
 | 
 | 
 
 
 
| 
captain cobalt
 | 
  Wednesday 23.03.2005 18:45
 | 
 
 | 
 
 
 | 
 
Зарегистрирован: Sunday 15.02.2004 03:47 
Сообщений - 49 
 | 
   Vadim Ushakov писал(а): ... Динамических проверок не требуется?   
  Vadim Ushakov писал(а): ... Кстати, приведенная цитата означает, что runtime Оберона все-таки выполняет динамические проверки типов.   
 Одно дело указатели, другое дело типы.  
 Если смастерить указатель невозможно, то не нужно проверять их корректность во время исполнения.  
 Динамическая типизация в Обероне реализуется в явном виде с помощью IS и WITH. В остальных случаях контроль типизации может быть произведён статически, без накладных расходов в рантайме.  
  AlexanderK писал(а): ... Я не вижу смысла строить систему именно в виде компилятора. Это ничего не даст.   
 Это даст новые возможности за счёт тесного взаимовыгодного сотрудничества компилятора и рантайма. Не обязательно, чтобы компилятор был только для одного языка. Достаточно лишь, чтобы используемые языки были сильно типизированными и обладали прозрачностью ссылок.  
  czarker писал(а): ... Я думал, что речь идёт об особом компиляторе, особо устроенном, имеющим интеллектуальную систему проверки на "агрессивность" кода. Ну а так...   
 Так и есть.  
 Фактически, речь идёт о языке программирования, на котором невозможно написать программу, которая сможет произвольно обратиться к чужим данным в общем адресном пространстве.  
   
 Компилятор здесь "особый" в том смысле, что загружать можно только код, полученный с помощью этого компилятора. И нельзя загрузить собственноручно изготовленный машинный код.  
  KSLcom писал(а): ... мдя... ну вы тут и нафлеймили     ))   
 ради поддержания образовательного флейма подкину ссылочку    
 Хорошая ссылочка. Давненько не доводилось читать форум rsdn.  
  KSLcom писал(а): ... В Microsoft это тоже поняли и родили .NET, которая, я думаю, в будующем полностью заменит Win32API и вытеснит unmanaged код   
 А многие до сих пор не верят в это.     
  KSLcom писал(а): ... Но у microsoft это всё пока впереди, а в BlueBottle эти идеи уже реализованы как 5 лет. Конешно BlueBottle и Windows не сравнимы, но ведь BluеBottle это типа прототип системы построенной на новой концепции.   
 Вот меня и интересует, не появились ли здесь сторонники (или противники) Bluebottle? A?  
 Поддерживаю утверждение о том, что это технологический лидер на данный момент.     
    [ Редактирование Wednesday 23.03.2005 19:13 ]
 | 
 
| 
Наверх
 | 
 | 
 
 
 
| 
Vadim Ushakov
 | 
  Wednesday 13.04.2005 10:32
 | 
 
 | 
 
 
 | 
 
Зарегистрирован: Monday 07.02.2005 04:57 
Местоположение: Россия, Красноярск 
Сообщений - 35 
 | 
 Кажется, миллион лет назад я писал:  Vadim Ushakov писал(а): ... если использовать парадигму единого адресного пространства, то можно навсегда попрощаться с подсистемой безопасности - в рамках этой модели ее реализовать невозможно Я пытался найти принципиальные (неустранимые) уязвимости такой модели, но теперь вынужден признать, что построение системы вокруг ЯВУ-компилятора - это хорошая мысль. Я попробовал спроектировать нечто объектно-ориентированное поверх микроядра с класическим IPC на основе сообщений, но столкнулся с тем, что нижележащие абстракции не удается "упрятать" в ОО-оболочку и они все время напоминают о себе. В итоге у меня начало получаться нечто монструозное, типа COM. Переход же к single-address-space системе снимает все проблемы. Можете считать этот абзац извинением перед captain cobalt и покаянием в грехах   .  
   
 Какой ЯВУ выбрать в качестве основного языка системы? Я думаю, выбор не особо велик: Oberon-2, Active Oberon, или даже не очень широко известный O2M. Последний, впрочем, использует процедурно-параметрическую модель и эволюцию программ снизу вверх, в то время как классическое ООП основано на виртуальных методах и эволюции сверху вниз (от абстрактного к конкретному).  
   
 На мой взгляд, недостатком Оберона является отсутствие структурной обработки исключений и абстракции подтипов (таких как подтипы в Ада). Кстати, кто-нибудь знает, где можно (если вообще можно) достать исходные тексты какого-либо из Оберонов?  
   
 to captain cobalt:  
   
  captain cobalt писал(а): ... Так ведь нет.   
 Всё проверки происходят во время компиляции. На самом деле не все так однозначно. Можно показать сущность динамических проверок на таком примере (используется Ада-подобный синтаксис) :  
 subtype AA is INTEGER range 0..10 ;  
 subtype BB is INTEGER range -10..-1 ;  
 subtype CC is INTEGER range 0..20 ;  
 a: AA; b: BB; c: CC;  
 b := a; c := a; a := c;  
 Присваивание b := a явно бессмысленно, поскольку диапазоны подтипов не пересекаются, следовательно его ошибочность можно определить во время компиляции. Присваивание c := a можно выполнить всегда, поскольку CC включает в себя все возможные значения AA, динамических проверок не требуется. Однако присваивание a := c нуждается в динамических проверках, и, если присваиваемое значение не входит в интервал 0..10, будет инициировано исключение.  
 С объектами, массивами и указателями точно также - часть присваиваний всегда будет нуждаться в динамических проверках.  
   
 Давайте пользоваться настоящими высокоуровневыми языками, а не "высокоуровневым ассемблером Си"   .  
 
 | 
 
| 
Наверх
 | 
 | 
 
 
 
| 
Vadim Ushakov
 | 
  Wednesday 13.04.2005 10:36
 | 
 
 | 
 
 
 | 
 
Зарегистрирован: Monday 07.02.2005 04:57 
Местоположение: Россия, Красноярск 
Сообщений - 35 
 | 
  captain cobalt писал(а): ...  KSLcom писал(а): ... В Microsoft это тоже поняли и родили .NET, которая, я думаю, в будующем полностью заменит Win32API и вытеснит unmanaged код А многие до сих пор не верят в это.  По поводу unmanaged code. Юникс целиком написана на Си, который, как известно, не поддерживает автоматическую проверку выхода индекса за границы массива. Из-за этого практически каждый день в системе обнаруживают очередную дыру, которую потом спешно заделывают, а бедным админам приходится ставить на систему кучу заплаток. Всем ясно, что виноваты особенности языка программирования, но никому не приходит в голову сказать: "Давайте писать на более безопасном языке." Почему? Я часто задавал этот вопрос юниксойдам и обычно мне отвечали что: 1) все так делают и 2) нечего задавать глупые вопросы. Либо же начинали рассуждать о производительности и о том, какой быстрый код генерирует компилятор Си.  
   
 Чтобы делали все эти специалисты по сетевой безопасности, консультанты всех мастей, авторы книг "Техника сетевых атак" и им подобные личности, если бы люди вдруг начали пользоваться системой, в которой В ПРИНЦИПЕ И ВООБЩЕ не существует проблемы переполнения буфера? Вот поэтому unmanaged code до сих пор жив.
 | 
 
| 
Наверх
 | 
 | 
 
 
 
| 
captain cobalt
 | 
  Wednesday 13.04.2005 18:49
 | 
 
 | 
 
 
 | 
 
Зарегистрирован: Sunday 15.02.2004 03:47 
Сообщений - 49 
 | 
  Vadim Ushakov писал(а): ... Я пытался найти принципиальные (неустранимые) уязвимости такой модели, но теперь вынужден признать, что  построение системы вокруг ЯВУ-компилятора - это хорошая мысль. Я попробовал спроектировать нечто объектно-ориентированное поверх микроядра с класическим IPC на основе сообщений, но столкнулся с тем, что нижележащие абстракции не удается "упрятать" в ОО-оболочку и они все время напоминают о себе. В итоге у меня начало получаться нечто монструозное, типа COM. Переход же к single-address-space системе снимает все проблемы. Можете считать этот абзац извинением перед captain cobalt и покаянием в грехах     .   Принимается.     
 Будем Bluebottle напильником обрабатывать?     
  Vadim Ushakov писал(а): ... Какой ЯВУ выбрать в качестве основного языка системы? Я думаю, выбор не особо велик: Oberon-2, Active Oberon, или даже не очень широко известный O2M. Последний, впрочем, использует процедурно-параметрическую модель и эволюцию программ снизу вверх, в то время как классическое ООП основано на виртуальных методах и эволюции сверху вниз (от абстрактного к конкретному).  Active Oberon - хорошо.  
 Хотелось бы "Active Component Pascal".     
  Vadim Ushakov писал(а): ... На мой взгляд, недостатком Оберона является отсутствие структурной обработки исключений и абстракции подтипов (таких как подтипы в Ада).  Это тоже очень флудерастическая тема (а сейчас по сути идёт двенадцатая страница оффтопика, надо бы конкретных тем наделать). Есть весьма весомые доводы с другой стороны.  
  Vadim Ushakov писал(а): ... Кстати, кто-нибудь знает, где можно (если вообще можно) достать исходные тексты какого-либо из Оберонов?  А что, там-где-надо нету? Сейчас посмотрю.  
  Vadim Ushakov писал(а): ... На самом деле не все так однозначно. Можно показать сущность динамических проверок на таком примере (используется Ада-подобный синтаксис) :   
 subtype AA is INTEGER range 0..10 ;   
 subtype BB is INTEGER range -10..-1 ;   
 subtype CC is INTEGER range 0..20 ;   
 a: AA; b: BB; c: CC;   
 b := a; c := a; a := c;   
 Присваивание b := a явно бессмысленно, поскольку диапазоны подтипов не пересекаются, следовательно его ошибочность можно определить во время компиляции. Присваивание c := a можно выполнить всегда, поскольку CC включает в себя все возможные значения AA, динамических проверок не требуется. Однако присваивание a := c нуждается в динамических проверках, и, если присваиваемое значение не входит в интервал 0..10, будет инициировано исключение.   
 С объектами, массивами и указателями точно также - часть присваиваний всегда будет нуждаться в динамических проверках.  Да, часть присваиваний всегда будет нуждаться в динамических проверках.     
 Динамическая проверка диапазонов - это замечательная вещь в Ada. Однако, как известно, в Обероне специально были исключены типы-диапазоны Паскаля (тоже неоднозначное решение).  
  Vadim Ushakov писал(а): ... Давайте пользоваться настоящими высокоуровневыми языками, а не "высокоуровневым ассемблером Си"     .   Аплодисменты.     
  Vadim Ushakov писал(а): ... "Давайте писать на более безопасном языке." Почему? Я часто задавал этот вопрос юниксойдам и обычно мне отвечали что: 1) все так делают и 2) нечего задавать глупые вопросы. Либо же начинали рассуждать о производительности и о том, какой быстрый код генерирует компилятор Си.  Наверное надо им показывать вот это. Там сравнивается производительность state-of-the-art компиляторов си++ с сугубо исследовательскими компиляторами Оберона собственно из школы Вирта рук нескольких человек (а также компиляторами некоторых других языков). Сделать вывод о том, каковы были бы способности оптимизаторов Оберона, если бы в них была вложена хотя бы малая доля ресурсов, потраченных на оптимизаторы си++. Впрочем, говорят способности XDS впечатляют...
 | 
 
| 
Наверх
 | 
 | 
 
 
 
| 
pumba103
 | 
  Wednesday 13.04.2005 19:20
 | 
 
 | 
 
 
 | 
 
Зарегистрирован: Monday 08.11.2004 09:39 
Сообщений - 9 
 | 
Как человек, три месяца назад инициировавший эту тему, с удовольствием (искренне) соглашаюсь, что повидимому лучшим языком для напмсания новой операционной системы является Oberon. Выбирая диалект языка, мы в свое время (два года назад) остановились на Oberon-2 в версии Oberon PC Native по следующим соображениям - это зрелый, устоявшийся диалект языка, обладающий всеми средствами для написания ОС. Основной разработчик компилятора - Patrik Reali - покинул ETHZ в 2002 и в настоящее время ActiveOberon похоже заброшен и основные усилия направлены на Zonnon. Что касается напильника и BlueBottle, то представляется более перспективным создание своей системы "по мотивам" Oberon и BlueBottle.  
 Но естественно это мое личное мнение.  
 
 | 
 
| 
Наверх
 | 
 | 
 
 
 
Модераторы: Roman I Khimov, netwizard.  | 
 | 
 
 
 
 |