Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > Свой велосипед v.s. стандартная либа


Автор: LSD 27.7.2007, 14:35
Интересует, кто что предпочитает использовать в своих проектах: потратить время и разобраться со стандартной библиотекой, или потратить время на написание своей библиотеки. Речь идет о случаях когда такая библиотека существует и нет опыта работы с ней.
Случаи когда такой библиотеки нет, или автор прекрастно с ней знаком - в голосовании не рассматриваются. Потому как во втором случае затраты времени на освоение ее равны нулю, а в первом выбора нет.

Пункт другое желательно комментировать.

Автор: m0ro 27.7.2007, 16:22
Цитата

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

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

Автор: W4FhLF 27.7.2007, 17:34
Если библиотека удовлетворяет моим требованиям - воспользуюсь ей. 

Автор: Nastya 27.7.2007, 17:52
Ажно растерялась. но выбрала "Одинаково часто использую и то и то" Все зависит от того что хотелось бы иметь конкретно ;)

Автор: JackYF 28.7.2007, 00:19
В основном предпочитаю стандартные библиотеки. Но велосипеды тоже иногда пишу. Хотя бы для практики и опыта.

Автор: Domestic Cat 28.7.2007, 00:26
Цитата

Cartman : - Mom -- kitty is being a dildo.
Cartman's mom : - I know a special little kitty that's sleeping with mommy tonight. 


Понимайте как хотите ))))

Автор: mr.DUDA 28.7.2007, 09:30
Почему именно "стандартные"? А как же чужие, платные библиотеки?


Автор: Domestic Cat 28.7.2007, 09:41
Ну короче как нам скажут, так и делаем. 


Автор: LSD 28.7.2007, 13:01
Цитата(mr.DUDA @  28.7.2007,  10:30 Найти цитируемый пост)
Почему именно "стандартные"? А как же чужие, платные библиотеки?

Наверно лучше было написать сторонние или готовые библиотеки.

Автор: mr.DUDA 28.7.2007, 13:10
Сторонними библиотеками под дотнет постоянно приходится пользоваться, т.к. проще взять готовое и с саппортом, чем тратить человекочасы на своё сырое и глючное  smile 

Автор: sergejzr 28.7.2007, 13:29
Надо бы всех программёров обязать использовать стандартные либы!! smile))

Дел в том, что через полгода после написания самому -то сложно вспомнить, что это было и нафига. Не говоря уже о том, что другой человек возможно будет должен использовать твой код. Готовые библиотеки как правило хорошо задокументены + постоянно апдейтятся и оптимируются. так же вероятность того, что другой человек знаком с такой либой намного болъше того, что он знаком с твоим велосипедом smile))) Так что всегда может подменить. и код легче ему дибагить при случае..

Я придерживаюсь такого правила. Если есть подходящая либа - беру её, если нет - пишу такую а докой итд. А уж "application specific" вещи ессно писать надо самому. К тому же стараюсь просить разработчиков либ вставить то что не хватает. зачастую тыкают носом в то, что уже существует такое, просто не нашёл smile

Автор: nerezus 28.7.2007, 13:37
Велосипедисты — это дураки и гении. Либо обычные люди, но текущие решения убогие, а велосипед круче.

Автор: nickless 28.7.2007, 14:32
Раньше любил велосипеды писать smile 
Потом дошло что пустая трата времени, теперь сначала стараюсь найти подходящую либу smile 

Автор: tux 28.7.2007, 17:39
Предпочитаю использовать стандартные, хотя бывают случаи что нет того, что нужно, по крайней мере из open-source. В текущем проекте я такие решения не принимаю и недавно наткнулся на ситуацию когда архитектор решил писать велосипед потому что "у нас мало времени".

Автор: Samotnik 29.7.2007, 02:34
Использую стандартные, свои еще писать неумею... smile

Добавлено через 1 минуту и 18 секунд
Цитата(Domestic Cat @  28.7.2007,  00:26 Найти цитируемый пост)
Cartman : - Mom -- kitty is being a dildo.Cartman's mom : - I know a special little kitty that's sleeping with mommy tonight. 

 smile  smile  smile  smile 

Автор: LSD 29.7.2007, 19:34
Цитата(sergejzr @  28.7.2007,  14:29 Найти цитируемый пост)
Дел в том, что через полгода после написания самому -то сложно вспомнить, что это было и нафига. Не говоря уже о том, что другой человек возможно будет должен использовать твой код. Готовые библиотеки как правило хорошо задокументены + постоянно апдейтятся и оптимируются. так же вероятность того, что другой человек знаком с такой либой намного болъше того, что он знаком с твоим велосипедом ))) Так что всегда может подменить. и код легче ему дибагить при случае..

Хороший аргумент.

Цитата(tux @  28.7.2007,  18:39 Найти цитируемый пост)
архитектор решил писать велосипед потому что "у нас мало времени"

Это как?

Автор: tux 2.8.2007, 07:49
Цитата(LSD @  29.7.2007,  19:34 Найти цитируемый пост)
Это как? 

А вот не знаю. smile Третий месяц длится эпопея.

Автор: Mayk 3.8.2007, 18:45
Использую готовые либы, если их версия »0.1. 
Потому как они уже отлажены. 

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




Автор: Sunvas 11.8.2007, 13:31
Я стараюсь взять максимум из того хорошего, что доступно. Если такого хорошего нет - пишу сам: это и приятно и полезно.

Автор: LSD 11.8.2007, 22:34
Ну а в http://forum.vingrad.ru/forum/topic-166350.html случаях, кто как предопочитает поступать?
С одной стороны свой лисапед занимает 15 строк кода, а либа пару килобайт.

Автор: sergejzr 12.8.2007, 01:56
LSD, сильно зависит от того, сколько времени уйдёт на поиск и установку либы. Вполне возможно, что такой велик я бы оставил, но взял на заметку и при следующей необходимости функции из Jcarta переписал бы под неё.

Автор: archimed7592 7.10.2007, 21:36
Велосипеды я вообще не люблю и сам стараюсь не писать - сначала пытаюсь найти более-менее "стандартное" решение и только потом уже, если решение не найдено, пишу велосипед. И причина этому совсем не моя лень писать эти велосипеды.
Во-первых, найдя нужную библиотеку один раз я смогу после использовать её сколько мне будет угодно - экономия времени(а время, как известно не купишь ни за какие деньги smile).
Во-вторых, очень важный момент заключается в том, что велосипеды имеют тенденцию выходить с конвеера с квадратными колёсами. Создавая библиотеку, разработчики анализируют все возможные косяки, делают её максимально производительной. У библиотеки есть пользователи и их много и они постоянно жалуются разработчикам, что это не так, а то не эдак, а там баг, а здесь косяк. И библиотека постоянно улучшается и улучшается... С велосипедами в этом плане всё немного печальней - едут, пусть даже криво, - и хорошо.

А ещё, скажите мне, плс, кто-нибудь станет реализовывать работу, к примеру, с картинками в формате PNG через свой велосипед? Это конечно можно, но, ИМХО, проще набрать в гугле png library. Видимо топикстартер имеет ввиду маленькие велосипедики?

Автор: Maksym 9.10.2007, 23:16
ответил
Цитата
В основном предпочитаю стандартные библиотеки

Но это зависит от проекта. 
Если приоритет -- скорость, стараюсь абсолютно все брать готовое. 
Если качество и простота дальнейшей поддержки -- то по каждой функциональности принимаю отдельное решение исходя из критериев:
- насколько готовое заточено именно под мою задачу;
- насколько готовое стабильно (популярность, число релизов, возраст продукта);
- развивается ли готовое решение (дата последнего релиза);
- хорошо ли документировано готовое решение;
- насколько трудоемко написать свой вариант с заточкой под специфику проекта.

Автор: LSD 10.10.2007, 21:07
Цитата(archimed7592 @  7.10.2007,  22:36 Найти цитируемый пост)
Видимо топикстартер имеет ввиду маленькие велосипедики?

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

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

Автор: Daevaorn 10.10.2007, 21:14
Цитата(LSD @  10.10.2007,  22:07 Найти цитируемый пост)
Вот и мы сейчас тоже пишем свой велосипед, вместо того чтобы пользоваться стандартными, потому как не удалось найти такой который бы позволил выполнить все наши требования. 

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

Автор: LSD 10.10.2007, 21:16
Если для корзины предусмотрены крепления smile 

Автор: DragonFire 25.10.2007, 20:40
ИМХО свое лучше т.к.:
1) Будет глючить взял переделал, а вот глюки с совместимостью и т.д. устранить посложнее...
2) Доработка - взял впихнул ченить новенькое, коменты стоят тебе все понятно - стиль знакомый исходники всегда под рукой..
3) и т.д....)) много можно найти причин... 

