Ocean
Это я тоже не сама придумала. Как обезьяна повторяю. Прочитала статью когда-то, что типа не надо всуе тащить все огромные модули, если оттуда используешь одну или две функции.
Импортируй типа именно их и используй. И непременно каждый импорт с отдельной строки. Я заучила и выполняю. Но походу не понимаю, когда надо тащить все, а когда отдельную функцию.
Как различать? На что смотреть? Когда стоит импортировать только отдельные функции или классы?
Пространства имён используются для того, чтобы не было конфликтов имён. Без пространств имён тебе придётся выдумывать сто имён. Так было раньше. К пространствам имён пришли естественным образом. С пространствами имён ты начинаешь каждый раз с пустой страницы. То есть тебе доступны все те же самые имена в каждом новом пространстве имён.
Пример:
>>> import re
>>> import operator
>>>
>>> re.sub
<function sub at 0x7f0c5abd16a8>
>>> operator.sub
<built-in function sub>
>>>
>>> re.sub(str(operator.sub(3, 2)), str(operator.sub(3, 1)), 'abc1def')
'abc2def'
>>>
>>> operator.sub(int(re.sub('\D', r'', 'abc3def')), int(re.sub('.*(\d).*', r'\1', 'abc1def')))
2
>>>
Вот здесь абсолютно разные функции называются абсолютно одинаково. Что было бы, если бы ты их симпортировала? Ты не смогла бы их использовать. И вот представь, что таких функций не две, а двадцать, которые появляются в коде не в один момент, а в разные месяцы или годы. Никто не вспомнит, где какие там имена и почему, просто будут при компиляции/интерпретации получать клэши. Потом им придётся всё это исправлять. А когда пространства имён расставлены, они, может, и занимают место, но они читаются (до них не надо догадываться сидеть) и их не надо будет менять ни через месяц, ни через год. Ты пишешь код один раз и больше его не трогаешь. Он закоммичен и всё, и эти коммиты ты тоже больше не трогаешь.
Поэтому этот пункт, про пространства имён, добавлен даже в Дзен питона (PEP20).
В других языках ещё больше заморочек с именами, поэтому там вообще без пространств имён никуда, так как можно ещё больше эффектов получать, если пространств имён нет.
А импортируют всё и отовсюду те, кто наскоряк херню всякую пишет. Ну, бывают примеры, конечно, где можно и симпортировать для скорости показывания примера. А бывает, что и в программах это импортируют так же, ну и приходится потом плеваться, что опять ты не можешь функцию с таким именем сделать, с вот таким именем сделать (или класс это), потому что этот гаврик, который это делал всё, думал только о себе, о своей какой-то личной скорости.
Ocean
Возможно, я math.cos сломаю, только если напилю свой класс Math, где будет функция cos. Потом создам экземпляр класса, которую я сохраню в переменную math, а затем я где то захочу для этой math использовать свой метод cos. Так! Надо будет попробовать) Сломается или все равно импортированное math.cos останется пуленепробиваемым.
В питоне имена не фиксируются. Ты в любой момент можешь имя привязать к другому объекту
>> import math
>>>
>>> math.cos
<built-in function cos>
>>>
>>> math = 1
>>> math.cos
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'cos'
>>>
>>> math.bit_length
<built-in method bit_length of int object at 0x7f0c633393c0>
>>>
>>> del math
>>> import math
>>> math.cos
<built-in function cos>
>>>
Так что имена у всех одинаково никому не принадлежат. Просто есть привязки, которые можно отвязать в любой момент. Есть объекты вообще без имён
>>> (i for i in '...')
<generator object <genexpr> at 0x7f0c5abc3830>
>>>
У этого объекта нет имени. Только одно имя к нему привязано - это подчёркивание
>>> (i for i in '...')
<generator object <genexpr> at 0x7f0c5abc3830>
>>> _
<generator object <genexpr> at 0x7f0c5abc3830>
>>>
И то после следующей операции имя подчёркивание от этого объекта отвяжется и привяжется к другому объекту. К последнему выведенному объекту оно привязывается
>>> 1
1
>>> _
1
>>> 2
2
>>> _
2
>>> _ + _ * _
6
>>> _ + _ * _
42
>>>
В питоне нет разделения на имя модуля или не модуля. Есть некоторые встроенные имена, которые нельзя отвязать
>>> float.__doc__ = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't set attributes of built-in/extension type 'float'
>>>
Ocean
Просто тут получается, что я очень медленная получалась. Меня били по рукам на работе и переучивали. Ну типа херли ты тут сидишь. Это частный случай, вероятность низкая. Забиваем болт.
Ну, это как китайцы выращивают овощи на экспорт. Они применяют химию к ним и те растут большими и красивыми, а на вкус они безвкусные. Безвредные, но трава. Плюсы от этого, конечно, есть. Но можно ли эти овощи есть, и вкусно ли эти овощи есть? Нихера не вкусно. Хотя всё продано и так далее. Те всё успешно проделали. Затратили мало, получили много. Только вот овощи от этого вкусными не стали и компания имеет название, которое никому не интересно. И на своём названии они дальше ничего не продадут. Никто не будет искать овощи именно этой компании. Она не интересна никому, так как ничего вкусного не делает. Компания мотылёк. Такие сотнями появляются и сотнями исчезают. И никто про них не помнит ничего.
Ну, можешь делать траву, но при чём тут вкусные овощи?
Ocean
Кое-как работает, не трогаем! Оставить, а то вдруг сломается и будет еще хуже.
Ну да, подобное притягивает подобное. Вот они взяли говнокодера, он им наговнокодил. Всё работает. Но вот только если тронешь это, то оно начинает вонять. Это можно только продать кому-то. Из этого нельзя вырастить принцессу. Ничего там не вырастет.
Ocean
Большинство руководителей и собственников принимают такие решения. Никого не интересует монументальное или послезавтра. Типа мы ж не Боинги строим или космические аппараты, а послезавтра может и не наступить. Или послезавтра для бизнеса “будут другие вызовы и приоритеты”. Бизнесу такое не интересно, бизнес должен успешно конкурировать и блаблабла.
Да, а ты знаешь, как они друг другу фирмы свои продают? Вот был Skype живой, я им никогда не пользовался, мне он не нравился тем, что против админов работает на предприятиях, обходит их запреты там и прочее. Я ждал аналоги, всем говорил, что Skype - это временное явление, он не навсегда, все смеялись. Теперь он нахер не нужен этот Skype, потому что теперь любой утюг может этот функционал реализовывать. Так вот, несмотря на это я всегда видел, что компания эта успешна, что она растёт. Вот это их детище. Но потом они продали это Microsoft'у и всё. Они как будто продали своего ребёнка. Теперь нет ни их, ни Skype'а, Microsoft этот тоже понял, что этот Skype ему не поможет ничего захватывать, рынок ушёл, Skype уже ничего из себя не представляет и ничего нового дать не может и не сможет. Понимаешь, и всё, вот они были, и вот их нет.
Поэтому сегодня бизнес есть, а завтра его нет. Сегодня есть империя, а завтра нет этой империи. Раньше телевидение рулило, а сейчас всем наплевать на него. И вот они сидят “а чо? а как? а где все?”. Вот так правители умов и закончили.
Ocean
Ты не поверишь) Я писала свой говнокод в блокноте, Python IDLE и потом в 2014 вроде узнала про Canopy editor. Использовала его.
Потом пересеклась с программистом. Я спросила, он сказал: “ты страдаешь херней. Бери нормальный редактор и пиши. Времена изменились, ты же не стираешь трусы на реке в проруби золой с деревянной теркой, а используешь порошок и стиралку.”
И что это дало? Ничего. А вот блокнот тебе даст. Что он даст? Он даст тебе мозги. Ты мозгами будешь работать, а не смотреть, какая там подсказочка где-то возникла, и ждать чуда рефакторинга и прочей хрени. Потом, когда ты это всё умеешь, ты можешь делегировать это на идешку, но ты и не разучишься. А вот если ты не умела и сразу на иде садишься, то ты и не научишься. Потому что, чтобы научиться, нужно руками это настирать и наколоть и кашу приготовить в домашней русской печи. Я вот очень поражаюсь деревенским этим всяким, как они так могут управлять всем этим хозяйством. Это круто. А потому и могут, что руками это всё проделывают, тогда как я просто в магазине это всё покупаю. У меня нет такого опыта, я в городе вырос, я знаю, как видик работает. Я не знаю, как работает корова.
Ocean
Потом пересеклась еще с одним программистом. Послушала еще про херню, которую творю. Что сама нахера-то залезаю в дебри и настойчиво жру кактусы, а уже бы проекты делала нормальные. Надо знать современные технологии и хорошо гуглить, а остальное как-то само приложится.
Ты просто не умеешь ничего делать. Это из-за этого, а не потому, что у тебя PyCharm'а нет. Ребёнку дай экскаватор, он не выкопает котлован под фундамент. Дело не в экскаваторе. Дело в том, что ребёнок не знает, про что речь вообще идёт и для чего котлован этот нужен. Вроде строить дом надо вверх, а ему говорят копать вниз.
Поэтому все эти советы довольно вялые. Они ни о чём. Ты ничего от них не узнаешь. Хоть десять PyCharm'ов поставь, это тебе ничего не даст. Короче, им похеру на тебя. Они тебя не учат и им похеру на тебя. Поучаствовали и дальше пошли.
Другое дело я вот K&R2 читал. Так там человек переживает за язык, за операционную систему. Понимаешь, он хочет, чтобы это жило. И это чувствуется, и за этим идёшь. Он как Данко с факелом в руке. Они хотели сделать программы, они их сделали. А вот эти мальчики - это никто. Их тысячи и никто их не знает и не узнает никогда.
Ocean
Вот так и докатилась до PyCharm. Они ж опытнее меня и умнее. Если спрашиваю и дали советы, то надо следовать.
И вот вся в соплях до сих пор. Таки никто не вытирает.
Да, ты ничего не получила. Ну, опыт работы с программой. Он ничего не дает. Не умеешь ты программы писать, мы в этом убедились прямо в этом топе. Для элементарной программки у тебя ничего не выработано. Игреки неправильные. А то, что они неправильные, ты даже не поняла. У тебя нет этого аппарата, он у тебя не выработан. Просто обрадовалась, что всё сделала на функциях. А там надо игреки сделать - это самое главное там.
Ocean
Вот мозговой дебаггер у меня нулевой. Я часто нахожу ошибку в момент, когда запускаю и че то отваливается. Или результат неожиданный.
Как это прокачать? Я вроде продумываю и пишу то, что продумала. Но на выходе херня.
Это придет со временем и просто продолжать или что-то особенное нужно делать?
я на все готова! Я хочу уметь в голове узнавать, что выполнит код, который передо мной.
Это не придёт со временем, это нужно на бумаге писать программу. Фишка в том, что её нельзя запустить и проверить, правильная ли она. Только в мозгу её можно проверить. Также хорошо способствует дебаггер обычный. Это когда ты сидишь в нём несколько часов и каждый шажок в программе проходишь и смотришь, как поменялись переменные после этого шага. У тебя формируется видение процессов, которые происходят в программе, когда она работает. Как цикл превращается впроцесс. Как ветвление разламывает программу на части. Как блоки видимости инкапсулируют что-то в себе. То есть ты как мультик смотришь всё это. И потом ты просто программу чью-то берёшь, загружаешь себе в воображение и смотришь её, как мультик. И так ты заходишь в каждые закутки и видишь “о! вот тут ошибка!”. Сначала ты пишешь её на бумаге, потом это всё преобразуется в блокнот в компе и ты также в блокноте пишешь и без запускания всю её выполняешь в воображении. И вот тогда оно у тебя сформируется, это видение.
Ocean
У меня сейчас есть:
1) тетради: на каждую тему/книжку своя. И есть общая тетрадь, где мои личные гайды и шпаргалки. Допустим трахалась с докером, вникла. Записала команды, чтобы пока наизусть не запомню, у меня была шпаргалка. Ну типа знаешь, как с формулами треугольника, чтобы перед глазами для решения, пока не запомняться накрепко.
2) Приложение: asana. Там себе задачи и планы строю. ну чтобы не тратить время каждый раз. Появилось время и кодить или англ учить, а не думать… Тааааак… А чем же мне заняться? А может сегодня вот эту книжку почитать?
Открываю приложение, вижу невыполненные таски, где четко указано, что мне надо сделать. Беру и делаю одну за одной. В конце дня проверяю и составляю таски для себя будущей
3) Гуглофайлы и гуглодиректории.
Тетради - это хуйня. Вот я пробовал, они не работают. Они нужны только для того, чтобы на них что-то писать и потом это забывать. То есть ты когда пишешь, у тебя синтезируется знание. То есть вот у тебя знания нет и ты пытаешься его придумать. Ты его придумываешь и записываешь. Вот этот процесс важен. Когда тебе говорят “реши примерчик” и ты начинаешь строить его решение, вытаскивать из космоса. Вот для этого нужна тетрадка. Ты в ней пишешь код и забываешь про него. Потом снова пишешь код и забываешь про него. Так он у тебя синтезируется и так у тебя появляется навык создания программы. То же самое с проектированием. Ты набрасываешь схему и забываешь про неё. Потом ещё набрасаываешь схему и забываешь про неё. Больше тетрадка ни для чего не нужна. Потом ты эту тетрадку выкидываешь, а вот эти навыки, появившиеся в результате генерирования записей в тетради, остаются. Поэтому они у тебя потом работают в воображении. Вот как раз поэтому в вузах и рисуют эти блок-схемы в тетрадях, хотя эти блок-схемы сами по себе нахер не нужны. Это делается, чтобы мозги сформировать. Ты смотришь на код - и у тебя блок-схема в воображении возникает. Ты смотришь на эту блок-схему и видишь, что это хороший код, так как у него блок-схема не запутана. Либо ты видишь, что это какое-то говно, потому что блок-схема вообще никудышная и там просто борода в ней из линий. А учишься ты этому на бумажке. А делаешь ты потом это в голове.
Приложение Asana может заблокироваться. У меня так недавно с Trello было. У них же там вечные проблемы с Linux, до сих пор клиента нет. Я использую неофициальный клиент. Всё было нормально, как-то его включаю,
нужно делать дела, а он мне пишет “мы обновили Trello, поздравляем вас, теперь вы обновите браузер, чтобы продолжать пользоваться Trello” - охуели просто. Мало того что клиент не выпускают, так ещё и подлянки строят. Благо, что у меня это всё не в Trello находится, в Trello только дублируется всё. Так что дела не порушились. Потом они там что-то исправили, всё снова заработало через день. Но вот такая вот фигня бывает. Месяцами всё нормально, потом хуяк в один момент и всё. Так что Asana - это из той же категории. Может подстава быть.
Гугловые сервисы самые прочные на сегодняшний момент. Это Micorsoft, может быть, сдохнет, так как их освновная лошадка пришла в упадок, а Гугл имеет прочные позиции и дальше будет развиваться. Единственное, новые сервисы нельзя брать у них, так как они часто грохают сервисы, которые не прижились.
Ocean
Вот тут и начались сложности, потому что пометки и конспект не оч удобно. На бумагу все листинги нет смысла писать, отдельно директория + тетрадка оч неудобно. По тетрадке поиск херовый. По директориям получше, но на скринах тоже не ищет.
Электронный конспект должен быть. Тетради - о них речь вообще не идёт. Без конспекта с книгой делать нечего. Ты её не запомнишь. В ней тысяча страниц, в следующей книжке тоже тысяча страниц. Всё очень быстро перемешается в кашу, процентов семьдесят просто не усвоится, потому что помнить не будет даже целые главы. А конспект помогает зафиксировать важные моменты, основные моменты, определения, которые надо заучить, какие-то фишки, какие-то особенности. Всех не упомнишь. Пройдёт три месяца и ты не будешь помнить, про что там вообще в этой книжке. А на полке ещё десяток лежит, и все их надо прочитать ещё вчера. Так что книжки у тебя должны быть электронные, даже если есть бумажные. Потому что с электронных можно быстро копировать, с бумажных - заебёшься. Можно, конечно, но не нужно.
Ocean
С телефона почти не могу учиться.
Придётся научиться. Чем больше у тебя доступа к материалам, тем лучше. Ночью проснёшься и ты не пойдёшь комп включать. А смартфон можно быстро взять и что-то посмотреть. Просто для этого нужно это всё оттренировать, проделывать это надо. Тогда это станет удобным.