вопрос программистам и их совет
-
добрый день, изучаю пайтон, но я в школе не учился и у меня проблемы
во время обучения идут задачки которые выполняются больше не за счет знания функций и методов пайтон и т.д, а за счет знания и понимания математики (не знаю, может это я курс не хороший выбрал), но у меня вопрос:
-
насколько высоким должен быть уровень знания и понимания математики когда решаются практические задачи и выполняются проекты? (если не учитывать направление machine learning и все смежные направления)
-
есть ли одна или две хорошие базовые книги которые вы можете порекомендовать и которых будет достаточно чтобы закрыть вопрос знания математики и всех этих вещей и чтобы этих знаний было достаточно для выполнения большинства задач? не знаю, быть может в виде базового небольшого пособие в виде справочника к которому обратиться можно
-
-
upd:
и еще один вопрос: это нормально, что я многие задачи не могу решить без гугла? к примеру я знаю в принципе метод, функцию с помощью которой можно решить ту или иную задачу, простую задачу выполняю спокойно без обращения к "подсказкам", но задачи где условия начинают усложняться и требуется использование связь функций и методов, то я не могу так как начинаю теряться, затем обращаюсь к гуглу или прошлым примерам выполнения задач и потихоньку схватываю и выполняю и смотря на решение у меня мысли мол "как же это легко и просто на самом деле"
конечно с таким подходом программистом наверно не быть (мне и не надо), но кодить же выйдет? выполнять там не тяжелые проекты постоянно смотря примеры выполнения на стороне и т.д
-
@redya Возможно плохо базу питона выучили, вообще я сам когда занимаюсь кодом ( но я скрипт кидди), обращаюсь к гуглу почти постоянно и просто ворую части кода у других, из этого собираю свой код.
Математика даже не знаю какая нужна, только если самая начальная по типу сложение(+);вычитание(-);умножение(*);деление. Ну или для machine learning возможно нужна математика какая-то посерьезней, на ранней стадии обучения особо точно не нужна. А так больше английский нужен, чем математика.
Вообще самое идеально на мой взгляд это смотреть в документации для подсказок, так и вроде не совсем у других воруете, при этом быстрое понимание документации хороший навык
Если вы на самом старте и знаете английский( ну или перевод в интернете поискать), есть курс от Harvard CS50, тут прям база питона, самый старт. На этом сайте можете еще что-то поискать -
@redya Просто забей, создавай свои проекты и выполняй свои задачи. Как угодно, главное чтобы работало. Через год поймешь где нужно улучшить, как сделать алгоритм "красивее" или просто поймешь что если сделать так, то код работает 10 часов, а если эдак, то код работает 20 минут, потом этот код перенесешь на С и он будет работать 14 секунд.
По поводу гуглежа. Я это понимаю так - раньше были книжки, люди читали и просто сам процесс открытия\закрытия книжки с поиском информации занимал время большее, чем гуглеж, как итог концентрация и внимание к инфе были выше и запоминалась она, условно с 5 раза, а с гуглежом запоминается с 50 раза. Вот и вся разница, языки одни и теже :)
Самый главный лично мой совет - чтобы всегда чувствовался результат, чтобы он был виден, ибо на кой черт учить 1-2 месяца какие-то базовые вещи, если на третий ты уже дропнешь из-за скуки\отсутствия прогресса\пользы.
Школьную математику возьми до 11 класса - покроешь абсолютное большинство задач.
-
@weakplayer попробую на примере пояснить в чем вопрос:
к примеру есть задачка и там присутствует последовательность фибоначчи, я и знать не знал, что это есть (да, я не помню даже школьной программы), но гуглишь, смысл и суть "последовательности фибоначчи" проста и ее осознать легко, решаешь и все хорошо, но ведь есть вещи из математики и смежных которые с точки зрения логики, понимания будут значительно тяжелее и мне вот интересно насколько часто они могут и будут встречаться в написании элементарных программах
-
все нормально делаешь, для абсоолютного большинства задач хватит уровня математика 2+2*2=?
с гуглом смотреть описание всех методов и функций это нормально, никто не помнит все параметры всех функций, потому что этих параметров миллиард, и чаще они все не нужны, поэтому их никто и не помнит
ставь свои задачи и решай их как получается, правильно подсказали, любую программу и код можно до бесконечности доводить до совершенства, со временем будешь все больше понимать как следующий раз написать лучше, не нужны никакие книжки, голову только забивать, все норм, твори!!!!! )
-
@redya Тут зависит только от того какие у вас задачи и какие проекты вы планируете реализовывать, я писал парсеры и авторег-боты, спам-боты. Мне математика не понадобилась. Решайте проблемы по мере поступления, не знали что такое "последовательность фибоначчи", вам понадобилось - вы узнали, все просто
-
Пользователь @redya написал в вопрос программистам и их совет:
насколько высоким должен быть уровень знания и понимания математики когда решаются практические задачи
Околонулевым, задачей ведь может быть "проверить курс биткоина и прислать уведомление смской". Эта задача решается с абсолютного нуля и наличии сервиса смс максимум за неделю. Плюс дьявол в деталях, одно дело - MVP (минимально работающий продукт), другое дело - вылизанный софт, первое делать легко и быстро, второе - сложно и долго, но выполняют они задачи примерно одинаково, просто качественный софт работает всегда и без ошибок, а MVP постоянно сталкивается с непонятными непредусмотренными ситуациями и падает/выдает неверные результаты.
закрыть вопрос знания математики и всех этих вещей и чтобы этих знаний было достаточно для выполнения большинства задач
Вопрос бессмысленный, вы же даже не описали, какие задачи хотите решать. Да и весь топик бессмысленный. Сначала задача, потом поиск путей решения (как можно в принципе и какая между ними разница), потом решение оптимальным в вашем случае путём. А вы хотите с абстрактного набора путей решения, которые все на одно лицо, ведь задача ещё не поставлена, как можно выбрать лучшее решение для непоставленной задачи? Вам накидают книжек, они есть, но их будет безумно скучно и трудно читать, у вас нет мотивации решить задачу, вы сейчас "хотите научиться в программирование", а в него научиться нельзя, слишком много всего, можно освоить на каком-то уровне определенную область.
Более того, вы собираетесь работать один, как я понимаю, а подавляющее большинство современных парадигм направленны именно на организацию командной разработки, как заставить десять женщин родить ребёнка за месяц. Да, писать чистый структурированный код хорошо и здорово, но когда вы один, то наговнокодить MVP, просто чтобы решить задачу, часто хороший путь. Да, вы ничего не поймёте в этом коде через три года, но если вы не используете этот код через три года - значит он вам больше не нужен и вы сможете написать более лучший код, опираясь на свои знания, полученные при решении прошлых задач. А если используете - то наверняка видите проблемы и решаете их, хотя бы костылями, называется legacy.
я многие задачи не могу решить без гугла
Более чем, просто пока не запомнили примеры кода и не выучили документацию API которые используете. И не факт, что выучите когда-нибудь, просто времени мало пока прошло, так правильно делать, чужие куски кода складывать в программу, сталкиваться с проблемами, разбираться глубже, выкидывать чужие куски кода, заменяя их другими, а иногда даже реализуя свои хотелки.
-
Я с базовыми навыками питона вот сделал бота (ну как, пока что он работает только внутри pycharm) для оценки драфтов в доте за 3 недели не спеша. Да, местами было очень тяжело и непонятно, так как изначально в голове была только общая идея, а реализация отдельных моментов придумывалась на ходу, но в итоге работает.
Сейчас уже хочу улучшить, переделать "по-нормальному", хотя пока что даже не знаю, что это толком значит. Смотрю курс "100 days of code", пока что унылое говно, мб дальше будет поинтересней. Когда-то давно смотрел курс от web for myself и курс от Сергея Балакирева, оба тоже унылое говно, от Балакирева вообще духота.
В общем для меня курсы это что-то максимально не интересное и скучное, 0 желания думать и тратить время на задачи, которые там показывают.
https://coursehunter.net/ - тут много курсов на любой вкус за дешево
-
Порекомендую hyperskill.org от Jetbrains. Я там проходил в свое время Kotlin (их детище) и Python. 99% времени - практика, т. е. выполнение различных задач и проектов. После прохождения вопрос по языку будет закрыт и, используя документацию, можно будет писать все что угодно. Ну почти.
-
На счёт гугления))
-
Пользователь @redya написал в вопрос программистам и их совет:
есть ли одна или две хорошие базовые книги которые вы можете порекомендовать
Эта хорошая, и там как раз на пайтоне вроде примеры - https://github.com/mduisenov/GrokkingAlgorithms/blob/master/Бхаргава А. - Грокаем Алгоритмы. Иллюстрированное пособие для программистов и любопытствущих - 2017.PDF
-
Балакирев есть на stepik.org. Но его я не проходил курс. Для изучения базы там много курсов. А дальше, уже сам ищешь, что тебе подходит больше. Я терпеть не могу книги. Там столько ВОДЫ. Что читать это невозможно! Кто то скажет наоборот что это как раз самое полезное, там все выдержано в привычном стиле.
-
Пользователь @cool написал в вопрос программистам и их совет:
Балакирев есть на stepik.org. Но его я не проходил курс. Для изучения базы там много курсов. А дальше, уже сам ищешь, что тебе подходит больше. Я терпеть не могу книги. Там столько ВОДЫ. Что читать это невозможно! Кто то скажет наоборот что это как раз самое полезное, там все выдержано в привычном стиле.
Проходил его курс на степике, не понравилось, очень много чего непонятно. Я бы назвал это курс от человека с математической профдеформацией и явно не для начинающих. Много заданий имеют математическую основу (очень скучно, не интересно, душно, не понятно), а с математикой я не на ты.
Да и в целом степик как платформа не понравилась, очень убогий эдитор кода и нет возможности посмотреть тесты, как на кодварс (1 тест из 150 не прошел? Сам додумайся, какой именно и в чем проблема).
Вот, нашел коммент под каким-то уроком:
"сложность заданий демотивирует к дальнейшему изучению программирования.
Очень долго копил недовольство, а теперь имею сказать: Ваш курс с таким уровнем задач (а также объяснения к ним) составлен не для новичков, а для более-менее продвинутых пользователей. Подтверждение - в комментариях, где то тут то там всплывают "я потратил два дня на эту задачу" - это нормально в заданиях со звездочкой, но никак не в первых же задачах по теме. ИМХО."
Полностью согласен. Если в начале курса задачи легкие, то уже к середине становится тяжело, а после вообще ад.
-
На задачи по типу последовательности фибоначчи, как вы написали, можете забить, если не интересно учить математику - не учите, уверяю в реальных задачах она Вам не пригодится, если вы не делаете к примеру оценки вероятностей или подобное от царицы наук зависящее.
Курсы вставляют задачи с математикой потому что придумать задания которые были бы разнообразными без нее сложно, а тренировать Вас нужно. Дёргают их из олимпиадного программирования какого-нибудь, где все уже придумано.
А про гугл могу сказать следующее, я сам занимаюсь программированием не первый год, и в Гугле провожу если не 50 то как минимум 30 процентов своего времени, если у вас получается находить нужные куски кода и интегрировать в решение задачи, вы точно на верном пути. Со временем, по мере необходимости, будете разбираться и запоминать как там и что делается, и в часто используемых вами инструментах гугл будет требоваться всё меньше, но Вы все равно от него никуда не денетесь, потому что всегда найдется то, с чем вы ещё не так хорошо знакомы, или ошибочка какая-нибудь из-за невнимательности вылезет) -
@Astra
Я обучаюсь на stepik. Да, блок написания кода там неудобный, но я им не пользовался. Как то сразу привык к Thonny и использую его. По поводу того что в некоторых курсах (не только Балакирева) нет возможности понять какие тесты не проходит твой код, отчасти согласен а отчасти нет. Кто будет писать вам тесты для ваших программ?
На данный момент изучил первый курс "Поколение Python": курс для начинающих
и прошел где то половину второго "Поколение Python": курс для продвинутых.
Я бы всем рекомендовал изучать Python именно с него. -
Если я не могу решить задачу, я ее пропускаю. Даже первый курс я решил не полностью. Позже, когда навыки подтянул и понимание появилось, решил его до 99%.
По второму курсу все сложнее. Задачи и теории приходится осваивать больше и больше. Не все остается в памяти и хорошо закрепляется. Но, бросать нельзя. Сам себе слово дал что курс закончу) -
Советую Вам не засиживаться долго на синтетических задачках, а начинать решать интересующую Вас реальную задачу, чтобы она имела реальное применение. Так и изучать новое будет проще, и жизнь себе в каком-то вопросе сможете автоматизацией облегчить, и прогресс реальный будете видеть, больше удовольствия от результатов получать, для мотивации полезно.
-
@F еще бы знать, как правильно делать ПО с точки зрения архитектуры и структуры, чтобы все было правильно, красиво и эффективно, а не через жопу.
-
@Astra сразу не получится, лучше сначала делать через жопу, а со временем научитесь делать получше
Хорошо помогает насмотренность, на ютубе всякие видосики с лайв кодингом реальных задач и объяснениями полезно смотреть
На русском под js/ts хороший канал Ulbi TV -
Пользователь @Astra написал в вопрос программистам и их совет:
чтобы все было правильно, красиво и эффективно
Преждевременная оптимизация - корень всех зол. Пока не придётся копипастить функцию в десяти разных местах, не поймёте, почему важно наследование.
Пока не придётся переписывать формат структур в десяти разных местах - не поймёте, почему все внешние данные надо явно преобразовывать в собственные структуры.
Пока не сломается что-то и не будет понятно где - не поймёте, что хотя бы подобие документации всё-таки нужно вести.
Раз не понимаете, зачем оно нужно - значит оно вам не нужно, всё очень просто.
-
@DimOK чтоб понимать, зачем оно нужно, нужно сначала знать что это и как работает)
Я знаю, что у меня сделано тупо, но я не могу знать, что вот например тут и тут можно применить наследование, ведь я не знаю, что такое наследование в принципе.
Т.е. наверное все же какую-то базу необходимо иметь в любом случае. Начну изучать ООП, там глядишь и придет понимание.
-
Вот я о том и говорю, когда замучаетесь копипастить - волей не волей посмотрите, что умные люди делают, никуда не денетесь.
А пока копипастить не лень - посмотрите и скажите, что чушь какая-то, зачем городить все эти классы и методы, когда можно спокойно скопировать код. -
Пользователь @F написал в вопрос программистам и их совет:
Советую Вам не засиживаться долго на синтетических задачках, а начинать решать интересующую Вас реальную задачу, чтобы она имела реальное применение.
Ну вот тоже не разделяю таких вот советов. Честно. Чтоб базу освоить ну максимум полгодика надо, это вообще не торопясь. В перерывах между работой.
-
Согласен что хотя бы минимальные знания по теории нужны, а не просто лепить все подряд, то же наследование например не всегда лучший вариант если надоело копи-пастить)) Но не зная хотя бы что какие-то базовые вещи существуют, сложно понять что вообще умные люди делают