Код понимаю, но писать не могу. Как не попасть в такую ситуацию.
Ребята не ищите в программировании, а в частности в классах
золотое правило, которое решит все вопросы, но его нет.
Есть иное, попробую объяснить.
Вам нужны знания и понимать разницу между смыслом и сутью.
//////////
Первый подход не верный.
Мы хватаем вершки, а суть от вас ускользает, потому что мы хотим понять смысл, а не суть.
Нам нужно понимать суть - это то чем в программировании можно размышлять и нужно размышлять, суть всегда конкретна, смысл это общая картина.
Я писал в этом сообщении в группе, вот небольшой кусочек:
"там работает простое правило, если вы отработали код правильно, то вы можете сходу писать эти вещи.
если не можете сходу писать, значит отработали не правильно.
А почему можете писать? Потому что у вас есть чем размышлять, в вашем домашнем задании размышлять пока нечем. а значит ничего не сможем и написать. Все банально и просто.
То же самое как дачник рассуждает о помидорах, в с позиции земли, теплицы, на чём доберётся, чем будет удобрять, чем копать, чем и когда вскапывать, чем поливать. когда и сколько. и т .д.
У вас в домашнем задании есть все эти вещи?
Вот и представьте себе дачника, который решил посадить помидоры. но размышляете только о магазине где продаются лопаты....
А где садить и что садить и зачем не знает. Вот такое ваше домашнее задание.
Вот и ответили себе на вопрос, что таким способом изучая писать точно не будете.
Хорошее в том, что это мы поправим."
Например, везде в интернет про self пишут, что это ссылка.
Но ведь это одно из свойств self, а главное для self - это то что оно и делает функцию методом.
Как проще объяснить?
Если брать со стороны смысла, то большинство делают, в том числе и преподаватели курсов, которые хотят передать смысл, а не суть. (получается вроде сказал, что то умное, фигня что не научил).
То есть берут пример и объясняют суть, а потом сразу начинают рассказывать про наследование и так далее.....
и происходит следующее, человек понимает вроде бы что такое наследование, а вот какого чёрта там затесались, какие-то
def __init__(self): и прочее и в зуб ногой не дуют, и
паперли дальше ооп.......
а только злятся, что мешают, какие то странные символы.
И выходит человек и думает себе.
Да, вроде бы что такое наследование пониманию, но вот почему я писать не могу....
Он продолжает дальше упорно заниматься, проходит время, но писать так и не начинает, его система в голове настрона понимать смысл, но не понимать суть.
Здесь же все просто, представьте себе преподавателя, который учит учеников, как умножить
5х7
второй пример
10х12
Такой ученик будет знать как решить два примера, но когда у него будет задача с другими цифрами, то он не будет знать.
В этом варианте передаётся смысл умножения.
А другой преподаватель помогает выучить таблицу умножения и даже самый слабый ученик посчитает что ему нужно, но будет знать что может довести своё знание до профи.
А в этом варианте преподаватель передаёт суть умножения.
Вернёмся к классам.
В итоге работа с классами зарублена на корню, человек начинает далее разбираться с другими принципами ооп, инкапсуляция и так далее и постоянно не недопонимает и главное код писать не может, так как не понимает чем ему размышлять. Но ведь вы же читали пример с дачником выше, вы ведь сами так размышляете над другими вещами, просто в программировании вам никто не сказал, что здесь тоже есть конкретные вещи.
Учитывайте то, что новичок, а если вы новичок, то учитывайте в двойне, что новичок не имеет представление, как изучать программирование. Но так ли это?
Просто многие считают, что программирование это нечто новое,на самом деле каждый человек от природы программист и даже простой поход в магазин, который вы совершаете, вы применяете много алгоритмов по выбору продуктов, но при этом вы просто так мыслите, не называя например информацию на табличке торты, списком в котором находятся торты.
То есть учится вам нужно не какому то абстрактному программирования, а простыми словами научится называть ваши повседневные мысли техническими терминами и понять как эти мысли записать в коде, что бы передать языку программирования, а язык передаст компьютеру,а компьютер интернету в виде программы, сайта или чего то другого.
Но ведь язык составлен на основе мышления человека. но никак не наоборот.
Если мы идём тем способом, как описывали ранее...
В итоге изучения программирования получаем.
Смысл понятен, а суть чем размышлять не понятна.
Я напишу коротко, что такое суть, но это будет не полное определение, в то же время понять его можно.
Что бы суть была полной, рекомендуется изучать несколько языков программирования. как делаем мы. тогда у вас в голове расставляется все по полочкам, то есть вы кроме всего прочего начинаете отделать принципы программирования от реализации этих принципов в конкретном языке. После этого вы можете писать вообще а любом языке программирования, так как суть функций или методов абсолютно одинакова для всех языков. Да там разная реализация, которая как обычно взята из многих языков, но суть то всегда одна и та же.
например суть функции
ключевое слово Название(скобки а в них параметры):
тело функции.
# функция принимает и возвращаете аргументы.
Суть всегда оперирует конкретикой, например относительно функции это параметры функции, то что в скобках и вызов функции.
Как я рекомендовал в уроках:
при изучении функций в конкретном языке,
например в питон, как мы можем понять, что мы владеем вопросом:
Как этого достичь. Писать не менее 250 строк кода по каждому моменту
250 строк кода в Jupyter Lab в день и вы профессионал в Python, Kotlin, Js.
https://www.youtube.com/watch?v=pvUf_Qi3IK4
Только после того, как эти базовые знания будут усвоены и считываться по взгляду, можно переходить к инструкциям if/else и др.
Что будет происходить, а то что у нас есть чёткое понимание параметров функции, а значит у нас есть конкретно чем размышлять и тогда нам очевидно, применение условий выбора и др, так как мы понимаем чем мы размышляем.
Если мы с этим разобрались в трёх языках, можете проверить на практике, возьмите любой язык, я в школе рекомендовал Go, и вы точно будете понимать о чём речь, ведь суть работы функции вы знаете, вам нужно посмотреть только реализацию, то есть вы пишите сходу.
Давайте сначала очертим реальную проблему и грабли на которые наступают все, или почти все. Это будет важно для понимания ниже.
Это важно для тех, кто хочет стать профессиональным программистом.
Бовсуновский 11 лет размышляет над тем. как лучше дать язык.
Заметьте в уроках по изучению функций я постоянно твердил, что изучить важно досконально.
Понятно.
Конечно понятно.
Ммммм.... а что, делают многие, пролетели функции за пару дней, а что здесь непонятного. А то что там Бовсуновский говорит, так хай говорит, это он говорит кому то другому, а не мне....
А результата нет:
А то что Бовсуновский написал видео про 250 строк кода по каждому видео, это не для меня, мне нужно быстрее.
И дотянули ручник до верха, все теперь мы будем на месте барахтаться, но при этом решать иную задачу, глобальным вопрос у нас станет в дальнейшем изучении во такой...
Вот прошёл год, а я почему то не пишу, вроде бы код понимаю. а писать не пишу.
Так что здесь удивительного, все очень понятно.
Причина была на поверхности.
Что Бовсуновский говорил, нужна система проработки кода.
https://www.youtube.com/watch?v=pvUf_Qi3IK4
Есть у тебя.
Если вы думаете я сейчас напишу что нет, ошибаетесь, она действительно есть, но иная.
Поиск решений на самые просты вопросы.
Ведь подход, который предлагал Бовсуновский инвестировать пару недель в функции, но раз и навсегда и обрести понимание, отвергли и подменили его чем...а вот чем...
мне надо быстрее.....
Ну что получилось быстрее? Год в ....(сами знаете куда)
Кто ещё не успел совершить этих ошибок, давайте рассуждать здраво, возьмём языки, питон, котлин, js, там все построено на функциях. Функция основная единица программы.
А мы что сделали?
Функции пролетели и дальше за нами тянется полу понимание.
Ага добрались до классов.
Ой, какие мы быстрые, молодцы.
А давайте ка взглянем, природу класса.
Ага там главное это метод.
Слово то какое умное.
А давайте на примере питон взглянем на код.
вот так выглядит функция.
def myfun(param1, param 2):
"""
тело функции
"""
А вот так выглядит метод.
def myfun(self, param1, param 2):
"""
тело метода.
"""
Поищите отличия сами.
Вот только есть одна загвоздка, если мы ранее не разобрались с функциями, а в методах действуют все законы функций, то что мы будем делать? Ведь в функциях у нас полу понимание.
А в классе добавится по минимуму, перезагрузка операторов,
__init__ и другие, ....
К нашему слабому пониманию функций, добавим ещё то что относится к классам, принципы построения классов, наследование и так далее.
Только вот тормоз мы поставили ещё при изучении функций в начале и когда мы добавим ещё и знания по классам, это в конец нас запутает.
Надеюсь понятно объяснил.
А ведь в уроках я рассказываю, что если у вас есть система проработки кода, то вы точно все изучите.
Теперь прервём предыдущие размышления и продолжим то что мы начали с начала, разберём понятия суть и смысл.
на примере self, я не зря говорю ребятам начинать с self изучать классы, так как тогда все станет на места.
Про суть.
А ведь дело и выеденного яйца не стоит. Задумайтесь, а почему я начинаю ООП с self, а не с чего-либо другого?
Именно, self вытягивает суть ООП в целом на поверхность, но если у вас нет системы работы с кодом, то до этого трудно догадаться новичку, так как он просто не знает, а что является в программировании этим конкретным.
Большинство ребят что делают? Ищут объяснения, таких же ищущих как сами. А начинать нужно новичку в первую очередь с работы над системой работы с кодом каждый день.
Этот шаг пропускает большинство.
Что делает большинство, когда чего-то не понимает.
Лезим искать решение, второго такого же, который не понимает сути, но понимает смысл.
А я, что сказал в уроках? Верно, начинать с оф. документации. (правильно, многие это прошляпили, назвав водой, а ведь это и было главное что нужно услышать)
Давайте рассмотрим на примере self,
С оф. сайта:
Self - это просто условное имя для первого аргумента метода.
https://docs.python.org/3/faq/programming.html#what-is-self
Постараюсь объяснит проще.
В ответе что такое self, чётко написано в определении, что бы понимать классы, нужно понимать, что такое методы.
(ну и мы с вами разбирали, что метод эта та же функция + self)
По сути дела, если разобраться глубоко, как работают методы и почему они так работают, то у вас появляется суть, то есть после глубокого изучения методов, вы начинаете размышлять в каких ситуациях и что применять, тогда все остальное становится на своё место,
то есть прочитали мы про наследование и сразу понимаем, как передать, что передать, для чего передать и кому передать, так как понимаем, что методы то передают свойства, а ведь свойства (большой 1 метр 80, малый, весит 100 кг и так далее)это уже конкретно, то есть свойством можно размышлять, как и для чего его применить на каком этапе и так далее.
И если бы вы подошли с этой стороны и по системе, то вы бы точно разобрались с тем что двигает в классах эти методы с принципами работы перезагрузки операторов, с памятью и самой собой пришли бы и к ссылкам.
///////////////////////////////////
Возможно вы сможете уловить разницу подходов в моём объяснении.
В первом объяснении, где я говорю по смысл, это тот пример, который вы сбросили, результат будет очевиден, вы будете понимать код, но писать не будете.
И не потому что вы какой-то не такой. Просто не верный подход к изучению, нет в нём конкретики и почвы чем размышлять.
Во втором объяснении где я объясняю про суть, мы изучаем природу метода и тогда у нас в голове собирается то чем можно размышлять:
и т .д
Вывод Иными словами первое что нужно было сделать это изучить природу метода на расстоянии вытянутой руки.
Если б у вас была система проработки кода, то вы бы точно основное внимание уделили изучению природе метода.
Все остальное наследование, инкапсуляция и прочее просто бы вносило бы ваше понимание методы новые вещи. Но вам они тогда понятны, так как понимаем как работает метод.
А ведь правил то там не очень много.
Вот к примеру, хотим на автомате передать нужные нам свойства
def __init__(self):
self.data = []
Когда класс определяет __init__() метод, создание экземпляра класса автоматически вызывает __init__()для вновь созданного экземпляра класса. Итак, в этом примере новый инициализированный экземпляр может быть получен следующим образом:
x = MyClass()
Хотим чётко укзать что передать именно нужные нам аргументы, так в чём вопрос, это все мы изучали.
Конечно, __init__()У метода могут быть аргументы в пользу большей гибкости. В этом случае аргументы, данные оператору создания экземпляра класса, передаются в __init__(). Например,
>>>
>>> class Complex:
... def __init__(self, realpart, imagpart):
... self.r = realpart
... self.i = imagpart
...
>>> x = Complex(3.0, -4.5)
>>> x.r, x.i
(3.0, -4.5)
Вывод. В начале изучения классов нужно подходить к сути, а суть это метод в классе.
Если бы у вас была система отработки кода, то вы точно бы знали, что такое __init__ и глубоко отработали бы его, что мы делаем здесь в школе
В данном случае, что касаемо классов, нужно сконцентрировать своё внимание на изучении природы методов. Вы наверное понимаете уже начали до этого проходить функции. как положено.
Смотрите в школе есть система. ведь я говорил в первых уроках и прошёл с вами функции трёх языков тотатльно
Тогда очевидно вы оголяете свойства , то чем реально можно размышлять.
То есть все становится на места, есть класс, а главное для класса это метод.
И дальше становится не важно, вы просто читаете что такое наследование и понимая природу метода делаете это и видите результат.
И тогда происходят чудеса, вы идете по улице и начинаете думать уже мыслями оцифровки, то есть переводить реальный мир у себя в голове в цифровой.
Смотрите уроки и пробуйте взять что то для себя
К сожалению я не могу вам уделять столько времени более, так как у нас каждый учится самостоятельно.
Ранее у меня было индивидуальное обучение, оно стоило 500 долларов в месяц, но теперь его нет, у меня на это нет времени.
Советы я вам дал более чем достаточные, вы парень настырный, все получится.
Старайтесь ко всему применять систему, пока не наработает свою систему работы с кодом.
если сумеете, то базу быстро изучите, чем дальше будете изучать базовые вещи, тем легче будет, тем мощнее будете писать.
Все у вас получится.
Хотелось бы написать общий вывод к статье.
Статью эту писал на Запрос одного парня, хотел ему помочь, он талантливый, сам пробивает себе дорогу, скажу только имя Алексей. так как там личная переписка.
А потом уже адаптировал в общем.
Вывод глобальный как делать правильно.
Ну например извлечение срезов в списках всегда начинается с нуля, то есть это правило не изменяется, значит это базовое знание и его важно проработать.
Или выше из чего состоит функция(описывал выше), не ленитесь вернитесь осознайте и как понять что вы владете хорошо, то же обсуждали. (вернитесь, вернитесь).
Изучайте несколько языков, объяснял выше почему.
Кому сложно самому и хочет ускорить темп обучения, приходите в школу. Задача школы помочь разобраться с тем чем берёмя досконально. Ведь школа в этом может быть подспорьем, кроме школы я рекомендую получать информацию из источников, которые вам помогают, могут быть книги, сайты и т.д.
Спасибо за доверие.
Сейчас вы проходите урок:
Код понимаю, но писать не могу. Как не попасть в такую ситуацию.
Все уроки с тегом: код-понимаю-писать-не-могу