Как «перепрошить» мозг будущему программисту?

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

Как это можно исправить? Многие твердят: решай задачи. Ну, ок, допустим, беру какую-нибудь задачу. Прочёл текст. А дальше-то что? Я не знаю как подойти к решению задачи, с чего начать, что вообще делать и чем закончить.

Сейчас у нас активно преподаются С и С++, и мне сильно тяжело. Что-то простенькое сделать могу, но там, где нужно решить какую-то задачку или где присутствует какой-то алгоритм (например, пузырьковая сортировка), я абсолютно беспомощен: смотрю на экран как идиот, но мозг ничего не может родить... В программировании дела не очень. Могу побрыкаться где-то до циклов и массивов, а дальше "наши полномочия уже всё"... Обижаюсь на себя, что я такой тупой, но ничего изменить не получается. Я могу сидеть над задачей хоть неделю, но с мёртвой точки сдвинуться не получается...

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

P.S.: пока чтобы хоть как-то развиваться, я практикую вёрстку и C# (в дальнейшем хочу пойти в backend).
  • Вопрос задан
  • 3183 просмотра
Пригласить эксперта
Ответы на вопрос 14
delphinpro
@delphinpro
frontend developer
Ну, ок, допустим, беру какую-нибудь задачу. Прочёл текст. А дальше-то что? Я не знаю как подойти к решению задачи, с чего начать, что вообще делать и чем закончить.

Анализ, декомпозиция.
Разбивайте общие задачи на более мелкие, элементарные.

Задача: выпить кофе.

Разбиваем на составляющие:
  • Достать турку
  • Налить воды
  • Добавить кофе
  • Сварить
  • Попить

Подзадачу "Сварить" делим на еще более мелкие:
  • Зажечь газовую плиту
  • Поставить турку на конфорку
  • Довести до кипения

Задачу "Зажечь газовую плиту" снова делим на составляющие:
  • Взять спички
  • Чиркнуть о коробок
  • Открыть подачу газа в конфорку
  • Поднести спичку к конфорке


И т.д. До самых элементарных уровней.
Ответ написан
tema_sun
@tema_sun
Тебе мозг надо не под программирование прошивать, а под жизнь в реальном мире.
Во-первых, ты не "потеряешь" 4 года на обучение. Чему-то ты там научился, ну и диплом в конце концов лишним не будет.
Во-вторых, программирование подходит вот вообще далеко не каждому. И тут надо смотреть правде в глаза. Нет ничего плохого в том, что ты не можешь быть программером. Я вот не могу быть танцором, ну и фиг с ним.

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

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

Нужно заниматься только тем, что тебе нравится (разумеется, с поправкой на адекватность).
Ответ написан
0xD34F
@0xD34F
Многие твердят: решай задачи. Ну, ок, допустим, беру какую-нибудь задачу. Прочёл текст. А дальше-то что? Я не знаю как подойти к решению задачи, с чего начать, что вообще делать и чем закончить.

Взять задачу попроще.

Если проще уже некуда - смиритесь с тем, что программистом вам не бывать. Да, это не каждому дано.
Ответ написан
twobomb
@twobomb
Математика то дело такое, конечно хорошо бы её знать, но достаточно знать какие-то базовые вещи, а если столкнетесь со сложной задачей, то гугл в помощь один хрен все формулы не выучишь, многие не согласятся ну у меня также.
А вот алгоритмы это реально нужная тема, нужно начинать с простых задач и решать решать решать тратить кучу времени чтобы вырабатывать у себя мышление, чтобы тебе дали задачу и у тебя в голове уже строился алгоритм её решения, а лучше несколько.
Найди задачи для олимпиадников по программированию школьного уровня и начни решать одну за другой, если не можешь решить подумай еще, и уже только после этого найди готовое решение с разбором и изучи его и отложи в мозгу.
На самом деле программирование в большей своей степени складывается из паттернов (мини задач) которые ты когда-то уже где-то делал, просто ты их комбинируешь по разному. По сути тебе один раз нужно научится работать со строками узнать какие методы бывают, с массивами там сортировки,перестановки, с циклами и в итоге ты сможешь программировать на любом высокоуравневом яп. Конкретный язык это как правило просто синтаксис который может по разному выглядеть но по сути он делает одни и те же вещи во всех языках.
А ну и еще если у тебя к этому не лежит, тебе скучно и не горишь желанием этим заниматься, а делаешь это через силу, то забей программирование это не твоё.
Ответ написан
@unseriously
Для данного конкретного примера: "найти максимальный элемент одномерного массива" - я бы делал так:
на бумаге бы написал алгоритм простыми словами, типа: считаем, что наибольшим элементом массива является его первый элемент - запишем ег ов переменную MAX - далее организуем цикл по массиву - сравниваем каждый элемент массива с переменной MAX - если элемент больше MAX - записывает его в MAX. Ну это конечно для данного примера.
А вообще по алгоритмам можно читкануть книгу "Грокаем алгоритмы" Адитья Бхаргава
Ну а про "перепрошить мозг" - тут, как мне кажется, только один выход - учиться, учиться и еще раз, ну вы поняли. В наше время в интернете просто огромное множетво учебных материалов. На любые темы, есть для детей, там прям вообще просто объясняется. Попробуйте поискать интересующую тему и добавить "для детей", там будет разжевано прям вапче.
Еще было бы здорово найти товарища/друга, который бы вам помог.
Успехов!
Ответ написан
Комментировать
Adamos
@Adamos
K_A_S_H_E_Y, сильно подозреваю, что задачи для 7 класса ты не можешь решать именно потому, что и в 7 классе тебе не была интересна математика, и ты где угадал, где списал, и проехали. Такое не "перепрошьешь": для тех усилий, которые тебе потребуются, чтобы добиться и начать грокать математику, тебе просто негде взять мотивацию.
Ищи около-IT-шные ниши, раз все равно влез. Программировать через не хочу - совершенно бессмысленно.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега IT-образование
software engineer
Если бы можно было перепрошить мозг, никто бы не заставлял тратить годы и десятилетие на обучение.

Мозг не перепрошивается, а тренируется.
Тренируется МНОГОКРАТНЫМ решением различных задач. Поэтому нет никаких вариантов, кроме как решать разные задачи, в процессе мозг адаптируется к такому действию и решение будет для тебя более очевидным.

Поэтому да, бери и решай задачи. Много. Бери задачи проще, которые можешь решить. Переходи на следующий уровень не тогда, когда смог решить одну, а когда легко решил 10-20.
Ответ написан
php666
@php666
PHP-макака
Также я не знаю математику. Особенно дискретную
математика и программирование - разные вещи, абсолютно.

У меня большая проблема: я не умею решать задачи
неумение решать задачи ВСЕГДА является следствием двух факторов:
- незнанием инструмента
- незнанием теории

прежде, чем решать задачи на ЯП необходимо изучить возможности языка, устно, прочитав "теорию" (учебник) и понять, какие инструменты язык предоставляет.
Ответ написан
Комментировать
@DarkViatrix
Интересуюсь всем возможным и невозможным.
Если тебе это интересно, то ты можешь это прокачать. Без интереса - далеко не продвинешься.

1. Уточни у себя, знаешь ли ты хорошо базовую математику, которую дают в 5-11 классах? Возможно, нужно начинать с самых основ и постепенно двигаться вверх, усложняя задачи. Как раз из 5 класса хорошо решаются задачи и развивается логика. Возможно, в начале тебе данные знания нужно подтянуть.

2. Читай книги про логику, развивай логику, пытайся увидеть алгоритм в каждом своем дне.
Сегодня искала книгу и многие советовали: Логика. Виноградов С. Н. и Кузьмин А. Ф. _ 1954, Непейвода В.В. - прикладная логика.

3. Попробуй все языки программирования и выбери тот, который откликнется и понравится. У тебя могут не идти другие языки, но когда ты попробуешь все - ты сможешь определиться и найти свой язык. Если ни один не подойдет, тут уже смотреть другую сферу нужно. Можно же работать в IT и не обязательно быть именно программистом. После выбора языка - изучать его, двигаться в том направлении, поставить цель и разбить на несколько частей. Следовать плану.

Если будешь прикладывать усилия, работать над этим - сможешь стать кем угодно.
Главное - труд и чтобы дело нравилось.
Ответ написан
Комментировать
Лучше, качественнее, быстрее, но дороже - нанять опытного специалиста, который сможет вас обучить. В случае самообучения, времени уйдет гораздо больше, но свои плюсы в этом подходе тоже есть.

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

я практикую вёрстку и C#

Лучше оставить что-то одно.
Ответ написан
Комментировать
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
смотрю на экран как идиот, но мозг ничего не может родить...

Учусь на программиста

Зачем?

Стать веб-макакой и через три-пять лет ныть на форумах о низкой зарплате, зверях-работодателях и профессиональном выгорании? Может стоит задуматься о том, что стоит заняться чем-то, что нравится?

Программистами не становятся. Ими рождаются. Так же как писателями, певцами, врачами и даже операторами станков с ЧПУ. (Я, разумеется, имею в виду хороших программистов и т.д. - посредственным программистом и т.д - стать можно вполне). Ну не дал Господь тебе того, что должно быть у программиста - зачем себя насиловать? Займись тем, что нравится.
Ответ написан
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
Сдается мне батенька тут лукавит. Ищет легких путей, которых нет и быть не может.

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

Повторюсь. Никаких других чудесных - путей нет и быть не может.

Хочешь научиться решать задачи - прорешай задачи 1000 часов как можно более интенсивно, хотя бы по 3-4 часа в день, и научишься без вариантов. А нет - так и нет.

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

А в целом я просто думаю что это не твоё и ты зря себя так мучаешь.
Ответ написан
Комментировать
Lunali
@Lunali
скрытна.
Не проблема, я научу и подскажу ....
samlib.ru/m/monstrozar/piton.shtml Питон это самый простой язык, но он всеже сложный....
Потому что не русский....
Это решаемо вот решение для вас https://scratch.mit.edu/projects/editor/?tutorial=home
Даже если вы не знаете матиматику, но способны думать логически это решение .
Решайте через логику ,а не математику ..я так делаю...
Ответ написан
Комментировать
MinTnt
@MinTnt
Скажу так, я к примеру работал тестером(QA) различных проектов, и за это время я понял одно, кому-то даётся, а кому-то хуже. К примеру я мог проанализировать системы, и вывести возможные проблемы и предложения решения.

Так что даже если правильно построить алгоритм решения не выходит, можно просто сначала найти кого-то (забыл как их человек называют), кто мог бы пошагово объяснить/предложить как минимум два-три предложения для реализации задачи. Обычно, просто начинаешь улавливать логику каких-то систем. (Хотя, в конечном итоге может и скучно стать, когда слишком должно был в каком-то проекте, и уже понимаешь как устроено абсолюнто(почти) всё. )
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы