Программисты не нужны

Наблюдал сегодня подгорание жепп всевозможных «бекендеров», прочитавших вот эту статеечку на хабре:

https://habr.com/ru/company/lingualeo/blog/515530/

Краткий пересказ: в LinguaLeo взяли Chief Technical Officer-ом некоего чувака, хорошо знавшего PostgreSQL — даже слишком хорошо, настолько, что он переписал на хранимые процедуры существенную часть бекенда. Результаты, например, по одной из задач говорят сами за себя:

Было Стало
Строк кода 10 000 300
Запросов к БД 12 1
Время выполнения, мс 600 20

Попутно были выставлены на мороз все веб-макаки, поддерживавшие то поделие:

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

Читатели почуяли, что их ценный навык переписывания JSON-ов на PHP стремительно теряет ценность и начали кидаться на автора, мол, ни черта он не понимает в разработке уеб-приложений. Обязательно зайдите в комменты, там феерично.

Кстати, про гомоморфизмы

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

el-gamal-vote

Придется объяснять, а то будете хихикать, как идиоты :)

Яндекс.Херня

Сегодня в Москве Яндекс.Такси протаранило Форд Мустанг из Яндекс.Драйва — а на заднем плане за этим наблюдает курьер Яндекс.Еды.

yandex-mustang

Не удивлюсь, если все причастные залипали в яндексовское «суперприложение«:

yandex-superapp

А Мустанг жалко.

Практическое пособие по государственным переворотам

Забавно, что те, кто орет про «организованные протесты по госдеповской методичке», обычно имеют в виду список Джина Шарпа, в целом довольно бессмысленный — ну разве что если вы не скучающие жидомасоны в тайном мировом правительстве, тогда он может пригодиться для забавной игры — выбираете случайный пункт и устраиваете его в подопечной стране. А есть и куда более полезная книжка — «Государственный переворот: Практическое пособие» Эдуарда Люттвака:

http://publisher.usdp.ru/catalog/887.html

Крайне рекомендую диванным революционерам-любителям.

Язык Си образца 70-х годов

Есть одна статейка, описывающая портирование Unix с PDP-11 на VAX (кстати, вопреки обычно озвучиваемому мнению о легкой переносимости Unix между разными архитектурами, именно продукция фирмы Digital долгое время была основной и практически единственной «платформой» для Unix):

https://www.bell-labs.com/usr/dmr/www/otherports/32v.pdf

На последней страничке приведены пожелания для доработки компилятора, очень интересны пункты 2 и 3:

Based on our experience, we strongly recommend that the C language and its compilers be enhanced so that:
<…>
2. The ’->’ operator is checked to insure that the structure element on the right is a member of a structure to which the pointer on the left may point.
3. A structure element may be declared with any name as long as the name is unique within the immediately surrounding structure. (The current requirement that a structure element name must uniquely correspond to an offset from the beginning of the structure, across all structures in a compilation, creates naming problems and frequently leads to errors of the type noted in item 2 above.)

Написанное немного непонятно для тех, кто никогда не задумывался, как структурки лежат в памяти — поэтому коротенький пример с примером двух ошибок:

struct A {
    int first;
    int second;
};

struct B {
    int first; /* Так нельзя - имена членов структур должны быть уникальны, first уже есть в struct A, см. пункт 3 */
    int second;
};

struct C {
    char c_first;
    int c_second;
};

struct C c;
c.second = 123; /* Компилятор съест и не подавится, но запишет это 123 совсем не туда, куда хотелось бы, см. пункт 2 */
/* То же самое с точки зрения современного Си: */
((struct *A) &c)->second = 123; /* Ты сам себе злобный Буратино */

При этом это поведение, странное с точки зрения «высокоуровневого» программиста и абсолютно нормальное — с точки зрения «низкоуровневой», когда мы думаем о байтиках в памяти, использовалось в коде Unix сплошь и рядом, как подсказывает нам статья, и явно привело к немалому количеству сюрпризов при переходе с 16 бит на 32.

Кстати, посмотрел на выходных на Django

В очередной раз возникла идея одного веб-приложения — ну и на выходных нашел часочек для прохождения Django tutorial. Выводов для себя сделал три:

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

Про Python, программистов и математиков…

…или зачем математикам программирование, или программистам — математика.

