Почитывал ЖЖ и заметил что в
обсуждении, некий персонаж написал следующее:
Компиляторы - хороший пример, потому что компиляторы тоже можно писать по-разному. Можно - жуткой лесенкой из свитчей и ифов, а можно - просто и лаконично, используя паттерн матчинг.
Писать компиляторы на Эрланге/Хаскеле/Окамле - хорошо, приятно, быстро. Писать компиляторы на Си - плохо, криво, и долго.
Я бы проигнорировал этот коментарий, но такого мнения действительно придерживается заметный процент разработчиков. В том числе и считающихся, по уровню, выше среднего.
Выражаясь аналогиями, заметный процент людей, искренне считает, что что фабричное качество лучше кустраного именно потому что работники фабрики ходят в белых халатах, а так же потому что на фабрике используется более дорогие аналоги доступного оборудования. Собственно, отчасти, косвенно, эти моменты действительно имеют влияние. Но. Проблема заключается в том, что человек остается уверен что стоит купить фабричное оборудование, нанять каких-то полу-случайных людей, одев их в белые халаты - и оп-па - как по волшебству эти люди станут выпускать высококачественный продукт да еще и в короткие сроки. Это очевидно ошибочно.
Дело в том, что человек не вникает, не задумывается, и в результате не понимает что основа успешной работы фабрики отличающей этот вид производства от кустарного - это процессы и методологии.
- Одним из всем известных примеров является конвеер. Туда же идет и другое разделение труда когда один человек занимается только одной, простой, частью будущего продукта, доводя свои действия до автоматизма. Более дорогие аналоги оборудования - лишь следствие повышенных требований к наработке на отказ у используемого оборудования. А так, фабрика пошива одежды может легко обойтись и без специализированных швейных машинок, обойдясь обычными качественными машинками, не теряя в качестве выпускаемой одежды. Только больше денег на замену поломавшихся аппаратов тратить придется.
- Так же важна слаженная и ровная работа коллектива. Отчасти для этого полезна униформа и прочие требования к внешнему виду вроде корпоративного дресс-кода: например Машка не придет на работу в костюме стриптизерши, отвлекая на себя внимание как мужской так и женской братии сотрудников, к своему пущему удовольствию. Т.е. и тут, белые халаты - являются всего лишь следствием применения различных процессов управления и производства, а не самодостаточной сущностью.
Так же и в программировании. Паттер-матчинг встроенный в язык программирования - удобный но не уникальный по исполняемым функциям инструмент. Да и далеко не основной. Просто потому что для создания сложных программных комплексов, а в частности и компиляторов, нужен довольно большой набор самых разных инструментов упрощающих и упорядочивающих разработку, среди которых, паттрен-матчинг - всего лишь "один из". И например удобный для применения, метод описания и программирования грамматики (особенно контекстно-зависимой) - имеет гораздо больший вес для написания компилятора, чем какие-то конкртеные фичи отдельно-взятого языка. Хотя бы потому что такой метод - это уже сам по себе процесс/методология, а так же большой набор инструментов, объединенный вокруг конкретной цели и зачастую созданный для достижения этой цели.
Ах да, кстати: Всех с Новым Годом, Рождеством, и всех благ!