Metaprogramming
615 subscribers
103 photos
1 video
156 links
μετά- «между, после, через» (греч.)

Жизнь программиста за пределами программирования: алгоритмы, психология, инвестиции, иное.
Download Telegram
Forwarded from Банкста
Депутат Аксаков допустил создание в России финсистемы с обеспеченным золотом рублем.
Создание финансовой системы, где рубль был бы обеспечен золотом и товарами.

Ранее во вторник секретарь Совета безопасности России Николай Патрушев заявил, что научным сообществом предложен проект по созданию в двухконтурной валютно-финансовой системы, где рубль обеспечат золотом и товарами - валютными ценностями. @banksta
– Надо создавать максимальные льготы отечественным программистам. Что-то делается, типа отсрочки от армии, но этого, конечно, мало. Это очень важные и нужные люди и надо перед ними немножечко поплясать, я думаю. От этого только лучше станет. – Д.Е. Галковский
Вкратце о декларации будущего интернета

Любому человеку понятно, что "Интернет" с большой буквы нормальные люди могут написать только по приколу. Всерьёз так пишут девяностолетние аппаратчики эпохи застоя, за которых интернетом пользуются специальные ассистенты. Группа таких мультинациональных аппаратчиков из США и ЕС выпустила "Декларацию Будущего Интернета".

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

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

Мои варианты:

1. Сетевая нейтральность, т.е. запрет выборочной тарификации и неоправданных ограничений скорости соединения с различными сетевыми узлами
2. Запрет любых межсайтовых систем идентификации личности (digital fingerprinting)
3. Обязательность для крупных сервисов (например, от 100 тыс. активных пользователей в месяц) предоставлять пользователям доступ к API, с помощью которого можно получать (вызывать) основные функции сервиса. Пользователь должен иметь право делегировать доступ к этому API по своему усмотрению. Тарификация доступа к API не должна превышать тарифы на доступ к основному пользовательскому интерфейсу сервиса.
4. Обязательность для СМИ-платформ (точное им определение можно при желании дать отдельно) идентифицировать своих пользователей (это в той или иной мере уже и так вводится – к неудовольствию многих айтишников – а как по мне дело стоящее).
5. Обязательность для крупнейших СМИ-платформ (например, от 1 млн. активных пользователей в месяц), допускающих пользовательские дискуссии, проведения открытых гласных демократических выборов модераторов. Обязательность раскрытия базовой персональной информации сотрудников (имя, страна, город, образование, рабочее резюме, средства связи), ответственных за управление сообществом.
6. Запрет блокировать доступ к сайтам для домашних пользователей иначе, как по решению суда (государственным и частным организациям, включая образовательные, разрешается блокировать на своей территории на своё усмотрение).
7. Запрет судебных блокировок по основаниям иным, чем уголовным. Иначе говоря, разрешение блокировать только ту информацию, факт опубликования/высказывания которой является составом уголовного преступления.
8. Разрешение использовать любым лицам любые средства криптографии в любых целях, при условии что алгоритмы и исходный код этих средств криптографии находятся в публичном доступе. Запрет на запись, перехват, подлог криптографических ключей без судебного решения и инициированного в отношении конкретного лица (владельца или пользователя ключей) предварительного следствия.
9. Запрет организаций по коллективному управлению авторскими правами, ведущими дела от имени авторов без их явного согласия.
10. Штрафы в размере % от оборота в отношении платформ и правообладателей за бездоказательную блокировку доступа к контенту или получению авторских вознаграждений.
11. Защита прав потребителя при кроссграничной покупке продукта или услуги. Создание международного третейского органа для арбитража споров потребителя с продавцом.

А вы бы что добавили?

#programming
Вкратце о том, как передать файл с Windows на Android через Wi-Fi

1. Установить WSL 2 и Docker Desktop
2. "docker run --rm -it -p 8080:80 -v $(pwd):/usr/share/nginx/html
nginx" в папке с нужным файлом на Windows
3. На телефоне в браузере набрать https://<ip>:8080/<filename>, где <ip> заменить на IP-адрес в сети роутера (кликнуть на значок Wi-Fi, пролистать вниз, IPv4-адрес), а <filename> - имя файла

Ну или купить мак с айфоном и закинуть через airdrop, что, конечно, проще и быстрей.
Дайте два

Как известно, компания AMD появилась следующим образом. Представители Intel пришли в очередной раз в Пентагон распилить заключить выгодный контракт. На что им сказали: а вы знаете, мы с вами не хотим больше работать. Потому что вы монополисты. А с монополистами нельзя заключать договоры, это против правил.

В Intel тяжело вздохнули и на ровном месте надули через трубочку себе карманного прямого конкурента, передав все технологии, заключив долгосрочные договоры о сотрудничестве и т.д. Ну, там конечно в AMD ещё был какой-то очередной гаражный стартапер, $100k баксов набранного у FFF (friends, family, fools) начального капитала и всё такое прочее, но это история не интересная. Потому что гараж и его хозяин мог быть другим, $100k сумма смехотворная, а вот без ноу-хау от интела ничего бы заведомо не вышло.

Потом, конечно, AMD начала вертеться как могла и за несколько десятков лет из китайского клона выросла в самостоятельную компанию, фактически на данный момент превзошедшая своего интеллектуального предка. (Забавно, кстати, что на последних презентациях AMD требуется изрядно поднапрячься, чтоб не принять её за в самом деле китайскую компанию – ключевые лица на сцене вполне себе китайские. Видимо, это американская фишка такая современная, азиат, то есть не негр – понятно, что white straight males было бы просто неприлично – значит умный.) Ну так первая однозначная победа случилась спустя почти 30 лет от основания компании (выход архитектуры x64).

В целом подобный принцип американского госкапитализма можно проследить во всех сферах деятельности. "Дайте два". В РФ последнего времени, наоборот, "больше одного не надо". Нужно не больше одного производителя самолётов, не больше одного большого банка для ритейла, не больше одной ракеты и т.д. Даже "Магнит" не нужен, есть же "Х5". Ну и политическая партия нужна одна, а не две – уж думаю к этому предложению всем на ум пришла эта мысль.

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

#economics
Вкратце про иностранных специалистов

На фоне прекращения доступа к зарубежным технологиям, оттока технических специалистов и общего повышения уровня безработицы корпорация ВЭБ.РФ (что-то вроде инвестиционного банка без банковской лицензии) выпустила триединый доклад о необходимости пожалеть, понять и принять мигрантов из Узбекистана, Таджикистана и Киргизии (примечательно, что в списке нет Казахстана – ближайшего военного и экономического союзника РФ и самого культурного государства Средней Азии).

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

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

А почему такие эксперты у государственной корпорации РФ? Потому что многонациональная федерация всех народов земли по-другому и не может. Любое национальное государство, включая Киргизию и Таджикистан, может успешно лоббировать свои интересы в Федерации, а обратное невозможно. Выходит издевательство над реальностью и коренным населением (т.е. русскими – жителями мононациональной де-факто страны – и рядом малочисленных других коренных народов России).

Про основополагающие аспекты государственного устройства РФ недавно в своём Российско-Украинском цикле рассказал Д. Е. Галковский:

- н033. Россия-Украина. Что такое Российская Федерация
- н034. Россия-Украина. Разговор по существу в спокойных тонах
- н035. Россия-Украина. Глубинный СССР
- н037. Россия-Украина. Земщина и опричнина
- н038. Россия-Украина. Предварительные итоги
- Информационный бюллетень 39. No problem
- н040. Россия-Украина. Псевдомногонационалия

Про попытку скрестить Россию со Средней Азией говорил много раз К. А. Крылов, вот одна из записей (нашлась первой; кстати, а чего так ведущего с солнечным лицом и какого-то коммуниста что ли слева от Крылова корёжит?):

- К.Крылов о Евразийском союзе как попытке "скрестить ужа с ежом"

Возвращаясь к обсуждаемому докладу, выскажу вкратце и свою позицию. Конечно же, я всецело поддерживаю открытость границ иностранным специалистам. Граждане Узбекистана, Таджикистана и Киргизии, являющиеся специалистами в области производства микропроцессоров, машиностроении, автомобилестроении, программировании (и смежных областях), и т.п. областях, в резком развитии которых наша страна начала нуждаться остро: добро пожаловать! Несомненно, и налоговые льготы, и обязательное обеспечение высокой зарплаты (думаю, для начала можно установить границу в $1.5k и постепенно повышать год к году), и достойные условия проживания и питания + полная медстраховка за счёт работодателя должны быть положены по закону. Нарушителей (нанимающие организации) должны строго штрафовать, в пределе прекращать выдачу патентов.

Более того, думаю, стоит пойти дальше и вообще кардинальным образом либерализовать миграционную политику. Странно останавливаться на жителях только трёх стран – стоит столь же льготные условия предоставить как минимум специалистам из США, ЕС, Южной Кореи, Тайваня, Китая. А иначе что за узколобая дискриминация землян получается?

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

#economics
Глас народа

Собираюсь написать пару мыслей по Docker Swarm vs Kubernetes. Вот думаю, вам лучше покороче и поменьше или подлинней и побольше?
Вкратце про читающий мысли ИИ

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

На этот раз операторы электроэнцефалогрофа показали двум испытуемым шесть клипов – три "положительных" и три "отрицательных". В чьей оценке положительных и отрицательных? В оценке исследователей, вероятно. Дальше засунули данные в волшебный чёрный ящик ("машинное обучение"), взболтали, перемешали, и на выходе получили статистическую модель (такое название корректно для получившейся программы, поскольку ни к обучению, ни к интеллекту она и косвенно не относится), которая на основе обработки 70% данных очень хорошо предсказывает оставшиеся 30%. Т.е. может достоверно угадать, клип из первой группы или из второй смотрит субъект.

Укажу лишь на две проблемы этого исследования.

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

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

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

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

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

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

#psychology #science
Вкратце про Docker Swarm vs Kubernetes

Docker Swarm и Kubernetes – это два так называемых оркестратора контейнеров. Это софт, который убеждается, что на N вычислительных узлах (компьютерах) будет запущено M задач с рабочей нагрузкой (docker контейнеров).

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

Docker Swarm это просто и быстро, и можно развернуть на коленке в три команды. Kubernetes это сложно, долго, и разворачивать стоит только за чужой счёт (все облачные провайдеры развернут и будут поддерживать управляющую плоскость Kubernetes за вас бесплатно или за небольшой ежемесячный взнос).

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

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

Итак, во всех случаях стоит предпочитать Docker Swarm, кроме тех, когда нужна какая-либо дополнительная фича, имеющаяся только в Kubernetes. Перед тем, как перейти к списку отличий, вкратце что оба из них позволяют.
В Kubernetes можно ресурсу Service прописать либо аналогичный "проброс портов", либо указать использовать автоматически создаваемый load balancer облачного провайдера (который магическим образом у облачного провайдера прикручен к куберу).

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

б) Через использование общего HTTP-сервера

В кластере, однако, может быть запущено 20 веб-приложений (например, веб-сайтов), каждому из которых нужен порт 80 или 443. При этом приколотить намертво конкретный порт 80 ноды можно, как описано выше, только к одному конкретному сервису.

Выходят из этого положения так: запускают на весь кластер один веб-сервер (nginx или traefik), а затем динамически изменяют его конфигурацию, чтобы он на основании имени домена (или других данных HTTP-запроса) отправлял запрос в нужный сервис (заодно терминируя TLS, управляя сертификатами).

В Kubrenetes за описание таких "кусков конфигураций общего HTTP-сервера для конкретного сервиса" отвечает ресурс Ingress ("точка входа"). В Swarm, формально, решения этой проблемы нет, но существует стандартный процесс установки-настройки Traefik, который позволяет делать тоже самое (конфигурация конкретного сервиса настраивается через специальные swarm-аннотации).

Это единственное место из перечисленных, где в Kubernetes сделано что-то более просто и логично, чем в Swarm.

#programming #devops
Metaprogramming
Вкратце про смерть мейнстрима и инвестиции (2/3) Про биржевые паевые фонды для всех практических целей разговор можно начать и закончить так: на российском рынке грабительский процент у всех БПИФов, который может заставить в них вкладываться человека либо…
В дополнение к январским рассуждением о ETF пришла прекрасная новость:

> В среду, 1 июня, компания FinEx ETF сообщила держателям паев фонда FinEx Tradable Russian Corporate Bonds (FXRB), что она продала все активы и при этом пайщики не получат никаких выплат. «Инвесторам не стоит ожидать каких-либо выплат по этому активу», — подчеркнул провайдер фонда.

Объясняют исчезновение денег так:

> Обычно, если провайдер принимает решение закрыть какой-либо ETF, администратор фонда распродает из него активы, а полученные деньги переводит инвесторам на брокерский счет или ИИС. Однако, инвесторы FXRB не получат ничего из-за того, что все средства, полученные от распродажи активов были направлены на покрытие по валютным свопам, использовавшихся для обеспечения рублевого хеджирования.

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

Раз так весело дело пошло продолжим рекомендации параноика-консерватора: стоит начать переводить крупные пакеты акций (а мелкие и нет смысла держать, думаю при любых сценариях компаний на рынке будет всё меньше) из депозитариев брокеров в реестры самих ПАО.

#investing
Вкратце о высшем образовании в IT

На хабре обсуждают очередной крах обманутых ожиданий:

> Я суетился, пытался искать пути трудоустройства, параллельно учился и изучал материал самостоятельно, и вот, на третьем курсе, я уже работаю в технической поддержке. Проработав там 10 месяцев, я узнал о том, что обучение в ВУЗе покрывает от силы 10 процентов того, что потребовалось в работе, и что самостоятельное изучение является чуть ли не основополагающим в становлении меня как специалиста. Для меня, как человека, который верил в то, что учебное заведение призвано ОБУЧАТЬ, это было, мягко говоря, шоком.

По этому поводу в очередной раз добавляю пару своих мыслей.

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

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

Речь о конкретных прозаических вещах, о десятков курсов "основы Х": основы ядра линукса, основы программирования на C, основы алгоритмов, О-нотации, основы того, сего и всего. Паттерны ОО-дизайна на C++ в расписании, паттерны gang of four для Java в книге сокурсника, паттерны новых обоев на стене компьютерного класса, где изучали Ruby (да, у нас был такой курс, после и вследствие которого в будущем я и стал Rails-разработчиком), паттерны нормализации реляционных баз данных, паттерны циклов do while и while do в ассемблере, паттерны решения ACM-задач на институтском сайте, паттерны общения с преподавателями на экзаменах.

Многопоточное программирование, семафоры, сигналы, разделяемая память. Дискретная математика, вычислительная математика, высшая алгебра, группы, сходимость приближенных вычислений, сходимость интегралов, сходимость студентов на первую пару. Спектры, АЧХ-ФЧХ, ПЛИСы, верилоги-виэйчдиэли, "график вверх ногами". Консультации до лабораторных работ, консультации после лабораторных, консультации вместо лабораторных у одногруппника, работающего инженером в "Эльбрусе". Высшая алгебра, теория информации, энтропия, LZ-сжатие в тетрадочке в клеточку, четвёрка в диплом за нулевую посещаемость при шести верных задачах письменного экзамена (на пятёрку нужно пять), криптография, пен-тестинг, RSA и EC, и т.д. и т.п.

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

#programming
Выше было во-первых, перейдём к во-вторых.

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

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

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

То есть я понял, что программирование это просто.

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

Программистам может наскучивать рутина, но им не наскучивает новое. Считается, что если программисту не платить за работу, то он всё равно будет программировать. Это верно, но есть нюанс – он будет программировать нечто иное, скорее всего чего раньше ещё не делал.

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

