Почему так тяжело учиться программировать

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

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

Изучая различные языки, фреймворки, технологии одну за одной, легко забыть, насколько устрашающе выглядит программирование для человека, с ним не знакомого. Начало обучения, которое обычно включает в себя изучение какого-либо языка программирования, многих пугает настолько, что они сдаются. К примеру, вот «Hello, World!» на Java — широко известном языке, который стал промышленным и образовательным стандартом.

Когда я впервые написал эти строки, я абсолютно не понимал, что происходит. Я мог только догадываться о значении слов вроде println. Я начал искать в сети значения остальных слов и натыкался на такие понятия, как классы, методы, модификаторы доступа, массивы строк и return даже в самых примитивных объяснениях. И насколько простым бы ни было это объяснение, даже читать его было страшно, не говоря уже о том, чтобы запомнить, о чем там написано.


В конце концов я понял, что в процессе обучения я столкнусь со множеством понятий, которые со временем прояснятся. Я просто возвращался к ним позже, когда набирался опыта. Сначала я просто перепечатывал незнакомые слова без понимания того, как и почему это работает. Я не задумывался о качестве кода, о понимании каждой строчки, я исправлял ошибки только для того, чтобы программа скомпилировалась. В конце концов, тяжело думать о том, как я пишу, когда надо решать поставленную преподавателем задачу. Мне ставили высокие баллы, несмотря на ужасный код.

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

Меньше всего люди ожидают, что изучение нового хоть и не закончится, но будет становиться проще с каждым днем. Вместо этого они думают, что «это слишком сложно» или что «это не для них». Прибавьте к этому то, что они видят других людей, у которых получается программировать, которые «просто» знают, как работает код, и вы поймете, почему новички часто бросают обучение программированию или информатике.

В заключение я хочу сказать всем, кто сейчас учится программировать: неважно, что вы изучаете, чувство потерянности — это нормально. Люди уделяют гораздо меньше внимания изучению основ, чем изучению более сложных вещей — и это тоже нормально. Чувство «я ничего не смогу» со временем сменится на «я просто этого еще не знаю», но для этого нужно набраться опыта и познакомиться с программированием в целом. Хороший программист — не тот, кто знает все вдоль и поперек, а тот, кто способен быстро адаптироваться в новой технологии.

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

Ориджинал

Пераклад

Версия для печатиВерсия для печати
  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 3
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Страницы

Аватар пользователя savely

> Не верю

Ну, сделал лабу/написал курсач/проходил практику в студенческие времена на Наири. На том и закончил. Чем не вариант? Я, кстати, пытался наискать, какая машина (большая) стояла в 1991-1992 году на всем(!) втором этаже пятого корпуса МРТИ - не нашел. А так бы написал. 

Но реально-то я начинал на Z80 и 8086. 

>  Имхо не трудно, если понимаешь, как работает проц и окружение. А этому в школе не учат. Потому и трудно.

Не, в той же JAVA простейший "проц и окружение", можно и не понимать. В этом случае достаточно некоего набора аксиом, типа описывающих архитектуру, что ли... IMHO, ессно.
В общем-то на Focal, Basic и Pascal в школьные времена я довольно резво кодил и без знания хардвера. 
Типа "программа формирования  и распечатки платежной ведомости". Входной файл - текст с ФИО и ЗП. Выход - по каждому табличка псевдографикой с налогами, итого на руки, и т.п. ;) 

> была бы интересна ликбезная статья на тему "Что такое юнионы, структуры и классы изнутри" ? Думаю, что затык обучения возможен из-за непонимания этих фундаментальных вещей.

;)  Мне читали реализацию ООП на MASM. 

 

Аватар пользователя mike

 на Focal, Basic и Pascal в школьные времена я довольно резво кодил и без знания хардвера.

А я ещё и на МК. Но уже мэнээсом. Школьником -- на логлинейке. Нынче не все, поди, не знают, що це таке. :)

Мне читали реализацию ООП на MASM

Счастливый. А я сам додумывал. Не было при совке ООП. :)

mike пишет:

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

Ошибаешься - ибо писать текст умеющий и кодить может. (С)

mike пишет:

Не думаю, чтобы Логик про Наири выдумал. Эти ЭВМ в БССР эксплуатировались. В РТИ даже курсы были. Совершенно бесплатные. Кстати, я на них занимался. :) Но ... не пошлО. :( Нехватало понимания,  хау ит воркс. :) Наверное, потому что технарь, гыгы.


Э, не - я начинал далеко (700 км) от Минска.

 

mike пишет:

Не думаю, чтобы Логик просто прочитал про Наири. Многие работали на этой ЭВМ. И многие ею восхищались. О Наири я узнал на первом курсе от своей девушки -- у неё в ВУЗе она имелась, и девушке страстно хотелось на ней программить. Только теперь я понял, что Наири была передовой ЭВМ для того времени, так как благодаря микропрограммному принципу организации команд могла эмулировать команды (а значит и ПО, хватало бы ОЗУ) любой западной машины своего класса.

К тому же эта машина изначально задумывалась НЕ для программиста, а для ... бухгалтера, как и язык на ней - ЯМБ.

 

 

Аватар пользователя savely

> Не было при совке ООП.

Да, это был 1993-4, если правильно помню. Ага, читал автор этого

http://www.twirpx.com/file/456565/

Тогда была его предыдущая книжка (слету не гуглится). но ООП на MASM был только на лекциях. "Мем" от Склярова моих времен - "myasm" (миазм ;) ). Он так все примеры кода называл. 

Аватар пользователя savely

> К тому же эта машина изначально задумывалась НЕ для программиста, а для ... бухгалтера, как и язык на ней - ЯМБ.

Ага, Логик все же бухгалтер! ОК, понял. ;)

А "язык на ней" - какие компиляторы/интерпретаторы напишут системщики - такие и языкИ на ней. Сомневаюсь, что ЯМБ был единственным. 

savely пишет:

А "язык на ней" - какие компиляторы/интерпретаторы напишут системщики - такие и языкИ на ней. Сомневаюсь, что ЯМБ был единственным

Это неважно, был ли он единственный - ЯМБ был основной язык для Наири-2 и может быть и единственный.

 

savely пишет:

> К тому же эта машина изначально задумывалась НЕ для программиста, а для ... бухгалтера, как и язык на ней - ЯМБ.

Ага, Логик все же бухгалтер! ОК, понял. ;)

Идея в том, что на этой машине учили программировать. Всех. И бухгалтеров и не бухгалтеров.

mike пишет:

В РТИ даже курсы были. Совершенно бесплатные. Кстати, я на них занимался. :)

Вот видишь, в РТИ были даже эти машинки и даже mike, явно не бухгалтер, а технарь на этих машинах пытался освоить программирование.

Аватар пользователя mike

 Сомневаюсь, что ЯМБ был единственным. 

Правильно сомневаешься. Не помню что, но точно  не только ЯМБ.

Страницы