2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Чужой код
Сообщение14.03.2006, 23:46 
Аватара пользователя
:?: Чужой код – не ваша реализация алгоритма на языке программирования.
Речь не идёт о просмотре кода для обнаружения проблемных мест (не важно, умышленных.. или ошибок), речь о действительно «чужом» коде. Все говорят – воровать плохо, согласен, но, исходник по математической задаче – это одно, а реализация например реальной задачи – другое.
Но, верно ли такое утверждение? Студент, который должен что-то написать – по определению должен это написать! И если он использует чей-то труд, спрашивается, а там ли он учится…
Да, можно разобраться с чьей-то работой, и потом «на пальцах» всё пересказать, но поверти, у любого программиста есть свой почерк, если это Программист. Этот почерк формируется с тех самых первых строк 1-го курса. Глупо предполагать, что все вдруг «честно» начнут в этой области всё делать сами. В результате, мы имеем целую армию программистов (дипломированных) которые задают вопросы, на которые может ответить увлеченный школьник. Как-то, первокурсник попросил меня написать лабораторную работу на СИ, простенькая база данных – учебной группы, написать надо было под DOS. В результате – у него не приняли эту работу, он сдавал несколько раз пока криво но сам не реализовал задачу. Не приняли, потому что он просто не в состоянии был написать такой код. Примеров много, как альтернативный пример – не приняли игрушку на Delphi – преподаватель не понял код (пример «дипломированного» программиста), девушке пришлось делать что-то по проще, но самой. Да нет, алгоритмы автора не были «заумными», просто это был для них «чужой код»…
Я уверен, те кто прочтут это, разделятся на два лагеря – те кто против этих утверждений, и те, кто согласен. А Вы на какой стороне?
PS: Художник – это профессия? А Программист?

 
 
 
 
Сообщение15.03.2006, 03:55 
Аватара пользователя
:evil:
Где-то я читал, что программисты редко читают чужие программы, и это ограничивает их возможности к самоусовершенствованию.

Подчерк, наверное, есть у любого программиста, но формируется он отнюдь не на первом курсе. Я могу примерно оценить время написания своей программы по подчерку. Разный он у меня был и есть. И меняется.

А вот преподователи очень быстро определяют, писал ли человек программу сам. Достаточно двух-трех вопросов, и видно, что есть что. А подчерк, в общем, не причем. Просто человек не знает функцию, которой пользуется, или почему цикл не до N, а до N-1. Или еще что нибудь в таком духе. Поверьте, если я пойду с Вашей программой, прочитав ее, у меня примут. Хотя у меня другой подчерк. Готов предложить Вам эксперимент -- Вы помещаете программу разумного размера ( < 1000 строк -- это все таки не работа и не спор), я ее читаю, отвечаю на Ваши вопросы и исправляю. PC, Виндузе / Дос, минимальное описание смысла, язык по договоренности -- я не хочу искать какой-либо экзотический компилятор и устанавливать его. В программе возможны ошибки.

И еще. В отличии от бумагомарания (ok, литературной деятельности), программирование обычно суть коллективные усилия. И в этом случае опытный программист избегает своего индивидуального подчерка, подлаживаясь под коллективный подчерк группы. Лучше писать в чужем стиле, чем читать потом "попугайную" программу.

 
 
 
 
Сообщение16.03.2006, 01:02 
Аватара пользователя
:arrow: "Почерк" в данном контексте, это не что-то уникальное подлежащее кокой либо экспертизе... Имеется в виду сформированный, если можно так сказать, профессиональный подход - основанный на опыте и приобретенных знаниях, в совокупности с самой формой записи кода. Уверен, простую функцию сортировки обменом мы с Вами по разному напишем. И эта разница будет не в смысле и тем более не в результате... А в целом, начиная с названия, построения тела, использования циклов или еще чего, для реализации задачи. Так вот, я о том, что программист это делает несколько иначе, чем случайный человек. Вы согласны с этим? Я например использую разную нотацию для разного подхода - для ООП одну (сюда попадает и Object Pascal) - Венгерскую, для процедурного - другой подход но тоже стандартный. Заметьте - это все равно система, и это видно. И это позволяет работать в команде, читать логику, а не "разбирать" карявки... Хотя, я могу привести реальную промышленную систему – проданную за большие деньги, при этом, в исходники лучше не смотреть, потому что, требуется профессиональный программист только для расшифровки того что там написано (соответственно, это так и работает).
А в приведенных примерах - действительно, в первом случае человек просто не готов был шагнуть дальше оператора if... Во втором же случае, девушка действительно могла всё рассказать. Речь идет о чужом коде в смысле использования. Ведь всем известно – лучше написать с «нуля», чем править что-то в сделанном кем-то… И не думаю, что эти рассуждения касаются Программистов – скорее тех, кто только учится этому (или уже «научился»…).
Проблема шире – очень мало преподавателей, которые в состоянии не просто «прочесть» курс лекций, а научить этому нелегкому ремеслу и передать что-то своё, не забывая о таких «мелочах» как: структура кода, стандарты (нотации), правила, «подводные камни» и т.д., что не отражается на логике программы и её функциональности. А мало потому, что многие из них ушли из ВУЗов, по разным причинам… И плагиат теперь – норма. Например, у нас есть курсы одного из украинских институтов, где за тре месяца дают диплом программиста..., теперь их много. А у нас в своё время – не принимали «домашки», только за неправильный отступ… :)

 
 
 
 
Сообщение16.03.2006, 01:24 
Аватара пользователя
:evil:
ПВА писал(а):
Я например использую разную нотацию для разного подхода - для ООП одну (сюда попадает и Object Pascal) - Венгерскую, для процедурного - другой подход но тоже стандартный. Заметьте - это все равно система, и это видно. И это позволяет работать в команде, читать логику, а не "разбирать" карявки...

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

ПВА писал(а):
А в приведенных примерах - действительно, в первом случае человек просто не готов был шагнуть дальше оператора if... Во втором же случае, девушка действительно могла всё рассказать. Речь идет о чужом коде в смысле использования. Ведь всем известно – лучше написать с «нуля», чем править что-то в сделанном кем-то… И не думаю, что эти рассуждения касаются Программистов – скорее тех, кто только учится этому (или уже «научился»…).

У меня мало времени в жизни. Я предпочитаю по-максимуму использовать чужой код и чужой труд. Тем и живу :D (Пример из жизни. Была когда-то СУБД Clipper. Был в ней простенький, но конфигурируемый, интерфейс для просмотра данных. Нам все казалось, что нам его не хватает, надо писать свой. Мы 4 -- четыре! -- раза решали, что дальше нельзя, надо, и четыре раза находили решения.)

ПВА писал(а):
Проблема шире – очень мало преподавателей, которые в состоянии не просто «прочесть» курс лекций, а научить этому нелегкому ремеслу и передать что-то своё, не забывая о таких «мелочах» как: структура кода, стандарты (нотации), правила, «подводные камни» и т.д., что не отражается на логике программы и её функциональности. А мало потому, что многие из них ушли из ВУЗов, по разным причинам… И плагиат теперь – норма. Например, у нас есть курсы одного из украинских институтов, где за тре месяца дают диплом программиста..., теперь их много. А у нас в своё время – не принимали «домашки», только за неправильный отступ… :)

С преподаванием, согласен, проблема есть. Даже не с преподавателями, а именно с преподаванием. Проблема, что учат языкам, а не программированию. Бог с ней, с нотацией. Нотация -- от нищеты и убожества, я как не пользовался ей, так никогда и не буду пользоваться. Стандарты на написание кода -- чуть лучшее понятие, но они в каждой конторе свои, и не очень понятно, что же учить в универе. В конце концов, стандарт кодирования оказывается хорош на один проект -- за время жизни проекта вкус и понимание меняется, но переписывать код возможности нет. А вот в новом проекте -- это учитывается. И я не согласен, что это плагиат. Плагиат -- это копирование без разрешения. Копирование же с благословления автора -- это разумный способ использования времени. И способ чему-то научиться от автора. Нежелание же читать чужой текст ведет к изобретению велосипедов и открытию америк -- в лучшем случае. В худшем же -- к кустарщине и падучей в программах.

Что же касается непринятия домашек за неправильный отступ -- это, на мой взгляд, от нищеты духа преподавателя. Я бы задал два-вопроса -- где конец от этого начала. Если человек отвечает неправильно или больше 30 секунд -- свободен, правь отступы, отвечает быстро и правильно -- продолжаем читать програму (пол-бала долой за неуважение ко мне, читателю). А гонять за это -- что, больше ничему научить не может?

 
 
 
 
Сообщение16.03.2006, 02:22 
Аватара пользователя
незванный гость писал(а):
:evil:
Что же касается непринятия домашек за неправильный отступ -- это, на мой взгляд, от нищеты духа преподавателя. Я бы задал два-вопроса -- где конец от этого начала. Если человек отвечает неправильно или больше 30 секунд -- свободен, правь отступы, отвечает быстро и правильно -- продолжаем читать програму (пол-бала долой за неуважение ко мне, читателю). А гонять за это -- что, больше ничему научить не может?

:arrow: "Отступы" - это не единственное, это дополнение ко всему прочему, просто как-то так сложилось, что в нашей группе, не было проблем с написанием чего либо, и за это спасибо преподавателю, поэтому, не было затрат времени преподавателя в пустую на объяснения прописных истин, и те самые "отступы" в этом случае, часто имели решающий аргумент... Ведь нас учили работать в том числе и в команде...
Я согласен, что стандарты везде разные и подход, и использовать чужой код можно, а порой и необходимо (пример - мат.обеспечение). Я уже писал, речь идет не о профессиональной работе. :evil:
Мне не понятно, кода просят "написать" какую ни будь софтину для домашки, кр, и т.д. Спрашивается, зачем человек своё время тратит и других, шел бы на другую специальность...
:idea: Не думаю, предложение анализа кода лучший вариант, я знаю, что времени лишнего не бывает. Я не претендую на "идеальность" своего кода,и даже далек от этой мысли, если есть желание - можно посмотреть вот это http://vic-ivdel.narod.ru :arrow:

 
 
 
 
Сообщение17.03.2006, 12:16 
Аватара пользователя
По-моему, это, как раз, пример непрактичности академического образования. Современное практическое программирование на энцать процентов состоит в использовании чужого кода. То ли в коллективной работе, то ли в использовании бесплатных примеров.

 
 
 
 
Сообщение17.03.2006, 14:53 
Аватара пользователя
Dims писал(а):
По-моему, это, как раз, пример непрактичности академического образования. Современное практическое программирование на энцать процентов состоит в использовании чужого кода. То ли в коллективной работе, то ли в использовании бесплатных примеров.

:wink: Мне нравится Ваше ворожение "Современное практическое программирование - использовании бесплатных примеров". Я конечно использую чужой код в работе, но поверти, мне это не доставляет удовольствия, т.к. это связанно в первую очередь с исправлением ошибок ( я по конкретному сейчас коммерческому продукту высказался). "Чужой код" - значит кто-то его написал? И что же, Вы полностью согласны, что "это" так и должно быть? Речь не идет о коллективной работе - там код можно назвать общим. И речь не идет об использовании совета, это естественно, если я не зная как это сделать, но сосед 6-ти классик знает, почему бы мне не воспользоваться его советом?

"Не надо тупо копировать, надо осмысленно переписывать" - было такое ворожение, думаю оно актуально для современного образования. :oops:

 
 
 
 
Сообщение17.03.2006, 18:56 
Аватара пользователя
:evil:
Вопрос о использовании примеров -- интересен сам по себе. Примеры использую активно. И дело не в лени. OK -- есть какой нибудь .NET и нужна какая нибудь .FISH. И, в общем понятно, что должна быть рыба сия. Пару часов пытаешься разобраться в документации, пишешь -- не работает, хоть тресни. И становиться не интересно. Проще найти рецепт (пример), как готовят эту рыбу другие. Дальше -- он составляет базу, из которой я делаю то, что мне нужно. Пошагово меняяя -- вот работало, вот перестало -- значит, дело в последнем изменении. И, наконец, нахожу отсутствовавшую в документации деталь, менявшую все и вся.

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

Я года два назад пытался сделать програмку со звуком на .NET. Переискал все, пока не пошел на inеt и не понял, что в .NET не было звука. И сколько бы я корячился один?

 
 
 
 
Сообщение17.03.2006, 19:32 
Аватара пользователя
ПВА писал(а):
"Чужой код" - значит кто-то его написал? И что же, Вы полностью согласны, что "это" так и должно быть?

Конечно. Вы же используете чужие кирпичи, когда строите дачу. Или чужие дома, когда покупаете квартиру. Искусство оно должно быть ради искусства. А если нужен результат, то должно быть ремесло. Нужно быстро-быстро склепать программу, чтобы она удовлетворяла заданным критериям. Потом доделывать её по мере использования. Потом выкинуть в корзину с появлением новых ОС или аппаратных средств и склепать новую.

А в институтах учат, как обычно, не тому что нужно, а тому, что было нужно когда-то. Когда-то, когда памяти было мало и процессоры были медленные, надо было писать красиво. А сейчас надо писать быстро и, честно говоря, кое как. Сами посмотрите, новые версии всего ПО появляются каждые несколько месяцев. Что толку вкладывать душу в кажду из них?

Хотя моему сердцу это тоже не нравится :)

Цитата:
"Не надо тупо копировать, надо осмысленно переписывать" - было такое ворожение, думаю оно актуально для современного образования.

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

Цитата:
А основная масса - так и думают, что программистом быть престижно... С учетом отношения – доходы/затраты, это мнение весьма ошибочно (в России). :oops:

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

 
 
 
 
Сообщение17.03.2006, 19:48 
Аватара пользователя
Dims писал(а):
Для образования да, но не для практики. Для практики чем тупее можно скопировать, тем лучше: экономятся мозги для других мест. Всё программирование развивается в направлении конструктора из чёрных ящиков, в функционировании которых разобраться в принципе нельзя.

По моему скромному мнению, этим и отличается программист от Программиста - первый делает быстренько, не понимая из чего лепит - какую нагрузку выдержат его "кирпичи", а второй (ничуть не медленнее)- либо сам создает эти кирпичи, либо использует готовые вполне осознано.
Dims писал(а):
А в институтах учат, как обычно, не тому что нужно, а тому, что было нужно когда-то. Когда-то, когда памяти было мало и процессоры были медленные, надо было писать красиво. А сейчас надо писать быстро и, честно говоря, кое как. Сами посмотрите, новые версии всего ПО появляются каждые несколько месяцев. Что толку вкладывать душу в кажду из них?

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

 
 
 
 
Сообщение17.03.2006, 21:15 
Аватара пользователя
Я знаю проблему современного софтверного мира, по крайней мере в России, и в рамках того с чем сталкивался. Пример того, как мне приходится эти корявки править (пока разработчик удосужится, но эта другая тема). Так этот пример и есть того, что две диаметральные плоскости нашей беседы пересеклись (крайние их позиции).
Во первых - написано не грамотно (если это что-то скажет, например, для вывода пользователю запроса на закрытие окна - сделана целая форма: метки, кнопки и .д.). Это пример того, как разработчик (один чел) похоже, напрочь отказывается от инфы, хотя бы в целях самообучения.
Во вторых - там где используется чужой код, а это готовые блоки, в основном коммуникационные, этот код не адоптирован под данную задачу. А чтобы он работал - приложено куча строк, приводящие исходники в помойку. Т.е. сам чужой код не затронут, а под него подстраивалось всё остальное. Понятно что это от элементарной неграмотности, и не понимания этого кода - "тупое" копирование.
Это промышленная разработка, причем коммерческая реализация фирмы, которая реализовала этот проект.
Надо различать о чем речь, я уже писал, для пользования "чужим кодом" надо прежде всего быть самому профессионалом. Тогда это уже не "чужой" код, а готовый алгоритм, странно было бы его не использовать, если он удовлетворяет требованиям задачи. Но на стадии обучения, когда требуется самому найти этот алгоритм - надо делать самому, в противном случае, "тупое" копирование превратится в стиль жизни... Думаю, примеров множество Вы можете сами привести.
:wink:

 
 
 
 
Сообщение18.03.2006, 01:43 
Аватара пользователя
Чем больше узнаём - тем меньше знаем, может заняться делом и попить пива... :cry:

 
 
 
 
Сообщение18.03.2006, 21:43 
Аватара пользователя
Я все-таки думаю, что все "от и до" самому писать - это черезчур. Если конечная прога состоит (или должна состоять) из 3-х миллионов строк, а программер производит в день по сотне строк, то... Этак ему всей жизни не хватит.. :(

 
 
 
 
Сообщение19.03.2006, 10:27 
Аватара пользователя
:D

 
 
 
 
Сообщение19.03.2006, 17:00 
Аватара пользователя
photon писал(а):
Dims писал(а):
Для практики чем тупее можно скопировать, тем лучше: экономятся мозги для других мест. Всё программирование развивается в направлении конструктора из чёрных ящиков, в функционировании которых разобраться в принципе нельзя.

По моему скромному мнению, этим и отличается программист от Программиста

Согласен. То есть, если для кого-то важна большая буква "П" в начале названия профессии, то это одно. А если результат -- то другое.

Цитата:
Это, по-моему, ошибочное мнение. В постсоветских вузах учат принципам, а не конкретным пакетам и языкам. Я говорю это не с бухты-барахты: в моем вузе несколько факультетов, выпускающих высококлассных пограммистов: ф-т Компьютерных наук, ф-т Компьютерной инженерии и управления, ф-т Прикладной математики.

Хорошо, если так. Я отреагировал на конкретную записку. Возможно, обобщил неправомерно.

 
 
 [ Сообщений: 16 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group