LOCATION: Hin Kong, Koh Pha Ngan, Thailand
Давеча как-то дискутировали с человеком на темы религий, и родилась забавная аналогия.
Увы, равернутый текст мне писать лень (в том числе и недостаток знаний в программировании сказывается), получайте as is.
Христианство — это попытка переписать огромную систему, первоначально писавшуюся на каком-нибудь Фортране или даже Коболе под Java.
За n-лет жизни предыдущей системы накопилось огромное количество legacy решений, багофич и разных «странностей» вида:
«Если последняя цифра високосного года — 0, то в феврале оказывается 30 дней. Это нельзя исправить, потому что это уже много лет используется в качестве способа проверки состояния на високосность вот в таком вот месте системы, поэтому данный баг бережно переносится из версии в версию вот уже 20 лет и хорошо документирован».
Изначальная попытка переписать решение на Java, предпринятая с благими побуждениями, привела к возникновению огромного числа workarounds разной степени кривости то там, то здесь. Большой накопленный парк legacy-решений старй системы было решено продолжать поддерживать. К хорошему это не привело, зато в наследство нам достался полный набор плохо документированных хаков, единственная цель которых — сохранить совместимость с прежней системой, причем зачастую в местах, которые уже толком никому не нужны. Все это регулярно глючит, падает, форкается утомленными разработчиками, но все же худо-бедно продолжает жить.
С этой точни зрения ислам — гораздо более архитектурно прям. Там тоже явно была попытка поддержать старую систему, но, к счастью для целостности системы, от полноценной поддержки всего функционала довольно скоро отказались, оставив на уровне вызовов API, и на сегодня это скорее надстройка на C++ над первоначальным plain ANSI C.
Also: может быть интересно на эту тему более раннее
http://romx.livejournal.com/87168.html