Писать полностью свой код
От: Leha86 Россия  
Дата: 18.08.06 07:30
Оценка:
Хотелось бы услышать мнение общественности вот по какому вопросу. Нормально ли это, если начальник требует абсолютно весь код писать самому. Т.е. не принимает никакие сторонние библиотеки. Программистов тут работает мало (как говорится, раз, два и обчелся). Я не спорю, пока пишешь все сам, досконально разберешься в проблеме. Но из-за этого существенно ведь падает производительность. Может быть лучше было найти золотую середину? Заранее благодарен за любые ответы.
-----
С уважением, Алексей.
Re: Писать полностью свой код
От: FlyDoc Россия http://www.flydoc.ru
Дата: 18.08.06 07:43
Оценка:
Здравствуйте, Leha86, Вы писали:

L>Хотелось бы услышать мнение общественности вот по какому вопросу. Нормально ли это, если начальник требует абсолютно весь код писать самому. Т.е. не принимает никакие сторонние библиотеки. Программистов тут работает мало (как говорится, раз, два и обчелся). Я не спорю, пока пишешь все сам, досконально разберешься в проблеме. Но из-за этого существенно ведь падает производительность. Может быть лучше было найти золотую середину? Заранее благодарен за любые ответы.


А начальник из своего каприза требует, или это политика компании?..

С серединой просто — код сторонних библиотек должен быть открыт. А кому из третьих сторон доверять, это дело начальника (ну или того, кому он эту ответственность доверит). Важно также рассмотреть вопрос лицензирования сторонних библиотек.
--------------------------
http://www.flydoc.ru
Re: Писать полностью свой код
От: bkat  
Дата: 18.08.06 07:46
Оценка:
Здравствуйте, Leha86, Вы писали:

L>Хотелось бы услышать мнение общественности вот по какому вопросу. Нормально ли это, если начальник требует абсолютно весь код писать самому. Т.е. не принимает никакие сторонние библиотеки. Программистов тут работает мало (как говорится, раз, два и обчелся). Я не спорю, пока пишешь все сам, досконально разберешься в проблеме. Но из-за этого существенно ведь падает производительность. Может быть лучше было найти золотую середину? Заранее благодарен за любые ответы.


А каковы его аргументы и что значит "не принимает никакие сторонние библиотеки"?
Что совсем никакие и ни STL ни MFC ни другие стандартные
библиотеки для твоей среды тоже нельзя?

P.S. А почему в философию?
Re[2]: Писать полностью свой код
От: Leha86 Россия  
Дата: 18.08.06 08:09
Оценка:
Здравствуйте, bkat, Вы писали:

B>Здравствуйте, Leha86, Вы писали:


L>>Хотелось бы услышать мнение общественности вот по какому вопросу. Нормально ли это, если начальник требует абсолютно весь код писать самому. Т.е. не принимает никакие сторонние библиотеки. Программистов тут работает мало (как говорится, раз, два и обчелся). Я не спорю, пока пишешь все сам, досконально разберешься в проблеме. Но из-за этого существенно ведь падает производительность. Может быть лучше было найти золотую середину? Заранее благодарен за любые ответы.


B>А каковы его аргументы и что значит "не принимает никакие сторонние библиотеки"?

B>Что совсем никакие и ни STL ни MFC ни другие стандартные
B>библиотеки для твоей среды тоже нельзя?

Нет, стандартные принимает. Но, например, если какой-то компонент нужен (к сожалению VC++ не столь богат компонентами, как Delphi или C#), то его надо сделать самому, а не использовать какой-то более или менее проверенный.

B>P.S. А почему в философию?

Просто думал куда задать и решил сюда написать. Если не по адресу — простите, не со зла Если совсем уж не сюда отправил, думаю, что добрые люди перекинут куда надо.
-----
С уважением, Алексей.
Re[3]: Писать полностью свой код
От: bkat  
Дата: 18.08.06 08:22
Оценка:
Здравствуйте, Leha86, Вы писали:

B>>А каковы его аргументы и что значит "не принимает никакие сторонние библиотеки"?

B>>Что совсем никакие и ни STL ни MFC ни другие стандартные
B>>библиотеки для твоей среды тоже нельзя?

L>Нет, стандартные принимает. Но, например, если какой-то компонент нужен (к сожалению VC++ не столь богат компонентами, как Delphi или C#), то его надо сделать самому, а не использовать какой-то более или менее проверенный.


Разумный консерватизм вполне оправдан.
Не думаю, что он (начальник) уперт.
Просто надо обосновать и убедить в полезности и надежности компонента (библиотеки).
Ведь согласись, что было бы плохо, если любой программер,
по собственному желанию, ни с кем не советуясь,
начинает использовать то, что ему нравится...
Re: Писать полностью свой код
От: FDSC Россия consp11.github.io блог
Дата: 18.08.06 08:29
Оценка:
Здравствуйте, Leha86, Вы писали:

L>Хотелось бы услышать мнение общественности вот по какому вопросу. Нормально ли это, если начальник требует абсолютно весь код писать самому. Т.е. не принимает никакие сторонние библиотеки. Программистов тут работает мало (как говорится, раз, два и обчелся). Я не спорю, пока пишешь все сам, досконально разберешься в проблеме. Но из-за этого существенно ведь падает производительность. Может быть лучше было найти золотую середину? Заранее благодарен за любые ответы.


Естественно не оправдано. Вы ему скажите, на сколько дольше вы будете писать приложение без сторонних библиотек. Человек просто не понимает, насколько это может быть дольше и насколько у вас нехватает ресурсов: такое очень часто случается в маленьких непрофильных фирмах
Re[3]: Писать полностью свой код
От: ArhAngelVezel Россия  
Дата: 18.08.06 08:30
Оценка: +1
Здравствуйте, Leha86, Вы писали:

L>Нет, стандартные принимает. Но, например, если какой-то компонент нужен (к сожалению VC++ не столь богат компонентами, как Delphi или C#), то его надо сделать самому, а не использовать какой-то более или менее проверенный.


Более или менее продвинутый компонент имеет лицензию. GNU, GPL или просто non-commerce. Это пока в России плюют свысока на подобные вещи, а вот как начнется борьба с данным видом пиратства, вот тогда и придется любителям "халявы" поиметь геморройные судебные иски...
Re: Писать полностью свой код
От: Lloyd Россия  
Дата: 18.08.06 08:30
Оценка: +1
Здравствуйте, Leha86, Вы писали:

L>Хотелось бы услышать мнение общественности вот по какому вопросу. Нормально ли это, если начальник требует абсолютно весь код писать самому. Т.е. не принимает никакие сторонние библиотеки. Программистов тут работает мало (как говорится, раз, два и обчелся). Я не спорю, пока пишешь все сам, досконально разберешься в проблеме. Но из-за этого существенно ведь падает производительность. Может быть лучше было найти золотую середину? Заранее благодарен за любые ответы.


Все очень просто. Подходишь и говоришь: сделать такую-то задачу будет стоить две недели и два дня, но если воспользоваться таким-то компонентом, то можно сократить время разработки до двух дней. Заодно проверишь и вменяемость начальниа.
Re[4]: Писать полностью свой код
От: Leha86 Россия  
Дата: 18.08.06 08:41
Оценка:
Здравствуйте, bkat, Вы писали:

B>Разумный консерватизм вполне оправдан.

B>Но думаю, что он уперт.
B>Просто надо обосновать и убедить в полезности и надежности компонента (библиотеки).
B>Ведь согласись, что было бы плохо, если любой программер,
B>по собственному желанию, ни с кем не советуясь,
B>начинает использовать то, что ему нравится...

Да, тут с Вами не поспоришь. Контора еще совсем молодая, да и сам я только учусь программировать. А посему и обосновать свою точку зрения весьма трудно (недостаток опыта сказывается весьма существенно).
-----
С уважением, Алексей.
Re[2]: Писать полностью свой код
От: Leha86 Россия  
Дата: 18.08.06 08:45
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Естественно не оправдано. Вы ему скажите, на сколько дольше вы будете писать приложение без сторонних библиотек. Человек просто не понимает, насколько это может быть дольше и насколько у вас нехватает ресурсов: такое очень часто случается в маленьких непрофильных фирмах


А Вы прямо телепат, фирма то и вправду маленькая
-----
С уважением, Алексей.
Re[4]: Писать полностью свой код
От: Leha86 Россия  
Дата: 18.08.06 08:49
Оценка:
Здравствуйте, ArhAngelVezel, Вы писали:

AAV>Более или менее продвинутый компонент имеет лицензию. GNU, GPL или просто non-commerce. Это пока в России плюют свысока на подобные вещи, а вот как начнется борьба с данным видом пиратства, вот тогда и придется любителям "халявы" поиметь геморройные судебные иски...


Я сам не читал все эти лицензии, но вроде бы все это Open Source, а значит я могу использовать их, но делать ссылки на авторство... Хотя утверждать ничего не буду. Правда я имел ввиду компоненты, которые распространяются "AS IS".
-----
С уважением, Алексей.
Re: Писать полностью свой код
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.08.06 08:52
Оценка: 7 (1)
Здравствуйте, Leha86, Вы писали:

L>Нормально ли это, если начальник требует абсолютно весь код писать самому. Т.е. не принимает никакие сторонние библиотеки.


Нет, не нормально. Это паталогия, которая носит название Not Invented Here Syndrome (см. так же описание этого явления).

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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Писать полностью свой код
От: last_hardcoder  
Дата: 18.08.06 09:03
Оценка: -3
Здравствуйте, Leha86, Вы писали:

L>Хотелось бы услышать мнение общественности вот по какому вопросу. Нормально ли это, если начальник требует абсолютно весь код писать самому. Т.е. не принимает никакие сторонние библиотеки. Программистов тут работает мало (как говорится, раз, два и обчелся). Я не спорю, пока пишешь все сам, досконально разберешься в проблеме. Но из-за этого существенно ведь падает производительность. Может быть лучше было найти золотую середину? Заранее благодарен за любые ответы.


Использовать сторонние библиотеки допустимо только основываясь на рекомендациях авторитетных разработчиков (имеющих длительный опыт их использования). Подавляющее большинство доступных библиотек недостаточно надёжны или не имеют перспектив развития. С ними можно играться, но пихать в коробочный продукт чревато гемороем.
Re[2]: Писать полностью свой код
От: Mamut Швеция http://dmitriid.com
Дата: 18.08.06 09:13
Оценка:
L>Все очень просто. Подходишь и говоришь: сделать такую-то задачу будет стоить две недели и два дня, но если воспользоваться таким-то компонентом, то можно сократить время разработки до двух дней. Заодно проверишь и вменяемость начальниа.

Плюс сказать следующее. Разработка компонента с подобной функциональностью займет n месяцев. Минимум. На это уйдет n * (кол-во программистов, занятых над компонентом) * (зарплата программиста в месяц). В то время, как компонент стоит х.
... << RSDN@Home 1.2.0 alpha rev. 655>>


dmitriid.comGitHubLinkedIn
Re[5]: Писать полностью свой код
От: fmiracle  
Дата: 18.08.06 09:53
Оценка: +1
Здравствуйте, Leha86, Вы писали:

L>Здравствуйте, ArhAngelVezel, Вы писали:


AAV>>Более или менее продвинутый компонент имеет лицензию. GNU, GPL или просто non-commerce. Это пока в России плюют свысока на подобные вещи, а вот как начнется борьба с данным видом пиратства, вот тогда и придется любителям "халявы" поиметь геморройные судебные иски...


L>Я сам не читал все эти лицензии, но вроде бы все это Open Source, а значит я могу использовать их, но делать ссылки на авторство... Хотя утверждать ничего не буду. Правда я имел ввиду компоненты, которые распространяются "AS IS".


Нет, конечно.
Каждая лизенция своя. Есть опен-сорс лицензии, которые разрешают использование продукта только в других опен-сорс проектах. Или только в некомеческих. А есть да, такие, которые просто требуют указать авторство. Есть и такие, которые даже авторства указывать не требуют
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Писать полностью свой код
От: Hilaris  
Дата: 19.08.06 06:45
Оценка: -6 :))) :))) :))
Если пишете на С++ то в том то и смысл чтобы использывать собственные библиотеки где только можно.

Иначе лучше сразу писать на С#, Бейске и.т.п.

Конечно пока что разница есть ещё.

В .Net настораживют многие вещи.

Например сама концепция "управляемого кода"

На мой взгляд ничто иное как самая обычная интерпретация во время выполнения
программы а не во время компиляции.

КОд если я не ошибаюсь бывает двух видов
В виде набора комманд процессору, сопроцессору и.т.п.
машиный то есть интерпретация кода осуществляется аппаратно.
и в виде набора команд некому "виртуальному процессору"
реализованному программно, который их программно и интерпретирует переводя
в комманды реальному процессору.
.
По сути такой виртуальный интерпретатор ничто иное как "драйвер для процессора".
попытка абстрагироваться от собственно особенностей архитектуры конкретного процессора при написании программ.

В принципе я думаю что рано или поздно эта концепция победит и писать программы
исполняемые процессором напрямую никто не будет как никто не пишет сегодня программы исполняемые напрямую перефирийными устройствами (как это делалось в DOS) но только интерпретируемые их драйверами и.т.п.
Но до этого ещё очень далеко. Естественно это приводит к резкому снижению производительности не говоря уже о надёжности.

Сложность ещё также в том что для совмшения модулей написанных под .NET и
обычных нативных модулей приходится дополнительную работу выполнять.

В то время как поддержка совмешения нативных модулей написанных даже на разных языках реализуется аппаратно при помощи стандартизирваного механизма вызова функций и программно при помощи унифицированного объектного формата и.т.п.


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

С другой стороны врядли объективно есть альтернатива .NET сегодня.
Прежде всего это касается конечно тех частей программы под Виндовс которые отвечают за действия выполняемые операционной системой.
Тут разница как раз небольшая. Что обычная "нативная" программа вызывает системную функцию операционки (которая естественно уже выполняется процессором напрямую) что программа написанная на интерпретируемом коде вызывает всё ту же
системную функцию опять таки выполняемую процессором напрямую . Разница только в том что в последнем случае эта функция не доступна напрямую, но только через
виртуальную среду выполнения.

Также можно сказать, что писать нормальные программы, подлежашие отладке,и.т.п. под Виндовс не используя жёскую объектно-ориентируемую концепцию просто нереально. Прежде всего это касается конечно же User Interface

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

То есть по сути единственной альтернативой всяким другим библиотекам
классов и фреймворков и.т.п. как раз и является написание собственных объектных библиотек. Именно в таком случае и есть смысл писать модули User Interface на С++ Но Дело это требующее довольно хорошей программерской подготовки, опыта и.т.п. и занимающее кучу времени, то далеко не всегда оправданно.

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

Разговоры о том что "это потребует много времени" справедливы если фирме срочно нужен какой-то мега-проект "на позавчера" а под рукой ничего кроме уже готовых библиотек, фреймворков и.т.п. нету. Совсем другое дело когда вопрос касается самого программиста тем более в небльшой фирме. Тут то всё наоборот. Как раз написание таких собственных библиотек экономит львиную долю времени в конечном итоге. К тому если с самого начала подойти к вопросу обстоятельно то нет никакой необходимости писать "сразу всё", Достаточно схематично обрисовать общую концепци и лишь те классы реализовывать которые нужны в настоящий момент.
Это что касается UI и прочей системной чепухи.
Остальное же вообще само собой понятно что реализовывать нужно самому и лучше чем это делают конкуренты. Иначе же в чём смысл работы программиста



Всю системную функциональность желательно вообще запихнуть в объекты
один раз и потом о ней вообще забыть. Возвращаться только тогда когда
реализация той или иной фунции системой меняется в новой версии и.т.п..
К тому же иногда интересно писать программы которые легко переносятся
на другую платформу. Делать это используя "библиотеки Микрософт" сами понимаете
занятие довольно глупое в принципе.
Если же программа абстрагируется от конкретной системной функциональности при помощи ваших собственных библиотек классов то ничто вам не мешает писать прикладую программу (в том числе и UI) меняя только системные библиотеки
под разные платформы а сам код прикладой программы (ну если вы не используете какие-то специфические экзотические контролы их свойства и методы) остаётся той же.


Например сразу когда начинает писать программу под Виндовс писать
простенькую бибиотеку классов с реализации всего двух классов "главного окна" и "приложения".
Используя всю мощь С++ Можно в итоге добится того что минимальная "программа под Виндовс" (и не только) состоит из максимум 5 строк.

НАпример таким образом:

clApplication APP;
ClMainWindow MW


MW.Create();
MW.Show(SW_NORMAL);
APP.WaitForEnd (MW.hThread);


Естественно реализация объекта "Главного Окна" таким образом задача не очень простая.
Прежде всего наталкивается на целый ряд проблем связанных с особенностью
архетектуры Виндовс. Но более менее оптимальные решения существуют в любом
случае.


Таскание мышкой контролов и.т.п. Тоже нет никаких проблем.
Реализуется "класс Диалога" таким образом чтобы например после того как натаскать мышкой контролов в редакторе ресурсов вызывать таким образом.





clDialog D;
D.Create(MW.hwnd,hTemplate);
D.AttachControlsWithTvents(&arrClControls);

D.Show();


Контролы также можно реализовать в виде классов.
В конструкторе которых указывать параметр ID из ресурса.

Например чтобы диалог с двумя кнопочками кнопочками обрбатывал их события.

что-то типа такого можно реализовать перед созданием диалога.


ClControlButton CB_Ok(IDOK), CB_Cancel(IDCANCEL);

CB_Ok.Events.OnClick = &CB_Ok_Clicked;
CB_Cancel.Events.OnClick = &CB_Cancel_Clicked;



То есть если кто-то действительно считает нужным реализовывать руками с нуля подобного рода функциональность то тогда конечно же лучше использывать "натив программирование и С++."
Хотя по большому счёт хождение по лесу граблей тут обеспеченно однозначно.

Но если вообще писать программы "в лоб" на фактически "чистом С" то в таком случае лучше сразу от этого отказатся.
Доводилось видеть мне кучу кода где народ пытался писать без создания хотя бы простенькой собственной библиотеки общих классов на "чистом С" там где прямо в функции окна релиузется какая то прикладная функциональность и.т.п. Чесно говоря сами же разработчики подобного были не в состоянии разобраться с собственным кодом.
Естественно в таком случае однозначно гораздо лучше использывать уже готовые библиотеки, фреймворки и.т.п.
Re[2]: Писать полностью свой код
От: FDSC Россия consp11.github.io блог
Дата: 19.08.06 07:33
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, Leha86, Вы писали:


L>>Нормально ли это, если начальник требует абсолютно весь код писать самому. Т.е. не принимает никакие сторонние библиотеки.


E>Нет, не нормально. Это паталогия, которая носит название Not Invented Here Syndrome (см. так же описание этого явления).


E>Если только речь идет не о разработке софта для военных, где не только нужно весь исходных код им передавать, но еще и нести за него ответственность.


Или для банкиров
Re[5]: Писать полностью свой код
От: fmiracle  
Дата: 19.08.06 10:43
Оценка:
Здравствуйте, Leha86, Вы писали:

L>Хотя утверждать ничего не буду. Правда я имел ввиду компоненты, которые распространяются "AS IS".


Вот про это еще забыл сказать
AS IS не имеет отношения к типу лиценции Это такое приятное дополнение

По факту даже платные библиотеки и программы обычно распространяются AS IS То есть это может быть не указано явно (а может быть даже указано!), но если внимательно прочитать коммерческую лицензию, то в большинстве случаев выяснится, что автор не гарантирует работы программы и не отвечает ни за какой ущерб, прямо или косвенно вызванный использованием или неиспользованием данной программы, ее правильным и неправильным поведением и т.д. и т.п. В самом лучшем случае указывается, что в случае возникновения ущерба, автор возместит его, но не более чем на сумму, равную стоимости самой этой программы
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Писать полностью свой код
От: fmiracle  
Дата: 19.08.06 10:43
Оценка:
Здравствуйте, FDSC, Вы писали:

E>>Если только речь идет не о разработке софта для военных, где не только нужно весь исходных код им передавать, но еще и нести за него ответственность.


FDS>Или для банкиров


Или для любых других компаний, которые сильно боятся (возможно оправданно) утечек информации (к конкурентам или просто злоумышленникам)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Писать полностью свой код
От: Win2k  
Дата: 20.08.06 18:11
Оценка:
Здравствуйте, Leha86, Вы писали:

L>Хотелось бы услышать мнение общественности вот по какому вопросу. Нормально ли это, если начальник требует абсолютно весь код писать самому. Т.е. не принимает никакие сторонние библиотеки. Программистов тут работает мало (как говорится, раз, два и обчелся). Я не спорю, пока пишешь все сам, досконально разберешься в проблеме. Но из-за этого существенно ведь падает производительность. Может быть лучше было найти золотую середину? Заранее благодарен за любые ответы.


Вы свою ОС уже написали? Компиляторы, хотя бы минимальную пользовательскую обвеску (шелл и текстовый редактор)? :-O
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.