Тексты Unix V6
2006-07-26 22:17Тексты ядра Unix V6 (Sixth Edition) - весьма познавательное чтиво. Гениальность в простоте. До этого считалось, что операционная система - это что-то очень сложное и запутанное. Но Unix V6 можно прочитать и понять за один вечер - всю систему, с потрохами.
Система разработана в 1975 году. До появления MS-DOS оставалось 6 лет.
Существует сайт - The Unix Tree - где лежит много интересных старых текстов.
Система разработана в 1975 году. До появления MS-DOS оставалось 6 лет.
Существует сайт - The Unix Tree - где лежит много интересных старых текстов.

no subject
Date: 2006-10-23 20:09 (UTC)2. Изящность - это не когда много, а когда мало, но вполне достаточно. Я бы и эту модель попробовал дополнительно ограничить.
3. Что странного?
4. (Бог мой. Что это. Зачем это. Это из прошлого века.) Что странного?
5. Необъектные типы - издержка практичности. Зато язык в состоянии конкурировать с Си по эффективности.
Про VM - тем, что одна программа (а не один исходник) реально работает везде. Этого, кстати, никто кроме явы так и не достиг. Да и с одним исходником мало, кто справится. Ибо разные платформы - это не только разный процессор. А и, например, разный синтаксис имён файлов. Много ли языков в состоянии с этим хоть как-то бороться?
1. Это Ваша привычка к Паскалевскому синтаксису. Для большинства программистов на планете синтаксис явы куда более читаем.
1а. Читаемость программы в языках без качественной обработки исключений - это оксиморон, потому что вся программа сводится к
if( Error == myFunction(xxx) )
{
deallocate that
kill this
log that fucking error
retunr Error;
}
и так по всему коду - на одну осмысленную строку десять технических.
Я уж молчу о том, что в языке без исключений (адские исключения не считаются - не параметризованы) практически НЕЛЬЗЯ использовать функции как функции.
2. Это - наследие необъектности языка. Практической потребности в out параметрах в оо языках нет. Если нужен out параметр, то программа плохо спроектирована.
3. Увы, любая схема, при которой либо нужно явно удалять объект, либо он может сдохнуть и ссылка на него станет невалидной СИЛЬНО усложняют программирование. Я полагаю, вы не работали на языках с GC. После них от ручного управления памятью тошнит конкретно. До полного неприятия.
4. мелочи, ага. for( Cell s : cells ) { /* process cell */ } поглавнее будет. Ибо сокращает код и повышает читабельность в разы.
5. Зачем? (Я уж молчу о том, что я забыл давно про компиляцию - она происходит где-то между набором строки и нажатием на Ctrl-S как-то незаметно для меня.)
6. всё сосёт, включая яву. Хочу явное управление видимостью.
7. неужели и в библиотеке есть контейнеры, которые сериализуют обращения к себе? И отрабатывают исключения при итерации по модифицированному из другого треда контейнеру? То, что есть в Аде, покрывается ключевым словом serialized, методами засыпания на объекте/пробуждения класса Object и классами, порождёнными от Thread. А есть ещё много за пределами.
И, как я уже говорил, масса вещей в Яве находится просто за пределами хотя бы осознанных авторами Ады задач, не говорю уж об их решениях. Представить себе, например, hibernate для Ады - нереально.