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
46
PythoNN – Андрей Пронин
sobolevn
0
84
PythoNN: Василий Рябов – "Парсинг бинарных данных с помощью ctypes, или пишем на питоне как на Си"
sobolevn
0
190
GitHub Planet - OpenSource
sobolevn
0
230
Polymorphism and Typeclasses
sobolevn
2
130
New GitHub Features
sobolevn
0
57
Problems of static analysis in Python
sobolevn
0
120
Announcing typed-linter
sobolevn
0
220
About GitHub Stars
sobolevn
0
180
Other Decks in Programming
See All in Programming
盆栽転じて家具となる / Bonsai and Furnitures
aereal
0
2.2k
【PHP】破壊的バージョンアップと戦った話〜決断と説得
satoshi256kbyte
0
100
知られざるDMMデータエンジニアの生態 〜かつてツチノコと呼ばれし者〜
takaha4k
3
1.1k
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
0
390
令和7年版 あなたが使ってよいフロントエンド機能とは
mugi_uno
12
6.1k
Rubyでつくるパケットキャプチャツール
ydah
0
540
Terraform で作る Amazon ECS の CI/CD パイプライン
hiyanger
0
110
Fixstars高速化コンテスト2024準優勝解法
eijirou
0
200
Lookerは可視化だけじゃない。UIコンポーネントもあるんだ!
ymd65536
1
140
バックエンドのためのアプリ内課金入門 (サブスク編)
qnighy
7
1.5k
[JAWS-UG横浜 #80] うわっ…今年のServerless アップデート、少なすぎ…?
maroon1st
0
150
ESLintプラグインを使用してCDKのセオリーを適用する
yamanashi_ren01
2
380
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
98
18k
Visualization
eitanlees
146
15k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
Docker and Python
trallard
43
3.2k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
RailsConf 2023
tenderlove
29
980
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