Задать вопрос
JavaLoc
@JavaLoc
Начинающий Девелопер

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

Всем привет. Месяца два назад я начал изучать язык програмирования Java по Шилдту (Руководство для начинающих). Программировать вообще начал с полного нуля. И все идет неплохо, интересно, теорию понимаю, но когда приходится решать практические задания часто не могу найти решение, хотя если посмотреть ответ, то он оказывается вполне простым. Как исправить эту ситуацию? Я не хочу быть просто теоретиком. Может есть какие-то специальные ресурсы что бы "натаскать" свой мозк в этом деле? Спасибо за любую помощь.
  • Вопрос задан
  • 3966 просмотров
Подписаться 17 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 14
Как ни странно, нужно программировать. И мыслить при этом.
Ответ написан
Neuroware
@Neuroware
Программист в свободное от работы время
Соглашусь с Spetros, умение гуглить жизненоважный навык в программировании) 99% любых задач в том или ином виде уже решались до вас, по 70% уже есть хорошо расжованное описание, 50% есть еще и инструкции, поэтому если у вас не удается найти решение это либо плохо искали, либо неправильно поставлена задача.
По части второго в программировании нужно уметь разбивать задачу на части (подзадачи). То есть скажем задача найти подстроку во всех файлах папки, сходу не ясно как можно искать сразу во всех файлах, очевидно нужно искать в каждом по очереди, если файлы мелкие то все нормально, можно считать их целиком и потом спокойно делать в них поиск, но если они весом под 24Гб, в таком случае нужно читать файлы построчно и делать поиск подстроки в каждой отдельной строке и т.д.
Если "в голове" не получается построить полное решение конкретной подзадачи, нужно разбить ее на функциональные части и каждую из них решать как отдельную подзадачу. Вцелом любой, даже неимоверно сложный продукт с миллионом строк кода это лишь совокупность маленьких фрагментов, каждый из которых можно понять.
Ответ написан
@jackroll
Сверхразум
Не слушай идиотов, пишущих что гуглить - самый важный навык программиста. Такие люди плохо себе представляют, что такое поисковик Google и как он работает. Не пойму как такие люди могут называть себя программистами, они хуже кодеров.
Настоящий программист должен стараться решать задачи сам. Программист должен создавать что-то новое, а не искать готовые велосипеды других программистов.

По сабжу - советую какую-нибудь найти книжку по алгоритмам и структурам данных. Если не ошибаюсь, Лафоре писал книжку такого типа, где примеры кода написаны на Java.
Ответ написан
Spetros
@Spetros
IT-шник
Вам его, к сожалению, не развить.
Умение пользоваться поиском одна из важных черт, если его нет, то всё печально.
https://toster.ru/search?q=%D0%BC%D1%8B%D1%88%D0%B...
Ответ написан
e-antonov
@e-antonov
попробуйте интерактивные обучалки с практикой без отрыва от теории.
для джавы вот тут посмотрите javarush.ru
Ответ написан
Комментировать
zhukpavel
@zhukpavel
Готов поспорить, что вы после прочтения задачи сразу же садитесь писать код, что является абсолютно не верным подходом, так как в голове еще нет сформированного решения и его приходится придумывать на ходу. Непродуманная структура программы ведет в множеству ошибок, а в случае отсутствия опыта, как у вас - вообще заводит в тупик.

Я бы советовал вам такой способ, опробованный на себе:
1. Придумать и записать на бумаге алгоритм решения задачи. На человеческом языке, разбив по пунктам. Причем под пунктом понимается некоторая более простая подзадача, которая на данном этапе не важно как решается.
2. Повторять пункт 1 для каждой подзадачи до тех пор, пока решение очередной подзадачи не станет очевидным.
3. Записать каждую подзадачу отдельно на листке в терминах языка программирования. Начиная от самых мелких и постепенно придя к исходной.
4. (первые три пункта выполняются на листке бумаги с карандашом) И вот только теперь, с полным пониманием происходящего, можно начинать писать код.

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

По поводу гугления. В общем - это полезный навык для программиста, но явно не на этапе "начал с полного нуля". Сейчас главное научиться декомпозировать задачи и строить алгоритмы. Единственное зачем сейчас можно(и даже нужно!) залазить в гугл - это официальная документация по Java.
Ответ написан
Комментировать
gadfi
@gadfi
https://gamega.org
найдите лабы первого курса ─ что то простое где много работы со строками и массивами, логическими операторами ... вот их и поделайте.
Ответ написан
Комментировать
gluck59
@gluck59
Виртуальный глюк
Алгоритмизировать все :)
Учиться разбивать любые задачи (необязательно в программировании) на этапы и продумывать выполнение этих этапов.
Ответ написан
Комментировать
zinkinru
@zinkinru
Делаю красивый веб функциональным
Начните с алгоритмов без привязки к языку. Важно же не то на каком языке написано, а то какая логика (читай смысл) в этом заложена.

Любой простейший алгоритм можно свести к трем действиям: «сделать», «условие», «цикл».
«Сделать» – выполнить что-то.
«Условие» – либо так, либо так (, либо еще так).
«Цикл» – сделать, сделать, сделать...

Как неоднократно было сказано, пробуйте представить задачи, так как если бы их выполняла машина: в виде отдельных шагов. А уже гуглить нужно реализации непосредственно этих шагов. И помните, для любого алгоритма (кода) есть решение лучше :)
Ответ написан
Комментировать
@MJee
Разработчик мобильных приложений для Android
Вот хорошая книжка.
www.ozon.ru/context/detail/id/29561974
Несмотря на название, в ней очень много хороших задач. Есть ответы с подробным объяснением. Пробуйте вначале решить самостоятельно, если уж совсем тупик, то читайте объяснение и затем не глядя на примеры кода, реализуйте алгоритм.
Ответ написан
Комментировать
@Xee
Харольд Абельсон, Джеральд Джей Сассман, при участии Джули Сассман „Структура и интерпретация компьютерных программ“ и Стив Макконнелл „Совершенный код“.
Ответ написан
Комментировать
@Zinchuk
Я в универе учил C++, даже лабораторные делал, но как-то не пошло... теперь тоже учусь программировать на Java
Ответ написан
Комментировать
Анализируешь задачу, делишь ее на части, в свою очередь каждую часть еще на часть и так рекурсивно до атомарных операций, после чего атомарные операции описываешь на языке программирования. Это очень хардкорный метод, но на страрте самый полезный.
Ответ написан
Комментировать
@coodan
Забей на чужие решения и не парься. Пиши свое решение. Переделывай его. До тех пор, пока оно не понравится тебе своей красотой. И тогда смотри чужой код. Как ценитель, а не слепой копировщик.

Смотри, что лучше и красивее у них. Перенимай. Понять это ты сможешь, только сравнив со своим красивым решением.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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