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
220
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: Василий Рябов – "Парсинг бинарных данных с помощью ctypes, или пишем на питоне как на Си"
sobolevn
0
130
GitHub Planet - OpenSource
sobolevn
0
170
Polymorphism and Typeclasses
sobolevn
2
100
New GitHub Features
sobolevn
0
33
Problems of static analysis in Python
sobolevn
0
71
Announcing typed-linter
sobolevn
0
190
About GitHub Stars
sobolevn
0
150
Typing Django
sobolevn
0
200
Functional programming for beginners
sobolevn
0
240
Other Decks in Programming
See All in Programming
君たちはどうコードをレビューする (される) か / 大吉祥寺.pm
utgwkk
15
8.5k
ドメイン駆動設計の実践
masuda220
PRO
17
5.1k
しくじり先生 Image Matching Challenge 2024 編
goosehaaan
0
810
実用的かつリーズナブルな 「Azure × Gemini × LINE」~キャラクターBot 実装ライブデモ~
tomodo_ysys
1
170
CSC307 Lecture 11
javiergs
PRO
0
240
HMSコンペ 11th Solution (team : kansai-kaggler)
t88
1
680
最古の関数型言語「Lisp」ことはじめ / lisp_in_kamiyama
uhooi
1
190
Architectures with Lightweight Stores: New Rules and Options
manfredsteyer
PRO
0
100
CSC307 Lecture 08
javiergs
PRO
0
330
Temporalを取り巻く仕様を整理する
sajikix
0
110
英語
s_shimotori
1
220
「2024年版 Kotlin サーバーサイドプログラミング実践開発」の補講 〜O/Rマッパー編〜
n_takehata
2
260
Featured
See All Featured
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
105
6.8k
Mobile First: as difficult as doing things right
swwweet
219
8.8k
What's new in Ruby 2.0
geeforr
338
31k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
245
1.2M
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
129
32k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
13
430
From Idea to $5000 a Month in 5 Months
shpigford
377
46k
Imperfection Machines: The Place of Print at Facebook
scottboms
262
13k
Building Your Own Lightsaber
phodgson
101
5.9k
RailsConf 2023
tenderlove
16
720
Agile that works and the tools we love
rasmusluckow
325
20k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
502
140k
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