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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
YLab Тольятти
от 80 000 до 130 000 руб.
RentaTeam Москва
от 120 000 до 170 000 руб.
Rambler Group Москва
До 220 000 руб.
17 июл. 2019, в 19:35
100000 руб./за проект
17 июл. 2019, в 19:28
800 руб./за проект