СТАТЬ ПРОГРАММИСТОМ
1.38K subscribers
12 photos
59 links
ЧАТ/СООБЩЕСТВО - @tobeprog_chat

Программирование. Задача канала - полностью разобрать путь становления разработчика, проведя по нему читателя наиболее эффективно
Download Telegram
https://youtu.be/ks4MPfMq8aQ
На канале sentdex есть серия видео посвященная созданию бота для гта5 на opencv. И это один из лучших туториалов по теме(возможно даже лучший). 

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

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

Например, далеко ходить не будем, связанные так же с автомобилями:
-Разные системы помощи водителям:
-- определение и подсвечивание дорожных знаков, можно усложнить и добавить реакцию на них, например сброс скорости при знаке ограничивающим онную
-- система автономного экстренного торможения автомобиля(эта штука сейчас есть в куче серийных автомобилей, можно попробовать сделать упрощенную или наоборот более умную модель(например выполняющую объезд препятствия))
-- паркинг, благо в игре куча парковок на любой вкус и цвет

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

Как и другие туториалы с канала sentdex, этот имеет текстовую версию - https://pythonprogramming.net/game-frames-open-cv-python-plays-gta-v

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

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

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

Специально неделю назад потестил этого бота, запускал разные версии, чуть менял, собирал крупных размеров дату(раз пять точно), и вроде бы все норм, но для этого взял игру на новый акк, с основного так бы делать точно не стал.
#ии #youtube #python #opencv
В дополнение к предыдущему посту

https://youtu.be/KecMlLUuiE4 серия видео[англ.] с канала Learn Code By Gaming, в ней автор пишет игрового бота, так же с opencv, все очень простенько и подробно, и так же как у sentdex-а есть текстовые варианты.
 
Есть небольшой минус - код не очень pythonic style(автор явно не python разработчик), это не прям чтобы плохо, тем более в туториале, но этот момент все же надо учитывать.

P.S. как и предыдущем посте, напомню, за такие эксперименты(тем более в онлайне, где подобное делать ну совсем не стоит) можно улететь в бан. Впрочем, автор говорит об этом в начале видео.
#ии #python #youtube #opencv
Python и отсутствие претендентов

Буквально вчера общался со знакомым .NET-разработчиком, мне во всех красках было описано какой F# замечательный ЯП, почему он превосходит С#(основной инструмент .NET-разработчиков), и почему за ним, очевидно, будущее отрасли.

Разумеется все эти разговоры, что в будущем все предпочтут его C# - крайне спорная штука. Мы все прекрасно понимаем, что все упрется в задачи бизнеса, и если бизнесу будет выгоден такой переход, то он случится, аналогично и обратное(вот такая она суровая реальность).

Однако F#, действительно мощный претендент на место, в каком то смысле это переосмысление, возможно неоднозначное(все таки смена парадигмы), но при этом вполне конкурентоспособное. Он можно сказать дышит в спину C#.

Так вот, довольно интересно, то что буквально все “главные” ЯПы сейчас имеют таких “конкурентов”. 

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

Java -> Kotlin
C++ -> Rust ежегодно на stackoverflow проходит опрос программистов, и именно этот ЯП лидирует как самый любимый у разработчиков(отрыв от второго места - солидные 20%)
С# -> F#
Js -> TypeScript и Dart

И только питон выделяется из всех, у него вроде как подобных ‘конкурентных’ аналогов нет. Есть много экспериментов на тему ‘так чуть красивше/чуть удобней’, но чего-то серьезного - нет. Справедливо сказать, что таким претендентом в свое время стал сам Python 3, потеснив Python 2, но во-первых, это случилось не вчера, во-вторых, этот пример все равно отличается от выше перечисленных.

Это не значит, что питон лучше/хуже других ЯПов(подобные оценки с инженерной точки зрения просто нелепы), но это значит, что путь развития питона крайне необычен. И судя по реакции сообщества, это движение в верную сторону. И как по мне, это весомый плюс языка, о котором редко говорят.
#python #мысли
Я там парочку постов написал для второго канала, однако мне кажется, они будут уместны и здесь.
Нейронки vs программисты

Серия постов ниже - комплексный ответ на вопрос “конкуренции” со стороны нейронных сетей для разработчиков. Я разбил все на такие небольшие посты-подтемы, которые по итогу должны сформировать полную картину.
#ии #мысли
Робот превратит кусок холста в шедевр искусства?
Прежде чем, перейдем к программированию, поговорим о чем-то более творческом(разве что-то может быть более творческим?)

https://youtu.be/ACKnrECORG4 видео с канала CG Speak, в нем говорится об artbreeder - нейроночке, превратившейся из забавной игрушки в пугающее мощный инструмент, вызывающий немалые опасению у арт комюнити.
Давайте попробуем artbreeder, представим диалог арт-директора и художника(номера соответствуют картинкам):
1. Приходит арт-директор, говорит: - нужен персонаж, вот фото актрисы, сделай пож максимально реалистично, но черты сохрани, ну ты знаешь

2. Первый попавшийся рисунок(главное правило программирования, чем проще-тем лучше, работает и в других областях, поэтому дальше первой выдачи рандомных рисунков не пошел, кстати фото “актрисы” тоже сгенерированный арт)

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

5. - Ну в целом молодец, вот ток чет эмоция не читается, вроде и улыбается, а вроде и нет, сделай чтоб точно улыбалась(насколько я понимаю, в рисовании такая коррекция эмоций максимально неприятная/сложная для художника штука)(6)

7. - Еще нужно чтоб это же персонаж, но как бы в старости

В целом, меня впечатляет, учитывая, что все картинки первые попавшиеся, а добавление эмоции и возраста - всего лишь сдвиг соответствующих ползунков. Этого арта(3, 5, 6, 7)минуту назад не существовало(на все ушло буквально несколько минут), а теперь он есть, и на его создание были потрачены какие то смешные усилия.
Разве робот может написать симфонию?

Как фанат Азимова, не мог обойти стороной и этот вопрос.

https://youtu.be/PmL31mVx0XA [англ.]замечательное видео - два профессиональных виолончелиста угадывают кто автор музыкального произведения: человек или ии.
Ох уж этот скайнет
Не помню где именно(вроде это был доклад на какой то программисткой конференции, года 4 назад), услышал такую как бы шутку, знаете из разряда не особо смешных, скорее заставляющих задуматься:

“единственное, что отличает разработчиков нейронок от всех остальных - они в курсе, что скоро нейронки будут делать их работу”

Специально начал с “искусства”, поскольку бытует мнение, что машинам эта штука недоступна. Хотя я понимаю, насколько подобное ошибочно, признаюсь, тот же artbreeder меня впечатлил куда больше чем победа AlphaGo в 2016(ссылочка на Википедию, тому матчу посвящена отдельная страница).

В материале, ссылка на который выше, очень забавен последний абзац:
“Многие игроки выразили желание стать следующим соперником AlphaGo, тем не менее среди наиболее вероятных кандидатов называли Кэ Цзе, который заявлял, что победит программу. Матч с Кэ Цзе состоялся с 23 по 27 мая 2017 года, AlphaGo выиграла все три партии.”

Все это можно подытожить так - нейронки оценивают крайне парадоксальным образом, с одной стороны - удивляются результатам, с другой их(нейронные сети) будто бы недооценивают. Artbreedert из игрушки превратился в конкурента, проф. музыканты могут ошибочно принять работы ИИ за человека, а AlphaGo разгромно победил в самой “человеческой”(в отличии от тех же шахмат, до появления нейронок, в го человек опережал компьютер)интеллектуальной игре.
Программисткое

https://xn--r1a.website/tobeprog/11 этот пост я написал в середине прошлого лета(будем считать, что прошел год), короткая заметка GPT-3, цитата оттуда:

“Наверно самый впечатляющий, для меня, пример - подается словесное описание приложения, нейронка сама его создает”

https://xn--r1a.website/tobeprog/81 эта заметка про Github Copilot, вышла чуть больше месяца назад.

https://xn--r1a.website/tokovIT/22 ну и собственно виновника торжества, из-за которого и выходит этот цикл постов - OpenAI Codex. Пост вышел несколько дней назад.

Всего лишь год, но прогресс просто поразительный.
-вы нейронки продаете?
-нет просто показываю
-красивое

Проблема в том, что мы не знаем, как двигается разработка всех этих “проектов будущего”. Даже если все происходит, что называется перед носом.

Так, например было с Github Copilot, по сути Майки делали логичные шаги, но почему то никто не догадался. Шаги: приобретение github-а(ключевой шаг, который многие посчитали вообще маркетинговым ходом) -> visual studio intellicode(ии который помогал дописывать код, как раз обучался на github-e) -> Copilot. Вроде бы все логично, но при этом Copilot для многих стал чем-то абсолютно неожиданным.

У нас нет доступа к OpenAI Codex, однако нам его показали. Даже если это технология опережает всех конкурентов на несколько лет, это лишь означает, что через несколько лет аналоги будут у всех.
Задачи бизнеса
Окей, предположим создали такого “джуна за подписку”, насколько это станет проблемой для программистов?

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

Кстати, забавно, что многие сетуют на качество кода, видите ли ИИ учиться и учиться до нормального кода. У меня сразу вопрос: а зачем ИИ писать код, который будет “хорошим” относительно программистов. Все даже наоборот, если мы исключаем человека из цепочки, то код можно писать как угодно, в угоду скорости процесса/скорости работы/производительности. 
Настоящее программирование
Ох как многим не понравиться этот кусочек текста, сорян 

Есть такой, крайне известный в сообществе программист - George Hotz. Персонаж интересный. У него была бурная хакерская юность, сейчас(ему 31) он остепенился, завел небольшой нейро-стартапчик, и время от времени стримит. 

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

На одном из стримов он выдал: 
“Software Engineering is trash, it's just translating business requirements into React code”
В переводе: “SE - треш, это просто перевод бизнес-требований в React код.”

Забавно, на этом же стриме, он говорит, что эту функцию скоро возьмут на себя нейронки.

Ну и в чем он не прав? У бизнеса 2 требования: быстро и дешево, и как бы не хотелось обратного, на дистанции нейронки точно это дадут.

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

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

Возьмем сложную задачу, например создание ЯПа(она излишне сложная, это просто пример), общая модель достаточно простая: лексер, парсер, токены, LLVM, AST и т.д. Это комплексная задача, которую надо достаточно глубоко понимать, и это проблема, которую нейронки пока не решают. Нейронке же надо как то подавать задачу, как подать следующий шаг, если ты его банально не знаешь? Это во-первых.

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

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