> man operating_systems
Центр информации по операционным системам :: Форумы :: Концепции :: ОС-21
 
<< Предыдущая тема | Следующая тема >>
[moved] Почему при исключении WinFX из Longhorn погибает Linux? Ответ Freeman'а.
Переход на страницу  1 2 3 [4] 5 6
Модераторы: Roman I Khimov, Wanderer, Dron
Автор Добавил
Dron
Четверг 02.06.2005 10:28


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
Совместимость - это вообще тормоз!
Вообще ни на какой совместимости зацикливаться не надо. а программы должны быть просты... тогда их и менять будет проще. (под новые требования реали)

Одну из двух вечных российских проблем можно, в принципе, решить с помощью асфальтоукладчиков и катков. А вот с дорогами, конечно, будет труднее...

Андрей Валяев
Наверх
Сайт
captain cobalt
Четверг 02.06.2005 15:56

ID пользователя #12
Зарегистрирован: Воскресенье 04.07.2004 21:44
Местонахождение: /ru/perm
Сообщений: 144
Dron написал(а) ...
Совместимость - это вообще тормоз!
Вообще ни на какой совместимости зацикливаться не надо. а программы должны быть просты... тогда их и менять будет проще. (под новые требования реали)
В Обероне сделано ещё проще - там нету программ.
Chapter Five; The Programmer's Guide написал(а) ...
5.1 Introduction

Programming with the Oberon system involves extending the Oberon run-time environment. The reader familiar with programming will equate programming with writing a program. Once completed, the program is run. The program requests input data, does some calculation, and then outputs the result. This may happen many times until the program terminates and releases the resources it used.
In Oberon, there are no programs. Programs are relics of the days when computers had little memory and other resources. Programs wait in line until the user decides to execute them. After termination, the program removes itself from memory to make space for the next program. Communication between different programs running at different times takes place by storing a message in non-volatile storage (a file for example). Today however, computers have more memory and programs routinely run concurrently with each other. This is called multi-tasking. The computer resources are shared between all running programs. Unfortunately, communication between different programs has not progressed much further than in the earlier days of batch processing, which makes the cooperation and integration of different programs a difficult task.
The reason for this state of affairs can be traced back to the technology used for writing programs. If a program were unsafe, that is, doing the wrong thing, it could damage the integrity of the system, and thus negatively influence the other programs running on the computer. Most of today's programming languages allow the programmer to write (knowingly or unknowingly) programs that crash the system when run. Rather than solving the problem at its root (i.e. the bad programs), software systems started using the concept of memory protection. Using memory protection, a program is encapsulated in a "shield", preventing other programs from damaging it. Sadly enough, a memory protection shield also prevents easy communication with a program, thus hindering integration and cooperation between different programs.
In contrast, the Oberon system is an example of an open and extensible system. Open means that a high level of cooperation, integration and re-use of code between applications is practised. Extensible means that anybody can add a new part to the Oberon system. This new part might be using a part somebody else added, or might be used itself by another part added later. To achieve this flexibility, Oberon does away with programs completely. Instead, Oberon provides two concepts: modules and type safety .

Modules.An Oberon module contains (part of) the executable program code of an Oberon application. Modules are typically much smaller than programs, and an application often consists of more than one module. The modules of all activated Oberon applications share the memory of the Oberon system. There are no barriers between modules of different applications. Once loaded into memory, a module normally remains there until the computer is switched off. A module X may use (or re-use) the code contained in other modules A, B, C, etc. We say that module X imports modules A, B, C, and that module X is a client of modules A, B and C. Because a module is always visible to other modules (when in an import relationship), a large level of code or module re-use is possible. That means that applications can share useful modules between each other. For example, the Oberon system provides modules for managing text, bitmaps, data compression, network communication like file transfer and e-mail. These and other modules are often shared between different applications. The set of modules loaded into memory form the module hierarchy. The Oberon module hierarchy is a directed acyclic graph (DAG), in other words, no recursive imports are allowed.
But how do modules get into the computer memory in the first place? The Oberon system contains a module loader that can dynamically load and link a module into the running system. All imported modules are loaded automatically if they are not loaded into memory already. Instead of running a program, Oberon allows you to execute a command located in a module. A command is nothing more than a procedure located in a specific module, that is, a command M.P results in procedure P of module M being called. Thus, executing a command will result in a module being loaded into the system (from disk) by the module loader. The module typically remains in memory until the computer is shut down or until it is freed explicitly by the user.

