Неделя Телеграма #2
Очередной дамп потока сознания из моего канала.
Повторю тезис, высказанный когда-то на пьяных посиделках. Кложа – это не Лисп. Это совершенно самостоятельный язык с собственной идеологией, выраженный в виде Лиспа. Автор мог бы взять любой другой синтаксис, и получилось бы что-нибудь вроде Скалы или Питона. Но все равно бы это была Кложа с неизменяемыми коллекциями и асинхронностью. Но с Лиспом прибыли доп. ништяки в виде макросов, мета-программирования и нормальный REPL.
Пусть вас не смущает мысль, что любой Лисп – это прежде всего какой-то самостоятельный язык, выложенный из скобок. Сомневающимся кложуристам советую сесть за Common Lisp, где все работает на указателях, структуры данных убоги и полный набор лулзов с равенством и идентичностью (=, eq, eql, equal). Это сродни тому, как европейский путешественник не отличает китайцев от японцев, хотя разница в культурах колоссальная.
Лисп – это только форма, один из способов донести идею языка.
Ни в одной платежной системе, ни в одном банке, ни в одной программе, связанной с деньгами, не учтены очевидные вещи, без которых пользование превращается в ад.
1) Автоматический учет комиссии. У тебя на счету, скажем, 10.000 фантиков, ты хочешь перевести все. Но будет комиссия 0.015 фантика. Абсолютно любая система молча позволит ввести 10.000 фантиков, примет запрос, после чего выдаст “недостаточно средств на счете”. И как дурак начинаешь перебор: 9.999,99 фантиков, 9.999,98 фантиков и т.д. Неужели нельзя добавить кнопку – эту сумму с учетом комиссии?
2) Ни в одном поле нет кнопки “все доступные средства”. У тебя 8.962,92 фантика на счету, система спрашивает – сколько? Приходится вводить 8.962,92. Копирование и вставка? Увы, поле не распарсит точки и запятые. Или продаешь акции. Нажимаешь кнопку, появляется диалог – сколько продаешь? А сколько у меня есть? Оно осталось на двух экранах назад.
И такая фигня в Сбербанке, в Тиньков-банке, в Авангарде, в Яндексе, в мобильных приложениях, в сраных криптовалютах, у БКС и везде где только можно.
Развею еще один миф: почему-то большинство считает, что каждая библиотека на Лиспе предоставляет свой DSL. Якобы типичная Лисп-программа – это смесь всевозможных DSL: для работы с БД, генерации HTML/CSS, обработки коллекций. Нет, это не так.
На самом деле, большая часть Лисп-кода состоит из функций и стандартных макросов. Изредка мы пишем собственные макросы, но только затем, чтобы умерить повторение кода. Все, что делается на макросах, можно сделать на функциях.
Полноценный, качественный DSL это весьма дорогое удовольствие. Доменный язык можно рассматривать только если библиотека развивается не первый год, сообщество активно, написана документация и примеры. В остальных случаях есть риск подцепить лишнюю зависимость, потратить время и выяснить, что оставшиеся 10% задачи чужой DSL решить не в состоянии.
По той же причине не стоит вкладываться в создание собственного DSL – потеряете кучу времени. Будет достаточно функций и нескольких вспомогательных макросов.
Легкость в создании DSL на каждый чих – это лже-аргумент, которым злоупотребляют в функциональных кругах. Я предупреждал.
Слать смс на латинице с транслитом – это такое днище и совок, что смешно говорить. Представить только, фирма тратит пять копеек за смс вместо десяти. Офигеть экономия. Тинькову 12 лет, а все-то шлет ахинею вроде “Vash parol dlya vhoda”. Русский сервис передает идею русскому потребителю на кракозябрах, прямо фантасмагория. Полагаю, на китайском будет еще дешевле! А вот Сбер подтянулся, все на русском.
Приятно, что с возрастом меняется точка зрения на разные вопросы, в т.ч. профессиональные.
Раньше я думал, что комментарии в коде не нужны. Достаточно писать понятный код, выносить неочевидные куски в функции с говорящими именам, и все будет ок. Теперь я понял, что комментарии очень нужны. Правильно написанный комментарий в разы сокращает время, необходимое на понимание кода в целом. Хороший комментарий это не Java-doc на два экрана, а короткая заметка о том, что делает эта функция или метод.
Чтобы понять важность комментариев, нужно сперва раскачать особый навык – умение видеть собственный код чужими глазами. Я не знаю, как именно это сделать, но с ним становится ясно, что ваш “очевидный” код на самом деле очевиден только вам.
Раньше я думал, что проекту необходима коллективная ответственность. Это когда каждый участник знает все подсистемы проекта и готов доработать любую его часть. Это неправильно и приводит к распылению и холиварам. Проект должен строиться из устойчивых подсистем, за каждой закреплены несколько разработчиков, изменения вносятся только по согласованию с ними. Тогда каждый будет заниматься только тем, что он знает лучше всего.
Раньше я думал, что проекту нужны созвоны. Стало ясно, что т.н. дейли-колл, дневной звонок, где все по очереди отчитываются о том, что сделали вчера и намерены сделать сегодня, есть по сути способ спустить время в никуда. Люди опаздывают, начинаются обсуждения тонкостей, к которым большинство не имеет отношения. Те, кто в офисе, тупят в телефон, удаленьщики серфят в браузере. Главное –не пропустить свою очередь. Что мешает заставить участников проекта написать письма с отчетом на два предложения?
Немного политики. Я давно не хожу на выборы и не намереваюсь делать это в дальнейшем. Коротко объясню, почему.
1) Нужно строить свою жизнь так, чтобы она не зависела от конкретного политика и даже политического режима. Не важно кто президент, нужно читать, выталкивать себя из зоны комфорта, не нарушать законы и платить налоги. При всем усилии я не могу представить, как бы изменилась моя жизнь, если бы результаты прошлых выборов были иными.
2) С подачи Варламова тех, кто не ходит на выборы, называют мудаками и подсобниками Кремля. Спасибо, мне приятно это услышать. Это еще отвратительней, чем принуждения со стороны гос. организаций. Дело добровольное, но кто не придет, тот мудак. Прекрасно.
3) Я не согласен играть по нечестным правилам. Конституция не дает права выдвигаться Путину на пятый срок, разрешение Конституционного суда в последний момент не в счет. У Грудинина нашли счета и должны были снять, но не сняли. Вы либо соблюдайте, либо нет, но тогда не зовите меня.
4) Голосовать не за кого. Путин уже почти стал фараоном, Грудинин – сталинист, Собчак топит за квоты по числу женщин на предприятиях, остальные какие-то ноу-неймы, кто они и откуда повылазили – х3.
5) Твой голос никогда не будет решающим, пока действует механизм по третированию бюджетников, массовым завозам курсантов МЧС, сгону несчастных учителей и дворников. Их зашугали так сильно, что им ничего не поможет, кроме как лишить их права голоса в принципе.
Напомню, не путайте фриланс и удаленную работу. Вот вы заболели и работаете из дома, чтобы коллег по офису не заражать. Вы же не стали от этого фрилансером. А кто-то каждый день так работает в силу географической удаленности. У него тоже подписан трудовой договор, зарплата капает и даже стаж идет. С какого перепугу он фрилансер?
А вот чем действительно отличается фрилансер от обычного сотрудника, неважно удаленного или в офисе – предлагаю вам обдумать на досуге.
Особенно жалко выглядят попытки программистов спорить за теорию струн, черные дыры и квантовую механику. Не теряй лицо, воздержись от этого. Если ты и впрямь специалист по струнам, херли ты забыл в веб-разработке на ПХП? Иди в науку, пиши книги. Если же прочитал очередную статью на популярном ресурсе и вынес какие-то крохи, не утруждайся пересказом – я и сам прочитаю, когда захочу.
Думал, что офисные программы уже научились работать с большими файлами. Но все по-старому: случайно кликнул на CSV-файл размером в 6 гигабайт, Excel повис и вылетел, не сохранив ни одну книгу. Не пойму, что мешает, например, загружать данные по 10.000 строк и подсасывать их динамически при прокрутке. Ну и спросить при таких объемах тоже не мешает. Годы идут, юзер экспериенс на том же дне.
Забыл добавить: отдельное спасибо криптовалютам и их создателям за майнинг. Теперь любой офисный клерк может нагрузить казенное железо и намайнить крипто-гроши. Даже в Сбербанке какой-то чудак майнил на серверах. Майнят на рекламных мониторах, в браузерах и даже научились распространять вирус в картинке. Только если раньше вирусы крали историю из Аськи, то теперь тихо майнят. Никто не понимает, зачем это делать, но делают.
Был такой египетский фараон Рамсес Второй. Строил храмы и пирамиды, расширял торговлю, имел пять официальных жен и тысячу наложниц. Любил египетский народ и был любим за СТАБИЛЬНОСТЬ (ТМ).
И была у него одна особенность: по меркам того времени Рамсес был супер-долгожителем. Он прожил 60 лет, в то время как средняя продолжительность жизни была 30 лет. В результате уже на пятидесятом году его жизни в стране физически не осталось человека, который бы жил при другом фараоне. И постепенно в глазах населения, не без помощи жрецов, Рамсес стал уже не фараоном-полубогом, а настоящим богом.
Но однажды Рамсес умер, и население впало в отчаяние. Египтяне плакали, ожидая, что Нил наполнится кровью, что с неба падут огненные молнии, что вот-вот настанет конец света. Но проплакав сорок дней, выбрали другого прези…, извините, Рамсеса – Третьего, а там и Четвертого, и Пятого, и далее по списку. И как-то жили дальше со жрецами и пирамидами. И сейчас живут.
Прошло две с половиной тысячи лет, а в некоторых странах все по-прежнему: правители сидят до самой смерти, жрецы вешают лапшу населению, рабы-гастарбайтеры строят храмы, а мумии предыдущих царьков лежат в центре столицы.
Ничему эти страны не учатся и потому будут вечными аутсайдерами.
Почти каждый день приходит маркетинговое письмо от того или иного сервиса: новости, просьба оценить, поток сознания менеджеров. В подвале обязательно есть ссылка “отписаться”. И я каждый день отписываюсь, но писем меньше не становится.
А вот когда ссылки нет, это особый фашизм. Или ссылка на страницу настроек уведомлений, куда можно попасть только будучи залогиненым.
Еще забавно, когда настройки уведомлений перекрывают друг друга. Например, ты отказался от всех рассылок, но на странице товара нажал “уведомить о поступлении”. И письмо не приходит, потому что настройки имеют более высокий приоритет, чем подписка на конкретный товар.
Но это уже слишком сложно для некоторых разработчиков.
Есть ли на свете что-то более бестолковое, чем заголовок “User-Agent”? Только что скопировал из Хрома:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/65.0.3325.162 Safari/537.36
Это же мрак и бред, смешались кони, люди. Почему вначале Мозилла? Почему на конце Сафари? Отчего нельзя структурировать эти данные? И нечего тыкать меня в Википедию: попробуйте сперва распарсить штук сто таких записей.
Нашли ошибку? Выделите мышкой и нажмите Ctrl/⌘+Enter