budden писал(а):
Главное - это успеть на велосипеде доехать куда-то. Где-то на ЛОРе была притча про путь лиспера. Я, хоть и читал эту притчу, а всё равно меня затянуло, и когда я понял, что моя жизнь гораздо короче маршрута, остановился. Однако никто не захотел строить общий автобус - всем свои велики милее. В этом случае сойти с маршрута является разумным решением, хотя основная причина у меня всё же была не в этом.
согласен с вами: велосипеды ради велосипедов — это весело, но малопродуктивно.
впрочем, в моём случае у меня есть обоснование. во-первых, я уже использую BlackBox:LC для написания прикладного софта (а не только чтобы сам LC развивать). а во-вторых, я хочу иметь систему, которую я понимаю и могу модифицировать в одну морду (потому что совершенно не рассчитываю на то, что в LC набежит куча разработчиков; и что я буду этим разработчикам доверять — это ещё важнее). именно по второй причине я не хочу брать фокс: я его не понимаю. конечно, я могу потратить время и разобраться в фоксе, но я окидывал взглядом его код, и получается, что время на такой разбор будет как минимум не меньше того, которое я потрачу на написание нужных мне бэкэндов с нуля. более вероятно, что бэкэнды я сделаю даже быстрее, потому что у меня уже есть необходимые знания в предметной области.
я согласен с вами и в том, что изобретать с нуля вообще всё — это далеко не всегда хорошее решение. собственно, поэтому я и взял за основу уже готовый BBCB: это маленькая, простая, и в то же время очень мощная основа. ну и мне просто нравится, как она сделана (что, признаюсь, бывает нечасто).
если коротко, то я работаю как товарищ Вирт учил: модифицирую уже имеющийся язык и систему под свои практические нужды, основываясь на своём же практическом опыте. при этом стараюсь учитывать то, что было сделано до меня, и более-менее придерживаться правила не усложнять вещи без острой необходимости. при этом дополнительно стараюсь не терять понимание системы — а потому не затаскиваю в неё критически важные чужие куски, которых я не понимаю.
вот, например, декодер jpeg-ов я не понимаю — но это не критичная часть системы: это мне просто понадобилось однажды жыпег прочитать, я и спёр. можно было в пинг конвертнуть, конечо, но почему бы не спереть то, что плохо лежит. ;-) а вот декодер пингов я написал сам, и его я как раз понимаю. распаковщик deflate хоть и не мой, но там очень мало кода, и его несложно понять. X11 бэкэнд я тоже написал сам, и его я понимаю. также я довольно сильно переделал некоторые системные интерфейсы (Windows, тайлер, меню) — теперь я их тоже понимаю (ну, почти ;-).
вот как-то так: то, что я считаю для системы некритичным — я с удовольствием возьму уже готовое. а вот вещи типа компилятора — это очень, по моему мнению, критично, так что я лучше велосипед. пусть это будет не лучший в мире велосипед, но я буду понимать его устройство и могу быть уверен, что если вдруг у него слетит цепь или мне нужен будет второй багажник, я смогу это починить/сделать сам без особых усилий.