Заюзать либы vs сделать самому

dimon72

Зачем вообще тогда нужны форумы по программированию? Брали бы все готовые либы, куски кода и радовались.

Dasar

> Зачем вообще тогда нужны форумы по программированию? Брали бы все готовые либы, куски кода и радовались.
именно так и надо делать,
"все уже написано до нас", 21-век однако.
если 20 век был в первую очередь - "сесть и разработать", то 21 - "найти, допилить напильником под себя, заюзать".
или другими словами: разработать каждый дурак может, а вот грамотно подцепить чужое решение - это надо уметь.

kokoc88

если 20 век был в первую очередь - "сесть и разработать", то 21 - "найти, допилить напильником под себя, заюзать".
или другими словами: разработать каждый дурак может, а вот грамотно подцепить чужое решение - это надо уметь
Тяжело полностью с тобой согласиться. Вот взяли мы для проекта вроде бы неплохой себе grid от DevExpress... За год пришлось допилить напильником столько модификаций под себя, что уже хватило бы на код целого разработанного с нуля grid.

Marinavo_0507

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

Dasar

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

Dasar

если ты выбираешь чужие решения, которые вынуждают тебя трахаться в гамаке на лыжах, то это только твое неудачное решение
в данном случае больше подходит:
1. дураки на ошибках не учатся
2. умные учатся на своих ошибках
3. мудрые учатся на чужих ошибках
ps
кстати, я правильно понимаю, что ты так и не понял за чем народ хочет Open source?

kokoc88

во-первых, если вы бы с нуля разрабатывали грид, то у вас скорее всего до сих пор решения бы не было
во-вторых, очень важно понимать - в чем именно состоит твоя разработка, т.е. если это, в первую очередь, красивый и мега удобный вывод информации, то да - скорее всего стоит разработать свой грид, если же - разработка состоит в первую очередь из расчета, то гридом заниматься не стоит.
То, что написано во-первых - точно не так. Не стоит считать, что везде работают дураки.
А во-вторых, мне кажется, что важно понимать срок, на который рассчитан проект. Если это годы - всегда писать свои компоненты. (Т.е. разработка состоит и из клёвого вида, и из рассчёта.) Если же требуется быстро склепать что-нибудь, то лучше пользоваться готовыми решениями.
Из банальных примеров: css в тонком клиенте на ie6 поехал на ie7, утечки памяти в jscript ie, наполовину переписанный грид DevExpress.

kokoc88

С нуля и дурак напишет, а настоящий мужчина хочет полноценно трахаться в гамаке и на лыжах.
Настоящий мужчина, может быть, и хочет. А вот 50% ресторанов в Москве - не очень.

Helga87

Если это годы - всегда писать свои компоненты.
Окей. Итак, мы преуспевающая молодая компания, разрабатывающая и продающая корпоративный софт, который будет развиваться много лет. На дворе 1994 год, Северо-Американские штаты. Мы набрали команду профессионалов, которые всего за год получили первую рабочую систему со всеми компонентами, разработанными с нуля. В том числе, диалог выбора файлов, который такой же как и системный (Win 3.x но свой, надежный. Но, чу! я слышу пушек гром — Микрософт выпускает на рынок Win 95, в которой совсем другой диалог выбора файлов. Ок! говорят профессионалы и переписывают это компонент под веяния нового времени. Win98 — Ок! Win XP — Ok! Win Vista — Ok!
Мы уже немолодая компания, которая продает корпоративный софт, развивающийся годами, вышло много версий и куча пользователей совершенно разных годов инсталляций. Мы вложили уже сто тысяч долларов в развитие диалога выбора файлов. Службе поддержки приходится сталкиваться с тем, что, имея пять версий этого диалога, необходимо бороться с пятью, а то и с тринадцатью видами глюков — когда версия для операционной системы x установлена на правильной или более поздней системе y.
У нашего основого акционера возникает вопрос — куда уходят деньги, почему прибыли такие невысокие? почему у конкурентов софт красивее, дешевле и потому в сто раз более распространенный. Что ответить ему?

kokoc88

В том числе, диалог выбора файлов, который такой же как и системный (Win 3.x но свой, надежный. Но, чу! я слышу пушек гром — Микрософт выпускает на рынок Win 95, в которой совсем другой диалог выбора файлов. Ок! говорят профессионалы и переписывают это компонент под веяния нового времени. Win98 — Ок! Win XP — Ok! Win Vista — Ok!
Ты утрируешь. Впрочем, не важно. В этом случае мы бы просто не сменили наш диалог выбора файлов. Зачем менять свой хороший компонент?
Ты же не утверждаешь, что, например, бери ты Excel разных версий и ничего не пришлось бы переписывать? А ведь это продукт с очень хорошим backward compatibility. Но до сих пор софт, на нём основанный, требует установки какой-то определённой версии.
А как ты прокоментируешь поехавший css? (У нас ещё не искали тех. решения возникшей проблемы.)

Helga87

В этом случае мы бы просто не сменили наш диалог выбора файлов. Зачем менять свой хороший компонент?
как это зачем?
а продавать твои менеджеры будут софт с интерфейсом, принятым 13 лет назад? Им скажут — возьмем у других, там более новый софт, не то что у вас — старье какое-то.
Ты же не утверждаешь, что, например, бери ты Excel разных версий и ничего не пришлось бы переписывать? А ведь это продукт с очень хорошим backward compatibility. Но до сих пор софт, на нём основанный, требует установки какой-то определённой версии.
Excel почти с нуля переписывается каждый раз, ага. Но ресурсы и объем клиентской базы у МС и небольшой софтверной компании разные. Те, кто работают в компаниях размера МС могут говорить "будем писать с нуля".
А как ты прокоментируешь поехавший css? (У нас ещё не искали тех. решения возникшей проблемы.)
IE кривой, чо тут комментировать. =)
Это пример, почему завязка на чужие компоненты не спасает от проблем. Зато ваш софт нахаляву получил всякие вкусности вроде ClearType, автоматической поддержки InkPen на Tablet PC, возможность интеграции со всякими полезными утилитами, вроде менеджеров закачек или менеджеров паролей и прочее.

kokoc88

а продавать твои менеджеры будут софт с интерфейсом, принятым 13 лет назад? Им скажут — возьмем у других, там более новый софт, не то что у вас — старье какое-то.
Ага, то есть теперь мы уже и кнопки на интерфейсе этого контрола через GDI рисовали?.. Так тебе ничего бы не помогло, поддержка нового стиля всегда требовала бы доработок. Но они не так страшны, как ты их расписываешь. Если бы мы написали удобный контрол, нам не пришлось бы заново его переписывать для того, чтобы кнопки на нём стали такие, как в XP и т.п.
Ответь на другие тезисы в моём посте.

Helga87

ответил =)

kokoc88

Ну, судя по ответам, ты всё-таки понимаешь о чём я веду речь. Я согласен, что до маразма доводить не надо. Надо искать золотую середину.

Dasar

> Ты же не утверждаешь, что, например, бери ты Excel разных версий и ничего не пришлось бы переписывать?
Основной смысл не в том, что надо что-то переписывать, а в том, что если что-то пишешь сам, то в этой области надо становиться экспертом.
если мы сами руками оптимизируем под SSE2, то сразу тянутся такие вопросы, как:
1) как правильно писать под SSE,
2) как себя SSE ведет на разном железе,
3) что делать, если SSE нет,
4) как определить поддерживаемую версию SSE
5) как на скорость влияет размер кэша и размер обсчитываемого массива
и т.д.
в случае использования чужого решения необходимо только:
качать умение выбора и подключения чужих либ,
иметь общие знания о работе чужих либ.
отличие сегодняшнего времени от 20-го века в том, что областей с которыми приходится сталкиваться при решении отдельной задачи слишком много (сотни и сотни и соответственно во всех них не получится стать экспертом - значит свое решение даже если получится, то скорее будет слишком посредственным.

Dasar

> IE кривой, чо тут комментировать. =)
> Это пример, почему завязка на чужие компоненты не спасает от проблем. Зато ваш софт нахаляву получил всякие вкусности вроде
основные вкусности тонкого клиента другие.

kokoc88

если мы сами руками оптимизируем под SSE2, то сразу тянутся такие вопросы, как
Я вовсе не отстаивал право на жизнь вышенаписанного кода. И не спорю, что подобных примеров много. Например, лучше поддерживать текущий DirectX, чем писать всё своё, пусть даже для Сталкера. Но очень часто лучше написать своё, и важно грамотно опнять момент, когда это необходимо сделать.

Helga87

основные вкусности тонкого клиента другие.
тонкий клиент — концепция. Его можно сделать даже на основе Acrobat Reader. Проблемы с IE — это проблемы с выбором реализации. Можно было дать два ответа: "откажитесь от IE" или "да, все плохо, но радоваться тоже есть чему"

Dasar

> Его можно сделать даже на основе Acrobat Reader.
этим ты потеряешь как раз одно из важных преимуществ тонкого клиента - это то, что вся инфраструктура стоит и работает без нашего участия.
если Acrobat reader используется только нами для тонкого клиента, то если acrobat reader не будет работать у пользователя, то будет не работать именно наше приложение, а не инфраструктура у пользователя.
отличие понятно?

Helga87

не, ты не понял. Это не стеб был. Сейчас Adobe предлагает целый набор решений для разработчиков, основанный на использовании Adobe Acrobat Reader в качестве хоста для тонкого клиента. Основное применение — там, где надо заполнить форму, провести валидацию данных и дальше форму либо распечатать, либо сохранить в pdf (тут лицензионные ограничения только на Acrobat не-Reader отправить на сервер по web service и пр. Т.е. то же самое, что обычно говорят про тонкий клиент на html, но в качестве преимущества активно продвигается идея "это та же бумажка, только на мониторе! Бабок переучивать не придется".
Про то, что "велосипеды" — обычно это плохо, я в курсе.

Dasar

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

Helga87

еще раз спрашиваю, тебе понятно, почему есть такое отличие?

честно, не уверен, что ты имеешь ввиду. Подразумеваешь то, что IE встроен в ОС, а Acrobat — нет? В этом плане отличие вижу, а также знаю один проект, в котором идея применения в качестве хоста Acrobat-а очень нравилась руководству — пользователями были сотрудники полугосударственных компаний, в которых денег на винду нет, а проконтролировать их можно. Т.е. имелся спрос на решение под линукс. И тут уже невозможность установки IE — твоя проблема.

Dasar

> Подразумеваешь то, что IE встроен в ОС, а Acrobat — нет?
и это тоже.
еще более важно:
1. что IE используется пользователем и для решения других задач, Acrobat Reader едва ли используется
2. у IE есть хоть какие-то альтернативы (другие браузеры у Acrobat Reader-а - нет.
соответственно при использование IE при возникновении проблем будет типичный следующий сценарий:
Пользователь: у меня не работает ваша программа
S: что у вас именно не получается?
П.: я запускаю IE, а он не запускается
S. вы пробовали комп выключить, а потом снова включить?
П.: да пробовал не помогает
S. переставьте IE
П. уже два раза переставил
S. обратитесь в службу поддержки IE
П. обращался, молчат
S. переставьте винду
П. не хочется, у меня здесь куча всего стоит, очень много времени уйдет на перестановку
S.: Э-э-э... давайте мы подумаем, а вы перезвоните через недельку
через недельку (если Support хороший, если стандартный - то никогда)
S: мы тут подумали, документацию почитали, можете попробовать изменить настройки IE
П. да, нет, у меня все уже хорошо. я потрахался, потрахался без IE, но понял что без него вообще ничего не получается делать, и все с нуля переставил, и ваша программа тоже отлично запахала.
возможен также второй вариант:
П. я Opera-у поставил, у меня ваша прога заработала, криво, конечно, но вроде работает.
для Acrobat-а же придется либо долго уговаривать, чтобы пользователь винду переставил, либо ехать к нему и разбираться, а почему же у него все-таки acrobat не работает.
соответственно во втором случае: и support больше на себя денег оттягивает, и больше вероятность, что пользователь все-таки уйдет к конкурентам.

dimon72

Уважаемые!
Прошу прощения, но не кажется ли вам, что последнее несколько не о том? Здешний форум слишком повёрнут на сетевом программировании.
Мне вот, например, пофиг (в определённых пределах, конечно как там поведет
себя тот или иной компонент Мелкософта на очередной ОС, что и как они там интегрируют в IE и пр.
Мне глубоко пофигу до всяких клиент-серверных соглашений. У меня есть распространенная ОС, более или менее стандартный
набор компьютерного железа плюс свои решения в виде аппаратной части (блок усилителей, АЦП, ДСП и т.д.) и мне нужно всё это
спаять, сделать софты и, в конечном счёте, заставить работать в едином аппаратно-программном комплексе. Всё очень сурово, вплоть до того, что если, скажем, надо будет
пользователю воткнуть только определённый тип видеокарты для нормального функционирования системы, то мы пойдём на это. Я, конечно,
несколько довожу до абсурда, но так выпуклее передается суть. Испорчены вы сетевыми технологиями, ИМХО.
To :
"если мы сами руками оптимизируем под SSE2, то сразу тянутся такие вопросы, как:
1) как правильно писать под SSE,
2) как себя SSE ведет на разном железе,
3) что делать, если SSE нет,
4) как определить поддерживаемую версию SSE
5) как на скорость влияет размер кэша и размер обсчитываемого массива
и т.д."
1) вопрос практически решён (кстати, речь шла об SSE без 2, но, в принципе, это пофиг);
2) ИМХО вообще глюк, извиняюсь, сказан: у нас есть набор инструкций и они должны работать. Это тоже самое, что сказать: "нужно внимательно изучить как работают операции с регистрами eax, ebx, ecx на процессоре Pentium 3 800Мгц и не отличается ли их поведение, скажем, он камня P3 533МГц". Другое дело, если пытаться запускать функцию, реализующую
какие-то инструкции, которые железо пользователя физически не в состоянии выполнить. Так я ещё раз подчёркиваю: у меня далеко не IE. Это для него важно, чтобы
страницы отображались одинаково вне зависимости от платформы, ОС и пр. Мне - совершенно пофиг. Я вообще могу привязать пользователя к железу, а он будет радоваться.
3) делаем простую проверку на поддержку SSE.
Например:
code:
-----------------------------------------------------------------
function CheckSSE: Boolean;
var TempCheck: dword; begin
TempCheck := 1;
asm
push ebx
mov eax,1
db $0F,$A2
test edx,$2000000
jz @NOSSE
mov edx,0
mov TempCheck,edx
@NOSSE:
pop ebx
end;
CheckSSE := (TempCheck = 0);
end;
-----------------------------------------------------------------
Если поддержки нет - вызываем обычную, кондовую функцию. В чём проблема-то?
4) в простейшем виде см. выше, а так, есть способы, которые я не буду приводить. Есть и работают.
5) эмпирически всё определить можно. Для практического решения ведь нужно, а не для точного теоретического расчёта.
Как говорится, примите и проч.
вот очень точно сказал:
"...очень часто лучше написать своё, и важно грамотно опнять момент, когда это необходимо сделать".
В любом случае, спасибо. Рад, что мой дилетантский фрагмент кода вызвал такую активность.

Dasar

или тоже самое с определениями:
1. инфраструктура - это набор ПО за обеспечение работоспособности отвечает пользователь
2. твое решение - это набор ПО за обеспечение работоспособности отвечаешь ты
если для твоего решения необходим чужой модуль A, но этот модуль используется пользователем и для других задач - это инфраструктура
если же чужой модуль A, используется только твоим решением, и пользователю он нафиг не сдался, то этот модуль часть твоего решения.
так понятно?
соответственно по этим определениям:
Windows(ОС IE(браузер) - являются в большинстве случаев инфраструктурой, потому что пользователь использует для решения широкого круга своих задач
Acrobat reader инфраструктурой не является, а является частью твоего решения, потому что пользователем его не использует при решении своих задач.

Helga87

да. То, что это новое решение (такое применение акробата не подкрепленное большим сообществом разработчиков, большим количеством программ, использующим его и большим количеством пользователей таких программ, — это минус решения. А еще минус, что это новое, но "еще одно" решение из класса подобных.
Именно потому, что Acrobat не является распространенным решением я и упомянул его в самый первый раз как "даже на Acrobat можно построить тонкого клиента".
Я верно понял, что сейчас идет попытка сказать, что тонкие клиенты имеет смысл писать только html-based?

Dasar

> форум слишком повёрнут на сетевом программировании.
вообще здесь обсуждалось скорее тема "как заработать как можно больше денег", а не сетевое программирование.
> Я вообще могу привязать пользователя к железу, а он будет радоваться.
этим ты сразу говоришь: с пользователя можно было взять 2тыс. $ за мое решение и он бы радовался, но получилось взять только 500$, потому что 1500$ пользователю пришлось потратить на железо, которое необходимо для работы моего решения.

Dasar

> Я верно понял, что сейчас идет попытка сказать, что тонкие клиенты имеет смысл писать только html-based?
писать можно и на других решениях, но полноценные плюсы тонкого клиента будут только от html-based.

dimon72

вообще здесь обсуждалось скорее тема "как заработать как можно больше денег", а не сетевое программирование.
Не, именно вокруг NET подходов всё ваше обсуждение крутится.
В моём случае - другой подход.
> Я вообще могу привязать пользователя к железу, а он будет радоваться.
этим ты сразу говоришь: с пользователя можно было взять 2тыс. $ за мое решение и он бы радовался, но получилось взять только 500$, потому что 1500$ пользователю пришлось потратить на железо, которое необходимо для работы нашего решения.
Неверно в том случае, если у меня АППАРАТНО-ПРОГРАММНЫЙ комплекс.
Пользователь покупает И железо И программу.

Dasar

> Не, именно вокруг NET подходов всё ваше обсуждение крутится
что такое Net подход?
> Неверно в том случае, если у меня АППАРАТНО-ПРОГРАММНЫЙ комплекс.
> Пользователь покупает И железо И программу.
т.е. для работы твоей программы всегда необходим отдельный компьютер?
и твоя программа у пользователя работает 24 часа 7 дней в неделю?

dimon72

т.е. для работы твоей программы всегда необходим отдельный компьютер?
и твоя программа у пользователя работает 24 часа 7 дней в неделю?
Отдельный - да, но не обязательно 24 часа и всю неделю. Достаточно, если несколько часов в день. Главное - нужен и работает. Т.е. у нас не только программа, но и своё железо.
что такое Net подход?
В этом подразделе форума есть гораздо более опытные и многоуважаемые товарищи, которые смогут дать определение.
Я понимаю примитивно - абстракция от конкретного компа. Всё в жертву (самое печальное, что часто в жертву приносится быстродействие). Всякие байт-коды и пр. Революционная, ити её мать, технология, что тут сказать.
Вот программы на Базике прекрасно работают на двадцитилетней давности компах и сейчас, когда о сетевых технологиях никто и не знал толком. Интерпретатор, примитив.

Helga87

Т.е. у нас не только программа, но и своё железо.
а вот тогда почему бы не использовать для этих целей спецпроцессоры, которые специально науськаны на вещи, связанные с обработкой сигналов? скорость будет минимум на порядок выше той, что даст стандартный комп с sse, но при этом еще и стоимость такой коробочки может уложиться в 100-200 баксов.

Landstreicher

> Acrobat reader инфраструктурой не является, а является частью твоего решения, потому что
> пользователем его не использует при решении своих задач
Почему ты так решил? Большинство пользователей, которых я знаю, постоянно читают PDF-файлы (например, какие-либо книги/документацию). И для этой цели используется именно Adobe Reader.

dimon72

Всё правильно, шаришь. Это называется DSP- digital signal processor. Может взять на себя значительную часть работы по обработке данных, например, делать FFT "на лету", цифровую фильтрацию и т.д. Для автономно работающих (без компа) устройств - самое то. Будет, скорее всего, такой вариант, но пока что делаем железку с обычным компом, в качестве основного "обрабатывателя".

mysha

> форум слишком повёрнут на сетевом программировании
все правильно - все что здесь предлагалось - это и есть сетевое программирование - получение денег за чужую работу
(по аналогии с сетевым маркетингом)

durka82

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

Вообще-то в pdf-е хранится немало различных документов.
И мне лично тяжело представить ситуацию, когда у человека на компе не стоит pdf-смотрелка.
Разве что пользователь использует комп исключительно для работы и по работе pdf-документов у него нет (но тогда у него с таким же успехом может не быть и ИЕ, так как именно для работы он нужен далеко не всем).
А если человек не пользуется этим форматом из принципа - тогда шансов на то, что у него нет ни винды, ни ИЕ, гораздо больше

durka82

писать можно и на других решениях, но полноценные плюсы тонкого клиента будут только от html-based.

А можно подробнее о плюсах?
А то как-то это утверждение выглядит сомнительным, хотелось бы аргументации...

Dasar

> Почему ты так решил? Большинство пользователей, которых я знаю, постоянно читают PDF-файлы (например, какие-либо книги/документацию). И для этой цели используется именно Adobe Reader
ты уверен, что у тебя репрезентативная выборка?
я лично Acrobat Reader ставлю, примерно, через месяц после установки винды.
т.е. мне Acrobat Reader нужен где-то раз в месяц, соответственно я как пользователь, не сильно расстроюсь, если у меня Acrobat Reader не будет работать, или будет работать с глюками.
но если у меня сдохнет браузер (IE то я уже прямо сегодня буду заниматься его починкой, или на крайняк поставлю альтернативу ему.
вот именно про это я и хочу сказать, что пофигу стоит или не стоит IE/Acrobat у пользователя, на много важнее в данном случае, будет пользователь самостоятельно стараться решить проблему, или не будет.
сможет он найти решение или не сможет.

garikus

А у меня вообще нет IE
Есть Acrobat Reader, но если чё, то сойдёт и какой-нибудь gpdf.

Marinavo_0507

я лично Acrobat Reader ставлю, примерно, через месяц после установки винды.
человек, регулярно ставящий винду, не может считаться нормальным пользователем
нормальный пользователь получает винду предустановленной, и adobe reader как правило входит в комплект, так как куча документации к оному компу идёт в pdf

Dasar

> человек, регулярно ставящий винду, не может считаться нормальным пользователем
винду на один компьютер я ставлю редко, где-то раз в два года. просто у меня компьютеров много...
поэтому меня можно считать местами нормальным пользователем.
> нормальный пользователь получает винду предустановленной, и adobe reader как правило входит в комплект, так как куча документации к оному компу идёт в pdf
если пользователь получает даже предустановленую винду, то какую он собирается читать документацию на компьютер да еще и в pdf-е?
acrobat, по умолчанию, на компьютерах, которые делаются не самими пользователей (как домашние, так и корпоративные) - ни разу не видел.
зы
Acrobat вошел в моду, вообще, всего несколько лет назад, до этого (и сейчас львиная доля) все документы шли в rtf, doc, html/chm.
Оставить комментарий
Имя или ник:
Комментарий: