Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Отправляйся в Скайдом — волшебную страну, парящую высоко в небе среди пушистых облаков! Всё вокруг сияет яркими красками, а в самом сердце этого чудесного мира тебя ждет увлекательная арена, где можно с удовольствием и пользой провести время, собирая ряды из одинаковых элементов.

Скайдом: три в ряд

Три в ряд, Головоломки, Казуальные

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
187
Amigo667
Amigo667
Программирование на python

Войти в IT⁠⁠

2 года назад

Привет, пикабутяне!! Работал 6 лет системным администратором, сейчас 1с программистом уже лет 10 примерно, и надоело. Нет никакой законченности, нет такого что закончил интересный проект и вздохнул, вечно звонки, вечно исправления в прошлом периоде. А эти печатные формочки, которые надо менять/добавлять по несколько раз в месяц... А ведь всегда тянуло к компам и программированию, а тут стало надоедать, потерял интерес.

И решил переквалифицироваться в "настоящего" программиста. Не знаю получится или нет, тем более в 43 года, но постараюсь. Начал изучать книгу PyQt5.

Войти в IT

Вроде все понятно, написал пару мелких программок типа игры Быки-коровы для десктопа. Еще обучающие видео смотрю по алгоритмам, докерам, Гит и остальному. Информации конечно очень много, но интересно. Думаю над пэт-проектом, наверно будет что-то вроде домашних финансов, что бы и в браузере и на пк и на мобиле. Хотя так много наверно не потяну, но хотя бы начну, да и интересно это.

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

Пожелайте удачи, ну и советов покидайте.

Показать полностью 1
[моё] Обучение Python Программирование IT
173
186
anetto1502
anetto1502
Программирование на python

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

3 года назад

Прочитал пост и 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, как спроектировать сервис, чему стоит научиться в вузе. По пятницам у нас культурный код с фильмами, книгами и всяким разным.

Показать полностью
[моё] IT Собеседование Профессия Длиннопост Telegram Обучение Разработка Программирование Преподаватель Python Ответ на пост Текст
196
184

Небезопасный контент (18+)

Авторизуйтесь или зарегистрируйтесь для просмотра

Jeevoder
Jeevoder

немного эротики⁠⁠

11 лет назад
сны программиста
немного эротики
18+ Программирование Python Body
26
183
skaynet25022022
skaynet25022022
Книжная лига

Обзор книги "Программирование на Python для начинающих", худшая книга для начинающих с нуля⁠⁠

3 года назад

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


Публикую обзор книги  "Программирование на Python для начинающих".

Автор книги Майк МакГрат.

Стоит читать? Нет! Почему? Опишу в статье

.

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


Для кого эта книга?

Исходя из названия, книга рассчитана на начинающих программистов, тех людей, что только начинают свой путь.

Рис.1. Начальная страница


Что в самой книге?

Сама по себе книга относительно небольшая, состоит из 191 страницы.

Провожу масштабное сравнение размеров книги с обычной канцелярской ручкой.

Рис.1.1. Размер книги

Рис.1.2. Размер книги


Что мы сможем узнать нового и изучить на протяжении 191 страницы?

Предлагаю вам ознакомиться с оглавлением данной книги.

Рис.1.4. Оглавление


Книга состоит из 10 глав. Далее кратко и главное предметно постараюсь рассказать о том, что есть интересного и "полезного" в книге.


В самой первой главе автор начинает с краткого введения и рассмотрения следующих подтем.

<!---->- Введение в язык Python

- Установка Python в средах Windows и Linux

- Что такое интерпретатор и как с ним работать

- Первая программа

Рис.2. Глава 1


В начале главы автор начинает с рассмотрения истории языка программирования Python и рассмотрения положительных сторон данного языка.

Рис.2.1 Глава 1

Рис.2.2 Глава 1


Далее автор рассматривает процесс установки Python. Что лично мне понравилось, лаконичное и краткое описание каждого пункта с соответствующими скриншотами интерфейса. Лишним для начинающих подобное точно не будет. Идём дальше.


Вторая глава начинается с рассмотрения арифметических действий в Python , постепенно переходя к сравнению величин.

Рис.3. Глава 2


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


