psilogic: (Default)
psilogic ([personal profile] psilogic) wrote2005-11-08 07:03 pm

О ярлыках в программировании

Есть в современном программировании такое расхожее мнение: "нельзя изобретать велосипед". Имеется в виду, что не надо писать с нуля какой-то код, если кто-то что-то подобное уже написал.

Я считаю, что это - стереотип, ярлык, действующий подобно ярлыку "красно-коричневых". Как и любой ярлык он провоцирует бездумное применение, отчего может быть достаточно вредным.


На деле фраза про велосипед - бред чистой воды. Вообще многие пословицы и поговорки - есть не "народная мудрость", а "народная глупость", стереотипы, передаваемые из поколения в поколения. Эти стереотипы вовсе не проходят естественный отбор: среди них выживают не самые правильные, а самые часто применяемые для тех или иных целей, в том числе и неблаговидных. Иногда стереотип раскритиковывается (как раскритикована поговорка "цель оправдывает средства"), но чаще они так и остаются властвовать умами в виде фантомов (так я называю привычную, но труднообнаружимую ложь).

Когда человек пишет функцию X, которая уже есть в какой-то библиотеке - он "изобретает велосипед"? Допустим. Тогда, если он _использует_ эту функцию в функции Y - он "изобретает велосипед"? Вообще-то да: ведь это до него уже делали многие другие. Не надо ли поискать библиотеку, которая реализовала функцию Y или что-то подобное дабы не "впасть в грех" изобретения велосипеда?

А как называется ситуация, когда человек подключает к своей программе 3-мегабайтную DLL только потому, что ему понадобилась ровно одна функция из нее, реализуемая десятком строк? Нежелание "изобретать велосипед" - достойное оправдание таким действиям?

А как называется ситуация, когда человек требует у начальства, чтобы его контора купила стороннюю библиотеку за $1000, в которой есть некоторая функциональность под предлогом нежелания "изобретать велосипед"? В то время как эта функциональность реализуется за человеко-неделю программистом с зарплатой в $1000, а использование других возможностей библиотеки не видится project manager-у даже в страшных снах (нах)?

А когда вы в очередной раз следуете некоему паттерну, вы разве не изобретаете велосипед в очередной раз, если уж на то пошло? Да, вы его изобретаете, просто вы не привыкли вешать клеймо "изобретать велосипед" именно на этот вид дейтельности.

Вред ярлыка состоит не в том, что он неверен, а в том, что он применяется бездумно. Таково свойство ярлыка: навесил, и кажется, будто что-то этим доказал. Избегание повторного написания кода рационально, но рационально оно при соблюдении ряда условий. А эти условия не обязаны соблюдаться всегда. Они часто и не соблюдаются, но привычка пугаться ярлыков даже не позволяет задуматься: а как в данном случае - принцип работает или нет?

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

[identity profile] realsonic.livejournal.com 2005-11-09 08:00 pm (UTC)(link)
Извиняюсь за оффтопик, но $1000 - какая это зарплата по величине? И где? (в каком городе)

[identity profile] psilogic.livejournal.com 2005-11-09 08:11 pm (UTC)(link)
это просто пример
по меркам Москвы для программера ну... так себе, средненько. для подмосковья - не шик, но нормально.