Type safety.To prevent a module from corrupting the system, a danger in such an open arrangement, the Oberon programming language provides type safety. Type safety guarantees that a module cannot do bad things (by mistake or on purpose) to the system and to other modules. This is accomplished by a strong typing system in the Oberon language, and by checking the correct use of modules by the Oberon compiler. Each module provides additional functionality to the Oberon system, the use of which is determined by the module's interface or definition. The interface of a module tells us what components of a module are visible to the outside world (i.e. to the other modules in the system).
We say that these components are exported from the module. Type safety ensures that only these components and nothing more can be accessed by client modules. This allows the Oberon programmer to hide implementation details behind module interfaces and so ensure that private data structures can not be altered from outside the module. The value of type safety should not be underestimated. It protects the system and the programmer in a world of hundreds of cooperating but also at times menacing modules.
How do modules communicate with each other? As expected, one module can call the exported procedures of other modules directly. Another powerful technique is to share data structures between modules. In Oberon, all dynamically allocated memory is shared by modules in the so-called heap. Type safety ensures that only valid references to memory allocated on the heap are passed as pointers from one module to another. In fact, this is the basis of much of the run-time behavior of the Oberon system. We can imagine the heap to be a large database of collective data. Activating a command causes a module to transform data in the database, the result of which is again inserted into the database. This is a powerful way for applications to communicate directly without barriers, and even for applications to influence each other. As an example we can write a module containing a command that colors all the occurrences of the word "and" in a text document in red - simply by directly accessing the abstract text data type of a text document. In a similar way, we can add new functionality to all Oberon applications.
In conclusion, it should now be clear that Oberon has an advantage over other systems when it comes to integrating different applications with each other, protecting the system from the user (or the user against himself), supporting the ordered re-use of code, and constructing applications rapidly from prefabricated building blocks. The remainder of this chapter will enable you to do so yourself.


bluebottle.ethz.ch - Bluebottle. Швейцария. Сделано с умом.
Наверх
Сайт
Dron
Четверг 02.06.2005 16:31


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651

В Обероне сделано ещё проще - там нету программ.


Вообще-то не фиг цеплятся к словам...
x)

Что программы, что объекты, что модули, как они там в обероне называются - пофиг.. смысл моей фразы от этого не меняется.

И нефиг столько квотить. всеравно никто не будет вчитываться по английски, достаточно было жирную фразу привести, если уж хочется выпендрится.

Вообще-то вверху твоего любезного цитирования написано Programmers итд...

Если есть программисты, и язык программирования, знгачит есть и программы...

А иначе это были бы модулисты и язык модулирования,
Или объектисты и язык объектирования.

Короче не в тему ты выступил.

А вот ссылка для тех, кто не знает что означает слово программа.
[ Редактирование четверг 02.06.2005 16:33 ][ Редактирование четверг 02.06.2005 16:47 ]

Одну из двух вечных российских проблем можно, в принципе, решить с помощью асфальтоукладчиков и катков. А вот с дорогами, конечно, будет труднее...

Андрей Валяев
Наверх
Сайт
Freeman
Четверг 02.06.2005 16:47
ID пользователя #3
Зарегистрирован: Четверг 01.07.2004 14:57
Сообщений: 207
Dron написал(а) ...
А иначе это были бы модулисты и язык модулирования,
Или объектисты и язык объектирования.

5 баллов!
Наверх
Dron
Четверг 02.06.2005 17:10


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
Не, ну просто зацепило...
Программа - это вовсе не синоним exe файла...

Программа - понятие абстрактное...

Одну из двух вечных российских проблем можно, в принципе, решить с помощью асфальтоукладчиков и катков. А вот с дорогами, конечно, будет труднее...

Андрей Валяев
Наверх
Сайт
captain cobalt
Четверг 02.06.2005 17:26

ID пользователя #12
Зарегистрирован: Воскресенье 04.07.2004 21:44
Местонахождение: /ru/perm
Сообщений: 144
Dron написал(а) ...
Если есть программисты, и язык программирования, знгачит есть и программы...
Последний вывод неверный.
В более общем смысле программирование - это не "написание программ", а решение задач. Соответственно, деятельность программиста - не "писать программы", а решать задачи. И языки программирования - это не "языки для написания программ", а языки для решения задач.
Dron написал(а) ...
Программа - это вовсе не синоним exe файла...

Программа - понятие абстрактное...
Важно: какие у абстрактной программы есть абстрактные свойства?

Вероятно одно из таких свойств - программу можно (нужно) запускать на исполнение.

