//Заранее извините, если в этот раздел только для задач. Но что-то я загнался конкретно.
Друзья, у меня такая проблема. До 15-16го уровня все было хорошо, я читал лекцию, смотрел уроки на ютубе и прочие материалы, на задачи уходило 1-9 попыток. С наступлением 16го уровня и далее, я почти ничего не могу запомнить и понять, а уж тем более решить. Я читаю лекцию, вроде бы понятно (или мне так кажется), открываю задачу уровня easy, просто смотрю в экран и ничего не могу написать. Перечитаю и смотрю снова. В голове мелькает какая-то логика решения (даже это не всегда), но на экране ничего. Очень часто стал смотреть готовое решение и комментарии. Я в шоке как людям вообще приходит такая логика решения, которая нигде не описана. Или что в параметры метода оказывается можно передать что-то и оно сработает так то (просто пример). Или когда вспоминают какой-то метод из 5-6ти уровней назад или правильно гуглят инструмент, который решит задачу. Короче я не знаю, что в случилось, но после прочтения очередной лекции я выхожу с мыслью "ага, ну допустим это делается так", открываю задачу и ничего. Я уже делаю себе всякие вспомогательные таблицы и скриншоты, исписал тетрадь 96 листок с конспектами, перечитываю лекции с доп. материалами, а толку 0. Просто буксую на месте без новых знаний. Пожалуйста, помогите советом, а то я реально чувствую, как трачу время зря, а в голове никаких полезных отложений.
Андрей Столяров
34 уровень
Помогите советом, коллеги :)
Решен
Комментарии (13)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ГоффMaster
28 сентября 2022, 00:28
Я присоединюсь к Стасу, просто добавлю своё мнение, которое сложилось после довольно обширного участия в разделе "Помощь".
На мой взгляд программирование и реализация средствами конкретного языка - это две совершенно разные вещи. Программирование - это поиск оптимального решения поставленной задачи более-менее абстрактными средствами. А кодинг - это реализация решения определёнными средствами, в данном случае средствами конкретного языка джава.
Для программирования важно развить определённый способ мышления, Стас об этом говорил. Это не приходит сразу, и не приходит при изучении конкретного языка программирования. Это приходит просто с абстрактным опытом - умение разбивать задачу на составляющие, выстраивать максимально простую логику решения. Пример такого подхода (я нескромен) вот здесь https://javarush.com/help/67742, посмотри на самый популярный комментарий.
Я считаю, что сначала надо учится именно программировать, блок-схемы, псевдокод, это всё помогает как раз заточить абстрактное мышление под эффективное решение задач.
А кодинг - здесь уже, конечно, необходимо более-менее владеть средствами конкретного языка. Джава - один из самых запутанных и одновременно развитых языков с огромным количеством встроенных классов и методов. Запомнить все - просто невозможно, да и не нужно. Встречался твит одного из авторов джавы, не помню кого именно, смысл примерно такой . "Ребят, кто нибудь пользуется классом ЛинкедЛист? Я его написал, но сам ни разу не использовал". Это говорит о том, что совсем не всё нужно использовать. Но - как Стас говорил - достаточно просто в подкорке отложить, что чё-та там такое было, и погуглить.
Документация джавы - отличный источник. Не один раз просто пролистывая список методов того или иного класса натыкался на прям бриллианты, полезные для решения задачи. Я сейчас уже не вспомню, какие, но я вспомню, что вот они там есть, и если аналогичная задача будет, я их найду.
0
ГоффMaster
28 сентября 2022, 00:32
По твоему конкретному случаю - не знаю, все люди разные. Может имеет смысл тебе сделать паузу, неделю, две, месяц, не гнать. Мозг твой за это время устаканится, он совсем не перестанет в эту сторону работать, но у него будет время разложить по полочкам всё новое.
0
Андрей Столяров
28 сентября 2022, 13:49
Большое спасибо за такой развернутый ответ. Про разбор задачи на пункты, это знакомо, так и делаю, но со сложными задачами уже не выходит ее разобрать. Особенно, когда условие задачи в виде одной строки "Сделайте чтобы в итоге было так". Видиме правда придет с опытом и изменением типа мышления. Еще раз спасибо.
0
fog
28 сентября 2022, 15:53
Имхо, язык, а точнее спектр задач, решаемый с помощью языка, а так же удобство тех или иных средств, тоже влияет на мышление. При переходе с Ассемблера на Жаву, мне пришлось серьёзно перестраивать мышление, так как при написании программ на Ассемблере во главу угла ставится задача низкоуровневой оптимизации (иначе зачем он нужен), а всё остальное - в топку. На Жаве же, в первую очередь решаются задачи архитектурного плана, даже оптимизации по скорости выполнения чаще всего предполагают только высокоуровневую оптимизацию, а низкоуровневая часто и вовсе невозможна.
Кроме того, сильно влияет и то, что на Ассемблере проще и удобней всего использовать простой императивный подход так как встроенных средств ООП нет, а на Жаве сплошное ООП, а императивные программы превращаются в плохо читаемые простыни кода.
Иногда вымораживает от того что Жава кажется жутко громоздкой и медленной, а иногда получается словить эйфорию, когда понимаешь что, то, что на Жаве выглядит как пара строк, на Асме вылилось бы в километры кода...
Так что используемый язык тоже имеет значение, хотя и не определяющее, но всё же имеет...
+1
ГоффMaster
28 сентября 2022, 18:19
Безусловно язык реализации важен - для реализации. Для конкретной задачи важно выбрать и правильный инструмент - микроконтроллеры мы не будем программировать на джаве, а бизнес-приложения - на ассемблере. Полностью с тобой согласен.
Я имел в виду некую абстрактную составляющую, общую для программирования как такого, будь то решение задачи с помощью джавы или планирование обычного переезда из одной квартиры в другую с помощью листочка бумаги и ручки (и это ведь тоже программирование). Вот именно этой абстрактной составляющей тут на этом курсе не хватает.
+1
Стас Пасинков Software Developer в Zipy Master
27 сентября 2022, 08:03
мне кажется, вам не знания нужны, а практика.
проблема ведь не в том, что вы чего-то не знаете. проблема с логикой.
значит мозг у вас пока не перестроился.
тут сколько книжек не читай, но пока сам руками не будешь работать - ничего получаться и не будет.
почитайте в интернете какую-нибудь книгу по алгоритмам (и структурам данных), попробуйте парочку реализовать. тут отмазка типа "ой, у меня не получится" не пройдет, ведь это реально те алгоритмы, которые были реализованы уже тысячами программистов.
и да, не надо стараться их "запомнить". да и вообще что-либо запоминать считаю не нужным. ну кроме абстрактной теории разве что (ну там ООП всякое, какие-то принципы, но тут тоже их проще понять, и тогда не придется ничего запоминать, ведь все будет просто).
то, что где-то там метод приткнули, который один раз засветился в теории где-то 5-10 уровней назад - я вам гарантирую, его никто специально не запоминал.
просто человек загуглил "как сделать то-то в джаве", увидел вариант с этим методом, вспомнил, что видел его уже тоже раньше - вот им и воспользуемся) как-то так, я думаю.
я для себя открывал документацию по какому-нибудь классу, который впервые встречал (ну например String) и читал там что за методы у него есть и что они делают. прочитал, ничего не запомнил, конечно же)
но потом, когда что-то сам пишешь - вспоминаешь, что, блин, а там кажется где-то я уже видел готовый метод для такого, не помню где. но тут тоже один запрос в гугл - и ты уже "вспомнил" что то за метод)
ну типа "развернуть строку". точно помню, что где-то я читал про такой метод, но в классе String (где я его ожидал увидеть) - там таких нет. сходил в гугл и вспомнил в каком он классе, и решил все что надо мне было.
кароч, важнее, не запоминать это все дело, а просто ознакомиться, и хотя бы иметь представление о том, что уже есть у тебя в арсенале.
ну и не бояться) а брать и делать, и все.
+3
Стас Пасинков Software Developer в Zipy Master
27 сентября 2022, 08:09
и не бояться экспериментировать. попробовать, типа, а что будет если вот так?
без этого ничего не получится, так и будете сидеть на пустой экран смотреть.
если задача сложна и непонятно даже условие - разбивайте ее на более мелкие задачи, а их - на еще более мелкие шажочки.
и делайте буквально по фразам.
вот прочитали фразу "создать класс" - создали. вот уже не пустой экран
прочитали "сделать метод, который..." - сделали, ну там название пока только
дальше читаете и дальше делаете.
ну и можете сюда захаживать, в раздел Помощь. пытаться помочь людям по тем задачам, которые вы уже сделали. не просто скинуть свое решение, а разобраться в решении автора и помочь найти в нем проблему. вы столько разных вариантов решений задач тут увидете, о которых даже и не догадывались раньше). 90% из них будут не оптимальными, неправильными, хуже вашего, итд, но не поленитесь разобраться в нем, как оно работает, что хотел сделать автор.
это такой, опыт программирования без программирования)
+3
Стас Пасинков Software Developer в Zipy Master
27 сентября 2022, 08:20
чем выше уровень - тем больше информации вам придется получать самостоятельно.
бывало так, что прочитал лекцию (про сериализацию, например) - все просто, все понятно.
садишься делать задачу - госпаде, что это, куда, а это для чего, а тут еще целый вагон тонкостей, а что это еще за исключение такое?
и сидишь, все читаешь и читаешь, и читаешь)
в итоге, лекцию прочитал за минуту, но первая же задача заставляет тебя перелопатить информации на 2 часа теории))
конечно, если этого не делать - то не понятно и как задачу решать.
особенно, если этого не делать на каждой задаче, которую "не асилил" и "подсмотрел" в правильное решение чтобы сдать ее просто - тогда ты просто недополучил всего того багажа знаний, которые ты должен был получить, решив эту задачу.
сам себя обманул, кароч, сам себя на деньги кинул (ты ж деньги платишь за обучение)
и с каждой такой "пропущенной" задачей будет становиться все сложнее и сложнее. ведь расчет идет на то, что вы этот опыт из этой задачи уже получили, уже это знаете. поэтому и следующие задачи уже строятся исходя из предположения, что вы изучили все, что должны были на предыдущих задачах.
вот и получается, что кажется, что другие люди какие-то мега-мозги, и вообще. и наверное какую-то другою теорию читают, что все знают.
нет, просто бОльшая часть теории скрыта в самих задачах)
и это хорошо!)
ведь просто прочитав теорию - ты просто не сможешь себе придумать какую-то хорошую задачу. ведь тебе для этого надо знать то, что ты еще не знаешь. ведь задача должна тоже как-то развивать, двигать вперед. а решать простые задачи - не интересно.
ну типа, тебе рассказали как сделать 2 + 2. после этого дают задачу сделать 1 + 1 и 3 + 3
или, например, дадут задачу сделать 2.3 + (-8). тут ты уже узнал и про отрицательные числа, и про существование дробных. задача сложнее и интересней.
но если бы ты знал только про 2+2 - смог бы ты сам себе придумать такую задачу? нет.
так что не бойтесь трудностей, они вас только развивают)
+3
Андрей Столяров
27 сентября 2022, 09:22
Спасибо за развернутый ответ. Тогда попытаюсь изменить подход.
0
VADIM
27 сентября 2022, 04:02
Мне иногда помогает ручка и бумага. рисуешь то, что от тебя хотят, например:
Ага, мне нужно считать из консоли (рисуем прямоугольник) пока не введено слово "exit" в массив(рисуем стрелку ко второму прямоугольнику, над стрелкой слово exit).
Далее сортируем массив. Ну и т.п.
И потом делаешь все действия по порядку, если чего-то не знаешь (например как отсортировать массив - гуглишь), если вроде всё сделал правильно, но получается херня - дебажишь. если отдебажил и все равно херня, а по твоей логике всё должно работать - пишешь вопрос к задаче.
Удачи)
+1
Андрей Столяров
27 сентября 2022, 07:10
Спасибо
0
Vitaliy Bodom
26 сентября 2022, 21:41
Как на меня лучшим источником знаний, является книга. А javarush как вспомогательный ресурс + возможность порешать задачки. Вот тут можно поискать для себя Топ-10 книг по Java для начинающих. Также мне нравится по стилю изложения и "доходчивости" статьи Professor Hans Noodles
+3
Андрей Столяров
26 сентября 2022, 23:28
Спасибо
0