Сообщество - Программирование на python
Добавить пост
351 пост 9 713 подписчиков

Популярные теги в сообществе:

11

Стандарт де факто — git. Давно ли?

Stackoverflow с 2011 года проводит масштабные опросы разработчиков. В 2022 году в stackoverflow developer survey участвовало более 70к человек из 180 стран. Из-за большого числа участников получаются репрезентативные данные — какие технологии в трендах, куда в целом индустрия плывёт.


Сейчас лидер среди систем контроля версий (СКВ) де-факто Git со своими 97% среди профессиональных разработчиков. Можно выбирать несколько, поэтому сумма больше 100%.

Стандарт де факто — git. Давно ли? Программирование, Разработка, IT, Обучение, Telegram, Git, Python, Stack overflow, Длиннопост

Если переключиться на ответы начинающих разработчиков (скрин ниже), то SVN с 6% падает до 1.5%. Значит, через 3-5 лет в индустрию придут новые разработчики, которые не знакомы с SVN. Кстати, если вы не пользуетесь СКВ, то вы либо в 1.38% профессиональных разработчиков, либо среди 17% новичков. Учите git, любите git.

Ну, и меркуриал почти умер.

Стандарт де факто — git. Давно ли? Программирование, Разработка, IT, Обучение, Telegram, Git, Python, Stack overflow, Длиннопост

А зачем знать тренды? Чтобы не тратить время на умирающий инструмент. Например, какую систему контроля версий посоветовать начинающему разработчику. Вики насчитывает более 30 СКВ. И git был с нами не всегда.


Нашёл для вас опрос 2008 года, где лидер Subversion, скрин ниже. К сожалению, ни числа опрашиваемых, ни процентов у каждой из систем не указано. Тем не менее, git тут и не пахнет, а до настоящего времени дожили №1 SVN и №3 TFVC (они себя сейчас так называют).

Стандарт де факто — git. Давно ли? Программирование, Разработка, IT, Обучение, Telegram, Git, Python, Stack overflow, Длиннопост

В 2014 году на хабре был опрос по СКВ. Результат на скрине ниже — 71% был за git, 32% за SVN, 16% за mercurial, 8% за TFVC от Microsoft.

Стандарт де факто — git. Давно ли? Программирование, Разработка, IT, Обучение, Telegram, Git, Python, Stack overflow, Длиннопост

Так вот git пришёл, запушил, победил. Не исключено, что во многом из-за популярности github.


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

Показать полностью 3
30

Войти в IT за 365 дней. Дни #45-51

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

Войти в IT за 365 дней. Дни #45-51 Программирование, IT, Python, Обучение, YouTube, Дневник, Видео, Длиннопост

Ребята живы-здоровы, все трое учатся, с перегревом мозга до сих пор никто в Кащенко не отъехал. Задержка с публикацией была на моей стороне, но сейчас всё наверстаем. Контента в ближайшее время будет много)


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

Юрий

Программа "Анти-прокрастинация" - хорошее лекарство для тех, кто любит тратить время впустую. С её помощью можно наглядно увидеть, сколько времени тратится на то или иное занятие в масштабах месяца или года.

Андрей

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


В общем, недавно Андрей написал шахматы на Питоне.

Денис

"Красивым должен быть не только код, но и карты в игре Блэкджек" - вот девиз сегодняшнего выпуска)


Осторожно: в видео есть спойлеры кода! Если не хотите их видеть, то можно завесить тряпочкой левую сторону экрана.

Показать полностью 3
15

Разбор решений к задаче "Мы уже приехали?"

В прошлом посте мы с вами решали задачку, в которой уже можно показать свой скилл. А ещё в ней можно допустить целую тучу ошибок, что и было благополучно сделано :)


Несколько смельчаков согласились предоставить свой код на всеобщее обозрение. @Marayg, @Amplicon, @Kalt29, @i153.chayka, подъехал обещанный разбор кода!

Разбор решений к задаче "Мы уже приехали?" Обучение, Python, Программирование, IT, Задача

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

Так что закинул всё на YtYt. Есть нормальное форматирование, можно сразу запускать примеры кода. Если у кого-то припечёт от того, что я даю ссылки на свою платформу - ну сорян, ребята, мы с коллегами не для того потратили 4 часа на разбор кода и подготовку поста, чтобы потом выкладывать нечитаемую кашу)

Показать полностью

Ищу понятный туториал по работе с VPN и управление им через Python

Товарищи, добрый день. Помогите, пожалуйста, может быть есть опыт.

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


Сижу под виндой 11, приложение скачал с оф сайта, используемая библиотека openvpn_api.vpn.

Но что-то пока безуспешно. Не могу даже подключиться. Гуглёж не дал толку.


Плиз, подскажите.

39

Задача по Python #5: мы уже приехали?

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


А теперь серьёзно. Сложность задачи: легко.

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

Задача по Python #5: мы уже приехали? Python, Обучение, Программирование, IT, Задача

Текст задачи

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


Примечание: поезд может прибыть уже на следующий день, например, отбыть в 22:00, а прибыть в 00:45.

Входные данные

На вход функция принимает два аргумента:

- время отправления;

- время в пути.


Время - это строка в формате «HH:MM», где «HH» - время в часах, а «ММ» – время в минутах.

Примеры

Задача по Python #5: мы уже приехали? Python, Обучение, Программирование, IT, Задача

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

Автотесты

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

Показать полностью 1
9

А тут в чём проблема?

Четвёртый день воюю с третьей лекцией курса CS50. Вернее, с их IDE, которая не даёт скомпилировать программу. А ведь хотел по несколько лекций в день пролетать!


По сути, я пытаюсь повторить всё, что вижу на экране, дабы запомнить значения строк и спецсимволов. Но вот эта вещь повторяться отказывается. Программа является дальнейшим развитием Hello, World, только теперь мы приветствуем не мир, а самого себя, включив строковую переменную, аргумент которой вводится пользователем.

А тут в чём проблема? Ошибка, C++, IDE, Программирование, Проблема, Языки программирования, Терминал, Длиннопост

Команда GetString за эти годы превратилась в get_string, если верить мануалу и отзывам других пользователей, проходивших этот курс, которые не смогли повторить эту программу.

А тут в чём проблема? Ошибка, C++, IDE, Программирование, Проблема, Языки программирования, Терминал, Длиннопост

Ладно-хорошо, так и напишем. Однако при компиляции терминал выдал неясную ошибку.

А тут в чём проблема? Ошибка, C++, IDE, Программирование, Проблема, Языки программирования, Терминал, Длиннопост

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


Интереса ради ввёл старую версию GetString(), но понятное дело, что в <cs50.h> её больше нет.

А тут в чём проблема? Ошибка, C++, IDE, Программирование, Проблема, Языки программирования, Терминал, Длиннопост

Снова подался в эксперименты с синтаксисом - GetStr, get_str, getstring, Get_String, и тому подобное. Не, нихуа! Только я вознадеялся, что их IDE нормально заработала, позволив скомпилировать Hello, World, как со следующих упражнений всё снова посыпалось...


Upd. Спасибо, разобрались!

А тут в чём проблема? Ошибка, C++, IDE, Программирование, Проблема, Языки программирования, Терминал, Длиннопост
Показать полностью 5
167

Ответ на пост «ИТ Пузырь»

Прочитал пост и 200+ комментов, которые на сейчас есть. Вроде никто не указан на важное — реально выросла потребность в разработчиках. Это одна из причин драйва зарплат — конкуренция работодателя за кадры, т.к. предложение меньше спроса.


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


А дальше проблема — никто не умеет поточно готовить крутых специалистов. Программы в институтах устаревают ещё к моменту формирования. Технологии быстро изменяются. Хороший разработчик, став преподавателем, быстро теряет технический скилл и отстаёт от рынка. Более того, нередко хороший разработчик не является хорошим педагогом, потому что это совсем другая область деятельности. Уметь донести материал, уметь построить лекцию, уметь проверить знания (в условиях, когда студенты всеми силами пытаются халявить) сложно.


Условно, middle python разработчик решил пойти преподавать. У него года два или три займёт получить опыт преподавателя, и, возможно, он станет хорошим преподавателем. Но он уже на 2-3 года устарел по технологиям. Да, изменилось не всё. У нас всё ещё семиуровневая модель в интернете. Но всё поменялось вокруг.


И зарплаты у преподавателей такие себе. Например, возьмём топ технических вузов. Пусть будет №13 по рейтингу — МИРЭА. Смотрим их зарплаты — старший преподаватель до 30 лет будет получать 127к в месяц. Это 110к на руки. А после 31 года уменьшится стимулирующая надбавка за молодость и зп упадёт до 107к (93к на руки). Вспомним рейтинг зарплат с хабра за 1 полугодие 2022 года? Медианная зарплата разработчика в Москве 180к.


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


Большой спрос на ИТ-специалистов пытаются закрыть платные курсы. Типа вместо полезной математики и кучи бесполезного типа философии в институте мы даём только профильное, поэтому и в срок до года можно уложиться. Но, к сожалению, высокая цена не является гарантией качества. Более того, посмотрите вакансии спецов, которых набирают на курсы для code review или преподавания. Там опять зарплаты ниже, чем у разработчиков. Что в результате? В среднем мы имеем либо совсем инфоцыганские курсы, либо дорогие курсы со средним материалом. Я сейчас про курс "с нуля до middle", с ними основные проблемы. Есть исключения. Например, есть небольшие курсы по отдельным технологиям, которые вполне могут быть оправданы.


Институты и хорошие курсы (платные или бесплатные) держатся на тех активистах, которые и разработку продолжают, и хотят делиться знаниями. Если знаете таких активистов, скажите им спасибо :)


При этом требуемый уровень знаний в разработке (хотя бы по количеству инструментов) продолжает расти. Люди, которые идут в ИТ за зарплатами не представляют, как много требуется сил и времени на постоянную актуализацию знаний.


А ещё растёт потребность в управленческих должностях (team lead и прочие ребята). С их подготовкой вообще ужас — им нужен опыт управления людьми. А где его взять? Как создать условия, чтобы после института/курса на выходе был team lead с реальным опытом руководства несколькими командами? Переквалификация разработчиков в team lead имеет кучу неприятных побочных эффектов. Разработчик привык управлять послушным компьютером, а тут непослушные и недетерминированные люди. Ужас.


Даже область HR стагнирует. Они совсем не умеют подбирать кадры.


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


Излил я вам свою боль о современном состоянии подготовки новых кадров в разработке. Есть ли у вас идеи, как ситуацию починить?


Что сделал я для исправления ситуации? В телеграмм-канале devfm разбираем разные нюансы из жизни разработчика на Python и не только. Стримы по программированию, что такое WSGI, как спроектировать сервис, чему стоит научиться в вузе. По пятницам у нас культурный код с фильмами, книгами и всяким разным.

Показать полностью
313

ООП сейчас не все используют

Случайно наткнулся на такой комментарий

ООП сейчас не все используют Обучение, Программирование, Разработка, IT, Telegram, Python

И прямо полыхнуло.


Где в трёх принципах ООП (наследование, инкапсуляция, полиморфизм) есть что-то про сеттеры, геттеры и деструкторы?


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


Сейчас в трёх китах ООП логика такая:

1. инкапсуляция — это объединение данных (называемых полями или атрибутами) и функций для работы с ними (называемых методами),

2. наследование — возможность породить класс из существующего, взяв себе все поля и методы,

3. полиморфизм — это возможность взаимозаменять объекты в рамках иерархии.


Давайте на примере. У нас собака - это сложная такая штука. Но всю сложность на себя берёт программист, который реализовал класс Собака. У нас есть поля (например, количество лап), есть методы (например, бежать). Вы можете сказать собака.бежать(), при этом внутреннее устройство собаки вас не интересует - в этом смысл инкапсуляции. Некоторые ошибочно говорят про "сокрытие" и начинают про private-public-protected, но этого не требуется. Поэтому, например, в python нет сокрытия, а инкапсуляция всё ещё есть.


Дальше. Мы создали Собаку. Теперь хотим Чихуахуа. Чтобы не переписывать общие места, у нас есть наследование. Мы создаём Чихуахуа(Собака), то есть наследуемся от неё. Теперь мы можем переписать только отличающиеся места (например, изменить метод Бежать так, чтобы Чихуахуа ещё противно шкрябала когтями).


И третье - полиморфизм. Это когда мы можем сделать много собак, и для каждой собаки вызвать метод собака.бежать(). В зависимости от типа собаки (Собака или Чихуахуа) у нас будет вызван нужный метод бежать. То есть на питоне


# создадим пару очаровательных собак
dog_party = [ Dog(), Сhihuahua() ]
# пройдёмся циклом по всем собакам
for dog in dog_party:
.  # у каждой собаки вызовем свой метод бежать
dog.run()
И тогда все собаки из dog_party побегут как умеют. Такие дела.


PS: некоторые относят к китам ООП ещё и абстракцию "для выделения в моделируемом предмете важного для решения конкретной задачи по предмету" (вики). Тут у меня вопрос. Вообще всё программирование состоит в выделении важного и игнорировании неважного независимо от парадигмы. Причём тут ООП? А если мы говорим о выделении сущности собаки в виде полей, то это свойство называется инкапсуляция.


В телеграмм-канале devfm разбираем разные нюансы из жизни разработчика на Python и не только — python, bash, linux, тесты, командную разработку.

Показать полностью
Отличная работа, все прочитано!