2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Чужой код
Сообщение14.03.2006, 23:46 
Аватара пользователя


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

 Профиль  
                  
 
 
Сообщение15.03.2006, 03:55 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Где-то я читал, что программисты редко читают чужие программы, и это ограничивает их возможности к самоусовершенствованию.

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

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

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

 Профиль  
                  
 
 
Сообщение16.03.2006, 01:02 
Аватара пользователя


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

 Профиль  
                  
 
 
Сообщение16.03.2006, 01:24 
Заслуженный участник
Аватара пользователя


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

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

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

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

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

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

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

 Профиль  
                  
 
 
Сообщение16.03.2006, 02:22 
Аватара пользователя


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

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

 Профиль  
                  
 
 
Сообщение17.03.2006, 12:16 
Заслуженный участник
Аватара пользователя


16/03/06
406
Moscow
По-моему, это, как раз, пример непрактичности академического образования. Современное практическое программирование на энцать процентов состоит в использовании чужого кода. То ли в коллективной работе, то ли в использовании бесплатных примеров.

 Профиль  
                  
 
 
Сообщение17.03.2006, 14:53 
Аватара пользователя


13/03/06
36
Урал
Dims писал(а):
По-моему, это, как раз, пример непрактичности академического образования. Современное практическое программирование на энцать процентов состоит в использовании чужого кода. То ли в коллективной работе, то ли в использовании бесплатных примеров.

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

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

 Профиль  
                  
 
 
Сообщение17.03.2006, 18:56 
Заслуженный участник
Аватара пользователя


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

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

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

 Профиль  
                  
 
 
Сообщение17.03.2006, 19:32 
Заслуженный участник
Аватара пользователя


16/03/06
406
Moscow
ПВА писал(а):
"Чужой код" - значит кто-то его написал? И что же, Вы полностью согласны, что "это" так и должно быть?

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

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

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

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

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

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

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

 Профиль  
                  
 
 
Сообщение17.03.2006, 19:48 
Экс-модератор
Аватара пользователя


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

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

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

 Профиль  
                  
 
 
Сообщение17.03.2006, 21:15 
Аватара пользователя


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

 Профиль  
                  
 
 
Сообщение18.03.2006, 01:43 
Аватара пользователя


13/03/06
36
Урал
Чем больше узнаём - тем меньше знаем, может заняться делом и попить пива... :cry:

 Профиль  
                  
 
 
Сообщение18.03.2006, 21:43 
Заслуженный участник
Аватара пользователя


12/10/05
478
Казань
Я все-таки думаю, что все "от и до" самому писать - это черезчур. Если конечная прога состоит (или должна состоять) из 3-х миллионов строк, а программер производит в день по сотне строк, то... Этак ему всей жизни не хватит.. :(

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


13/03/06
36
Урал
:D

 Профиль  
                  
 
 
Сообщение19.03.2006, 17:00 
Заслуженный участник
Аватара пользователя


16/03/06
406
Moscow
photon писал(а):
Dims писал(а):
Для практики чем тупее можно скопировать, тем лучше: экономятся мозги для других мест. Всё программирование развивается в направлении конструктора из чёрных ящиков, в функционировании которых разобраться в принципе нельзя.

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

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

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

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group