пятница, 28 июня 2013 г.

[prog] Маленький пример на тему Big Rewriting

В разработке ПО есть такое понятие -- Big Rewriting. Что на русский переводится как "Взять и все переписать!"

Думаю, что многие из нас сталкивались с ситуациями, когда развивать, сопровождать или просто заставлять работать большую (как правило, написанную задолго до тебя) систему уже просто не хватает сил и нервов. В такие моменты возникает соблазн взять и переписать эту систему заново, с использованием новых идей, самых последних наработок, модных языков/фреймворков и т.д. К счастью, далеко не всегда нам дают возможность осуществить такой Big Rewriting. К несчастью, далеко не все начавшиеся попытки полного переписывания заканчиваются успешно.

Об одном из таких примеров я прочитал в статье "E-TeX: Guidelines for Future TeX Extensions - revisited" при подготовке к предыдущему своему посту о LaTeX-е. Цитирую:

The NTS project (New Typesetting System) was inaugurated by DANTE (the German TeX Users Group) in 1992. Its objective was to re-implement TeX in a 100% compatible way in Java. While TeX was frozen, NTS was to remain exible and extensible. The project completed successfully in 2000, passing the trip test, and thus proving that a reimplementation of TeX in a different language was possible. As it turned out though, full compatibility with TeX resulted in code that was less modular than initially hoped for, so that adding any extensions or providing modi cations of algorithms turned out to be far more difficult than initially anticipated. For this and a number of other reasons, NTS itself wasn't developed any further.

εχTeX is a spin-off started around 2003 with the intention of developing a new Java-based system incorporating the experiences from NTS, ε-TeX, pdfTeX and Omega. The project is represented on the web [1], but as of today it hasn't left alpha stage.

Т.е. проект NTS стартовал в 1992-м и его целью было получение 100% совместимой с TeX-ом новой реализации, написанной на Java. Планировалось, что NTS, в отличии от замороженного оригинального TeX-а, будет развиваться и расширяться. Проект NTS успешно завершился в 2000-м и прошел тесты совместимости с TeX-ом, тем самым доказав, что можно создать TeX на другом языке программирования. Но оказалось, что из-за необходимости иметь 100% совместимость с TeX-ом код NTS получился совсем не таким простым и модульным, как это планировалось вначале. И внедрение в NTS новых расширений или изменение каких-либо внутренних алгоритмов выходило намного более сложным, чем предполагалось. В итоге NTS больше не развивался. На базе NTS в 2003-м стартовал проект εχTeX, который к весне 2013 года так и не вышел из alpha-версии.

Комментариев нет: