Я Ненавижу Почти Все Программное Обеспечение

Примечание переводчика: Недавно создатель NodeJS Рейн Даль открыл конференцию HolyJS в Санкт-Петербурге.

И я вспомнил, что у меня есть неопубликованный перевод из его блога, и решил его опубликовать.

В некоторых местах перевод весьма явный.

Надеюсь, вам это будет интересно.

Дата публикации статьи: октябрь 2011 г.

Дата выхода NodeJS: 27 мая 2009 г.

Это ненужно и сложно практически на каждом слое.

Лучшее, что я могу сделать, это поздравить кого-то с быстрым и простым решением проблемы, учитывая ту чушь, которую он предлагает. Единственное программное обеспечение, которое мне нравится, — это то, которое я легко понимаю, и оно решает мои проблемы.

Количество трудностей, которые я готов терпеть, пропорционально размеру проблемы, которую предстоит решить.

Думаю, за последний год я наконец-то понял идеалы Unix: файловые дескрипторы и процессы оркеструются с использованием C. Это отличная идея.

Но мы имеем дело не с этим.

Сложность не была задумана.

Вместо этого мне приходится иметь дело с DBus, /usr/lib, Boost, ioctls, SMF, сигналами, изменчивыми переменными, прототипным наследованием, _C99_FEATURES_, dpkg и autoconf. Те из нас, кто пишет программное обеспечение поверх этих систем, добавляют сложности.

Теперь вам нужно знать не только $LD_LIBRARY_PATH, чтобы система работала, но и $NODE_PATH — знайте, что это моя работа, это я усложняю! Пользователей — тех, кто хочет видеть веб-страницу, — их это совершенно не волнует. Их не волнует, как мы организуем /usr, их не волнует, как работают зомби-процессы, их не волнует, как работает завершение команд в bash, их не волнует, как zlib связан с Node статически или динамически.

Наступит момент, когда накопленная сложность существующих систем превысит сложность создания новой.

Когда этот момент наступит, вся эта хрень отправится в мусорку.

Мы можем спустить в унитаз boost, glib и autoconf и больше никогда о них не думать.

Те из вас, кто до сих пор получает удовольствие от изучения деталей, скажем, языка программирования — например, те, кто с радостью может наизусть сказать, равен ли NaN нулю или нет, — то вы даже не понимаете, насколько это хреново.

Если вы думаете, что было бы неплохо выровнять все знаки равенства в вашем коде, если вы тратите время на настройку оконного менеджера или редактора, если вы включаете проверку тегов Юникода в программу запуска тестов, если вы добавляете ненужные иерархии в папки кода, если ты делаешь хоть что-то кроме решения проблемы - то ты не понимаешь, насколько всё хреново.

Никого не волнует объектная модель glib. Одна вещь, которая имеет значение в разработке программного обеспечения, — это опыт пользователя.

Теги: #ИТ-история #node.js #пользовательский опыт

Вместе с данным постом часто просматривают: