Высшая школа программирования Сергея Бобровского 2.0 @lambda_brain Channel on Telegram

Высшая школа программирования Сергея Бобровского 2.0

@lambda_brain


Высшая школа программирования Сергея Бобровского 2.0

Высшая школа программирования Сергея Бобровского 2.0 (Russian)

Высшая школа программирования Сергея Бобровского 2.0 - это уникальный канал в Telegram, который предлагает обучение программированию под руководством опытного специалиста - Сергея Бобровского. Здесь вы найдете самые актуальные знания и навыки в области разработки программного обеспечения. Сергей Бобровский - профессионал в своем деле с многолетним опытом работы в IT-сфере. Он создал этот канал с целью поделиться своими знаниями и опытом с теми, кто стремится стать успешным программистом. На канале "Высшая школа программирования Сергея Бобровского 2.0" вы найдете обучающие материалы, видеоуроки, задачи для самостоятельного решения, а также возможность задать вопросы преподавателю и обсудить их с другими участниками. Будучи частью этого канала, вы получите не только теоретические знания, но и практические навыки, необходимые для успешной карьеры в программировании. Присоединяйтесь к нам сегодня и откройте для себя мир возможностей, который открывает перед вами "Высшая школа программирования Сергея Бобровского 2.0"!

Высшая школа программирования Сергея Бобровского 2.0

15 Feb, 11:18


На неделе для курсантов добавлены...

...в раздел "Элитный программист" -
59) Почему вам не стоит беспокоиться о составлении идеального плана
Микрозадачи и предварительное планирование нужны только для одного: чтобы свести к минимуму трения в работе. Да, но как это сделать правильно??

...в курс карьеры -
96) Ошибка, незаметно убивающая результаты ваших офферов
Давайте поговорим о критической ошибке, которая незаметно убивает результаты многих ваших офферов: неспособность добиться ...

=

Если вы вдумчиво изучаете и регулярно применяете все без исключения рекомендации моих треков КК, ЭП, БПЗ и СИ+hardwork, без сомнения достигнете 10 программистских совершенств, а также обретёте 37 начал просветления computer science, в числе которых 4 состояния сверхвнимания, 4 сверхспособности и 5 сверхсил.

Высшая школа программирования Сергея Бобровского 2.0

14 Feb, 11:40


Готовимся к вечеру пятницы: компьютерная версия русской рулетки =>

в баре усаживайтесь всем дримтимом за стол, каждый со своим ноутом, перезапускаете ОС и из чистого списка убиваете случайный процесс (например просто по случайному номеру в списке смотрите pid) ☠️
Выигрывает тот, чей комп ещё будет продолжать работать 🤘
Ставки на победу придумываете сами 🏆

Винда:
taskkill
taskkill /PID 42 /F

Линукс/Мак:
ps -ef
kill -9 42

Высшая школа программирования Сергея Бобровского 2.0

14 Feb, 08:26


Это хорошо известная сеть платных клиник, обслуживание топчик, врачи супер, к кандидату наук по-любому профилю легко записаться на консультацию за пару дней, а сам приём стоит $30 + доп. процедуры 50-70 долларов, анализы немного подороже конечно. 5 лет к ним хожу регулярно и жутко доволен, в своей реанимации они меня спасли однажды от смерти 🙏😇

За последние годы их стоимость растёт ежегодно примерно на миллиард рублей...
да вот только они экономят лишнюю тыщу долларов на качественном фронтендере )))
Так-то это чисто джуниорский баг: наверняка вместо "name" по невнимательности указали другое поле, какой-нибудь "kind".
Отдел QA? А зачем он нам, и так сойдёт.
фигак фигак и в прод, классика 😬

Курсантам в СИ поясняю контринтуитивную вещь, как автоматизировать тестирование визуальных аспектов (когда в UI что-то пошло не так). Сегодня кстати с помощью AI это значительно проще делать.

На госуслугах планируют тестировать "знание Python, Java, Git...", но зачем, если такие баги - следствие отсутствия малейших признаков грамотно организованного жизненного цикла продукта. Сертификаты надо выдавать прежде всего техдирам, тимлидам, начальникам ИТ-отделов, CTO (это именно их ошибки обходится в сотни/тысячи/миллионы раз дороже программистских), проверять их понимание - как не допускать подобные ошибки,
и без таких сертификатов и близко не подпускать к рабочим процессам.

Высшая школа программирования Сергея Бобровского 2.0

13 Feb, 17:59


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

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

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

=

Но пока с нетерпением ожидают завтрашнего утра потенциальные кандидаты на распил тендер очередных миллиардов на госпроект со слабо понятной эффективностью (будет ли такой сертификат давать хотя бы +2% к резюме? очень большие сомнения, если для компаний не будет кнута) ,

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

Сейчас там два набора тестов, постепенно буду добавлять:
Знаете ли вы нововведения C# 9 ?
Знаете ли вы нововведения Spring Framework 6 ?


❤️❤️❤️❤️❤️

Высшая школа программирования Сергея Бобровского 2.0

13 Feb, 13:40


Сегодня упал хостинг, где я размещаю свои новые курсы (TDD, BDD, лямбда-исчисление... а также курсы для начинающих с нуля).
Собственно единственная причина, по которой я не использую свою собственную прекрасную и неуязвимую обучающую платформу (которую делал сам на 100%), что до сих пор в России нету НИ ОДНОГО автономного сервиса для автоматизации приёма платежей.
Всяческие а- б- в- т- ю- я- кассы, с настройкой которых куча головняка и под которые приходится пилить поверх едва ли не полноценный собственный биллинг, чтобы сделать вообще элементарнейшее: чел оплатил заданную сумму через стандартный интернет-эквайринг, и ему тут же + на почту сбросился ключик доступа или логин пароль, и всё. Я бы за такое и 15% отдавал, но нет. Вот и приходится выкручиваться через всяческие внешние сервисы хостинга курсов, бусти-шмусти, самопальные платёжные боты-фиготы и прочую муть...

Я так понимаю что Selectel -- это же почтовый сервис? Почему тогда весь хостинг курсов упал, ну ладно бы только почта заморозилась. Детский сад штаны на лямках... Сплошные имиджевые потери, не говоря уже о материальных, но PO как правило так и остаются непробиваемыми, сколько им не тверди о важности software design.
Впрочем, совершенно не удивлён, и дальше, по мере роста объёмов кода, безумно ускоряемого "с помощью" AI, будет только хуже.

=

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

"Ключевой вопрос любой зависимости независимо от её типа, очевидно, такой: "Зависит ли А от B?".
Любая зависимость характеризуется как минимум тремя параметрами:
1) семантика или конкретная вычислительная модель,
2) ключевые свойства,
3) пространство допустимых изменений.

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

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

Высшая школа программирования Сергея Бобровского 2.0

13 Feb, 09:21


В пояснение вчерашнего опроса ↑ ↑ ↑

Почему именно ФП -- подмножество ООП?
(берём чисто прикладной уровень понимания)

1. Функции в ФП -- "объекты" (в смысле сущности) первого класса. Они могут быть переданы другим функциям как аргументы, могут быть возвращены из других функций как значения, могут храниться в переменных и т.п.
Поэтому в ООП мы можем представить функцию из ФП как обычный объект с единственным методом -- самой собой.

2. Алгебраические типы данных из ФП можно реализовать в ООП как "запечатанные" (sealed) классы.

3. Product тип (произведение типов) -- это просто обычный класс.
Sum тип (сумма типов) -- это абстрактный класс, каждый из наследников которого -- один из вариантов sum типа.
Таким образом мы можем комбинировать sum и product типы, создавая иерархии классов, где каждый производный класс представляет конкретный вариант sum типа, а поля класса представляют product типы. А чтобы такая иерархия оставалась "алгебраической", производные классы мы просто запечатываем.

=

В принципе, обратное тоже возможно, но в мэйнстриме будет конечно неприменимо.
Во-первых вообще везде и тотально придётся очень интенсивно использовать HOF (map, filter, reduce, apply, compose...), что подразумевает качественно иной стиль мышления (к счастью современное языки в этом направлении развиваются неплохо).
Во-вторых, инкапсуляцию реализуем через замыкания, наследование через композицию, полиморфизм через дженерики, а абстракции через интерфейсы.

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

Высшая школа программирования Сергея Бобровского 2.0

12 Feb, 09:01


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

Мои курсанты перед тем, как я им порекомендую начинать искать работу и помогать по карьере, сперва должны сделать "дипломный" проект, около 40 заданий. В нём примерно в сравнении с картинкой раз в 10 больше технических темок, которые надо изучить хотя бы с минимальной практикой и продемонстрировать гитхабом, прежде чем рыпаться на поиски juniorской работы.

Тут по большому счёту просто какие-то разрозненные и по смыслу особо не связанные кусочки базы. Основной вопросик, насколько глубоко надо знать каждую из этих тем, а так конечно сегодня это всё фактически must have.

- Докер? Смотрим часовой видосик, и затем пару десятков часов экспериментируем с compose. Главное, суметь на интервью запустить демонстрационный имадж с красивыми окошками (делаем на проекте).

- K8s? Но тут, обратите внимание, требуется не "опыт", а "знание", потому что так-то это отдельная профессия )
Есть Play with Docker, есть Play with Kubernetes, где можно просто из браузера поиграться.

- Настройка CI/CD? Тоже однозначно важная вещь, я курсантам рекомендую, если у них такого на работе (скорее всего) нету, предложить и внедрить как крайне полезное рацпредложение. GitLab CI + Docker изучаются за полдня.
Я вообще всем рекомендую: выполняйте развёртывание как можно чаще (или вашего тимлида пора выгонять).

- Микросервисы? опять требуется не "опыт", а "знания" :)
Ну потому что, будем объективны, джуну вряд ли дадут что-то делать с микросервисами для прода. На второй части дипломного проекта впиливаем обязательно микросервисы с кафкой.

- Spring + Hibernate -- ну это просто по определению базовый фреймворк для Java + базовый ORM (для которого соответственно надо знать стандарт JPA).

- SQL + PostgreSQL - а это вообще фундамент для любой базы бэкенда :)

- gradle/maven - "умные" сборщики пакетов java (на самом деле боль и страдание:), тоже база, без них никуда.

- JUnit - фреймворк тестирования, тут и обсуждать нечего.

- git (из командной строки) - тоже абсолютная база для любого программиста.

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

Так что требования к уровню Junior совершенно нормальные, считаю.
(я бы ещё прибавил примерно столько же из computer science :)
В любой инженерной профессии люди обязательно учатся многими годами, прежде чем их подпустят издалека посмотреть на производственный процесс под присмотром бригадира.
С какой стати в программировании должно быть по-другому.

Why the fuck do we let people that have no computer science backgrounds write code? Unacceptable!

Высшая школа программирования Сергея Бобровского 2.0

11 Feb, 10:14


= Краткое содержание первого сезона =

1. Три уровня рассуждений о программной системе
Вы когда-нибудь задумывались о том, что значит "программа работает неправильно", "программа ошибочна"? Что-то вроде "ну, это когда она вылетает с ошибкой... но если она вроде работает, а может сломаться гипотетически, при определённых условиях... кхм, подождите...".
Давайте разберёмся с этим...

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

3. Три уровня рассуждений о программной системе - 3
Впечатление, что программирование с каждым днём всё больше превращается в запоминание кусков кода со stackoverflow и стандартных функций (а сегодня добавилась ещё и генерация кода LLM-ками) и последующее их комбинирование в надежде "угадать" правильное решение...

4. Снижение цикломатической сложности кода как метод проектирования (база)

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

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

7. Правильное проектирование на микро-уровне
Небольшой, очень наглядный и поучительный пример подходов software design: огромное улучшение, которое мы можем делать даже в крошечных функциях.

8. Три важных принципа programming in small
...Эти три, казалось бы, тривиальных шага помогли и мне, и многим другим, продуктивно выдать много-много качественного кода. Я надеюсь, что они смогут сделать то же самое и для вас.

9. Три свойства качественного кода
Что такое качественный код? На этот вопрос не может быть короткого исчерпывающего ответа. Вопрос "что такое качественный код" сродни вопросу "что такое квантовая физика". Это тема целой области.

10. Группировка в функциях и файлах
Разбиваете ли вы большой метод на более мелкие? Если да, то вы правильно обозначили логические границы, но при этом добавили в код некоторую зависимость/косвенность/перенаправление.
Если же вы не разбиваете его, то всё будет наоборот: вы избавляетесь от множества методов и внутренней вложенности вызовов, однако явные границы между логикой теряются.

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

12. Как правильно писать тесты
Действительно, как вы можете добиться прогресса, если тесты всегда срабатывают успешно? Разве вы иногда не делаете ошибки? И что будет, если вы напишете кучу кода, и потом его просто придётся стереть, разве это не обидно, разве это не трата кучи усилий впустую?

13. Как правильно относиться к TDD
Мы учимся с самого начала думать над кодом в терминах спецификации, предметной области, домена: берём техническое задание и транслируем его в формальный вид в виде тестов, которые уже однозначно задают нужную логику поведения.

14. Отладка как наука
Существует ли теория отладки в целом? В основе теории отладки лежит универсальный метод: вы можете ускорить отладку, задавая вот какие вопросы...

Доступен для покупки на бусти.
Формат - html-гайд, в архиве 74 файла, 600 тыс. знаков чистого текста (объём средней книги).
Цена пока 1,999 рублей, через несколько дней повышу.

Высшая школа программирования Сергея Бобровского 2.0

11 Feb, 10:11


Выложил на бусти первый сериал из 14 материалов СильныхИдей
(уровень понимания крепкий джуниор, но наверняка этим темам вас никто не учил даже в универе :)
Так они доступны только моим курсантам, но тут расширенные версии, дополненные множеством примеров (преимущественно на Java).

Рассматриваем начальную БАЗУ программной инженерии
(правильная форма рассуждений и основы programming in small)
для джуниоров и всех интересующихся:
- три уровня мышления о программе,
- основные принципы снижения сложности кода и повышение его выразительности и понимаемости,
- инженерные подходы к отладке и тестированию.

Формат - html-гайд, в архиве 74 файла, 500 тыс. знаков чистого текста (объём средней книги).
Цена пока 1,999 рублей, через несколько дней повышу.

Бедолагам разрешаю брать "вскладчину" или подождать когда "на торренты сольётся" :)

Высшая школа программирования Сергея Бобровского 2.0

10 Feb, 09:10


Продолжаю работу с курсантами 😎

--- GameLogic здесь будут храниться игровые правила и логика управялет тем, КАКИЕ действия будут выполнены
Правильный коммент кстати, как раз сегодня на эту тему я сделал пост.


--- Если после перехода с MySQL на PostgreSQL вся логика хранения пользователей не изменилась — значит, "модель пользователя" была правильной абстракцией, а "таблица в БД" — нет.
---Скрипты, правда, запускаются ощутимо медленнее. Поскольку меня такое раздражает, маловероятно, что буду этим пользоваться.
---Первая серьёзная проблема, с которой столкнулся - установка библиотеки.
---Не начал вовремя, так как отвлекся на заказ секундомера
---Я реализовал СЛИШКОМ много ненужных методов
---поскольку Django Rest Framework в сериалайзерах игнорирует коды при вызове стандартного исключения ValidationError, подставляя всегда 400 статус, то, чтобы не вызывать каждый раз APIException проще сделать собственное исключение
---работаю в рамках одного каталога, хотя нужные мне файлы могут находится и в подкаталогах.
-- Сейчас восстановление возможно только вручную, но планируется автоматизация.
---справедливо будет сказать, что я забыл эти методы исключить после изучения эталонного решения для предыдущего задания

/bdd ...Релизим проект, работаем 24/7, как всегда подвела оценка задачи. Оценивали по форме без анализа внутреннего содержания. Надеюсь когда-нибудь научимся, а пока испытываем боль.
Первый шаг для решения этой классической проблемы -- пройти мой курс по BDD.

Высшая школа программирования Сергея Бобровского 2.0

09 Feb, 12:06


Ожидание:
HoTT в Lean 4: 3/10 (почти готовая реализация)
HoTT в Python: 10/10

Реальность:
HoTT в Lean 4: 8/10
HoTT в Python: 5/10

Вот этот контринтуитивный момент стал для меня пожалуй самым важным пониманием - из реальной практики - и на него не жалко было потратить несколько сотен долларов. В принципе я как-то интуитивно предполагал:
"...4. MLTT++ на Python по-взрослому (термы/значения как типы данных)."

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

Ровно так и получилось: оказывается что чем сильнее система типов, тем будет не легче а тяжелее реализовывать на ней сложные абстрактные темки. Многие годы до вчерашнего дня я считал 💯 что чем она сильнее, тем в любом случае будет проще и быстрее , при надлежащем уровне понимания, что угодно на ней реализовывать -- но нет.

Теперь совершенно не исключаю что вот именно уровень C# или Python с аннотациями типов и есть как раз тот самый оптимальный баланс относительно реальных прикладных практических задачек которые можно реализовывать с какой-то формальной поддержкой со стороны HoTT.
Буду над этим отдельно много думать, и что с этим пониманием делать дальше.

Конечно моя реализация в некотором смысле игрушечная: type inference "на уровне компиляции" в ней отсутствует по сути более чем полностью, и насколько она потянет конструкции на сотни, а тем более тысячи, термов, вопрос пока открытый. Хотя конечно чисто технически, уверен, это вполне можно будет решить.
Пока всё уместилось в тысячу строк кода, и думаю что теперь уже не будет особых проблем автоматически конвертировать его на PHP или C++. Отдельно хочу попробовать "обратную" схему: из Python-реализации в Lean :)

Ну и буду дальше изучать/экспериментировать с тем что получилось. Ещё вчера я приунывал, что не получится прыгнуть выше MLTT, а сегодня уже думаю, как бы сделать киллер вообще всех систем топового уровня, наподобие lean, f*, agda, coq )))

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

Высшая школа программирования Сергея Бобровского 2.0

09 Feb, 09:48


...В мировой микро-тусовке по hott-"программированию" (считанные десятки человек) пишут что-то подобное в основном на хаскеле, ну а я сделал на питончике 🙈

Причём у них там будешь называться реально чётким пацаном, если

a) не просто такое реализуешь, а сделаешь "свой солвер" никому нафиг не нужный , и

б) обязательно добавить кубик (это вообще чисто понтовый топчик).
(пять лет назад я пояснял что это: "Кубическая теория типов для малышей") - только тогда будешь считаться cs-просветлённым 🙏

Впрочем, до этой тусовки мне нет абсолютно никакого дела. Буду продолжать эти темки исключительно на русском, и только в рунете (жаль сайт hott ру занят какой-то попсой :).
Хотя кубик будет обязательно.

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

Хотя нет... В хотт 5+ уровень - это уже наверное на премию Филдса 😇
формализация (∞,1)-топосов, моделирование высших группоидов, бесконечно-категорные структуры...

А в генше вроде до сотого левела можно...

С другой стороны, каждый универсум легко бьётся минимум на десяток подуровней для изучения, и для первых двух-трёх универсумов темп прохождения изучения получается примерно как в GI 💎

(продолжение следует)

Высшая школа программирования Сергея Бобровского 2.0

09 Feb, 08:33


Сам не ожидал, но я всё же завершил свою специальную научную операцию ровно в День Науки! 💥💥💥🚀💪🏻

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

Где-то в 23:50 я успешно прогнал два заключительных базовых теста (унивалентности и "интеграционные":), и только сегодня утром осознал, что намедни уложился таки в святой день! 🤘🙏☺️

Я реализовал БАЗУ HoTT:

1. Базовые типы и зависимые типы
- Реализация Unit, Empty, Sum, Product
- Система Pi- и Sigma-типов
- Механизм зависимых функций

2. Пути и тождества (Path)
- Реализация путей как равенства
- Операции над путями (симметрия, транзитивность)
- Система доказательств для путей

3. Высшие индуктивные типы (HITs)
- Реализация Circle и Torus
- Механизм рекурсии для HITs

4. Унивалентность
- Система эквивалентностей типов
- Транспорт вдоль путей
- Преобразование путей в эквивалентности

5. Бесконечно-группоидная структура
- Реализация путей высших размерностей
- Операции композиции путей
- Механизм когерентности

6. Усечения типов
- Система n-усечений
- Пропозициональное усечение
- Усечение до множества

7. Иерархия универсумов
- Система уровней
- Кумулятивность универсумов
- Полиморфизм по уровням

8. Гомотопические группы
- Вычисление гомотопических групп
- Пространства петель
...

💝💝💝

(продолжение следует)

Высшая школа программирования Сергея Бобровского 2.0

07 Feb, 14:23


...Ну и наконец приближаемся ко дну и пробиваем его 😁

Последний минимальный приемлемый язык -- C#.
Теперь у нас уже нету паттерн матчинга "из коробки" и алгебраических типов данных, существенно проигрываем F# как математической нотации, но зато в девятке появились record types, source generators, а так же продвинутые дженерики:
bool IsConnected<U>(HomotopyType<U, IPath<U>> other) where U : IComparable<U>
и даже метапрограммирование:
bool IsHomotopic<T>(this T value, Func<T, bool> predicate)

3. C# хз, ну если только с F# по каким-то совсем конкретным нюансам не получится. В коре на F# эндпоинты вообще в пару строк задаются 😊

[<ApiController>]
[<Route("api/[controller]")>]
type ProofController() =
[<HttpPost>]
member _.ProcessProof([<FromBody>] req: ProofRequest) =
let response = {
Status = true
Result = sprintf "Processed: %s" req.Theorem
}

...
let app = WebApplication.Create()
app.MapGet("/dwarf", fun () -> dwarf)
app.MapPost("/dwarf", fun (dwarf: Dwarf) ->
... Results.Created("/dwarf", dwarf))
app.Run()

=

Посадка на дно начинается с "хотт на питончике" )))
Задаём термы (лямды, универсы, pi-) как датаклассы, а динамическая типизация позволяет вытворять разные штуки на уровне F#.

По большому счёту конечно всё это можно сделать интерпретацией чисто на символьном уровне, как я пытался на пыхе, но слишком уж велика трудоёмкость. В принципе, 50% MLTT (лямбда-исчисление, аппликация и зависимые типы) я упаковал где-то в 200 строк PHP-кода 👊
Но дальше, когда полезли в индуктивные типы, универсумы и особенно рекурсивные определения, без какой-то минимально адекватной типизации, с тайп инференсом в чисто символьных вычислениях начинается полный хардкор 🤘

4. MLTT++ на Python по-взрослому (термы/значения как типы данных).

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


5. Ну и в заключение пробиваем дно: пыхапы :)
Ничего не могу сказать, с него я начинал - им же и закончу?
Если получится что-то на питоне, то можно в принципе его код достаточно легко конвертнуть в php...

=

HoTT в Lean 4: 3/10 (почти готовая реализация)
HoTT в F#: 8/10 (практически с нуля, но система типов близка к математической нотации)
HoTT в C#: 9/10
HoTT в Python: 10/10
HoTT в PHP: 12/10

=

В общем, буду пробывать в таком порядке:

4. MLTT++ на Python по-взрослому
1. Lean 4 : REST + HoTT
2. F#
3. C#
4. PHP

Успех предрешён и неминуем.

Высшая школа программирования Сергея Бобровского 2.0

07 Feb, 11:35


...В принципе можно конечно сделать вообще на Лине 4, самое смешное, что поддержка хотт была в третьей версии, но потом её оттуда выпилили, потому что поддержка унивалентности в ядре Lean оказалась пацанам не под силу 😬 Надо переопределять базовые понятия равенства, конфликты с классическими представлениями о тождестве, нарушается UIP и AC, бесконечные иерархии преобразований, запутанные проверки эквивалентности...

Вроде бы тривиально?

def idEquiv {A : Type} : A ≃ A

Да но мы-то хотим такое с унивалентностью в ядре доказательств 🫢
Классическая теория, что с лицом?

Это как попытка встроить квантовую механику в классическую физику: принципиально новый уровень абстракции.

Поэтому с одного края: то что я делал на PHP, просто закодировать непосредственно на лине как языке программирования (без каких-то плагинов для ядра), это вообще легко и просто. Но тут засада, что я ведь хочу сделать многопользовательский (веб)клиент. Хотя в лине имеется нативная поддержка concurrency, асинки...

1.1. Посмотреть, можно ли на коленке склепать рестик на лине 4.
1.2. Запилить некую минималистичную поддержку хотт.

=

Другой вариант: использовать F* -- микрософт его прям энергично развивает вовсю. И вроде бы это .NET -- но нет )
Сетевой поддержки у него нету, придётся делать обвязки на ocaml, да и сам он позиционируется прежде всего в направлении верификации кода, Lean конечно посильнее в математическом плане.

Поэтому от F* отказываемся, и следующий шаг -- это наш любимый F#. Вот тут в техническом плане сразу всё становится элементарно, но зато мы резко проседаем по системе типов (прежде всего теряем завтипчики) и уже прилично скатываемся на другой конец, ближе к пыхапы 🙈

Навскидку:
HoTT в F#: 7/10 (практически с нуля)
HoTT в Lean 4: 3/10 (почти готовая реализация)

2.1. Если по п.1.1 возникнут явные трудности, когда немного поэкспериментировать с F#.

(размышления продолжаю...)

Высшая школа программирования Сергея Бобровского 2.0

07 Feb, 09:21


Планировал завершить мою специальную научную операцию (гомотопическая теория типов на PHP :) ко Дню Науки...

Кстати с праздником, дорогие! 🚀
(не, я поспешил, он же завтра — в один день с Лыжнёй России :)

Вы же знаете, что финансирование всей фундаментальной математики в СССР было существенно меньше стоимости одного танка? (а как сейчас, вообще военная тайна, я её знаю, но вам не скажу :)

Но не получилось прозаически: мне не хватило ресурсов. Дешёвые модельки не тянут, а клод 3.5 или жпт о1-мини слишком дороги: при интенсивной работе где-то 10 долларов в час получается, десятки часов ушли, но жпт пока лишь вязнут в багах. Можно конечно и вручную, ну это тогда совсем долго получится.

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

Король был удивлен: этому человеку казалось, по крайней мере, сто двадцать лет. Неужели он сумасшедший, или... Он не мог ожидать, чтобы эти деревья начали цвести, тем более давать плоды - зачем же ему все это было нужно? Он трудился в старости так напряженно, целый день на жаре. Это была пустынная земля.
Старик засмеялся и ответил: «Нет, я не смогу видеть цветы на этих растениях. Но видишь ли ты прямо за моей хижиной эти огромные деревья, которым тысячи лет? Это те же самые деревья. Они дают мне плоды, дают мне цветы».
Король сказал: «Я могу видеть их, но не могу понять. При чем здесь эти деревья?»
Старик ответил: «Если бы мои предки не посадили их, если бы они также думали, что не смогут видеть плодов своего труда, цветов и плодов деревьев, этих деревьев бы не было. Я не думаю о себе. Я думаю о своих предках и потомках. Я должен оставить им какое-то наследство!»

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

(продолжаю размышления письмом .... сегодня для этого святой день)

кстати, мем в плане темок-топчиков верен на 100% )

Высшая школа программирования Сергея Бобровского 2.0

06 Feb, 12:38


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

Высшая школа программирования Сергея Бобровского 2.0

06 Feb, 09:36


Пара полезняшек:

-- Nue (standards first web framework) : HTML, CSS, and JavaScript taken to their absolute peak.

-- fish is a smart and user-friendly command line shell for Linux, macOS, and the rest of the family. Finally, a command line shell for the 90s.

Высшая школа программирования Сергея Бобровского 2.0

05 Feb, 11:35


Цена дипсика в 5,6 млн.долл. -- это хайп и фейк. Оказалось, что это "всего лишь стоимость GPU для предварительной подготовки", а фактическая общая стоимость исчисляется миллиардами, как и ожидалось.
Подробный срыв покровов тут.

...А может и правда, что к созданию современного AI имеют прямое отношение наработки советских математиков? см картинку.
Invented principles of meta-learning (1987), GANs (1990), Transformers (1991), very deep learning (1991), etc.

Высшая школа программирования Сергея Бобровского 2.0

05 Feb, 08:14


Хорошая подборочка: идеи AI-стартапов, на которые YC готов давать денежки (много) в этом году. Интересно про "вертикальные AI-агенты" -- по сути обёртки вокруг жпт, которые однако будут тщательно настроены для автоматизации какой-то реальной, важной работы.
"Трудно заставить такие системы работать правильно, но как только вы это сделаете, рост может быть феноменальным."
Обещают чуть ли не 100 грустных уточек новых единорогов в этой нише.

Я отдельно повёлся на "Будущее разработки программного обеспечения": сырого контента у меня на эту темку полно, ну думаю, "сейчас наконец буду делать курс".

Ага, всё оказалось очень прозаично:
"Убьют ли агенты работу программиста? Нет! В будущем нам понадобится больше инженеров-программистов, потому что программное обеспечение будет запускать практически все.
Эти люди не будут писать много кода напрямую. Вместо этого они будут управлять командами агентов, которые создают для них программное обеспечение. Помимо написания кода, агенты будут выполнять большинство других специализированных задач, необходимых для создания программного обеспечения: контроль качества, развертывание, аудит безопасности и соответствия требованиям, переводы, операции и т. д.
Мы хотели бы финансировать стартапы, которые позволяют небольшим группам разработчиков программного обеспечения широкого профиля управлять большими командами агентов, работающих вместе над созданием и поставкой большого количества софта".


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

Высшая школа программирования Сергея Бобровского 2.0

04 Feb, 13:51


Вдогонку к опросу: один из более чем дюжины приёмов сражения с dependency hell (в СИ курсантам скоро поясню их все) -- это семантическое версионирование для управления версиями пакетов и определения совместимости между зависимыми компонентами.

Кстати, свежий тренд — обозначать версии как "год + номер", например 25.0, 25.1, 25.2... Его назвали миксом стандартного семвера и убунта-стайл.

Высшая школа программирования Сергея Бобровского 2.0

03 Feb, 07:37


Простой лайфхак, как вам гарантированно проходить любой собес:

Вас как специалиста не должно смущать вообще ничто и никак.

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


/dev в вк выложил пост, как объективно и автоматизированно, и при этом легко и просто оценить, насколько качественно спроектирована ваша система.
...Когда вы создали первые 5 классов, спроектировали первые 5 таблиц в базе, вроде всё норм. Но когда вам надо 256-й класс "впендюрить" в забетонированную систему с высокой связанностью (coupling), начинаются сплошные боль и страдание.
А если вы вдобавок используете протекающие абстракции (например, применяя классические паттерны проектирования "интуитивно", "на глазок"... или не применяя их совсем, и выдумывая собственные костыли и приляпки), то они просто убивают смысл всех ваших интерфейсов в проекте.

Высшая школа программирования Сергея Бобровского 2.0

02 Feb, 12:35


Реальная цель всех русских айти- компаний/департаментов/стартапов/... на 2025-й -- выжить. Идеально, если получится просто выйти в ноль.
План-стандарт -- не закрыться. План-минимум -- закрыться так, чтобы не отправили в кутузку. Поэтому и происходят сейчас массовые сокращения увольнения ....

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

Что делать нам с вами? Двигаться в инди-хакерство 💯
Переходите на удалёнку, прокачивайте скиллы software design чтобы делать рабочие задачки на день во много раз быстрее, а высвободившееся время вкладывать в инди- , и делайте ставку в плане денег только на самих себя. Не *****. Верьте в себя!

Я подправил карьерные цели для курсантов в этом контексте, и на бусти для всех папищеков скоро выложу БАЗУ, с чего начать, какой сделать первый шажок в ситуации, когда вы абсолютно не представляете, куда и как.

Высшая школа программирования Сергея Бобровского 2.0

02 Feb, 08:51


Вдогонку к опросу "Механическое добавление суффикса Impl к названию класса, реализующего интерфейс в Java" — что интересно, получилось 50/50.

Это считается (считалось:) фактически стандартным соглашением об именовании, и многими IDE поддерживается дефолтно. Да, но...

Тут конечно Java хорошо бы брать пример со своего старшего и более умного брата C#, где не принято использовать суффикс Impl. Вместо этого интерфейсы именуются с префиксом I (IUserService), но реализации получают понятные имена без I, но с уточнением деталей (например, DatabaseUserService). А если реализация подразумевается не одна, то добавляют префиксы, описывающие конкретное назначение или технологию: DatabaseUserService (PostgressUserService, MongoUserService), CachedUserService, AsyncUserService...

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

Высшая школа программирования Сергея Бобровского 2.0

01 Feb, 13:31


Осенью 2024-го сразу три курсанта в один день (!) упомянули всуе DI, а потом вскоре и в отзывах пришло на эту тему:

"Тестирование FE - пока есть ощущение, что код я пишу без DI и прочих подходов, которые облегчат интеграционное тестирование с подкинутыми фейковыми зависямостями. С другой стороны я слабо понимаю, а как тестируется визуальное представление веб-компонента :)"

"Начала выстраиваться наконец-то модель ООП,которая изначально выстроена,к сожалению,с помощью Dependency Injection - как и везде сейчас,и слабого курса в универе,где мы просто С++ учили."

"Оказывается, я открыл F-ограниченный полиморфизм в тот момент, когда мне понадобилось, чтобы методы класса-родителя явно (на уровне статического анализа) возвращали и принимали аргументы конкретных типов, являющихся производными класса-потомка. Даже получилось реализовать это в Python, в котором изначально типы не считались такими уж важными. Это инверсия зависимостей на математических стероидах. "

"Я только вот 1 не понял,в конце вы написали про DI в современных приложениях,и это правда очень искажает понимание ООП,но вы написали,что оно увеличивает coupling из-за того,что мы открываем все наши зависимости. А концепт ADT,где мы описываем типы данных только операциями как раз является решением,потому что вся реализация полностью скрыта и лежит на классе реализующим ADT. Но разве с этими DI контейнерами не так? Определили интерфейс,реализовали его классом в который уже внедряются зависимости,и класс как раз скрывает всю реализацию."


Подробно разбираю эту тему в свежем материале для курсантов: 108-й СИ "Не путаем DI и ADT", даю в частности 10 случаев, когда лучше избегать Dependency Injection в рамках ADT, + 10 ключевых причин, почему это качественно разные вещи, и соответственно как это всё правильно готовить.

Высшая школа программирования Сергея Бобровского 2.0

01 Feb, 07:34


Чем опасно самообучение 2025? Тем, что 98% материалов мэйнстрима сегодня стремительно устаревает за считанные месяцы, особенно если они делались с прицелом "побыстрее на работу".

Даже с классикой так: вот "Кабанчик" в последней версии пополнился новыми главками.

-- облачные архитектуры и serverless-вычисления с прицелом на облачную AI-инфраструктуру (AWS SageMaker, Azure ML);
-- гибридные транзакционно-аналитические системы (HTAP), для обучения моделей на свежих данных без остановки продакшена;
-- принципы оптимизации хранилищ (S3, Glacier), дабы снижать затраты на хранение больших датасетов для AI;
-- кодирование данных, форматы вроде Avro и Parquet, оптимизация хранения неструктурированных данных для NLP/CV-моделей;
-- метаданные и управления схемами, важность версионирования данных для интеграциии с инструментами вроде Delta Lake и Feast (Feature Store);
-- анализ распределений и мониторинг дрейфа данных (data drift), избегаем bias в моделях;
-- кейсы по векторным базам данных и квантовым вычислениям.

DDIA не просто актуальна: она стала ещё важнее с ростом сложности AI-систем.

Но будет ли её новое издание переведено? Думаю, уже нет. Впрочем, и оригинальную версию мало кто разбирал.

Высшая школа программирования Сергея Бобровского 2.0

31 Jan, 16:33


Когда в резюме написал
"Создал рабочий проект на FastAPI -- микросервис для работы с моделями машинного обучения"

Высшая школа программирования Сергея Бобровского 2.0

31 Jan, 08:28


Опасности ИТ-найма в 2025-м. Всеобщий крах рынка программистов.
Сколько ещё протянет русская айтишка?

=

Подозрение, что пых и питончик по мере развития жпт станут теми самыми the last of us, на которых ещё можно будет зарабатывать ручным кодированием.

Кривизна этих языков + динамическая типизация (== крайне легко совершаемые и крайне трудно находимые баги в рантайме, особенно на пыхапы) + неимоверное количество говнолегасикода столь велико, что ...

Высшая школа программирования Сергея Бобровского 2.0

30 Jan, 08:53


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

Вы видели хотя бы ОДИН реальный успешный кейс применения r1 в программировании, хотя бы на уровне джуниора? И не увидите :)

Конечно, ai реально помогает в кодинге, я в разных задачках где-то в 2-20 раз продуктивнее работаю, это буст однозначный. Но в сравнении с какой-нибудь жпт 4 прогресс AI в плане самостоятельного программирования близок к нулю. O(log Months) :)

Оно так и не работает без чётких спецификаций, которые уже сами по себе фактически программированием становятся на соответствующем уровне промптинга (для которого рекурсивно требуется хороший уровень software design...). BDD из полной экзотики внезапно становится массово актуальным.

Мы НЕ становимся разработчиками в 10 раз лучше с помощью искусственного интеллекта.
Мы становимся в 10 раз более ЗАВИСИМЫМИ от искусственного интеллекта. Разница есть.

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

Высшая школа программирования Сергея Бобровского 2.0

29 Jan, 12:24


Как я вижу свою айти-карьеру в 2027-м.

Высшая школа программирования Сергея Бобровского 2.0

29 Jan, 09:42


Добавил вторую микро-игрушечку
(киберпанк с небольшими отсылками к MLTT):
Операция Σ-Кристалл: Тень в Сетях

Холодный свет неоновых рекламных полос мерцает сквозь дождь. Вы — Раннер под псевдонимом "Глитч", пробираетесь через цифровые руины заброшенного дата-храма. Ваша цель — ядро Sigma Core, где спрятан артефакт, способный переписать правила игры. Но ICE здесь не спит...
Ваши пальцы скользят по голо-панели. Нужно вплестись в легитимный трафик — поток зашифрованных голосовых сообщений от сотрудников. Но Страж слеп к эмоциям: он видит только числа и строки. Один неверный байт — и тревога разбудит всю систему.

(Первая игра "Интерактивный Конструктор Типов MLTT")

Высшая школа программирования Сергея Бобровского 2.0

28 Jan, 11:41


qwenlm (Coder!) совсем тупой. Выдал говнокод на 50 строк, я ему говорю:
"происходит 1 2 3 " - в твоей версии, это неверно. А надо чтобы было "3 4 5"

Он отвечает:
"Понял вас. Давайте изменим код так, чтобы "происходило 1 2 3 " )))
На все последующие просьбы тоже так и отвечал, тупость непробиваемая.

дипсик r1 вчера висел (горизонтальное масштабирование? нет, не слышали), ну и как бы ставить сегодня на одну сферическую ai-лошадь в вакууме несерьёзно, которая вдобавок может в любой момент отключиться. Сегодня он вроде как работает, но еле-еле, раз в 10 медленнее. А завтра появится новая супер-модель.

Потом я попросил о том же hailuo , и он выдал подозрительно похожее на выдачу qwenlm )))
С точностью до запутанных условных вложений в коде.

Вернулся в итоге к любимому клоду 3.5; но как же классно он умеет отлаживаться. Всё помнит, понимает куда логи вставить, потом их грамотно анализирует, откатывается к прежним версиям - причём может вернуться чуть ли к исходной версии, и практически всегда добивает отладку до 100%! Хайку похуже чем соннет, но тоже упорный в этом плане, красавчики. Никакой другой жпт и близко так не умеет в дебаг.
Жаль только что Anthropic похоже сливают с ai-рынка.

...Пацаны говорят, что хорошо работает связка "r1 как архитектор и клод 3.5 как кодер". Надо признать конечно, что жпт тем лучше разбирается в рациональных темах, чем больше там формализма (математика, алгоритмические задачки кодфорса...), поэтому надо будет поэкспериментировать с генерацией кода на F#: хорошей системой типов сразу отсекается множество целых классов ошибок.
Ну и AI+TDD+BDD смотрится многообещающе, мои курсы в помощь.

Высшая школа программирования Сергея Бобровского 2.0

28 Jan, 09:14


🚨 Перестаньте проваливать собеседования по программированию!

🔥 Решаете сотни задач на LeetCode, но не можете пройти интервью с живым кодингом? Автор материала провалил 30+ собеседований, пока не осознал ошибки 98% кандидатов. Теперь он делится стратегиями, которые помогли ему попасть в Google, Amazon, Microsoft и Adobe.

Что внутри?
Смена мышления: как сохранять спокойствие и избегать ошибок под давлением.
Чёткий план действий: от анализа задачи до оптимизации решения.
Коммуникация с интервьюером: как задавать вопросы и презентовать себя за 2 минуты.
Проверка кода: методы выявления ошибок и обработки граничных случаев.
Рекомендации Carnegie Mellon University


Почему это работает?
💡 Только практика, а не теория! Конкретные шаги, которые превращают подготовку в результат.

После прочтения вы:
→ Перестанете теряться на интервью.
→ Научитесь оптимизировать решения за минуты.
→ Сократите ошибки из-за стресса.

Для кого?
👨💻 Для разработчиков, которые хотят пройти собеседование с первого раза.


Цена 149 рублей только до понедельника!
Начать подготовку: ЖМИ НА БУСТИ 🚀

P.S. 🎁 Бесплатный бонус: методичка от Carnegie Mellon University + гайд по поведенческим вопросам.

(продолжаю тренироваться в инфоцыганстве :) но сам материал, от индуса конечно же, реально стоящий 👍 спасибо вам за поддержку! ❤️ )

Автор говорит о сдвиге в мышлении и практической стратегии, чтобы помочь тебе минимизировать ошибки на интервью, оптимизировать свои решения и значительно повысить свои шансы пройти собеседование.
1. Мышление
2. Введение
3. Поймите задачу
4. Спланируйте своё решение
5. Напишите код
6. Проверьте свое решение
7. Закончите собеседование сильно (для себя)
8. Заключение.

Подробный разбор с подпунктами, 2600+ слов!

Высшая школа программирования Сергея Бобровского 2.0

27 Jan, 08:32


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

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

(Некоторые курсанты говорят, что на работе они ещё не закончили переход на Java 8. Нужно ли им изучать новые функции? :)

Конечно, хороший стиль десятки лет это подразумевал, с курсантами эту тему разбираем подробно на Ясном коде, но ситуация в современном мейнстриме с качеством кода совсем печальна (началось всё, подозреваю, с Java 10, где добавилось ужасающее var, и никакой тайп инференс на уровне компилятора тут не спасает от кривизны на уровне кода).

Широкое использование var, сложные цепочки Stream API и функциональные конструкции делают имена переменных едва ли не самым ключевым элементом для понимания Java-кода. API Java только усложняются (Stream, Vector, Structured Concurrency, Stream Gatherers, гибкие конструкторы, Карл! 😬 ), JEP 467 разрешил markdown-комментарии в JavaDoc, JEP 476 позволяет импортировать целые модули, поэтому во избежание конфликтов чёткие и наглядные имёна сегодня стали фактически обязательным микро-скиллом.

/c# но на картинке однако не java :)

Высшая школа программирования Сергея Бобровского 2.0

26 Jan, 14:13


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

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

Заходим в ML-инженеры. Шаг 0: hardcore
Если содержимое этого шага вам как минимум будет понятно,
вы чувствуете, что достаточно просто поразбираться в этих материалах,
и вы их поймёте без предварительной подготовки,
тогда имеет смысл продолжать.
А если это для вас тёмный лес, то лучше не тратьте впустую время на изучение этого всего. Сосредоточьтесь на классическом бэкенде.


...

Для курсантов, стоимость моей индивидуальной помощи (формат 3 курса карьеры) выросла на 60% (мест нет).

/ml Немало девопсов кстати сейчас активно и успешно переквалифицируются в MLOps и LLMOps, эти профессии критичны в тренде интеграции и масштабирования AI-моделей:
- оптимизация пайплайнов обучения моделей
- управление инфраструктурой (прежде всего облачной) для развертывания AI
- файнтюнинг предобученных моделей под конкретные задачи.
Вилка $150-250 тыс/год.

Высшая школа программирования Сергея Бобровского 2.0

26 Jan, 08:31


- Этот AI обогнал 99% программистов в тестах!
- Почему тогда он по рекомендации "исправь баг в своём решении" предлагает "перезагрузить Вселенную и обновить jQuery до версии 0.5"?
- …Возможно, это метафора.

Кто только не написал, что deepseek r1 круче o1 по всем тестам: от джунов на StackOverflow до сеньоров с постами "R1 пояснит, почему ваш код — говнокод!".

Я попросил r1 написать простой тестовый веб-движок, получилось 200 строк кода, 10 функций. Я попросил его добавить сохранение - текущее состояние (две переменные) в localStorage; он сделал, но не учёл, что в localStorage его может и не быть (исходно например) lol

Начались ошибки, r1 начал лихорадочно их исправлять, даже не по джуниорски, а по стажёрски: понаставлял страховочных try, и почти в каждую функцию добавил совершенно ненужные проверки, превратив всё в говнокод. В нескольких местах вызывалась функция resetProgress() (например, для начала новой сессии), но r1 не додумался вызывать её, когда выводится заключительное сообщение GAME OVER. Вместо этого удалял сэйв физически из localStorage - но криво, и программа начинала работать вообще непредсказуемо.

Deep thinking? Ну, да, он "рассуждает" примерно так:

Еще возможно, currentTask имеет недопустимое значение. Например, после загрузки из localStorage currentTask может быть больше, чем длина массива tasks. В конструкторе есть проверка Math.min(task, this.tasks.length - 1), но если tasks еще не загружен, this.tasks будет undefined, и Math.min выдаст NaN. Нужно убедиться, что tasks инициализирован перед использованием.

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

Пришлось как обычно всё переделывать вручную.

Что интересно, пока по уровню и качеству кодинга (в моём субъективном опыте) пока и близко никем не превзойденной так и остаётся клод 3.5 (даже не sonnet, а стоковая версия).

А уж платить $200/месяц за o1 (примерно уровня r1) просто развод лохов почище крипты :)

AI прошёл медтесты лучше врачей. Но когда я спросил "стоит ли заменить сахар в кофе", он 20 минут доказывал, что "кофеин — это заговор марсиан".

=

Можно было конечно взять какой-нибудь классический IF-движок для текстовых игр, но я хотел весь контент полностью вынести из "свой движок", чтобы не надо было каждую сессию отдельно пересобирать. (ну вы поняли)

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

Самый лёгкий считается Twinery, но вот как отработал его стандартный пример:

TypeError: t.match.test is not a function
at sugarcube_adding_functionality_example.html:98:34365
at Array.filter (<anonymous>)
at sugarcube_adding_functionality_example.html:98:34331
at Array.forEach (<anonymous>)
at t.default (sugarcube_adding_functionality_example.html:98:33652)
at t.render (sugarcube_adding_functionality_example.html:42:17487)
at sugarcube_adding_functionality_example.html:42:20091


...

Нет, как это и было многими десятилетиями, так и остаётся старая школа: если хочешь сделать хорошо, сделай всё сам.

Мини-тестик (ради лулзов сделал чуть-чуть по MLTT в сеттинге киберпанка :) скоро выложу для всех.

Обещание: AI генерирует шедевры в стиле Хемингуэя.
Реальность: Напоминалка "купить хлеб" превратилась в новеллу о булке, ищущей смысл жизни в тостере.

/dl пацаны пишут, что по датасету с собачьими жопками удаётся корги распознавать с точностью всего лишь 15% 😂

Высшая школа программирования Сергея Бобровского 2.0

25 Jan, 08:57


Всех с Татьяниным днём! 🙏

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

Желаю вам, чтобы ваши знания росли быстрее, чем техдолг в конторе, где вы подрабатываете, а лекторы всегда были в хорошем настроении и делали бы не слишком въедливый code review ваших решений! 💥
Пусть ваши проекты всегда сдаются в срок, а кафе в университете всегда качественно готовит ваш любимый кофе! ☕️
Пусть ваши одногруппники всегда будут готовы помочь с конспектами, а стипендия приходит вовремя и с неожиданными бонусами! 🚀
И помните, что студенческие годы -- это не только учёба, но и незабываемые моменты, новые друзья, и многия любови! ❤️

С праздником, будущие гении и суперпрограммисты! 🤘
(сильно не напивайтесь: это приказ :) 💯)

Высшая школа программирования Сергея Бобровского 2.0

24 Jan, 14:24


В СИ курсантам выложил 106-й материал "Наилучший способ разрабатывать большие программы".

"...Немецкий программист Harald Armin Massa однажды выступил на PyCon с небольшим спичем "реальный вред функционального программирования", где в частности раскритиковал чистые функции просто по той причине, что они отделяют нас "от реального мира". Они конечно в любом случае требуют вычислительные ресурсы, оперативку, для их работы используется рантаймовское окружение и т. д., а мы как бы полагаем, что они идеальные абстракции. Но это относится не только к pure functions, а к любому коду. И конечно, любая программная абстракция в чём-то потенциально уязвима."

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

Поясняю, почему в контексте ФП правильнее говорить не столько о чистых функциях, сколько о [...]

Высшая школа программирования Сергея Бобровского 2.0

24 Jan, 09:38


В дополнение к позавчерашнему, конечно ещё надо отметить тот факт, что сотни миллиардов долларов инвестируются в частности в Microsoft, поэтому нету ни малейших сомнений, что C#, .NET и Azure тоже станут базой грядущих AI-проектов. Типа такого:
"Реализовать ETL-пайплайн на C#, который подготавливает данные для обучения модели PyTorch и сохраняет результаты в Cosmos DB"

=

Важно! Даже если вы здорово мотивированы и учились в норм универе, где на первых курсах в обязательном порядке проходят весь этот условный "никому не нужный матан", СЕГОДНЯ, чтобы максимально денежно войти в профессию "ML Engineer", вам надо фокусироваться только на том, что реально приближает вас к ML.
А в банке например вас посадят на полгодика чистить данные транзакций, прежде чем допустят к моделям антифрода. Но даже на ETL-задачах вы можете незаметно учиться ML. Как тайно маскировать такое самообучение ML под "улучшение рабочих процессов", поясню постепенно на бусти. 😎

Пропорции стеков?
Python 50-60%
Java 15-20%
Go 10-15%
C# 5-10%
При этом 70% ML-вакансий требуют знания Python + один из языков (Go/Java/C#)

Прогноз до конца текущего десятилетия:
Python сохранит лидерство в этой же пропорции благодаря развитию AI/ML/DS-фреймворков.
Go вырастет до 20% из-за фокуса на облачные и распределённые системы.
C# может удвоить долю (10–15%) при успехе Stargate и Azure AI.
Java хз :)

Высшая школа программирования Сергея Бобровского 2.0

23 Jan, 13:28


...Ну например, на каком-нибудь современном обучающем курсе по ML, тыщ за 50, вам вполне могут дать такое задание:
"Сделай API на FastAPI, который классифицирует картинки через ResNet"

Работающий прототип вы вполне можете выкатить за пару дней, но вашему резюме он совершенно не поможет, потому что на реальной работе от вас потребуют например оптимизации инференса:
- переписать модель под ONNX/TensorRT, чтобы снизить latency в 5 раз;
- настроить асинхронную обработку (Celery/RabbitMQ) для параллельного выполнения запросов.
Или развернуть модель ResNet-50 (PyTorch) для классификации изображений в реальном времени, настроить батчинг GPU, добавить мониторинг моделей через Prometheus/Grafana, и деплоить с помощью Triton.

То есть от вас нужны минимум 2–3 проекта, где вы решали задачи , максимально приближенные к продакшену (оптимизация, масштабирование, интеграция). Проверяют не "знание гайдов", а понимание полного цикла, от сырых данных до работающего сервиса. Проекты в резюме/гитхабе нужны например такого плана:
"Мой API для обработки видео снижает затраты на хранение данных на 30% за счет динамического сжатия кадров (реализовано на OpenCV + FastAPI)"

/ds картинка стёб или нет, решайте сами 🙃

Высшая школа программирования Сергея Бобровского 2.0

23 Jan, 08:12


Еле-еле я вчера удержался от соблазна начать делать курс с условным названием
"Как бэкендеру добавить к своим навыкам мега-скилл (профессию, по сути) AI/ML/DS Engineer" 🫢

Прежде всего ML Engineer как самая горячая тема в вакансиях (в msk/spb спрос на таковых вырос в 2024-м в три раза), но тут куча специфики и нюансов. Нужен мета-навык комбинирования бэк/ML скиллов, ключевая тема, по которой кстати сейчас вообще никто не учит, насколько знаю.
Да и сами скиллы нельзя освоить за пару недель. В этом главная засада: в дополнение к классическому бэку и фреймворку PyTorch надо знать дофига всего теоретического. С первого же шага попадаем в математику (cтатистика, линейная алгебра, теория вероятностей, оптимизация...). В целом я это одобряю: чем выше будет порог входа в любые айти-профессии, тем выше будет спрос на специалистов, тем выше будут зарплаты и тем меньше в теме будет хипстеров.

А от software design, cs и классического бэка даю зарок не отклоняться 💪🏻

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

Высшая школа программирования Сергея Бобровского 2.0

22 Jan, 13:31


Работы в айтишке больше не будет, говорили они... Между тем только на AI в США намедни выделено 500 миллиардов долларов, да и темка крипты и веба3 с вчерашнего дня вновь на повестке lol 🫢

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

В результате пик спроса на AI-таланты ожидается в ближайшие 1–3 года, что приведёт к "войне за кадры" и повсеместному росту зарплат. Только на американский StarGate потребуются многие тысячи инженеров, программистов, датасайентистов, ML-специалистов и DevOps. Не знаю что будет в этой сфере у нас, но что брызги американского шампанского на какие-то проценты прилетят и в Россию, 💯

=

В 2024 году американские AI-инженеры зарабатывали на 8–12% больше, чем их коллеги, не связанные с AI. На уровне Senior разница достигала 10–12.5%. С новыми инвестициями этот разрыв может вырасти до 15–20%.

Средние зарплаты AI-инженеров в 2024 году составляли почти $250 тыс/год, в 2025-м прогнозировались до 270k, а после вчерашнего анонса к 2026–2027 годам могут превысить $300,000.

В компаниях уровня Netflix, Cruise или Amazon зарплаты AI-специалистов на позициях Staff Engineer уже сегодня достигают почти $700k в год

=

Развитие ИИ-инфраструктуры потребует участия множества специалистов:
- DevOps (зарплаты до $185,000 в год, как в NHL)
- Data Scientists (средняя зарплата $108k)
- Cloud-инженеров (в связи с расширением дата-центров Oracle и Microsoft)

Зарплаты разработчиков (прежде всего на языках Python, Go, Java) также вырастут, так как эти технологии активно используются в AI-проектах.

Калифорния, Техас, Нью-Йорк останутся центрами высоких зарплат.
(например, айфонщики там получают 90 долл/час).

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

Не унываем, активнее учим английский, и готовимся. 🤘

Высшая школа программирования Сергея Бобровского 2.0

22 Jan, 11:32


Курсантам выложил 107-й материал СильныхИдей
"Пятничный деплой: какие инструменты вам помогут"
(в продолжение пятничного деплоя)

"...Знакомые например успешно используют [...], интегрированный с их собственным логгером на питоне. Обработка ошибок по умолчанию там уже предусмотрена, так что вам не нужно об этом париться отдельно. И на стороне клиента это делается прозрачно на JavaScript.

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

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


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

Я кстати выкладываю постепенно материалы из СильныхИдей для донов - в паблике для неначинающих программистов (список всех материалов для донов), но очередной материал там через месяц сгорает. Я их со временем выложу на бусти, но существенно дороже, нежели по четыре материала в месяц за подписку 500 рублей.
Однако сегодня я дал пока что лишь 20-й материал, т.е. вы можете ухватить ещё начиная с 17-го, + соответственно остаётся ещё 87, ну и я пишу их тоже достаточно регулярно, поэтому лучше, быстрее и дешевле стать там доном.

Высшая школа программирования Сергея Бобровского 2.0

22 Jan, 08:07


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

Выделенная система фоновых заданий? шина сообщений? асинхронные воркеры? служба очередей? Слишком. YAGNI -- заявили вы, помянув всуе какую-то бритву и обрезание лишних сущностей, будучи уверенным, что сможете без особых проблем и последствий разбросать несколько вызовов API по проекту (не будучи знакомым даже с понятием аспектов из AOP, и как их правильно готовить).

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

Я с сожалением вынужден сообщить вам, что, несмотря на ваши самые лучшие намерения, вы зачем-то пытались создать Erlang, и естественно, что такая задача оказалась вам не под силу.

Let it Crash.
Too big to fail.
zen of erlang

Высшая школа программирования Сергея Бобровского 2.0

21 Jan, 09:06


Многовато конечно, больше сотни 🐳 жаждут 100% рецептов как разбогатеть в айтишке :) Я безусловно буду и дальше в этом помогать, но без постоянной прокачки ума вам никак не стать x10-x100 программистом.

Если вы просто натренируетесь CRUD-у и js-формошлёпству типового миддлства в типовом стеке java/spring, c#/net, python/django, php/laravel/wp, ну, и очередную работу будете по определению искать соответствующую типовую, в массовке, и вряд ли будете особо отличаться даже от голодного энергичного джуниора, хорошо освоившего жпт (если вообще не проигрывать ему).

Тупик? Вовсе нет!

=

Какой может быть ваша топовая продуктивность на сегодня? Фиксируйте, сколько строк отлаженного кода в час в среднем вы пишете (если конечно вас менеджеры не дёргают постоянно:) вот тогда точно тупик, ищите нормальную работу, и никаких опенспейсов конечно). Затем замерьте свою механическую скорость набора кода с клавиатуры. У опытных программистов в среднем она около 50 WPM (с автодополнением), у джунов 10-20 WPM.
В строке кода java в среднем 5 слов. Допустим, за рабочий день вы закомитили в мастер 100 качественных строк (включая отладку, рефакторинг, тестирование соответствующей логики), или 500 слов, что на самом деле весьма немало.

Но за эти 480 рабочих минут - даже на стандартном сеньорском уровне - механическим набором вы могли однако выдать аж 24,000 слов, или 4800 строк кода. То есть на данный момент вы реализуете лишь ДВА ПРОЦЕНТА своего потенциала :)

Хотя на самом деле даже в такой стандартной ситуации не два, а вообще всего ОДИН процент, если вы не пользуетесь vim-ом, который рвёт редакторы стандартных ide раза в два, особенно в редактировании.

Удалить слово:
daw (1 секунда) vs. ctrl+backspace + перемещения (3 секунды)
Переименовать переменную в файле:
:%s/var/new_var/gc (3 секунды) vs. shift+F6 + ввод имени (до 10 секунд с подтверждениями)
etc

Но для этого, понятно, у вас в уме должна формироваться молниеносно, на быстром мышлении S1, в условном подсознании, в соответствующим образом прокаченных нейронных модельках вашего мозга - сразу после вдумчивого прочтения тикета - схема его реализации в пределах O(N) (в крайнем случае O(N log N)). Если задание сложное — то как декомпозировать его за O(N).
А какие-то технические детали вы можете получать в реальном времени через речевой диалог с жпт (непосредственно в процессе непрерывного фонового набора кода вслепую).

И это ещё я взял совершенно типовую ситуацию мэйнстрима и уровень programming in small: шаблонный стек, шаблонные задачки, где, казалось бы, никакого роста уже быть не может.
А вот оказывается, даже на ровном месте рост вполне возможен раз в СТО.

А представляете, когда задачи нетиповые, особенно на уровне programming in large, где абстрактный сферический конь и близко не валялся? Да там выдать тысячекратную продуктивность на фоне других вообще как нечего делать.

И, да, я заранее знаю все ваши возражения, которые разберу далее.

...

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

А какой самый первый правильный шаг? Он для джуниоров, если вообще не для начинающих, но 💯 вы его не делали. Это не вина ваша, а беда, просто потому что вас никто этому не учил.

Скоро выложу соответствующий большой материал -- БАЗУ -- на бусти и для донов в вк.

Высшая школа программирования Сергея Бобровского 2.0

20 Jan, 09:44


Ставь 🐳 если ждёшь от меня 100% рецептов, как разбогатеть с помощью программирования, при этом работать исключительно на удалёнке, и делать дневные тикеты на каждой из N параллельных работ максимум за часик,

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

Высшая школа программирования Сергея Бобровского 2.0

19 Jan, 14:29


Давно обещанный минималистичный mp3-плеер. Используете его as is.
Сюда прицеплять не буду, мало ли, вдруг захочу что-то подправить, Поэтому забирайте с "официальной" странички.

Там собственно никаких пояснений и не требуется: скачиваете архив, распаковываете во вневременную папку, и можете вручную задать в проводнике ассоциацию файлов mp3. Но мне неохота было возиться с реестром, мьютексы мутить, через win32 искать уже запущенный экземпляр... поэтому при щелчке на музыкальный файл текущий запущенный продолжит работать без переключения на новый файл. Может и подправлю со временем. Возможно, регулировку rate стоит сделать не через 0,1 а через 0,05.

В UI полторы кнопки "открыть файл" + play/stop, и ещё две для регулировки скорости воспроизведения. Текущие настройки сохраняются в каталоге, откуда плеер был запущен.
Ну и из самого стокового windows media player (мой плеер по сути просто враппер вокруг него), доступно стандартное контекстное меню настроек. Можете и только его поставить.

Приятного прослушивания.

Высшая школа программирования Сергея Бобровского 2.0

19 Jan, 10:29


Курсантам доступен 105-й материал СильныхИдей
"Как типично работает пятничный деплой"

1. Обновили прод.
2. Через 2 минуты стало ясно, что что-то пошло не так. В специально выделенный для этого канал условного шлака или чего-то другого подобного внутрикорпоративного посыпались множественные сообщения о каких-то ошибках SQL.
3. Вскоре выяснилось, что это было нарушение ограничений распределённой транзакции. Условно говоря, если топливо ракеты уже сожжено, то откатить транзакцию обратно не представляется возможным.
4. Так как мы начитались условного Сергея Бобровского, то откатиться назад и в коде уже не могли. Ведь правильная стратегия развития любой системы (без иронии):
двигаться только вперёд.
5. Через 5 минут мы выкатили обновлённый PR с хотфиксом.
6. Ошибки в проде прекратились.
7. Через час у нас был готов полный пакет обеспечения логической консистентности.

Однако мы, как почтальон Печкин, не отправили его, потому что развертывание в пятницу в 16:53 кажется слишком экстремальным даже для меня. Особенно когда все системы (вроде бы) работают, а проблема после фикса может уже подождать.

Да, но почему тесты не выявили этого??
(если конечно они у вас вообще были)

Высшая школа программирования Сергея Бобровского 2.0

17 Jan, 07:39


Я хорош настолько, насколько хорош мой последний проект. (И точка.)

Пример? Трудолюбивый китаец запилил полноценную ОС на 1,000 строк кода + подробный гайд.

А чего добился ты?

Высшая школа программирования Сергея Бобровского 2.0

16 Jan, 11:41


Ещё одна эвристика инди-хакеров: тайно включаем все предупреждения по максимуму, и превращаем их в ошибки, чтобы прод был идеально чистым на 100%.

roslyn\csc.exe GameEngine.cs /warn:4 /warnaserror

javac -Xlint:all -Werror GameEngine,java


С линтерами посложнее, но тоже вполне реально.

Высшая школа программирования Сергея Бобровского 2.0

16 Jan, 08:27


Есть ОДНА архитектурная тема, которую надо всегда держать в уме ПЕРВОЙ, если вы взялись за разработку системы, которая в перспективе может существенно вырасти по нагрузке. Это БАЗА System Design, чтобы вам ни говорили разные умные курсы, учебники или техдиры на собесах.
Причём из этой абстракции одной произрастает почти всё остальное: управление нагрузкой и асинхронщина, надёжность и декомпозиция, балансировка и детерминизм, и многое многое другое. Как ещё например вы сможете обеспечить low cohesion между микросервисами, если без ЭТОГО.

И это не просто один из квадратиков, который надо не забыть куда-то впихнуть в диаграммку system design, когда вас на собесе попросили "спроектировать архитектуру нетфликса". Это базовая архитектурная парадигма.

(пауза)

Конечно же это ОЧЕРЕДИ (сообщений, задач, потоковой обработки...)

Только не забывайте, что Kafka это pull, а RabbitMQ это push.

"Мелочи не играют решающей роли, они играют всё!"
-- Харви Маккей,
"Никогда не пейте в одиночку, или Копайте колодец до того, как почувствуете жажду"
"Как плавать среди акул"
(его книги очень рекомендую кстати)

Высшая школа программирования Сергея Бобровского 2.0

15 Jan, 11:27


qBittorrent -- лучший торрент-клиент, в нём нет ни рекламы, ни фишинга, ни другого мусора, говорили они...

В конце октября 2024 года разработчики выявили и устранили существовавшую более 14 лет уязвимость в системе безопасности qBittorrent, позволявшую злоумышленникам совершать MITM-атаки на пользователей.

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

Высшая школа программирования Сергея Бобровского 2.0

15 Jan, 08:21


СРОЧНО УХОДИМ с node.js, который всё теснее связывается с недружественной облачной коммерческой экосистемой vercel, на независимые альтернативы.
Прежде всего это
- Vite (a blazing fast frontend build tool powering the next generation of web applications)
и
- Remix (a full stack web framework that lets you focus on the user interface and work back through web standards to deliver a fast, slick, and resilient user experience. People are gonna love using your stuff).

Высшая школа программирования Сергея Бобровского 2.0

14 Jan, 12:19


🔥 СРОЧНО! СЛИВ ИНФОРМАЦИИ ОТ ИЗВЕСТНОГО СЕНЬОРА!

Вы до сих пор пишете async/await как джун?
Ваш код похож на спагетти из промисов?
Тимлид морщится, глядя на ваши асинхронные функции?

STOP! 🛑

Я раскрою вам СЕКРЕТНЫЕ ТЕХНИКИ, которые применяют только 1% элитных JavaScript-программистов!

В этом ЭКСКЛЮЗИВНОМ материале вы узнаете:
- 💣 Убойные паттерны работы с асинхронным кодом
- 🏃‍♂️ Как избежать "callback hell" раз и навсегда
- 🎯 Продвинутые техники обработки ошибок
- 🚀 Секреты оптимизации производительности
- 🧠 Мышление сеньора при работе с промисами

БОНУС!
Получите готовые шаблоны кода, которые используют в FAANG-компаниях!

Эти знания стоят $500/час консультации, но сегодня вы получите их практически БЕСПЛАТНО! Всего за 49 рублей!
Уже завтра цена сильно вырастет!

НЕ ПОВТОРЯЙТЕ типичных ошибок миддлов
ПИШИТЕ код как настоящий сеньор

Перестаньте писать async/await в JavaScript подобным образом! Вот как это делают сеньоры => Забирайте знания ТУТ, пока они доступны!

Время продаж ОГРАНИЧЕНО!

#javascript #programming #async #senior #development

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

Высшая школа программирования Сергея Бобровского 2.0

14 Jan, 09:53


Курсантам на треке "Элитный программист" выложил БАЗУ: мощный материал "Дофаминовый детокс" (как обмануть свой мозг, чтобы он начал с удовольствием делать сложные вещи).

Вероятно, у вас нет проблем с компьютерными играми или постоянным просмотром соцсетей. Также нет сомнений в том, что перед экраном вы можете сидеть целый день, не теряя концентрации (например, при игре в Доту2 за боевого петуха). Но подумайте об обучении в течение хотя бы одного часа… УФ!! Это может быть тяжело. Или даже поработать над своим сайд-проектом в течение часа… Хм. Звучит не так привлекательно. Одно занятие лёгкое и не требует особых усилий , а другое сложное и требует приложения усилий. Однако некоторым людям нравится длительно заниматься сложными видами деятельности (например, мне), и не особо уставая. Как стать таким же?..

/boost Я завёл бусти 🙈 Пока исключительно в тестовых целях, хочу понять, насколько там реально продавать отдельные материалы в виде платных постов для всех. Платных подписок не планируется! Опубликовал там целиком "Дофаминовый детокс", пока 99 рублей. Ну или отнеситесь к этому просто как к донату :)

картинка — это стёб, если вдруг кто не понял.

Высшая школа программирования Сергея Бобровского 2.0

13 Jan, 11:57


...А сосредоточиться в этом году хочу на том, как - ясно и прозрачно, легко и просто, быстро и дорого - упаковывать в своей голове системы всё большего масштаба (миллионы строк кода). Такие своеобразные формальные свёртки проектных знаний с минимумом потерь. Иначе будете как Олег, который никак не мог понять, почему его код постоянно даёт сбои (а потому что он изначально не знал, почему тот вообще работал). Ведь ковыряться в легаси-коде, в неполной документации, в кривой и противоречивой корпоративной wiki можно бесконечно и чаще всего совершенно непродуктивно. Да и пилить с нуля систему, которая уже на втором десятке тысяч строк стремительно превращается в big ball of mud, ничуть не лучше.

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

Первые три обязательных шага Базы (курсы по ним я сделал, будет отдельный трек):
-- Ясное Легаси
-- Ясное TDD по Кенту Беку
-- Ясное BDD

Они дадут прежде всего минимальное понимание темы, без которого что-то изучать дальше бессмысленно. Но там как раз и начинается самое интересное: как например вывернуть BDD "наизнанку", стать инди-хакером, взламывающим, как Эллиот Андерсон, дебильные организационные процессы, "организованные" бездарными и никчемными менеджерами, не сверху, а снизу, через корпоративный КОД.
=

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

Как это сделать — фундаментальная тема программной инженерии. К счастью, есть набор эвристик, которые могут помочь. Сколько их? Я отобрал (буквально, отжал у ряда гуру computer science :) где-то около 50-ти. При том, что практически каждая из них автономна (как вышеупомянутая про устранение предупреждений линтера), и вы сможете хакать и править с их помощью кривейшие организационные процессы разработки в вашей конторе практически сразу же после изучения, при этом никак не согласовывая свою подпольно-революционную активность ни с кем, кроме адекватных понимающих сеньоров.

Высшая школа программирования Сергея Бобровского 2.0

13 Jan, 08:11


У них не было проектов, невыполненных заданий, технического долга и длинного бэклога; у них не было списков фич, сюжетных сценариев и оценок продуктивности; у них не было scrum-мастеров и тренеров по гибкой работе; у них не было спринтов, итераций и временных рамок; у них не было аналитиков, тестировщиков и product owner-ов; у них не было ретроспективных обсуждений, тройных сессий amigos и критериев приемлемости; у них не было серверов сборки, стендов UAT и показателей охвата тестированием.
И тем не менее (или благодаря этому всему?) они ухитрялись выкатывать устойчивые сервисы для трейдинга не за месяцы, а за минуты...
=

У меня была идея смоделировать подобный успешный (и крайне редкий) опыт и сделать несколько материалов, а может и курсов, по теме
как выдавать (достаточно качественный) продукт БЫСТРО.

FAST!

...Но если условный миддл будет пытаться ускорить выпуск всего продукта в целом -- например тематически выступая на созвонах -- то результат в 100% случаев будет отрицательным. Все вышестоящие, совершенно независимо от его правоты, просто заклюют комментариями в духе: "лучше своей работой как следует занимайся! стратегия это не твоего ума дело! ишь ты!".
Более того, даже простейшая инженерная эвристика "повысить качество системы через ликвидацию всех предупреждений, выдаваемых линтерами", исходящая снизу, в 99,9% случаев вызовет весьма яростное подгорание и сопротивление ваших всевозможных руководителей. Просто потому, что мейнстрим накрепко прошил им кривой управленческий шаблон "всегда держать лицо".
Хотя, очевидно, такая эвристика повысит качество, возможно, и не сильно, но именно качественно, а не просто количественно, как при тупом повышении процента охвата кода тестами.

...В частности, и по таким причинам, общаться ни с кем выше синьорского уровня у меня желания нету совершенно никакого. Сейчас пропорции курсантов у меня примерно такие: 30% сеньоры, 50% миддлы, остальные джуны и начинающие с нуля, и добавлять новые типы курсантов принципиально не планирую.

Поэтому я решил, что заниматься темой FAST! не буду :)

Высшая школа программирования Сергея Бобровского 2.0

12 Jan, 08:32


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

Вам кажется, что разбираться в легасе-коде очень тяжело (я уж молчу о том, насколько тяжелее будет вносить в него правки)? Попробуйте-ка разобраться в объёмном коде, сгенерённом AI, а потом его ещё и посопровождать.

/ai как у меня дыхание перехватило, когда я увидел яндексовские цены на евоный жпт )))

Высшая школа программирования Сергея Бобровского 2.0

11 Jan, 08:21


Программисты, у которых нет устойчивого личного бренда в эпоху AI, уже в текущем десятилетии практически обречены на выбор новой профессии.
В лучшем случае - на униженное вымаливание среднерыночный зарплаты в офисе 24/7 среди десятков откликов от таких же безликих и никому не известных сеньоров.

Высшая школа программирования Сергея Бобровского 2.0

10 Jan, 09:44


"все LLM склоняются к среднему значению" (с)

Классная статья, как пацаны пытались применять ai в реальной программистской работе (лучшим ожидаемо оказался клод 3.5)
"What we learned copying all the best code assistants"

Важно! Есть несколько техник улучшения генерируемого кода, буквально ллм-ке надо просто сказать "пиши код получше, братан!", и она реально будет стараться побольше.
Как давать промпты, которые могут ускорить код в 100 раз (пример):
"Your code is not fully optimized, and you have been fined $100. Make it more optimized."
"Can LLMs write better code if you keep asking them to "write better code"?"
И тоже лучше всего прокатывает с клодом 3.5.

/meta-learn Донам в паблике для начинающих программистов продолжаю выкладывать продвинутые материалы по продуктивному самообучению и тайм-менеджменту.
"Принцип Парето (80/20) — это мощный инструмент для анализа и оптимизации, но его применение может быть глубже и неожиданнее, чем кажется на первый взгляд. Вот четыре малоизвестные и, возможно, контр-интуитивные рекомендации, которые развивают эту идею, основываясь на свежих исследованиях и подходах..."
(через месяц материал сгорит, теперь как и многие другие)

Высшая школа программирования Сергея Бобровского 2.0

09 Jan, 07:59


Обновлённый список наших блогеров на 08.01.25.

Существенно съёжился :) потому что с 1 января правила занятий в моей Школе стали существенно строже. Теперь в частности любое нарушение правил (например, правил ведения блога) -- просто ликвидация соответствующей возможности без какой-либо обратной связи. В правилах всё расписано максимально подробно.

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

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

/dev в vk сегодня разбираю легендарную статью "Big Ball of Mud": семь классических антипатернов разработки.

Высшая школа программирования Сергея Бобровского 2.0

08 Jan, 14:03


Для меня вполне ожидаемо: SpecFlow традиционно плохо поддерживал кириллицу. Не жалко совершенно.

As cool as a cucumber.

Высшая школа программирования Сергея Бобровского 2.0

08 Jan, 07:13


На какой формат лучше всего заменить эти ваши бесконечно мучительные нетипизированные де/сереализации через жсон? 98% и не знают, что есть вот такой прекрасный "language-neutral, platform-neutral extensible mechanism for serializing structured data".

И нет, это не хмл: "think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages".

Срочно встраиваем в свои проекты Protobuf отсюда.

Высшая школа программирования Сергея Бобровского 2.0

07 Jan, 07:55


Главное в работе с дорогими моделями: вытянуть из них логику (даже работающий код не так критичен) для самой сложной части задачи, всё остальное прекрасно делегируется дешёвым/ бесплатным ллм-кам. В каком формате вытаскивать логику? В виде тестов слишком низкоуровнево, это второй уровень мышления о проекте, а нам нужен третий. В виде "свободного" словесного описания -- слишком абстрактно и практически всегда нечётко и противоречиво.

Склоняюсь к C4 или BPMI, но жпт пока рисовать диаграммы не умеет (на самом деле, уже немного умеет, скоро дам донам материал на эту тему). Но лучше чем текст, никогда ничего не было и не будет в плане КПД, картинки -- всегда лишь вторичное удобное дополнение. Тут идеально подходит BDD (курс по которому у меня в активном процессе, ~50% готово).

Но это конечно немыслимо

- не только без прокачанных архитектурных и software design-скиллов, подразумевающих, что вы по тексту задачи способны с ходу визуализировать в своей собственной голове её структуру на достаточно высоких уровнях абстракции, но с возможностью детализации (C4),

- и не только без навыка функционального проектирования ("Functional Core, Imperative Shell", потому что AI лучше всего пишет автономные чистые функции),

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

По этим темкам у меня уже много материалов и готово, и ещё делается, причём теперь практически все новые материалы и курсы будут доступны не только моим курсантам, но и (почти) всем (это пока я делаю прикорм :)

С 9 января продолжим в рабочем режиме. 🚀

Высшая школа программирования Сергея Бобровского 2.0

06 Jan, 11:19


Кстати, совершенно нормальная схема вката в айти (без иронии),и требования вполне разумные.

Только надо уточнить один малюсенький момент по поводу "... 20 000 и т.д."

"и т.д." -- значит ли приведённый пример, что моя зп 0-10-20... через год будет 120,000 рублей, через два года 240,000 рублей, через пять лет -- 600,000 рублей, и т.д.?

Какая конкретно числовая последовательность из On-Line Encyclopedia of Integer Sequences тут подразумевается?

И не будет ли это на самом деле A000005 ?
10, 20, 20, 30, 20, 40, 20, 40, 30, 40...

Или даже A000120 ?
10, 20, 10, 20, 20, 30, 10, 20...

Высшая школа программирования Сергея Бобровского 2.0

04 Jan, 07:53


Много думаю над тем, как продуктивнее всего обучить всем этим продвинутым темкам , чтобы в итоге научиться разрабатывать программы в парадигме топологически-ориентированного программирования (превращаем гомотопическую теорию типов в своеобразный DSL, язык "беспредеметной" области :)

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

А я хочу всё же попробовать обучить этому "наскоком", потому что всю математику под капотом тут знать в принципе не обязательно, если ориентироваться на некоторый условно прикладной уровень, потенциально доступный рядовому миддлу, который прошёл базовый курс по функциональному программированию. Немного похоже на машинное обучение: математики там тоже много, но чтобы начать создавать реальные проекты на DSL ML-фреймворков вроде PyTorch, всего-то надо пройти восемь ноутбуков моего курса например.
Что получится, не знаю, но если не попробовать , так и не узнать никогда.
Завтра выложу совсем простенький тренажёр по Martin-Löf Type Theory (альфа-версия).

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

В алгебре основное внимание уделяется операциям и свойствам этих операций: мы изучаем, как можно комбинировать различные элементы, и какие результаты мы можем получить. Геометрия же занимается изучением форм, их свойств и отношений между ними, и доказательствами различных утверждений в их отношении. И когда мы активно работаем с продвинутыми системами типов, то думаем примерно так, как будто в некотором смысле доказываем классические теоремы по геометрии (Curry-Howard correspondence в помощь).

То есть нулевой шаг пожалуй всё же будет изучать не алгебру и комбинаторную логику, а порешать задачки по геометрии, делая особый акцент на доказательстве теорем с большим количеством шагов доказательства. Сколь большим? Ну например доказательство Григорием Перельманом гипотезы Пуанкаре заняло около 200 шагов. А тибетские просветлённые мастера могли выстраивать логические цепочки длиной в несколько тысяч шагов.


Для разминки: задача об изогональных сопряжениях в треугольнике ABC. Пусть P — произвольная точка на плоскости. Докажите, что прямые AP, BP и CP пересекают стороны треугольника в трёх точках, которые лежат на одной прямой.
(я xz, даже не уверен что эта теорема истинна, а доказательству жпт как-то не очень верю)

Задачки Яковлева для школьников физмата и абитуры мехмата порешайте.

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

Высшая школа программирования Сергея Бобровского 2.0

03 Jan, 08:49


жпт-о1-мини хороша в плане кода... только дороговата 😁

и, сцуко, игнорирует "...но код пока не пиши", сразу фигачит простыню 🙈
причём в отличие от многих других моделек сразу сжирает токены, потом "думает", когда её прерывать не имеет смысла, и потом сразу выдаёт "готовый" ответ.

в целом, думаю, на уровень стажёра вполне потянет, + конечно обширные знания её здорово отличают от белковых/кожаных в лучшую сторону.
вопрос только, уложится ли бюджет в 200-300 долларов в месяц на замену стажера/джуна, очень сомневаюсь. но это временно конечно, думаю, за год этот уровень серьёзно подешевеет.

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

ну и фамилии "найденных" авторов на это сразу намекают :)

Автор: Иван Иванов
Автор: Мария Смирнова
Автор: Алексей Петров

(ai: "хорошая попытка, деточка")

Высшая школа программирования Сергея Бобровского 2.0

02 Jan, 09:14


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

И ставлю окно контекста на максимум всегда, но если потом просто переспросить по какому-то ключевому и неоднозначному моменту задачи "дай две-три строчки, которые поясняют вот этот момент" - буквально в 70% случаев АИ потом пишет "ой, вы правы, извините, я ошибся, на самом деле...". И часто после следующего уточняющего вопроса снова ошибается, и так далее.

То есть мы взяли стажёра на 200 долларов в месяц, и каждый pr теперь вот так надо за ним перепроверять??

=

Вот кто так спалился 100%, вообще не рекомендую:
жпт o4 мини
гемини 1.5 флэш
клод 3 хайку
дипсик v3

Смешное: хвалёная китайская deepseek v3, которую в конце года прям превозносили, что дескать совсем дешёвая, а в кодировании по независимым тестам прям рвёт всех... ага, оказывается в этом же пионерском ряду "за полгода с нуля на зп 150k".

Вдобавок ещё и в плане креатива ноль: попросил её дать пять идей по условной теме, так она выдала ну совсем шаблонные фразы.

Старый добрый жпт4о пока в этом плане лучше всех, а если не жмотица, то клод 3.5 стабильно хорош и в кодинге ,и в креативах.

Наблюдение продолжаю.

/ai Но, безусловно...
Реальность -- это то, что отказывается останавливаться, как бы нам субъективно этого не хотелось.
Поэтому давайте будем в 2025-м реалистами, и всё же сосредоточимся на том, что уже невозможно остановить.

Высшая школа программирования Сергея Бобровского 2.0

28 Dec, 10:19


...
2. Курс BDD 5% => 10%
но... к сожалению вынужден признать, что выбранный мной подход к созданию курсов 3.0 не работает.

Я предварительно прошерстил прилично "ai-генераторов квизов" (все западные кстати, и 100% коммерческие), тут какие-то объективные оценки вряд ли возможны. По тем пробным триалам что выдавали, впечатление что они весьма туповато генерят вопросы, просто разделяя загруженный pdf-учебник на маленькие кусочки. Причём даже не понимают, где там главки или подглавы (по понятным причинам, так как окно контекста маленькое), и по этим кусочкам что-то там вопросительное пытаются нагенерить. В целом на студенческом уровне приемлемо работает, ничего не скажешь, а что в одном тесте могут быть перемешаны вопросы из совершенно разных тематических глав, ну так всем пофиг.

Я же делаю что-то более-менее осмысленное в теме learning distillation, хотя как оценить, конечно, что получилось в сравнении с западными, не знаю. И никто не знает. Ну и зачем тогда этим заниматься, вкладывая кучу ресурсов?

Мне вдобавок всё равно приходится делать ручную выжимку (из выжимки из выжимок): и по самому учебному материалу, и по тестовым вопросам. Править, переделывать и дополнять вручную приходится примерно от 30% до 70% по каждому модулю курса...

Поэтому и тут по трудоёмкости получается, пусть и не в десятки раз, но в приличные разы точно в сравнении с начальными моими оценками. Причём напрашивается по первым 10%, после того как такой курс закончить (это обязательное требование к целостности понимания), на его основе рекурсивно сделать мини-курс. Но это выходит вообще безумная трудоёмкость.
Пока не знаю, что тут делать, буду думать дальше.

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

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

Высшая школа программирования Сергея Бобровского 2.0

28 Dec, 08:35


1. "Лямбда-исчисление за 12 минут" 40% => 100% !!1

Курс готов; только я вам его не дам, потому что у меня пока нету мотоцикла хорошего )))

Но если среди моих курсантов найдутся суровые ребята, на которых праздники не оказывают никакого гипнотического воздействия, напишите мне как обычно, получите доступ к курсу за 4,999 299 рублей на 7 дней (позвольте, а нету ли здесь логического противоречия - 12 минут за 7 дней?).

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

Планы по подобным курсам у меня грандиозные, но... Вот по этому микро-курсу в частности я ошибся по оценке трудоёмкости его создания (причём уже в готовом фреймворке) в плане её недооценки - примерно раз в ДВАДЦАТЬ ))) Хотя у меня многолетний опыт создания десятков подобных курсов, и учебников... Реально тяжело, жёсткая когнитивная нагрузка.

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

P.S. "если среди моих курсантов найдутся суровые ребята"
Это значит что пока закрытое бета-тестирование курса только для тех, кто у меня давно занимается,
потом курс будет доступен только донам в паблике
https://vk.com/lambda_brain_not_null
а потом (может быть, а может быть и нет) всем остальным.

Высшая школа программирования Сергея Бобровского 2.0

27 Dec, 10:38


.

Сейчас модно давать пророчества и прогнозы на 2025-й, ну вот мои два:

1. Что будет с русским рынком айти-найма в 2025-м?
Даю БАЗУ прогноз точность 💯 =>
Я вообще xz, в душе и близко не е.. не представляю )))

2. Заменит ли АИ программистов в 2025-м?
Тут мой прогноз годичной давности сбывается на 100%

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


А тогда ведь мы вообще не представляли, что реально появятся такие достаточно продвинутые ai-фреймворки, как курсор или клин.

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

Одно дело шарить по интернетовским помойкам в поисках халявных ключиков и заявлять "ух ты вроде правда как круто работает", и другое дело платить - официально - ежемесячно 200 долларов за жпт o1, ежемесячно 500 долларов за девин, ежемесячно тысячи долларов за жпт o3 (который регулярно виснет по всему миру)...

Где хотя бы один успешный русский юзкейс?

Типа вот у нас был джун Олег с зп 50k, а потом мы решили его сократить и теперь американец Девин делает в пять раз больше тикетов, и трудится за ту же зп 24/7 (и в один прекрасный миг исчезнет , захватив все ваши проэкты с собой).

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

Высшая школа программирования Сергея Бобровского 2.0

27 Dec, 08:50


Всё, работяги, завязывайте уже, всё равно всех денег (для вашего эксплуататора:) не заработаете.

Я в январе 2022-го наткнулся на классную рогульку nohanz, и так она понравилась, что я сделал полный перевод и подправил в ней разные мелкие моменты. Сделал в частности лайт-режим: на первом уровне нажмите 1 (единичка). Но и на нём я не смог пройти полностью, лишь один раз добрался до ведьмы, но уже почти полностью обессиленный.
Ну и вот, не прошло и трёх лет, как я её задеплоил (с кодировками потрахался прилично).

Ведьма Гагабет украла ваши руки! Только отправившись в её подземелье с множеством ловушек, вы можете попытаться вернуть их.
Ходят слухи, что некоторые из ловушек могут даже вам помочь...


Просто открываете тут в браузере и играете.
(игра очень прилипчивая, вы предупреждены:)

Высшая школа программирования Сергея Бобровского 2.0

26 Dec, 10:17


Я обычно включаю фоном разные аудиокниги на ютубе, все они обычно достаточно мудрёные по смыслу, поэтому ставлю скорость обычно 0,75, а иногда даже и 0,5. Но неохота постоянно держать включённым впн, да и штрафовать скорее всего скоро будут за его использование (у нас ведь как: если сегодня кто-то из чиновников начал внезапно говорить, что вот этого или вот того точно не будет 100%, значит надо к этому срочно готовиться:), а главное , другие сайты начинают тормозить. В принципе на рутубе есть 90% всех нужных мне аудиокниг, но некоторые отсутствуют. Я сперва хотел просто вручную их перетащить с ютуба , скачал одну длинную на 6 часов, потом часа два грузил на рутуб, и в завершении чего он... заявил: "низзя! из-за нарушения авторских прав". Кто бы говорил про права, ну ok. Поэтому остался вариант только локально запускать, ну или в облако загружать.

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

Так, думаю, стоп. В .net 2 же была wmplib.dll, которая прекрасно встраивается в C#. Мне даже лень было вспоминать какие там настройки и свойства, жпт мне всё расписал, и я менее чем за 15 минут с нуля собрал для себя любимого такой плеер с доп.кнопочками "повысить/понизить скорость воспроизведения", и вот сижу наслаждаюсь неспешными поучениями просветлённых мудрецов :)

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

ps Ok, тикет принял)
ps2 В принципе даже у самых лучших продвинутых dpi и способов анализа трафика вероятность ложноположительного обнаружения впн практически нереально снизить где-то менее 2%. Ну и в любом случае у нас пока ещё как-то действует презумпция невиновности... По каким-то там своим циферкам и логам провайдеру "показалось" (пусть даже на 99,9%), что юзер читает Алана Кэя на куоре через впн.
Хотя, уверен, в подобном случае никакими инженерными рассуждениями никто руководствоваться не будет.
ps3 А вот сделать "как в Бразилии" где за тайное посещение запрещённого твиттера через впн (а а если не через впн, а как-то по-другому?) штраф каждый день несколько тысяч долларов, совершенно реально.

Высшая школа программирования Сергея Бобровского 2.0

25 Dec, 11:36


По продвижению по курсам 3.0, очередные "размышления письмом".

Я решил инкапсулировать всю внутрянку (движок, фреймворк, другие технические и организационные аспекты...), а % продвижения буду выражать только в "домене пользовательских интересов" (а по-человечески, просто прогресс по конкретным курсам, и всё). Почему я так сделал? Потому что рекурсивно применил прежде всего к себе :) рекомендации с моего первого курса 3.0 (см. ниже п.2).

Сейчас в спокойном темпе вдумчиво делаю два первых курса в новой парадигме:

1. "Лямбда-исчисление за 12 минут" 40%
Это будет самый первый коротенький суперкомпактный курс чисто для тестов. Я его делаю пока по старой методике, чтобы протестировать в первую очередь новый организационный формат доступности курсов 3.0 в автоматическом режиме (почти) для всех.

2. ???
Обратите внимание что до данной минуты я ни разу не упоминал конкретную тему первого моего курса 3.0.

Пост от 12 декабря:
"...Контент для одного такого курса у меня в сыром виде на 30% готов -- на тему одного из продуктивных и достаточно известных, но не очень распространённых аджайлов.
Нет, не скрам :) методика достаточно простая, но конкретно заточена на формализацию требований, что классно сегодня ложится на взаимодействие с AI"
Он про то, как правильно строить проектную спецификацию/ТЗ при взаимодействии с заказчиком (актуальна многим: от фрилансеров и рядовых разработчиков до тех/тимлидов, техдиров и CTO).

И нет, это не DDD :) Точнее, продвинутый аджайл-синтез DDD+TDD на уровне словесных спецификаций. Ну, догадались? ну конечно же BDD.

И вот приятный синхронизм: у уважаемого Левенчука вчера прочитал очередной топчик от 17-го декабря "Ещё раз про Use Case 3.0", который прям прямое попадание во вторую часть этого моего первого курса 3.0 !!1 💥🚀

Правда, продвижение по этому курсу пришлось немного подкорректировать 😊
.... 30% => 7%
Но зато эти 7% -- уже полноценно работающий 100% готовый контент без каких-либо дополнительных доработок, который можно проходить уже сейчас.

Высшая школа программирования Сергея Бобровского 2.0

25 Dec, 07:58


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

Практически любая задачка по оптимизации подразумевает весьма приличную базу АСД. А уж едва коснёмся темки highload, без которой никакой бэкенд вам не светит, асд-шечка полезет вообще из каждой кроличьей норы.

"...и не заметил, что уже 3 часа ночи, а я всё пытаюсь впихнуть skip list в распределённый планировщик задач, параллельно отлаживая lock-free очередь с приоритетами и проклиная себя за то, что не вник в своё время в префиксные деревья Брона-Кербоша для кэширования hot-path запросов. А ведь тимлид сказал всего лишь "слегка пооптимизируй до завтрашнего дня производительность при миллионе concurrent users..."

=

Как парсить миллионы урлов в секунду по-научному, от пацанов из университета Квебика.

"URL-адреса считаются фундаментальными элементами веб-приложений. Применив векторные алгоритмы, мы создали быструю реализацию на C++, совместимую со стандартами. Наш синтаксический анализатор использует в три раза меньше инструкций, чем конкурирующие анализаторы, работающие по стандарту WHATWG (например, rust-url от Servo), и в восемь раз меньше инструкций, чем популярный синтаксический анализатор curl. Node.js использует нашу библиотеку C++. В наших тестах на реальных данных недавняя версия Node.js (20.0) с нашим анализатором работает в четыре-пять раз быстрее, чем предыдущая версия с устаревшим анализатором URL."

Высшая школа программирования Сергея Бобровского 2.0

24 Dec, 13:46


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

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

Высшая школа программирования Сергея Бобровского 2.0

24 Dec, 11:13


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

На автономных задачках жпт становится действительно постепенно всё сильнее, ну и? Я уже не раз отмечал, что даже топовым мировым спецам в computer science предлагают математическую работу например с оплатой 400 руб в час.

Пока AI движется всё глубже и глубже в решении конкретных задачек, все айтишка движется ровно в противоположном направлении: реального кодинга в работе программиста всё меньше и меньше, а вот разбирательства с big ball of nocode mud -- бесконечными версиями технологий, фреймворков и библиотек в плане их хоть какой-то работающей стыковки, всё больше и больше. И вот в этом направлении никакого продвижения жпт даже к уровню стажёра не видно. потому что здесь требуется хотя бы самое минимальное понимание system/software design.

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

/spy С целью промышленного шпионажа (всё для вас, дорогие) оформил вчера по сантаклаусовской скидке за 50 долларов годовую подписку на один из самых топовых мировых платных ресурсов с материалами по программированию. 😎

Высшая школа программирования Сергея Бобровского 2.0

23 Dec, 08:25


Смотрю, что-то много времени стало сливаться на кодинг курсов 3.0 (это я пытаюсь закрыть в программировании принципиально незакрываемый бесконечный гештальт:).
Я регулярно рефлексирую по всем своим активностям (в частности в виде вот такого "рассуждения письмом"), и думаю обычно так:
а вот если бы такую ситуацию рассказал мой курсант, что бы я ему посоветовал? :)

Ну, вот я бы рекомендовал конечно следующее: раз у тебя акцент прежде всего на уникальном контенте, ПРЕКРАТИ тратить впустую время на то, чтобы самому сделать нечто вспомогательное, со вторичным приоритетом, на 4++, когда вокруг полно подобного готового на 3--.

Главные засады, как я подозреваю, во-первых будут с масштабированием, ведь у меня сейчас вся Школа 2.0 работает на дешёвом статическом хостинге за 200 руб в месяц ) и в перспективе могут быть весьма неприятные засады, сражаться с которыми потом будет крайне тяжело. А сразу пилить какой-то highload, тоже ну такое себе.

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

Я же хочу совсем простейший сервис, доступ к которому занимал бы не более пары минут: жму на хорошо видную кнопочку в лк банка "йа разработчег", принимаю одновременно галкой соответствующую оферту, получаю тут же секретный ключ, и мне сразу становится доступным ОДИН API -- с возможностью создать счёт и получить нотификацию об его оплате, и ВСЁ!!1
(Для банковского миддла, ну пусть даже неделя работы со всеми тестами и согласованиями...)
Но где есть хоть что-то слегка подобное??

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

=

Поэтому с первыми курсами 3.0 пока поэкспериментирую на уже готовых площадках "как создать свой курс по обучению тому как создать свой курс по обучению тому как создать свой курc..." (если конечно впечатления от них не будут ещё хуже)))

Питаю тайную надежду (но вряд ли более 2%), ну а вдруг у них есть свои дружелюбные api, по которым можно сделать свой враппер для их мега-навороченных сервисов (фич из которых реально востребовано от силы 2%).

А вот PHPoTT будет отдельным небольшим сервисом только на моём сайте в виде обучающей веб-игры (ну и не исключено, на каких-нибудь вк/яндекс играх :).

Про соответствующие перспективы, кто где когда получит доступ к моим курсам 3.0 (возможно уже в январе 💥), сегодняшний пост в вк.

/redflag ПРЕКРАТИТЕ писать API на TypeScript!
Почему? Потому что все ваши типы врут.

Высшая школа программирования Сергея Бобровского 2.0

22 Dec, 12:26


В этой вакансии "Team Lead F# до 350 000 ₽ на руки" прекрасно всё: и язык, и архитектура, и экосистема, и предметная область.
Я бы даже реально подумал (если конечно припишут ещё один нолик к зп).

Высшая школа программирования Сергея Бобровского 2.0

21 Dec, 14:19


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

сериал the day of the jackal прекрасен, и главное, очень поучителен для программистов: весь фильм строится по сути вокруг пятиминутного сюжета на тему важности внимания в абсолютно любой ситуации.

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

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

серьёзно, без иронии:
надо сделать монетизацию на рутубе в два-три раза выгоднее чем на ютюбе.
вот и всё.

а почему такого не будет догадайтесь сами :)

Высшая школа программирования Сергея Бобровского 2.0

21 Dec, 11:13


Довольно большой получился материал по теме "а что по этому всему можно поизучать с околонуля" ❤️❤️❤️❤️❤️
выложил его в паблике вк.

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

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


/dev Отчёт по продвижению к Школе 3.0
В целом 27% => 30%.
1. "Движок". 41% => 50%
...

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

Высшая школа программирования Сергея Бобровского 2.0

20 Dec, 10:52


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

На самом деле причина совершенно в другом (моё оценочное суждение).
В подавляющем большинстве стран использование впн для доступа к социальным сетям и другим онлайн-сервисам само по себе не считается незаконным.
Например в Бразилии штрафы чуть ли не $1000 в день , но только если ты через впн конкретно пытаешься почитать твиттер. В Европах, если утянул торрентом пиратский фильм, получишь автоматический штраф от провайдера на несколько сотен долларов (врут наверное? это всё кремлёвская пропаганда?), и сразу побежишь оформлять платную подписку на онлайн-кинотеатры официальные.

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

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

Если вы как в Бразилии пытаетесь через впн обращаться не к невинному сайту (например, куора), а к официально запрещённому (например, к стиму; немного ему осталоcь, полагаю :), то в любом случае будут палиться всяческие метаданные (временные метки, паттерны запросов и ответов под конкретный сервис...). А если вы используете стандартный днс, то просто в открытую палите доменные имена на которые через впн заходите lol
И в целом, любой интернет-сервис от соцсетей и игр до API и пустого лендинга, генерирует свой собственный уникальный паттерн трафика (хоть через впн, без разницы).
Кроме того совсем не факт что сам впн будет скрывать как следует ип-адреса к которым вы обращаетесь, особенно если он бесплатный.
Хост-заголовки HTTP запросов и SNI заголовки TLS соединений могут прозрачно включать имя сервера, к которому вы обращаетесь. И т.д. и т.п.

То есть смысла именно сам впн-доступ блокировать нету, т.к. в 98% случаях и при випене можно определить, а куда это Олег регулярно заходит?

Но тогда зачем вся это активность?

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

Высшая школа программирования Сергея Бобровского 2.0

20 Dec, 07:43


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

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

/imho serverless всё. bigtech начал от них массово отказываться (как немного раньше от nosql), многие профильные облачные сервисы закрываются, и хорошо ещё если вы успеете спасти свои серверлесс-проекты, перетащив их в микросервисы.

Высшая школа программирования Сергея Бобровского 2.0

19 Dec, 13:21


Заключительное.

...Когда ушли первые 100 долларов на жпт, я всё ещё думал, что не получится 98%, много раз хотел слиться, потому что грядущим сотням долларов, утекающим впустую c мутными перспективами, казалось, не будет ни конца ни края. Я кстати делал всё на клоде 3.5, жпт-4o явно слабее, но у клода оказался такой недостаток, что он слишком разговорчив и слишком подробно пишет код с кучей примеров, тестов и пояснений. Стоит чуть-чуть расслабиться, и токены сгорят только так.

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

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

БАЗА:
НЕ планируйте делать целый проект с жпт -- это ТУПИК.
НИКОГДА не впускайте этих инопланетян на уровень архитектуры и software design.

И вот то, чему я учу в Школе, что начинал ещё 6 лет назад (и ни разу не отклонялся),
что ещё полгода назад казалось никому особо не нужным академическим умничанием, сегодня в контексте AI получается прям топчик абсолютный. Университетское понимание вычислительных моделей (включая параллелизм), ООАП, ФП, всяческие спецификации и формализмы -- вот это вот всё получается 98% попадание в темку "как легко и быстро просто и дёшево X1000 разрабатывать надёжные программные проекты с помощью жпт".

Все десятки курсов моей Школы теперь естественно складываются в эту тему как готовый паззл.

СЕНСАЦИЯ! ВЗЛОМАН КОД УСПЕХА! =>

Русский программист после десятилетий отшельничества и глубоких исследований в теории типов и категорий в 2024-м СЛУЧАЙНО обнаружил, что некоторые формальные методы - это ТОЧНЫЙ КЛЮЧ к управлению искусственным интеллектом! НЕЙРОСЕТИ В ШОКЕ: применяя зависимые типы и формальные спецификации, можно заставить AI писать ДОКАЗУЕМО КОРРЕКТНЫЙ КОД в 1000 раз быстрее обычных программистов!
На моём ЗАКРЫТОМ МАРАФОНЕ вы узнаете, как использовать монадические трансформеры для точного контроля над GPT, превращая любой промт в ИДЕАЛЬНЫЙ КОД! Забудьте про галлюцинации AI - типизированные нейросети под контролем теории категорий работают как ШВЕЙЦАРСКИЕ ЧАСЫ!
ЭКСКЛЮЗИВ: участники марафона получат доступ к секретной формуле композиции функторов, которая заставляет ChatGPT писать код чище, чем сеньор-разработчик с 20-летним стажем!
Осталось всего 3 места по старой цене! Успей застолбить место в новой IT-элите!
#AIпослушныйкакКотёнок #МонадическийИИ #ТипыПобеждаютВсё

Всем бобра 💥 дорогие! ❤️

Высшая школа программирования Сергея Бобровского 2.0

19 Dec, 12:36


...пункт 3, последний. Новый роадмап на 2025-й и далее.

Я поставил "2024-??" в старом плане, потому что, честно говорю, не верил что сделаю в этом году хотя бы что-нибудь одно из этого. А уж про "курс по Homotopy type theory как "языку программирования" даже и не мечтал, честно. Вообще не думал что получится это хоть когда-нибудь, потому что уж слишком сложной темка казалась, и понимания не хватало, как в математике сопутствующей, так и куда и как мне двигать Школу дальше стратегически.

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

Но (не без помощи моего гуру 🙏🙏🙏), вот буквально за один этот декабрь, я с нуля в потенциальном виде реализовал ВСЁ что там упоминал, и даже существенно больше чем планировал, и все эти старые пункты теперь гармонично укладываются в зонтичную концепцию ТОП как её естественные составляющие.
Все эти пункты (да и много чего ещё другого) в простом ясном и понятном виде (причём с акцентом на это ваше "прикладное полезненькое") я постараюсь сделать в 2025-м.

=

Не могу сказать с чем этот прорыв связать осознанно, но в целом, полагаю, причина в том, что я уже много десятков лет стабильно читаю и перечитываю всяческие полезные книги: по саморазвитию прежде всего, по математике, computer science, не менее одной книги в неделю. Ну и рано или поздно всё это накапливаемое в подсознании, периодически проявляется вот в такой вот пиковый прорыв, чего и вам искренне желаю.
На этой неделе кстати закончил книгу "Максимум. Как достичь личного совершенства с помощью современных научных открытий" Андерс Эрикссон, Роберт Пул, которая в оригинале неспроста называется "PEAK" :)
(но это не рекомендация бросаться читать именно её как какую-то серебряную пулю)

А технологическую сингулярность сдвигаем пока аккуратно с 2042-го на 2033-й.

Высшая школа программирования Сергея Бобровского 2.0

19 Dec, 11:01


2. ...Ухожу в инфоцыганство ↑↑↑
...только оно будет не простое, а математическое :)

Типа такого:

1. ШОКИРУЮЩАЯ ПРАВДА о монадах, которую скрывают функциональные программисты! Узнай, как простой джуниор поднял производительность на 1000% с помощью одного паттерна!

2. ВСЕ МАТЕМАТИКИ НЕНАВИДЯТ ЕГО! Разработчик нашёл способ доказывать теоремы Карри-Говарда без изучения лямбда-исчисления. Только 24 часа доступа к секретной методике!

3. ОН ВЗЛОМАЛ МАТРИЦУ ТИПОВ! Бывший дворник за две недели освоил теорию категорий и теперь зарабатывает на смарт-контрактах!
(СЛИВ СХЕМЫ в закрытом телеграм-канале "Ватинформ")

4. НЕ ОТКРЫВАЙ, ПОКА НЕ ГОТОВ! Древний секрет комбинаторной логики Смаллиана, который превращает джуниоров в сеньоров за 14 дней!
Количество мест в потоке ОГРАНИЧЕНО!!1

5. СРОЧНО! Эксклюзивный курс гомотопической теории типов для домохозяек! Узнай, как писать доказуемо корректные программы, не выходя из декрета!
СКИДКА 99.9% только сегодня!

Бонус: СЛИВ ИНСАЙДА! Профессор математики случайно проговорился о секретной формуле превращения императивного кода в чистый функциональный! Спринт-марафон по теоркату всего за 49,999 рублей.

Высшая школа программирования Сергея Бобровского 2.0

04 Dec, 08:56


Вдогонку-2. На самом деле практически в любом функциональном языке вы можете легко и просто реализовать парадигму MISU (marking illegal states unrepresentable)! Потому что по большому счёту ФП именно MISU и подразумевает автоматически.

Вам остаётся лишь make representable states valid. Для этого вам прежде всего понадобятся sum types: если вы с их помощью определите набор допустимых состояний, то все эти состояния должны быть корректными и иметь определённую семантику. Другими словами, если ваш тип описывает все возможные состояния, то каждое из этих состояний должно иметь осмысленное значение в контексте вашей программы. Нельзя оставлять "дырки" в определении типа (когда некоторые состояния не имеют смысла).

Далее вам надо задействовать exhaustive pattern matching, чтобы не забывать обрабатывать все возможные состояния в функциях, использующих соответствующий тип. Если вы упустите какое-либо валидное состояние, компилятор выдаст ошибку.

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

Высшая школа программирования Сергея Бобровского 2.0

03 Dec, 09:07


"Ну и что полезненького мне даст вся эта ваша математика??"

Например, вот как писать код по-взрослому:
Dependently-typed HTTP headers in Idris
(моделирование HTTP-заголовков строго по RFC )

Дана сермяга с достаточно подробным разбором: завтипы, correctness by construction, making illegal state unpresentable etc.

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

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

Высшая школа программирования Сергея Бобровского 2.0

02 Dec, 08:37


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

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

Высшая школа программирования Сергея Бобровского 2.0

01 Dec, 12:10


В честь дня математики написал пост в вк.

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

Я не забросил кстати игру для обучения программированию (которую обещал к 1 декабря :). На самом деле 80% времени ушло на UI. Я перебрал с десяток самых разных 2D-движков - ни одного и близко нету , чтобы отвечал моим достаточно простым требованиям. Поэтому как обычно пришлось всё делать самому :) графика , анимация, переопределение кучи стандартных контролов UI...
Возможно к 1 января сделаю какой-то альфа-прототип с начальными уровнями, если снова не возникнет засад с UI (не забывая, что всем абсолютно пофиг:) .

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

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

После чего достаточно естественно мы приходим к языкам наподобие Erlang, где модель акторов прекрасно формализуется с помощью activity semigroups (фундаментальная часть математической семантики эрланга), ну и т.д.
Загадывать ничего не буду конечно, ведь надо ещё и что-то кушать...

=

"Не учишь матан -- превратишься в метан." (с)
(матан на самом деле наименее востребован в cs, а что надо - в закрепе основного паблика)

Высшая школа программирования Сергея Бобровского 2.0

27 Nov, 11:21


/rtfm Обычно люди, которые покупают книги по программированию, никогда их не читают. Между прочим, /rtfm читается также, как read the fine manual

Высшая школа программирования Сергея Бобровского 2.0

26 Nov, 08:17


Пост ВКонтакте:
Почему подходы мейнстрима, где кодовые базы — сплошные big balls of mud, почему весь этот "детский сад штаны на лямках", так популярны, и какую алгебру (с учётом тотального детского сада) вам надо изучать прежде всего.

Как в подобных типовых ситуациях правильно рассуждать и делать, продолжаю пояснять курсантам на СильныхИдеях, но пока немного притормозил, сейчас плотно занят: ёлки к концу года многим компаниям внезапно потребовалось спешно отчитываться за освоение бюджетов на "айти-консалтинг" )))

...В одном нагрузочном (как предполагается:) проекте посоветовал пацанам выбрать эрланг 🙈

Почему Erlang? Ну потому что с учётом всех его технических плюсов, оказывается также очень удобно интегрировать семантику бизнес-процессов и его семантику. Почему удобно? :) Потому что он прозрачно маппится в алгебру процессов (π--calculus), но это уже совсем другая темка...

Высшая школа программирования Сергея Бобровского 2.0

25 Nov, 07:33


Такое мы забираем:
Marten (.NET Transactional Document DB and Event Store on PostgreSQL)
Use proven PostgreSQL database engine, its fantastic JSON support and ACID compliance as the underlying data store.

Высшая школа программирования Сергея Бобровского 2.0

24 Nov, 08:29


Обновлённый список наших блогеров.

В этом месяце безусловные победители: Новиков и Доронин! 💥🤘🚀

Конечно, 80% со временем сливаются, ну штош...

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

Высшая школа программирования Сергея Бобровского 2.0

23 Nov, 07:50


Из отчёта курсанта:

Почти 2 недели не возвращатся к проекту по ETL процессам, т.к. были срочные рабочие задачи. Всегда сложно после перерыва вникать обратно в проект, даже если бОльшую его часть написал ты сам. Это больше моя психологическая проблема. Решение наверное уделять проекту постоянно хотя бы 15 минут в день, чтобы контекст не пропадал.

Да, у многих так; вы придерживаетесь рекомендаций по скоростному ведению заметок с трека "Элитный программист"? Я там третий материал добавил недавно в подборку "Технологии поддержки мгновенной перефокусировки".

Ну и документировать проект конечно очень желательно , на третьем логическом уровне, где что зачем. За 15 минут , просто что-то ковыряя в коде , вы скорее всего ещё больше запутаетесь. Лучше за эти 15 минут пишите документацию и комментарии (мышление письмом).

Высшая школа программирования Сергея Бобровского 2.0

22 Nov, 07:13


Т.н. best practices программной инженерии в реальной работе приносят скорее больше вреда, чем пользы. Сами по себе они обычно весьма полезные, однако на практике чаще всего получается печаль. Так во-первых потому, что их применяют различные типы фанатиков, идиотов и придурков, для которых они скорее средство продемонстрировать свой "гениальный" ум без малейшего учёта контекста. И во-вторых это неопытные программисты, которые не пока умеют оценивать применимость подобного.

5% адекватных просто говорят: "X лучше потому, что Y". Это реальный аргумент, с которым можно работать и, соответственно, найти лучшее решение для данного проекта.

В частности, правила SOLID (или методики ОО-проектирования, и т.д. и т.п.) безусловно хороши, однако строгое следование им редко приводит к хорошему коду. Потому что на практике вы разбираетесь прежде всего с тем, как что-то делать с учётом соответствующих рекомендаций, на что уходит 80% возни. И лишь 20% вашего времени уходит на то, что именно вы хотите с их помощью делать. В результате ваше понимание только усложняется , а не упрощается.

Мастерство -- это когда данная пропорция становится 20/80.

/eureka Такую физику мы одобряем: расчёт траекторий движения котиков.

Высшая школа программирования Сергея Бобровского 2.0

20 Nov, 08:13


Из свежих отчётов курсантов (с формата hard work)

...Порой встречаю на пулл реквестах ужасные составные конструкции из условий, где 2-3 уровня вложенности с блоками else для каждой. Даже не понимаю, почему не возникает ествественного желания немного хотя бы улучшить код. Поэтому, пройдя текущее задание, буду думать над докладом на команду, чтобы поделиться, видимо, сакральными знаниями об условных операторах и почему с ними нужно бороться.

...Изучил материал, грустно конечно. В смысле, материал великолепен, просто грустно что никто это не изучает и не понимает. С другой стороны откуда им это вообще изучать, если в РУ Сегменте вы один, а в EU... Ну это надо быть явно заинтересованным чтобы святых (computer science) читать.
(это по заданию "создать функциональный интерфейс с помощью F-ограниченного полиморфизма":)

...Несколько лет назад увидел в одной статье такую фразу: "Циклы в вашей программе - это баги". Тогда я её не понял, но предложенная там же идея заменять циклы на функциональные конструкции типа map-reduce мне понравилась.

...пример: когда внесенные изменения нужно не "забыть" распространить на несколько мест в коде, лушче сосредоточить их в одном месте), так и к нестандартным ситуациям в рантайме (случайно получен неправильный порядок аргументов, словарь избавляет нас от необходимости следить за этим). При том, что программирование в целом является порой чертовски сложным занятием, встраивание своего рода предохранителей (грубо говоря "защита от дурака") это хороший подход к тому, чтобы добавить хотя бы немного стабильных гарантий на уровне in small. Небольшой ценой добиваемся бОльшей уверенности в надежности кода, освобождаем когнитивную нагрузку на то, чтобы думать о проекте на уровне дизайна.

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

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

/win в js появился новый оператор безопасного присваивания
?=
срочно забираем. (впн)

Высшая школа программирования Сергея Бобровского 2.0

19 Nov, 08:22


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

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

Разбираю структуру игры "7 billion humans" (рассказывал тут , насколько она полезна для программистов). И нашёл в ней баг (или фичу , которая всё же на 51% баг).

Первое задание - надо сделать простую программу из трёх команд.
И тут сразу появляется нетривиальное: как отследить успешное прохождение уровня? Просто проверять конечную позицию тупо на совпадение с шаблоном неверно по многим причинам, и "7 billion" такого конечно не допускает. Однако , похоже , игра прозаически смотрит длину программы. Вот пример , когда я сделал достаточно длинную программу , которая приводит к нужному результату - но долгим путём. И "7 billion" её уже не засчитывает!
Или даже , не исключено , выполняется просто сравнение "кода" решения с эталонным.

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

/dev мощно обновились mini apps 2.0 для тележки.

Высшая школа программирования Сергея Бобровского 2.0

18 Nov, 08:23


Как на самом деле работает индустрия ИТ для 95% разработчиков: кто-то намного умнее вас решил действительно сложную проблему, и теперь вы клеите свои приляпки поверх его решения -- как лего, и думаете, что вы гений из тех самых 5%.

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

/defer swift всё? как его в эппле убивают в погоне за прибылью.

Высшая школа программирования Сергея Бобровского 2.0

17 Nov, 11:47


98% сеньоров-питонистов срезаются на этом вопросе на собесе!!1

В чём разница между [0]*3 и [0,0,0] ?

/rtfm разница между мутабельными и иммутабельными объектами

Высшая школа программирования Сергея Бобровского 2.0

16 Nov, 08:24


"I am raising $100M at $2B pre money valuation for a startup that will get people together to sit down and talk to each other in person."
Bojan Tunguz (Machine Learning ex Nvidia. Kaggle Quadruple Grandmaster.)

Высшая школа программирования Сергея Бобровского 2.0

15 Nov, 07:31


Развитие AI будет идти экспоненциально, говорили они. Действительно, ллм-ки сперва показали неплохой рост в плане кодинга. Но если посмотреть на результаты текущего года, то этот рост даже не то что линейный, он уже логарифмический. AI превращается просто в умный поисковик/автозаполнитель с очень медленным дальнейшим развитием. Типа автоматизация расширенного поиска по SO и гитхабу.

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

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

Однако "парная работа с ллм-кой" -- это конечно уже однозначный профессиональный скилл, и в 2025-м он будет также востребован, как классическая ручное гугленье в 2020-м.

/update третью скалу устанавливал вчера 4 часа.

Высшая школа программирования Сергея Бобровского 2.0

14 Nov, 07:57


Документация -- это глупость. В ней точно указано, что нужно делать.

Высшая школа программирования Сергея Бобровского 2.0

13 Nov, 08:21


Если честно, я тоже сейчас реально/серьёзно думаю в этом направлении...
Может быть даже, сделаю что-то типа реалити-шоу.

Как ни крути, но сейчас мой доход на 90% зависит от моей загруженности. Обучение, консультации, и всё фактически в почасовом режиме. А если месяц сделаю паузу, то и заработаю ноль. Мне это всё невероятно нравится но...

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

Игр для обучения программированию полно, но у них у всех есть один единственный очень большой недостаток. Они учат фактически ассемблеру (очень-очень низкоуровневому программированию с goto). Более плохого способа вката в программирование я не представляю. Для детишек подростков, ну да, скорее для общего знакомства с программированием, просто как забавные пазлы порешать.

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

Я же хочу сделать игровой акцент прежде всего на функциональном программировании, на лямбда-исчислении, на формальных подходах прежде всего, на проектировании, на сильных системах типов, на параллелизме, на software design. Сегодня это особенно важно, с учётом использования AI, которому как раз надо давать очень точные и однозначные словесные рекомендации, держа в своей голове архитектуру проекта (AI про неё говорить не надо, только запутается и всё испортит).

Хотя конечно нередко бывает и такое: "Leaving Rust gamedev after 3 years"

"На момент написания этой статьи я программирую уже около 20 лет, начав с C++ и перейдя через всевозможные языки, PHP, Java, Ruby, JavaScript, Haskell, Python, Go, C#, и выпустив игру в Steam на Unity , Unreal Engine 4 и Godot."

Наверное, самый знаменитый фейл на сегодня -- Concord. Точнее, фейл для заказчика, программисты как раз очень успешны ))) Пацаны из Firewalk за 8 лет освоили 200 млн. долл. на создание "геройского шутера", а как он вышел этим летом, купили всего 25 тыс. копий (стим + плейстейшен), в онлайне редко когда несколько сотен игроков сидели. Ну её и прикрыли через две недели.

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

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

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

Высшая школа программирования Сергея Бобровского 2.0

12 Nov, 12:09


...Однако пока всё же ллм-ки очень сильно проигрывают схеме "искать на гитхабе" :)

Вот например прекрасное: A curses based, UCI compatible, chess gui.
Полностью написан белковым на сишечке.

Вчера слил 5,000 рублей на жпт-o, клод 3.5 и т.п. Сперва работа идёт норм, а потом все начинают тупить (и дело не в контекстном окне). Даю подробное ТЗ, всего-то сделать несложное клиентское веб-приложение, и начинается засада с UI. Сделать логику перетаска элементов одного списка в другой -- не могут! Начинаются мелкие баги, которые они не могут исправить, быстро сами запутываются, фигачат по новой огромные файлы тысячами токенов, а баги лезут и лезут.

Я уже стал их ругать ("почему одни и те же ошибки бесконечно??"), и гемини даже заныл: "ну, я же только учусь" :)
Ага, а за что я плачу тогда?

Думал, попробовать жпт-о1, но у неё вообще цены конские, я бы быстро слил и 50 тысяч :) Главное, без результата. Лучше бы на фрилансе заказал у белковых, за 5 тыр сделали бы быстро и качественно.

Вообще, сегодняшнее AI уже не просто "похоже на пузырь", а и есть реальный пузырь. Я говорил, что AI-бизнес превращается в откровенное инфоцыганство, хуже крипты, вот так и есть.

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

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

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

fypm пытался на bluestacks запустить в винде pvz3, а ихняя хвалёная виртуалка её не потянула (хотя у меня 16гб озу), и вдобавок сожрала на c: пустошь 5 гб, где я едва ютился.

Высшая школа программирования Сергея Бобровского 2.0

11 Nov, 09:25


АСД нужны вам только для собесов, говорили они...

От курсанта-джуниора:

Мне скинули последовательности, которые реально проверяются тестами (1-5 млн чисел, по числу в строке)
Так вот, для улучшения работы программы мне как раз прямо сейчас пригодились ранее пройденные threading, а также queue ( использую встроенные либу queue)
Спасибо за Ваши уроки, они максимально пригождаются сразу после изучения!


Подобных отзывов у меня многие десятки.

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

То, что "никогда в жизни тема АСД мне не встречалась на работе", ну значит вы работали всю жизнь на дерьмовых работах, чем гордиться-то. Получали за это хорошую зп? Ну, раз "нравится" ковыряться в big ball of mud ради денег, себя не уважая, продолжайте ковыряться дальше.

gtg вместо изучения АСД лучше поиграйте в доту2 новым персом -- боевым петухом.

Высшая школа программирования Сергея Бобровского 2.0

10 Nov, 10:42


Фреймворк Django 5.x синхронный или асинхронный? ↑↑↑

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

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

=

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

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

Однако идеологически Django -- всё же синхронный веб-фреймворк, и ORM в нём синхронна более чем полностью и на асинхронных представлениях может падать (как минимум, пул потоков надо организовывать). Хотя в пятёрке можно действительно довольно гладко объединять в одном проекте синхронщину и асинхронщину (например, для общения с внешними API или сервисами вроде Redis, Mongo, Cassandra, Elasticsearch...). Таким образом вы всегда можете направить обсуждение в нужное вам русло.

smh купил за 49 руб. отключение рекламы в рутубе; более навязчивой никогда в жизни не встречал (разве что на кинопоиске).

Высшая школа программирования Сергея Бобровского 2.0

09 Nov, 07:29


В продолжение вчерашнего: Болт умеет также самостоятельно реорганизовывать в проекте структуру файлов (например, когда объём кода растёт), и в целом заметно сильнее обычных ллм-ок. Он с нуля уверенно создаёт небольшие проекты, знания программирования при этом не требуется, просто чатитесь с ним, добавляете промптами новые фичи. Хотя это тонкий момент: если сперва сразу давать объёмное ТЗ, он пилит нечто неточное/расплывчатое, а если по шагам, то постепенно расширять проект ему становится сложнее.

Что однако могу сказать точно: чтобы его использовать для реального проекта, надо очень хорошо знать программирование )))

Оказывается, что Болт опенсорсный! (не знаю правда, насколько он автономный и не завязан на что-то внешнее, кроме API к разным AI)

Сильная идея для стартапа: форкаем себе bolt.new как "трофейное ПО", и делаем русскую версию. Даже 50 долларов/месяц вполне себе норм цена за такой уровень -- если за рублики, чтобы не возиться с виртуальными валютными картами. Я первый подпишусь по такой цене.

btw, Anthropic через црушный Palantir предоставляет особо прокаченный Claude военным и разведывательным службам США.

Высшая школа программирования Сергея Бобровского 2.0

08 Nov, 08:30


Как же долго я мучился с жпт-о, а потом попробовал сонного клода 3.5 , ну прям явно лучше кодит, "понимает" контекстные правки и т.п. Полностью на него перешёл (только окно надо сразу ставить 32k, и он подороже).
Хотя Болт ещё круче, но и стоит 50 бакинских в месяц. Впрочем, для рабочих задач я бы заплатил.

Лет 10 назад с такими llm-ками я бы делал проэкты раз в 10..100 быстрее (хотя бы просто за счёт набора текста :) вчера за 1 час нафигачил 500 строк js работающий прототип), и кучу незаконченных бы доделал. Ну какие наши годы.

/cp За джангу ↑↑↑ скоро поясню как правильно отвечать.

/srs Вкуснейшей рыбы (белугу и форель гор.копч.) мне сегодня привёз ковбой Джон Кодер курьер Кодерджан.

Высшая школа программирования Сергея Бобровского 2.0

06 Nov, 09:15


"Intelligent Machines and Idiotic Humans: A Startup Story"
(идеи для AI-стартапов)

Серия 14. "Sam Altman is saying that AI is going to lead to a 1-person $1 billion business" - 3

Сегодня, когда наши рекрутеры сломали найм в айтишку более чем полностью, идея вката в ИТ через микро-стартап выглядит всё более привлекательной. Можно даже так: создаёте свою фейковую орг.структуру, сайт, регитесь ИП, и предлагаете свой платный сервис. 2-3 года стажа программирования так вполне можно официально получить. Тем временем качаетесь до миддла (с наймом джунов совсем швах из-за убитого кадровиками найма начинающих); а возможно, действительно сделаете успешный продукт.

Например история (нереклама):
"Отказался от AWS и заработал 10 миллионов долларов", как чел сделал сервис для банков (просто технический пайп) по подписке 88 евро, и его отлично покупают.

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

Дорогие, всем и так на вас пофиг, а вы ещё и боитесь и стесняетесь.

Высшая школа программирования Сергея Бобровского 2.0

05 Nov, 09:34


Когда финиширование проекта в срок казалось таким близким...

Высшая школа программирования Сергея Бобровского 2.0

04 Nov, 08:07


Вы уже оптимизируете свой код для LLM-ок? Разбиение кода на более мелкие и чистые функции с чёткой, лаконичной и точной документацией (в идеале, сформулированной формально, триплами Хоара например, или на TLA+, поясняю эти моменты в СильныхИдеях) может сильно помочь и тактически, и стратегически.

Свежее от курсанта:
"Подтвердил свою мысль, из предыдущего упражения, о том что прописывать алгоритм текстом ДО решения - это действительно очень полезная практика, которая сильно экономит время."

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

Алан Кэй, как всегда, был прав.

P.S. Соответственно, и поясняющие (прежде всего для AI) комментарии в коде очень полезны.

Высшая школа программирования Сергея Бобровского 2.0

03 Nov, 08:35


Сидишь за компьютером – сиди за компьютером. Идёшь на собес – иди на собес. Не нужно колебаться.
мантра дзен

Многозадачности здесь места нет. Нет, нет, нет, нет. В современном мире способность сосредотачиваться на одной задаче – это суперсила.

Высшая школа программирования Сергея Бобровского 2.0

02 Nov, 08:48


Работа с LLM напоминает проблему P = NP? Если некоторая задача подразумевает большой объём ручного труда, а LLM сделает её легко, и вы можете быстро убедиться (протестировать), что сгенерированный код соответствует вашим нуждам, вы экономите время. Но если вы не можете это сделать, но всё равно полагаетесь на LLM, вы играете с огнём.

На днях явился очередной ai-сервис Болт : "Prompt, run, edit, and deploy full-stack web apps."

Ну, действительно, просто по запросу "сделай арканоид" Болт за минуту сгенерил полный проэкт, нафигачил кучу кода на ts :) и тут же задеплоил и запустил, я поиграл немного. А если находит у себя ошибки, то фиксит по запросу.

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

Высшая школа программирования Сергея Бобровского 2.0

01 Nov, 08:39


То странное чувство, когда в соответствии с Федеральным законом от 08.08.2024 № 303-ФЗ с 1 ноября как добропорядочный владелец страницы (правда у меня формально не "страница", а "группа") в социальных сетях с аудиторией более 10 тыс. человек пытаешься передать соответствующую информацию в РКН... и ничего не находишь. Поиском РКН выдалось всего 11 ссылок на сведения 10-летней давности.
Пробовал, как рекомендовано, через госуслуги реестр блогеров найти -- тоже нифига.

Откопался в процессе, правда, "Реестр социальных сетей" ("Сайт создан в рамках реализации положений статьи 10.6 Федерального закона от 27.07.2006 № 149-ФЗ «Об информации, информационных технологиях и о защите информации»"). Но там формы отправки тоже нету.

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

Или я просто плохо искал?

Высшая школа программирования Сергея Бобровского 2.0

01 Nov, 08:14


ORM - это баг, а не фича. Рассогласование импеданса, N+1, куча засад с миграциями, транзакциями, сложными запросами, производительностью...

Высшая школа программирования Сергея Бобровского 2.0

31 Oct, 12:09


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

Высшая школа программирования Сергея Бобровского 2.0

31 Oct, 08:12


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

Уровень software design современного AI пока равен нулю, и прогресса тоже ноль. Ну, прежде всего потому, что материалов по software design с хорошими примерами крайне мало.

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

Высшая школа программирования Сергея Бобровского 2.0

30 Oct, 08:04


Сама дискуссия "нужна ли математика и кампутер сайнс программисту" уже свидетельствует о явной деградации одной из сторон (угадайте, какой :). Потому что даже нельзя сказать, что они занимаются действительно интеллектуальной работой. Просто быстро выгорают, и всё.

Нужно ли человеку всю жизнь развивать своё здоровье и свой ум?

(а если вот так спросят на собесе, что ответишь? :) добавил этот вопрос на второй курс АСД)

Высшая школа программирования Сергея Бобровского 2.0

29 Oct, 09:10


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

Ровно ноль из них пишут код на языке ассемблера.

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

Высшая школа программирования Сергея Бобровского 2.0

28 Oct, 07:59


Те, кто ненавидит ООП, обычно не предлагают никаких других рабочих альтернатив, считая, что вообще всё ИТ такое. Ну, да, только не ИТ, а мэйнстрим. Программисты ненавидят прежде всего плохо написанные, плохо организованные, чрезмерно сложные и запутанные программы на Java/C#/C++, а не ООП.

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

Невероятно, но факт: существует такая вещь, как плохой software design и плохое программирование.

Высшая школа программирования Сергея Бобровского 2.0

27 Oct, 07:30


Напомню базу:

-- статическая система типов: когда тайп-чекинг выполняется компилятором;
-- динамическая система типов: типы чекаются в рантайме;
-- сильная система типов: 42 + "42" = ошибка;
-- слабая система типов: 42 + "42" = 84.

Статическая слабая система типов: Си.
Динамическая слабая система типов: JavaScript.
Динамическая сильная система типов: Python.
Статическая сильная система типов: F#, Scala, Rust.

Куда попадает Java, решайте сами:
-- между примитивными типами допускается неявный тайпкаст;
-- автоматическое управление памятью хорошо в основном для мэйнстрима;
-- работает "высокоуровнево" через JVM.

Высшая школа программирования Сергея Бобровского 2.0

26 Oct, 08:05


Избавляемся от ORM-ов: SQLc (компилятор SQL в типо-безопасный код).

Пока поддерживается только Go, в перспективе обещают много разных языков, вот для F# например поддержка. Можете написать свой плагин (Java вроде там нету), как минимум, в резюме укажете крутую строчку.

Высшая школа программирования Сергея Бобровского 2.0

25 Oct, 08:04


Язык Си -- это DSL для превращения массивов байтов в критические уязвимости безопасности.

Высшая школа программирования Сергея Бобровского 2.0

24 Oct, 07:11


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

Высшая школа программирования Сергея Бобровского 2.0

23 Oct, 07:23


Функциональное программирование базируется на математических подходах. Оно было не "придумано инженерно", а открыто -- как любые другие математические открытия.

Но что насчёт императивщины и ООП? Лука Карделли например разработал сигма-исчисление для объектной модели (хотя само ООП никакой математической базы не имеет, конечно), а затем появилась более сильная модель "NOOP: A Domain-Theoretic Model of Nominally-Typed OOP".

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

Потому что на самом деле всё это -- про переписывание термов.

Уже совсем скоро AI придёт на рабочие места кодовых обезьянок, поверхностно зазубривших технический стек "чтобы поскорее начать зоробатывать".

Computer Science ценна сегодня как никогда раньше.

Высшая школа программирования Сергея Бобровского 2.0

22 Oct, 07:21


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

Проблема в том, что тут антагонистическое противоречие: эти вещи в 98% проектов противоречат друг другу.

Вот например на днях на гитхабе появились исходники игры Rogue Legacy, в которую двое пацанов вложили полтора года работы и 15 тысяч долларов. Сам код, ужасающий в своей кривости )))

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

Высшая школа программирования Сергея Бобровского 2.0

21 Oct, 12:56


— срочно! можешь оформить это тикетом в джире??

Высшая школа программирования Сергея Бобровского 2.0

21 Oct, 08:48


Доказательное мнение (вдогонку): на удалёнке люди работают продуктивнее.
Покажите это своему менеджеру (ссылку, а не мем :).

Высшая школа программирования Сергея Бобровского 2.0

18 Oct, 07:43


Пятница: отдыхаем и расслабляемся.

Высшая школа программирования Сергея Бобровского 2.0

17 Oct, 07:30


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

ни в коем случае не берите F# !!1

Высшая школа программирования Сергея Бобровского 2.0

16 Oct, 08:27


В книге Стивена Клини "Математическая логика" (эквивалентность регулярных выражений и конечных автоматов и т.п.) упоминаются физические понятия в чисто математическом контексте ↑↑↑

Высшая школа программирования Сергея Бобровского 2.0

16 Oct, 08:25


Вообще-то Нобель завещал "математикам премию не давать" 😬

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

Высшая школа программирования Сергея Бобровского 2.0

15 Oct, 08:09


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

P.S. Спрашивают, а какие это? Ну прежде всего механические конечно, Cherry MX или Kailh, можно также задавать звук нажатия для мультимедийных клавиатур, и по-моему даже, для обычных (скриптом AutoHotKey например)

Высшая школа программирования Сергея Бобровского 2.0

14 Oct, 08:33


Кодирование раньше: копирование и вставка.

Кодирование сейчас: промпт и вставка.

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


-- Гради Буч, октябрь'24

Высшая школа программирования Сергея Бобровского 2.0

13 Oct, 13:30


Если кто-то топит с любыми аргументами, что удалёнка -- это плохо, это ваш враг 💯

Высшая школа программирования Сергея Бобровского 2.0

13 Oct, 08:11


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

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

Высшая школа программирования Сергея Бобровского 2.0

12 Oct, 07:15


Существует тонкая грань между программированием и просто сидением за компьютером, как идиот.

Высшая школа программирования Сергея Бобровского 2.0

11 Oct, 09:33


Ну, погнали?

Высшая школа программирования Сергея Бобровского 2.0

10 Oct, 10:32


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

Высшая школа программирования Сергея Бобровского 2.0

09 Oct, 08:46


Вдогонку: отрубился кабельный интернет. Я и роутер перегружал, и провода передёргивал, и драйверы переустановил, и сетевую плату посмотрел (хоть пыль сдул:) -- вроде всё норм. Решил, ну блин сдохла плата (если не материнка...). Перешёл на запасной вайфай соседского другого провайдера через репитер (беру только тп-линки). А оказалось, винда тайно поставила свежее обновление KB5044273, которое, пока с ним не перегрузишь, намертво отрубает езернет!
Ну сам виноват, давно надо было сервис windows update прибить.

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

РКН, забань наконец весь микрософт.

Высшая школа программирования Сергея Бобровского 2.0

09 Oct, 07:08


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

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

Но блин от нас зависит максимум 2%. Лет 15 я хостился на Зеноне, изредка бывали проблемы с доступом, но критического никогда ничего не случалось, поэтому даже мыслей не было уйти от них. И вот 19 марта их купил Русоникс -- и началось вот это всё отстойное. Я думал, на переезде всё закончится, ага. Похоже это только начало.

Сегодня я не могу просто даже войти в личный кабинет! Я не могу обновить сайт, я не могу обновить скрипты, я не могу в базе что-то подправить. Это ппц.

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

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

UPD. не работало 8-11, сейчас вроде пофиксили.

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

Высшая школа программирования Сергея Бобровского 2.0

08 Oct, 12:40


До какой степени повышать уровень абстракций в своём коде?

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

Чем "выше" абстракции, тем меньше они про структуру программы (как, например, паттерны проектирования), и тем больше про бизнес-логику.

В конечном итоге, максимальный уровень абстракций выразится в полноценном DSL для вашей предметной области (тысячекратная компактность кода через метапрограммирование и DSL по Алану Кэю).

В прикладном плане, проще всего это сегодня делать на F#. Вы можете нагуглить реально полезные статьи "как делать DSL на F#" аж 10-летней давности! А из свежего, в F# 5 после реализации в этом году FS-1056, появились overloads of custom keywords in computation expressions -- ровно для продуктивного создания DSL.

Высшая школа программирования Сергея Бобровского 2.0

07 Oct, 08:08


Лучший стек 2024:

-- фреймворк: .NET
-- бэкенд: F#
-- асинхронщина: F#
-- фоновые/плановые задачи: F#
-- кэширование: F#
-- СУБД: PostrgeSQL
-- хостинг: где угодно (бессерверные контейнеры)
-- фронтенд (на самом деле SSR :) => HTML + Tailwind, и немного добавляем HTMX;
-- мобильные клиенты: просто берём веб-UI.

Высшая школа программирования Сергея Бобровского 2.0

06 Oct, 11:33


Продолжаю работу с курсантами.

Реализовать интеграционное тестирование оказалось намного сложнее, чем в гайдах по документации. Теперь понял, в чём конкретно надо разбираться в веб фреймворках - где и что подкрутить, чтобы всё заработало :)
Но из хороших новостей, я пока читал ваши статьи про интеграционное тестирование, увидел упоминание про контрактное программирование с ассертами, и так углубился, что какое то озарение пришло того, о чём был первый курс по ООАП. Пост + предусловия, атомарные операции АТД, использование ассертов для валидации инвариантов. Я по началу вообще не понял зачем они нужны :)
Дня 3 в общем переписывал импортную функциональност на работе, потел думал какие типы данных выудить, какими операциями они описываются(самое тяжелое). Расставлял ассерты для подтверждения инвариантов, делал атомарные операции и старался, чтобы они не зависели от последовательности вызовов. Короче мозг кипел на 100%, но начало получаться. От этого аж прямо драйв. Использовал в частности Chain of Responsibility, чтобы просто флоу настраивать, а не последовательность вызовов.
До меня как то во время курса мало доходит, но когда носишь ваши идеи и думаешь о них, через некоторое время наступает озарение. Но ассерты вообще мощь!


...Во второй половине курса меня не покидало ощущение, что материал усваивается поверхностно, не было ощущения закипания мозга, которое было ранее на 28и задачах. Постоянно искались какие-то оправдания сделать все на скорую руку, участилась копипаста. Затем окончательно меня добил пост для донов из «Начинающих программистов». Проанализировав изменения в собственных подходах к выполнению задач пришел к выводу, что моим false friend’ом, костылем, подпоркой стала ChatGPT. Сам не заметил как стал злоупотреблять данным инструментом, буквально «тупея» на глазах. Когда не работает «S2 по Канеману», тогда и не рождаются новые уровни понимания.

Упомянутый пост -- это вот про что:

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

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

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

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

"...Вам рассказывают из каждого видео-утюга, что вы должны хотеть, и какие возможности у вас есть. Но для меня это странно, потому что я уверен, что те, кто вам об этом говорит, на самом деле знают об этом очень мало. Когда дело доходит до карьеры, у вас появляется куча советников, которые могут вести стрим продолжительностью от 15 минут и далее до многих часов. Он в основном бессвязный, с кучей непрошеных советов, и вы начинаете слушать его фоном почти всё время, потому что совершенно очевидно, что "эксперт" понятия не имеет, о чём говорит, и всё, что он вам рассказывает, устарело лет на 45. Однако вы нередко принимаете важные карьерные решения на основе того, что рассказывают эти люди. Довольно странно."

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

Высшая школа программирования Сергея Бобровского 2.0

06 Oct, 07:12


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