OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 00:18

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 125 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Пятница, 02 Ноябрь, 2007 10:45 

Зарегистрирован: Среда, 31 Октябрь, 2007 18:58
Сообщения: 252
Откуда: Austria, Bruck
2Vlad ИМХО Ваша позиция странна.

Вы согласились, что не системщик, и в то же время, пытаетесь вести дискусию, о применимости инструмента (Оберон) для системных задач (написание кода ОС, и не важно дополнение кода уже существующего или вообще новой ОС).

Код:
void *memory = kernel_alloc(sizeof(some_object));


Улыбнуло :) Может загляните в исходники ядра, а? Повторюсь, смотрите книгу Кернигана и Риси "Язык С", раздел 5.4. http://www.lib.ru/CTOTOR/kernigan.txt. Принцип изложенный в этой книги лежит в основе большинства манагеров памяти ОС.

Думая никто не будет тратить время на написание БЕСПОЛЕЗНОГО кода в виде манагера памяти на Обероне.

Считаете, что этот язык - brainfake? Вас никто не заставляет писать на Обероне. А тем людям, которые поняли его элегантность и простоту, Ваши доводы, по меньшей мере, покажутся наивными.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Пятница, 02 Ноябрь, 2007 18:37 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
hothing писал(а):
пытаетесь вести дискусию, о применимости инструмента (Оберон) для системных задач (написание кода ОС, и не важно дополнение кода уже существующего или вообще новой ОС).


Я видел доводы Линуса. И этим доводам я доверяю больше, нежели вашим или даже Вирта. Потому что этот человек имеет реальный опыт создания реальной ОС, в отличие от...

hothing писал(а):
Код:
void *memory = kernel_alloc(sizeof(some_object));

Улыбнуло :) Может загляните в исходники ядра, а? Повторюсь, смотрите книгу Кернигана и Риси "Язык С", раздел 5.4.


Я видел исходники ядра линукса. Я представляю как работают менеджеры памяти (и я их сам писал). Если хочется меня куда-то послать или уличить в незнании чего-то, то давайте ссылки на конкретные вещи, а не на описание примитивного менеджера памяти.

hothing писал(а):
Считаете, что этот язык - brainfake? Вас никто не заставляет писать на Обероне. А тем людям, которые поняли его элегантность и простоту, Ваши доводы, по меньшей мере, покажутся наивными.


Я считаю (всего лишь), что этот язык не подходит для написания ядреного кода в линуксе. А люди, которые поняли его элегантность и простоту, до сих не написали ничего такого ядреного для линукса (дайте конкретную ссылку, если я не прав). Да что там ядреного, даже линуксового компилятора КП (о котором здесь говорят уже столько лет) до сих пор не написали.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Пятница, 02 Ноябрь, 2007 20:49 

Зарегистрирован: Среда, 17 Январь, 2007 03:59
Сообщения: 225
Vlad писал(а):
Да что там ядреного, даже линуксового компилятора КП (о котором здесь говорят уже столько лет) до сих пор не написали.


Дайте ссылку на ваш компилятор!!!
Вы то уж наверное написали его.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Пятница, 02 Ноябрь, 2007 21:17 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Vlad писал(а):
Я видел доводы Линуса. И этим доводам я доверяю больше, нежели вашим или даже Вирта. Потому что этот человек имеет реальный опыт создания реальной ОС, в отличие от...
А что, Вирт уже никогда не делал двух своих операционок?
Цитата:
Я считаю (всего лишь), что этот язык не подходит для написания ядреного кода в линуксе. А люди, которые поняли его элегантность и простоту, до сих не написали ничего такого ядреного для линукса (дайте конкретную ссылку, если я не прав). Да что там ядреного, даже линуксового компилятора КП (о котором здесь говорят уже столько лет) до сих пор не написали.
А кому он нужен, этот ваш линукс? :о))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Пятница, 02 Ноябрь, 2007 22:46 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Я что-то не понимаю, о чем с таким жаром спорят в этой ветке.

Во-первых, кто сказал, что для системного программирования на Обероне не должен применяться псевдомодуль SYSTEM со всеми его возможностями?
Оберон помогает максимально ограничить потребность в низкоуровневом программировании и ограничить его низкоуровневыми (системными) модулями.
Никто и не ставит невозможную задачу вообще обойтись на системном уровне без низкоуровневого программирования.
Низкоуровневое программирование на Обероне вполне возможно. (Или с этим кто-то спорит?)
Просто Оберон проводит "политику апартеида" по отношению к "туземному" низкоуровневому программированию. :)

Распределение памяти из отдельных статических или динамических массивов памяти порой используется на Си именно для организации примитивной сборки мусора (по окончании какого-то этапа работы массив просто очищается полностью, вот и "собрали мусор" :) ), используя специально написанные для этого альтернативы malloc.

Что касается нежелательности в отдельных случаях GC, то его можно предотвратить, создав простенький модуль вроде:
Код:
MODULE SimpleMemAllocator;

   TYPE
      Object* = POINTER TO RECORD
         data*: INTEGER; (* здесь должны быть реальные данные *)
      END;
   
      MemBlock* = POINTER TO RECORD
         count: INTEGER;
         stack: POINTER TO ARRAY OF Object;
      END;
      
   PROCEDURE (me: MemBlock) Alloc* (): Object, NEW;
      VAR p: Object;
   BEGIN
      IF me.count > 0 THEN
         DEC(me.count);
         p := me.stack[me.count];
      END;
      (* если p = NIL, то здесь можно увеличить размер me.stack *)
      RETURN p
   END Alloc;
   
   PROCEDURE (me: MemBlock) Free* (p: Object), NEW;
   BEGIN
      IF me.count < LEN(me.stack) THEN
         me.stack[me.count] := p;
         INC(me.count)
      END
   END Free;
   
   PROCEDURE NewMemBlock* (size: INTEGER): MemBlock;
      VAR mem: MemBlock; i: INTEGER;
   BEGIN
      ASSERT(size > 0);
      NEW(mem); NEW(mem.stack, size);
      mem.count := 0;
      FOR i := 0 TO size-1 DO NEW(mem.stack[i]) END;
      RETURN mem;
   END NewMemBlock;
      
END SimpleMemAllocator.

Идея в том, что Free сохраняет указатель на блок памяти в специальном пуле таких указателей (реализация его в виде стека, думается, наиболее эффективна), избегая сборки мусора и позволяя использовать этот блок повторно через Alloc.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Суббота, 03 Ноябрь, 2007 00:12 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Vlad писал(а):
Я видел доводы Линуса. И этим доводам я доверяю больше, нежели вашим или даже Вирта. Потому что этот человек имеет реальный опыт создания реальной ОС, в отличие от...

И в чем принципиальный прорыв по сравнению с UNIX?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Суббота, 03 Ноябрь, 2007 00:44 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Geniepro писал(а):
А что, Вирт уже никогда не делал двух своих операционок?


Реальных? Которые можно пойти, скачать, установить? Нет, не делал. А "специализированных" только ленивый не делал. Вон, даже на хаскеле чего-то есть.

Цитата:
А кому он нужен, этот ваш линукс? :о))


Это уже другой вопрос. Не будем отвлекаться :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Суббота, 03 Ноябрь, 2007 01:47 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Vlad писал(а):
Geniepro писал(а):
А что, Вирт уже никогда не делал двух своих операционок?

Реальных? Которые можно пойти, скачать, установить? Нет, не делал. А "специализированных" только ленивый не делал.

И Вы в том числе? :)

Торвальдс тоже по большому счёту не делал. Большую часть работы сделало сообщество, а не он (я про ядро). Более того, он занимается только ядром, ко всей остальной обвязке он вообще никакого отношения не имеет. А вот Вирт с Гуткнехтом, разрабатывали систему целиком.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Суббота, 03 Ноябрь, 2007 04:13 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
AVC писал(а):
Я что-то не понимаю, о чем с таким жаром спорят в этой ветке.


О применимости оберона в программировании линуксового ядра.

AVC писал(а):
Во-первых, кто сказал, что для системного программирования на Обероне не должен применяться псевдомодуль SYSTEM со всеми его возможностями?
Оберон помогает максимально ограничить потребность в низкоуровневом программировании и ограничить его низкоуровневыми (системными) модулями.
Никто и не ставит невозможную задачу вообще обойтись на системном уровне без низкоуровневого программирования.
Низкоуровневое программирование на Обероне вполне возможно. (Или с этим кто-то спорит?)


То, что низкоуровневое программирование на обероне возможно с помощью SYSTEM никто не спорит. С помощью SYSTEM можно хоть машинными кодами забить кусок памяти и запустить на выполнение. Спорят с осмысленностью такого низкоуровнего программирования, учитывая то, что другие языки (C, например) дают делать тоже самое намного удобнее.

AVC писал(а):
Что касается нежелательности в отдельных случаях GC, то его можно предотвратить, создав простенький модуль вроде:


Из этого примера не видно, как будет распределяться память под другие типы объектов (не Object). Если для каждого типа объекта придется городить подобный аллокатор, то это несерьезно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Суббота, 03 Ноябрь, 2007 09:08 

Зарегистрирован: Среда, 17 Январь, 2007 03:59
Сообщения: 225
Штирлиц писал(а):
Vlad писал(а):
Да что там ядреного, даже линуксового компилятора КП (о котором здесь говорят уже столько лет) до сих пор не написали.


Дайте ссылку на ваш компилятор!!!
Вы то уж наверное написали его.


Да, ссылки пока не видно.
А я так надеялся на мастер-класс, компилятор КП написанный на С, чтоб у всех оберонщиков дух перехватило.


P.S. "И что ты смотришь нас сучек в глазе брата твоего, а бревна в твоем глазу не чувствуешь?" Евангелие от Матфея


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Суббота, 03 Ноябрь, 2007 18:48 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Vlad писал(а):
AVC писал(а):
Я что-то не понимаю, о чем с таким жаром спорят в этой ветке.


О применимости оберона в программировании линуксового ядра.


Какая-то экзотическая тема. :)

Vlad писал(а):
То, что низкоуровневое программирование на обероне возможно с помощью SYSTEM никто не спорит. С помощью SYSTEM можно хоть машинными кодами забить кусок памяти и запустить на выполнение. Спорят с осмысленностью такого низкоуровнего программирования, учитывая то, что другие языки (C, например) дают делать тоже самое намного удобнее.


Если бы речь шла исключительно о низкоуровневом программировании, я бы согласился.
Но здесь есть и другая сторона. Си не позволяет обособить низкоуровневое программирование, "запереть" его в отдельных модулях.
В Обероне есть возможность контролировать сложность, инкапсулировать ее "по частям" в разных модулях.

Vlad писал(а):
AVC писал(а):
Что касается нежелательности в отдельных случаях GC, то его можно предотвратить, создав простенький модуль вроде:


Из этого примера не видно, как будет распределяться память под другие типы объектов (не Object). Если для каждого типа объекта придется городить подобный аллокатор, то это несерьезно.


Это только схема. IMHO, ее нетрудно усовершенствовать для поддержки произвольных объектов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Суббота, 03 Ноябрь, 2007 19:15 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
AVC писал(а):
Vlad писал(а):
Я видел доводы Линуса. И этим доводам я доверяю больше, нежели вашим или даже Вирта. Потому что этот человек имеет реальный опыт создания реальной ОС, в отличие от...

И в чем принципиальный прорыв по сравнению с UNIX?


Принципиально - наверное никакого. А что?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Суббота, 03 Ноябрь, 2007 19:21 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Борис Рюмшин писал(а):
Vlad писал(а):
Реальных? Которые можно пойти, скачать, установить? Нет, не делал. А "специализированных" только ленивый не делал.

И Вы в том числе? :)


Нет. А вы?

Борис Рюмшин писал(а):
Торвальдс тоже по большому счёту не делал. Большую часть работы сделало сообщество, а не он (я про ядро). Более того, он занимается только ядром, ко всей остальной обвязке он вообще никакого отношения не имеет. А вот Вирт с Гуткнехтом, разрабатывали систему целиком.


И к чему эти попытка перевести стрелки на какое-то "сообщество"? Чтобы никто лично (тем более такой сишник как Линус) не стоял бросал тень на авторитет Вирта в написании ОС?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Суббота, 03 Ноябрь, 2007 19:46 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
AVC писал(а):
Vlad писал(а):
О применимости оберона в программировании линуксового ядра.

Какая-то экзотическая тема. :)


Ага. Вот и я о том же. Экзотическая :) Тем не менее, уже не первый раз затрагивается.

AVC писал(а):
Но здесь есть и другая сторона. Си не позволяет обособить низкоуровневое программирование, "запереть" его в отдельных модулях.


Хорошо. Давайте вернемся к нашему ядру и представим, что все самое низкоуровневое уже написано (на C или обероне, пока не важно). Тем не менее, код будет исполняться в ядре и на него будет накладываться определенные ограничения. GC нам по-прежнему не доступен. Даже если сделать специализированный рантайм, который будет аллоцировать память нужным образом, все равно останется потребность ее явного освобождения. Какие преимущества дает оберон без GC?

AVC писал(а):
Это только схема. IMHO, ее нетрудно усовершенствовать для поддержки произвольных объектов.


Возможно это тривиально, но я не представляю как это сделать не дублируя кода. Можно намекнуть - как? И еще, все таки хотелось бы увидеть конкретный пример (на ББ) размещения обероновского объекта в произвольном куске памяти (взятого, например, через GlobalAlloc).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Суббота, 03 Ноябрь, 2007 20:52 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Vlad писал(а):
AVC писал(а):
Vlad писал(а):
Я видел доводы Линуса. И этим доводам я доверяю больше, нежели вашим или даже Вирта. Потому что этот человек имеет реальный опыт создания реальной ОС, в отличие от...

И в чем принципиальный прорыв по сравнению с UNIX?


Принципиально - наверное никакого. А что?


В моем представлении это не столько создание ОС, сколько какая-то разновидность ее переноса.
(Т.е. не хватает оригинальности.)
Это, конечно, IMHO.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Воскресенье, 04 Ноябрь, 2007 00:22 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Vlad писал(а):
И к чему эти попытка перевести стрелки на какое-то "сообщество"? Чтобы никто лично (тем более такой сишник как Линус) не стоял бросал тень на авторитет Вирта в написании ОС?

При чём тут сишник Торвальдс? :)
Я вполне уважаю мнение другого сишника - Таненбаума, по отношению к первому... :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Воскресенье, 04 Ноябрь, 2007 00:36 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Одного я не пойму: какое отношение имеет GC Оберона (КП/BlackBox) к ядру ОС?

Во-первых, Оберон не требует обязательного наличия GC, это частность.
Во-вторых, в ядре ОС вполне можно использовать GC, но не в стандартных ядрах типа юниксовых и не стандартный GC Оберона. Для этого всё оно должно быть соответствующим образом спроектировано.

И с чего вообще такое мнение, что для написания ОС будет использоваться стандартный рантайм языка? Это нонсенс, ибо ядро (микроядро с серверами и драйверами, скажем) само себе рантайм.

Вообще, если говорить об ОС (не современных существующих, а о новых), то нужно говорить не о GC, как о частном случае, а об автоматическом централизованном управлении памятью.