#programming
Вкратце про монады

Программистов часто пугают некими монадами, которые являются одновременно чем-то загадочно-непостижимым и при этом повсюду применимым.

Как узнать, что такое монады в две строки из, фактически, первоисточника:

docker run --rm -it haskell:slim
:info Monad

Где ясно написано, что монада это аппликативный функтор с определённой операцией >>= (bind, привязки).

Ну какие ещё могут быть вопросы после такого?
Вкратце о ИИ и программистах

Скинули видео об очередном ИИ для генерации кода, в этот раз от OpenAI – Codex. Напомню, аналогичную разработку ведёт GitHub под названием Copilot.

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

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

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

Проще ли это, чем скопировать готовый код, который будет на первой странице результатов запроса в Гугл? Конечно, намного проще: и понимает цель запроса такой ИИ лучше, пока что, чем поисковая строка Гугла; и ответ сразу вставляется в документ, не надо копировать. Это сильно снизит порог входа для новичков (и это прекрасно), вызовет интерес у школьников и студентов.

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

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

Так что диссертацию по философии или теологии в каком-нибудь продвинутом ВУЗе какая-нибудь лямбда защитить, уверен, вскоре сможет. Создать язык программирования, написать увлекательный научно-фантастический роман, победить в чемпионате по Старкрафту с ограниченным APM – нет.

Кстати, о старкрафте. Люблю вспоминать старые темы. Помните, там какой-то очередной ИИ в Го победил чемпиона, и вот-вот должен был победить команду чемпионов в "Доту"? Так и как там дела у них?

#science #programming #neuronetworks
Вкратце про нефть

Ранее писал, что главная функция ЦБ, evidently, это защита активов зарубежных стейкхолдеров крупнейших экспортёров.

Думаю, многие инвесторы в первую неделю так называемых "известных событий" сидели и рассуждали примерно следующим образом:

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

Спустя короткое время, однако, ЦБ выпустил указ о запрете продажи иностранцами активов. При этом не стесняясь буквально назвать чёрное белым заявил, что сделал это для защиты отечественных инвесторов.

Что его на самом деле вынудило ввести такую меру не трудно представить. В качестве анекдота я несколько месяцев пересказывал такую фантазию/гипотезу: звонит нужному зампреду специальный человек из British Petroleum и говорит:

– Ребята, нас тут правительство UK зажимает, заставляет продать долю в Роснефти, говорят неприлично так нагло продолжать вкладываться в Россию на фоне санкций и всего. А мы не хотим её продавать. Сделайте со своей стороны что-нибудь.
– Понял, – отвечают в ЦБ. И накладывают санкции на российских граждан, запрещая им выкупить по-дешёвке акции Роснефти.

Ну а сейчас сама BP рассказывает, как оно было:

> Британская ВР сохраняет участие в российских активах, в том числе 19,75% пакет акций "Роснефти" — крупнейшей в РФ нефтяной компании.
>
> В финансовом отчете британской компании, опубликованном 2 августа, говорится, что контрсанкции со стороны Москвы не позволяют ВР отказаться от доли в "Роснефти": компания не может осуществить продажу акций "Роснефти" на Московской бирже и оценить вероятность какого-либо сценария выхода из актива.

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

#economics #investing
Вкратце про игры для программистов

Тракторист после работы приходит домой и расслабляется в Farming Simulator, экскаваторщик в Excavator Simulator (увы, ещё не вышла, но очень ждём), фрезеровщик в Milling machine 3D, ну а игры для программистов мы сейчас вкратце рассмотрим. За прошедшие годы тут выбор крайне широкий, и в этот пост постараюсь уместить только непосредственно связанное с разработкой программ (т.е. условный Factorio или ещё что отдалённое не рассматриваем), лично рассмотренное и, с моей точки зрения, одновременно полезное и приятное.

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

2. Exapunks. Красочно, ярко, интересно. Уровни разнообразные и сопровождаются симпатичными рисовками. Тоже ассемблер.

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

4. The Signal State. Весьма красочная и с прописанным сюжетом. Разрабатываем аналоговые преобразователи сигналов, соединяя их в специальной деке в цепочку. Однако, механика довольно слабая, забирать элементы с предыдущего уровня на следующий нельзя.

#games
Вкратце про развитие IT

Обозначу вкратце маркеры, по которым, на мой взгляд, можно судить о том, что некая айти-компания в самом деле занимается развитием:

1. На позиции главного публичного лица (например, генерального директора; или министра) находится человек, который всеми силами старается мимикрировать под айтишника. Понятно, что настоящий технарь, занимающий высший управленческий пост, это статистическая погрешность, которой следует пренебречь при общем взгляде – не так мир устроен. Посему управленец, который хотя бы притворяется технарём, это уже хорошо. Если управленец (на публичной позиции) притворяется зиц-председателем (зиц-председатель претворяющийся зиц-председателем – даже звучит абсурдно) и на передний план выставляет MBA, экономическое образование, юридический ВУЗ и прочие МГИМО, то диагноз вполне однозначен – ничего не будет, а если и будет, то вопреки.

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

3. Тот же пункт, но немного с другой стороны. Понятно, что вырасти "с самых низов" и до генерального директора/мажоритарного акционера крупной айти-компании – это статистическая погрешность (а скорее всего сказка для детей). Опять же, не так мир устроен. Топовые позиции занимают люди из некоей группы X со своей определённой субкультурой, а специалистами работают люди некоей группы Y с другой определённой субкультурой. Множества слабо пересекаются, хотя за счёт мимикрии, на беглый взгляд, граница и выглядит размыто. Так вот, айти-компания/отрасль будет развиваться, если существует сформированный класс управленцев второго уровня из группы Y – т.е. на высшие руководящие позиции систематически попадают "технари", которые прочно на них закрепляются и условно свободно мигрируют с одной такой позиции на другую.

4. Специалистам "на местах" платят нормальные деньги. Думаю, не требует дополнительных уточнений.

Ну, соответственно новости в духе:

> Выпускник, скажем, университета марксизма-ленинизма (юридического факультета областного ВУЗа, Британского университета дружбы народов, ВШЭ, etc.) поднимает высокотехнологическую отрасль, скажем, космонавтики (микропроцессоров, самолётостроения, производства подшипников, etc.), получил N млрд. руб. на развитие отрасли (зарплата инженера высшей категории на соответствующем заводе: 30 тыс. руб.), разогнал старых коррупционеров и привёл свою команду (выпускников тех же институтов, ни одного с профильной специальностью, раньше, например, продавали мебель), и теперь мы заживём!

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

#economics
Вкратце про обучение "матану"

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

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

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

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

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

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

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

#science #education #mathematics
Вкратце про тест Тьюринга (1/2)

У Тьюринга, человека выдающегося интеллекта, выросшего в феодальном государстве с первобытными порядками, была тяжёлая жизнь с юношества и до самой смерти. Тьюринг типичный евразиец, родители – низовые британские аристократы, жили в Индии. Отметим на полях, что именно из такого контекста и пошло слово "евразиец", которое в связи с определёнными последними трагичными событиями мусолится в некоторых политических кругах. После переезда в Лондон молодой парень, чувствовавший себя в колонии принцем (с соответствующем, в том числе, уровнем жизни), превратился в "омегу" среди местных англичан. Гениальность всё равно пробилась, но личность поломалась от подобной "школы жизни" изрядно.

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

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

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

Непреодолимым препятствием для современных чат-ботов является удержание контекста. "Алиса, какая погода в Самаре? А есть ли там пробки на дорогах?". Вот это слово "там" разыменовать (как переменную-указатель в программировании) ИИ может только в жёстко и вручную прописанных разработчиком случаях (т.е. лингвистического интеллекта не демонстрирует). А человек на самых "минималках" владения языком делает запросто и не задумываясь ни на мгновение.

#programming #psychology #politics