вторник, 16 января 2018 г.

[prog.flame] Яркий пример того, за что мне не нравятся упоротые Rust-оманы

Буквально квинтэссенция здесь: "Rust2018: back to the roots" (перевод на русский можно найти на Хабре: "Rust: «Назад к корням»"). Ярчайшая иллюстрация, на мой взгляд, вот эта фраза:

Starting a new systems project in 2019 that uses C or C++ should make everybody raise their eyebrows and not the other way around.

Ну, т.е., желание начать новый проект в области системщины в 2019 на C или на C++ должен вызывать только удивление и недоумение. Никак не иначе.

Что мне здесь не нравится?

Не нравится то, что упоротые Rust-оманы ставят своей целью вытеснить C++ (далее речь пойдет только про C++, поскольку судьба чистого C меня мало волнует).

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

Как по мне, так это просто звиздец.

C++ далеко не самый лучший язык программирования. Его использование связано с кучей проблем. Но он здесь. Он давно здесь. На C++ создано столько всего, накоплено столько всего готового, что просто так взять и отказаться от C++ в пользу чего-то другого не получится. Даже в самых влажных мечтах. Поэтому сама цель -- "не должно быть причин начинать новый проект на C++ в 2019" -- она маразматическая. Ну и чего хорошего можно ждать от движения, у которого маразматическая цель?


Специально для тех, что думает, что я хейтер Rust-а. Это не так. Rust -- это всего лишь еще один язык программирования. Если будет надобность, то освоить Rust в достаточной степени, чтобы писать хороший и работающий код, это лишь дело времени. И совсем небольшого времени.

Проблема только в том, что за Rust мне и моей компании никто платить не будет. Ну вот просто никто. В отличии от C++. И когда кто-то выступает с лозунгами, призывающими устранить нашу "кормовую базу", это вызывает серьезное недоумение. Особенно с учетом того, что за Rust-то не платят.

Ну и еще любителям Rust-а я предлагаю проделать такой мысленный эксперимент: проходит буквально пару лет, какая-нибудь компания, вроде Facebook-а или Amazon-а делает очередного конкурента C++ и Rust. Например, доводит до ума D с режимом betterC. Или выпускает safe C++, из которого выбросили совместимость с C, добавив безопасную работу с памятью, с мощными концептами, мегашустрой компиляцией и другими плюшками. И этот новый конкурент взял и взлетел. А его приверженцы начали компанию за то, чтобы в 2023-м году ни у кого не было причин начинать новый проект на Rust. Хорошо вы себя будете чувствовать, владея собственной кодовой базой на никому уже не нужном Rust-е?

воскресенье, 14 января 2018 г.

[prog] Пара вещей, которые сильно удивили меня давеча

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


Первая вещь -- это тема про обсуждение Crossover-а на RSDN. Вот вся тема. А вот, имхо, самая интересная ее ветка. Так вот меня удивляет вовсе не то, что сотрудники устанавливают на своих компьютерах специальный следящий софт, который делает скриншоты и фотографирует самого сотрудника. О такой системе контроля наслышан очень давно, причем доводилось слышать о том, что подобные системы контроля с завидной регулярностью применяются не только для контроля за удаленным сотрудниками, но даже и за теми, кто сидит в офисе. Так что не это вызвало мое удивление и непонимание.

Не понимаю я вот чего: какие задачи позволяют разработчику тупо сидеть и педалить код часами напролет, лишь изредка отвлекаясь на изучение документации и митинги?

Ну вот честно. Мне, наверное, везло (или не везло, тут уж как посмотреть) и практически все серьезное, что приходилось делать, требовало предварительного изучения, обдумывания, проектирования, прототипирования, экспериментирования местами. Так что были дни, иногда даже недели, когда код вообще не писался, зато исписывалась и изрисовывалась кипа бумаги. Потом уже код педалился, это да. Но как раз набор кода занимал совсем небольшой процент времени. Дабы не быть голословным, совсем недавний пример. Описанная вчера штука обдумывалась долго. Непосредственно эта идея -- где-то дня три-четыре (а ведь до этого были и другие идеи). Затем еще день-два на небольшой прототип, при разработке которого код писался так же не весь день напролет. Потом уже сама реализация, которая заняла три дня, и в эти дни был написан основной код, большинство тестов для него, плюс Doxygen-овские комментарии.

Добавлю еще один важный фактор. Не отвлекаться на почту или какие-то другие входящие воздействия было просто до начала 2000-х, когда Интернета не было даже по dial-up-у. Но уже лет 10, если не больше, практически не бывает того, чтобы ты часа полтора подряд работал в текстовом редакторе и ни на что больше не отвлекался. Даже когда работаешь дома в одиночестве.

Вспоминается всего пара типов задач, с которыми доводилось сталкиваться, и которые позволяют работать в режиме "думать некогда, код педалить нужно". Во-первых, это формошлепство. Когда тебе нужно сделать десяток форм с несколькими десятками контролов на каждой, плюс какая-то первичная валидация данных в этих контролах. Вот тогда думать особо не о чем, нужно просто накидывать контролы на форму и записывать получение/сохранение данных. Во-вторых, это преобразование данных из одного представления в другое. Например, приходит к тебе сообщение X с полями m1, m2, m3 и m4. А тебе нужно отдать сообщение Y, в котором должны быть X.m1 и X.m4. Обе задачи очень похожи и обе, как мне думается, являются частными случаями задач автоматизации документооборота.

Если Crossover специализируется на такого рода задачах, тогда все становится на свои места.


Вторая вещь -- это новость на opennet-е об очередном факапе с npm. Опять выкосили несколько мелких пакетов, которые оказались в зависимостях у кучи других проектов. В частности, удалили пакет require-from-string в исходниках которого буквально пара десятков строк.

И вот тут у меня уже вполне конкретный когнитивный диссонанс. Такое ощущение, что на JS-е программируют люди с другой планеты. Ибо, как по мне, любой вменяемый инженер бы просто скопипастил бы эти 25-30 строк чужого кода в свой исходник, может быть даже ничего не подправляя в копируемом фрагменте. И больше бы ни о чем не парился. А тут люди спокойно строят свои приложения на сторонних компонентах с такими развесистыми зависимостями, что вот эта история начинает восприниматься как документальный рассказ.

Какой-то страшный и непонятный мир -- разработка на JavaScript-е. Не удается отделаться от ощущение, что это бомба замедленного действия, заложенная под всю индустрию разработки ПО ;)