Автор: archimed7592 25.10.2007, 22:08
Цитата(DragonFire @  25.10.2007,  20:40 Найти цитируемый пост)
Будет глючить взял переделал,

Не аргумент. Готовые решения редко глючат. А если и глючат, то эти глюки исправляют быстрее и с большей надёжностью(меньше вероятность того, что исправление не принесло новых глюков).


Цитата(DragonFire @  25.10.2007,  20:40 Найти цитируемый пост)
вот глюки с совместимостью и т.д. устранить посложнее...

Что за "глюки с совместимостью и т.д."?


Цитата(DragonFire @  25.10.2007,  20:40 Найти цитируемый пост)
Доработка - взял впихнул ченить новенькое, коменты стоят тебе все понятно - стиль знакомый исходники всегда под рукой..

Что мешает расширить ф-циональность готового решения?


Цитата(DragonFire @  25.10.2007,  20:40 Найти цитируемый пост)
и т.д....)) много можно найти причин... 

Пока я их не вижу...
Я не спорю - причины найти можно всегда. Главный фактор - целесообразность. Но я сомневаюсь, что ты найдёшь целесообразные причины написания своего драйвера ФС(только потому, что "свое лучше").

Автор: Alexeis 25.10.2007, 22:52
  Стандартные по максимуму. Нужно жалеть тех, кто будут потом читать твой код. Чем меньше своих велосипедов, тем прозрачнее читается реализация алгоритма и тем легче искать в нем баги. Ведь при использовании велосипедов приходиться проверять еще и их на ошибки, чтобы гарантированно сузить область поиска.

Автор: DragonFire 26.10.2007, 08:56
archimed7592, 
Цитата(archimed7592 @  25.10.2007,  22:08 Найти цитируемый пост)
Что за "глюки с совместимостью и т.д."?

Сам отвечаешь на свой вопрос: "драйвера", скажешь все работают устойчиво? И вдогонку, как ты расширишь функциональность готового драйвера? Ведь не всегда исходники достать можно, зачастую только дллки... 

Автор: archimed7592 26.10.2007, 10:24
Цитата(DragonFire @  26.10.2007,  08:56 Найти цитируемый пост)
Сам отвечаешь на свой вопрос: "драйвера", скажешь все работают устойчиво?

Драйвер - это я утрировал(типа драйвер же ты не пишешь - ты используешь стандартную библиотеку).
Про устойчивость не понял - у тебя какие-то проблемы с доступом к ФС? Пишешь свои драйвера, чтобы решить эти проблемы? OMG 0_о


Цитата(DragonFire @  26.10.2007,  08:56 Найти цитируемый пост)
И вдогонку, как ты расширишь функциональность готового драйвера? Ведь не всегда исходники достать можно, зачастую только дллки...  

Так, чисто из интересу... Ты про http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29 в курсе?

Автор: DragonFire 26.10.2007, 11:12
Цитата(archimed7592 @  26.10.2007,  10:24 Найти цитируемый пост)
Про устойчивость не понял - у тебя какие-то проблемы с доступом к ФС?

Я тоже утрировал) Почему обязательно ФС?)


Цитата(archimed7592 @  26.10.2007,  10:24 Найти цитируемый пост)
Так, чисто из интересу... Ты про паттерны проектирования в курсе?

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

Автор: archimed7592 26.10.2007, 11:42
Цитата(DragonFire @  26.10.2007,  11:12 Найти цитируемый пост)
В курсе)

И про адаптер? И про декоратор? Тогда какие проблемы в добавлении новой ф-циональности?

Автор: DragonFire 26.10.2007, 12:58
Цитата(archimed7592 @  26.10.2007,  11:42 Найти цитируемый пост)
И про адаптер? И про декоратор? Тогда какие проблемы в добавлении новой ф-циональности

Ладно если система реализована грамотно до добавить ей новую функциональность не представляется большой проблемой... Но всеравно считаю что в большинстве случаев это не так просто)) 

Автор: archimed7592 26.10.2007, 14:02
Цитата(DragonFire @  26.10.2007,  12:58 Найти цитируемый пост)
Ладно если система реализована грамотно до добавить ей новую функциональность не представляется большой проблемой...

Если она сделана не грамотно, то лучше сделать свой "велосипед", ибо готовое решение от Васи Пупкина, позавчера узнавшего что такое программирование - это не решение вовсе...

Автор: DragonFire 26.10.2007, 22:22
Цитата(archimed7592 @  26.10.2007,  14:02 Найти цитируемый пост)
Если она сделана не грамотно, то лучше сделать свой "велосипед", ибо готовое решение от Васи Пупкина, позавчера узнавшего что такое программирование - это не решение вовсе... 

А теперь скажи реально ли сегодня найти стандартное, грамотно сделанное готовое, да к тому же еще и бесплатное(немаловажный фактор кстати) решение поставленной задачи? Причем задачи, отличающейся от написания драйвера))) 

Автор: archimed7592 26.10.2007, 22:26
DragonFire, конкретнее, pls.
Вот у меня задача стоит: сертификация аеропортов. Там, помимо всего прочего нужны сложные геометрические расчёты. Я порыл в сети и набрёл на CGAL. Почти всё что мне нужно есть. Всё чего нет - добавляется несколькими движениями руки.
Иначе мне пришлось бы писать всю эту геометрическую мутату самому.
Ессно, не для любой задачи есть готовое решение - тогда нужно писать "велосипед". В этом нет ничего страшного.

Автор: DragonFire 27.10.2007, 14:23
Согласен существует много готовых библиотек с решениями математики или графики... несколько меньше - физики... Но например когда я занимался нейронными сетями тут все алгоритмы пришлось самому писать) 
А так, естественно, зачем писать свой VCL если есть готовый)) 

Автор: archimed7592 27.10.2007, 14:29
Цитата(DragonFire @  27.10.2007,  14:23 Найти цитируемый пост)
Но например когда я занимался нейронными сетями тут все алгоритмы пришлось самому писать) 

И http://www.google.com/search?q=neural+network+library смотрел?


Цитата(DragonFire @  27.10.2007,  14:23 Найти цитируемый пост)
А так, естественно, зачем писать свой VCL если есть готовый))

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

Так бы и сказал, что искать готовые решения лень smile.

Автор: archimed7592 27.10.2007, 14:53
Т.е. я хочу сказать, что если решение идёт с компилятором/IDE, то как правило о нём многие знают и используют эти решения. Если же для того, чтобы использовать решение придётся немного потрудиться(найти его, установать, научиться пользоваться, протестировать), то многие почему-то предпочитают свои велосипеды. Чисто из праздного интересу: а зачем? Уже всё есть. Уже всё отлажено. Возьми "с полки" и используй на здоровье, а если баг найдёшь, так за тебя его исправят, да ещё и спасибо скажут - тебе останется только установить патч.
Вот и спрашивается - зачем?
Взять, к примеру PDF. Я не знаю насколько у него сложен формат, да и знать не хочу - зачем мне забивать голову бинарным форматом, когда есть куча свободных библиотек, предоставляющих более высокоуровневый интерфейс к PDF.
XML... можно парсить руками - это не сложно... А зачем? Есть промышленный стандарт - DOM, с которым и работать приятней и не нужно ничего изобретать.
Для выделения подстрок можно использовать pos, indexOf, find или как эта ф-ция называется в вашем языке, а можно использовать библиотеку для регулярных выражений.
Во всех готовых решениях есть один минус: в них нужно разобраться, но... Неужели это сложнее, чем написать свой велосипед?
Зато плюсов у готовых решений немерено и я их уже приводил... основные из них:
1) научиться нужно лишь единожды - потом можно использовать это решение в любом проекте, сколько угодно раз.
2) готовые решения как правило написаны более качественно и продуманно, чем решение написаное с перепугу "а завтра же deadline".
3) готовые решения как правило содержат меньше багов, ибо ими пользуешься не только ты, но и "миллион лемингов"(которые не могут ошибаться smile)

Автор: DragonFire 28.10.2007, 22:07
В чем-то ты конечно прав но для меня существует два минуса готовых решений:
1) Недоступность кода (тот же VCL я могу в любое время просмотреть полностью, а практически все библиотеки поставляются именно как библиотеки, а не набор юнитов)
2) Цена (далеко не все решения бесплатны, а если писать корпоративный проект то в любом случае покупать весь софт придется...)
Но никто не говорил что PDF RAR и другие форматы надо читать ручками)) 

Автор: archimed7592 28.10.2007, 22:23
Цитата(DragonFire @  28.10.2007,  22:07 Найти цитируемый пост)
Недоступность кода

Осмелюсь предположить, что тебе эти коды и не нужны вовсе. Действительно... Зачем они тебе? smile


Цитата(DragonFire @  28.10.2007,  22:07 Найти цитируемый пост)
Цена (далеко не все решения бесплатны, а если писать корпоративный проект то в любом случае покупать весь софт придется...)

Мммм... Мне кажется, что та же VCL тебе не бесплатно досталась? smile


Цитата(DragonFire @  28.10.2007,  22:07 Найти цитируемый пост)
Но никто не говорил что PDF RAR и другие форматы надо читать ручками))  

А какие надо? Именно надо. Т.е. в каких случаях не приемлется готовое решение и почему его нужно писать самому? Попробуй сформулировать критерии...

Автор: Maksym 29.10.2007, 14:37
Цитата(archimed7592 @  27.10.2007,  14:53 Найти цитируемый пост)
1) научиться нужно лишь единожды - потом можно использовать это решение в любом проекте, сколько угодно раз.
2) готовые решения как правило написаны более качественно и продуманно, чем решение написаное с перепугу "а завтра же deadline".
3) готовые решения как правило содержат меньше багов, ибо ими пользуешься не только ты, но и "миллион лемингов"(которые не могут ошибаться smile) 

Хорошо написал, присоединяюсь. Добавлю еще один пункт.
4) Готовые решения продолжают развиваться, исправляться и улучшатся параллельно с твоим проектом. И в следующие релизы твоего продукта таким образом войдут не только человеко-часы твоей команды, но вся работа проделанная над сторонним продуктом его командой. Если не поленишься, конечно, следить за его развитием и обновлять версии.

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

Цитата(DragonFire @  28.10.2007,  22:07 Найти цитируемый пост)
1) Недоступность кода (тот же VCL я могу в любое время просмотреть полностью, а практически все библиотеки поставляются именно как библиотеки, а не набор юнитов)

Это зависит от технологий. В Java, к примеру, такой проблемы нет.

Цитата(DragonFire @  28.10.2007,  22:07 Найти цитируемый пост)
2) Цена (далеко не все решения бесплатны, а если писать корпоративный проект то в любом случае покупать весь софт придется...)

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

Автор: DragonFire 29.10.2007, 18:27
Цитата(Maksym @  29.10.2007,  14:37 Найти цитируемый пост)
Это зависит от технологий. В Java, к примеру, такой проблемы нет.

К сожалению пишу на C++ и ObjectPascal )) Хотя подмечено верно...  
Цитата(Maksym @  29.10.2007,  14:37 Найти цитируемый пост)
Как правило, эта цена рассчитана таким образом, чтобы быть значительно ниже расходов на собственную разработку аналогичного модуля на достойном уровне качества.

Вопрос спорный) Но если его развивать еще пара страниц флуда появится... 

Автор: Rickert 23.1.2008, 10:03
А я псих, пишу всё своё smile 

Автор: Сумасшедший 28.1.2008, 13:42
Предпочитаю объединять готовые либы в то, с чем мне удобно работать.

Автор: jManiak 10.2.2009, 18:42
Все зависит от того сколько есть времени и есть ли подходящее настроение поизобретать велосипед. Опять же есть некоторые мелкие вещи, которые проще самому написать чем разбираться в здоровенной библиотеке в которой это всеголишь часть.

Автор: Fieral 10.2.2009, 18:54
Пишу всё сам. Так получается что когда я начинаю читать документацию о либе, в ней упоминаются незнакомые мне понятия, я начинаю читать документы и по ним и нахожу там ещё больше....  И так по экспоненте, до переполнения RAM мозга, потому как это напоминает попытку прочитать всю википедию.

В итоге я бросаю это гиблое дело и начинаю писать всё сам. Мне реально проще придумать алгоритмы и написать свой OpenGL "c блек-джеком и шлюхами" чем разобраться в документации. 

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

И тут я аккуратно прикручиваю чужую либу.  smile 


Автор: LSD 3.2.2012, 15:09
Цитата(Zloxa @  2.2.2012,  17:52 Найти цитируемый пост)
НЕ совсем понял. Если я предоставлю публичный доступ к своему велосипеду, он, что, в феррари превратится чтоле?

Тут ситуация следующая: просто выкладывание библиотеки конечно ничего в ней не изменит, но вот когда ей начнут пользоваться другие тут уже появятся позитивные изменения недоступные велосипеду:
- массовое тестирование библиотеки, в условиях сильно отличающихся от условий разработчика
- обратная связь от пользователей, что в библиотеке хорошо, что плохо, что стоит добавить
- пользователи могут помочь с написанием документации, всякие  How to и Quick start
- если исходники открыты, к разработке могут подключится и сторонние разработчики, или проект может взять к себе кто нибудь типа Apache Software Foundation

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)