Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Server languages for mobile devs
Search
Sobolev Nikita
October 22, 2019
Programming
0
250
Server languages for mobile devs
https://sobolevn.me/talks/saint-apps-conf-2019
Sobolev Nikita
October 22, 2019
Tweet
Share
More Decks by Sobolev Nikita
See All by Sobolev Nikita
PythoNN – Александр Гончаров
sobolevn
0
50
PythoNN – Андрей Пронин
sobolevn
0
95
PythoNN: Василий Рябов – "Парсинг бинарных данных с помощью ctypes, или пишем на питоне как на Си"
sobolevn
0
200
GitHub Planet - OpenSource
sobolevn
0
240
Polymorphism and Typeclasses
sobolevn
2
130
New GitHub Features
sobolevn
0
63
Problems of static analysis in Python
sobolevn
0
130
Announcing typed-linter
sobolevn
0
220
About GitHub Stars
sobolevn
0
180
Other Decks in Programming
See All in Programming
Rubyと自由とAIと
yotii23
6
1.9k
DRFを少しずつ オニオンアーキテクチャに寄せていく DjangoCongress JP 2025
nealle
2
300
Google Cloudとo11yで実現するアプリケーション開発者主体のDB改善
nnaka2992
1
130
AIプログラミング雑キャッチアップ
yuheinakasaka
20
5.3k
15分で学ぶDuckDBの可愛い使い方 DuckDBの最近の更新
notrogue
3
850
Generating OpenAPI schema from serializers throughout the Rails stack - Kyobashi.rb #5
envek
1
430
Expoによるアプリ開発の現在地とReact Server Componentsが切り開く未来
yukukotani
2
240
GoとPHPのインターフェイスの違い
shimabox
2
220
AIレビュー導入によるCIツールとの共存と最適化
kamo26sima
1
900
Learning Kotlin with detekt
inouehi
1
210
もう少しテストを書きたいんじゃ〜 #phpstudy
o0h
PRO
21
4.4k
LINE messaging APIを使ってGoogleカレンダーと連携した予約ツールを作ってみた
takumakoike
0
130
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1030
460k
Facilitating Awesome Meetings
lara
53
6.3k
Scaling GitHub
holman
459
140k
KATA
mclloyd
29
14k
Raft: Consensus for Rubyists
vanstee
137
6.8k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Producing Creativity
orderedlist
PRO
344
40k
Optimizing for Happiness
mojombo
377
70k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Rails Girls Zürich Keynote
gr2m
94
13k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Transcript
X Никита Соболев github.com/sobolevn 1
Я люблю программирование 2
>_ X Много языков на сервере... 3
>_ X А писать не на чем! 4
!5
Цель: просветить 6
Цель: вдохновить 7
Цель: повеселиться 8
Сколько всего языков программирования? 9
~3595 codelani.com/lists/languages.html 10
Чего не будет? 11
Чего не будет? > Java, Kotlin, Scala 11
Чего не будет? > Java, Kotlin, Scala > TypeScript, JavaScript,
Dart 11
Чего не будет? > Java, Kotlin, Scala > TypeScript, JavaScript,
Dart > C#, F# 11
Чего не будет? > Java, Kotlin, Scala > TypeScript, JavaScript,
Dart > C#, F# > Swift 11
Я извиняюсь 12
>_ X Топчик 13
14
15
Top 1* ❤ 16
Красота 17
Красота > Синтаксис и читаемость 17
Красота > Синтаксис и читаемость > Инфраструктура 17
Красота > Синтаксис и читаемость > Инфраструктура > Сообщество 17
Красота > Синтаксис и читаемость > Инфраструктура > Сообщество >
Опциональная статическая типизация 17
Фу 18
Фу > Производительность 18
Фу > Производительность > Модель асинхронности 18
Фу > Производительность > Модель асинхронности > Странные новые фичи
(!?) 18
Фу > Производительность > Модель асинхронности > Странные новые фичи
(!?) > Управляющий совет 18
Фу > Производительность > Модель асинхронности > Странные новые фичи
(!?) > Управляющий совет > Изменяющаяся область применения 18
Фу > Производительность > Модель асинхронности > Странные новые фичи
(!?) > Управляющий совет > Изменяющаяся область применения > Pythonic / Unpythonic 18
f'Hello, {name}!' 'Hello, {name}'.format(name) 'Hello, %s' % name 'Hello, '
+ name 19
f'Hello, {name}!' 'Hello, {name}'.format(name) 'Hello, %s' % name 'Hello, '
+ name 20
f'Hello, {name}!' 'Hello, {name}'.format(name) 'Hello, %s' % name 'Hello, '
+ name 21
f'Hello, {name}!' 'Hello, {name}'.format(name) 'Hello, %s' % name 'Hello, '
+ name 22
23
array_len = len(some_array) if array_len > 5: print(array_len) if array_len
:= len(some_array) > 5: print(array_len) 24
array_len = len(some_array) if array_len > 5: print(array_len) if array_len
:= len(some_array) > 5: print(array_len) 25
for angl in range(360): print( f'{angle=} {(th:=rads(angl))=:.3f} {sin(th)}' ) 26
Хватит! Дайте нам: 27
Хватит! Дайте нам: > Паттерн матчинг 27
Хватит! Дайте нам: > Паттерн матчинг > Нормальные лямбды 27
Хватит! Дайте нам: > Паттерн матчинг > Нормальные лямбды >
|> (aka pipe operator) 27
Хватит! Дайте нам: > Паттерн матчинг > Нормальные лямбды >
|> (aka pipe operator) > Больше типов 27
Хватит! Дайте нам: > Паттерн матчинг > Нормальные лямбды >
|> (aka pipe operator) > Больше типов > Перформанса 27
Спасение рядом github.com/wemake-services/wemake-python-styleguide 28
29
github.com/dry-python 30
31
32
33
Показания к применению 34
Показания к применению > Питон лучший второй язык для любой
задачи 34
35
36
37
Ruby is Dead: youtube.com/watch? v=x0JlOxdXA_g 38
Красота 39
Красота > DSL 39
Красота > DSL > Новая волна архитектуры 39
Красота > DSL > Новая волна архитектуры > Пробуждение сообщества
39
Фу 40
Фу > Производительность 40
Фу > Производительность > Ruby on Rails 40
Фу > Производительность > Ruby on Rails > Магия 40
41
42
43
44
Показания к применению 45
Показания к применению > У вас есть рубисты 45
46
47
48
49
Красота 50
Красота > Самый быстрый язык из скриптов 50
Красота > Самый быстрый язык из скриптов > Опциональная статическая
типизация 50
Фу 51
Фу > Стандартная библиотека 51
Фу > Стандартная библиотека > php-программисты 51
52
53
54
Показания к применению 55
Показания к применению > У вас мало денег 55
Показания к применению > У вас мало денег > Вы
в регионе 55
Показания к применению > У вас мало денег > Вы
в регионе > У вас уже есть пыхеры 55
56
57
58
Красота 59
Красота > gofmt 59
Красота > gofmt > Перформанс 59
Красота > gofmt > Перформанс > Потоки – как идея
59
Красота > gofmt > Перформанс > Потоки – как идея
> Минимализм – как идея 59
Фу 60
Фу > Все остальное 60
Показания к применению 61
Показания к применению > Нужно перекладывать json из одного API
в другой 61
Показания к применению > Нужно перекладывать json из одного API
в другой > Вы не хотите учить нормальные языки 61
Показания к применению > Нужно перекладывать json из одного API
в другой > Вы не хотите учить нормальные языки > Вы считаете людей тупыми 61
The key point here is our programmers are Googlers, they’re
not researchers. 62
They’re typically, fairly young, fresh out of school, probably learned
Java, maybe learned C or C++, probably learned Python. 63
They’re not capable of understanding a brilliant language but we
want to use them to build good software. 64
So, the language that we give them has to be
easy for them to understand and easy to adopt. 65
66
>_ X Серединка 67
68
69
70
71
72
Красота 73
Красота > Простота и глубина 73
Красота > Простота и глубина > Модель асинхронности 73
Красота > Простота и глубина > Модель асинхронности > Неубиваемость
73
Красота > Простота и глубина > Модель асинхронности > Неубиваемость
> Масштабируемость 73
Красота > Простота и глубина > Модель асинхронности > Неубиваемость
> Масштабируемость > Коробка 73
Красота > Простота и глубина > Модель асинхронности > Неубиваемость
> Масштабируемость > Коробка > Feature-complete 73
Фу 74
Фу > Найм 74
Фу > Найм > Применимость в бизнес задачах 74
Фу > Найм > Применимость в бизнес задачах > Инфраструктура
74
75
76
Показания к применению 77
Показания к применению > Очень много IO 77
Показания к применению > Очень много IO > Очень высокие
требования к доступности 77
Показания к применению > Очень много IO > Очень высокие
требования к доступности > Особенные требования к масштабированию 77
Показания к применению > Очень много IO > Очень высокие
требования к доступности > Особенные требования к масштабированию > Сильная команда 77
78
79
Are we web yet? 80
arewewebyet.org You can build stuff! 81
82
Красота 83
Красота > Модель работы с памятью 83
Красота > Модель работы с памятью > Типы данных 83
Красота > Модель работы с памятью > Типы данных >
Компилятор 83
Красота > Модель работы с памятью > Типы данных >
Компилятор > Абстракции 83
Фу 84
Фу > Чрезмерная сложность для веба 84
Фу > Чрезмерная сложность для веба > Очень сырые библиотеки
84
85
86
Показания к применению 87
Показания к применению > У вас не веб 87
Показания к применению > У вас не веб > Вам
нужно супер быстро 87
Показания к применению > У вас не веб > Вам
нужно супер быстро > Жесткие ограничения на память 87
88
89
И тут я сделаю исключение... 90
Хотя в Haskell'е нет исключений! * 91
Красота 92
Красота > Чистота 92
Красота > Чистота > Система типов 92
Красота > Чистота > Система типов > Компилятор 92
Красота > Чистота > Система типов > Компилятор > Сообщество
92
Фу 93
Фу > Синтаксис 93
Фу > Синтаксис > Чрезмерная сложность для веба 93
Фу > Синтаксис > Чрезмерная сложность для веба > Вообще
ничего нет! 93
Показания к применению 94
Показания к применению > Для само-развития 94
>_ X Днище 95
96
97
# A very basic HTTP server require "http/server" server =
HTTP::Server.new do |context| context.response.content_type = "text/plain" context.response.print "Hello world!" end puts "Listening on http://127.0.0.1:8080" server.listen(8080) 98
Красота 99
Красота > Типизация и вывод типов 99
Красота > Типизация и вывод типов > Скорость работы 99
Красота > Типизация и вывод типов > Скорость работы >
Знакомый синтаксис 99
Красота > Типизация и вывод типов > Скорость работы >
Знакомый синтаксис > Приятные макросы 99
Красота > Типизация и вывод типов > Скорость работы >
Знакомый синтаксис > Приятные макросы > Каналы (как в Go) 99
Поживем – увидим crystal-lang.org 100
Показания к применению 101
Показания к применению > В будущем: безопасный и быстрый ruby
101
102
103
Красота 104
Красота > Акторы 104
Красота > Акторы > Типизация 104
Красота > Акторы > Типизация > Память (AOT) 104
Красота > Акторы > Типизация > Память (AOT) > Исключения
104
Красота > Акторы > Типизация > Память (AOT) > Исключения
> Скорость работы 104
105
Поживем – увидим ponylang.io 106
Показания к применению 107
Показания к применению > Для само-развития 107
Показания к применению > Для само-развития > Сможете говорить: я
еще в 2019 на нем писал! 107
Показания к применению > Для само-развития > Сможете говорить: я
еще в 2019 на нем писал! > В будущем: безопасный и быстрый веб 107
>_ X Разное 108
Заслуживают упоминания 109
Заслуживают упоминания > Clojure / Nim 109
Заслуживают упоминания > Clojure / Nim > Coq / Agda
/ Idris 109
Заслуживают упоминания > Clojure / Nim > Coq / Agda
/ Idris > Elm 109
Заслуживают упоминания > Clojure / Nim > Coq / Agda
/ Idris > Elm > ReasonML / OCalm 109
Заслуживают упоминания > Clojure / Nim > Coq / Agda
/ Idris > Elm > ReasonML / OCalm > Dark 109
>_ X Выводы 110
Учите языки 111
Учите концепции 112
Обсуждайте идеи 113
t.me/ opensource_findings !114
sobolevn.me Вопросы? github.com/sobolevn 115