Модули в Обероне не нужно запускать на исполнение.

bluebottle.ethz.ch - Bluebottle. Швейцария. Сделано с умом.
Наверх
Сайт
captain cobalt
Четверг 02.06.2005 17:59

ID пользователя #12
Зарегистрирован: Воскресенье 04.07.2004 21:44
Местонахождение: /ru/perm
Сообщений: 144
Программа - это обычно нечто законченное, ограниченное и standalone. Например, если программа - простейший текстовый редактор, то обычно нельзя, написав дополнительную программу сделать, например, текст в этом редакторе разноцветным.

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

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


bluebottle.ethz.ch - Bluebottle. Швейцария. Сделано с умом.
Наверх
Сайт
Dron
Четверг 02.06.2005 18:02


ID пользователя #13
Зарегистрирован: Понедельник 05.07.2004 11:16
Местонахождение: Москва
Сообщений: 651
Правда чтоль? в не далее как вчера в замечательной статье Вирта про толстые программы я читал абсолютно обратное. кто же из вас прав???

Чтобы не быть голословным я сейчас зацитирую.


3.4 Активизация операций

Другим примером, иллюстрирующим нашу стратегию, будет активизация операций. В Обероне выполняются не программы а, отдельные процедуры экспортируемые из модулей. Если некоторый модуль M экспортирует процедуру P, то P может быть вызвана простым указанием на строку M.P, присутствующую в любом видимом на экране тексте - то есть с помощью позиционирования курсора на строку M.P с последующим щелчком клавишей мыши.


Если это не запуск - то я балерина.

Программа - это обычно нечто законченное, ограниченное и standalone.


Это всего лишь твой стереотип... даже Вирт так не говорил!

Программа - это всего лишь алгоритм, выраженный в понятных для машины конструкицях.

А все остальное - стереотипы...

Вообще мы щас спорим из за того, что кто-то не хочет признать что модули оберона - это тоже программы...
И что программа это не что-то монолитное... это лишь слово...

Вот когда говорят "монолитная тяжелая программа", то да, тут я ни сколько не спорю... у оберона другая идеология... но и модули - это тоже программы!

Поэтому наш труд и называется программирование. мы пишем программы... какой бы вид они не принимали!
[ Редактирование четверг 02.06.2005 18:07 ]

Одну из двух вечных российских проблем можно, в принципе, решить с помощью асфальтоукладчиков и катков. А вот с дорогами, конечно, будет труднее...

Андрей Валяев
Наверх
Сайт
captain cobalt
Четверг 02.06.2005 18:39

ID пользователя #12
Зарегистрирован: Воскресенье 04.07.2004 21:44
Местонахождение: /ru/perm
Сообщений: 144
Dron написал(а) ...
Если это не запуск - то я балерина.

Глядим ещё пристальнее:
В Обероне выполняются не программы а, отдельные процедуры экспортируемые из модулей.
Не модули!

Вот несложный вопрос:
captain cobalt написал(а) ...
динамическая библиотека - это программа?
Да/Нет?

bluebottle.ethz.ch - Bluebottle. Швейцария. Сделано с умом.
Наверх
Сайт
ddc
Четверг 02.06.2005 20:11
Free Software Zealot


ID пользователя #202
Зарегистрирован: Воскресенье 06.02.2005 09:32
Местонахождение: Москва
Сообщений: 189
Freeman написал(а) ...
Это слишком низкоуровнево и не типизировано, поэтому не может быть объектно-ориентированным. Для меня всегда это было фактом. Теперь даже на Вирта сослаться могу.
Я не предлагаю брать код UNIX. Я предлагаю брать подход.
Freeman написал(а) ...
czarker написал(а) ...
Просто не нужно на бинарной совместимости зацикливатсья..
Вот тут не понял. А что должно быть - текстовая совместимость?
Dron всё за меня объяснил по этому вопросу.
Freeman написал(а) ...
Есть мнение, что текстовые протоколы UNIX возникли как следствие недостаточно проработанной концепции двоичных контейнеров. На сегодняшний момент - еще один тормоз на пути прогресса.
Если коротко, то бинарные протоколы - это макроскопическое зло. Избавляться от них нужно.
Freeman написал(а) ...
Объекная система, спроектированная одним человеком, с четкой концепцией, и все такое. Но не хватает чего-то...
Значит имеется в виду Native Oberon? На мой взгляд, пустышка.


Но это всё, конечно, моё сугубо личное мнение...
Наверх
Переход на страницу  1 2 3 [4] 5 6  

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System

© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.