В Java 9 появилась возможность очень компактно инициализировать Map с помощью Map.of(). На какой размер словаря этот метод рассчитан?
Anonymous Quiz
33%
на любой
34%
на 10 элементов
11%
на 10,000 элементов
14%
на 10,000,000 элементов
8%
на 10,000,000,000 элементов
5🤔41😁18👍5🤓4👌1
MIT выложил на рубут ютуб все лекции курса "The Missing Semester of Your CS Education": Shell Tools and Scripting, Editors, Data Wrangling, Command-line Environment, Version Control (Git), Debugging and Profiling, Metaprogramming, Security and Cryptography...
As computer scientists, we know that computers are great at aiding in repetitive tasks. However, far too often, we forget that this applies just as much to our use of the computer as it does to the computations we want our programs to perform. We have a vast range of tools available at our fingertips that enable us to be more productive and solve more complex problems when working on any computer-related problem. Yet many of us utilize only a small fraction of those tools; we only know enough magical incantations by rote to get by, and blindly copy-paste commands from the internet when we get stuck.
This class is an attempt to address this.
Как думаете, какой редактор там предлагают изучать? :)..... vim .....
As computer scientists, we know that computers are great at aiding in repetitive tasks. However, far too often, we forget that this applies just as much to our use of the computer as it does to the computations we want our programs to perform. We have a vast range of tools available at our fingertips that enable us to be more productive and solve more complex problems when working on any computer-related problem. Yet many of us utilize only a small fraction of those tools; we only know enough magical incantations by rote to get by, and blindly copy-paste commands from the internet when we get stuck.
This class is an attempt to address this.
Как думаете, какой редактор там предлагают изучать? :)
6🏆44👍32🐳6🔥5🤓3
Вкатываемся в понедельник. Мотивирующее от курсантов:
Я начал понимать, что делаю все абсолютно неправильно, и стал перекапывать свою иерархию и еще раз просмотривать непонятные моменты с предыдущих курсов. Отправляю так, чтобы сервер не забанил. Не баньте пожалуйста) Сейчас приведу знания в голове в порядок, и сделаю все ударными темпами...
В рабочих проектах никакой многоуровневой архитектуры не придерживаемся. Есть нагромождение библиотек, от некоторых из которых (сore, utils) зависит почти весь остальной проект...
Начался ад, наш продукт прямо зависит от внешних сервисов, которые не уведомляют своевременно( а то месяцами) об изменениях схем, потому на меня сыпятся баги, которые я не могу отладить порой нормально, потому что у них же технические работы :)
Дали ещё задачу на разработку ещё одного конфига( по итогу у нас будет аппконфиг, локалконфиг, конфиги из бд, и ещё один который должен собрать повторяющуюся часть из трёх ранее) ах да, конфиг для стендов и образов...
Все это выяснилось спустя два дня после начала моей оказывается неправильной работы, тимлид неправильно сформулировал задачу и продумал архитектуру, отчего очередной созвон с главным разработчиком на два часа.
Документаций нет, все из уст в уста, и попробуй понять что эти уста сказали ибо в терминах ты ещё плаваешь.
Дали напутствие додумывать задачи во время чтения ТЗ от аналитиков, ибо они и пишут процессы, но по факту они могут сломать поломать в будущем другие...
Я начал понимать, что делаю все абсолютно неправильно, и стал перекапывать свою иерархию и еще раз просмотривать непонятные моменты с предыдущих курсов. Отправляю так, чтобы сервер не забанил. Не баньте пожалуйста) Сейчас приведу знания в голове в порядок, и сделаю все ударными темпами...
В рабочих проектах никакой многоуровневой архитектуры не придерживаемся. Есть нагромождение библиотек, от некоторых из которых (сore, utils) зависит почти весь остальной проект...
Начался ад, наш продукт прямо зависит от внешних сервисов, которые не уведомляют своевременно( а то месяцами) об изменениях схем, потому на меня сыпятся баги, которые я не могу отладить порой нормально, потому что у них же технические работы :)
Дали ещё задачу на разработку ещё одного конфига( по итогу у нас будет аппконфиг, локалконфиг, конфиги из бд, и ещё один который должен собрать повторяющуюся часть из трёх ранее) ах да, конфиг для стендов и образов...
Все это выяснилось спустя два дня после начала моей оказывается неправильной работы, тимлид неправильно сформулировал задачу и продумал архитектуру, отчего очередной созвон с главным разработчиком на два часа.
Документаций нет, все из уст в уста, и попробуй понять что эти уста сказали ибо в терминах ты ещё плаваешь.
Дали напутствие додумывать задачи во время чтения ТЗ от аналитиков, ибо они и пишут процессы, но по факту они могут сломать поломать в будущем другие...
👍48🤔17😁10💯3❤🔥2
В 98% компаний проблемы с ит случаются из-за занудных или некомпетентных начальников, скучных задач, плохо/никак не организованных рабочих процессов, непродуманных продуктов/сервисов, растущего технического долга и т.п. На долю ошибок в коде приходится от силы 2%. Пофиксить баги -- самая простая часть в айтишке.
🤔50👍23👏5😁2🫡2
vk, как известно, "рубит охваты", мои материалы редко когда хотя бы 10% папищеков показываются :)
Написал несколько постов (совершенно нерекламных), почему программистам полезно понимать, что "монада -- это моноид в категории эндофункторов", и как это применять на практике :) Вот сегодняшний.
Решил показать их всем моим дорогим читателям (типа, "социальная реклама"), но vk уже три раза отказывает в продвижении трёх разных постов по этой темке (ни одного не пропустив!), потому что там где-то мифические "пунктуационные ошибки". Модераторы vk такие умные, что могли бы выигрывать шахматные партии... если бы только знали, как правильно расставить фигуры.
Вот другой пост, где мы начинаем переводить наши моноидальные патчи в категорию эндофункторов. Попробуйте найти, где там пунктуация нарушена :)
А если бы и нарушена, я в своих постах что ли должен писать только скучную вылизанную унылость?
Служба модерации vk напоминает мне королеву, у которой нет королевства: много короны на голове, а толку ноль.
Дуров, верни нормального начальника службы модерации.
Служба модерации vk похожа на сторожевого пса: много лает, но кусать не умеет. Они забанят тебя за отсутствие запятой, но пропустят откровенный спам.
Написал несколько постов (совершенно нерекламных), почему программистам полезно понимать, что "монада -- это моноид в категории эндофункторов", и как это применять на практике :) Вот сегодняшний.
Решил показать их всем моим дорогим читателям (типа, "социальная реклама"), но vk уже три раза отказывает в продвижении трёх разных постов по этой темке (ни одного не пропустив!), потому что там где-то мифические "пунктуационные ошибки". Модераторы vk такие умные, что могли бы выигрывать шахматные партии... если бы только знали, как правильно расставить фигуры.
Вот другой пост, где мы начинаем переводить наши моноидальные патчи в категорию эндофункторов. Попробуйте найти, где там пунктуация нарушена :)
А если бы и нарушена, я в своих постах что ли должен писать только скучную вылизанную унылость?
Служба модерации vk напоминает мне королеву, у которой нет королевства: много короны на голове, а толку ноль.
Дуров, верни нормального начальника службы модерации.
Служба модерации vk похожа на сторожевого пса: много лает, но кусать не умеет. Они забанят тебя за отсутствие запятой, но пропустят откровенный спам.
11👍64💯8🤔2⚡1🙏1
software design -- это искусство принятия правильных решений.
Но ещё больше это искусство не принимать неправильные решения.
Это понимание того, как проектировать систему так, чтобы сделанный выбор можно было безболезненно отменить.
И знать, когда и как вы должны сделать всё правильно с самого начала.
Но ещё больше это искусство не принимать неправильные решения.
Это понимание того, как проектировать систему так, чтобы сделанный выбор можно было безболезненно отменить.
И знать, когда и как вы должны сделать всё правильно с самого начала.
125👍65🏆6🔥1🫡1
Классная опенсорсная штука: ChartDB. Выбираете марку своей СУБД (только нужны последние версии конечно), вам выдаётся SQL скрипт, который ломает всю вашу базу формирует json со структурой вашей базы; вставляете этот json в ChartDB и за 10 секунд получаете красивую диаграмму, которую можно вдобавок вручную править в редакторе.
(можно и локально на работе задеплоить и получить премию:)
(можно и локально на работе задеплоить и получить премию:)
1👍56🔥19⚡4✍1
А разве этот пост у меня не на русском написан? 😎 ну воля ваша, как монополиста. Конечно, я понимаю эти придирки, но принципиально не буду ничего править, потому что мне совершенно пофиг; моя позиция однозначна: я прав, а вк нет 🤘
Пусть получится lose-lose. Не увидят больше 90% подписчиков мои посты.
Готовлю продолжение, скоро будет:
...В событийной архитектуре порядок событий имеет критическое значение, прежде всего в тех случаях, когда действия могут быть взаимоисключающими или зависимыми друг от друга.
Мы можем легко и просто реализовать поддержку последовательных цепочек событий, рассматривая например категорию событий (события как морфизмы, которые трансформируют состояние системы), и эндофункторы (функции, которые принимают состояние системы и возвращают новое состояние). Таким образом, цепочка взаимосвязанных событий может быть представлена как последовательное применение/композиция функций. Например, мы можем всю логику CRUD реализовать в контексте монады Maybe.
Но что с ассоциативностью? Да, мы теперь можем организовать свой код на монадах так, что порядок применения операций в нём будет предсказуем и инвариантен к способу комбинирования (функции будут работать правильно даже при изменении порядка комбинирования). И вроде бы очевидно, что вроде как "моноидальные" патчи в распределённой системе по всему CRUD ну никак не ассоциативны.
И вот что с этим делать...
P.S. В принципе, охват вк на 13 тыс. такой микроскопичный, что практически сравнялся с охватом тг на одну тыщу папищеков ) Поэтому, возможно, буду больше писать не в вк, а в тележку.
Пусть получится lose-lose. Не увидят больше 90% подписчиков мои посты.
Готовлю продолжение, скоро будет:
...В событийной архитектуре порядок событий имеет критическое значение, прежде всего в тех случаях, когда действия могут быть взаимоисключающими или зависимыми друг от друга.
Мы можем легко и просто реализовать поддержку последовательных цепочек событий, рассматривая например категорию событий (события как морфизмы, которые трансформируют состояние системы), и эндофункторы (функции, которые принимают состояние системы и возвращают новое состояние). Таким образом, цепочка взаимосвязанных событий может быть представлена как последовательное применение/композиция функций. Например, мы можем всю логику CRUD реализовать в контексте монады Maybe.
Но что с ассоциативностью? Да, мы теперь можем организовать свой код на монадах так, что порядок применения операций в нём будет предсказуем и инвариантен к способу комбинирования (функции будут работать правильно даже при изменении порядка комбинирования). И вроде бы очевидно, что вроде как "моноидальные" патчи в распределённой системе по всему CRUD ну никак не ассоциативны.
И вот что с этим делать...
P.S. В принципе, охват вк на 13 тыс. такой микроскопичный, что практически сравнялся с охватом тг на одну тыщу папищеков ) Поэтому, возможно, буду больше писать не в вк, а в тележку.
❤52👍33🔥10😁7🤯3
Как издеваться над программистами, делая code review? Набор анти-паттернов.
Особенно хорошо заходит в пятницу к концу рабочего дня.
"...Когда рецензент кода переходит на тёмную сторону, у него появляется огромный выбор способов помешать или отсрочить улучшения кода, досадить авторам исправлений или полностью обескуражить их, и т.д.
Если вы только недавно обратились к тёмной стороне, то, возможно, ещё не знаете всех возможностях. Итак, вот список антипаттернов для проверки кода -- для тех, кто работает на тёмной стороне, и у кого заканчиваются идеи.
Например:
"...При первом ревью кода вносите небольшие и простые изменения, но побольше: названия переменных немного непонятны, в комментариях есть опечатки и т.п.
Подождите, пока разработчик исправит это, а затем сообщите, что в риквесте есть гораздо более фундаментальная проблема, которая требует полного переписывания этой части кода (что означает также отказ от многих мелких исправлений, которые вы уже заставили разработчика сделать).
Ничто так не говорит о том, что "ваш труд никому не нужен, а ваше время не ценится", как то, что заставляет кого-то выполнять много работы, а затем заставляет его её выбросить. Этого может быть достаточно, чтобы разработчик сдался.
Особенно хорошо заходит в пятницу к концу рабочего дня.
"...Когда рецензент кода переходит на тёмную сторону, у него появляется огромный выбор способов помешать или отсрочить улучшения кода, досадить авторам исправлений или полностью обескуражить их, и т.д.
Если вы только недавно обратились к тёмной стороне, то, возможно, ещё не знаете всех возможностях. Итак, вот список антипаттернов для проверки кода -- для тех, кто работает на тёмной стороне, и у кого заканчиваются идеи.
Например:
"...При первом ревью кода вносите небольшие и простые изменения, но побольше: названия переменных немного непонятны, в комментариях есть опечатки и т.п.
Подождите, пока разработчик исправит это, а затем сообщите, что в риквесте есть гораздо более фундаментальная проблема, которая требует полного переписывания этой части кода (что означает также отказ от многих мелких исправлений, которые вы уже заставили разработчика сделать).
Ничто так не говорит о том, что "ваш труд никому не нужен, а ваше время не ценится", как то, что заставляет кого-то выполнять много работы, а затем заставляет его её выбросить. Этого может быть достаточно, чтобы разработчик сдался.
1✍40👍15🤓7🤯6⚡3
В контексте мифического задержания Дурова пошла очередная волна разговоров про "свой мессенджер" (за очередной миллиард рублей из кармана налогоплательщиков). Чтобы в нём зарегистрироваться, потребуется личная явка в МФЦ и нотариально заверенное фото с паспортом и военным билетом. Он будет настолько безопасный, что даже сами создатели не смогут в него войти.
А под капотом у него будет (только это военная тайна) что-то из этого:
-- Rocket.Chat : куча фич: чаты, каналы, видео-/аудио-звонки, множество интеграций... заодно Meteor 3.0 полезно поизучать
-- Mattermost : микросервисный аналог слака
-- Matrix -- децентрализация, федеративные чаты и каналы (неплохой выбор, потому что пользователям можно будет рассказывать сказки про его безопасность, конфиденциальность супер-защищённость за счёт end2end шифрования)
-- Zulip -- интересная фишка, внутри чата можно выделять разные тематические потоки.
и т.п.
Только в их доморощенной версии вы будете неделями смотреть на колёсико "Ожидание одобрения сообщения": каждое "привет" надо будет согласовывать с тремя начальниками и пятью департаментами.
=
Первое правило конспирологии: "Что бы ни случилось, это то, что они задумали с самого начала".
Во-первых, арест Дурова -- вполне может быть операция прикрытия, когда он на самом деле решил перейти на недружественную сторону.
Во-вторых, вы видели хотя бы одно неофициальное фото/видео, как Дуров в аэропорту ходил, как его арестовывали, из зала суда и т.п.?
Всё что нам показали, напоминает недавний фантастический фильм "Атлас" с Дженнифер Лопес. Она весь фильм сидит в каком-то жестяном корыте с рычажками, где её периодически трясёт, а она корчит страдальческие рожи. А всё действо полностью компьютерно сгенерено.
Думайте 😎
А под капотом у него будет (только это военная тайна) что-то из этого:
-- Rocket.Chat : куча фич: чаты, каналы, видео-/аудио-звонки, множество интеграций... заодно Meteor 3.0 полезно поизучать
-- Mattermost : микросервисный аналог слака
-- Matrix -- децентрализация, федеративные чаты и каналы (неплохой выбор, потому что пользователям можно будет рассказывать сказки про его безопасность, конфиденциальность супер-защищённость за счёт end2end шифрования)
-- Zulip -- интересная фишка, внутри чата можно выделять разные тематические потоки.
и т.п.
Только в их доморощенной версии вы будете неделями смотреть на колёсико "Ожидание одобрения сообщения": каждое "привет" надо будет согласовывать с тремя начальниками и пятью департаментами.
=
Первое правило конспирологии: "Что бы ни случилось, это то, что они задумали с самого начала".
Во-первых, арест Дурова -- вполне может быть операция прикрытия, когда он на самом деле решил перейти на недружественную сторону.
Во-вторых, вы видели хотя бы одно неофициальное фото/видео, как Дуров в аэропорту ходил, как его арестовывали, из зала суда и т.п.?
Всё что нам показали, напоминает недавний фантастический фильм "Атлас" с Дженнифер Лопес. Она весь фильм сидит в каком-то жестяном корыте с рычажками, где её периодически трясёт, а она корчит страдальческие рожи. А всё действо полностью компьютерно сгенерено.
Думайте 😎
1🤔56👍14😁7🫡3🤯2
С каждым днём в Сети появляется всё больше контента, сгенерированного AI, и одна из сопутствующих бед в том, что поисковики всё чаще по запросам текста, рисунков, фото (а скоро и видео) выдают искусственные результаты. Например, "похожие" на оригинал фото -- только вылизанные и облагороженные, словно после фотошопа (и постепенно они уходят всё дальше и дальше от оригинала), или цитаты великих, "похожие" на реальные. Кстати, уже для немалого числа известных личностей, и ныне прекрасно здравствующих, по запросам по ним начинают выдаваться "их слова", сгенерённые нейронкой :)
Фанатичные Свидетели AGI-евы, мега-секта которых располагается в Кремниевой Долине, делают сегодня невиданные ранее в мировой истории инвестиции, чтобы ускорить замену реального на фиктивное. В таких условиях ситуация очень скоро может зайти в тупик -- почти наверняка в течение следующих 12 месяцев.
Фанатичные Свидетели AGI-евы, мега-секта которых располагается в Кремниевой Долине, делают сегодня невиданные ранее в мировой истории инвестиции, чтобы ускорить замену реального на фиктивное. В таких условиях ситуация очень скоро может зайти в тупик -- почти наверняка в течение следующих 12 месяцев.
5🤔57👍8🫡4💯3⚡1
С 3-го (ретроградный Меркурий всё "Я календарь переверну...") или 4-го сентября (Марс в Раке:) начинаю выкладывать для донов в этой группе новый уникальный контент: около 100 материалов СильныхИдей (сейчас они доступны только моим курсантам), причём расширенные и дополненные множеством примеров (Java).
Уровень? полезно будет всем, от крепкого джуна до сеньора, особенно тем, кто в университетах не обучался.
Материалы будут выходить минимум 1 раз в неделю, но когда выложу 5-й материал, самый старый удалю, и т.д. То есть всегда будет не более 4-х материалов (чтобы не получалось так, что через полгода стал доном разик, всё выкачал, и слился).
И с того же дня стоимость подписки для новых донов вырастет.
Первые материалы будут такие:
1. Три уровня рассуждений о программной системе.
Вы когда-нибудь задумывались о том, что значит "программа работает неправильно", "программа ошибочна"? Что-то вроде "ну, это когда она вылетает с ошибкой... но если она вроде работает, а может сломаться гипотетически, при определённых условиях... кхм, подождите...".
...Программа ошибочна, если причина, по которой она должна быть правильной, ошибочна.
...Мы перешли от ясного и простого определения проблемы к тому, что выглядит какой-то логической головоломкой, парадоксом или софизмом, и что вообще невозможно использовать :) На самом деле, это определение довольно строгое, и мы разберёмся с ним, освоив несколько понятий из области формальной верификации кода...
2. Три уровня рассуждений о программной системе-2
Вы завершили стадию предварительного планирования, и включились в циклы коротких итераций, как рекомендует agile. У вас есть доска с множеством листков-задачек, пользовательских требований, которые вам просто надо реализовать. И во всей этой гибкой движухе всё более соблазнительно отказаться от ведения отдельного документа по проектированию — в пользу того, чтобы просто начать фигачить модный самодокументирующийся код.
И это ваша роковая ошибка.
Мы рассуждаем о поведении программы на трёх уровнях...
3. Три уровня рассуждений о программной системе-3
Впечатление, что программирование с каждым днём всё больше превращается в запоминание кусков кода со stackoverflow и стандартных функций (а сегодня добавилась ещё и генерация кода LLM-ками) и последующее их комбинирование в надежде "угадать" правильное решение. Сторонники запоминания длиннющих перечней шаблонов проектирования и методов рефакторинга при этом даже не понимают разницу между метриками method-method coupling, method parameter coupling и method invocation coupling, с которых начинается запутывание и рост сложности в любом проекте.
Забудьте об этой тотально ложной парадигме, которую вам навязывает мэйнстрим. Изучая фигню, вы и специалистом станете по фигне, и работу будете искать соответствующую. Пока ещё можно много выиграть, просто изучив общие принципы computer science...
=
Там же продолжу и трек "Элитный Программист" (первая дюжина материалов выложена). Про что он?
...Программирование уже давно не считается профессией для фриков, ботаников и социофобов. Работа программистом стала очень престижной — в частности, потому, что за неё очень хорошо платят. Многие ребята буквально мечтают войти в ИТ и сделать там успешную карьеру. Однако большая засада в том, многие из этих многих, кто пытается это сделать, очень быстро упираются в потолок своей карьеры. Многие даже с трудом находят первую работу.
Если вы один из таких, и чувствуете, что застряли в своей ИТ-карьере, упёршись лбом в стеклянно-бетонный потолок, то самое первое, дорогие, что вам важно понять: это не ваша вина! Против вас ведётся тщательно продуманная и очень хорошо организованная война.
Самая главная причина, по которой люди застревают в своей карьере в сфере ИТ, заключается в том, что такая работа и такая карьера требуют очень хорошей способности концентрироваться. Но в наши дни вокруг вас так много отвлекающих факторов, что порой сосредоточиться очень трудно. И все это скорее специально, чем случайно.
Уровень? полезно будет всем, от крепкого джуна до сеньора, особенно тем, кто в университетах не обучался.
Материалы будут выходить минимум 1 раз в неделю, но когда выложу 5-й материал, самый старый удалю, и т.д. То есть всегда будет не более 4-х материалов (чтобы не получалось так, что через полгода стал доном разик, всё выкачал, и слился).
И с того же дня стоимость подписки для новых донов вырастет.
Первые материалы будут такие:
1. Три уровня рассуждений о программной системе.
Вы когда-нибудь задумывались о том, что значит "программа работает неправильно", "программа ошибочна"? Что-то вроде "ну, это когда она вылетает с ошибкой... но если она вроде работает, а может сломаться гипотетически, при определённых условиях... кхм, подождите...".
...Программа ошибочна, если причина, по которой она должна быть правильной, ошибочна.
...Мы перешли от ясного и простого определения проблемы к тому, что выглядит какой-то логической головоломкой, парадоксом или софизмом, и что вообще невозможно использовать :) На самом деле, это определение довольно строгое, и мы разберёмся с ним, освоив несколько понятий из области формальной верификации кода...
2. Три уровня рассуждений о программной системе-2
Вы завершили стадию предварительного планирования, и включились в циклы коротких итераций, как рекомендует agile. У вас есть доска с множеством листков-задачек, пользовательских требований, которые вам просто надо реализовать. И во всей этой гибкой движухе всё более соблазнительно отказаться от ведения отдельного документа по проектированию — в пользу того, чтобы просто начать фигачить модный самодокументирующийся код.
И это ваша роковая ошибка.
Мы рассуждаем о поведении программы на трёх уровнях...
3. Три уровня рассуждений о программной системе-3
Впечатление, что программирование с каждым днём всё больше превращается в запоминание кусков кода со stackoverflow и стандартных функций (а сегодня добавилась ещё и генерация кода LLM-ками) и последующее их комбинирование в надежде "угадать" правильное решение. Сторонники запоминания длиннющих перечней шаблонов проектирования и методов рефакторинга при этом даже не понимают разницу между метриками method-method coupling, method parameter coupling и method invocation coupling, с которых начинается запутывание и рост сложности в любом проекте.
Забудьте об этой тотально ложной парадигме, которую вам навязывает мэйнстрим. Изучая фигню, вы и специалистом станете по фигне, и работу будете искать соответствующую. Пока ещё можно много выиграть, просто изучив общие принципы computer science...
=
Там же продолжу и трек "Элитный Программист" (первая дюжина материалов выложена). Про что он?
...Программирование уже давно не считается профессией для фриков, ботаников и социофобов. Работа программистом стала очень престижной — в частности, потому, что за неё очень хорошо платят. Многие ребята буквально мечтают войти в ИТ и сделать там успешную карьеру. Однако большая засада в том, многие из этих многих, кто пытается это сделать, очень быстро упираются в потолок своей карьеры. Многие даже с трудом находят первую работу.
Если вы один из таких, и чувствуете, что застряли в своей ИТ-карьере, упёршись лбом в стеклянно-бетонный потолок, то самое первое, дорогие, что вам важно понять: это не ваша вина! Против вас ведётся тщательно продуманная и очень хорошо организованная война.
Самая главная причина, по которой люди застревают в своей карьере в сфере ИТ, заключается в том, что такая работа и такая карьера требуют очень хорошей способности концентрироваться. Но в наши дни вокруг вас так много отвлекающих факторов, что порой сосредоточиться очень трудно. И все это скорее специально, чем случайно.
6👍54❤10✍7😎1
...Существует множество компаний, которые хотят отнять у вас буквально всё ваше внимание. Ваше внимание конвертируется в их прибыль. На эту борьбу работают многие тысячи профессиональных психологов и специалистов по Бигдате и AI. А так как вы противостоите этой профессиональной армии фактически в одиночку, и при этом вы самый обычный гражданский человек, совершенно не обученный военным действиям за своё внимание и свой здоровый ум, то вы обречены проиграть.
Ваше внимание — это очень ограниченный ресурс ума, и вы постоянно проигрываете в битве за него; в результате у вас остаётся мало ресурсов, чтобы сосредоточиться на продуктивной работе. Именно поэтому многие ИТ-специалисты упираются в потолок своей карьеры, дальше которого они не могут продвинуться. Проблема не в том, что им не хватает соображалки, нет: в 90% случаев им не хватает умения длительное время сосредотачиваться на одном главном, и не тратить при этом энергию ума на постоянные отвлечения.
У меня для вас однако хорошая новость: вы можете выиграть эту войну, хотя это и будет нелегко. Но вы сможете победить все отвлекающие факторы и стать чётким, собранным, дисциплинированным и продуктивным разработчиком, которого все жаждут взять на работу. Этому и посвящён трек "Элитный программист", который научит вас, как это сделать.
=
Краткое описание всех материалов СИ, ЭП и курса карьеры (для курсантов) выкладываю тут.
Ваше внимание — это очень ограниченный ресурс ума, и вы постоянно проигрываете в битве за него; в результате у вас остаётся мало ресурсов, чтобы сосредоточиться на продуктивной работе. Именно поэтому многие ИТ-специалисты упираются в потолок своей карьеры, дальше которого они не могут продвинуться. Проблема не в том, что им не хватает соображалки, нет: в 90% случаев им не хватает умения длительное время сосредотачиваться на одном главном, и не тратить при этом энергию ума на постоянные отвлечения.
У меня для вас однако хорошая новость: вы можете выиграть эту войну, хотя это и будет нелегко. Но вы сможете победить все отвлекающие факторы и стать чётким, собранным, дисциплинированным и продуктивным разработчиком, которого все жаждут взять на работу. Этому и посвящён трек "Элитный программист", который научит вас, как это сделать.
=
Краткое описание всех материалов СИ, ЭП и курса карьеры (для курсантов) выкладываю тут.
7❤45👍14⚡7✍1🔥1
Культура ФП на самом деле очень прагматична: сначала вы определяете типы и пишите функции, и только потом формируете более сложные абстракции. На определённом уровне вы просто садитесь за IDE vim и начинаете сразу фигачить достаточно качественный код (потому что, в частности, хорошая система типов сразу сильно ограничивает в написании фигни).
Если же вы используете ООП, то вам сперва придётся достаточно чётко продумывать объектные абстракции и схемы их взаимодействия (что весьма сложно; например, с помощью АТД; у меня отдельный трек ООАП этому посвящён), и только потом писать логику методов.
Вчера я говорил, что "...всё более соблазнительно отказаться от ведения отдельного документа по проектированию — в пользу того, чтобы просто начать фигачить модный самодокументирующийся код. И это ваша роковая ошибка...", но это относится к мэйнстриму конечно. Сегодня тотально учат "ООП" с самого начала, просто как "удобный" скилл кодирования. Правильно же начинать учить ООП с концепции обмена сообщениями (каким ООП и был в оригинале у Алана Кэя), немного затронуть сигма-исчисление (формальная модель ООП Луки Карделли), потом плавно переходить к модели акторов. А в идеале, лучше вообще начинать с разбора вычислительных моделей (декларативная, императивная, объектная...).
Если же вы используете ООП, то вам сперва придётся достаточно чётко продумывать объектные абстракции и схемы их взаимодействия (что весьма сложно; например, с помощью АТД; у меня отдельный трек ООАП этому посвящён), и только потом писать логику методов.
Вчера я говорил, что "...всё более соблазнительно отказаться от ведения отдельного документа по проектированию — в пользу того, чтобы просто начать фигачить модный самодокументирующийся код. И это ваша роковая ошибка...", но это относится к мэйнстриму конечно. Сегодня тотально учат "ООП" с самого начала, просто как "удобный" скилл кодирования. Правильно же начинать учить ООП с концепции обмена сообщениями (каким ООП и был в оригинале у Алана Кэя), немного затронуть сигма-исчисление (формальная модель ООП Луки Карделли), потом плавно переходить к модели акторов. А в идеале, лучше вообще начинать с разбора вычислительных моделей (декларативная, императивная, объектная...).
2🤔37👍33❤8⚡6🫡2
Ёлки-палки, плохи наши дела ))
LLMs can function not only as databases, but also as dynamic, end-user programmable neural computers.
LLMs cannot reason. Many are working on fixing this. For example, below is a proposal to add logic programming (Prolog) by teaching an LLM to translate natural language queries into Prolog statements, which are then answered by a Prolog processor...
... the integration of Prolog enables LLMs to achieve high performance on the NLR dataset, which even the most advanced language models (including GPT4) fail to solve using text only.
Автор тот самый Эрик Мейер ("Why the fuck do we let people that have no computer science backgrounds write code? Unacceptable!").
LLMs can function not only as databases, but also as dynamic, end-user programmable neural computers.
LLMs cannot reason. Many are working on fixing this. For example, below is a proposal to add logic programming (Prolog) by teaching an LLM to translate natural language queries into Prolog statements, which are then answered by a Prolog processor...
... the integration of Prolog enables LLMs to achieve high performance on the NLR dataset, which even the most advanced language models (including GPT4) fail to solve using text only.
Автор тот самый Эрик Мейер ("Why the fuck do we let people that have no computer science backgrounds write code? Unacceptable!").
❤38🤔26👍7🫡4
Думаю, как сделать Школу максимально элитарной: буду объяснять темы так, будто твой дедушка лауреат премии Тьюринга, и ты просто обязан понимать всё с полуслова
примерно как бренд Birkin (люксовые сумки). Бренд позиционирует себя настолько крутым, что потенциальным клиентам нужно сперва долго обхаживать продавца сумок, делать ему подарки, и в целом для начала купить товаров как минимум на 10,000 евро.
У меня первым шагом к подобной илитарности будет полный запрет таких слов, как SOLID, DRY, CRUD, MVC, Clean и DDD.
примерно как бренд Birkin (люксовые сумки). Бренд позиционирует себя настолько крутым, что потенциальным клиентам нужно сперва долго обхаживать продавца сумок, делать ему подарки, и в целом для начала купить товаров как минимум на 10,000 евро.
У меня первым шагом к подобной илитарности будет полный запрет таких слов, как SOLID, DRY, CRUD, MVC, Clean и DDD.
2😎52🤔24👍10🏆7❤4
В ряде ситуаций, когда вы провалили собес, это может быть к лучшему не только в плане опыта. Например, Брайан Эктон не прошёл в 2009-м стандартное техническое собеседование в facebook, и с горя запилил whatsapp. Сперва, кстати, это была просто мобильная программка для показа статусов из списка контактов, и только потом Брайан с Яном Куном решили добавить возможность обмена сообщениями. Потом появились уведомления и смс, появилась годовая подписка за один доллар (причём первый год бесплатно) -- и уже в 2014-м фейсбук купил вотсап за 19 миллиардов долларов.
P.S. На собесах в фейсбук кстати спрашиваются стандартные вещи
("Как я получил оффер от Фейсбука и в итоге к ним не пошёл"),
например: "как изменится твоя модель, если водитель не привязан жёстко к автомобилю (скажем, компания-таксопарк может назначать одному и тому же водителю разные машины в разные дни)? Как будет устроена связь автомобиля с поездкой?"
Товарищи курсанты, это вам ничего с моих проектов не напоминает? :)
P.S. На собесах в фейсбук кстати спрашиваются стандартные вещи
("Как я получил оффер от Фейсбука и в итоге к ним не пошёл"),
например: "как изменится твоя модель, если водитель не привязан жёстко к автомобилю (скажем, компания-таксопарк может назначать одному и тому же водителю разные машины в разные дни)? Как будет устроена связь автомобиля с поездкой?"
Товарищи курсанты, это вам ничего с моих проектов не напоминает? :)
1👍66😁9❤🔥3
Лаборатория Математики и Программирования Сергея Бобровского
В ряде ситуаций, когда вы провалили собес, это может быть к лучшему не только в плане опыта. Например, Брайан Эктон не прошёл в 2009-м стандартное техническое собеседование в facebook, и с горя запилил whatsapp. Сперва, кстати, это была просто мобильная программка…
"Термы -- это деревья, а деревья -- это термы"
-- Банчи (книга "Конечные автоматы, их алгебры и грамматики – к теории формальных выражений")
Компиляторы, автоматы, AST, правила вывода, разбор json, редьюсинг алгебраических выражений, паттерн матчинг и многое многое другое -- это всё про переписывание термов.
На F# пацаны разбирают что-то вроде (^f.(^x.f(^y.xxy))(^x.f(^y.xxy))) легко и просто (редуцируется этот терм к нормальной форме?неа, он рекурсивен; подумайте, почему ), а вот если термов сотня миллионов?? )))
Например, можно запилить hott-плагин для Lean , сэмулировав аксиому унивалентности:
universe u
constant U : Type u
-- простейшая версия эквивалентности типов :)
constant equiv : U → U → Type u
axiom univalence : ∀ (A B : U), equiv A B → A = B
example (A B : U) (e : equiv A B) : A = B := univalence A B e
Или расширить новыми теориями инструменты формальной верификации криптографических протоколов ProVerif или Tamarin (в них тоже активно используются термы и правила их переписывания) ...
=
Однако с лёгкой печалью обнаружил, что vds с озу 200 гиг под подобные задачки стоит дороже, чем дедик, меньше $100/месяц не получается...
(и хорошо масштабируемый русский облачный сервис для Jupyter я тоже не нашёл)
Рабочие станции Dell 7920, HP Z8 G4, Lenovo P920 (потенциально терабайты оперативки) продаются с 16 гб (!) от трёх тысяч долларов (а серваки уже от $5 тыс). Какие-то мутные материнки вроде ASUS ROG Rampage VI Extreme Encore 128гб продаются за 100 долларов, но крайне сомнительно, reconditioned сгорит через неделю.
-- Банчи (книга "Конечные автоматы, их алгебры и грамматики – к теории формальных выражений")
Компиляторы, автоматы, AST, правила вывода, разбор json, редьюсинг алгебраических выражений, паттерн матчинг и многое многое другое -- это всё про переписывание термов.
На F# пацаны разбирают что-то вроде (^f.(^x.f(^y.xxy))(^x.f(^y.xxy))) легко и просто (редуцируется этот терм к нормальной форме?
Например, можно запилить hott-плагин для Lean , сэмулировав аксиому унивалентности:
universe u
constant U : Type u
-- простейшая версия эквивалентности типов :)
constant equiv : U → U → Type u
axiom univalence : ∀ (A B : U), equiv A B → A = B
example (A B : U) (e : equiv A B) : A = B := univalence A B e
Или расширить новыми теориями инструменты формальной верификации криптографических протоколов ProVerif или Tamarin (в них тоже активно используются термы и правила их переписывания) ...
=
Однако с лёгкой печалью обнаружил, что vds с озу 200 гиг под подобные задачки стоит дороже, чем дедик, меньше $100/месяц не получается...
(и хорошо масштабируемый русский облачный сервис для Jupyter я тоже не нашёл)
Рабочие станции Dell 7920, HP Z8 G4, Lenovo P920 (потенциально терабайты оперативки) продаются с 16 гб (!) от трёх тысяч долларов (а серваки уже от $5 тыс). Какие-то мутные материнки вроде ASUS ROG Rampage VI Extreme Encore 128гб продаются за 100 долларов, но крайне сомнительно, reconditioned сгорит через неделю.
1🤯59🔥10👍8🫡4❤2
Вкатываемся в понедельник 💪🏻💪🏻💪🏻
По картинке кстати ничего странного, совершенно типовая ситуация: пацан явно не проходил мой курс по software design, который так и называется: "Незримые механизмы логики". В частности, часть 2 "Как так получается, что вроде бы давно работающий код всё ещё содержит баги?".
По картинке кстати ничего странного, совершенно типовая ситуация: пацан явно не проходил мой курс по software design, который так и называется: "Незримые механизмы логики". В частности, часть 2 "Как так получается, что вроде бы давно работающий код всё ещё содержит баги?".
1⚡38😁19👍7🤔3🫡2