Наконец, третье крутое, даже не событие в 2020-м, а некоторый стремительно развивающийся и уже официально признанный тренд в математике – это активное явление AI в области формальных доказательств. Прошло всего десять лет с формулирования гениальным Владимиром Воеводским унивалентных оснований математики, и вот уже обещается, что в этом году за золотую медаль на Всемирной Математической Олимпиаде будет сражаться AI, использующий пруф-ассистант Lean.
https://leanprover.github.io/
Ну и, понятно, до массовой экспансии AI в профессию программиста остались считанные годы :)
https://www.quantamagazine.org/at-the-international-mathematical-olympiad-artificial-intelligence-prepares-to-go-for-the-gold-20200921/
https://leanprover.github.io/
Ну и, понятно, до массовой экспансии AI в профессию программиста остались считанные годы :)
https://www.quantamagazine.org/at-the-international-mathematical-olympiad-artificial-intelligence-prepares-to-go-for-the-gold-20200921/
Ну что, программисты, вы больше не нужны? :)
https://doesnotexist.codes/
А вот потому что учиться надо правильным вещам =>
https://лялямбда.рус
https://doesnotexist.codes/
А вот потому что учиться надо правильным вещам =>
https://лялямбда.рус
Эксперты-математики (топовые криптографы) в своей полузакрытой тусовке предсказали три года назад, когда случился обвал крипты, что к 2021-му рынок всех криптовалют вместе взятых достигнет 1 триллион долларов , ну и вот:
https://www.coindesk.com/cryptocurrency-market-value-record-1-trillion
Хотя конечно оценить этот рынок точно весьма трудно, и тут есть много нюансов, но общий тренд очевиден. Инфляция случается в ИТ абсолютно везде: обесцениваются все вычислительные ресурсы, и процессоры, и накопители, и оперативка.
Объём золота на Земле -- 3 триллиона долларов, и какое-то его микроскопическое количество ходит по магазинам и рукам, на самом деле точно как с биткоином :) Золото -- это искусственно ценный товар, которым манипулируют влиятельные игроки.
Так вот, те же криптографы, среди которых, в силу профессии, немало конспирологов :) , также прогнозировали, что 9 января 2021-го с битком что-то должно произойти (это годовщина genesis-блока). Ну и вот, его цена чётко в этот единственный день впервые скакнула за $40k, после чего временю снова уехала вниз. Три года назад также было с психологическим рубежом $20k, из чего делается вывод, что этим рынком таки манипулируют -- банки, правительства и олигархи.
Сегодня, безусловно, и биткойн, как золото, стал действительно ценным общемировым ресурсом, потому что о нём и как о финансах, и как о технологии, и как о бренде, заботятся очень солидные дяди :) Сотни миллионов долларов потрачены на разработку всяческого софта, на оборудование для майнинга, и т.д. Уже это одно обеспечивает высокую внутреннюю ценность битка.
Что эксперты прогнозируют относительно крипты дальше, и стоит ли бросаться покупать ̶б̶у̶з̶к̶о̶и̶н̶ биткоин, расскажу дальше.
https://www.coindesk.com/cryptocurrency-market-value-record-1-trillion
Хотя конечно оценить этот рынок точно весьма трудно, и тут есть много нюансов, но общий тренд очевиден. Инфляция случается в ИТ абсолютно везде: обесцениваются все вычислительные ресурсы, и процессоры, и накопители, и оперативка.
Объём золота на Земле -- 3 триллиона долларов, и какое-то его микроскопическое количество ходит по магазинам и рукам, на самом деле точно как с биткоином :) Золото -- это искусственно ценный товар, которым манипулируют влиятельные игроки.
Так вот, те же криптографы, среди которых, в силу профессии, немало конспирологов :) , также прогнозировали, что 9 января 2021-го с битком что-то должно произойти (это годовщина genesis-блока). Ну и вот, его цена чётко в этот единственный день впервые скакнула за $40k, после чего временю снова уехала вниз. Три года назад также было с психологическим рубежом $20k, из чего делается вывод, что этим рынком таки манипулируют -- банки, правительства и олигархи.
Сегодня, безусловно, и биткойн, как золото, стал действительно ценным общемировым ресурсом, потому что о нём и как о финансах, и как о технологии, и как о бренде, заботятся очень солидные дяди :) Сотни миллионов долларов потрачены на разработку всяческого софта, на оборудование для майнинга, и т.д. Уже это одно обеспечивает высокую внутреннюю ценность битка.
Что эксперты прогнозируют относительно крипты дальше, и стоит ли бросаться покупать ̶б̶у̶з̶к̶о̶и̶н̶ биткоин, расскажу дальше.
CoinDesk
Total Cryptocurrency Market Value Hits Record $1 Trillion
During 2017's bull run, the market peaked at a $760 billion total value.
Да, сегодня биткоин конечно отстаёт от золота, ему пока всего 12 лет, и верят в него куда меньше банкиров и инвесторов, чем в золото, и пока, в ближайшие годы, отношение к нему изменится слабо. Серьёзные инвестиционные менеджеры пока считают биток плохо "продаваемым" продуктом в смысле инвестиций в него, но сермяга в том, что и золото сегодня тоже отнюдь не крутая инвестиция, поэтому и то и другое может быть использовано для, как модно говорить, диверсификации портфеля (раскладывания яиц по разным корзинам, для страховки).
Так вот, палю фишку, что крипта, по прогнозам реальных экспертов, обязательно станет ценной как золото и больше, не ранее чем через 5-10 лет.
И, самое главное, что с большой вероятностью топовой криптовалютой станет отнюдь не биток, а что-то созданное одним из пяти ИТ-гигантов (Гугл, Микрософт, Фейсбук...), которые сделают серьёзный продукт и мощно вложатся в его маркетинг.
Стратегически, что-то подобное произойдёт точно. Крипта преодолеет рубеж 3 триллиона долларов лет через 10, а золото продолжит слабеть и размываться. В конечном итоге, цифровая валюта точно выиграет -- но какая конкретно, пока неведомо.
Не подумайте только, что я призываю что-то инвестировать в крипту, или, ещё хуже, майнить :) не-не!
Рассказал про это исключительно в контексте того, что криптовалюта -- крайне интересное направление для программистов, напрямую связанное с деньгами, огромные обороты потенциально, а рынок пока почти пуст, как и везде в ИТ, впрочем, если действительно нормально делать. Конечно, "многие стартапы пытаются...", но как в 99% случаев, крайне криво и неумело.
А тем временем сегодня например Ethereum Виталика Бутерина пробил свой рекорд 2,08 тыс. долл.
То есть, я призываю, кому эта тема интересна, не занимайтесь фигнёй типа майнинга или покупок -- пишите криптокод, включайтесь в проекты криптовалюты как программисты! Через 10 лет озолотитесь! :) А кто-то, может, и вытянет свой лотерейный билетик -- придумает новые алгоритмы, как было со смарт-контрактами, NFT, DeFi ит.д., которые кардинально поменяли мир цифровых валют.
Будь как Виталик! :)
Так вот, палю фишку, что крипта, по прогнозам реальных экспертов, обязательно станет ценной как золото и больше, не ранее чем через 5-10 лет.
И, самое главное, что с большой вероятностью топовой криптовалютой станет отнюдь не биток, а что-то созданное одним из пяти ИТ-гигантов (Гугл, Микрософт, Фейсбук...), которые сделают серьёзный продукт и мощно вложатся в его маркетинг.
Стратегически, что-то подобное произойдёт точно. Крипта преодолеет рубеж 3 триллиона долларов лет через 10, а золото продолжит слабеть и размываться. В конечном итоге, цифровая валюта точно выиграет -- но какая конкретно, пока неведомо.
Не подумайте только, что я призываю что-то инвестировать в крипту, или, ещё хуже, майнить :) не-не!
Рассказал про это исключительно в контексте того, что криптовалюта -- крайне интересное направление для программистов, напрямую связанное с деньгами, огромные обороты потенциально, а рынок пока почти пуст, как и везде в ИТ, впрочем, если действительно нормально делать. Конечно, "многие стартапы пытаются...", но как в 99% случаев, крайне криво и неумело.
А тем временем сегодня например Ethereum Виталика Бутерина пробил свой рекорд 2,08 тыс. долл.
То есть, я призываю, кому эта тема интересна, не занимайтесь фигнёй типа майнинга или покупок -- пишите криптокод, включайтесь в проекты криптовалюты как программисты! Через 10 лет озолотитесь! :) А кто-то, может, и вытянет свой лотерейный билетик -- придумает новые алгоритмы, как было со смарт-контрактами, NFT, DeFi ит.д., которые кардинально поменяли мир цифровых валют.
Будь как Виталик! :)
Когда несколько лет назад в Пакистане решили создавать свой истребитель (пятого поколения!), в качестве базового языка программирования был выбран С++. В частности, потому, что в стране этому языку массово обучали практически все университеты и колледжи, и там насчитывались буквально десятки тысяч молодых ребят, знающих этот язык.
Ну а где плюсы, почти там же и сишечка, на которой активно пишется софт непосредственно для "железа", и опыт в программной инженерии накоплен огромный.
Кстати, есть довольно распространённое мнение, что бортовой софт F-35 написан на С++ (F-22 точно программировался на Ada), но, знающие люди утверждают, что на таком заоблачном уровне сложности кодировать вручную на плюсах обходится уж слишком дорого. Скорее всего, используются какие-нибудь закрытые lowcode-пакеты, генерирующие код на Си/C++, а также расширения для MATLAB (Coder), Simulink и т. д.
При этом практически не применяются опенсорсные решения (Not-Invented-Here), потому что непонятно качество и безопасность, никаких виртуальных машин (лишние накладные расходы), ну и например для самых ключевых модулей и систем в NASA (спутники, роверы-планетоходы) много кода пишется по-прежнему на ассемблере. В результате в NASA очень топят за повторное использование кода, так как он очень тщательно проверяется и получается в итоге очень дорогим, но минус такого подхода, что приходится долго использовать устаревшее оборудование. И это кстати одна из причин, почему SpaceX смог так внезапно впрыгнуть в космическую индустрию -- у них не было огромного организационно-технического легаси-наследия.
Ну а где плюсы, почти там же и сишечка, на которой активно пишется софт непосредственно для "железа", и опыт в программной инженерии накоплен огромный.
Кстати, есть довольно распространённое мнение, что бортовой софт F-35 написан на С++ (F-22 точно программировался на Ada), но, знающие люди утверждают, что на таком заоблачном уровне сложности кодировать вручную на плюсах обходится уж слишком дорого. Скорее всего, используются какие-нибудь закрытые lowcode-пакеты, генерирующие код на Си/C++, а также расширения для MATLAB (Coder), Simulink и т. д.
При этом практически не применяются опенсорсные решения (Not-Invented-Here), потому что непонятно качество и безопасность, никаких виртуальных машин (лишние накладные расходы), ну и например для самых ключевых модулей и систем в NASA (спутники, роверы-планетоходы) много кода пишется по-прежнему на ассемблере. В результате в NASA очень топят за повторное использование кода, так как он очень тщательно проверяется и получается в итоге очень дорогим, но минус такого подхода, что приходится долго использовать устаревшее оборудование. И это кстати одна из причин, почему SpaceX смог так внезапно впрыгнуть в космическую индустрию -- у них не было огромного организационно-технического легаси-наследия.
Восемь контринтуитивных трендов нынешней ситуации на рынке труда программистов. Спойлер: если вы читаете этот пост и любите и умеете программировать, то вам реально очень повезло в этой жизни.
После прошлогоднего напряга от всех этих карантинов конечно у людей накопилось прилично усталости, которая даёт себя знать спустя приличное время, много месяцев, причём причина её необычная, ранее такого никогда не было (и вот опять). И так как проблема в целом не рассосалась, и определённое давление остаётся весьма ощутимым, то и последствия тоже нестандартные.
Во-первых, возврат с удалёнки вроде как и радует, когда можно пообщаться в реале, однако уже желания торчать в офисе в большом коллективе сильно меньше чем когда-либо. Идеал -- работаем вживую 2-3 раза в неделю в небольших группах.
Во-вторых, на фоне этого всего существенно ослабли в плане мотивации не только деньги, но даже и интересные проекты. Людям хочется спокойной работы в стабильном и, главное, ненапряжном режиме.
В-третьих, запросы в плане денег реально уменьшились. На фоне памяти о карантинных мучениях на первый план прорезались таки истинные общечеловеческие ценности :) Условно, лучше я потеряю в зп на треть, но и работать буду в два раза меньше. Поэтому эйчары начали понемногу паниковать :) Что толку, что у компании дофига денег, если невозможно найти программистов, а классические карьерные пути и мотивашки начинают сильно проседать.
В четвёртых, в условиях известных ограничений и изоляции люди ощутимо озлились :) Поэтому команды становятся меньше и сплочённее ("кругом враги"), чужаков со стороны берут совсем неохотно, и это тоже стала новая сильная головная боль кадровиков; у разработчиков продолжает расти недовольство и раздражение ими -- в частности, унылые шаблонные мотивационные плюшки вообще перестали работать по вышеуказанным причинам.
Вдумчиво учитывайте это всё -- это реально классные специфические шансы, которые выпадают редко, раз во много лет.
окончание следует
После прошлогоднего напряга от всех этих карантинов конечно у людей накопилось прилично усталости, которая даёт себя знать спустя приличное время, много месяцев, причём причина её необычная, ранее такого никогда не было (и вот опять). И так как проблема в целом не рассосалась, и определённое давление остаётся весьма ощутимым, то и последствия тоже нестандартные.
Во-первых, возврат с удалёнки вроде как и радует, когда можно пообщаться в реале, однако уже желания торчать в офисе в большом коллективе сильно меньше чем когда-либо. Идеал -- работаем вживую 2-3 раза в неделю в небольших группах.
Во-вторых, на фоне этого всего существенно ослабли в плане мотивации не только деньги, но даже и интересные проекты. Людям хочется спокойной работы в стабильном и, главное, ненапряжном режиме.
В-третьих, запросы в плане денег реально уменьшились. На фоне памяти о карантинных мучениях на первый план прорезались таки истинные общечеловеческие ценности :) Условно, лучше я потеряю в зп на треть, но и работать буду в два раза меньше. Поэтому эйчары начали понемногу паниковать :) Что толку, что у компании дофига денег, если невозможно найти программистов, а классические карьерные пути и мотивашки начинают сильно проседать.
В четвёртых, в условиях известных ограничений и изоляции люди ощутимо озлились :) Поэтому команды становятся меньше и сплочённее ("кругом враги"), чужаков со стороны берут совсем неохотно, и это тоже стала новая сильная головная боль кадровиков; у разработчиков продолжает расти недовольство и раздражение ими -- в частности, унылые шаблонные мотивационные плюшки вообще перестали работать по вышеуказанным причинам.
Вдумчиво учитывайте это всё -- это реально классные специфические шансы, которые выпадают редко, раз во много лет.
окончание следует
В пятых, сильнее всего сейчас выгорают ребята среднего возраста 30-40 лет -- они в расцвете мастерства, ну их в период кризиса и превратили в слоников, навалив дофига задачек, а у многих маленькие детишки вдобавок. А вот кто постарше, всем этим уже были закалены неоднократно, поэтому переносят тяготы и лишения куда более спокойно.
В шестых, следствие, что теперь отпуск, лето, ждутся как манна небесная, берётся за свой счёт побольше дней вдобавок, а осень вообще сейчас многими воспринимается как переломный момент в жизни, поэтому на работах массово уже начинается определённый расслабон, и эйчары жутко паникуют: осенью начнётся небывалый вал миграции программистов в другие фирмы, которые вовремя просекли все эти нюансы :)
В седьмых, поколение Z - до 23 лет, насмотревшись извините моргенштерна и тиктокеров, зарабатывающих миллионы на пустом месте -- аки обезьяны в зоопарке корчащие смешные рожицы за лайки - вообще уже не понимают, что такое найм на постоянную работу и труд за зарплату )))
Ну и в восьмых: люди перестали заботиться о долгосрочных планах более чем полностью. Сейчас всё что больше года в планировании, не воспринимается всерьёз - внутренне люди не верят, что не возникнет новых помех (и зря кстати, но штош...). Поэтому и всяческие корпоративные программы карьеры от кадровиков перестали мотивировать. Вырастить хорошего миддла например, нужно года три "без отрыва от производства", а среднее время работы программиста в одной компании сегодня -- это полтора года.
Резюме такое, что если вам очень нравится программировать, а работа в офисе за хорошую зарплату не вызывает особого дискомфорта, то вам совершенно реально жутко повезло в жизни. Потому что идущие за вами следом скорее всего уже никогда не будут ценить эти вещи :) и за десяток лет возникнет огромная пропасть -- количество программистов, готовых реально трудиться, да ещё и подолгу и на одном месте, будет сокращаться с космической скоростью, и вы на этом фоне получите огромные конкурентные преимущества (которыми, конечно, ещё надо суметь правильно распорядиться), если например будете усиленно развиваться, да ещё и в одной организации. Хотя и больше 3-5 лет я тоже не рекомендую засиживаться нигде вообще, если зп не сильно выше среднерыночной.
В шестых, следствие, что теперь отпуск, лето, ждутся как манна небесная, берётся за свой счёт побольше дней вдобавок, а осень вообще сейчас многими воспринимается как переломный момент в жизни, поэтому на работах массово уже начинается определённый расслабон, и эйчары жутко паникуют: осенью начнётся небывалый вал миграции программистов в другие фирмы, которые вовремя просекли все эти нюансы :)
В седьмых, поколение Z - до 23 лет, насмотревшись извините моргенштерна и тиктокеров, зарабатывающих миллионы на пустом месте -- аки обезьяны в зоопарке корчащие смешные рожицы за лайки - вообще уже не понимают, что такое найм на постоянную работу и труд за зарплату )))
Ну и в восьмых: люди перестали заботиться о долгосрочных планах более чем полностью. Сейчас всё что больше года в планировании, не воспринимается всерьёз - внутренне люди не верят, что не возникнет новых помех (и зря кстати, но штош...). Поэтому и всяческие корпоративные программы карьеры от кадровиков перестали мотивировать. Вырастить хорошего миддла например, нужно года три "без отрыва от производства", а среднее время работы программиста в одной компании сегодня -- это полтора года.
Резюме такое, что если вам очень нравится программировать, а работа в офисе за хорошую зарплату не вызывает особого дискомфорта, то вам совершенно реально жутко повезло в жизни. Потому что идущие за вами следом скорее всего уже никогда не будут ценить эти вещи :) и за десяток лет возникнет огромная пропасть -- количество программистов, готовых реально трудиться, да ещё и подолгу и на одном месте, будет сокращаться с космической скоростью, и вы на этом фоне получите огромные конкурентные преимущества (которыми, конечно, ещё надо суметь правильно распорядиться), если например будете усиленно развиваться, да ещё и в одной организации. Хотя и больше 3-5 лет я тоже не рекомендую засиживаться нигде вообще, если зп не сильно выше среднерыночной.
Очередная мощная идея из математики -- схемы Гротендика, открытые им 60 лет назад, и связавшие сразу несколько крупных областей математики в одно целое (алгебраическую геометрию) -- добирается до мира ИТ.
https://arxiv.org/pdf/2104.09366.pdf
Оказалось в частности, что с их помощью можно разработать более простую теорию типов, которая будет не менее сильная, нежели зависимые типы, активно применяющиеся в пруф-ассистантах вроде Lean и Coq.
В работе показано, как аналогичную по мощности систему можно реализовать в Isabelle через т.н. локали (по сути, предикаты), из которых можно строить иерархии.
За этими всеми темками -- ближайшее будущее программирования!
Знание и умение применять теорию типов уже сегодня обязательно для любого уважающего себя программиста.
Гротендик кстати очень наглядно пояснял многие свои концепции наглядно, через так называемые "детские рисунки", благодаря чему можно понять полезные моменты вообще с нуля. Посмотрите, классное видео в тему -- "Детский рисунки и современная математика", просто понять тамошние картиночки уже сильно полезно.
https://www.youtube.com/watch?v=7PYhY8eXkoo
https://arxiv.org/pdf/2104.09366.pdf
Оказалось в частности, что с их помощью можно разработать более простую теорию типов, которая будет не менее сильная, нежели зависимые типы, активно применяющиеся в пруф-ассистантах вроде Lean и Coq.
В работе показано, как аналогичную по мощности систему можно реализовать в Isabelle через т.н. локали (по сути, предикаты), из которых можно строить иерархии.
За этими всеми темками -- ближайшее будущее программирования!
Знание и умение применять теорию типов уже сегодня обязательно для любого уважающего себя программиста.
Гротендик кстати очень наглядно пояснял многие свои концепции наглядно, через так называемые "детские рисунки", благодаря чему можно понять полезные моменты вообще с нуля. Посмотрите, классное видео в тему -- "Детский рисунки и современная математика", просто понять тамошние картиночки уже сильно полезно.
https://www.youtube.com/watch?v=7PYhY8eXkoo
Сегодня популярные онлайновые платформы поддержки программирования уже столь круты, что сами по себе представляют фактически готовые, простые и очень удобные движки для создания полноценного многомиллионного ИТ-бизнеса. Это так называемый PaaS -- платформа как сервис. Не надо заморачиваться арендой виртуальных серверов, их суппортом, деплоем нужных пакетов, администрированием...
Например, 20-летний пацанчик Soren из Сиэтла создал трейдинговый сервис blubbr.io (the global leader in real-time automated notifications for key events in the lifecycle of every SPAC....), который ежемесячно зарабатывает тысячу долларов, а разработал и задеплоил он его вообще без инвестиций, на популярном бесплатном сервисе для разработчиков https://replit.com/
Причём пилил он blubbr вообще как сторонний проект, в свободное время (Soren ещё учится и работает в финтехе).
https://blog.replit.com/blubbr
You have to code locally, push your code to the cloud, create a database, test your strategy, and then finally deploy to Google Cloud or Heroku. This process always takes weeks. With Replit, we had completed all of this in four days. The part of the development process for me that was simplified the most was deployment. This is because Replit deployment consists of two buttons: “always-on” and “run”.
Например, 20-летний пацанчик Soren из Сиэтла создал трейдинговый сервис blubbr.io (the global leader in real-time automated notifications for key events in the lifecycle of every SPAC....), который ежемесячно зарабатывает тысячу долларов, а разработал и задеплоил он его вообще без инвестиций, на популярном бесплатном сервисе для разработчиков https://replit.com/
Причём пилил он blubbr вообще как сторонний проект, в свободное время (Soren ещё учится и работает в финтехе).
https://blog.replit.com/blubbr
You have to code locally, push your code to the cloud, create a database, test your strategy, and then finally deploy to Google Cloud or Heroku. This process always takes weeks. With Replit, we had completed all of this in four days. The part of the development process for me that was simplified the most was deployment. This is because Replit deployment consists of two buttons: “always-on” and “run”.
Что серьёзному программисту полезно почитать на тему, как думать о сложных системах рационально и как решать программистские задачки по-научному -- учимся у математиков.
-- "Доказательства и опровержения" Имре Лакатос. Элегантно и увлекательно рассказывается о математической логике;
-- "Как научиться решать задачи" Фридман, Турецкий. Была рекомендована в СССР даже учащимся ПТУ :)
-- "Как решать задачу, когда не знаешь как" Кашуба -- совсем простенькая в методологическом плане, но была рекомендована в кружке мехмата МГУ например;
-- "Как решают нестандартные задачи" Канель-Белов, Ковальджи. Разбор решений нестандартных олимпиадных задач;
-- конечно, Пойя "Как решать задачу", "Математика и правдоподобные рассуждения".
Все книги хорошо понимаемы на уровне старшеклассников и дают классное множество эвристик решений, помогают в классификации задач.
Кто хочет похардкорнее, поглубже поизучать механику математического мышления, порекомендую "Исследование психологии процесса изобретения в области математики" Жак Адамар.
-- "Доказательства и опровержения" Имре Лакатос. Элегантно и увлекательно рассказывается о математической логике;
-- "Как научиться решать задачи" Фридман, Турецкий. Была рекомендована в СССР даже учащимся ПТУ :)
-- "Как решать задачу, когда не знаешь как" Кашуба -- совсем простенькая в методологическом плане, но была рекомендована в кружке мехмата МГУ например;
-- "Как решают нестандартные задачи" Канель-Белов, Ковальджи. Разбор решений нестандартных олимпиадных задач;
-- конечно, Пойя "Как решать задачу", "Математика и правдоподобные рассуждения".
Все книги хорошо понимаемы на уровне старшеклассников и дают классное множество эвристик решений, помогают в классификации задач.
Кто хочет похардкорнее, поглубже поизучать механику математического мышления, порекомендую "Исследование психологии процесса изобретения в области математики" Жак Адамар.
Серьёзные, но бедные ребята интересовались, как бы им обеспечить качество кода, близкое к формально доказанной корректности, но по дешёвке :) Потому что на профильных спецов денежек совсем нету.
Посоветовал им простой, но очень действенный способ: сохранять цикломатическую сложность всех функций/методов в проекте равной единице (ааа).
VS её например давным давно меряет, для питончика есть Radon, для Java во все еёные IDE тоже сколько лет метрика McCabe встроена, да и калькуляторов полно, вот например эталонно написан:
https://github.com/rodhilton/jasome/blob/master/src/main/java/org/jasome/metrics/calculators/CyclomaticComplexityCalculator.java
Ну и вторая фишка, очень рекомендованная к применению совместно с первой: использовать только иммутабельные типы данных.
Посоветовал им простой, но очень действенный способ: сохранять цикломатическую сложность всех функций/методов в проекте равной единице (ааа).
VS её например давным давно меряет, для питончика есть Radon, для Java во все еёные IDE тоже сколько лет метрика McCabe встроена, да и калькуляторов полно, вот например эталонно написан:
https://github.com/rodhilton/jasome/blob/master/src/main/java/org/jasome/metrics/calculators/CyclomaticComplexityCalculator.java
Ну и вторая фишка, очень рекомендованная к применению совместно с первой: использовать только иммутабельные типы данных.
Системный разбор Анатолием Георгиевичем Кушниренко темки "Программирование для математиков, 35 лет спустя" (там же ссылочка на видео) -- про школьную информатику и, соответственно, про массовое обучение программированию всех желающих.
https://ailev.livejournal.com/1568319.html
"Не опустить университетский курс в среднюю школу, а поднять курс для дошкольников в начальную школу -- и навыки в объёме ОГЭ по информатике закрыть уже в начальной школе. И этот второй заход оказался успешным!.."
Добавлю, что в любой науке ровно столько науки, сколько в ней математики, а в любой математике ровно столько математики, сколько в ней вычислимости. Но чтобы правильно думать об этой вычислимости (не путая вычислительную сложность с дескриптивной сложностью), надо прежде всего учиться задавать вычислительную семантику.
https://ailev.livejournal.com/1568319.html
"Не опустить университетский курс в среднюю школу, а поднять курс для дошкольников в начальную школу -- и навыки в объёме ОГЭ по информатике закрыть уже в начальной школе. И этот второй заход оказался успешным!.."
Добавлю, что в любой науке ровно столько науки, сколько в ней математики, а в любой математике ровно столько математики, сколько в ней вычислимости. Но чтобы правильно думать об этой вычислимости (не путая вычислительную сложность с дескриптивной сложностью), надо прежде всего учиться задавать вычислительную семантику.
Многие люди, кодящие даже на "современном" C++20, оказывается, не знают, что там давным давно есть завтипчики:
https://en.cppreference.com/w/cpp/language/dependent_name
С С++11 или C++14 вроде началось, если не раньше.
Темплейты в плюсах тьюринг-полные, и генерики из других языков до их мощи не дотягивают. Отличие от классических dependent types в том, что некоторое значение (параметр типа) тут должно быть в конечном итоге реально вычислено (конкретная чиселка нужна), чтобы это всё заработало, а полноценные языки с завтипами (в Idris или Agda например) подразумевают возможность формальных алгебраических "вычислений" на уровне исходных текстов.
Для улучшения понимания зависимых типов порекомендую прежде всего почитать про параметрический полиморфизм, как именно он поддерживается в языке программирования, на котором вы в основном кодите, а главное, поразбирать конкретные примеры такого полиморфизма.
https://en.cppreference.com/w/cpp/language/dependent_name
С С++11 или C++14 вроде началось, если не раньше.
Темплейты в плюсах тьюринг-полные, и генерики из других языков до их мощи не дотягивают. Отличие от классических dependent types в том, что некоторое значение (параметр типа) тут должно быть в конечном итоге реально вычислено (конкретная чиселка нужна), чтобы это всё заработало, а полноценные языки с завтипами (в Idris или Agda например) подразумевают возможность формальных алгебраических "вычислений" на уровне исходных текстов.
Для улучшения понимания зависимых типов порекомендую прежде всего почитать про параметрический полиморфизм, как именно он поддерживается в языке программирования, на котором вы в основном кодите, а главное, поразбирать конкретные примеры такого полиморфизма.
Я довольно часто говорю занимающимся о двух вечных болях в программировании, готового решения "из коробки" для которых не существует в силу их природы. Это
1) кодировка -- прежде всего кодировка текстовых констант в файлах с кодом, которые (файлы) шибко умные текстовые редакторы любят тайно перекодировывать, например из юникода в 1251,
и тут же в тему -- локализация проекта, и
2) дата/время таймзоны -- например, на сервере в классе Enterprise задаётся локальная таймзона, но у клиента в браузере своя локальная таймзона, и он вдобавок хочет произвольно менять таймзоны и при этом смотреть все отчёты с точностью до минуты в "своей" таймзоне (не забывая при этом переходы на весеннее и зимнее время...).
Однако есть ещё как минимум три боли, к которым каждому программисту желательно хорошо подготовиться.
3) regexp -- регулярные выражения. Как говорится, джуниор посмотрел на проблему, задействовал регэкспы для её решения, и теперь у него стало две проблемы :)
Регулярки -- сильная, но очень опасная штука, в частности потому, что отлаживать её практически нереально. Нафигачил паттерн, потестил, ну вроде работает. А потом такое началось!
Чтобы писать хорошие регулярные выражения, надо мыслить как регэксп :) А для этого нужен хороший алгебраический ум. Рекомендация -- пройти хороший курс и почитать хороший учебник, прежде чем пытаться писать любые регулярки.
4) CORS, XSS и CSRF -- механизмы атак и защит в браузерах, с которыми необходимо как следует промучиться не только каждому фронтендеру, но и бэкендеру прежде всего.
5) состояния/stateful и мутабельность -- ну это даже не конкретная боль, а просто неотъемлемое от любой программистской работы в мэйнстриме свойство быстрого запутывания кода и быстрого роста ошибок, прямо пропорциональное количеству используемых в коде переменных, значения (состояние) которых меняются в процессе работы программы. Бороться с этим надо, соответственно, stateless-ом и иммутабельностью -- правильным применением практик декларативного (в частности, функционального) программирования.
1) кодировка -- прежде всего кодировка текстовых констант в файлах с кодом, которые (файлы) шибко умные текстовые редакторы любят тайно перекодировывать, например из юникода в 1251,
и тут же в тему -- локализация проекта, и
2) дата/время таймзоны -- например, на сервере в классе Enterprise задаётся локальная таймзона, но у клиента в браузере своя локальная таймзона, и он вдобавок хочет произвольно менять таймзоны и при этом смотреть все отчёты с точностью до минуты в "своей" таймзоне (не забывая при этом переходы на весеннее и зимнее время...).
Однако есть ещё как минимум три боли, к которым каждому программисту желательно хорошо подготовиться.
3) regexp -- регулярные выражения. Как говорится, джуниор посмотрел на проблему, задействовал регэкспы для её решения, и теперь у него стало две проблемы :)
Регулярки -- сильная, но очень опасная штука, в частности потому, что отлаживать её практически нереально. Нафигачил паттерн, потестил, ну вроде работает. А потом такое началось!
Чтобы писать хорошие регулярные выражения, надо мыслить как регэксп :) А для этого нужен хороший алгебраический ум. Рекомендация -- пройти хороший курс и почитать хороший учебник, прежде чем пытаться писать любые регулярки.
4) CORS, XSS и CSRF -- механизмы атак и защит в браузерах, с которыми необходимо как следует промучиться не только каждому фронтендеру, но и бэкендеру прежде всего.
5) состояния/stateful и мутабельность -- ну это даже не конкретная боль, а просто неотъемлемое от любой программистской работы в мэйнстриме свойство быстрого запутывания кода и быстрого роста ошибок, прямо пропорциональное количеству используемых в коде переменных, значения (состояние) которых меняются в процессе работы программы. Бороться с этим надо, соответственно, stateless-ом и иммутабельностью -- правильным применением практик декларативного (в частности, функционального) программирования.
Удивительный тренд: хаскелисты массово переходят на раст.
Впрочем, после хаскеля раст очень хорошо заходит! Вроде бы это шаг назад в императивщину, но нет, Rust настолько хороший "классический" язык программирования сам по себе, что на нём получается выделывать очень крутые штуки.
RustBelt is a formal model of Rust’s type system.
This thesis has received a 2021 Otto Hahn Medal and the 2021 ETAPS Doctoral Dissertation Award.
https://people.mpi-sws.org/~jung/thesis.html
Rust Verification Workshop 2021
https://www.youtube.com/playlist?list=PL-uEDsw-7yRLYMEdlvh4udnjK3JtGJgSh
Я даже подумываю добавить в цикл "как понять в программировании всё" примеры на Rust в дополнение к Julia.
Впрочем, после хаскеля раст очень хорошо заходит! Вроде бы это шаг назад в императивщину, но нет, Rust настолько хороший "классический" язык программирования сам по себе, что на нём получается выделывать очень крутые штуки.
RustBelt is a formal model of Rust’s type system.
This thesis has received a 2021 Otto Hahn Medal and the 2021 ETAPS Doctoral Dissertation Award.
https://people.mpi-sws.org/~jung/thesis.html
Rust Verification Workshop 2021
https://www.youtube.com/playlist?list=PL-uEDsw-7yRLYMEdlvh4udnjK3JtGJgSh
Я даже подумываю добавить в цикл "как понять в программировании всё" примеры на Rust в дополнение к Julia.
В России на днях выделили Р600,000,000 на обучение обучению технологиям AI -- ну то есть массово универских преподов готовить. Могу себе представить, каким же легаси технологиям за эти денежки будут студентов учить, потому что от США и Китая в научном плане мы отстали безнадёжно, если судить хотя бы по составу международных научных конференций AI/ML. Я бы даже поставил на то, что AGI который захватит мир будет скорее китайский, хотя в американских компаниях сейчас вроде все мировые AI-топы работают.
В наших университетах ситуация совсем печальная:
https://habr.com/ru/post/562476/
И как бы не надували щёки МГУ и СПбГУ, в мировом рейтинге университетов они замыкают top 100 (если в этом году вообще попадут в него). Надо понимать, что это отличие качественное: уровень обучения computer science в Массачусетсе или Стэнфорде такое, что наши лучшие универы в сравнении с ним это как третий школьный класс арифметики и третий вузовский курс по матану.
Тем временем вузы по всей стране, офигев от результатов ЕГЭ и уровня нынешних 11-классников, пробившего дно в этом году особенно сильно, срочно снижают проходные баллы. Ну и кого через 3-5 лет будем учить AI?
Как надо было? Как в футболе, когда банк покупает клуб и хочет его быстро сделать чемпионом -- тут не до развития молодняка и своих академиев. Вы же знаете, что подавляющее большинство успешных стартапов их создатели организовали, будучи в возрасте 24-39 лет (средний возраст 34 года)? и никаких студентов на самом деле.
Просто перекупаются топовые звёзды на пару сезонов. Потому что до сингулярности остались считанные десятилетия, и пока ещё не поздно совсем, надо срочно переманивать мировых спецов -- пару десятков схантить вполне достаточно (ну и у нас человек пять найдётся), и организовать для них единый центр, где и обучение бы велось, но не массовое, а по вполне конкретным прорывным темкам, в прямом направлении на AGI. И преподов готовить, только тоже не массово, а точечно.
В наших университетах ситуация совсем печальная:
https://habr.com/ru/post/562476/
И как бы не надували щёки МГУ и СПбГУ, в мировом рейтинге университетов они замыкают top 100 (если в этом году вообще попадут в него). Надо понимать, что это отличие качественное: уровень обучения computer science в Массачусетсе или Стэнфорде такое, что наши лучшие универы в сравнении с ним это как третий школьный класс арифметики и третий вузовский курс по матану.
Тем временем вузы по всей стране, офигев от результатов ЕГЭ и уровня нынешних 11-классников, пробившего дно в этом году особенно сильно, срочно снижают проходные баллы. Ну и кого через 3-5 лет будем учить AI?
Как надо было? Как в футболе, когда банк покупает клуб и хочет его быстро сделать чемпионом -- тут не до развития молодняка и своих академиев. Вы же знаете, что подавляющее большинство успешных стартапов их создатели организовали, будучи в возрасте 24-39 лет (средний возраст 34 года)? и никаких студентов на самом деле.
Просто перекупаются топовые звёзды на пару сезонов. Потому что до сингулярности остались считанные десятилетия, и пока ещё не поздно совсем, надо срочно переманивать мировых спецов -- пару десятков схантить вполне достаточно (ну и у нас человек пять найдётся), и организовать для них единый центр, где и обучение бы велось, но не массовое, а по вполне конкретным прорывным темкам, в прямом направлении на AGI. И преподов готовить, только тоже не массово, а точечно.
Хабр
Как я дважды пытался, но ни разу не смог получить высшее ИТ-образование в российской провинции
Пензенский Государственный Университет Здравствуйте, меня зовут Сергей, и у меня, как и у многих других программистов, нет диплома о высшем образовании. Не то, чтобы я не пытался его получить -...
Вы сами должны быть самым первым и объективным (и желательно, придирчивым и занудным) ревьюером вашего же кода. Если ваш собственный код труден вам же для code review, то он тем паче будет труден для понимания другими :)
Полезная микра: оставлять комменты, предназначенные для понимания его ревьюером (вам же самим, в частности, через пару месяцев, когда вы уже всё забудете). Например, если у вас в проекте 10 файлов, то прежде всего хорошо бы понять, а какой из них "первый" в семантическом плане, с чего вообще начинать разбирательство с проэктом.
Иначе вы будете регулярно получать вот такие предложения ))) =>
Полезная микра: оставлять комменты, предназначенные для понимания его ревьюером (вам же самим, в частности, через пару месяцев, когда вы уже всё забудете). Например, если у вас в проекте 10 файлов, то прежде всего хорошо бы понять, а какой из них "первый" в семантическом плане, с чего вообще начинать разбирательство с проэктом.
Иначе вы будете регулярно получать вот такие предложения ))) =>
Отовсюду лезет реклама AI pair programmer
https://copilot.github.com/
смешно, что в примере parse_expenses.py используется float для хранения денег хм.
Это абсолютная ошибка проектировщика и никогда так не надо делать, но -- но бывает ли это реальной проблемой?
Помнится, из 1990-х история, как некий умник в каком-то американском банке подправил логику округления (32-разрядный float наверное в 5-6 знаке ошибается), и по центу с лавины округлений денежных транзакций сбрасывал себе на счёт, и якобы стал миллионером. Но с тех пор каких-то эпикфейлов из-за использования стандартных типов с плавающей запятой для хранения денежек особо не было слышно.
Впрочем, совсем не исключено, потому, что мэйнстрим пробил дно уже так, что данный тип багов, несмотря на массовое явление более-менее норм типов из коробки вроде decimal, стал повсеместным :-)
https://copilot.github.com/
смешно, что в примере parse_expenses.py используется float для хранения денег хм.
Это абсолютная ошибка проектировщика и никогда так не надо делать, но -- но бывает ли это реальной проблемой?
Помнится, из 1990-х история, как некий умник в каком-то американском банке подправил логику округления (32-разрядный float наверное в 5-6 знаке ошибается), и по центу с лавины округлений денежных транзакций сбрасывал себе на счёт, и якобы стал миллионером. Но с тех пор каких-то эпикфейлов из-за использования стандартных типов с плавающей запятой для хранения денежек особо не было слышно.
Впрочем, совсем не исключено, потому, что мэйнстрим пробил дно уже так, что данный тип багов, несмотря на массовое явление более-менее норм типов из коробки вроде decimal, стал повсеместным :-)
GitHub
GitHub Copilot
AI that builds with you