> man operating_systems
Шутливые размышления о кроссархитектурости
на Четверг, 21 Апрель 2005, 11:47
добавил: Nikolay N. Ivanov список авторов печатать элемент контента создать pdf-файл  элемент контента
категория Статьи
комментарии: 8
просмотров: 982

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

"Бей, но выслушай!"
Фемистокл.

"И замерещилась мне... история - в каких-то темных углах..."
Ф. М. Достоевский.


Preface

На размышления о кроссархитектурости меня натолкнула детская англоязычная книга "Alice in wonderland" (Lewis Carrol). Прошу не считать доподлинно серьезным все написанное ниже, поскоьлку это, как следует из названия, всего лишь размышления, но никак не мое личное мнение.

Абстракция

"Что есть архитектура? Когда меня спрашивают, я знаю о чем идет речь, но стоит мне начать объяснять, я не знаю, что и ". Так сказал бы бл. Августин, будь он жив в наши дни. Существует комплексное определение архитектуры по Одинцову, достаточно точное и очень скучное. В рамках этой статьи предлагаю использовать договоренность о том, что архитектура - это набор команд и внутренних правил той или иной аппаратной платформы.

Представьте себе, что некоторый естественный язык является платформой со своей архитектурой. Тогда на определенной стадии абстракции (читай: медитации) можно сказать, что есть, например, русская и английская языковая архитектура.

Квинтэссенция

В книге "Алиса в стране " есть отрывок, наталкивающий на размышления: а можно ли перевести эту книгу на русский язык? Вот этот отрывок:


"My tale is long and sad," began the Mouse.
"Oh, yes, it's a long tail,", said Alice and looked at the Mouse's tail. "But why do you call it sad?"
"Oh, you are not trying to understand me. You are a very silly girl!"
And the Mouse got up and walked away.


С точки зрения программиста - этот кусок текста - ассемблерная вставка. Ассемблерные вставки жестко привязаны не только к аппаратной платформе, но и к операционной системе и даже к компилятору. Именно из-за этого любой здравомыслящий программист прежде чем вставить ассемблерный код в свою программу десять раз подумает. Действительно, попробуйте-ка найти в русском языке два созвучных слова, одно из которых означает "история" или "", а другое - "". Но ведь перевели! И вот как это ухитрились сделать:


- Я расскажу. Но только продолжение мое очень длинное и печальное, - сказала Мышь, повернувшись к Алисе и вздыхая.
- Это длинное продолжение, несомненно, - заметила Алиса, глядя с удивлением вниз, на мышиный хвост. - Но почему вы называете его печальным?


Да, был искажен текст, но остался СМЫСЛ, осталась ИДЕЯ! И я не знаю, насколько нужно быть извращенно-педантичным, чтобы отказаться от хорошего замысла в угоду точности.

А хорошая ИДЕЯ - это уже искусство. А искусство не знает границ. Стихотворения, поэмы - все это так тесно связано с конкретным языком понятиями рифмы и слога; но переводятся и будут переводиться! Возьмем, например, популярное английское стихотворение про Шалтая-Болтая:


Шалтай-Болтай сидел на стене.
Шалтай-Болтай свалился во сне...


В оригинале это выглядит так:


Humpty Dumpty sat on a wall.
Humpty Dumpty had a great fall,...


Дословным такой перевод не назовешь, но как красиво передан СМЫСЛ!

Отсюда вывод: искусство не может быть привязано к конкретной архитектуре. Вы можете написать сверхадаптированый к другому языку рассказ, избегая двусмысленностии национальной привязанности; но если такой рассказ не несет в себе ИДЕЮ, то и перевод вряд ли понадобится. С другой стороны - поэмы, вдоль и поперек пестрящие национальными фразеологизмамии фолклорными подтекстами, - переводятся на сотни языков мира и читаются миллионами людей, удовляетворяя их естественную потребность в искусстве.

То же самое происходит и в мире программного обеспечения. В книге Л. Торвальдса и Д. Даймонда "Just for fun" можно найти интересную цитату Линуса в конференции относительно новоиспеченной операционной системы:


P.S. Она свободна от кода minix и включает мультизадачную файловую систему. Она НЕ переносима (используется переключение задач 386 и пр.) и, возможно, никогда не будет поддерживать ничего, кроме AT-винчестеров - потому что у меня больше ничего нет :(


Чуть позже:


Как я уже писал, она использует MMU как для страничной подкачки (пока не на диск), так и для сегментации. Именно из-за сегментации она ПО-НАСТОЯЩЕМУ зависит от 386-го


Потом была знаменитая виртуальная перепалка Торвальдса с Э. Таненбаумом. В этом споре Таненбаум утверждал, что его Minix много лучше Linux, потому что Minix мало зависит от конкретной архитектуры и легко переносится. Прошло почти 14 лет. Бэстселлер Таненбаума "Современные операционные " вдоль и поперек утыкан словом "Linux", как образцом для разработчиков операционных систем. А команда "ls /usr/src/linux/arch" выводит следующее:


alpha/  i386/  ia64/  ppc/  um/  x86_64/


Linux используется в гоночных автомобилях, мобильных телефонах и т. п., а кроссархитектурая Minix если и используется, то лишь по своему прямому назначению: в учебных целях. Это яркий пример того, как отличная ИДЕЯ победила предрассудки.

В заключение хочу упомянуть фундаментальныеалгоритмы. Вряд ли кто-нибудь будет оспаривать то, что они будут выполняться на любой вычислительной машине, отвечающей принципам фон-Неймана. А все оттого, что такие алгоритмы несут в себе ХОРОШУЮ ИДЕЮ!

Комментарии
ddc |21.04.2005 15:17
Комментарии: 523


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

Dron |21.04.2005 16:34
Комментарии: 558


Как это не совместимы? вообще-то все из одних и тех же сырцов компилится...

Си он и в африке си...
Что творится в ядре - на мой взгляд пофиг... важно что снаружи... а снаружи у нас один и тот же си интерфейс... (ключевое слово именно СИ!)

Dron |21.04.2005 16:48
Комментарии: 558


Кстати сама по себе кроссплатформенность - не такая уж необходимая вещ... я например никогда не видел в глаза всяких других машин кроме IA32 ну и более старых... (Z80, PDP11, etc...)

То есть 99% людей пофиг на какой платформе они сидят...
Конечно приятно когда везде ты видишь одни и те же кнопочки.

Но тут какраз не лишне вспомнить об абстракцийх...
И абстракции таковы, что архитектура языков высокого уровня рулит. (именно поэтому линукс работает почти везде)
То есть для программистов имеет смысл лишь это.
Реальная привязанность к платформе проявляется лишь в 0.0001 проценте кода. (этот код конечно должен быть написан...)

в остальном абстракция вступает в силу и пофиг где работаешь... нету архитектуры IA32, или Архитектуры PowerPC или архитектуры Alpha.. есть архитектура Linux, архитектура Windows...

то есть на архитектуре Linux всегда сработает комнада fork(), а на архитектуре Windows всегда есть CreateWindow()...

Причем здесь плевать даже на фон-Неймана... (хотя без него все понятия могут измениться..., зря я это сказал.





ddc |21.04.2005 17:03
Комментарии: 523


Dron
Dron написал(а) ...
Как это не совместимы? вообще-то все из одних и тех же сырцов компилится...
Насколько я знаю, из разных. Так или иначе, люди жаловались на проблемы с кроссархитектурной совместимостью.
Dron написал(а) ...
я например никогда не видел в глаза всяких других машин кроме IA32 ну и более старых...
А я регулярно вижу PowerPC. Причём чем дальше, тем больше.
Dron написал(а) ...
нету архитектуры IA32, или Архитектуры PowerPC или архитектуры Alpha.. есть архитектура Linux, архитектура Windows...
А архитектуры Linux нет (в отличии от Windows) - есть только POSIX, утилиты и разные API. Причём чистых POSIX-основным приложений практически нет, как практически нет Linux- или BSD-независимых приложений для UNIX.
Что же касается Windows, то, помнится, на NT3.5 для Alpha тоже не было просто собрать исходники от NT3.5 для x86...

Dron |21.04.2005 17:59
Комментарии: 558


Че-то сомневаюсь я насчет разных... одни и те же сырцы.
Я сам на кроссплатформенной gentoo сижу!
Пример в студию!

А насчет отсутствия единой высокоуровневой архитектуры... это проблема производителей... могла бы быть.. но вот почему-то нету...

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

ИМХО.

arcade |21.04.2005 22:02
Комментарии: 2

Зарегистрирован: 02.10.2004 00:00

Ну хотите совсем чего-то кроссплатформенное - смотрите в сторону NetBSD.

А ваш хвалёный Линукс, кстати, совсем не в курсе об одной из знаменитейших веток процессоров - m64k, на которой взошло не одно поколение маков.

nnivanov |22.04.2005 01:17
Комментарии: 26

Зарегистрирован: 29.03.2005 01:18

2arcade:

<div class='indent'>А ваш хвалёный Линукс, кстати, совсем не в курсе об одной из знаменитейших веток процессоров - m64k, на которой взошло не одно поколение маков.
</div>Не принципиально! Если в этом будет потребность, то Linux и на калькуляторы будут ставить. В Linux разработана хоть и мудреная, но все-таки достаточно удобная схема добавления новой архитектуры. А если какая-то архитектура не поддерживается, то это или не нужно или вопрос времени.

batu |22.04.2005 05:38
Комментарии: 10

Зарегистрирован: 03.07.2004 22:20

Очень понравилась статья. Идею надо чуствовать. А такая беда происходит из-за архитектуры машины. К ней приязано все. И типы данных, и методы адресации. И языки обслуживают архитектуру машины. И операционные системы привязаны к ней. Был упомянут фон-нейман. Весьма кстати. С тех пор в архитектуру машины идей новых не пришло. Поэтому все что происходит это топтание на месте. В идейном смысле. Больше разрядность, больше адресное пространство, быстрее работают процессоры. Новых идей нет.



Комментарии доступны только авторизованным пользователям, авторизуйтесь или зарегистрируйтесь на сайте здесь

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