Да и к вопросу об Обероне для ядра Линукса: достаточно сделать фронт-энд к GCC. Это сделать можно и достаточно быстро при наличии соответствующих ресурсов и, как скажет info21, насущной для этого необходимости.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Воскресенье, 04 Ноябрь, 2007 00:37 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Vlad писал(а):
AVC писал(а):
Это только схема. IMHO, ее нетрудно усовершенствовать для поддержки произвольных объектов.


Возможно это тривиально, но я не представляю как это сделать не дублируя кода. Можно намекнуть - как?


Например, используя метапрограммирование. (Это пока просто идея.)
По крайней мере, так работает NEW: компилятор передает кроме переменной-указателя также дескриптор типа.

Vlad писал(а):
И еще, все таки хотелось бы увидеть конкретный пример (на ББ) размещения обероновского объекта в произвольном куске памяти (взятого, например, через GlobalAlloc).

"Да пожалуйста!" (c) :)
В ББ атрибут untagged наследуется, untagged записи не собираются сборщиком мусора.
Пишем примерно такой модуль (я опустил механизмы рационального распределения и возврата памяти, т.к. не о них сейчас речь).
Код:
MODULE Heap;

   IMPORT S := SYSTEM, Log;
   
   CONST memsize = 1024;
   
   TYPE
      REC* = EXTENSIBLE RECORD [untagged] END;
      
   VAR mem: ARRAY 1024 OF BYTE;
      allocated: INTEGER;
   
   PROCEDURE Alloc* (size: INTEGER): S.PTR;
      VAR ptr: S.PTR;
   BEGIN
      IF allocated + size > memsize THEN RETURN NIL END;
      ptr := S.VAL(S.PTR, S.ADR(mem[allocated]));
      allocated := allocated + size;
      RETURN ptr
   END Alloc;
   
   PROCEDURE PrintPtr* (p: S.PTR);
   BEGIN
      Log.IntForm(S.VAL(INTEGER, p), 16, 8, '0', FALSE);
      Log.String(" from byte array ");
      Log.IntForm(S.ADR(mem[0]), 16, 8, '0', FALSE);
      Log.Ln
   END PrintPtr;

BEGIN
   allocated := 0;
END Heap.

А затем используем его из другого модуля.
Код:
MODULE HeapTest;

   IMPORT Heap;
   
   TYPE
      Point = RECORD (Heap.REC)
         x, y: REAL;
      END;
      
      PROCEDURE Do* ; (* (!) HeapTest.Do *)
         VAR p, q: POINTER TO Point;
      BEGIN
         p := Heap.Alloc(SIZE(Point));
         q := Heap.Alloc(SIZE(Point));
         Heap.PrintPtr(p);
         Heap.PrintPtr(q);
         p.x := 0; p.y := 0;
         q.x := 0; q.y := 0;
      END Do;

END HeapTest.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Воскресенье, 04 Ноябрь, 2007 02:43 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Vlad писал(а):
Хорошо. Давайте вернемся к нашему ядру и представим, что все самое низкоуровневое уже написано (на C или обероне, пока не важно). Тем не менее, код будет исполняться в ядре и на него будет накладываться определенные ограничения. GC нам по-прежнему не доступен. Даже если сделать специализированный рантайм, который будет аллоцировать память нужным образом, все равно останется потребность ее явного освобождения. Какие преимущества дает оберон без GC?


Все те же, за исключением сборки мусора. :)
В конце концов, Модула-2 -- тоже неплохой язык.
Границы массивов контролируются, плюс модульность и раздельная компиляция (в значении этого термина, принятом для модульных языков).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Linux+BlackBox=?
СообщениеДобавлено: Понедельник, 05 Ноябрь, 2007 17:32 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Именно сейчас в новом рантайме занимались решением этой задачи - как безопасно управлять памятью на уровне до GC. И способы организовать явное освобождение, не нарушая безопасности (т.е. гарантируя целостность памяти даже в случае досрочного освобождения), есть.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 125 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB