Тексты 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-29 12:32 (UTC)У меня к Джаве похожая претензия. Она уводит программиста от ощущения связи с хардвером. Теряется точка опоры. Что у процессора есть стек, регистры, память. Что процесс выполнения - он не абстрактный, а за ним стоит вполне конкретное железо. Это как виртуальная фортепианная клавиатура, как бесконтактный секс. :)
Джавовский программист никогда не сможет написать операционную систему, тут Джоэл прав. И даже не поймет, зачем она вобще нужна. :(
Ада как язык, конечно, погрубее будет. Но у нее есть эта связь, опора на хардвер. Причем получше, чем у Си/Cи++. Там другой минус - определенная тяжеловесность runtime, все-таки Си++ легче.
no subject
Date: 2006-10-30 10:11 (UTC)Неужели кто-то рассматривает её в таком качестве? Не верю.
Что до Джоела, то он отчасти просто страдает ностальгией, примерно как пианисты, которые заставляют детей обязательно играть на тяжёлой клавиатуре - не осознавая того, что это просто их привычка.
Отчасти же он прав.
Но.
Множество людей под словами "операционная система" понимают не операционную систему, а операционную систему класса Юникса и Виндовс ЭнТи.
А это не одно и то же.
Если смотреть на яву не снаружи, а изнутри, то выясняется, что вокруг этого языка решено настолько до хрена СИСТЕМНЫХ проблем, до которых "классические" ОС даже не добрались, что тезис "на яве нельзя написать ОС" оказывается ОЧЕНЬ сомнительным.
Да - Яве нужен JVM, реализованный на другом языке. Примерно как 13 тысячам строк исходника Юникса v6 были нужны несколько сот строк на ассемблере. Чтобы взлететь.
А дальше... ты во главу угла задачи по написанию ОС ставишь слово "хардвер". А я (и авторы явы) - "система". Оно, в целом, понятно, почему - ты много работаешь с железом - какая-то особенная системность при работе с кодом одного конкретного устройства несущественна, нет проблем сочетаемости кода и взаимодействия компонент, созданных разными разработчиками в разных местах и в разное время.
Для С++ использовать ТРИ внешние библиотеки - достижение, ПЯТЬ - война, ДЕСЯТЬ - нереально. То есть - реально ТОЛЬКО если они все в исходниках, ты потратил месяц на их склеивание, и работают они только с твоим кодом, но не друг с другом. И лучше - в сингл треде. А иначе - месяц через месяц ловли куска битого стека. Стека одного треда, битого другим, конечно.
И для сравнения:
JAMon.jar
ant-antlr-1.6.5.jar
antlr-2.7.5H3.jar
asm-attrs.jar
asm.jar
c3p0-0.9.1-pre6.jar
cglib-2.1.3.jar
commons-beanutils.jar
commons-collections-2.1.1.jar
commons-dbcp-1.2.1.jar
commons-digester.jar
commons-fileupload.jar
commons-lang-2.0.jar
commons-logging-1.0.4.jar
commons-pool-1.3.jar
commons-validator.jar
displaytag-1.0.jar
dom4j-1.6.1.jar
ehcache-1.1.jar
ejb3-persistence.jar
hibernate-annotations.jar
hibernate3.jar
hsqldb.jar
jakarta-oro.jar
jakarta-regexp-1.3.jar
javaee.jar
javax.servlet.jar
jdbc2_0-stdext.jar
jta.jar
log4j-1.2.11.jar
mysql-connector-java-3.1.13-bin.jar
org.mortbay.jetty.jar
org.mortbay.jmx.jar
struts-menu-2.3.jar
struts.jar
Это я взял список библиотек от относительно небольшого явского проекта.
Из них половина знают друг про друга или не знают, но могут взаимодействовать - потому, что вокруг Явы простроено много стандартизованных интерфейсов, которые реализуются там и сям. В малтитреде, отмечу.
Это огромный объем работы других людей, который ты получаешь на халяву, с документами (а больльшинство - с исходниками), они весьма продуманы, сочетаемы и вся эта херня реально работает.
Я такого не видел НИГДЕ.
Поэтому, кстати, глупо сравнивать яву как именно ЯЗЫК с другими языками. Уже неважно, какой там язык - ценность не в синтаксисе, пунктуации или коллинг конвеншне.
Ценность Явы - в потрясающей проработке интерфейсов, правил игры, стандартов на подходы в разработке, в библиотеках, в качественных разработчиках - в инфраструктуре.
Увы, я не знаю НИ ОДНОГО инструмента, который бы был хотя бы БЛИЗОК к этому.
Правда, знаю, какой скоро будет: C#. :(
А драйвера удобнее писать на С, это факт. Ну - или на Аде.