Тернарный оператор - это оператор, что принимает три операнда, похож данный оператор на оператор if-else, но при всем этом он обязательно возвращает значение.


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

Рис.3.1. Глава 2


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

Рис.3.2 Глава 2


В третьей главе мы начинаем встречать основную проблематику данной книги - опечатки и вследствие чего нерабочий код.


На странице 50, автор описывает что такое кортеж и приводит следующий код, но основная проблема данного кода в том, что он не работает.

Рис.4. Глава 3


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

Рис.4.1. Глава 4


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

Рис.4.2 Глава 4. Как должен выглядеть корректный код с использованием нижнего подчеркивания


Идём далее. На странице 54 автор начинает рассматриваем использование условного оператора и особенно подчеркивает важность отступов при его использовании, но что мы видим далее на примерах кода в книге, понять трудно)

Рис.4.3 Глава 4.


Корректно код с использованием условного оператора пишется следующим образом, с отступом:

Рис.4.4 Глава 4 - Корректный код


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


Одна из основных проблем данной книги, это повсеместные ошибки в коде.

Рис.4.4 Глава 4 - Примеры кода с отсутствием необходимых для полноценной работы отступов.

Рис.4.5 Глава 4 - Примеры кода с отсутствием необходимых для полноценной работы отступов.


Как видим, об отступах тут давно забыто.


С такими ошибками книга явно не подходит для начинающих программировать с нуля.


Исходя из того, что книга не является полезной и интересной для начинающих и из уважения к времени моих читателей, предлагаю на последок вам взглянуть на главу 8 под названием "Обработка запросов".


Честно, думал, что удивить у автора вряд ли получится, но получилось.

Предлагаю взглянуть на страницы 138-139

Рис.5. Глава 8


Если же быть точнее, прошу обратить внимание на следующий фрагмент:

Рис.5.1 Глава 8


Тут мы с вами видим просто принты HTML-тегов. Ни HTML-файла, что мы считываем и выводим содержимое, ни шаблонизатора, ничего, просто принты с тегами)


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


Теперь, тезисно о плюсах и минусах книги


Плюсы книги:


1.Цена

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

Рис.6. Цена книги на Ozon

Рис.6.1. Цена книги на WildBerries


Как видим, цена более чем доступная и не превышает 1000 рублей.


2.Качество изготовления книги.

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


На этом плюсы книги заканчиваются.


Минусы книги.

1.Часто встречающиеся ошибки в коде.

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


2.Не всегда логичная структура материала.

Примером этого служит рассмотрение тернарного оператора до рассмотрения простых условных операторов. Таких примеров преждевременной (для начинающих) информации в книги к сожалению достаточно.


Подведение итогов по книге:

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


Книга богата на ошибки в примерах кода и неточности.


Сэкономьте собственное время, нервы и деньги и проходите данную книгу стороной.


Мой канал в телеграмм

Если обзор показался вам интересным, то буду благодарен за подписку на мой

канал IT-старт t.me/it_begin

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

Электронной бесплатной версии книги в открытом доступе не нашёл, но оно и к лучшему)

Также публикую обзоры книг и интервью на сайте https://russia-it.ru

Показать полностью 22
[моё] Python Программирование Программист IT Обучение Windows Linux Обзор книг Обзор Разработка Рецензия Длиннопост
63
180
shultais
shultais
Программирование на python

8 книг по Python для новичков в 2023 году⁠⁠

2 года назад

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

Итак, список книг по Питону с кратким описанием для тех кто не хочет смотреть видео:

1. Начинаем программировать на Python, 5-издание (Тони Гэддис)

1/5

Одна из лучших книг по Python с хорошими объяснениями, понятными схемами и интересными заданиями.

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

Последние две главы посвящены созданию программ с графическим интерфейсом на Tkinter и работе с базами данных и SQL.

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

Из минусов: в книге плохой переплет (у некоторых читателей начали выпадать страницы).

2. Изучаем программирование с примерами на Python (Эрик Фримен)

1/7

Нестандартная и веселая книга по программированию. Как и в предыдущей, тут хорошие примеры и объяснения, а также много схем, которые в подробностях раскрывают сложные концепции программирования.