Посмотрел краем глаза на один прожект, где слепили обработку загружаемых пользователем аудиофайлов на Python, разумеется, с использованием SciPy (на это ума хватило). «Обработка» — громко сказано, на самом деле все сводится к обычной линейной алгебре. Беда в том, что файлы немаленькие — скажем, два канала с частотой дискретизации 44,1 кГц и разрядностью в 16 бит. Часовая запись — это уже 600 Мб, которые для использования SciPy надо полностью загрузить в память. Заодно там надо как-то хранить и промежуточные результаты вычислений — и в результате объем сожранной питоном памяти растет просто катастрофически.

Впрочем, память сейчас кажется дешевой, а подход «закидать проблему железом» — работающим. Так вот, при желании почти всю «обработку», которая есть в этом проекте, можно было бы сделать практически «в режиме онлайн», со скоростью загрузки или чтения файла с данными, а заодно — с в разы меньшим потреблением памяти. Нечто подобное я как-то делал даже для микроконтроллеров класса «за 2$ на алиэкспресс», с каким-нибудь ядром наподобие Cortex-M3, а лучше M4, и десятком-другим килобайт ОЗУ.

Беда в том, что условные «математики», сделавшие первую демонстрацию алгоритмов на SciPy (это модно и «научно»), не хотят лезть в программирование, а программисты не понимают примерно ничего из написанного на SciPy (ну например, хотя бы того, что делает функция numpy.dot).

С другой стороны, конечно, никакая оптимизация тому проекту не поможет — при 1 пользователе эта демонстрашка работает, при 10 придется докинуть памяти, при 100 пользователях может возникнуть проблема — компьютеры с потребным количеством памяти делает разве что IBM; другое дело, что 100 пользователей у того проекта никогда не будет.

Прочитал тут на днях

В одном околоайтишном чатике:

Слушал я тут как собеседуют devops-ов в core-команду
Конечно, все эти мальчики с татуировками, который умеют yaml-ы писать на первых пяти минутах получат от ворот поворот.
Начинают прямо с азов — как грузится linux, что такое процесс, какие состояния бывают, что такое зомби, чем они плохи, что такое inode, где файл хранится и так далее. Мальчики впадают в какой-то кататонический ступор.

про себя подумал «во валят!» и как-то радостно стало на моей душе

Спрашивают, кстати говоря, действительно не особо сложные вещи — это азы Unix-подобных систем, определения всего этого кочуют из книжки в книжку. Самое древнее, что я читал (гарантированно есть и более «классическая» литература) — это описание 4.3BSD 1989 года, и там все эти вопросы разбираются буквально в первых же параграфах соответствующих глав. Пугает другое — понимая юниксы, можно выучить этот ваш Docker с yaml-ом ну этак за неделю; знающие же только Docker азы юниксов изучать не будут, им это «не нужно».

Подобное лечится подобным

Как известно, COVID-19 начался с того, что «один китаец как-то раз сварил отличный суп»:

Для профилактики употребил 0,5 Бакарди, где на эмблеме как раз изображена та самая «заразная, ебучая больная мышь летучая!» Как думаете, поможет?

Кстати, про кино

А что у нас вообще есть в жанре «пьеса Шекспира, перенесенная в XX век»? Навскидку:

Вне зачета (хотя пушкинские исторические произведения — явное подражание Шекспиру) — «Борис Годунов» Владимира Мирзоева, 2011.

А расскажите про румынский паспорт

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

Климарев жжет

…начнется массовая деанонимизация человеческого мусора…

https://www.facebook.com/michael.klimarev/posts/4819643154728363

Вообще забавно, как всякие борцы за свободу легко переходят на раздачу определений вроде «человеческий мусор».

Кстати, опросик небольшой хочу замутить

Чуваки с высшим техническим и около того образованием — произносилось ли у вас где-то в вузовском курсе математики слово «гомоморфизм»? Или, может быть, был даже отдельный курс высшей алгебры, про всякие там группы, поля и прочие кольца? Если да — назовите вуз и специальность.

Лайк-шер-репост-ретвит, как обычно.

У меня фейсбук сломался, куда жаловаться?

Единственная за сегодня запись в ленте со словом «Минск»:

https://www.facebook.com/mikhail.gorbachev.3/posts/10220431391108288