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

Как развить логику для программирования

  • автор:

Как изучить программирование и развить абстрактно-логическое мышление?

Я сейчас работаю в IT. Начинал с помощника сисадмина, ныне работаю в хелпдеске. Желаю перейти в разработку на Java (backend). Сейчас обучаюсь. Чувствую, что тяжело что-то представлять. Тяжело в голове строить какие-то абстракции, модели и т.п. У меня плохо развито абстрактное мышление. Логическое мышление тоже не самого высокого уровня.

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

Вопрос 1: как развить абстрактно-логическое мышление? Ряд моих близких говорят, что такое мышление — врождённая особенность и если его нет, то это не развить. Я в корне не согласен и моё мнение противоположное.

Вопрос 2. Как изучить методику программирования? Многие твердят, что нужно учить не язык программирование, а учиться программировать. Но как? Язык — это инструмент, хорошо. Как же овладеть самим искусством программирования? Что нужно делать? Какие книги почитать? Я пробовал начать с «Грокаем алгоритмы» и с книги Никлауса Вирта по алгоритмам, но ничерта не понял. Читаю и, как говорится, «Смотрю в книгу, а вижу фигу».

Благодарю за ответы и советы.

162 показа
217 открытий
2 комментария

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

Развернуть ветку

Думаю на второй вопрос чуть добавлю. Что бы результат по программированию у вас был, прежде всего вам нужна исключительно личная задача, одна попроще и одна помасштабнее. Желательно что бы был живой заказчик. Только таким способом, при личной заинтересованности у вас появится достаточно мотивации не впоиске оптимального пути решения, но в поиске решения вообще. А там где решение там и дофамин и позитивное подкрепление. А после того как что то заработает, можно уже сделать ревизию и посмотреть что можно было сделать лучше. Или показать товарищам.

Как развивать логическое мышление

Как развивать логическое мышление

Логическое мышление — востребованный навык в IT-сфере. Оно помогает составлять стратегии, ставить и понимать задачи, упрощать процессы разработки и управления проектами, создавать понятные и удобные продукты. Это важный навык для инженеров, разработчиков, продуктовых и проектных менеджеров и руководителей. Развить его можно на практике: играя в настольные игры, читая книги и просматривая YouTube за завтраком. Делимся подборкой ресурсов, которые помогут в этом.

Настольные игры

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

Профессия / 8 месяцев
IT-специалист с нуля
Попробуйте 9 профессий за 2 месяца и выберите подходящую вам
4 490 ₽/мес 7 483 ₽/мес

vsrat_7 1 (2)

Книги

«Критическое мышление: Железная логика на все случаи жизни», Никита Непряхин и Тарас Пащенко. Книга о том, как из большого объема информации отбирать полезную и важную. На примере десяти реальных историй авторы показывают, как отличать истинные факты от фейков, структурировать и рационально использовать информацию. «Логика бреда», Вадим Руднев. Книга известного философа, описывающая развитие человеческого интеллекта. Автор рассказывает о том, что такое бессознательная наррация, согласованный бред и подлинный бред. Также объясняет, как эти явления влияют на наше восприятие реальности и креативность. «Нейрологика», Элиэзер Штернберг. Книга про особенности мозга, которые заставляют людей совершать неожиданные действия. Опираясь на исследования нейробиологии, автор рассказывает о мозговых аномалиях и феноменах психики. Например, о слепозрении, слуховых и зрительных галлюцинациях, «синдроме ходячего мертвеца» или множественных альтер-эго.

YouTube-каналы

Общество скептиков — канал в духе «разрушителей мифов». Авторы объясняют паранормальные и эзотерические явления с точки зрения науки и рациональной мысли, развенчивают теории заговора. Решайте задачи Ферми. Сколько мячей для гольфа войдет в школьный автобус? Примерно так выглядят задачи Ферми. При этом диаметр мяча, вместимость автобуса и другие числа в условиях не дают. Высокая точность и сложные математические вычисления здесь не нужны. Важно то, как вы мыслите и насколько логично подбираете аргументы. Именно эти задачи часто дают на собеседованиях в IT. Участвуйте в дебатах и дискуссиях. Если вы не любите спорить с друзьями или коллегами, попробуйте записаться в клуб дебатов или на курс, где можно обсуждать темы после лекций. Там вы научитесь аргументированно доказывать свою позицию.

IT-специалист с нуля

Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

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

Недавно закончил изучение Python(по книжкам) и в практике заметил, что у меня туго идет с созданием алгоритма(порой просто не могу сформулировать на языке программирования).
Пробывал читать Кормена, не осилил (так как математическая подготовка на уровне 9 класса).
Что посоветуете почитать или изучить? Или же стоит начать изучать высшую математику для дальнейшего изучения алгоритмов?

  • Вопрос задан более трёх лет назад
  • 23195 просмотров

Комментировать
Решения вопроса 1

robston

Опыт лучший учитель. Занимайся непосредственно программированием от легких задач к сложным. Я закончил физико-технический факультет и когда занялся программированием ничем не отличался от тебя путался в алгоритмах и с трудом строил циклы. Начинал с самого простого, брал учебник и разбирал примеры, придумывал задачки и храбро их решал, читал мануалы, находил толковые видеоуроки по нужному материалу. Терпение и труд делают свое черное дело, я занимаюсь Web-программированием и чем больше изучаю его, тем больше осознаю как много еще не знаю. Думаю, в программировании самое важное то, чтобы тебе самому было интересно им заниматься и ты с удовольствием тратишь на него свободное время и силы, все остальное придет со временем. Еще могу посоветовать найти компанию единомышленников или наставника, с кем можно посоветоваться и попросить помощи, мне в этом повезло, у меня лучший друг хороший программист, даже и не знаю, что бы без него делал)

Ответ написан более трёх лет назад
Комментировать
Нравится 9 Комментировать
Ответы на вопрос 14
Dum_spiro_spero @Dum_spiro_spero

На мой взгляд математика и программирование связаны мало.
Еще в школе (ну да, физматшколе) у моего друга с математикой было не хуже чем у меня, а с программированием — никак. Школьная и институтская математика — увы — учат решать стандартные задачи стандартными методами.
Создание же даже просто алгоритма — это процесс творческий.
Ну на самом деле — в программировании же понятийных сущностей мало — переменные, ввод-вывод, циклы, функции, С++ как приятный бонус вкупе с RAD.
Если взять типичную программу — решение квадратного уравнение — то даже тут встретятся моменты творчества.
Как назвать переменные? Коэффициенты вводит пользователь или они жестко заданы? После окончания программы — всё, стоп или решаем еще одно? А если подсунули линейное уравнение, а не квадратное — как быть? А если уравнение задано в виде строки вида «2x^2+3x-10=0» — может такое решим?
Ну и так далее.
А какие-нибудь крестики-нолики запрограммировать — надо еще больше таких вопросов решить.
А математика как таковая вообще мало нужна — если нужно запрограммировать как спутник летит — то почитаете книжки по численным методам благо их нынче вагон — с точки зрения программирования — там все гиперпросто.
Как правило это программы вида считать данные, долго считать по сложным формулам, вывести результаты.
Да, есть некоторое количество знаний которое надо знать — типа что такое указатель и как он хранится, что не нежелательно сравнить переменную типа float с нулем, как хранятся массивы, и т.п.. ну это все в книжках по программированию есть.
Моя идея такая — старайтесь одну и ту же задачу по программированию решить РАЗНЫМИ способами — ну или обдумать хотя бы разные подходы.
О себе — с первого курса института работал в программисткой фирме. Пишу на С/С++ в его разных ипостасях, новомодных штучек типа Питона не знаю.

Ответ написан более трёх лет назад
Нравится 3 6 комментариев

Не совсем. Почитайте что-нить из истории математики и как люди изобретали цифры, операторы, интегралы, логарифмы, доказывали теоремы через 2 тыщи лет и проч. Математика как раз пример наивысших абстрагирований. Вот только я не видел, чтобы где-то историю математики преподавали. Дают сразу кучу готовых инструментов и пользуйся.

Mrrl

«если нужно запрограммировать как спутник летит — то почитаете книжки по численным методам благо их нынче вагон — с точки зрения программирования — там все гиперпросто.»
Вы серьёзно? Спутник летит в несферическом гравитационном поле (Земля — не идеальный шар). На него действует Луна, которая тоже не очень круглая. Скорости достаточно высоки, чтобы начали действовать релятивистские эффекты. В программе всё это придётся задавать и учитывать. Как вы зададите гравитационное поле? Сферическими функциями? Сколько гармоник надо взять, и как они меняются во времени? Или приближением на сетке? Как эту сетку задать (чтобы она уместилась в доступную память), как учитывать в расчётах? Без этих эффектов вы не сможете не то что направить спутник в окно Белого Дома, но даже посадить его на Пентагон. А если вы допустите ошибку в программировании формул — как без понимания математической модели вы будете её искать?

Dum_spiro_spero @Dum_spiro_spero

Да — история математики — как и физики — это очень интересно. Что не преподают — жалко. Хотя в общем и так найти можно инфу — там очень много чего интересного.

Dum_spiro_spero @Dum_spiro_spero

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

Mrrl

Dum_spiro_spero: Мне тоже очень интересно, как работают в крупных фирмах, как распределяются обязанности между специалистами в предметной области, алгоритмистами и программистами. И кто такие «аналитики».
Мне тоже всё приходится делать самому, и как делегировать часть работы программисту, я совсем не представляю.
«Готовые формулы», которые получит программист, должны быть в терминах остальной части проекта и вписываться в его структуру. А термины и структура по мере развития проекта имеют тенденцию меняться. В какой системе координат сегодня летает спутник? В геоцентрической? В системе барицентра «Земля-Луна»? Барицентра «Солнце-Юпитер»? Или вообще привяжемся к реликтовому излучению? Выбор, сделанный когда-то, может оказаться неудачным, и придётся многое переделывать. Включая структуру данных и порядок расчёта. И что делать бедному программисту — ждать, пока математики опять придумают своё неизвестно что, а потом начинать всё сначала? Или как-то участвовать в принятии решений? А для этого надо знать и математику, и физику, и всю задачу хотя бы на 2-3 слоя вокруг себя.

Dum_spiro_spero @Dum_spiro_spero

Mrrl: Разумно. О больших фирмах. От наших ребят работающих в АМД слышал, что там как раз жесткая вертикаль задач. Инженер ставит задачу физику, физик — математику, математик — программисту. А вот насколько они коллективно все обсуждают — не знаю. Ну и АМД это в общем не программисткая контора все же.

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

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

  • Вопрос задан более трёх лет назад
  • 24891 просмотр

Комментировать
Решения вопроса 3

16 лет? Конечно же игры!
ru.wikipedia.org/wiki/Colobot — старая игра, в которой каждая миссия связана с программированием роботов. Развивает логику и умение строить алгоритмы.
minecraft-ru.gamepedia.com/ComputerCraft — развивающийся мод для minecraft. Чистое творчество — позволяет создавать сложнейшие конструкции с компьютерами, которые управляются программами на lua. Помогает развить творческое мышление и даёт практические навыки программирования.

Ответ написан более трёх лет назад
Нравится 7 1 комментарий

@TaroKun Если майнкрафт упомянули — то есть мод RedPower2, там можно программировать на православном форте. А не какой то там луне 🙂

Жесткая логика. Ха-ха-ха. Я — программист. Мои друзья — нет. Это не текст, а жесткая логика! Думаю, понятно, к чему веду.
Короче, учитесь, молодой человек, если хочется. А что бы легче училось, прочтите «гении и аутсайдеры» (книга о том как стать профи в любом, выбраном вами, деле) и забудете весь этот бред, про «гуманитарный склад ума».

Ответ написан более трёх лет назад
Комментировать
Нравится 7 Комментировать

OLS

Я всегда считал и считаю, что программисту нужна не собственно логика, а умение формализовать любой процесс — будь то повседневный или на 100% виртуальный. Именно отсутствие у пользователей навыков формализации своих же собственных действий является основной проблемой при согласовании технических заданий с бизнес-подразделениями. Особенно, если разрабатывается что-то новое с нуля, а не модифицируется старое (там хоть как-то худо-бедно можно заставить пользователя оперировать понятиями программиста).

Не спорю — есть люди, которым эта черта (умение формализировать процессы/действия) чужда просто по свойствам характера или, не знаю, темперамента. Встречался с ними не единожды. Плохого наверное в этом ничего нет. Но конструктивно работать с ними очень тяжело.

Для развития этого навыка я бы предложил просто пытаться раскладывать любой встречающийся на Вашем пути процесс на составляющие: субъекты (кто), объекты (над чем), действия (что делает) и причинно-следственные и условные связи между этими действиями (та самая логика, о которой Вы спрашиваете). Постепенно стараться усложнять предметную область и если получится всё больше ее абстрагировать — то есть раскладывать не реальные события, а некие процессы в разрабатываемых программах (как с задействованием GUI так и полностью невизуальные).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *