Почему питон плохой язык
Перейти к содержимому

Почему питон плохой язык

  • автор:

«За что вы так меня не любите?» (с) Python

Python уже на протяжении нескольких лет держится в топе языков программирования. А любая популярная вещь так или иначе обречена на шквал критики разной степени конструктивности. IT-сообщество разделилось на три основных лагеря:

те, кто Python боготворят;

те, кто делают вид, как будто его не существует, или о нём практически не слышали;

те, кто ненавидит Питон всем сердцем.

И под влиянием общепринятого человечеством правила, когда на негативное мы обращаем гораздо больше внимания, в этой статье (скорее небольшом эссе из категории «Мысли на тему») я решил обсудить пять основных причин, за которые язык Python ненавидят и критикуют.

Скорость

Наверное, каждый слышал, что Python медленный и уступает в скорости другим языкам по типу С++, С# и т.д.

Отрицать это глупо, однако дьявол, как обычно, в деталях. Python интерпретируемый язык, он по определению не заточен под разработку проектов, специфика которых требует межгалактической скорости. Если используют для других целей и проектов. Там, где это нужно, все узкие, критические для производительности места и библиотеки (например, Numpy) обычно пишут на С или Fortran и оборачивают в питон-код. А в большинстве оставшихся мест это скорость-то особо не нужна или не сильно критична. Кстати, если всё-таки кровь из носу нужно повысить производительность, никто не запрещает использовать другие реализации интерпретатора, например, PyPy, Stackless, Numba и т.д.

К слову, Python далеко не самый медленный язык по сравнению с конкурентами в «своей весовой категории», взять те же PHP и Ruby.

На мой взгляд, судить о крутости и применимости языка исключительно по скорости, это тоже самое, что судить о качестве программы по количеству строчек кода. Разные инструменты, лучше использовать в разных условиях. Если бы краеугольным камнем всего было бы исключительно быстродействие, тогда мы вполне могли бы обойтись ассемблером, а хипстеры, для которых ассемблер казался бы слишком сложным, использовали бы Си.

Ниша Python – это веб, скриптинг и Data Science. Он хорош именно в этих сферах. Если тебе нужны сложные вычисления, CPU-bound задачи, то тебе надо смотреть в сторону свеженького Rust или С/С++. Никто не заставляет писать highload на Питоне. Поэтому попытки ругать Python за скорость схожи с ситуацией, когда ты покупаешь кроссовки на два размера меньше и ругаешь потом фирму за то, что в кроссовках их производства неудобно ходить. Или пытаешься гонять в футбол в свадебных туфлях с носами. Ну вы поняли.

Другая аналогия. Не надо сверлить зуб пациента перфоратором. В смысле, конечно, можно, но будет ли доволен хоть кто-то из вас двоих после этого? Когда инженеры придумывали дрель, они не задумывались, как люди могли бы с помощью неё рыбачить. Продолжать эту цепочку можно довольно долго.

И вы, наверное, удивитесь, что Python обгоняет многие языки программирования по своей скорости, скорости разработки на нём. А это на некоторых проектах гораздо важнее выигрыша в несколько секунд.

Проблемы с многопоточностью и GIL (запрещенная на территории РФ организация)

Как уже оговаривалось раньше, исходя из специфики применения, Python может позволить себе плохо работать с потоками. Кстати, если ты не особо понимаешь, о чем мы сейчас говорим, у меня на YouTube канале есть видео про GIL, рекомендую ознакомиться.

Если тебе обязательно нужно миллион виртуальных потоков, то просто используй Elixir, Erlang или Go. Они с прицелом на это и создавались. Зачем ты ругаешь дуршлаг за то, что вода из него утекает? Ругать надо себя, если ты, будучи «крутым прогером», не способен подобрать подходящий инструмент или перестроиться под особенности задачи.

Допустим, в процессе обработки запроса будет сделано несколько обращений, к API, к базе данных или кэшу. Сервера могут быть сколь угодно быстрыми, но всё упрётся в скорость передачи данных по сети и ожидание ответов от сервисов. В I/O-bound задачах (на которых Python и применят чаще всего) потоки питона отлично работают, для CPU-bound Python и не предназначен. Кстати, в альтернативу потокам без каких-либо ограничений можно плодить процессы. Да, они заметно тяжеловеснее, однако при грамотном менеджменте и работе с ресурсами можно добиться довольно эффективной работы. Просто надо немного подумать, это вам не просто библиотеки импортировать)

Низкий порог вхождения

Не сказал бы, что это ужасный минус. Но большинство людей говорят, что Python плодит низкоквалифицированных разработчиков, которые способны только импортить библиотеки, где всё уже сделано за них и всё готово. Знаете, еду из ресторанов, пакетиков, Макдоналдса и другого фастфуда готовить тоже не надо. Всё уже собрано, разложено и пожарено. Надо лишь заказать, сделать импорт, если вам угодно. Только вот почему-то не все люди используют готовую пищу. Многие готовят самостоятельно, зачастую сильно заморачиваются в поисках качественных продуктов, способа приготовления, стараются питаться правильно и экологично. Однако они могут позволить себе съесть фастфуд или заказные блюда в редких случаях, зачастую под какой-то повод или, например, вынуждено перекусить на ходу.

Но есть и те люди, которые едят всё подряд, без разбора, что там да как. Достал, разогрел, сунул в рот и нормально. Такая же история и с программистами.
Ведь ложка не наедается на ночь, ручка не делает орографических ошибок, а пистолет не убивает.
Всё зависит от конкретных людей и того, как они используют окружающие их инструменты.

Тот компетентный человек, который разбирается, например, в нейронных сетях, знает алгоритмы, когда лучше какие применять, понимает, как грамотно подобрать гиперпараметры, с большой долей вероятности сможет самостоятельно написать собственную реализацию любой модели из библиотеки. Только вот зачем ему тратить на это время? А вот парень, который ничего не понимает, не собирается разбираться, просто насмотрелся видео на YouTube и бездумно импортит модули, так он и программистом работать не сможет, потому что на каждом шагу будет упираться в свою некомпетентность и рано или поздно ему это надоест.

Безусловно, на трушных инженерах и стоит весь мир. Всё, что у нас есть сейчас, мы имеем благодаря хардкорщикам, считавшим в своё время байты на ассемблере и С. Эти люди были, есть и будут востребованы, однако сейчас бизнес также охотно платит и тем, кто может просто качественно выполнять свою работу, собирая софт из фреймворков и модулей, не делая всё с нуля, банально из-за того, что это быстрее, а время сейчас – это деньги.

Отдельно можно выделить большое количество расплодившихся быдло-кодеров на YouTube (неловко оглядывается в зеркало) и других площадка, которые использует в качестве основы Python. Но поймите, дело тут не в питоне. Python довольно простой язык, поэтому привлекает большое количество народа, и если вдруг, в ближайшее время появится что-то более простое и удобное, эта контингентная прослойка моментально бросит питон. То есть дело, как обычно в самих людях.

При этом из-за низкого порога вхождения, постоянно идёт приток новых разработчиков в комьюнити. За счёт чего оно растёт и развивается. Ведь никому не нравится хочется столкнуться с нечто подобным.

Скриншот сделан 12.04.2021

Скриншот сделан 12.04.2021

Синтаксис

Часто люди не согласны мириться с синтаксисом Python, в особенности с пробелами. Выглядит чужеродно и неудобно. Я некоторое время преподавал программирование в заведениях дополнительного школьного образования.

Давайте сравним, как я пишу код на С++:

И как его пишут дети:

Теперь как я пишу код на Python:

И как его пишут дети:

То-то и оно. К пробелам можно привыкнуть за пару дней, а взамен за моральные страдания, вы получите чётко структурированный, лаконичный, легко читаемый программный код, причём он такой у всех программистов, независимо от их уровня. Кстати, у меня на канале также есть видео о том, как научиться ставить пробелы и табы в Python. Если ты новичок, советую ознакомиться.

А вообще, объективно говоря, на вкус и цвет товарищи разные. Думаю, про синтаксис мы закончили.

Типизация

Это одновременно и плюс, и минус. С одно стороны, безусловно, динамическая типизация тянет проблемы в очень крупных проектах и затрудняет тестирование. С другой же, проще даётся новикам, что обеспечивает приток новой крови в сообщество. Также динамическая типизация дает и несколько других бонусов в виде упрощения метапрограммирования, плюшек интроспекции и рефлексии. Также в Python 3.5 появились аннотации типов – type hinting. Да, это не панацея уровня TypeScript, но указание типов стало довольно приятным нововведением, значительно облегчившим жизнь, и программисты очень часто стали им пользоваться.

Если вы не согласны со мной или вам есть что добавить, то милости прошу в комментарии.

Заключение

Подытожить всё выше сказанное хочется фразой Страуструпа, создателя С++:

«Есть всего два типа языков программирования: те, на которые люди всё время ругаются, и те, которые никто не использует».

И, как я сказал в начале текста:

«Python уже несколько лет держится в топе языков программирования».

Почему Python не станет языком программирования будущего, даже если сейчас популярен

Команда Mail.ru Cloud Solutions перевела колонку Rhea Moutafis «Why Python is not the programming language of the future». Автор перевода не всегда разделяет мнение автора статьи.

Python появился в мире программирования довольно давно, но с начала 2010 годов переживает бум — он уже обогнал по популярности C, C#, Java и JavaScript. До каких пор будет сохраняться тенденция роста, когда Python заменит какой-то другой язык и почему?

Автор колонки считает, что у Python есть несколько свойств, которые помогли ему стать популярным языком. Но есть и слабые места, которые уничтожат его в будущем.

Популярность языка программирования можно отследить по динамике количества тегов на самом востребованном у разработчиков ресурсе — Stack Overflow. Так, судя по графику, рост Python начался с 2010 года, а стремительным он стал в 2015 году. В то время как R в течение последних нескольких лет находится на плато, а многие другие языки находятся в упадке. У такой популярности Python есть причины.

Python можно смело назвать довольно старым языком — он появился в 1991 году, то есть практически 30 лет назад. За это время он постепенно собрал вокруг себя большое сообщество.

Если у вас появится какая-то проблема с этим языком, то решить ее, скорее всего, получится примитивным поиском в Google — наверняка кто-то уже опубликовал мануал с алгоритмом и примером кода.

Python можно смело рекомендовать как первый язык программирования. И дело не только в том, что он существует давно и поэтому по нему есть много хороших учебников. У него понятный синтаксис, похожий на обычный, «человеческий» язык. и еще он прощает ошибки.

Например, в нем не нужно указывать тип данных, достаточно просто объявить переменную. Из контекста Python поймет, является ли она целым числом, числом с плавающей запятой, логическим значением или чем-то еще. Это огромное преимущество для начинающих.

Если вам когда-либо приходилось программировать на C++, вы знаете, как это печально, когда программа не компилируется только потому, что вы где-то поменяли число с плавающей точкой на целое число.

Код Python довольно просто читать. Просто сравните синтаксис Python и C++ .

Python существует так долго, что разработчики смогли сделать специальные библиотеки практически для любых целей. Например:

  • Для многомерных массивов и высокоуровневых матриц используйте NumPy.
  • Для расчетов в инженерном деле подойдет SciPy.
  • Для исследования, анализа и манипулирования данными попробуйте Pandas.
  • Для работы с искусственным интеллектом изучайте Scikit-Learn.

Если вам нужно решить какую-то вычислительную задачу, вероятно, что для нее уже есть специальная библиотека Python. Это позволяет языку оставаться в тренде последние годы, что видно по всплеску его использования в машинном обучении.

Вот недостатки, которые могут стать критичными для развития Python как самого популярного языка в будущем.

Python медленный — в среднем, на операции на нем понадобится в два, а то и в десять раз больше времени, чем если бы вы выбрали другой язык. Для этого есть разные причины. Одна из них в том, что Python — язык с динамической типизацией. То есть на нем не нужно заранее определять тип данных, как в других языках. Конечно, это удобно разработчику, но такой подход требует большого резерва памяти для каждой переменной, чтобы она работала в любом случае. Соответственно, больше памяти означает больше времени на вычисления.

Python может выполнять только одну задачу за раз, как раз из-за того, что язык должен проверить тип данных. Параллельные процессы всё испортят. Для сравнения, обычный веб-браузер может запустить несколько десятков различных потоков одновременно.

Конечно, вы можете возразить — кого сейчас волнует эта скорость, ведь компьютеры и серверы стали такими мощными, что в итоге «медленно» означает выбор между загрузкой приложения за 0,01 секунды или 0,001 секунды. Действительно, конечному пользователю нет разницы.

В Питоне используются динамические ограничения видимости. То есть для оценки выражения компилятор сначала ищет текущий блок, а затем последовательно все вызывающие функции.

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

Питон пытался перейти к статической области видимости, но ничего не вышло. Обычно внутренние области видимости — например, функции внутри функции — могут видеть и менять внешние области видимости. В Python внутренние области могут только видеть внешние области, но не менять их. Такой подход приводит к путанице.

Несмотря на всю гибкость, использование лямбд в Python ограничено. Они могут быть только выражениями (expressions), но не инструкциями (statements). С другой стороны, объявления переменных и statements и есть инструкции. Проще говоря, добавление statements сделает лямбду многострочной, а синтаксис Python не позволяет так сделать.

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

Питон хорошо подходит начинающим разработчикам — там используются пробелы и отступы для обозначения разных уровней кода. Это делает его визуально привлекательным и интуитивно понятным.

Другие языки, например C++, больше полагаются на фигурные скобки и точки с запятой. И пусть это не так визуально комфортно для новичков, зато делает код намного удобнее для поддержки. Для больших проектов это намного важнее.

Новые языки, например Haskell, так решают эту проблему — они полагаются на пробелы, но предлагают альтернативный синтаксис для тех, кто хочет обойтись без них.

Сейчас мы наблюдаем массовый переход от компьютеров к смартфонам — уже понятно, что нам нужны языки, подходящие для мобильных приложений.

В Python такая возможность как бы есть — пакет под название Kivy. Но нужно учитывать, что Python не был создан для мобильных устройств. Использовать его можно, результат будет даже приемлемым, но зачем, когда можно взять более подходящий язык, созданный для разработки мобильных приложений. Например, фреймворки для кроссплатформенной мобильной разработки: React Native, Flutter, Iconic и Cordova.

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

Скрипты в Python компилируются каждый раз во время выполнения, вместо того, чтобы сначала компилироваться, а уже затем выполняться. Поэтому любая ошибка проявляется во время выполнения кода.

Это приводит к низкой производительности, временным затратам и большому количеству тестов. Тесты — это замечательно, особенно для новичков. Но для опытных разработчиков такая необходимость воспринимается как минус и приводит к нехватке производительности.

На рынке языков программирования есть несколько его конкурентов:

  • Rust — в нем так же, как и в Python, переменная не может быть случайно перезаписана. Но за счет концепции владения и заимствования в Rust решена проблема с производительностью. Кстати, именно Rust разработчики называют самым любимым языком.
  • Go стоит рассматривать начинающим разработчикам. Он довольно прост в освоении, поддерживать код тоже не трудно. Плюс разработчики на GO сейчас одни из самых высокооплачиваемых.
  • Julia подходит для крупномасштабных технических вычислений. Раньше для этого нужно было использовать Python или Matlab плюс библиотеки C++. После выхода Julia потребность в жонглировании языками отпала.

На рынке есть масса других полезных языков, но именно эти три закрывают слабые места Python. Rust, Go и Julia подходят для инновационных технологий, особенно для искусственного интеллекта. Сейчас их доля на рынке еще невелика, судя по тегам Stack Overflow, но тенденция роста уже есть.

Учитывая популярность Python в настоящее время, наверняка потребуется не меньше пяти, а то и десяти лет, чтобы любой из этих новых языков заменил его.

Какой из языков это будет — Rust, Go, Julia или новый язык будущего — пока трудно сказать Но учитывая проблемы с производительностью, которые являются основополагающими в архитектуре Python, каждый из новых языков найдет свое место.

Что еще почитать по теме:

Единственная верная предъява это скорость.
Но почему проблемой являются отступы вместо скобок или динамическая типизация? Отступы в любом случае придется делать, иначе код станет не читаемым.
Компилятора нету? А как же Numba или PyPy? Да пускай не идеальные компиляторы, но питон на скорость не претендует.
Runtime error это вообще смех, да грех, вы два раза написали о том, что питон интерпретируемый язык?
Go не заменит питон, так как он строго типизированый и далеко не такой простой как python про julia уже более правдеподобно, но ближайшие года julia будет только набирать обороты. Как Rust может заменить python, если это конкурент c/c++, а не python.
Статья бредовая.

Отступы создают проблем при поддержке больших, старых проектов. На хеловорды с парой разработчиков это не проблема.

Проблема отступов для управления блоками кода:

1. На больших проектах где много разработчиков и кодовая база старая, могут встречаться разные кодовые стили что создает проблему с поддержкой. Только не надо про, то что в проекте должен быть один стиль и все должны его придерживаться. Конечно должен, но реальность такова что в больших проектах с текучкой кадров, в старых проектах, это труднодостижимо.

2. Могут быть проблемы при банальном мерже: Например у вас есть функция один разработчик вставил в начало условие — все тело +1 отступ, другой в середину функции добавил оператор — у него отступы были старые. Автоматической слияние пройдет отлично, но код работать не будет.

ох уж эти жёлтые заголовки
питон очень сильно ушёл в data science и стал чем-то вроде пыхи в плане порога вхождения
никто его уже там не заменит в виду тонн кода и библиотек и будущее питона именно за ds
одновременно сильно сдал позиции в веб, из-за чего я сам перешёл с него на java

D может заменить. В общем он сейчас на это и претендует.

А в чём собственно говоря приемущество отсутствия строгой типизации и нормального форматирования кода в виде фигурных скобок?
Типы в питоне и так есть, просто в нормальных яхыках, вы читаете код, вы понимаете где и какой тип возвращаеться, а в питоне пойди угадай, что возвращает функция GetVasia(). Т.е. я абсолютно не понимаю, какую проблему решает тот факт, что не надо объявлять типы? Вы всё равное не сможете совершать операции над разными типами данных, ибо это приведёт в исключению выполнения, какой тогда в этом смысл? С каких пор int x = test.GetVal() стало блин хуже чем x = test.GetVal() .
Фигурные скобки. серьёзно. я конечно понимаю, что типичный код пайтон-разработчика — подключить 1000 библиотек, и написать something = DoAmazingThings(), но вы попробуйте на пайтоне написать больше 30-50 строчек кода. у вас глаза на лоб вылезут, пока вы поймёт где какой отступ был сделан, и какая часть кода к какому "блоку" относиться. В чём сложность использования нормальных фигурных скобок для визуального разграничения блоков кода?
Ну так вообще, у пайтоне есть своя ниша, это ХэллоВорлд приложения с использованием очень богатых библиотек, т.е. как язык что бы показать своей бабушке, какой у неё умный внучек, какие нейросети делает — самое то. Но когда я вижу +- серьёзные приложения на пайтоне. бууээээ. Понятия не имею, зачем это делают.
ах да, в качестве первого языка брать пайтон — хреновая идея. Это как учиться ездить на машине сразу с автомата — ездить уметь будешь, но посади тебя за механику, повесишься.

Лично для меня динамическая типизация — это гибкость. Если мне надо по-быстрому наваять какой-то разовый скрипт или простенький прототип, чтобы проверить работоспособность идеи, то я не буду заморачиваться с тем, чтобы на каждый чих писать тип, это лишняя работа.

Уже три года пишу на питоне, и никогда не возникало проблемы с отступами. Если уж совсем всепечально, есть прекрасные IDE (например, PyCharm), который все делает за Вас.
С++ код не требует соблюдать отступы, чтобы код работал, но все нормальные разработчики их делают, причем стараются соблюдать конвенцию (2 или 4 пробела, например) и почему-то никто не кричит о том, что: "Ааа, это кошмар, попробуй уследи за всеми этим отступами!"

Долгое время я писал на C++ и никакого дискомфорта не испытываю от того, что в Питоне скобок нет. На мой взгляд наоборот очень классно, что блоки выделяются пробелами, и этого достаточно. Философия Питона — это практичность. Зачем тогда добавлять ещё одну сущность в виде скобок для выделения блока?

Насчёт ниши Питона. Ну тут даже комментировать нет никакого желания, просто дам реплику: Java для тех криворуких, кто не смог освоить С++ и управление памятью вручную. (Сарказм, ага)

В качестве первого языка использовать Питон я бы тоже не стал лично для себя. Уменя первым был С, и я нисколько не жалею, и это дало мне хорошее понимание того, как работает компьютер и осознать все удобство, что дают более высокоуровневые ЯП. Но если твоя задача быть продактом или аналитиком, то Питон как первый язык — прекрасный инструмент для решения задач.

Почему большинству новичков-программистов не следует учить Python ⁠ ⁠

Этот пост я посвятил тому чтобы предостеречь новичков которые начали изучать Python в надежде зарабатывать удалённо от ошибки, которую когда-то совершил сам.

Я не программист, не имею официального образования, но тяга к компьютерам у меня была всегда, как и желание разобраться в том, как всё в компьютере устроено, работает. Поэтому в свободное время я много читал статей на тему computer science, поверхностно знакомился с синтаксисом таких языков, как С, С++, но глубоко в это не погружался. В одно прекрасное время озадачился тем, чтобы мне освоить конкретное из области программирования, чтобы заниматься подработкой в сети. Вместо того, чтобы помониторить биржи фриланса я (ну не идиот ли?) стал искать ответ на свой вопрос на ютубе. Попалось мне видео некоего Бовсуновского в котором он рекламировал свою школу по обучению Python и Django. Раньше я об этом языке что-то слышал и только, но после просмотра видео решил узнать о нём побольше, посмотрел ещё с десяток видео других авторов, скачал Лутца и синтаксис языка мне очень понравился. Скажу больше, я был им просто очарован. К Бовсуновскому записываться не стал, решил осваивать Pythоn самостоятельно. После Лутца были и другие книги, а потом настала очередь погрузиться в Django. Параллельно поверхностно знакомился с JS, а HTML и CSS я уже знал хорошо. Ну и само собой пришлось знакомится с тем, что такое базы данных и прочее. Забабахал несколько сайтов на Django для себя в качестве портфолио. Я решил, что моих знаний достаточно для того чтобы искать в интернете простенькие и копеечные заказы и вот тут то меня ждал сюрприз. Оказалось, что на биржах фриланса заказов для Django почти нет, а если есть, то для уровня не ниже мидла. Про удалёнку лучше вообще не говорить – там везде обязательно наличие соответствующего образования и везде требуются только мидлы. Живу я не в Москве и вакансий для разработчиков Django тут просто не существует в природе. В итоге я понял, что то время, которое я потратил на освоение Python и Django слито в унитаз, мне не то, что не найти работу за 20 тыс, но нереально получить грошовый заказ на любой фриланс бирже.

Хорошо, что вместе с изучением Python и Django я хоть поверхностно юзал JS. Пришлось приступить к более углублённому изучению этого языка и заодно РНР. Потом осваивал Worpress, OpenCart и спустя полтора года мне таки удалось начать брать заказы.

Мораль: если вы, как и я не имеете официального образования и начали изучать Python для заработка на фирлансе, или удалённой работе, если надеетесь найти потом работу в офф-лайне, но проживаете не в Москве, то сразу бросайте это дело. Python замечательный язык, Django не менее замечательный фреймворк, но это не для самоучек – работу, подработку не найдёте 100%.

416 постов 10.4K подписчиков

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!

Приветствуется:

• уважение к читателям и авторам

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт

Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

Делаем хуйню, закономерно получаем нулевой результат, говорим что делать хуйню нежелательно. Глубокие выводы.
Теперь по порядку:
1. То что в вебе на просторах СНГ php популярнее python станет вполне очевидно, если потратить время на просмотр вакансий/заказов, поэтому если цель была начать зарабатывать деньги как можно быстрее, то python действительно плохой выбор.
2. Какой смысл забивать себе голову синтаксисом языков? Язык — инструмент, который следует применять в соотвествии с поставленой задачей. А значит надо определиться с направлением и выбрать популярный инструмент, который используется для решения задач в этой сфере.
3. На самом деле большинству стОит изучать программирование с python, потому что это простой язык (даже детей начинают учить с python) с большим коммьюнити и широкой применимостью (от сисадминов/девопсов до DS), а определившись уже с направлением изучать нужные инструменты. При этом зная один язык другой учить будет легче (с оговорками, но в целом это примерно так и работает)

Я прошу прощения, ТС, а сколько Вам лет?

Я бы так сказал: программирование создано для того, чтобы решать задачи. Под конкретную задачу есть конкретный язык/блок языков. И пайтон со своими задачами справляется аж бегом. Правильно тут говорят: не ищите копеечные заказы, устройтесь на работу джуном и растите.

А по теме заголовка я скажу так: с пайтона начинать не нужно по причине отсутствия строгой типизации данных. По хорошему надо сначала хорошенечко наполучать по губам от какого-нибудь сишарпа, который научит тебя уважать типы данных и работать с ними, а потом идти душить питона.

Заголовок не имеет ничего общего с содержанием. А если новичок решил учить питон для того чтобы углубиться в МО, а не чтобы искать копеечные заказы на джанго в глухомани?

Заголовок поменяй, а то какая-то кликбейтная хуета получается.

Топ 10 ресурсов на русском языке, которые могут помочь в изучении Python⁠ ⁠

Вот список из 10 ресурсов на русском языке, которые могут помочь в изучении Python:

1. Python.org на русском языке – официальный сайт языка Python, который содержит множество документации, руководств, обучающих материалов и примеров.

2. ‘A Byte of Python’ на русском языке – это онлайн-учебник, который предназначен для начинающих программистов и помогает освоить основы языка Python.

3. Pythontutor.ru – это онлайн-платформа с интерактивными задачами и упражнениями, которые помогают закрепить теоретические знания.

4. Rus-linux.net – это портал, который содержит множество статей и обучающих материалов по Python.

5. Learnpython.ru – это онлайн-курс, который предоставляет пошаговый и практический подход к изучению языка Python.

6. Pythonworld.ru – это онлайн-учебник по Python, который содержит подробные описания синтаксиса языка, примеры и задачи для решения.

7. Pythonicway.com – это сайт, который содержит множество статей, видеоуроков и других материалов, которые помогают в изучении Python.

8. Coursera.org – на этой платформе можно найти большое количество курсов по Python от ведущих университетов и экспертов в области программирования.

9. Geekbrains.ru – это онлайн-платформа, которая содержит множество курсов по Python и другим языкам программирования.

10. Tproger.ru – это портал о технологиях и программировании, где можно найти множество материалов о Python и других языках программирования.

Хороший Ютуб-канал по программированию Python для уровня посерьезнее, чем у моей аудитории⁠ ⁠

Мне многие пишут про то, что я в материалах о программировании слишком простые вещи разбираю и надо бы что посложнее да поинтереснее. Но они не правы. Дело в том, что они не моя аудитория. Для такой аудитории, что уже получше да посильнее разбирается в программировании и кому хочется глубже в Python двигаться, есть другие авторы. Вот недавно наткнулся, очень много полезных материалов про тонкости, фишечки и т.д. Всем, кому актуально, подписываться на него на Ютубе и смотреть.

С днём рождения, Python⁠ ⁠

Python сегодня исполняется 32 года 🎂

20 февраля 1991 года Гвидо опубликовал исходники версии 0.9.0.

Все бы тебе тараканов гонять по монитору, сын. #1⁠ ⁠

Сижу я значит как-то в аэропорту Внуково, рейс отложили, и дай думаю скачаю себе на телефон игру такую, чтоб рпг, да с автобоями, и чтобы не пять чибриков было как во всех идлах, а 1 и с системой прокачки. Искал, искал и не нашел ничего внятного, ну вот совсем. Плюнул, ладно думаю, демоны, сам сделаю!

И ведь сделал бы. Вот только был ма-а-аленький нюанс, игр то я никогда ни делал, рисовать не умею, а знакомство с программированием ограничено 2-мя уроками Python на рандомном сайте, и десятком решеных задачек на Сodewars.

Чтож, решено. Открываю значит я урок 3, и что вы думаете? Урок 3: Пишем текстовый квест!

Ну вот же оно. Это ли не знак?

Так input(), print(), ну понятно погнали.

Все бы тебе тараканов гонять по монитору, сын. #1 Программирование, Gamedev, Обучение, Python, Разработка, Длиннопост

Значит что имеем:

Все бы тебе тараканов гонять по монитору, сын. #1 Программирование, Gamedev, Обучение, Python, Разработка, Длиннопост

Система боя с критами, блоком, скоростью атаки, уворотом, промахом. — чек
Генерация этажей/мобов — чек
Пассивные способности — чек
Активные способности — чек
Характеристики — чек.
Сохранение/Загрузка — чек
Генерация итемов разной рарности с модами — чек.
Магазин — чек
Состояния (горение, переохлаждение, шок, яд) — чек

Все бы тебе тараканов гонять по монитору, сын. #1 Программирование, Gamedev, Обучение, Python, Разработка, Длиннопост

Все бы тебе тараканов гонять по монитору, сын. #1 Программирование, Gamedev, Обучение, Python, Разработка, Длиннопост

Все бы тебе тараканов гонять по монитору, сын. #1 Программирование, Gamedev, Обучение, Python, Разработка, Длиннопост

Сильно древние ребята создали когда-то башню испытаний, чтобы тренировать и собственно испытывать воинов. Выйти из нее можно было только пройдя все этажи. Всем понравилось, ведь силы полученные в башне, оставались с тобой навсегда. Но с каждым поколением, из башни возвращалось все меньше людей. Стало понятно что башня становится сильней с каждым погибшим в ней воином, она забирает их силу. В какой-то момент люди из башни совсем перестали возвращаться. А последнюю тысячу лет ее и вовсе использовали только чтобы убирать неугодных, и казнить преступников, просто отправив в башню, очень удобно. Вот и от вас решили избавиться.

Играние в игру преимущественно осуществляется посредством нажатия на кнопки принятия решений (зеленая и красная), в зависимости от принятого решения игрок получает очки «безумия» либо очки «хладнокровия». По достижению 20 очков получает статус «Берсерк» либо «Манчкин» соответственно. Каждый статус дает свои плюшки сам по себе (к примеру у Берсерка растет урон при падении хп, а Манчкин с некоторой вероятностью находит дополнительно золото на привалах), количество и качество которых растет с увеличением очков безумия либо хладнокровия. Так же пассивки получают разные бонусы в зависимости от вашего статуса и количества очков.

Бои проходят на автомате, единственное влияние это активные заклинания. У заклинаний имеется ощутимый кулдаун, который в половину величины распространяется на другие заклинания, к примеру «Восстановление» имеет кулдаун 16сек, и соответственно при касте уводит в кд другие скиллы на 8сек . Поэтому тут надо четко прикидывать что и когда кастовать. Алсо заклинания вместо маны жрут ресурс «осколки душ» который также является деньгами.

Все остальное это поиск билда и прокачка характеристик, выбор и прокачка пассивок, выбор активок, и подбор итемов под билд.

Чего не имеем:

Графониум — не чек. Непонятно будет ли. В целом идеи как это реализовать на киви есть, нет особо времени. Возможно займусь после того как закрою остальные моменты. В принципе все сообщения в окне боя: это вызовы опр. функции генерирующей сообщения, при желании можно в нее передавать запрашиваемую анимацию/спрайт.
Интерфейс — не чек.(30%)
Контент — не чек. (пока готовы 10 этажей с боссом)
Сюжетка — пока только в голове(не чек)

Что в планах:

Ограничить количество смертей до 10.
Сделать сохранение платным и доступным только в конце этажа. (цена этаж*20)
Сделать магазин доступным только в конце этажа.
Добавить кристаллы с рандомными перманентными усилениями в магазин, усиление роллится после активации, в момент покупки различаются только силой и ценой.
Добавить несколько активок вызывающих горение, переохлаждение, шок.
Добавить в генерацию предметов мод на +% урон к огню/яду и.т.д.
Добавить несколько пассивок работающих с состояниями.(шансы/сила/доп/эффекты)
Доделать меню создания персонажа(возможно добавить расы с бонусами)
Дорисовать интерфейс.
Окно характеристик, с подробной информацией о персонаже.
Окно развития навыков «Безумия» и «Хладнокровия».
Окно ачивок.(?)
Туториалы и подсказки.
Ладдер таблица(очень далекий план).

Начальник взял в руки лопату⁠ ⁠

Начальник взял в руки лопату I`m CTO bitch, IT, Разработка, IT юмор, Программист, Программирование, Начальство, Fail, Раздолбайство, Стыд, Провал, Web-программирование, Опыт, Истории из жизни, Веб-разработка, Профессиональный юмор

Телеграм канал для тех, кому интересны другие мои приключения руководителя в IT.

Как я написал свою поисковую систему для быстрого поиска личной информации⁠ ⁠

Как я написал свою поисковую систему для быстрого поиска личной информации Поиск, Web-программирование, Программирование, Поисковик, Поисковые системы, Поисковые запросы, IT, Длиннопост, Теги

Предыстория

Все началось с того, что мне стало трудно находить нужную информацию, файлы. Чем больше файлов и папок у меня образовывалось, тем больше времени уходило на поиски нужного. Я понял, что каждый раз искать в бесконечных списках файлов и папок, особенно с условием вложенности это не вариант для больших объемов данных.

Что касается поиска по названию файла, то количество символов, указанных в названии ограниченно и слова при поиске должны быть в строго определенной последовательности. Тем более, если система индексирует другие, не нужные для поиска файла (системные файлы, файлы проектов), то поиск выдает много «мусора».

Поиск по содержанию файла даёт не самый релевантный результат. Может выдать бесполезные результаты с содержанием содержащие ключевые слова, но не относящиеся к тому, что действительно необходимо найти.

Более того по содержанию можно искать только текстовые файлы.

Структура содержания информации

Структура папок представляется собой в виде дерева. Мне это не нравится, потому что каждая папка может содержать только определенные файлы, если не учитывать копирование и ссылки.

Так же это можно представить с примером из реальной жизни, для того, чтобы найти зелёное свежее яблоко сорт «девственный». Необходимо найти отдел с фруктами, затем отдел с яблоками, затем ищем зеленные, затем сорт, ну там ещё их на свежие, не свежие фасуют в этом воображаемом примере и наконец найти нужное apple.

Усложняется ещё все и тем, что я не помню есть ли там вообще яблоки, и если есть, то хранятся ли они в отделе фрукты там продаются.

А почему бы об этом просто не попросить прихвостня(они уже у всех есть, правда?) -«Принеси мне зелёное свежее яблоко».

Как сразу становится удобно!

В общем, всем этим я хочу сказать, что поиск нужной информации в папках хорош, если папок немного и если помнить какие папки существуют, а не перебирать все подряд.

А вот если мы не знаем существуют ли яблоки вообще, то спрашиваем прихвостня:

— «Есть, господин! Сотни, игрушечные, красные, гнилые..».

— «Мне нужно свежее яблоко».

— «Понял! Есть красное свежее яблоко «Сирота», красное свежее яблоко «курага». «.

— «А что насчёт зелёного свежего яблока».

— «Есть! Зелёное свежее яблоко «Пух-тибидух» и Зелёное свежее яблоко «Девственный»».

— «В таком случае, принеси мне, пожалуй, Зелёное свежее яблоко «Девственный»».

Вот последняя фраза как раз таки и стала названием приложения. Как ответ на команду пользователя — «Yes Sir».

Возвращаясь к яблокам. Заметили, что в первом случае нужно искать яблоки не пойми где, а во втором мы задаём уточняющие условия к запросу!?

Как я написал свою поисковую систему для быстрого поиска личной информации Поиск, Web-программирование, Программирование, Поисковик, Поисковые системы, Поисковые запросы, IT, Длиннопост, Теги

Для нахождения нужного результата, используя древовидную структуру(папки) приходится обходить все узлы. А в случае графа(теги) можно получить результат, в лучше случае за проход по единственному узлу.

Приведу пример более реалистичный. Есть папка с музыкой и подпапки для разделения на жанры. Но что если в какой-то момент мне захочется послушать французскую музыку не зависимо от жанра. Вот тут то и вся проблемность древовидной структуры папок вылазит. Можно конечно, как советовали на форумах, создавать отдельные папки под язык произведения и кидать ссылки, но опяяяттть папкии..

А вот, что произойдет, если каждому файлу установить теги с жанром, языком, ну и конечно что это музыка, песня.

В этом случае возможно группировать, сортировать музыку гораздо гибче. Например скомбинировав 3 тега: французская, русская, рок можно получить то, чего стандартными средствами Windows не возможно, ну или я чего-то не знаю.

Попытки найти готовое решение.

Первой идеей было воспользоваться «тегированием» файлов, папок. Таким образом можно искать информацию комбинируя теги, не зависимо от порядка слов. И лучшими приложениями для этого, могу выделить XYplorer и Tagging for windows. Первая из себя представляет отдельный файловый менеджер с опцией тегирования. Второе приложение — дополнение к стандартному файловому менеджеру. Однако они позволяют искать файлы только на ПК и конечно нельзя написать как в Гугл поисковике запрос близкий к пользователю, а алгоритм уже бы сам выбрал из запроса теги и отсортировал информацию по приоритету. В последствии удалил обе, они подвисали и крашились частенько (возможно дело в моих надстройках Windows, не хочу делать антипиар этих отличных программ).

Визуальный поиск

В попытках найти оптимальный способ поиска доходило до странного. Я больше визуал и поэтому загружал изображения более менее подходящее по теме информации в социальную сеть ВКонтакте, а саму информацию сохранял в комментариях под изображениями. Это дало некоторый прирост в скорости поиска и пользоваться можно с любого устройства. Но как вы, наверное, понимаете долго это продолжаться не могло. В конечном итоге я стал задумываться а к какой информации относится это изображение : «Рельсы означает адреса знакомых или желаемые места для путешествия..». Ну а уж то, что под одним изображением образуется портянка из информации без возможности вложенности — это фиаско, бро.

Я подумал, что было бы отлично разработать приложение, которое бы подходило по таким критериям:

1. Можно использовать с любого устройства без возможности подключения к интернету.

2. Поиск личной информации настолько быстро, насколько это возможно.

3. Поиск должен быть простым как Google Search.

4. Возможность сохранить всю текстовую информацию в текстовый файл.

Выбор технологий

1. По первому пункту из желаний было решено разработать веб приложение, так как с любого устройства, на котором есть браузер, можно получить к нему доступ. Данные хранятся в localstorage браузера, но при открытии сайта сразу выгружаются в переменную для обеспечения лучшей скорости.

Для синхронизации данных с другим устройством, браузером я взял базу данных mysql от 000webhost бесплатно, но потом перестал использовать из-за ограничений на обьем.

Сейчас единственный способ для обновления пользовательских данных — импорт и экспорт файла. Однако я делаю это очень редко, тк в основном пользуюсь только со смартфона.

Что касается оффлайн режима — я использовал serviceworking. Необходимо только один раз зайти на сайт, чтобы все ресурсы сайта подгрузились и дальше использовать полностью оффлайн из браузера.

2. Быстрый поиск.

Раз поиск должен осуществляться подобно Гугл поисковику, то нужно чтобы каждое слово из запроса проверялось на существующий из уже созданного блока информации. Таким блоком у меня выступает объект с ключами: уникальное название блока, действие(показать информацию, открыть ссылку..), содержимое, теги.

Итак по ключу «теги» у нас будет храниться массив из символов(слов) для конкретного блока информации.

Сразу возьмём пример блока:

Название: как создать сайт,

Действие: показать информацию,

Содержимое: берём html, добавляем js и украшаем css,

Теги: создание сайта, веб программирование, верстка.

Массив из тегов формируется из текстов полученных с полей ввода для тегов и названия. Каждое слово это тег, разделять можно запятой и пробелом. Была идея конечно сделать как на Ютубе, теги как словосочетания, но я я решил остановиться на более широкой выдаче по ключевым словам.

Из примера блока выше массив тегов будет таким: [«как», «создать», «сайт», «создание», «сайта», «веб» «программирование», «верстка»]

Теперь самое важное — определиться как будет происходить поиск. Первое что пришло в голову это брать каждое слово из поискового запроса и сравнивать с каждым словом из тега каждого блока. В голову как пришло, так и ушло, это отвратительная идея. Следующей идеей было создание объекта, в котором каждый тег это отдельный ключ а значение это массив из индексов блоков.

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

Теперь нужно отсортировать по приоритету. Чем выше результат в выдаче, тем более он подходит запросу. Это я реализовал с помощью количества ключевых слов в запросе, чем больше слов из запроса содержится в массиве тегов блока, тем более блок прионитетнее.

4. И насчёт сохранение в файл совсем кратко. Можно сохранять и импортировать файл в виде json.

Так же мой опыт с использованием ВКонтакте как поисковик по изображениям дал мне идею для возможности добавлять изображение к каждому блоку при желании.

В результате я сделал то, чем пользуюсь уже больше года. Как веб, так и ПК версия оказались очень полезными. Использую для работы и личной жизни. Скорость поиска, которую я в итоге получил меня многократно выручала, когда нужно было найти что-то очень быстро.

Ответвление в другие проекты

Веб приложение мне настолько понравилось, что я захотел написать программу для исполнения программ по команде от запроса пользователя на ПК. Вдохновлённый голосовыми помощниками, я создал программу, которая ищет и исполняет файлы, ссылки на которые сохранены в программе, у которой поиск соответственно так же подобен веб поисковику. Особенность в том, что можно перетащить файл/файлы напрямую в программу и алгоритм автоматически установит теги исходя из названия файла и папок, в которых он содержится. Но это тема другого поста, если этот окажется интересным..

Послесловие

Буду рад любым комментариям. Узнать ваше мнение по поводу идеи. Полная ли это ерунда. Или, в чем я почти не сомневаюсь, есть уже приложения с подобной реализацией.

Ответ на пост «Бесплатно помогаю пикабушникам учить программирование, часть 20: "Как преодолеть синдром самозванца ?"»⁠ ⁠

Хочу поблагодарить Дмитрия, создателя канала @prodigal.son, телеграм-канала https://t.me/LearnRubyForPikabu и тематического чата https://t.me/LearnRubyForPikabuChat за составленный им план обучения на Руби программиста с нуля.

Расскажу немного о себе: 33 года, учился на филолога, потом работал на административных должностях в офисе. В декабре 2021 года наткнулся на пост @prodigal.son о том, что любой человек может самостоятельно научиться программировать на Руби в достаточной степени, чтобы затем получить начальную должность в сфере ИТ.

У каждого есть своя причина начать изучать программирование: кого-то интересует повышение дохода, другого гибкий график и возможность «удалёнки», третьего перспективность карьеры программиста. В моем случае, все эти причины повлияли на то, что с начала 2022 года я начал обучение по плану @prodigal.son. К июлю я дописал свой пет-проект и в начале августа устроился стажёром ROR на удаленной основе в компанию, которая развивает свою платформу на Rails.

Хотел бы дать несколько советом тем, кто также обучается по этому или схожему плану, которые, как я надеюсь, помогут другим на пути к карьере в ИТ.

1. Обязательно выполняйте практические упражнения из книг, и, вообще, чем больше практики программирования у вас будет, тем легче вас дастся старт работы.

2. Постарайтесь не только прочесть, но также усвоить как можно больше учебного материала.

3. Язык Руби очень легко читается и, по моему мнению, дает хорошую базу для дальнейшего изучения других языков программирования. Если вы хотите дальше развиваться и стать, например, дата аналитиком на python или разработчиком игр на C++, то Руби легко научит вас основным концепциям и шаблонам программирования.

4. Если у вас, как и у меня, гуманитарное образование и нет никакого опыта работы в ИТ, то не ждите, что вас сразу примут на должность джуниор разработчика. Конечно, если вы обладаете исключительными навыками, то и это возможно, но в большинстве случаев, будьте готовы к стажировке на протяжении 3 или 6 месяцев, как минимум.

5. Любая стажировка научит вас куда большему, чем самообучение. По своему опыту, чего только стоит понимание, как устроена «внутренняя кухня» и как налажена работа в команде. Каждый работодатель хочет нанять сотрудника, который приступит к выполнению заданий в наикратчайшие сроки, поэтому между самоучками и недавними стажерами, HR отдают предпочтение последним.

Спасибо за ваше внимание и ещё раз спасибо @prodigal.son за крупицы ценного знания, собранные в единый план. Без этого плана, мне бы понадобились годы на обучение и смену карьеры.

Если вы поставили себе целью карьеру в ИТ, то упорный труд и терпение обязательно доведут вас до цели.

Как (не)нужно искать IT-фрилансера⁠ ⁠

Я подрабатываю на бирже фриланса (пишу научные работы на заказ). Параллельно учусь на фронтенд. Попалось как-то раз задание «Зарегистрироваться на фриланс площадках и опубликовать объявление на создание чат-бота». Оплата средняя, ну, думаю, почему бы и не откликнуться на халтурку?

Спустя какое-то время мне пишет заказчик и спрашивает — где я буду публиковать объявления, если он меня выберет. Я дала ему наводку на пару сайтов, и дальше посыпался град вопросов, из которых далеко не все были по теме задания, как, например, могу ли я связываться с заказчиком в зуме и проходила ли я когда-либо онлайн-марафоны по успешному успеху. Я заподозрила неладное и отвечала без особого энтузиазма. Но через час пришло уведомление, что меня выбрали исполнителем. Ну, думаю, ладно, отстреляюсь по-быстрому и получу свои 1,5к.

Во-первых, как оказалось, ТЗ на создание бота существовало только в мыслях заказчика. Я предупредила, что никогда не формировала ТЗ для разработки, и лучше для этого нанять другого человека. На что заказчик уверенно заявил, что там ничего сложного, и что он мне все-все расскажет, а мне просто нужно будет это написать. Окей, попробуем. Полтора часа он рассказывал мне в зуме то, что можно было укоротить в 15 минут. Суть: заказчик сначала сам собрал чат-бот (для телеги) на конструкторе, потом понял, что он тормозит и не справляется с большим потоком людей, и теперь ему нужен специалист, который все переделает или соберет бот с нуля.

Я оформила ТЗ и постаралась передать в нем всю суть, чтобы разработчик на том конце четко понял задачу. Зарегистрировалась на двух площадках, коих, по моему скромному мнению, было достаточно, чтобы найти исполнителя. Создала объявление. Дальше начался цирк с конями.

(З)аказчик: Добавьте еще площадок, две мало.

Я: Эти две — самые популярные и результативные.

Зарегистрировалась еще на четырех полудохлых биржах, создала объявление.

З: Отлично! Теперь составьте таблицу со всеми исполнителями, которые откликаются. Своеобразный рейтинг, параметры на ваше усмотрение.

Параллельно разговаривая с потенциальными исполнителями, вношу их данные в таблицу (4 колонки по типу рейтинга на бирже, отзывам, портфолио и проч.)

З: Добавьте еще колонок для отбора. Как разговаривает, какие стоимость и сроки предлагает.

/примерно через час/

З: Добавьте еще тестовый вопрос, чтобы отсеять тех, кто нам не подходит. Пусть предложат эффективную архитектуру для бота, лучше с подробностями. И еще пусть расскажут, какую бд будут использовать и приведут все плюсы и минусы этой бд. И может еще другие бд посоветуют.

Здесь и далее я уже перестала ждать чего-то адекватного. Просто смотрела на этот кринж дальше.

/еще через пару часов/

Я: Вот есть .krutoy_razrab и .esho_krutoy_razrab. Выбирайте из них.

З: Супер! Но давайте еще повыбираем. Добавьте в таблицу три тестовых задания: разошлите претендентам видео с багами предыдущего бота. Пусть предложат решение этой проблемы. И еще добавьте колонку, согласен ли созваниваться со мной в зуме.

Я: Вы хотите, чтобы потенциальные разработчики фиксили баги бесплатно? Да и на зум вряд ли кто-то согласится, насколько я понимаю.

З: Давайте оставим наш прошлый опыт в прошлом и ориентироваться на наши возможности! Добавьте эти колонки в таблицу и опросите исполнителей.

Никого и ни о чем я не спрашивала и уже начала думать, как отказаться от дальнейшего сотрудничества.

З: И еще, я хочу завтра в 9:15 и в 9:40 созвониться в зуме с двумя потенциальными исполнителями, и провести конкурсную беседу, после чего выберем разработчика для сотрудничества.

Я: Вы изначально хотели выбрать фрилансера-разработчика методом конкурсного отбора с таким количеством этапов?

З: Конечно! А как же искать тех, кто в ресурсе?

И тут меня осенило. Я поискала социальные сети этого заказчика. Нашла, увидела миллион фотографий с Бизнес молодости, Марофонов Успешного успеха, пару инфоцыганских проектов. Закрыла. Вселенная схлопнулась и все встало на свои места.

Сказала заказчику, что не буду дальше с ним работать. Небольшую предоплату оставила себе за написание ТЗ.

Позже он еще попросил вернуть 500 рублей, кстати. А я потеряла по ощущениям 3кг нервных клеток. Перед исполнителями, с которыми я разговаривала, до сих пор немного стыдно.

Ищу доброго человека, с крепкими нервами)⁠ ⁠

Зовут меня Александр , мне 33 года и за плечами у меня 12 лет общепита. Работал на разных позициях начиная с заготовщика до Шеф-повара. Но в силу здоровья и всеми известной болячки, пришлось уйти из этой чудесной сфера деятельности, хотя люблю готовить до безумия.

И собственно стал вопрос, чем же можно заменить тягу к созданию чего то прекрасного . Попробовал себя в маркетинге, но оказалось что вообще не моё. Всегда хотелось что создавать и видеть результат сразу, по этому волна хайпа унесла меня в IT. И вот бывший повар, нашёл свои первые курсы по Front-End разработке, и полетел скорее учиться. Учеба заняла пол года и я её успешно закончил, параллельно самостоятельно изучил React, начал двух метровой палкой тыкать TypeScript, но с ужасом осознал что по факту, всё что я могу создать, это обложка. Да красивая, да интересная но обложка. Стало ясно что для того что бы завершить своё блюдо под названием сайт, нужно учить Бэк.

Дальше было прочитано кучу инфы, просмотрены сутки разных роликов, по поводу выборы языка. Пробовал писать на PHP/NODE.js но всё что то не то. И вот однажды я познакомился Python. Это была любовь с первого взгляда. И само собой я сразу же полетел учить основы языка. Да кто то может сказать что нельзя распыляться, и что не имея опыта свитчиться между языками нет смысла. Но тем не мение , за время изучение основ Питона я узнал очень много новых фишек и подходов, в том же JS-e.

Собственно что я понял исходя из всех курсов и учебы. Что очень важно иметь человека который будет тебя поправлять и направлять в нужном направлении , по этому:

То что знаю на данный момент:

3. Возможно правильно понял ООП

Так о чём пост:

Ищу ментора ( или просто человека который направит на путь истинный) с знанием Python (django). Который поможет выучить django и позволит мне наконец до конца «приготовить», свой первый сайт.

Есть есть кто то кто сможет помочь, отзовитесь. Усидчивости и желания у меня хватит с лихвой, да и отступать уже некуда

Ответ charmag в «График работы и последствия»⁠ ⁠

После окончания универа, тоже думала, вот поработаю пару лет «на дядю» (в мое случае правда тётя была) наберусь опыта в разработке и сопровождении и тоже на фриланс уйду, сама на себя работать буду. Поработала, заработала нервный срыв, ненависть к пользователям, полное отвращение к профессии программиста.

Вообще, в этой профессии разочаровалась. Так как представления о данной работе были совсем иные, не спорю, может быть у тех, кто работает в разработке, да ещё в иностранных компаниях или хотя бы в Мск, всё ништяк. Однако меня жизнь завела в сопровождение и поддержку/доработку 1С т.е. разработка есть, но на минималках. И при этом всём регулярно общаешься с пользователями, решая их проблемы. И по большому счету, вся работа превращается в сплошное решение чьих-то проблем. Там не формируется, тут не выгружается, здесь был Вася, а вот там ошибка. И у всех сраки горят. Сделайте мне большую красную кнопку «Работать» и что б оно всё работало за меня, ТЗ я не дам, сами придумайте, че Вы не программисты што ле? И т.д. просто ааааааа убивать хотелось.

Собиралась идти трусами торговать, а не вот это вот всё. Но в итоге устроилась в другую адекватную компанию. И поняла одну простую вещь, да нахрен мне этот фриланс сдался. Я тут стабильненько с 9.00 до 18.00 поработаю, после 18.00 рабочий телефон в отключу, почту закрываю, и всё никто меня не дергает. Свой оклад я точно получу, хорошо поработаю ещё и премию тоже. И мне не нужно искать заказчиков, общаться с ними на прямую, работать по ненормированному графику, откладывая в сторону свою жизнь и свою семью. Переживать будут ли заказы, всё ли мне оплатят и т.д.

В общем, лично для меня работа в нормальной компании, куда комфортнее фриланса. Потому что на фрилансе я бы получила, тоже самое, что и на первом месте работы. И когда читаешь про то, что кто-то на фрилансе по 30 часов подряд работает, по запарке ест из собачей миски и т.д. Лично мне не понятно, а оно того стоит вообще? Даже если Вы при этом зарабатываете куда больше, если б работали в компании, свободное время на деньги не купишь.

Еще один рассказ про "войти в айти после 30". Продолжение⁠ ⁠

Еще один рассказ про "войти в айти после 30". Продолжение После 30, Веб-разработка, Программирование, Битрикс, Верстка, Курсы программирования, Автобиография, Жизньболь, Перемены, Фриланс, Смена профессии, Длиннопост

Предыстория ( Еще один рассказ про "войти в айти после 30". Предыстория ) закончилась на том, что я продал авто и встал на тернистый путь веб-разработчика. Теперь вкратце о том, как это было)

Какой ключевой навык должен быть у каждого в этой отрасли? Естественно — вёрстка. Понимание, из чего состоит страница и как управлять её внешним видом — это как дышать. Даже при разработке бэка, хотя при этом не обязательно быть супер-верстальщиком.
Я долгое время перебирал ютуб, искал контент, подходящий для начинающего и желательно содержащий весь цикл вёрстки, от создания index.html до написания последнего стиля в мобильной версии футера.
Проблема была в том, что материала крайне много, но большая часть либо устаревшая, либо сделана на пофиг, либо содержит какие-то обрывочные куски информации, не дающие полную картину происходящего на экране.

Но вот, спустя некоторое время, был найден айтишный канал с прошлогодним курсом по вёрстке. Там было всё, от настройки редактора и нарезки макета до его завершения. Скриптовую часть правда писали на jquery да и там брали готовые решения, без особых пояснений, но это было не главное, так как на старте важно понять и научиться писать разметку и стили. Мне очень зашёл формат подачи материала, поэтому данный видеокурс стал моим основным средством обучения на ближайший месяц.
Да, именно на месяц, хотя можно было и сильно быстрее, но я учился только по вечерам и не каждый день.

Закончив курс, я решил получить какую-нибудь практику на фрилансе. и обломался) Там нужен был опыт и примеры работ, хотя суммы оплаты копеечные. Тогда я поставил себе цель сверстать три макета для портфолио и повторить попытку.
Один макет я нашёл в сети, два других скачал там же на фриланс-бирже, взяв из реальных задач)
JavaScript я тогда не знал совсем, но меня выручил Bootstrap. Всякие модальные окна и выпадающие меню на нём можно делать и без знания кода.
Вёрстка макетов заняла ещё недели две-три. В это же время я передал все дела на работе и окончательно уволился.

И вот, середина сентября 2019г.
Я, такой радостный, зарегался на 6-7 фриланс биржах, разместил там свои «проекты» и начал усиленно оставлять отклики на все заказы, которые подходили под мой уровень знаний или не сильно превышали его.
Только вот хрен)) Никто не давал мне работу.
Каждое утро у меня начиналось с того, что я открывал все биржи, оставлял отклики и садился за учёбу. Также в обед и вечером.
Результат был нулевой.

Недели через полторы-две я начал впадать в уныние и думать, что всё, надо искать нормальную работу, но вдруг случилось чудо) Мне ответил один из заказчиков и я получил символический заказ по правке вёрстки на сайте. Цена работы была — 700 рублей. Я сделал это за один вечер, на следующее утро этот же заказчик предложил мне поправить кое что в скриптах. Я согласился, хотя и боялся, что не справлюсь.
В общем, на моё счастье, сайт верстал тоже джун, который везде использовал бутстрап, либо говнокодил на jquery. Я не сразу, но нашёл нужный участок кода, внёс необходимые правки и счастливый сдал работу, за которую, в общей сложности, получил вроде бы 1200р.

Это были копейки, но сам факт, что я способен что-то делать невероятно поднял мой боевой дух и я продолжил штурмовать биржи.
Потом был ещё один заказ на вёрстку полноценного лендинга, потом ещё один такой же.

Я на каждой выполняемой задаче старался чему-то учиться. Пытался сам писать скрипты модальных окон и мобильных меню, пробовал делать табы и аккордеоны. В общем все эти мелочи, которые вроде умеет бутстрап, но хотелось бы научиться самому, так как кастомизация своего кода и своей вёрстки намного проще, чем готовой библиотеки.
Но в плане дохода всё было очень грустно. Я получал заказ не чаще одного раза в неделю, зарабатывал на нём в среднем 3000-4000, 25 процентов из которых съедала комиссия биржи и комиссия за вывод денег оттуда.

Первые месяца полтора после моего старта в айти, мы с женой жили на её зарплату и остатки моей. Следующий месяц кое как только на её ЗП и микроскопический доход с фриланса.

Потом мне пришлось устроится на подработку. Я нашёл вакансию мерчендайзера в местном гипермаркете. Зарплата 13-15к, гибкий график, неполный рабочий день.
Теперь мои будни выглядели так — с утра поиск заказов и учёба, после обеда поход на работу в гипермаркет, выкладка всякого товара в течение 2-4 часов и обратно домой за комп.

Короче, было тяжело и хреново. Но, проходя через всё это дерьмо, я получал практический опыт в вёрстке и джаваскрипте.

Учёба была моим основным времяпрепровождением. Чтение учебника по js и говнокод в песочнице. Чуть-чуть пхп, так как заказчики обычно хотели чтоб формы с сайта отправляли им куда-то письма. Я скачал для этого какой-то готовый скрипт, но толком не понимал как оно всё работает.

Пытался изучить что-то из трёх китов фронтенда — Реакт, Ангуляр, Вью. Но на тот момент познания в js были очень слабыми, так что это было плохой идеей.
Вью мне не понравился в целом, Ангуляр я просто не осилил, а вот Реакт внезапно зашёл. Я какое-то время копался в доках, что-то пытался писать в своих песочницах, а потом даже запилил два небольших заказа на фрилансе. По сути это были интерактивные квизы вопрос-ответ. Заказчику было пофиг, а я немного попрактиковался)) Но на этом всё. В основном везде нужны были Senior React Developer, но я под эти критерии не подходил никак. Так что реакт отошёл на второй план.

Между делом, я мониторил hh.ru и авито, периодически оставляя отклики на вакансии и пытаясь устроиться на постоянную работу. Безуспешно.
Как-то так прошли первые 6-8 месяцев вхождения в айти.

А потом какой-то китаец поел говна летучей мыши и началась пандемия)

Как ни странно, для меня это сыграло положительную роль, так как все ушли на удалёнку, начали переносить продажи в онлайн и всячески приводить в порядок свои сайты.
Один клиент с фриланса перешёл со мной на прямое сотрудничество, минуя биржу, и я начал пилить ему собственный многостраничный сайт, с кучей джаваскрипта и анимаций. Это был офигенный опыт, хотя и через огромный стресс, потому что я всё время боялся облажаться и не вытянуть какую-либо задачу)
Помимо этого я делал какие-то одностраничники и, через знакомых, на меня вышел ещё один клиент с сайтом на WordPress. Им часто нужны были доработки, вёрстка новых страниц и всякие мелкие правки.

Примерно через месяц после начала карантина я уволился с подработки, так как работы по вёрстке стало реально много и я не успевал. Но, к сожалению, длилось это всего 3-4 месяца, а потом пошло на спад и вернулось к 1-2 небольшим заказам в неделю.

Вот тогда я снова решил устроится на работу. Но блин, даже с небольшим портфолио и некоторым опытом в боевых проектах, мне везде отказывали или игнорили. Но в этот раз я решил пойти до конца и всё таки устроился. Программистом-стажёром 1С)))

Стандартная история — компания-франчайзи набирает нулевых стажёров и учит их работе с 1С. Кто-то потом уходит в кодеры, кто-то в консультанты, кто-то увольняется. В моей группе изначально было 7 человек. Четверо отвалились на этапе обучения, ещё один через пару месяцев. Двое, один из которых я, прошли обучение и испытательный срок.
Я пытался изучать бухучёт и всякие конфигурации 1С, но шло не очень, если честно.

Помогло удачное стечение обстоятельств. В компании, где я работал существовали и отделы по веб-разработке, но не в моём убогом городке, к сожалению.
Как-то раз в один из таких отделов, потребовался дополнительный сотрудник на некоторое время, пока свой штат не справлялся.
Я на собеседовании говорил, что занимался сайтами, поэтому мой руководитель предложила мне попробовать. Отказываться было глупо. и понеслось. Вёрстка, пхп, битрикс, вордпресс, базы данных. Обучение, обучение, обучение.

Мне недоставало опыта в разработке, но я ко всему подходил ответственно и старался делать задачи максимально качественно, по мере своих возможностей, поэтому веб-отделы других городов стали часто прибегать к моей помощи. По сути я вообще стал всё время работать на них, хотя числился 1С-ником.
Так прошло ещё примерно полгода и мне предложили на фуллтайм перейти в отдел веб-разработки в другом филиале, работая удалённо из своего города.

Там я работаю и по сей день. С момента старта моего обучения вёрстке до текущего момента прошло примерно 1 год и 9-10 месяцев. Уровень дохода сейчас +- как обещает реклама айти курсов))

В последний месяц я снова подсел на реакт. Пилю на нём пет проект, параллельно изучая серверный js. Планирую, в обозримом будущем, полностью уйти в продвинутый фронтенд и бэк на js. Что из этого выйдет — жизнь покажет.

Чем плох Python?

Просьба к Python-хейтерам — вы можете адекватно и по пунктам сформулировать, чем он плох? Чем он хуже по сравнению с Perl, Ruby, Javascript, другими подобными языками?

Не являюсь питоно-хейтером, сам на нём даже не пишу, самое значительное из плохого — стандартная реализация очень медленная.

Ruby намного более логичный и консистентный. Всё в стандартной библиотеке устроено понятным, удобным и запоминающимся образом.

На Питоне это просто какое-то постоянное приключение «угадай, что!».

У меня похожие впечатления были только от php. Там тоже автор следовал пути сделать всё не как у всех.

Ну одно другому не мешает. Когда надо — пишем, когда бесит — хейтим.

Чем он хуже по сравнению с Perl, Ruby, Javascript

Ничем. И ничем не лучше.

Алсо, мои темы минуток ненависти к питону:

Ну и конечно не могу не порекомендовать https://www.linux.org.ru/people/rsync/ как источник лулзов по сабжу.

Лучше перла, ибо живой.

Перл переживает не лучшие времена, но он тоже живой. В Tiobe он посередине между руби и матлабом

Тоже не пишу, но язык пытались делать простой, что может выйти боком. Отступы как часть синтаксиса, например.

В Tiobe он посередине между руби и матлабом

Не являюсь питоно-хейтером, сам на нём даже не пишу, самое значительное из плохого — стандартная реализация очень медленная

https://habr.com/ru/post/481782/ — это мой обзор проблем питона касательно одной только производительности и поддерживаемости. То есть, даже без анализа всяких сахарков и «лямбды некрасивые». Причем, большинство из этих проблем нерешаемы без переписывания языка со стандартной библиотекой заново. Собственно, с развитием того же asyncio появилась необходимость половину стандартной либы переписывать.

Я уже оставил попытки даже размышлений о том, что можно было бы как-то обычный питон сделать лучше — нет, это невозможно, потому что получится абсолютно другой язык с другой библиотекой, а весь смысл пользования питоном заключается исключительно в билиотеках, стандартных и не только. Потому что в остальном язык — говно, и можно говорить о том, что вместе со своей стандартной либой по сложности он сравним с C++ и его стандартной либой. Легко и просто он выглядит только на хелло ворлдах, по мере роста сложности кода очень быстро выясняется, что фичи языка и библиотеки, как правило, логически слабо не связаны друг с другом и плохо комбинируются. То есть, библиотеку нельзя понять — ее можно только запомнить.

Я здесь еще раз подчеркиваю, что CPython = стандартная библиотека, потому что сам по себе язык, как голый синтаксис без семантики, представляет собой абстрактное ничто, на котором не удастся написать даже хелло ворлд.

Да, в какой-то момент времени Гвидо и ко поняли, что такое положение никуда не годится, и придумали механизм PEP для стандартизации библиотеки. Но в итоге в последнее время PEP сводятся к бесконечному добавлению новых фич, не согласующихся со старыми.

В фундаменте этой проблемы лежит тот самый тезис, который я процитировал: у питона низкая скорость выполнения, и сделать с этим ничего не получается. Эта проблема была подперта одним специальным костылем. потом вторым, потом тысячным — и в итоге мы имеем целую стандартную библиотеку из сплошных костылей, которые на самом деле пытаются обойти единственную проблему — невозможность написать быстрый переиспользуемый алгоритм на самом питоне. 60% стандартной библиотеки написано на сишке именно по этой причине — это я считал без учета самого компилятора-интерпретатора.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *