Вся история computer science -- это использование новой абстракции поверх другой.
Всё, что вы создаёте сегодня, базируется на сотне абстракций.
Если вы это не понимаете, то удивитесь, когда хороший сеньор покажет вам, что в каждой тысяче строк вашего кода имеется хотя бы одна монада. Только вы используете её крайне криво и неэффективно, т.к. просто не понимаете, что это эксплицитная абстракция.
Абстракции очень важны. Они хороши. Они нам нужны.
Конечно, абстракции вносят сложность. Не каждая абстракция -- хорошая абстракция. Не забываем, что они также скрывают то, что происходит за кулисами. В СильныхИдеях несколько последних материалов об этом.
Абстракции (как и всё остальное) -- не серебряная пуля. Любая абстракция, которую вы добавляете в свой проект, представляет собой компромисс. Стоит ли абстракция того или нет, зависит от ваших целей.
Всё, что вы создаёте сегодня, базируется на сотне абстракций.
Если вы это не понимаете, то удивитесь, когда хороший сеньор покажет вам, что в каждой тысяче строк вашего кода имеется хотя бы одна монада. Только вы используете её крайне криво и неэффективно, т.к. просто не понимаете, что это эксплицитная абстракция.
Абстракции очень важны. Они хороши. Они нам нужны.
Конечно, абстракции вносят сложность. Не каждая абстракция -- хорошая абстракция. Не забываем, что они также скрывают то, что происходит за кулисами. В СильныхИдеях несколько последних материалов об этом.
Абстракции (как и всё остальное) -- не серебряная пуля. Любая абстракция, которую вы добавляете в свой проект, представляет собой компромисс. Стоит ли абстракция того или нет, зависит от ваших целей.
❤36✍26👍5💯5🔥2
Mojo is a new programming language that bridges the gap between research and production by combining the best of Python syntax with systems programming and metaprogramming.
Mojo combines the usability of Python with the performance of C, unlocking unparalleled programmability of AI hardware and extensibility of AI models.
With Mojo, you can write portable code that’s faster than C and seamlessly inter-op with the Python ecosystem.
Реально крутая вещь, рекомендую.
Пока никакие LLM-ки его не понимают, поэтому тестовый лайв-кодинг можно проводить на нём :)
Mojo combines the usability of Python with the performance of C, unlocking unparalleled programmability of AI hardware and extensibility of AI models.
With Mojo, you can write portable code that’s faster than C and seamlessly inter-op with the Python ecosystem.
Реально крутая вещь, рекомендую.
Пока никакие LLM-ки его не понимают, поэтому тестовый лайв-кодинг можно проводить на нём :)
✍49👍8🔥7❤5😎3
Сила software design заключается не в том, что он может сделать, а в том, что он не позволяет вам сделать. Полная противоположность хорошему дизайну -- современные фреймворки. Это артефакты множества плохих идей, которые предлагают вам делать "всё что угодно", но только кривыми способами.
👍57🫡8❤6💯3⚡2
Почему переменные i, j и k так часто встречаются в коде?
Потому что они слишком малы, чтобы уйти далеко от дома!
(с) AI
Потому что они слишком малы, чтобы уйти далеко от дома!
(с) AI
😁57✍4👍4⚡2🫡2
Кодирование -- это самый последний шаг в создании программы. Первый шаг -- это принятие решения о том, чего конкретно и как именно мы хотим добиться. А лучшие методы для проработки последующих шагов заключаются в использовании простой математики.
Но совсем немногие программисты знают, как это делается, и где этому научиться. В моих новых курсах по software design на различных примерах я покажу это всё, и как эти методы реализуются в реальном программировании.
Но совсем немногие программисты знают, как это делается, и где этому научиться. В моих новых курсах по software design на различных примерах я покажу это всё, и как эти методы реализуются в реальном программировании.
👍66❤10😎2🙏1
Если вы пишете код без спецификаций (хотя бы, сознательно учитываемых в вашей голове, на третьем логическом уровне понимания проекта, из СильныхИдей; получше -- на уровне документации/кода; лучше всего -- в формальном виде, например TLA+), то он у вас получится и не плохим, и не хорошим. Это просто будет случайный набор команд с непредсказуемым поведением.
Любая работа над проектом без спецификаций будет медленно превращать "код, который делает деньги" в "код, который не делает деньги", а затем -- в "код, который пожирает деньги". Вы строите всё выше и выше крепость, построенную из случайных предположений. Она может рухнуть в любой момент под их абсурдной тяжестью как карточный домик, если сознательно не противодействовать этим силам с самого начала.
На эту тему в частности в СильныхИдеях скоро будет продолжение темы контрактов, интерфейсов и абстракций: как сразу делать ПРОСТО??
Любая работа над проектом без спецификаций будет медленно превращать "код, который делает деньги" в "код, который не делает деньги", а затем -- в "код, который пожирает деньги". Вы строите всё выше и выше крепость, построенную из случайных предположений. Она может рухнуть в любой момент под их абсурдной тяжестью как карточный домик, если сознательно не противодействовать этим силам с самого начала.
На эту тему в частности в СильныхИдеях скоро будет продолжение темы контрактов, интерфейсов и абстракций: как сразу делать ПРОСТО??
👍69🤔6⚡3❤1😎1
(я думаю, он скорее перепутал:)
Сейчас практически все каналы по нейросеткам забиты обсуждением/сравнением нейронок, которые генерируют видео (потом музыка и изображения). То есть пока никакой пользы от подобных сервисов, кроме дофаминовых "развлекалок", нету. А вреда полно ("с вами по видеосвязи хочет поговорить мэр Москвы Сергей Собянин").
По генерации кода всё как-то стихло. В основном LLM-ки растут вширь (многие десятки разных языков, Фортран и Кобол сегодня модно добавлять :), а по качеству за этот год прогресса не видно.
Пока AI успешно развивается преимущественно в человеческую глупость.
Сейчас практически все каналы по нейросеткам забиты обсуждением/сравнением нейронок, которые генерируют видео (потом музыка и изображения). То есть пока никакой пользы от подобных сервисов, кроме дофаминовых "развлекалок", нету. А вреда полно ("с вами по видеосвязи хочет поговорить мэр Москвы Сергей Собянин").
По генерации кода всё как-то стихло. В основном LLM-ки растут вширь (многие десятки разных языков, Фортран и Кобол сегодня модно добавлять :), а по качеству за этот год прогресса не видно.
Пока AI успешно развивается преимущественно в человеческую глупость.
✍41👍18😁11🤔10💯5
98% программистов, пишуших код в продакшен, делают это так, что их код говорит больше об их глупости, а не о мудрости. Они изучают разные "программистские технологии", но их подход к обучению -- глупый подход. Они получают знания, но эти знания граничат с глупостью. В результате глупость управляет их знаниями, глупость преследует их всю карьеру, вот что с ними происходит. Соответственно, все проектные решения, которые они принимают, могут их привести только к глупым результатам.
При этом они ещё и других учат быть глупыми. Они говорят, что учат других, чтобы те стали умнее, получили полезные для работы знания.. но стоит взглянуть на это всё глазами святых computer science, то становится понятно, что их "учения" ведут людей далеко в сторону от истинных знаний по информатике.
Истинные же ИТ-знания основываются прежде всего на математике, формальной логике, теории типов, языках спецификаций. В мире LLM-программирования именно эти скиллы станут наиболее полезными и прагматичными.
При этом они ещё и других учат быть глупыми. Они говорят, что учат других, чтобы те стали умнее, получили полезные для работы знания.. но стоит взглянуть на это всё глазами святых computer science, то становится понятно, что их "учения" ведут людей далеко в сторону от истинных знаний по информатике.
Истинные же ИТ-знания основываются прежде всего на математике, формальной логике, теории типов, языках спецификаций. В мире LLM-программирования именно эти скиллы станут наиболее полезными и прагматичными.
✍60👍11❤8🤔3🫡2
Для нового курса по software design, для раздела "почему давно работающий код всё ещё содержит баги" подбирал подходящий пример, когда 100% покрытия тестами не даёт гарантии корректности, ибо логика может быть такой сложной, что и сам автор без поллитра не разберётся, какие там возможны критичные случаи.
Взял такой достаточно наглядный пример, как несмещённая оценка дисперсии выборки. Мы стандартно тестируем, когда размер выборки 0, null, а также на ряде типовых примеров, и покрываем все условные веточки. Однако алгоритм подразумевает деление суммы квадратов отклонений не на число элементов, а на число элементов - 1. Поэтому при размере выборки в 1 элемент код будет вылетать с исключением.
Даю конечно рекомендации, что с этим делать, как правильно рассуждать и т.п.
Взял такой достаточно наглядный пример, как несмещённая оценка дисперсии выборки. Мы стандартно тестируем, когда размер выборки 0, null, а также на ряде типовых примеров, и покрываем все условные веточки. Однако алгоритм подразумевает деление суммы квадратов отклонений не на число элементов, а на число элементов - 1. Поэтому при размере выборки в 1 элемент код будет вылетать с исключением.
Даю конечно рекомендации, что с этим делать, как правильно рассуждать и т.п.
❤47👍19⚡4❤🔥2🫡2
Если вы хотите наиболее простую систему типов, то это вероятно будут зависимые типы (когда сами типы становятся объектами первого класса).
По взрослому, это Coq, F*, Agda, Idris, Lean. Но страшно далеки они от мэйнстрима :)
Однако в питончике уже есть, в некотором смысле, завтипы, т.к. он позволяет манипулировать ими (да и ещё много-много чем) нативно.
И при желании можно вот так легко и просто реализовать dependent types в Python.
По взрослому, это Coq, F*, Agda, Idris, Lean. Но страшно далеки они от мэйнстрима :)
Однако в питончике уже есть, в некотором смысле, завтипы, т.к. он позволяет манипулировать ими (да и ещё много-много чем) нативно.
И при желании можно вот так легко и просто реализовать dependent types в Python.
✍57👍6🤔3❤2🫡2
Первая моя попытка заюзать первую отечественную IDE (GigaIDE от Сбера) закончилась, пока, фейлом :)
Но я полностью на стороне Сбера (как сразу конкуренты задёргались).
А если бы даже и закопилефтили код недружественных структур, ну и что? Вы кто такие? Идите нафиг. Никакого уважения и никаких переговоров с ними вообще вести не надо, и тем более, что-то им пояснять.
Вот единственно верный ответ:
"Для этого надо и дальше искать критические уязвимости их экономик и бить по ним во всех сферах. Находить проблемы в их важнейших технологиях и беспощадно наносить удары по ним." (с)
P.S. Правильно это называть "Трофейное ПО" 😎
Но я полностью на стороне Сбера (как сразу конкуренты задёргались).
А если бы даже и закопилефтили код недружественных структур, ну и что? Вы кто такие? Идите нафиг. Никакого уважения и никаких переговоров с ними вообще вести не надо, и тем более, что-то им пояснять.
Вот единственно верный ответ:
"Для этого надо и дальше искать критические уязвимости их экономик и бить по ним во всех сферах. Находить проблемы в их важнейших технологиях и беспощадно наносить удары по ним." (с)
P.S. Правильно это называть "Трофейное ПО" 😎
👌43🤔19👍16❤🔥8😁5
Кроличья нора на выход из Матрицы стремительно сужается. Я думал, что не доживу, где-то лет через 20, предполагал, всё закончится, но AI так стремительно развивается, и туда такие триллионы долларов вкладываются, что уже совсем скоро навечно установится окончательный разрыв между богатыми и бедными.
Это десятилетие последнее, когда вы ещё можете, вкладывая дофига усилий и hard work, создать некую финансовую платформу на будущее (и то для этого фактически осталась единственная темка: ИТ). Свой пик развития человечество прошло в XX веке, и сейчас движется по тому же пути обратно, только ускорившись в тысячи раз.
Коммунизм => капитализм => общество совсем скоро снова станет феодальным => а потом закончится рабовладельческим.
Уже сейчас за ипотечную квартиру 15 млн. вам надо будет за 15 лет накинуть еще 30 млн. сверху. Каркасные домики за год подорожали в два раза. Цены на недвижку растут, аренда тоже скоро станет конской. Всё кончено.
=
Хотя, зачем делать что-то сейчас, если можно подождать, пока это не вызовет у вас жуткую тревогу?
Это десятилетие последнее, когда вы ещё можете, вкладывая дофига усилий и hard work, создать некую финансовую платформу на будущее (и то для этого фактически осталась единственная темка: ИТ). Свой пик развития человечество прошло в XX веке, и сейчас движется по тому же пути обратно, только ускорившись в тысячи раз.
Коммунизм => капитализм => общество совсем скоро снова станет феодальным => а потом закончится рабовладельческим.
Уже сейчас за ипотечную квартиру 15 млн. вам надо будет за 15 лет накинуть еще 30 млн. сверху. Каркасные домики за год подорожали в два раза. Цены на недвижку растут, аренда тоже скоро станет конской. Всё кончено.
=
Хотя, зачем делать что-то сейчас, если можно подождать, пока это не вызовет у вас жуткую тревогу?
🤔82🫡11😁5👌5🤯4
Лучший стек на сегодня например:
- NET Core
- F#
- Critter Stack (Marten + Wolverine)
- Postgres (как на нём одном можно создать вообще всю архитектуру, 14 фишек, рассказываю тут)
- RabbitMQ
- HTMX
- Alpine.js + Tailwind CSS
- хорошо бы дедик от Hetzner, но с ходу аналоги даже не назову (свободная ниша!)
- Ubuntu 24.04 + Omakub
- GigaIDE
- NET Core
- F#
- Critter Stack (Marten + Wolverine)
- Postgres (как на нём одном можно создать вообще всю архитектуру, 14 фишек, рассказываю тут)
- RabbitMQ
- HTMX
- Alpine.js + Tailwind CSS
- хорошо бы дедик от Hetzner, но с ходу аналоги даже не назову (свободная ниша!)
- Ubuntu 24.04 + Omakub
- GigaIDE
❤54✍24👍6🤔5🐳2
Создавайте в своих проектах как можно больше легаси (Java 8 максимум например) и ИТ-долга! 🤘
Это та основа богатства айтишников, которую не уничтожит никакой AI !
Изучите как следует SQL и 1 серверный фреймворк (Spring, Django...), и до конца жизни будете ездить на таких машинках ↑↑↑
"три года упорного труда -- десять тысяч лет счастья" (c)
Это та основа богатства айтишников, которую не уничтожит никакой AI !
Изучите как следует SQL и 1 серверный фреймворк (Spring, Django...), и до конца жизни будете ездить на таких машинках ↑↑↑
"три года упорного труда -- десять тысяч лет счастья" (c)
❤🔥59😁17👌8❤7🐳5
"Программирование -- это весело, но создание высококачественного программного обеспечения -- это сложно."
-- Крэг Ларман, "Применение UML и паттернов проектирования"
Это сложно не столько из-за технологий, сколько из-за того, что в процесс вовлечены белковые/кожаные, от природы не способные к рациональному восприятию мира (потому что думать -- это скилл, который развивать весьма тяжело).
-- Крэг Ларман, "Применение UML и паттернов проектирования"
Это сложно не столько из-за технологий, сколько из-за того, что в процесс вовлечены белковые/кожаные, от природы не способные к рациональному восприятию мира (потому что думать -- это скилл, который развивать весьма тяжело).
😁64👍12💯5🤔2👏1