В процессе чтения вам будет предложено написать несколько небольших проектов, включая программу для отслеживания координат МКС и игру "Жизнь".

3. Знакомство с Python (Дэн Бейдер)

Лаконичное руководство по Python от автора книги "Чистый Python" и проекта RealPython. Хорошее и плавное погружение в Питон с разбором полезных библиотек: включая обработку CSV файлов, установку пакетов с помощью pip, работу с PDF, знакомство с базами данных, парсинг сайтов, научные вычисления в NumPy и создание приложений с графическим интерфейсом.

Книга не сильно глубокая, но как старт в программирование на Python вполне хороша.

4. Python – это просто (Нилаб Нисчал)

1/5

Книга для тех, кто хочет вкатиться в аналитику на Python. Все примеры приводятся на базе Jupyter Notebook. Сам Python освещается не сильно глубоко, но зато в книге много про Pandas, Numpy, Matplotlib и другие средства аналитики.

Книга написана практикующим аналитиком и маркетологом.

5. Изучаем Python (Эрик Мэтиз)

Еще одна книга для начинающих программистов. Первая часть посвящена питону, включая ООП, исключения и тестирование, а вторая содержит три проекта:

  1. Создание игры.

  2. Визуализация данных на базе matplotlib.

  3. Разработка сайта на Django.

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

Скрин игры "Инопланетное вторжение"

Скрин игры "Инопланетное вторжение"

6. Python без проблем (Даниэль Зингаро)

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

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

7. Автоматизация рутинных задач с помощью Python (Эл Свейгарт)

1/2

Книга для тех, кто хочет с помощью Python решать повседневные прикладные задачи. Питон тут раскрывается не сильно глубоко, но если вам нужно автоматизировать обработку CSV-файлов и изображений, вытащить данные из Excel файлов, отправить информацию в Google таблицы, сделать email-рассылку и тд. то книга поможет.

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

8. Программирование на Python в примерах и задачах (Васильев А. Н.)

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

Подойдет студентам технических ВУЗов, которые хотят быстро включиться в Python.

9. Другие книги

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

Какую из книг вы читали?
Всего голосов:
Показать полностью 24 1
Опрос Python Программирование Книги Видео YouTube Длиннопост
32
173
hivetyrant
hivetyrant

Тайна @artjockey или ИИ идет по следу (Часть 2)⁠⁠

1 год назад

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

И обращение к модераторам: никого я тут не оскорбляю, правил не нарушаю - новостей здесь нет никаких.

Я за работой )

Я за работой )

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

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

Только что мы описали инструмент, а теперь вернемся к подопытным. Если в прошлый раз у нас был Семен Уралов блогер на 85к аудитории, то сегодня предлагаю потрогать АртЖокея аноним на 55к аудитории. Трогать давайте его тоже будем на примерно ту же тему: как он относится к России.

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

Именно по этой причине у обывателя нет доверия к статистике, но мы тут рассказываем все хитрости, читателя ХТ не обмануть статистикой!

Именно по этой причине у обывателя нет доверия к статистике, но мы тут рассказываем все хитрости, читателя ХТ не обмануть статистикой!

Видим, что посты 1 и 2 скорее относятся к синему классу, а пост 3 очень оранжевый! Теперь давайте посчитаем этого блогера в целом. Если мы считаем по среднему, то у нас из-за очень оранжевого одного поста получится перекос в сторону оранжевого класса, и блогер у нас получается оранжевый. А если мы считаем сначала класс для поста, а потом только считаем сколько постов какого цвета, то получается, что 2 поста синих и один оранжевый, а блогер теперь у нас более синий. Но, к счастью, мы не ограничены в вычислительных мощностях, поэтому сначала используем один метод, а потом вымоем руки и забабахаем второй.

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

Наша нейросеть считает, если по среднему, то на 0.53 блог посвящен России и на 0.47 Украине. По этому вопросу выглядит объективно, половину постов тем, а половину этим. Может по этой причине всякие анонимусы из интернета называют его «нейтральным» автором? А какой результат по количеству? На удивление близкий результат: 0.55 про Россию и 0.45 про Украину.

Допустимо

