LINUX.ORG.RU
ФорумTalks

Как научиться программировать?

 , , , ,


3

5

Как научиться прогать? Как учились вы? Как учились раньше олды я уже нашел тему и прочитал.

Господа, у меня такая проблема, что в общем и целом подступиться пытаюсь к теме уже 2 года. Начинал я еще в 2009, купили книгу по питону и я ее не осилил. Вот так. Там начались логарифмы(или я их где-то усмотрел, потому что сейчас перечитываю и не могу найти их), а с матаном тогда было совсем туго. Ну я и подумал, что матан == программировать = не мое. На следующий год склепал для игры на ucoz сайтец, немного размял html, потом был следующий сайт уже на гугл конструкторе. В итоге тоже похоронил это дело, т.к. пошел учиться на истфак и информации было очень много. Где-то в 2018 году решил вернуться к вопросу.

Начал с objective-C, начал с основ, буквально неделю подолбился и понял, что дела иметь с аппл и прочим я не хочу, тогда еще свифт начал набирать популярность так что я и вовсе забил. Далее был php. В пхп вникнуть не смог - не знаю кто там говорит за легкость, но мне мешанина из html кода и пхп буквально взрывает мозг. На пхп максимум правил какие-то штуки в шаблонах всяких CMS и забил на это дело. Потом начал javascript, потом забил. Начал изучать Java - было интересно поднять свой сервер для ММОРПГ. Но в итоге как-то забил. Да, здесь вы можете сказать что моя проблема в том, что я забиваю, но читайте пожалуйста дальше эту простыню :)

Решил закрыть гештальт и вернуться к питону. Написал на питоне бота, который нужен был другу….ну как написал.. В этом то и вся проблема! Что написать я ничего не написал. Я просто перерывал кучи исходников, статей, из говна и палок собирая бота, плюясь и кряхтя, проклиная все на свете. Потом начал учить синтаксис питона, забил.

Когда забивал - в основном работал, естественно, не по специальности. Пердолил бубунту, потому что в моем манямирке прогать не на линухе не тру. Да и вообще неудобно. Опять же, вернулся к основам. Читал Лутца, читал A Byte of Python 2 раза, читал Грокаем Алгоритмы Бхаргава. Потом высрал еще пару ботов на питоне, почти схожим с предыдущим примером образом. Я не умею взять и сесть начать писать программу, я буквально не знаю с чего мне начать.

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

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

Но проблема в том, что я абсолютный 0. Нет, не так. Дырка от 0. Вот установил wm awesome ради Lua. И то снес, хоть и жалко, не успел я напердолиться. Непонятно как именно строить программу на моем этапе.

Я могу взять чей то код, могу даже починить его и заставить работать - НО НА ЭТОМ ВСЕ.

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

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

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

без практической цели и постоянного применения всё бестолку.

как попытки научится скрипке в полной изоляции по методичке

MKuznetsov ★★★★★
()

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

alex1101
()
Ответ на: комментарий от NorthernBlow

Да, Кнута стоит осилить, кмк это база.

Ещё хотел добавить к комменту выше:

Может, ты с места в карьер пытаешься охватить необъятное. Я например всё осваиваю постепенно. Не хватаю сразу все доступные фичи, а беру несколько и задрачиваю их до предела. Когда уже упираюсь в их потолок - беру следующие, и так далее.

alex1101
()
Ответ на: комментарий от MKuznetsov

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

NorthernBlow
() автор топика

С кодингом вообще - выбираешь цель, дробишь задачу до уровня «так тут уже почти и кодить нечего, всё очевидно», реализуешь на известном тебе ЯП.

Я не понимаю, например, как и куда применять ООП, чтобы это было полезно и осмысленно. Ну кроме очевидных элементов GUI и каких-нибудь юнитов в играх.

yu-boot ★★★★
()
Ответ на: комментарий от alex1101

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

NorthernBlow
() автор топика
Ответ на: комментарий от NorthernBlow

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

Реализуй самую примитивную реализацию, используя минимум возможностей языка, пусть даже это выглядит как школьная поделка. А потом - «обработать напильником» 😁

alex1101
()
Последнее исправление: alex1101 (всего исправлений: 1)
Ответ на: комментарий от alex1101

то есть, начинать с того, что с инпута записывать в переменную свое «дело» а потом выводить его в консоль, далее усложнять?

NorthernBlow
() автор топика
  1. Пишем какуюнить простую хрень, в идеале простые игры типа крестики нолики, морской бой и тд, главное довести до осмысленного результата
  2. Читаем книжки, осознаём кринжевость получившегося кода, попутно в этих же книжка находим простые решения, кусков когда где страдали на шаге 1
  3. Пробуем фиксить, забиваем
  4. Переходим к шагу 1
sparks ★★★
()
Ответ на: комментарий от NorthernBlow

Да, как-то так. Потом ты, конечно, не раз перепишешь код, но это нормально. Так придёт понимание, с чего нужно начинать в следующий раз.

alex1101
()

Так веб или ВПО? Вы или штаны снимите, или крестик наденьте.

Но как научиться строить программы?

Начать их писать. Иди джуном или стажером, куда возьмут. Там и платить будут.

aiqu6Ait ★★★★
()

Мне кажется это абсолютно не мое

Мне кажется тебе не кажется. А что в этом плохого?

Ведь мозг можно обучить буквально всему

Тут в соседней теме недавно обсуждали. Я вот считаю, что не нет. Если изначально ты не умеешь думать нужным образом, то ничего не получится.

под видом простого упражнения заставляет писать алгоритм бинарного поиска

Это и есть простое упражнение.

как-то на хлеб зарабатывать

Можно и без программирования. Более того, вот ты уже столько мудохаешься, а до сих пор ничего толком не заработал программированием. Если тебе прямо кровь из носу нужно в ИТ, то можно тестировщиком пойти. Тоже деньги. А вообще лучше найти что тебе нравится и что легко получается. С такой энергией и упорством ты бы уже давно стал там профессионалом с хорошей зарплатой.

no-such-file ★★★★★
()
Ответ на: комментарий от NorthernBlow

Какой вообще должен быть подход?

А. Вот.

  • Написание ТЗ

  • Написание требований

  • Описание архитектуры

  • Написание тестов

  • Написание кода

два последних пункта можно менять местами по вкусу.

aiqu6Ait ★★★★
()

Я без книжек выучился. Практикой. Гуглил только то, что было не понятно.

По книжкам и я бы не научился. Очевидно, книжки пишут для тупых. Умным то они зачем. Покупая книжку ты тем самым ставишь себя на место тупого. Так что первым делом ты должен выйти из этой ментальной позиции, путём сжигания всех книжек.

ox55ff ★★★★★
()
Ответ на: комментарий от NorthernBlow

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

можно начать с самоуважения. Перестать «прогать» (прямо из первых слов топика) и начать разрабатывать.

MKuznetsov ★★★★★
()
Ответ на: комментарий от alex1101

Ты Кнута то хоть читал? Его не каждый человек умеющий писать код осилит. И математики там много, и она не такая уж и простая, особенно если нет математического образования.

soomrack ★★★★
()
Ответ на: комментарий от aiqu6Ait

дык кушать сейчас хочется, а в будущем, для души хочу заниматься микроконтроллерами. Джуном, стажором в мухосранске только 1С. Да и рынок умер, вы не забывайте. Меня не смущает, я хочу просто хотя бы научиться без интернета что-то делать.

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

NorthernBlow
() автор топика

Так и не научился 😭

Не стоит переживать. Кто-то всегда будет получать больше тебя, а кто-то всегда меньше.

chenbr0
()
Ответ на: комментарий от MKuznetsov

можно начать с самоуважения. Перестать «прогать» (прямо из первых >слов топика) и начать разрабатывать.

нет. все что я делаю - это именно прогать. Разрабатывать я хочу научиться как раз таки.

NorthernBlow
() автор топика
Ответ на: комментарий от chenbr0

какая разница сколько кто зарабатывает, если я не смогу запрограммировать себе теплицу условную? и нет, я не хочу никого вызывать и платить кому-то деньги, я хочу сделать это вручную.

NorthernBlow
() автор топика
Ответ на: комментарий от NorthernBlow

рынок умер, вы не забывайте

4.2

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

Открой для себя отладчик

aiqu6Ait ★★★★
()
Ответ на: комментарий от aiqu6Ait

что за отладчик? а без него никак что-ли? то есть с отладчиком я быстрее научусь? IDE установить рекомендуете?

NorthernBlow
() автор топика

У меня цель простая, хочу писать ПО для микроконтроллеров

«Элементарно, Ватсон»: выбираешь микроконтроллер и компилятор ©
и пишешь сначала «как ремесленник», по примерам, а уж опосля "как Демиург © ".

quickquest ★★★★★
()

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

Если хочешь писать код для микроконтроллеров, то надо устроиться джуном в компанию, которая пишет код для микроконтроллеров.

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

soomrack ★★★★
()

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

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

cocucka ★★★★☆
()
Ответ на: комментарий от no-such-file

Это и есть простое упражнение.

это для тебя простое.

не хочу без программирования.

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

ну тысяч 10-20-30 может и заработал уже. я не считал сколько мне оно принесло. Мне нравится история, нравится программирование, но последнее в голову залезает туго. Запоминать тонны информации мне легче, чем реализовывать, это правда. Но что поделать, скоро все продавщицы будут программировать и я отправлюсь на свалку жизни. А еще услуги программистов стоят довольно дорого, а мне многое чего предстоит еще автоматизировать у себя на участке.

NorthernBlow
() автор топика
Ответ на: комментарий от soomrack

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

NorthernBlow
() автор топика
Ответ на: комментарий от soomrack

Это должна быть стратегия скорее всего. Для стратегии необходимо глубокое понимание реализации и применения алгоритмов поиска пути. Думаешь такое реально осилить на моем-то уровне?

NorthernBlow
() автор топика
Ответ на: комментарий от cocucka

Программист это склад ума

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

NorthernBlow
() автор топика
Ответ на: комментарий от NorthernBlow

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

cocucka ★★★★☆
()
Ответ на: комментарий от cocucka

Ну значит моя стезя - это протратить жизнь, все - ни на что, пытаясь вникнуть. Таков путь

NorthernBlow
() автор топика

Почему ты ноль? Ты не ноль. Вон сколько знаний. Возможно не глубоких, но все же. Выбери специализацию и качайся. Не учи все сразу: и веб и c++ и java и php - выбери что то и учи. Может пройди пару курсов. Напиши какой нить свой проект. Как выберешь направление, создай тему с вопросом, что нужно знать на собесе и на ютубе посмотри видосы, как проходят собесы на выбранное направление и подтягивай соответствующие знания. А потом и собесы проходи. Удачи.

Надеюсь война не перечернет все это…

rumgot ★★★★★
()
Ответ на: комментарий от soomrack

не ограничивайся только одним языком

Только вот на собесах спрашивают навыки для конкретной технологии/языка/специализации. Поэтому тут я не согласен ч тобой. Лучше сфокусироваться на определенной нише.

rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 1)

Чёт ты припозднился. Через год-другой нейросетки всех кодомартых порешают.

utf8nowhere ★★★
()
Ответ на: комментарий от NorthernBlow

это для тебя простое

Да, но это не потому что я какой-то супер умный. Просто есть люди которым это просто, а есть те кому это не просто.

не хочу без программирования

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

ну тысяч 10-20-30 может и заработал уже

Это за сколько лет? Ты б на паперти у церкви больше заработал бы за это время.

Запоминать тонны информации мне легче

Ну иди в аналитики, дата сайенс что-ли. Трендовая специальность, куча бабла. Как у историка и чуть-чуть программиста у тебя все нужные навыки и способности есть.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 3)
Ответ на: комментарий от soomrack

Так ТС спрашивает, как научиться программировать, а не как научиться писать код

alex1101
()
Ответ на: комментарий от rumgot

Только вот на собесах спрашивают навыки для конкретной технологии/языка/специализации. Поэтому тут я не согласен ч тобой. Лучше сфокусироваться на определенной нише.

Для старта обучения лучше не ограничиваться, а вот когда какая-то база сформируется, тогда да, надо будет выбрать язык (и это уже можно будет сделать осознанно) и целенаправленно его прокачивать.

soomrack ★★★★
()

сим-салабим!

всё, ты программист.

не за что.

olelookoe ★★★
()

забил*6

Забей)

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

И да, легче обучатся в универе, самому по книжкам тяжелее.

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 2)

Пройди бесплатные курсы на edx https://www.edx.org/learn/computer-programming

Или найди программу обучения какого-нить универа по специальности программист и начни её проходить самостоятельно.

купи stm32 blue pill, STLink и программируй что-нить простенькое, интерфейсы, таймеры, прерывания, как работает USB и.т.п.

linuxoidspb
()
Ответ на: комментарий от NorthernBlow

что за отладчик? а без него никак что-ли? то есть с отладчиком я быстрее научусь? IDE установить рекомендуете?

Похоже, что так. Вводные данные у меня примерно такие же, некоторое время назад получил схожий совет. Отладчик gdb редактор vim (в нём есть встроенная поддержка gdb), моя шпаргалка тыц

Jurik_Phys ★★★★★
()

Читая статью одного крутого программиста, он между делом написал, как подходит к изучению чего-то нового, и сказал, что сперва читает книги из серии для чайников (NNN for dummies) и получается общее представление о предмете, а потом уже погружается вглубь.

  1. https://roadmap.sh/computer-science

  2. The Self-Taught Programmer: The Definitive Guide to Programming Professionally https://www.amazon.com/Self-Taught-Programmer-Definitive-Programming-Professionally/dp/0999685902

linuxoidspb
()
Ответ на: комментарий от yu-boot

Я не понимаю, например, как и куда применять ООП, чтобы это было полезно и осмысленно.

Для коннекторов к БД очень годно можно применять. Делаешь интерфейс(абстрактный класс) и давай его реализовывать по-разному для разных БД. Ну это если совсем грубо. Так то для этой задачи даже такая спорная штука как множественное наследование бывает полезным(мне было дело не хватало его в C#).

Loki13 ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)