Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Server languages for mobile devs

Server languages for mobile devs

8c3a2ebf7c2b84f8390d99c7bf8c8a48?s=128

Sobolev Nikita

October 22, 2019
Tweet

Transcript

  1. X Никита Соболев github.com/sobolevn 1

  2. Я люблю программирование 2

  3. >_ X Много языков на сервере... 3

  4. >_ X А писать не на чем! 4

  5. !5

  6. Цель: просветить 6

  7. Цель: вдохновить 7

  8. Цель: повеселиться 8

  9. Сколько всего языков программирования? 9

  10. ~3595 codelani.com/lists/languages.html 10

  11. Чего не будет? 11

  12. Чего не будет? > Java, Kotlin, Scala 11

  13. Чего не будет? > Java, Kotlin, Scala > TypeScript, JavaScript,

    Dart 11
  14. Чего не будет? > Java, Kotlin, Scala > TypeScript, JavaScript,

    Dart > C#, F# 11
  15. Чего не будет? > Java, Kotlin, Scala > TypeScript, JavaScript,

    Dart > C#, F# > Swift 11
  16. Я извиняюсь 12

  17. >_ X Топчик 13

  18. 14

  19. 15

  20. Top 1* ❤ 16

  21. Красота 17

  22. Красота > Синтаксис и читаемость 17

  23. Красота > Синтаксис и читаемость > Инфраструктура 17

  24. Красота > Синтаксис и читаемость > Инфраструктура > Сообщество 17

  25. Красота > Синтаксис и читаемость > Инфраструктура > Сообщество >

    Опциональная статическая типизация 17
  26. Фу 18

  27. Фу > Производительность 18

  28. Фу > Производительность > Модель асинхронности 18

  29. Фу > Производительность > Модель асинхронности > Странные новые фичи

    (!?) 18
  30. Фу > Производительность > Модель асинхронности > Странные новые фичи

    (!?) > Управляющий совет 18
  31. Фу > Производительность > Модель асинхронности > Странные новые фичи

    (!?) > Управляющий совет > Изменяющаяся область применения 18
  32. Фу > Производительность > Модель асинхронности > Странные новые фичи

    (!?) > Управляющий совет > Изменяющаяся область применения > Pythonic / Unpythonic 18
  33. f'Hello, {name}!' 'Hello, {name}'.format(name) 'Hello, %s' % name 'Hello, '

    + name 19
  34. f'Hello, {name}!' 'Hello, {name}'.format(name) 'Hello, %s' % name 'Hello, '

    + name 20
  35. f'Hello, {name}!' 'Hello, {name}'.format(name) 'Hello, %s' % name 'Hello, '

    + name 21
  36. f'Hello, {name}!' 'Hello, {name}'.format(name) 'Hello, %s' % name 'Hello, '

    + name 22
  37. 23

  38. array_len = len(some_array) if array_len > 5: print(array_len) if array_len

    := len(some_array) > 5: print(array_len) 24
  39. array_len = len(some_array) if array_len > 5: print(array_len) if array_len

    := len(some_array) > 5: print(array_len) 25
  40. for angl in range(360): print( f'{angle=} {(th:=rads(angl))=:.3f} {sin(th)}' ) 26

  41. Хватит! Дайте нам: 27

  42. Хватит! Дайте нам: > Паттерн матчинг 27

  43. Хватит! Дайте нам: > Паттерн матчинг > Нормальные лямбды 27

  44. Хватит! Дайте нам: > Паттерн матчинг > Нормальные лямбды >

    |> (aka pipe operator) 27
  45. Хватит! Дайте нам: > Паттерн матчинг > Нормальные лямбды >

    |> (aka pipe operator) > Больше типов 27
  46. Хватит! Дайте нам: > Паттерн матчинг > Нормальные лямбды >

    |> (aka pipe operator) > Больше типов > Перформанса 27
  47. Спасение рядом github.com/wemake-services/wemake-python-styleguide 28

  48. 29

  49. github.com/dry-python 30

  50. 31

  51. 32

  52. 33

  53. Показания к применению 34

  54. Показания к применению > Питон лучший второй язык для любой

    задачи 34
  55. 35

  56. 36

  57. 37

  58. Ruby is Dead: youtube.com/watch? v=x0JlOxdXA_g 38

  59. Красота 39

  60. Красота > DSL 39

  61. Красота > DSL > Новая волна архитектуры 39

  62. Красота > DSL > Новая волна архитектуры > Пробуждение сообщества

    39
  63. Фу 40

  64. Фу > Производительность 40

  65. Фу > Производительность > Ruby on Rails 40

  66. Фу > Производительность > Ruby on Rails > Магия 40

  67. 41

  68. 42

  69. 43

  70. 44

  71. Показания к применению 45

  72. Показания к применению > У вас есть рубисты 45

  73. 46

  74. 47

  75. 48

  76. 49

  77. Красота 50

  78. Красота > Самый быстрый язык из скриптов 50

  79. Красота > Самый быстрый язык из скриптов > Опциональная статическая

    типизация 50
  80. Фу 51

  81. Фу > Стандартная библиотека 51

  82. Фу > Стандартная библиотека > php-программисты 51

  83. 52

  84. 53

  85. 54

  86. Показания к применению 55

  87. Показания к применению > У вас мало денег 55

  88. Показания к применению > У вас мало денег > Вы

    в регионе 55
  89. Показания к применению > У вас мало денег > Вы

    в регионе > У вас уже есть пыхеры 55
  90. 56

  91. 57

  92. 58

  93. Красота 59

  94. Красота > gofmt 59

  95. Красота > gofmt > Перформанс 59

  96. Красота > gofmt > Перформанс > Потоки – как идея

    59
  97. Красота > gofmt > Перформанс > Потоки – как идея

    > Минимализм – как идея 59
  98. Фу 60

  99. Фу > Все остальное 60

  100. Показания к применению 61

  101. Показания к применению > Нужно перекладывать json из одного API

    в другой 61
  102. Показания к применению > Нужно перекладывать json из одного API

    в другой > Вы не хотите учить нормальные языки 61
  103. Показания к применению > Нужно перекладывать json из одного API

    в другой > Вы не хотите учить нормальные языки > Вы считаете людей тупыми 61
  104. The key point here is our programmers are Googlers, they’re

    not researchers. 62
  105. They’re typically, fairly young, fresh out of school, probably learned

    Java, maybe learned C or C++, probably learned Python. 63
  106. They’re not capable of understanding a brilliant language but we

    want to use them to build good software. 64
  107. So, the language that we give them has to be

    easy for them to understand and easy to adopt. 65
  108. 66

  109. >_ X Серединка 67

  110. 68

  111. 69

  112. 70

  113. 71

  114. 72

  115. Красота 73

  116. Красота > Простота и глубина 73

  117. Красота > Простота и глубина > Модель асинхронности 73

  118. Красота > Простота и глубина > Модель асинхронности > Неубиваемость

    73
  119. Красота > Простота и глубина > Модель асинхронности > Неубиваемость

    > Масштабируемость 73
  120. Красота > Простота и глубина > Модель асинхронности > Неубиваемость

    > Масштабируемость > Коробка 73
  121. Красота > Простота и глубина > Модель асинхронности > Неубиваемость

    > Масштабируемость > Коробка > Feature-complete 73
  122. Фу 74

  123. Фу > Найм 74

  124. Фу > Найм > Применимость в бизнес задачах 74

  125. Фу > Найм > Применимость в бизнес задачах > Инфраструктура

    74
  126. 75

  127. 76

  128. Показания к применению 77

  129. Показания к применению > Очень много IO 77

  130. Показания к применению > Очень много IO > Очень высокие

    требования к доступности 77
  131. Показания к применению > Очень много IO > Очень высокие

    требования к доступности > Особенные требования к масштабированию 77
  132. Показания к применению > Очень много IO > Очень высокие

    требования к доступности > Особенные требования к масштабированию > Сильная команда 77
  133. 78

  134. 79

  135. Are we web yet? 80

  136. arewewebyet.org You can build stuff! 81

  137. 82

  138. Красота 83

  139. Красота > Модель работы с памятью 83

  140. Красота > Модель работы с памятью > Типы данных 83

  141. Красота > Модель работы с памятью > Типы данных >

    Компилятор 83
  142. Красота > Модель работы с памятью > Типы данных >

    Компилятор > Абстракции 83
  143. Фу 84

  144. Фу > Чрезмерная сложность для веба 84

  145. Фу > Чрезмерная сложность для веба > Очень сырые библиотеки

    84
  146. 85

  147. 86

  148. Показания к применению 87

  149. Показания к применению > У вас не веб 87

  150. Показания к применению > У вас не веб > Вам

    нужно супер быстро 87
  151. Показания к применению > У вас не веб > Вам

    нужно супер быстро > Жесткие ограничения на память 87
  152. 88

  153. 89

  154. И тут я сделаю исключение... 90

  155. Хотя в Haskell'е нет исключений! * 91

  156. Красота 92

  157. Красота > Чистота 92

  158. Красота > Чистота > Система типов 92

  159. Красота > Чистота > Система типов > Компилятор 92

  160. Красота > Чистота > Система типов > Компилятор > Сообщество

    92
  161. Фу 93

  162. Фу > Синтаксис 93

  163. Фу > Синтаксис > Чрезмерная сложность для веба 93

  164. Фу > Синтаксис > Чрезмерная сложность для веба > Вообще

    ничего нет! 93
  165. Показания к применению 94

  166. Показания к применению > Для само-развития 94

  167. >_ X Днище 95

  168. 96

  169. 97

  170. # 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
  171. Красота 99

  172. Красота > Типизация и вывод типов 99

  173. Красота > Типизация и вывод типов > Скорость работы 99

  174. Красота > Типизация и вывод типов > Скорость работы >

    Знакомый синтаксис 99
  175. Красота > Типизация и вывод типов > Скорость работы >

    Знакомый синтаксис > Приятные макросы 99
  176. Красота > Типизация и вывод типов > Скорость работы >

    Знакомый синтаксис > Приятные макросы > Каналы (как в Go) 99
  177. Поживем – увидим crystal-lang.org 100

  178. Показания к применению 101

  179. Показания к применению > В будущем: безопасный и быстрый ruby

    101
  180. 102

  181. 103

  182. Красота 104

  183. Красота > Акторы 104

  184. Красота > Акторы > Типизация 104

  185. Красота > Акторы > Типизация > Память (AOT) 104

  186. Красота > Акторы > Типизация > Память (AOT) > Исключения

    104
  187. Красота > Акторы > Типизация > Память (AOT) > Исключения

    > Скорость работы 104
  188. 105

  189. Поживем – увидим ponylang.io 106

  190. Показания к применению 107

  191. Показания к применению > Для само-развития 107

  192. Показания к применению > Для само-развития > Сможете говорить: я

    еще в 2019 на нем писал! 107
  193. Показания к применению > Для само-развития > Сможете говорить: я

    еще в 2019 на нем писал! > В будущем: безопасный и быстрый веб 107
  194. >_ X Разное 108

  195. Заслуживают упоминания 109

  196. Заслуживают упоминания > Clojure / Nim 109

  197. Заслуживают упоминания > Clojure / Nim > Coq / Agda

    / Idris 109
  198. Заслуживают упоминания > Clojure / Nim > Coq / Agda

    / Idris > Elm 109
  199. Заслуживают упоминания > Clojure / Nim > Coq / Agda

    / Idris > Elm > ReasonML / OCalm 109
  200. Заслуживают упоминания > Clojure / Nim > Coq / Agda

    / Idris > Elm > ReasonML / OCalm > Dark 109
  201. >_ X Выводы 110

  202. Учите языки 111

  203. Учите концепции 112

  204. Обсуждайте идеи 113

  205. t.me/ opensource_findings !114

  206. sobolevn.me Вопросы? github.com/sobolevn 115