3. Немного о себе
• Системный администратор со стажем 20 лет
• начинал на ассемблере х86
• последняя прочитанная книжка о процессорах
инструкциях и регистрах - i386
4. Немного о себе
• Системный администратор со стажем 20 лет
• начинал на ассемблере х86
• последняя прочитанная книжка о процессорах
инструкциях и регистрах - i386
• Пишу/читаю на C, C++, Perl5, Java, Groovy,
Lua,Go
5. Немного о себе
• Системный администратор со стажем 20 лет
• начинал на ассемблере х86
• последняя прочитанная книжка о процессорах
инструкциях и регистрах - i386
• Пишу/читаю на C, C++, Perl5, Java, Groovy,
Lua,Go
• Сейчас руковожу разработкой проекта на Go
7. Немного о себе
• Люблю Perl5
• Правда-правда!
• Даже имею несколько опубликованных на
CPAN модулей
8. Немного о себе
• Люблю Perl5
• Правда-правда!
• Даже имею несколько опубликованных на
CPAN модулей
• Не читал Modern Perl
9. Немного о себе
• Люблю Perl5
• Правда-правда!
• Даже имею несколько опубликованных на
CPAN модулей
• Не читал Modern Perl
• Фактически - не пишу на современном перле
10. О чем и зачем этот доклад
• О том, как я расстался с Perl
11. О чем и зачем этот доклад
• О том, как я расстался с Perl
• Я хочу поделиться опытом проигранных
сражений
12. О чем и зачем этот доклад
• О том, как я расстался с Perl
• Я хочу поделиться опытом проигранных
сражений
• И предостеречь “молодежь”
13. О чем и зачем этот доклад
• О том, как я расстался с Perl
• Я хочу поделиться опытом проигранных
сражений
• И предостеречь “молодежь”
• Хоть и осознаю, что в этом нет смысла
30. Стадии развития проекта:
отрицание
• AnyEvent, Mojo, XML, JSON
• масса всего всякого XS
• чтение кода ночами
• “мы - программисты, мы любим писать
сложный код”
31. Стадии развития проекта:
отрицание
• AnyEvent, Mojo, XML, JSON
• масса всего всякого XS
• чтение кода ночами
• “мы - программисты, мы любим писать
сложный код”
• “все языки одинаковы”
39. Стадии развития проекта:
гнев
• Монолитное приложение
• так делают java-программисты
• так делать не надо
• Копирование массивов при передаче параметров
40. Стадии развития проекта:
гнев
• Монолитное приложение
• так делают java-программисты
• так делать не надо
• Копирование массивов при передаче параметров
• замена хешей на перебор
41. Стадии развития проекта:
гнев
• Монолитное приложение
• так делают java-программисты
• так делать не надо
• Копирование массивов при передаче параметров
• замена хешей на перебор
• замена регекспов на токенизаторы
48. Стадии развития проекта:
отчаяние
• отсутствие оптимизатора
• отсутствие семплирующего профайлера
• да вообще какого-либо пригодного для
использования профайлера
49. Стадии развития проекта:
отчаяние
• отсутствие оптимизатора
• отсутствие семплирующего профайлера
• да вообще какого-либо пригодного для
использования профайлера
• threads are weird
50. Стадии развития проекта:
отчаяние
• отсутствие оптимизатора
• отсутствие семплирующего профайлера
• да вообще какого-либо пригодного для
использования профайлера
• threads are weird
• IPC is weird
53. Стадии развития проекта:
отчаяние
• очень дорогой вызов функции
• очень высокие накладные расходы на
обслуживание очереди событий
• reordering?!
54. Стадии развития проекта:
отчаяние
• очень дорогой вызов функции
• очень высокие накладные расходы на
обслуживание очереди событий
• reordering?!
• Приложение захлебывается при высокой
утилизации CPU
55. Стадии развития проекта:
отчаяние
• Основное время выполняется код, которого мы
не писали
• низкоэффективные структуры данных
• современный perl - очень сложный язык
• наверное, все же не все языки одинаковы
• и уж точно разные VM и runtime
58. Стадии развития проекта:
отчаяние
• Основное время выполняется код, которого мы
не писали
• низкоэффективные структуры данных
• современный perl - очень сложный язык
59. Стадии развития проекта:
отчаяние
• Основное время выполняется код, которого мы
не писали
• низкоэффективные структуры данных
• современный perl - очень сложный язык
• наверное, все же не все языки одинаковы
60. Стадии развития проекта:
отчаяние
• Основное время выполняется код, которого мы
не писали
• низкоэффективные структуры данных
• современный perl - очень сложный язык
• наверное, все же не все языки одинаковы
• и уж точно разные VM и runtime
65. Стадии развития проекта:
смирение
• Groovy
• увеличение производительности в 8 раз
• приложение перестало захлебываться
• nginx+lua
• получилось не хуже
66. Стадии развития проекта:
смирение
• Groovy
• увеличение производительности в 8 раз
• приложение перестало захлебываться
• nginx+lua
• получилось не хуже
• то есть - дело не в собственно асинхронности
70. Что же делать?!
или выводы
• Никогда больше
• по результатам я выучил Go
• Никакой асинхронности
• запускать в голове стейт-машину - развлечение
для дебилов
71. Что же делать?!
или выводы
• Никогда больше
• по результатам я выучил Go
• Никакой асинхронности
72. Что же делать?!
или выводы
• Никогда больше
• по результатам я выучил Go
• Никакой асинхронности
• запускать в голове стейт-машину - развлечение
для дебилов
73. Что же делать?!
или выводы
• Возможно, выход - в использовании
функциональных языков
74. Что же делать?!
или выводы
• Возможно, выход - в использовании
функциональных языков
• и акторов
75. Что же делать?!
или выводы
• Возможно, выход - в использовании
функциональных языков
• и акторов
• микросервисы - акторы для бедных