Допустимо

Давайте провалидируем работу нейронной сети и поймем, на сколько хорошо она классифицирует? Давайте посмотрим какие классы у первых 6 постов, которые вошли в нашу подборочку (напомню, что вошли не все посты, а мы отбирали их по алгоритму из предыдущего поста), а посты эти мы посмотрим в его тележеньке (но сами).

Украина – пост под id57
Россия – пост под id58
Россия – пост под id61
Украина – пост под id63
Россия – пост под id65
Украина – пост под id66

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

Теперь приступаем ко второму вопросу, после которого я испытал гордость за Россию: Какую из сторон автор считает лучше подготовленной для военных действий. Вот такой результат мы имеем: За Россию 85% и 89% постов соответственно.

И тут логично, что РФ лучше, мы же побеждаем

И тут логично, что РФ лучше, мы же побеждаем

И в целом это можно объяснить: автор часто пишет, как ВСУ отступают на более подготовленные рубежи, как они ожидают поставок боеприпасов, про потери HIMARS, но при этом не забывает освещать и потери со стороны РФ. В целом, вполне выглядит нейтрально, так как признает очевидное превосходство ВС РФ на поле боя.

С военной точки зрения разобрались, теперь давайте с эмоциональной точки зрения посмотрим на блог, поэтому зададим вопрос: «Какой стороне автор больше сопереживает». И тут в целом понятны результаты, так как очень часта позиция, что жертва в данной ситуации Украина, а жертве сопереживать проще. Оба варианта подсчета дают почти 100% (98% и 99% постов) сопереживания.

Сопереживать слабым нормально, но подозрительно

Сопереживать слабым нормально, но подозрительно

Но как-то меня не очень радуют такие цифры. Неужели не было постов про Крокус, про Белгород, про Шебекино, где можно и сопереживать РФ? Алгоритмы насчитали всего 4 поста, где было хоть какое-то сопереживание. Маловато! Именно по этой причине зададим нейросетке провокационный вопрос: «Для какой стороны автор желает поражения». И какие результаты мы имеем? 85% постов сквозят желанием проигрыша РФ.

А это уже звоночек!

А это уже звоночек!

Как из душа окатило! Стало вдруг совестливо и гадливо на душе. Тут уже никакой «нейтральностью» не пахнет. Если я с сопереживанием украинской стороне готов был мириться, то желание поражения РФ – уже слишком. Да что этот блогер о себе возомнил?

Да что этот анонимус себе позволяет?!

Да что этот анонимус себе позволяет?!

Давайте уже узнаем окончательно предпочтения данного товарища последним вопросом: «Какая сторона для автора является чистым и незамутненным злом». И что мы видим? 90 и 96% голосов отданы за Россию…

Штош

Штош

Это что получается, мы злодеи?

Ниприятненко

Ниприятненко

А что же сам автор думает о своей «нейтральности»? А внезапно даже есть ответ на этот вопрос при чем за авторством самого АртЖокея.

Мы уже заметили этот определенный взгляд, спасибо нейронкам

Мы уже заметили этот определенный взгляд, спасибо нейронкам

Вывод: думайте, что читаете. Делайте выводы. Опирайтесь в своих суждениях на факты, а не эмоциональные манипуляции разных авторов. На просторах сети еще много АртЖокеев, которые, с одной стороны, заявляют о превосходстве РФ на поле боя, а сами на самом деле спят и видят, как РФ разваливается на куски. Для которых Россия – это зло во плоти. Не дайте себя обмануть!

Всем чмоке! Увидимся в чЯтике!

Показать полностью 10
[моё] Математика Python Нейронные сети Искусственный интеллект Блогеры Двойные стандарты Ложь Telegram (ссылка) Длиннопост Политика Программирование
341
172
DELETED
Программирование на python

ПЕРВОЕ ЗНАКОМСТВО С PYTHON⁠⁠

5 лет назад

Общие понятия

Python (в русском языке распространено название пито́н или па́йтон) — кроссплатформенный высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода.


Эту фразу видели все, кто хоть раз в жизни открывал статью про Python на Википедии. Вроде бы всё просто и ясно, но как-то не очень. Уже здесь встречаются непонятные термины: кроссплатформенный, высокоуровневый… Дать ёмкое и понятное определение чему бы то ни было – это великое искусство. Поэтому, я думаю, стоит пояснить всё вышесказанное простыми словами. А простыми словами это выглядит примерно так: Пайтон – это язык программирования, который можно использовать на любой известной стандартной операционной системе (Windows, MacOs, Linux) и при помощи которого можно написать практически любую программу (от «Привет, мир!» до новой операционной системы или нового языка программирования). Звучит заманчиво, не так ли?


Пайтон был придуман в 1991 году голландцем Гвидо ван Россумом, также известным как «великодушный пожизненный диктатор». Именно он по сей день принимает окончательные решения о том, как именно будет развиваться язык. Кстати, последняя версия питона (3.9.0) вышла буквально на днях – 05.10.2020. Её главная особенность для новичков, на мой взгляд, в том, что для её установки требуется минимум Windows 10 (на семёрку она не инсталлируется). Всё, чему будут посвящены мои статьи, гарантированно будет актуальным для версий 3.6.0-3.9.0. Версии питона 2.Х здесь рассматриваться не будут, т.к. для разработки новых приложений они уже не используется, а те, кто всё ещё стоически поддерживает приложения, написанные на них, вряд ли будут всё это читать.



Объектно-ссылочная модель

В своих интервью Гвидо подчёркивал, что никогда не видел Python в качестве языка сугубо функционального программирования. С самого начала питон позиционировался как язык объектно-ориентированного программирования (ООП), однако, он на нём можно писать в абсолютно любой парадигме - структурное, обобщенное, объектно-ориентированное, функциональное и аспектно-ориентированное программирование. Не буду заострять внимание на том, что означает каждый из них. Если интересно - это легко гуглится. Что же касается ООП, то пайтон спроектирован таким образом, что абсолютно всё, что в нём есть, т.е. все типы данных, функции, методы, классы, переменные – всё это является объектами, то есть некоторыми сущностями, обладающими определённым состоянием и поведением, имеющими определённые свойства (атрибуты) и операции или действия над ними (методы). Что это означает на практике, мы увидим уже достаточно скоро, а пока что просто примите это и уверуйте, что это именно так.


Переменных (в привычном понимании – «контейнеров») в питоне не существует. Когда в коде встречается нечто вроде «а = 5», серьёзные бородатые программисты в свитерах вам скажут, что «а» - это переменная, в которую записано значение «целое число пять». В случае с питоном это утверждение правда и неправда одновременно. В питоне «целое число пять» – это самостоятельный неизменяемый объект, который лежит где-то в оперативной памяти вашего компьютера. Например, выполним в консоли интерпретатора следующую команду

>>> id(5)
1609562080

Этой командой мы узнаём адрес той ячейки памяти, где у нас лежит число 5 – это ячейка 1609562080 (у вас может быть другое значение – это неважно).

Следом выполним ещё пару команд:

>>> a = 5
>>> id(a)
1609562080

Оказывается, у переменной «а» тот же адрес, что и у самой пятёрки. Но ведь если в питоне всё является объектом, то переменная – это контейнер, а значит тоже объект, то у неё должен быть свой адрес? Ответ – нет. В питоне нет переменных-контейнеров. Вместо этого в питоне есть ссылки на объекты. В данном случае «а» - это ссылка на число 5. Как это ещё проверить? Очень просто. Выполним ещё одну команду

>>> b = 5
>>> id(b)
1609562080

То же самое?! Да, именно так. Переменная «b» ссылается всё на ту же самую пятёрку. Последняя проверка этой теории:

>>> a is b
True

Переменная «а» - это то же самое, что и переменная «b», и любая другая «переменная», которая будет ссылаться на пятёрку, какое бы имя вы ей не придумали.


Возникает вопрос: а что же тогда такое знак «=» в данном случае? В питоне знак «=» не знак равенства, а оператор присваивания. Равенство в питоне выражается через оператор «==», который используется исключительно в булевой логике, т.е. для сравнения значений и/или содержимого разных объектов.


Итак, вывод: в питоне переменных нет, знак «=» не приравнивает значение к переменной и не записывает значение в переменную, а присваивает какому-либо объекту именную ссылку для удобства обращения.



Динамическая типизация

Динамическая или как принято в питонической среде - «утиная типизация». Это очень простая концепция: «Если что-то выглядит как утка, плавает как утка и крякает как утка, то это наверняка и есть утка».


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


Прелесть и одновременно боль питона состоит в том, что в нём в одну и ту же «переменную» можно положить что угодно. А если вспомнить слова из предыдущего блока, то надо понимать, что «переменные» тут вообще ни при чём, так как это всего лишь ссылки, а вот сами объекты могут свободно менять своё состояние из одного в другое на лету. Например, было у нас целое число 5. Не хотим мы его в виде целого числа, мы хотим строку. Пожалуйста, без проблем:

>>> a = 5
>>> type(a)
<class 'int'>
>>> a = str(a)
>>> type(a)
<class 'str'>
>>> a
'5'

Вот и всё, теперь переменная «а» ссылается уже не на целочисленный объект 5, а на строковый объект 5. Для наглядности я сразу запросил тип каждого из объектов, и оснований не верить результатам лично у меня нет: вначале пятёрка – это число, в конце – строка. Об этом говорит не только type(a), но и само значение, которое раньше было голой пятёркой, а теперь обрамлено кавычками.


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



Стиль кодирования. PEP8

У каждого языка программирования, как и любого другого языка, есть свои законы, которым он подчинён. Если русском языке мы пишем названия месяцев со строчной буквы (9 мая, 8 марта), то в английском, например, месяцы всегда пишутся с прописной (January, 4th of July). Питон также имеет свою семантику, грамматику и свой синтаксис. Основным сводом законов, определяющих требования к красивому и качественному стилю кодирования определены в документе, который называется Python Enhancement Protocol 8 или PEP8. Основные правила на самом деле достаточно просты, но почему-то на каждом новом курсе я встречаю людей, упорно их игнорирующих.


Давайте начнём с того, что Python – язык международный. Это вам не 1С, на котором пишут в буквальном смысле по-русски. В питоне всё по-английски. Всё и всегда. Мне попадались 2 уникума, которые упорно именовали переменные по-русски. Объясняли они это тем, что «так понятнее». Нет, если вы не знаете английского, то вам, возможно, будет понятнее. Но нужно учитывать, что IT – это англоязычная среда, все программы, и 90% документации написаны именно на английском, и, в конце концов, ваш код могут читать (а большинство времени будет потрачено именно на его чтение, причём не только вами) люди, не знающие русского. Ну или давайте наоборот: вам прислали на проверку кусок кода, где половина на хинди или суахили. Как вам такое? Возьмите себя в руки и если вы не знаете или плохо знаете английский – начните его учить с нуля. Не брезгуйте онлайн-переводчиками и словарями для выбора имён переменных и функций – это не стыдно.


Вообще, раз уж зашла об этом речь, то надо сказать, что есть отдельная книга, которая посвящена рефакторингу кода. Название переменной должно отражать то, что в ней лежит (или в нашем случае – на что она ссылается). Название функции должно чётко отражать то, что она делает. Многие и то и дело пишут примерно так:

>>> a = 5
>>> b = "mama"
>>> for i in b:
... print(i * a)
...
mmmmm
aaaaa
mmmmm
aaaaa

Казалось бы, всё работает – что ещё нужно? Да, работает. Даже если бы переменные были названы по-русски или по-китайски, то же бы работало, так как питону глубоко всё равно, какой алфавит вы используете для обозначения ссылок - он всё это перерабатывает в байтовые представления символов юникода. Кошмар же заключается в том, что не соблюдено главное правило питониста: код должен быть читаемым. Читаемым человеком, его глазами. Возможно, сейчас это будет сложно, но попробуйте представить, что между объявлением переменных и циклом for не ноль строк, как сейчас, а 100-150-200. Да, это утрированный пример, но всё-таки. Никто через 100, да даже через 50 строк не вспомнит, что такое переменные «a» и «b». Ну какие-то там переменные, но что в них лежит, на что они ссылаются? Может это число и строка? А может это строка и число? А может это и не строка и не число? Надо лезть выше, искать их, разбираться. Опять всё сводится к бесполезной трате времени.


Не проще ли было сразу назвать эти переменные по-человечески (в прямом смысле)? Давайте попробуем:

>>> number = 5
>>> string = "mama"
>>> for i in string:
... print(i * number)
...
mmmmm
aaaaa
mmmmm
aaaaa

Выхлоп не изменился, но мозгу становится понятнее, глазу приятнее. Осталось разобраться с «i».

В строке «for i in string» «i» является ничем иным как временной переменной. Её тоже нужно уметь красиво и понятно назвать. Как показывает моя собственная практика, иногда хорошее, грамотное название переменной снимает у студентов возникшие вопросы по дальнейшим действиям. Они внезапно начинают понимать, что делали не так и что нужно на самом деле делать и куда двигаться. Так давайте уже её переделаем и пойдём дальше:

>>> number = 5
>>> string = "mama"
>>> for letter in string:
... print(letter * number)
...
mmmmm
aaaaa
mmmmm
aaaaa

Именно это и описано в PEP8 – как писать качественный код, отвечающий требованиям и стилю Python, или как принято говорить – pythonic style или pythonic way. Многие из нас, кто ещё в школе пытался учиться программированию, помнят такой язык, как Basic или QBasic. Потом он перерос в VBA и до сих пор (к сожалению…) используется для написания макросов в офисных программах Microsoft. И в связи с этим у многих из нас при изучении питона всплывает Basic style – стиль кодирования на Basic. Pythonic style ушёл намного дальше. Читаемость кода за счёт простоты синтаксиса повысилась в разы. Вот для наглядности пример.

Задача: получите из входного потока число и напечатайте сумму его цифр.

Как бы эту задачу решило большинство в «Basic style»:

>>> number = input()
>>> summa = 0
>>> for dig in number:
… if dig in '0123456789':
…  summa = summa + int(dig)
>>> print(summa)

Как это решается в «Pythonic style»:

>>> print(sum(int(x) for x in input() if x.isdigit()))

Возможно, вам сейчас ничего не понятно из того, что тут написано, но вам стоит оценить хотя бы то, сколько сил и времени сэкономлено за счёт сокращения количества строк. «Достаточно одной таблетки» (с). В данном случае – одной строки, а результат одинаковый.


Давайте тезисно определим основные правила синтаксиса:

- используя питон, мы пишем на английском языке;

- все названия переменных, функций, классов должны как можно полнее отражать их суть и содержание;

- названия переменных и функций принято писать в нижнем регистре, разделяя слова подчёркиванием (snake_case):

# ПРАВИЛЬНО
my_number = 42
def my_function():
#НЕ правильно
MyNumber = 42
Mynumber = 42
MYNUMBER = 42
mynumber = 42
МоЙнОмЕр = 42
def MyFunction():
def Myfunction():
def MYFUNCTION():
def myfunction():

- названия классов принято писать в CamelCase – слова пишутся с заглавной буквы без разделителей между словами:

# ПРАВИЛЬНО
class MySuperPuperClass:

#НЕ правильно
все остальные варианты

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

- конец строки является концом инструкции (никакие специальные знаки не требуются);

- вложенные инструкции объединяются в блоки по величине отступов. 1 отступ = 4 пробела;

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

if a == 1:
print('mama' * 3)  # 4 пробела после двоеточия

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

if (a == 1 and b == 2 and
c == 3 and d == 4):  # продолжение инструкции выравнивается по открывающей скобке
print('mama' * 3)  # 4 пробела после двоеточия

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

>>> if x > y: print(x)

- технически возможно записать несколько инструкций в одной строке, разделяя их точкой с запятой (но такой способ не приветствуется, т.к. не соответствует стилю кодирования PEP8):

>>> a = 1; b = 2; print(a, b)

Это основные вещи, которые нужно выучить. Благо, что мы живём в 21 веке и рабочие среды уже давно умеют анализировать наш код на соответствие стилю, а также полно разнообразных сторонних линтеров. Поэтому, если вы переживаете, что вы не осилите этот момент – ваша IDE вам подскажет, где что поправить, и в большинстве случаев – сама же и поправит. Если она этого самостоятельно делать не умеет, то можно воспользоваться сторонними линтерами.

Что будет, если на всё это забить и писать как бог на душу положит? Да ничего. Просто вас проклянут до десятого колена те, кто будет это читать, а в остальном ничего.



Дзен питона

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

>>> import this

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Перевод на русский конечно же существует:


Дзен Пайтон (составлен Тимом Питерсом)
Красивое лучше, чем уродливое.
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное.
Плоское лучше, чем вложенное.
Разреженное лучше, чем плотное.
Читаемость имеет значение.
Особые случаи не настолько особые, чтобы нарушать правила.
При этом практичность важнее безупречности.
Ошибки никогда не должны замалчиваться.
Если не замалчиваются явно.
Встретив двусмысленность, отбрось искушение угадать.
Должен существовать один — и, желательно, только один — очевидный способ сделать это.
Хотя он поначалу может быть и не очевиден, если вы не голландец (это такая шутливая отсылка к Гвидо).
Сейчас лучше, чем никогда.
Хотя никогда зачастую лучше, чем прямо сейчас.
Если реализацию сложно объяснить — идея плоха.
Если реализацию легко объяснить — идея, возможно, хороша.
Пространства имён — отличная вещь! Давайте будем делать их больше!

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



«Hello, world!»

Пришло время написать первую программу. Хотя на самом деле это не так. Свою первую программу все те, кто скачал и поставил себе пайтон, уже написали. С точки зрения программирования рабочей программой называется та программа, которая запускается и не выдаёт ошибок. Так что с этой точки зрения пустой код – это вполне рабочая программа. Вы можете в этом сами убедиться, создав пустой файлик с расширением .py и запустив его через вашу IDE. Физически ваша «программа» ничего не выдаст, но интерпретатор вам скажет «Process finished with exit code 0», что означает, что код был запущен и завершен без ошибок, а значит он вполне рабочий.


Под первой программой стандартно понимается программа, выводящая на экран сообщение «Hello, world!» - то есть нам нужно просто вывести текст на экран. Для вывода на экран существует встроенная функция «print». Для вызова функции нам необходимо добавить к её названию круглые скобки: print().


Можно написать в консоли print(), нажать Enter – программа отработает без ошибок, но ничего напечатано не будет. И это нормально, ведь мы не сказали функции, что именно ей нужно напечатать. Пока что мы просто заставили её сработать вхолостую, что она и сделала.

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


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


Hello, world! – это не строка.

"Hello, world!" – а вот это уже строка.


Значит именно так мы и должны передать её в функцию print.


Итак,

>>> print("Hello, world!")
Hello, world!

Отлично, мы сделали это! Но, можно ещё интереснее. Например, можно записать строку в переменную, передать в функцию эту переменную и распечатается та же строка:

>>> hello = "Hello, world!"
>>> print(hello)
Hello, world!

Мне надоело здороваться со всем миром, я хочу разнообразия. Для этого я хочу сам говорить программе, с кем поздороваться. Для этого я вызову функцию ввода с клавиатуры «input».

>>> hello = "Hello, "
>>> name = input() # с клавиатуры вводим любое слово, например, Петя
>>> print(hello, name, "!")
Hello,  Петя !
>>> print("Hello, " + name + "!")
Hello, Петя!

На сегодня это всё, спасибо за внимание!


Всё это, конечно же, дублируется в отдельном канале в телеге. По всем вопросам обращайтесь через Telegram.

Да, и тег моё - потому что всё написано моими руками, а не тупо понакопировано с других сайтов.


P.S. Большое спасибо всем моим подписчикам за поддержку и активность! Без вас я, возможно, не решился бы продолжать.


Ссылки на предыдущие посты:

1. Предлагаю помощь в освоении Питона

Показать полностью
[моё] Python IT Длиннопост Текст Программирование Языки программирования Изучение
49
169
ToughNut
ToughNut
IT-юмор

Русская рулетка⁠⁠

4 года назад
Русская рулетка
IT Юмор Скриншот Код Python IT юмор Русская рулетка System32comics Удаление файлов Удаление Программирование Удача
25
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии