Pull to refresh
0
Aleksei Matiushkin @chapuzaread⁠-⁠only

Principal Engineer

Send message
техлиды, которые сами может код пишут и нечасто, но тем не менее занимаются решением технических и архитектурных задач

Люди, занимающиеся решением технических и архитектурных задач, должны много и часто писать код, иначе их решения будут основаны на их эфемерных представлениях о прекрасном, а не на реалиях сегодняшнего дня. При выборе архитектурного решения важнейшим условием является понимание того, как это будет реализовано. Хорошее архитектурное решение всегда включает в себя PoC, иначе это философия, а не computer science.


в вашу модель

Это не моя модель, это стандартизованная карьерная лестница разработчика в мире. Принципалы часто заняты архитектурой; distinguished подразумевает модель занятости «я делаю что хочу, и иногда вбрасываю идеи, а вы мне платите за это деньги».

Когда же наконец люди поймут, что руководитель — вообще никаким боком не является ступенью в карьере разработчика.


Карьерная лестница разработчика выглядит так:


Intern → Junior → Middle → Senior → Principal → Distinguished


В этой лестнице нет никаких тимлидов и руководителей отделов. В руководители пусть идут те, кто не способен (или не любит) хорошо писать код.


Руководитель — это не достижение в карьере разработчика, а полное фиаско, удивительно, что мало кто это понимает. Это как боевой пилот, который бы сказал: «я лучше на симуляторах студентов учить буду».


И вот как раз на последних двух позициях я что-то никогда не видал юнцов.

IDE vs vim — это вовсе не спор, это как лакмусовая бумажка: если человек топит за IDE, почти наверняка писать код он умеет только по подробной подсказке, на среднем уровне. Чтобы убедиться в чем-нибудь — ему всегда хватает версии «Мойша напел».


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


Так вот. В дебианах системный клипборд по умолчанию отключен. Надо накатывать что-то типа gtk-vim. fkthat просто уже от усталости и твердолобости собеседников перестал воспринимать этот разговор всерьез, да и зачем?

Смотря про какой язык речь. Тонны бойлерлейта Java/C# действительно, наверное, удобнее ворочать в IDE.


Навскидку во всех без исключения остальных языках — хорошим разработчикам IDE только мешает.

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


Сравнивать надо с, например, julia. (Го не годится, потому что если бы не гугл, про него никто никогда бы всерьез не заговорил, js не годится, потому что монополия, и альтернатив нет, и так далее). Экосистема очень так себе, хаскелю во внучки годится, — но найти разработчика, по опыту судя, чуть ли не проще, чем на хаскеле.

Один из самых солидных репозиториев компонентов на любой вкус у хаскеля, и чё-то как-то на массовость не особо влияет.


На лиспе трудно (невозможно) писать не вникая, а индустрии надо именно это: вон го как хорошо пошел, именно из-за дубовости.

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


Вон автор пишет:


Одним махом уменьшить кол-во branch инструкций в 45 раз, и количество вызовов printf’а в 15 раз, что дало ускорение почти в 2 раза — микрооптимизация?

Сиречь, автор тоже не понимает, когда нужно полировать свое эго выкрутасами «смотри, как я умею», а когда — нет. Процитирую свой же комментарий, мне не впадлу, может быть, со второго раза зайдет:


Я [...] ждал бы только многопоточность (и общие слова про низкоуровневую шлифовку надфилем, с комментарием, почему она здесь и сейчас — не только не нужна, но даже вредна).

Такая задача не может быть регулярной (и даже если она регулярная, оптимизировать ее нужно не так, и даже не на этом языке). На нормальной машине (у нас же есть доступ в интернет, а тут целое собеседование — можно рублей сто и пожертвовать) — стартуем c5.metal(хотя ладно, не будем Бесоса кормить) — простую c5.12xlarge, — получаем оптимизацию в ≈20 раз.


А не лапшу, которую никто завтра просто не поймет, и не «уменьшение количества branch инструкций», которое требуется в совсем других случаях.

Все неподдерживаемые приседания с шага 2 до многопоточности ускорили код в 4 с небольшим раза. Даже с первого наивного варианта — разница в восемь раз. Современные машины, на которых будет выполняться такой код — уж как-нибудь наделены 4 камнями с гипертредингом.


Если в XXI веке человек начинает с микрооптимизации условных переходов и ручной буферизации, его можно смело отправлять обратно в 1980-й год. Я — от действительно профессионала — ждал бы только многопоточность (и общие слова про низкоуровневую шлифовку надфилем, с комментарием, почему она здесь и сейчас — не только не нужна, но даже вредна).

GHC extension к Haskell 98

Ключевое слово 98, даже не extension. Это костыль, вкряченный сбоку. Я же не говорю, что оно не работает. Как-то работает, наверное. Даже в руби спустя лет двадцать добавили какое-то подобие AST, это всегда возможно, просто в силу структуры языков программирования.


