Верен ли такой подход к изучению программирования?

Здравствуйте. Я постигаю азы разработки на Android. Решил начать с калькулятора. До этого писал лишь лабы на C и простенькие задачи на java, т.е. кроме пузырька, верчения строк и матриц в консоли я ничего не делал.

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

Верно ли направлен вектор? В будущем, перейдет ли количество при таком подходе в качество?
  • Вопрос задан
  • 4684 просмотра
Пригласить эксперта
Ответы на вопрос 10
Denormalization
@Denormalization
В современном мире 80% задач решается копипастом чужого кода и небольшой правкой. (Британские учены доказали).
Для типовых задач уже давно существуют готовые решения. Не нужно изобретать велосипеды, а тем более комплексовать из-за этого.

Вам же стоит не просто копировать чужой код и разбираться в нем, но и попробовать его воспроизвести.
Т.е как-то так:
- Копипастим
- Разбираемся почему и как оно работает
- Удаляем все, создаем новый проект и пишем все с нуля без подсказок (ручками).

Такой подход будет более эффективен.

Но все люди разные, и каждый обучается так, как ему удобно. Если вы считаете что вы хорошо усваиваете материал подобным образом, то ничего страшного в этом нету. Просто попробуйте воспроизвести результат с нуля, и если у вас получится - вы действительно усвоили как это делать.
Ответ написан
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
Ну собственно 99,9% программистов берут такой вектор развития. Оставшийся процент видимо те у кого нет интернета :)
29437996.jpg
Главное не делать это бездумно, а пытаться разобраться "что и почему" в коде, который вы берете. Со временем будете меньше копипастить, и больше обходиться собственными мозгами.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега IT-образование
software engineer
Писать из головы стоит уникальный код. Копипастить чужой код, особенно если досконально в нем разобраться - отличная идея. Разобравшись в множестве чужого кода, видишь разницу, видишь разные подходы, не крутишься в своей песочнице.

Кроме того, у вас крайне правильный подход в том, что вы довели дело до конца и выпустили продукт, а это не только изучение программирования на каком-то языке, но и изучение стека технологий - как не только написать кусок кода, но и скомпилить, и загрузить на телефон, и запустить уже непосредственно на конечном девайсе. Плюс UI.
Ответ написан
Комментировать
@VZVZ
Reverse-Engineer, Software Developer, Architect
Программирование, в первую очередь, всегда должно быть ориентировано на задачу.
Если в рамках вашей задачи достаточно взять чужой код и не требуется его изучение, то все норм.
Если же желательно его раскопать (есть подозрения, что будут проблемы, или просто достаточно денег и сроков), или если это необходимо, то надо копать.

Ибо подход должен быть интеллектуальным, а не категоричным "да/нет".
Если "да" - то есть ставить целью в рамках любой задачи раскопать все на свете до последнего бита, то придется копать все стандартные библиотеки, платформы, IDE, ОС (а че? вдруг пригодится? бывает) - то сами понимаете, никакого времени не хватит, и реальный заказчик такое времяпрепровождение не оплатит.
А если "нет" - то есть всегда и везде плавать на поверхности - то вы будете не уникальны и многое не осилите.

Т.е. отталкиваемся от задач, а откуда же брать сами задачи?
А их берем из более глобальных целей: фриланс, работа в конторе, такие-то направления...
Многое зависит от личных особенностей, кто-то прирожденный реверс-инженер, а кто-то скорее изобретатель, чем исследователь, и для них ответ на ваш вопрос будет разным.
Ответ написан
@evgeniy_lm
Ну, во-первых, всегда надо с чего-то начитать. Во-вторых, зачем изобретать велосипед. Если есть готовый код то почему бы его не использовать. С другой стороны и злоупотреблять копипастом то же не стоит. Часто густо встречаются вопросы типа "Где найти компонент ...", "У кого есть код ..." . Простое правило: "Знаешь где скопировать - копируй, не знаешь - напиши сам (не забудь дать скопироват другим)"
Ответ написан
Комментировать
@potan
Функциональный программист
Читать чужой код не менее полезно, чем писать свой. Особенно если это хороший чужой код.
Ответ написан
Комментировать
@abcd0x00
Калькулятор почти готов, но меня просто угнетает то, что я не сам его написал.

Это важный вопрос. Пока ничего не пишешь сам, копирование чужого может казаться лёгким. Но однажды ты хочешь написать свою программу и ты задумываешься "А будет ли она моей? Не будет ли там чужих кусков под какими-то чужими правами?". Хорошо, если там ничего особенного не будет (свободные лицензии и всё такое). Но может быть и так, что ты станешь зарабатывать на своей программе (совершенно неожиданно для себя самого). И тогда автор какого-нибудь куска, которого не было никогда видно, тут же проснётся и спросит тебя "А где моя доля за труд?". Ты захочешь её (его часть) убрать и тут столкнёшься со вторым вопросом, лежащим в той же плоскости "А как её убрать? Я же не умею, потому что привык только копировать".

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

Это важный вопрос. Да, все копируют код по мере возможности, есть даже такая директива: можешь скопировать или написать - скопируй. Но это относится к тем, кто уже умеет писать это всё. Это очень важное отличие - дурачка, который копирует, и профессионала, который копирует. Если ты не умеешь, то рано или поздно придётся что-то делать своими силами (писать с нуля или сильно переделывать чьё-то) и ты не сможешь, потому что никогда себя не развивал в этом. А мозг устроен очень просто: если ты задействовал в нём какие-то центры, то они всё запоминают и задействуют потом; если же ты не задействовал нужные центры, то мозгу просто нечего вспоминать. Копирование кода не задействует синтезирующие части мозга.
Ответ написан
Комментировать
@lomikman
Калькулятор почти готов, но меня просто угнетает то, что я не сам его написал

ДНК свою ты тоже не писал, но не тебя же это не угнетает, верно? А она сама себя копипастила миллиарды лет без зазрения совести. Бери пример с ДНК
Главный двигатель прогресса твоего взросления как программиста это то насколько ты быстро научишься копипастить, понимать возможности и ограничения твоих инструментов
Программирование это в первую очередь про решение задач. То насколько быстро ты будешь понимать чем плохой код отличается от другого и определяет твой прогресс
Попробуй найти изъяны в твоем коде сам. Потом попроси опытных товарищей. Потом перепиши. Потом повтори снова N раз. Ставь каждый раз более сложные цели, не бойся больше читать чужой код чем писать сам(большинство профессиональных программистов больше читают чем пишут). И да прибудет с тобой сила!
Ответ написан
Daniro_San
@Daniro_San
Программист
Копипаста - зло.
Так и дезигнером стать не далеко - знай себе копипасти да формочки лепи.
Лучше всего как уже сказали - понять чужой код и написать свой.
Ответ написан
Комментировать
@Exotic33
Есть такие люди, которым чтобы выучиться, достаточно посмотреть как это делают другие. Увидев реализацию чего-либо я, например, стараюсь это воспроизвести, некоторые куски кода переписываю вручную. И не стоит комплексовать из-за этого. Как говорят "Психолог - это не тот, кто знает ответы на вопросы, а тот, кто знает, как их искать".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы