Re[16]: Повторное использование кода
От: Roman Odaisky Украина  
Дата: 24.07.09 20:52
Оценка:
Здравствуйте, eao197, Вы писали:

E>Не думаю. Еще раз сошлюсь на пример с Enterprise Linux. Он часто используется, например, в банках. В том числе и для поддержки internet-сервисов банка. Но банки не распространяют его исходники.


Но могут (разве что придется убрать торговые марки).
До последнего не верил в пирамиду Лебедева.
Re[16]: Повторное использование кода
От: x905  
Дата: 27.07.09 04:45
Оценка:
Здравствуйте, eao197, Вы писали:

X>>вот например такой интересный момент: заказчик решил установить это ПО на свой сервер, вывел его в инет и предоставляет некий сервис за плату

X>>должен он тогда раскрыть код ?
E>Не думаю. Еще раз сошлюсь на пример с Enterprise Linux. Он часто используется, например, в банках. В том числе и для поддержки internet-сервисов банка. Но банки не распространяют его исходники.

такой пример не пойдет:
1. банки и не должны распространять исходники — это потребители
2. исходный код RHEL открыт — из него и собирается CENTOS

насколько я сам понял, если код под GPLv2, то исходный код сервиса можно не открывать
насчет GPLv3 неразобрался
Re: Повторное использование кода
От: borisman3 Канада http://paskoboris.blogspot.com/
Дата: 27.07.09 07:50
Оценка: 7 (2)
Здравствуйте, Kore Sar, Вы писали:

KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.


KS>Сейчас понаписано миллионы строк одинакового кода различными людьми и довольно много кода открыто для свободного использования. И самый эффективный программист это тот, который ипользует чужой код по максимуму и не пишет больших велосипедов.


KS>Ваши мнения?


Как опытный велосипедостроитель не могу не.

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

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

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

Очень часто даже библиотечные велосипеды имеют колеса несовместимые с нашими педалями (например функция String.split из java). Что уж говорить о сторонних и плохо обкатанных велосипедах! Многие известные деятели (тов. Кнут, тов. Дейкстра, тов. Чарльз Мур) вообще скажут что сторонний код им нужен для извлечения основной идеи. А уж код после этого они напишут сугубо свой, доморощенный.
Re[2]: Повторное использование кода
От: minorlogic Украина  
Дата: 27.07.09 08:10
Оценка: +1
Здравствуйте, borisman3, Вы писали:

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


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


Лично я неаблюдаю картину что написание своего кода занимает не много времени. бОльшую часть времени занимает отладка и обдумывание интерфейса и т.п. Но в основном отладка и тестирование.
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[3]: Повторное использование кода
От: borisman3 Канада http://paskoboris.blogspot.com/
Дата: 27.07.09 11:24
Оценка:
Здравствуйте, minorlogic, Вы писали:

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


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


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


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


В принципе так, иначе мы не писали бы своих велосипедов. Но вместе с тем зачастую бывает так что в маленьком велосипедике кроется (как правило некритичный) баг который будет понят и исправлен только спустя очень длительного времени. Так что часто разработка велосипедика оказывается в несколько раз дороже чем кажется (но все равно на порядок проще чем адаптация чужого).
Re: Повторное использование кода
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.07.09 12:11
Оценка: +4
Здравствуйте, Kore Sar, Вы писали:

KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.


KS>Сейчас понаписано миллионы строк одинакового кода различными людьми и довольно много кода открыто для свободного использования. И самый эффективный программист это тот, который ипользует чужой код по максимуму и не пишет больших велосипедов.


KS>Ваши мнения?


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

Теперь о вопросе:
Повторному использованию кода мешают:
1. Неосведомленность программиста о том, что есть код который можно использовать повторно.
2. Наличие особенностей в текущей задаче не позволяющих использовать чужой код без изменений.
3. Плохая обобщенность чужого кода и невозможность менять отдельные детали поведения без изменения кода.
4. Сложность поддержания измененного чужого кода, если только изменение позволяет использовать код повторно.
5. Боязнь чужого кода: боязнь багов, боязнь непонимания его внутреннего устройства.

Повторное использование зависит от массы факторов:
1. Уровня программиста пытающегося повторно использовать код.
2. Уровня программистов написавшего общий код.
3. От языка программирования и средств разработки. Например, в С++ повторное использование кода применяется крайне редко, в то время как в Яве и дотнете значительно чаще.

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

Итого, мой вердикт таков... Нужно смотреть на каждый конкретный случай. Где-то повторное использование даст преимущество, где-то нет.

Вот что нужно делать всегда и без каких-либо оговорок — это повторно использовать знания! Велосипед не долго создать с нуля если ты знаешь как это сделать. А если ты не знаешь как это сделать, то и использовать чужой велосипед будет крайне сложно.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Повторное использование кода
От: Воронков Василий Россия  
Дата: 27.07.09 12:18
Оценка: 2 (1) +1
Здравствуйте, VladD2, Вы писали:

VD>Теперь о вопросе:

VD>Повторному использованию кода мешают:
VD>1. Неосведомленность программиста о том, что есть код который можно использовать повторно.
VD>2. Наличие особенностей в текущей задаче не позволяющих использовать чужой код без изменений.
VD>3. Плохая обобщенность чужого кода и невозможность менять отдельные детали поведения без изменения кода.
VD>4. Сложность поддержания измененного чужого кода, если только изменение позволяет использовать код повторно.
VD>5. Боязнь чужого кода: боязнь багов, боязнь непонимания его внутреннего устройства.

Существует по крайней мере еще один момент, на который часто нарываешься — лицензия.
Re[3]: Повторное использование кода
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.07.09 12:20
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Существует по крайней мере еще один момент, на который часто нарываешься — лицензия.


Естественно. Но это не технический вопрос, а форум технический.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Повторное использование кода
От: Воронков Василий Россия  
Дата: 27.07.09 12:28
Оценка: +1
Здравствуйте, VladD2, Вы писали:

ВВ>>Существует по крайней мере еще один момент, на который часто нарываешься — лицензия.

VD>Естественно. Но это не технический вопрос, а форум технический.

Да ладно, форум "философский"
Да и почему-то мне кажется, что причины, по которым код в опен сорсе повторно не используются, в основном как раз не технические.
Re: Повторное использование кода
От: Воронков Василий Россия  
Дата: 27.07.09 12:39
Оценка: +2
Здравствуйте, Kore Sar, Вы писали:

KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.

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

На самом деле все зависит от того, что мы имеем в виду под кодом. Идет ли речь о решении какой-то конкретной задачи, которая обычно занимает два-три часа времени? В этом случае использовать чужой код действительно приходится редко. Хотя бы потому что быстрее написать самому, чем искать подходящее решение. Если даже задача довольно сложная и нетривиальная, то от готовой реализации нужен прежде всего не сам код, а именно решение, которое и представляет основную ценность и которое я могу уже переписать сам, в соответствии со стилем и архитектурой своего проекта. (Причем в этом ИМХО основной смысл опен-сурса, а не в возможности повторного использования путем cut && paste).

Если же речь идет, скажем так, о больших "подсистемах", то повторное использование живет и процветает. Если вам нужен в проекте встраиваемый движок SQL-БД, то надо быть откровенно двинутым на голову, чтобы писать его самому, когда есть прекрасный sqlite — даже если вам придется модифицировать и затачивать его под свои нужды. Или если я пишу, скажем, навигатор для того же sqlite и мне нужен редактор кода — разработать собственный редактор в таком случае тоже довольно странное решение, когда есть уже готовые, с открытым кодом, в кол-ве больше одного.
Re: Повторное использование кода
От: White_Mage  
Дата: 27.07.09 13:50
Оценка: -1
Здравствуйте, Kore Sar, Вы писали:

KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.


KS>Сейчас понаписано миллионы строк одинакового кода различными людьми и довольно много кода открыто для свободного использования. И самый эффективный программист это тот, который ипользует чужой код по максимуму и не пишет больших велосипедов.


KS>Ваши мнения?


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

На мой взгляд самое правильное решение — это потратить время на то чтобы разобраться, как работает чужая программа с открытом кодом. И как уже кто-то сказал здесь, понять для себя идею её работы. А как только ты узнал идею, тебе уже будет не так сложно написать свой код, который ты будешь детально знать и понимать, что избавит тебя от многих трудностей.
Re[2]: Повторное использование кода
От: VGn Россия http://vassilsanych.livejournal.com
Дата: 27.07.09 14:28
Оценка: +1
W_M>На мой взгляд в использование чужого кода достаточно много трудностей, которые уже не раз были озвучены в данной ветке. Это: и необходимость поиска этого самого чужого кода, и разбор чужого кода, для понимания сути его работы, и доделка этого кода под твою конкретную задачу, и поиск ошибок в чужом коде.

W_M>На мой взгляд самое правильное решение — это потратить время на то чтобы разобраться, как работает чужая программа с открытом кодом. И как уже кто-то сказал здесь, понять для себя идею её работы. А как только ты узнал идею, тебе уже будет не так сложно написать свой код, который ты будешь детально знать и понимать, что избавит тебя от многих трудностей.


Имхо именно с этим спорит топикстартер. И я с ним согласен.
Может быть пора уже заканчивать с "тысячами складов"?
... << RSDN@Home 1.2.0 alpha 4 rev. 1233>>
Re[3]: Повторное использование кода
От: White_Mage  
Дата: 28.07.09 12:33
Оценка:
Здравствуйте, VGn, Вы писали:

VGn>Имхо именно с этим спорит топикстартер. И я с ним согласен.

VGn>Может быть пора уже заканчивать с "тысячами складов"?

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

1) Как найти готовый код для решения конкретной задачи?.
2) Как максимально упростить разбор чужого кода?
3) Как максимально быстро найти ошибки в чужом кода (если они там имеются)?

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

На мой взгляд нужно выделить некие обобщенные задачи, которые часто решаются, и в которых действительно необходимо использование чужого кода. И вот на основе таких частей строить репозиторий, откуда любые желающие смогут взять требуемый им кусок кода или библиотеку. Но это делается и так, и многие программисты (в том числе и ваш скромный слуга) активно этим пользуются. Последний пример, который мне сразу приходит в голову, это использование библиотеки NHibernate для решения задачи ORM маппинга.
Re[4]: Повторное использование кода
От: anton_t Россия  
Дата: 29.07.09 07:51
Оценка: +1
Здравствуйте, eao197, Вы писали:

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


CC>>>Переиспользованию кода мешают например разного рода лицензии (GPL в том числе) а также качество этого самого кода.

KS>>Я специально написал в исходном сообщении не "открытого кода", а "кода свободного использования". Т.е. давайте не рассматривать код, который хоть и открыт, но запрещен к использованию.

E>Не сочтите за придирку, но GPL очень сложно назвать "запрещенным к использованию". Поэтому термин "запрещен к использованию" следовало бы уточнить.


GPL легко может оказаться "запрещенным к использованию", если ваша лицензия не совместима с GPL.
Re[8]: Повторное использование кода
От: anton_t Россия  
Дата: 29.07.09 07:54
Оценка:
Здравствуйте, eao197, Вы писали:

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


E>>>В последние годы я работаю над проектами двух типов -- первые предназначены для использования нашей компанией и распространять их исходники мы не хотим и заказные проекты, в которых исходники передаются заказчику. В первых, очевидно, GPL не применим. Во вторых -- для нас нет никаких препятствий в использовании GPL кода.


X>>а не наоборот?


E>Нет.


X>>если используеш для себя(внутри компании) — то показывать исходники ненужно


E>Насколько мне известно, сейчас FSF пытается наезжать на компании, которые используют GPL в своих внутренних продуктах, но код этих продуктов не открывают. Так что использование GPL-ных кусков во внутренних продуктах черевато.


А на каких основаниях они наезжают? Код же нужно отдавать только тому, кому отдаёшь то, что из этого кода собрано?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.