Re[16]: КОП в linux
От: Андрей Хропов Россия  
Дата: 22.06.06 23:34
Оценка:
Здравствуйте, Kolhoz, Вы писали:

K>Здравствуйте, Андрей Хропов, Вы писали:


АХ>>Здравствуйте, Kolhoz, Вы писали:



K>>> Опять 5*5... Эта компонентность не более мощная. Она более частная. Она реализуется тривиально поверх примитивов unix way, а вот unix way поверх объектной компонентной модели — нет. Не сравнивайте даже общее решение с частным!

АХ>> Да все в точности наоборот!
АХ>> Передайте от одного компонента другому имя файла и будет вам полнейший Unix way.

K> Какого файла? А если я туда netcat вставил? Или ssh?

И? В чем проблема?
Передайте имя файла netcatу, а он дальше передаст.

то что вы пишете в Unix как
"ls | more"
можно записать как (условно)
"File result = more.Process( ls.Process(input) )".
more и ls некие компоненты.

Чуть больше слов, но суть та же.

АХ>> Весь этот Unix way сводится просто к сериализации/десериализации в/из потоков (они же файлы).


K> Нет.


K> Дао Unix way:

K>- на каждую функциональную единицу — отдельный компонент
Правильно — в любой компонентной системе так.

K>- к компоненту предъявляются требования:

K> * возможность как программного так и интерактивного задействования всех его функций.
Правильно. Так как вы там интерактивность в Unix way обеспечиваете?

K> * корректное сообщение о любых исключительных ситуациях

Сообщение мало. Надо еще данные не убить по возможности.
Без поддержки исключений обработка ошибок — это геморрой жуткий.
Я уж не говорю про RAII. А это предполагает ОО.

K> * наличие максимально простого для программной обработки протокола передачи как потребляемых, так и производимых компонентом данных.

K>- в системе из нескольких компонент между любыми двумя компонентами должна быть возможность встроить третий
Эээ. Вот тут мне видится фундаментальный изъян.
Дело в том что для того чтобы вставить на вход одного компонента выхлоп из другого нужно чтобы у них были совместимы интерфейсы, т.е. передаваемая информация была в одном формате,
в unix way используется наименьший общий знаменатель — простой текст.
Часто программы работают все же не с простым текстом, а со структурированными данными
(простейшие утилиты вроде grep не берем в расчет), поэтому имеем оверхед на сериализацию/десериализацию.
А любой компонент в середину все равно нельзя, поскольку обработка разной информации требует разных компонентов (пример с закодированными символами в HTML уже приводился, так же можно сказать что с ASCII и Unicode надо работать по-разному и т.п.).

Вот LaTeX — это Unix way?
в цепочке "latex -> dvips -> ps2pdf" ты можешь вставить (точнее, смысл есть?) между dvips и ps2pdf grep?

K> Всё. Текстовые потоки, awk-и с netcat-ами — это частности и следствия означенного дао.

Имеют свои плюсы, но не универсальны.

АХ>> Это конечно было замечательно в 70-е (и даже в 80-е) годы, но сейчас уже придумали кой-чего получше.


K> Что же? Объектно-ориентированную религию не предлагать, тошно-с.

Глупости говорите. ОО давно уже само-собой. Теперь уже дальше идем в сторону скрещения ОО с функциональщиной . Даже в скриптовых языках, без которых Unix way никуда .
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.