Тут же, насколько могу судить, люди об этом думали с первого дня. Правильная реализация компилятора должна проходить через AST и позволять писать код прямо на нем. Лиспы так изначально проектировались, например.

Во-первых, я не настолько тупорылый дегенерат, чтобы принимать во внимание личность человека в дискуссии в интернете. Во-вторых, я написавшего впервые вижу. И, наконец, я написавшего немного уважаю, поэтому вариант Template Haskell отмел в контексте вопроса сразу, как GHC extension к Haskell 98. Я не думал, признаться, что у кого-то достанет смелости назвать это «first class citizen» в языке.

Если TH — это Type Hints, то я не понял вопрос. «Чем ананас более фрукт, чем яблоко?» — да ничем, просто TH как бы не являются meta-language facility, а AST является.


Вот я беру AST эликсира в узких местах — и почти диффеоморфно конвертирую его в Julia’s AST. И арифметика, написанная на эликсире, внезапно работает быстро. Или я могу нашему RnD реализовать алгоритм, не засоряя голову синтаксисом Julia. Как тут помогут TH?

Кажется, единственное (кроме borrow checker’а, конечно), что rust предлагает принципиально нового в сравнении с другими компилируемыми языками — это first class citizen AST.


Вот именно про AST было бы весьма интересно, потому что тогда можно было бы говорить о действительно интересной парадигме, позволяющей вывести интероперабельность на новый уровень — а не очередном невнятном синтаксисе и «avoid success at any cost».

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

Тут прекрасно все.


И «вы позволить не можете, ибо я считаю». И «хорошая машина за 100к». И «квартира в реально хороших ЖК Москвы». Ну и «в США 400-500 не только айтишникам платят».


А кому в 2021 году нужна машина за 100К (кроме людей с дикими комплексами)? Что такое «реально хороший ЖК Москвы»? Как вообще квартиру в Москве в XXI веке можно всерьез считать пригодной для жизни?


И это… 400-500К в Штатах крайне редко платят и айтишникам, и получать такую зарплату не работая по 16 часов в чутки, и не совершая серьезных сделок с совестью — практически нереальное везение. 300К в Калифорнии или НЮ — ну, да, можно, на дикой, выматывающей, крайне скучной работе. Или в Министерстве правды, типа ФБ или Г.


Вообще, всерьез обсуждать рекламный вирусный вброс пиар-отдела ФБ — это апогей развития хабра, конечно. Лучше уже не будет, наверное.

метрика — количество денег вполне себе отличная отправная точка

Знаете, кто зарабатывал не в пример больше? Пабло Эскобар.

LineageOS в контексте «глобальной экосистемы» из оригинального комментария имеет мало общего с Гуглом. Я знаю, кто написал AOSP, но к экосистеме это не имеет никакого отношения, я не религиозный фанатик, чтобы не прикасаться к коду идеологического врага.

внешний долг США постоянно растет, но это не значит что США загибается

Вообще-то значит.

Я тоже это говорю направо и налево, но в отличие от Лекуна и Хинтона мы с вами этот путь сначала сами не прокладывали.

Yann LeCun в разрезе обсуждаемых тут «поп-прорывов» поважнее будет :)


Как бы он, да Джеффри Хинтон — сделали примерно 102% для того, чтобы хотя бы такой говнопилот, как у Теслы, вообще смог бы появиться на свет.


Ну и, на всякий случай, оба хором твердят, что ML свернул не туда, и существующий подход очень ограничен, если не просто неверен. Но хайпожоры дальше фамилии Маска обычно не читают.

замыкание глобальной экосистемы на себя в духе Гугла, Эппла и ФБ, когда переход пользователя на альтернативный продукт несёт для него, пользователя, неприемлемые издержки

Не пользуюсь ни Гуглом, ни тем более, Эпплом и Фейсбуком. Поясните, пожалуйста, какие издержки я несу (ну, кроме того, что ноут у меня просто работает, карты актуальны на сегодня, а не на год назад, и так далее).

Хочется читать код, а не разгадывать головоломки...

Есть ровно один способ этого добиться: сквозь границу скоупа переменная может просочиться в двух случаях: кложурный захват и макрос с явно объявленной негигиеничной переменной.


Мутабельной переменной, видной отовсюду, чуть ли не $global — не поможешь синтаксисом, это родовая травма языка. И все эти отмазки про производительность и (хахаха) циклы — это детский сад. Если уж так надо дать возможность стрелять в ногу, нужно не let обсуждать, а сделать способ эксплицитно отменять гигиену скоупа, типа


int n = 0;
while (n < 42) {
    ext!(n)  = process(n);
}

Сий макрос должен орать из кода: то, что вы тут наменяете, просочится во внешний мир.

Information

Rating
Does not participate
Location
Barcelona, Barcelona, Испания
Date of birth
Registered
Activity