Как развить мышление для программирования?

Недавно закончил изучение Python(по книжкам) и в практике заметил, что у меня туго идет с созданием алгоритма(порой просто не могу сформулировать на языке программирования).
Пробывал читать Кормена, не осилил (так как математическая подготовка на уровне 9 класса).
Что посоветуете почитать или изучить? Или же стоит начать изучать высшую математику для дальнейшего изучения алгоритмов?
  • Вопрос задан
  • 24189 просмотров
Решения вопроса 1
Опыт лучший учитель. Занимайся непосредственно программированием от легких задач к сложным. Я закончил физико-технический факультет и когда занялся программированием ничем не отличался от тебя путался в алгоритмах и с трудом строил циклы. Начинал с самого простого, брал учебник и разбирал примеры, придумывал задачки и храбро их решал, читал мануалы, находил толковые видеоуроки по нужному материалу. Терпение и труд делают свое черное дело, я занимаюсь Web-программированием и чем больше изучаю его, тем больше осознаю как много еще не знаю. Думаю, в программировании самое важное то, чтобы тебе самому было интересно им заниматься и ты с удовольствием тратишь на него свободное время и силы, все остальное придет со временем. Еще могу посоветовать найти компанию единомышленников или наставника, с кем можно посоветоваться и попросить помощи, мне в этом повезло, у меня лучший друг хороший программист, даже и не знаю, что бы без него делал)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 14
@Dum_spiro_spero
На мой взгляд математика и программирование связаны мало.
Еще в школе (ну да, физматшколе) у моего друга с математикой было не хуже чем у меня, а с программированием - никак. Школьная и институтская математика - увы - учат решать стандартные задачи стандартными методами.
Создание же даже просто алгоритма - это процесс творческий.
Ну на самом деле - в программировании же понятийных сущностей мало - переменные, ввод-вывод, циклы, функции, С++ как приятный бонус вкупе с RAD.
Если взять типичную программу - решение квадратного уравнение - то даже тут встретятся моменты творчества.
Как назвать переменные? Коэффициенты вводит пользователь или они жестко заданы? После окончания программы - всё, стоп или решаем еще одно? А если подсунули линейное уравнение, а не квадратное - как быть? А если уравнение задано в виде строки вида "2x^2+3x-10=0" - может такое решим?
Ну и так далее.
А какие-нибудь крестики-нолики запрограммировать - надо еще больше таких вопросов решить.
А математика как таковая вообще мало нужна - если нужно запрограммировать как спутник летит - то почитаете книжки по численным методам благо их нынче вагон - с точки зрения программирования - там все гиперпросто.
Как правило это программы вида считать данные, долго считать по сложным формулам, вывести результаты.
Да, есть некоторое количество знаний которое надо знать - типа что такое указатель и как он хранится, что не нежелательно сравнить переменную типа float с нулем, как хранятся массивы, и т.п.. ну это все в книжках по программированию есть.
Моя идея такая - старайтесь одну и ту же задачу по программированию решить РАЗНЫМИ способами - ну или обдумать хотя бы разные подходы.
О себе - с первого курса института работал в программисткой фирме. Пишу на С/С++ в его разных ипостасях, новомодных штучек типа Питона не знаю.
Ответ написан
gbg
@gbg Куратор тега Программирование
Любые ответы на любые вопросы
Изучайте математику. Нажимайте на высшую алгебру, матлогику и теорию алгоритмов.

Решайте задачи. Почитайте "Конкретную математику" Кнута.
Ответ написан
Комментировать
mrRontgen
@mrRontgen
Scala lover.
Недавно закончил изучение Python.....

Знание синтаксиса языка не не означает что Вы знаете язык. Закончите свою фразу до конца. Что в языке Вам понятно, что не понятно? Я знаю много людей, которые прочитали много книжек по математике, алгоритмам но применять эти знания они не могут. Высшая математика( как Вы ее назвали) - это уровень абстракции ( реальная задача превращается у выражение, уравнение). Вот например, сколько нужно купить обоев, что бы обклеить комнату? Замеряете размеры стен, узнаете ширину полотна обоев, записываете уравнение и вуаля!! Так же и в программировании. Есть реальная задача и Вы переводите ее на некий язык ( создаете абстракцию, модель). И что действительно дает математика, так это навык и умение работать с абстракциями. И чем лучше Вы научитесь мыслить абстракциями, тем лучше Вы сможете решать задачи( причем не обязательно в программировании). Что я хочу донести, так это то, что бы Вы не тратили время на простое изучение книжек! Найдите задачу и начните ее решать, а процессе решения у Вас появиться куча вопросов и ответы на них Вы и будете искать в книжках, на тематических сайтах и так далее. Более того Вы научитесь задавать вопросы по существу! А раз Вы говорите, что закончили изучение Python - то вот Вам и задачка: почему в питоне нет оптимизации хвостовой рекурсии?
Ответ написан
Комментировать
@hellpirat
Full stack developer (Python/Django, React.js)
Ответ написан
Комментировать
garex
@garex
Мышление для программирования никак нельзя развить, также как и тело для балета — оно или есть или его нет.

Ваш «ёж» — в другой области. Быть «лисой» в программировании — это плодить говнокод или что-то делать, но не получать от этого удовольствия. Попробуйте другую область.
Ответ написан
EvilsInterrupt
@EvilsInterrupt
System programming, Reversing Engineering, C++
Мне кажется у Вас проблема в другом. То что скажу это лишь мое мнение и оно может быть не верным, но тем не менее рекомендую подумать над моими словами.

Ваша проблема в непонимании того, что Вы хотите достичь?

Понимаете, есть разные цели: программировать, чтобы решать задачи и программировать, чтобы программы работали еще быстрее. Это абсолютно разные цели!

Задайте себе как можно больше вопросов и поймите, что на самом деле Вы хотите достичь? Какую конкретно цель Вы преследуете?
Ответ написан
Комментировать
@krog
Developer
У Кнута есть книжка "Конкретная математика", если не осилил Кормена, эта должна легче зайти )
Ещё есть на интуите видеокурс "Дискретная математика", там прям вообще с самых азов всё подробно
Ответ написан
@LLlAMuJIb
Для алгоритмов стоит изучать алгоритмы, и как сказали выше - практиковаться. Необходимо понять что есть абстракция и декомпозиция как минимум, а потом этим научиться пользоваться.
В любом техническом вузе есть сотни книг для курса программирования, главное понять суть, а потом уже расширять знание умением.
Не потянул Кормена, попробуй другого: Вирт, Скиена, Голдаев, Левитин... их можно перечислять до бесконечности, они все об одном и том же разными словами, а порой и теми же.
Почитай про паттерны, постарайся осмыслить и проанализировать. Главное тяга.

upd:
Ну или вон в соседней ветке рекомендуют aliev.me/runestone
Ответ написан
Комментировать
Noizefan
@Noizefan
Честно говоря, мышление для программирования по моему мнению развивается именно в процессе.
В ходе обучения в школе, в современной программе есть довольно обширная тема - блок-схемы. Они облегчают создание алгоритма посредством его визуализации.
Быть может, они вам помогут если говорите что плохо с алгоритмами.
Так же советую потренероваться на чём-нибдь попроще... Питон, насколько себе представляю, не такой уж и лёгкий язык.
Ответ написан
@Elizavetta
Matroid: gamedev/js-разработка
Возьмите программу МГУ для мехмата/ВМК. Начинайте с подготовки к вступительным экзаменам. Вся информация есть в открытом доступе. Можете сравнить с MIT.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Все просто:
Попробуйте посчитать факториал (рекурсивный алгоритм), предварительно составив блок-схему (например, в www.draw.io). И далее - Вы поймёте, что Вам нужно.
Ответ написан
Комментировать
effetto
@effetto
.Net разработчик
Чтобы развиваться как программист, рекомендую постоянно ставить перед собой новые, нестандартные задачи. Рекоменду стараться решать имеющиеся задачи наиболее оптимально, изящно. Так же стоит уделить внимание своим метрикам, причем не только кода, но и тела. Постарайтесь довести процесс разработки до совершенства. Такое глобальное направление автоматически заставит развивать мышление. А дальше уже приложатся и книжки, и математика.
Ответ написан
Комментировать
viktorvsk
@viktorvsk
Что нужно, что бы составить алгоритм ? Математика? Врядли. Для математики как раз и нужно уметь составлять алгоритмы. Хз, попробуйте пожить в наших реалиях. Выжить на зарплату, купить машину, стать более самостоятельным, принимать решения самому.

Не представляю, как можно развить логическое мышление в замкнутом простарнстве.
Ответ написан
Комментировать
@kstyle
9 класса вполне достаточно для активного начала. задачи и еще книги попроще найдите.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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