Архив недели @mraleph
Понедельник
всем привет! меня зовут Вячеслав и эту неделю я вещаю из под капота JS - здесь темно и повсюду C++... отвечаю на вопросы про V8 и перформанс
утро понедельника начинается с чтения LLVM Weekly - на прошлой неделе ничего интересного, впрочем, не случилось llvmweekly.org/issue/66
а вот демка скрытой проблемы с производительностью при использовании accessors mrale.ph/irhydra/2/#gis… / gist.github.com/mraleph/88ef8e…
... смотреть надо что заинлайнилось во вкладке Source


на работе сегодня выходной, тут в твиттере - тоже. чувствую себя героем фантастического рассказа "Позвоните!" fantlab.ru/work65898
обнаружил у себя в рюкзаке распечатку статьи "Common Compiler Optimisations are Invalid in the C11 Memory Model" mpi-sws.org/~viktor/papers…
казалось бы при чем тут JS? а вот при чем: docs.google.com/document/d/1ND…
Вторник
в JS сообществе очень популярно изобретать велосипеды, вот и для меня это самый удобный способ добраться до работы

еще случайный факт об о мне: в моем "музыка для программирования" плейлисте youtube.com/watch?v=_2xa46… соседствует с youtube.com/watch?v=foGkU6…
адаптивная оптимизация одной картинкой

Среда
начнем утро головоломкой из разряда "и на старуху бывает проруха" jsperf.com/es6-map-vs-obj…
... напихали в объект кучу свойств obj[keys[i]] = i и почему-то читать эти свойства быстрее c ключами из Object.keys(obj), а не из keys
никто что-то не спешит отгадывать мою головоломку, а я меж тем пью кофе из своей любимой JS-кружки

отгадка на загадку: дело в том, что obj[key] быстрее всего работает когда key - это интернализованная строка.
... массив keys содержит строки результаты конкатенации, которые в V8 не интернализованы, а objectKeys содержит интернализованные строки.
... потому что имена свойств внутри объекта V8 хранит в интернализованных виде -> Object.keys(obj) возвращает массив интернализованных строк
Тред (@mraleph)
в сорцах chromium есть прикольные тулзы: вот, например, одна раскладывает бинарник на части и рисует с помощью d3

... можно кликая найти из какого файла пришла куча кода в бинарник, сама тулза здесь -> chromium.googlesource.com/chromium/src/+…
про строки (я от этих картинок даже прослезился, вспомнив как конспекты одногрупниц ксерил)


Четверг
сегодня был самый безвопросый день - все JS программисты видимо готовятся к выходным
Пятница
внезапно натолкнулся на вопрос про таинственное замедление JS кода в Chrome stackoverflow.com/questions/2942…
... глянул на это дело в IRHydra по быстрому: оказывается это связано с тем, что сломалась одна оптимизация, которую я делал 3 года назад
... карма. вот так сделаешь оптимизацию, уйдешь в другой проект - а оптимизация все живет и живет своей жизнью и периодически ломается
... отгадка - что сломалось и как чинить, будет через час :)
Тред (@mraleph)
добрался до написания ответа на утренний вопрос stackoverflow.com/questions/2942… и фикса этого бага codereview.chromium.org/1077113002/
чем короче фикс, тем сложнее объяснить почему что-то в оптимизаторе не работает без него
выходные надвигаются, пора закоммитить что-нибудь и убежать.
не знаю как вас, а меня расстраивает, что я не могу написать [1,2,3,4].reduce(Math.max) в JS
ну т.е. я, конечно, могу написать, но толку с этого особо не будет.
Воскресенье
окей сегодня последний день моего задумчивого молчания в этом твиттере
я мог бы набросить под конец, признавшись, что я не особо-то люблю JavaScript, ну да всем это и так известно :)
тут как-то купил пельмени в магазине; вот покупные пельмени - это как готовый язык программирования, а самодельные - это когда сам написал
... хочу самодельных пельменей и свой язык программирования - но времени нет
продолжая тему пельменей - у покупных пельменей внутри сплошной NaM (Not-a-Meat), он получается если сложить говядину с undefined.
стоит ли сделать digest из всех технических вопросов, на которые я ответил? (исключая секретные рецепты моей любимой еды)
stefan-marr.de/papers/pldi-ma… <- скоро все смогут писать быстрые виртуальные машины на коленке, поэтому надо рубить бабло пока эта тема горячая
я думаю если устану писать код, напишу книгу "Еда и Программирование"
вот допустим гречка, столь любимая на просторах нашей необъятной родины, это очевидная метафора на Pascal.
на тебя одинаково странно смотрят, когда ты говоришь "я ем гречку" и "я пишу на Паскале"
окей, всех с прошедшей неделей, поднимаю бокал за вас, пишущих на JS без страха и сомнений

вот краткое содержание недели mrale.ph/blog/2015/04/1…, ловите меня на mrale.ph и в основном твиттере @mraleph. всем пока!
и еще, смотрите на языки программирования за пределами JS: C++, Haskell, Rust, Go, C#, Lua, Dart, OCaml, Clojure, Agda, всёвсёвсё
это не особо-то полезно в рамках тотальной тирании JS в вебе, но чего тираны всегда боятся? ЗНАНИЙ.
знания расширяют угол обзора... кто видел Erlang, тот на колбэки смотрит косо, хоть Erlang в остальном и как-то пффффф
а когда угол обзора расширяется - то это можно и к тому языку на котором пишешь применить. вот.
Тред (@mraleph)
на часах 11. хочу еще набросить - пока не пробило 12 и пароль не отобрали. многие думают, что в программировании главное - писать код.
мне же кажется, что в программировании главное - это хорошо подумать и ничего не написать... ненаписанный код = несломанные тесты, ляпота!
Понедельник
вот еще интересный вопрос: есть сериалы про агентов FBI, есть сериалы про врачей, а есть ли сериалы про программистов?
последний сериал про программистов, который я видел выглядел как-то так (главный программист в центре \o/)

всё, 12:07, мой пароль превратился в тыкву. вот вам стихотворение Фернандо Пессоа напоследок
