Kyiv Go Meetup ááąá 2018-

ááąáŹáşááŽ: - áĄáŹá¸ááŻáśá¸áááşášáááŹááŤ! á¤ááąááŹáá˝ááş áážáááąáááˇáşáĄáá˝ááş ááťáąá¸áá°á¸áááşááŤáááşá áááąáˇááťá˝ááşáŻááşáááŻáˇááááŹá¸áááşá
ááŽáᏠáážá
áşáŚá¸áážááááş - Lyosha áážááˇáş Vanya á áĄááťáááşáĄááŻáśáĄááąáŹááşááááş ááąáŹááşáááş áážá
áşááŻáážááááşá áááááŻáśá¸ááąáŹááźáąáŹáá°áážáŹ Alexey Grachev ááźá
áşááźáŽá¸ GopherJS áĄááźáąáŹááşá¸ ááźáąáŹááźááŤáááşá
Alexey Grachev (ááąáŹááş - AG): - ááťá˝ááşáŻááşáááş Go developer áá áşáŚá¸ááźá áşááźáŽá¸ Go áá˝ááş áááşáááşááąáŹááşáážáŻááťáŹá¸ááᯠááąá¸ááŤáááşá áá áşááŤáá áşááśáá˝ááş áááşáááş áážáąáˇáááşá¸ááᯠáááşáááŻááşááááşááźá áşááźáŽá¸ áá áşááŤáá áşááśáá˝ááş áááşá¸ááᯠáááŻááşáááŻááşáááşááąáŹááşáááş áááŻáĄááşáááşá Go on the frontend áá˝ááş ááťá˝ááşáŻááşá áĄáá˝áąáˇáĄááźáŻáśáážááˇáş ááŻááąááááźáŻáážáŻáĄááźáąáŹááşá¸ ááźáąáŹááźáááŻááŤáááşá
ááášááŹááŽá ááŽáááŻááŤ- áážáąáˇááŻáśá¸á Go ááᯠááŹááźáąáŹááˇáş run ááťááşáá˛áááŻááŹááᯠáĄáááşááźáąáŹáááşá ááźáŽá¸áááş áĄá˛ááŤááᯠáááşáááŻááŻááşáááá˛áááŻáᏠááźáąáŹááźáááşá Web Assembly áážááˇáş GopherJS áááşá¸áááşá¸áážá áşááťááŻá¸áážááááşá ááŽááźáąáážááşá¸ááťááşáá˝áąáá˛áˇ áĄááąáĄááŹá¸á áááşáááŻáĄááźáąáĄááąáážááᲠáááŻááŹááᯠááźááˇáşáááŻááşááĄáąáŹááşá
áážáąáˇáááşá¸áážáŹ ááŹááźá áşááąááŹáá˛á
áážáąáˇáááşá¸áážáŹ áĄááŹáĄáŹá¸ááŻáśá¸ áĄáááşááźáąáááşáááŻáˇ áá°áááŻááşá¸á áááąáŹáá°ááŤáááŹá¸á

ááŻáśááąáŹááşááąáŹ á
á
áşááąá¸áážáŻááťáŹá¸ ááážáááŤááŹá¸á áááşááąáŹááşáážáŻ áážáąá¸áááŹá¸á ááąáá
áá
áş? áááşáá˝áąá
Frontend áážááˇáş áááşáááşá áá°áˇá áŹáĄáŻááşáá˝ááş Frontend developer áá áşáŚá¸á ááźáąáŹáá˛áˇáááˇáş áááŻá¸ááŹá¸ááťááşááᯠááťá˝ááşááąáŹáş áááąáŹááťáááş-

Javascript áá˝ááş type system ááážáááŤá ááᯠááťá˝ááşáŻááşáááş ááťá˝ááşáŻááşá ááŻááşáááşá¸áá˝ááşáá˝ááş ááźáŻáśáá˝áąáˇáá˛áˇáááąáŹ ááźáżááŹááťáŹá¸ááᯠáĄáááşáááşááźáŽá¸ ááźáąáážááşá¸áááşá¸ááᯠáážááşá¸ááźááŤáááşá
áĄááťááŻá¸áĄá áŹá¸á áá áşáĄáŹá¸ ááąáá°ááťáĄáŹá¸ááźááˇáş Javasript áá˝ááş áĄááťááŻá¸áĄá áŹá¸á áá áşáᯠááąáŤáşáááŻáááş áááşáá˛áááş - áĄááŹááášááŻá áĄááťááŻá¸áĄá áŹá¸ááᯠáá˝ážááşááźááąáŹ á áŹááźáąáŹááşá¸ááťáŹá¸ áážáááąáŹáşáááşá¸ áĄáážááşááááşáá˝ááş áááşá¸áááş áĄááťááŻá¸áĄá áŹá¸ááťáŹá¸áážááˇáş ááááşáááŻááşááŤá á¤ááźáżááŹááᯠTypeScript (Javasript áĄáá˝ááş áĄáááŻááááŻááááşáá áşááŻ) áážááˇáş Flow (Javascript áážá static-type checker) áááŻáˇáá˝ááş ááźáąáážááşá¸ááŹá¸ááŤáááşá ááááşááąáŹáˇá áážáąáˇáááşá¸áááş Javascript áá˝ááşáááąáŹááşá¸ááąáŹáĄááťááŻá¸áĄá áŹá¸á áá áşáááźáżááŹáááŻááźáąáážááşá¸áááşáĄááťááşááąáŹááşáážáááąááźáŽááźá áşáááşá

áááąáŹááşááŹáá˝ááş á
áśááźá
áŹááźááˇáşáááŻááşááážáá፠- áááąáŹááşááŹááťáŹá¸áá˝ááş ááŤáááşáááˇáşáĄááŹááášááŻááťáŹá¸áážááˇáş "áážáąáŹáş" ááŻááşááąáŹááşááťááşáĄááťááŻáˇáážááááşá áááŻáˇááąáŹáş Javascript áá˝ááşáááŻáá˛áˇáááŻáˇááąáŹá
áśááźá
áŹááźááˇáşáááŻááşááážáááŤá á¤ááźáżááŹááᯠjQuery ááž áá
áşááźáááşáááşá¸ááźáąáážááşá¸ááźáŽá¸ááźá
áşáááş (áá°áááŻááşá¸áááş áĄááŻááşááŻááşáááş áááŻáĄááşááąáŹ ááŻááşááąáŹááşááťááşááťáŹá¸á áážáąáˇááźáąá¸ááŻáśá
áśááťáŹá¸á áĄáá°áĄááŽááąá¸áá°ááťáŹá¸á jQuery ááᯠáĄááŻáśá¸ááźáŻááźáááş)á áááŻáá°áááŻááşá¸ Lodash áááŻáĄááŻáśá¸ááźáŻáááş-

ááá˛ááźááşááąáŤáşá áá˝ááşáá˛áˇáááˇáş 5 áážá
áşáááˇáşá Javascript ááŻááşááᯠáá°áááŻááşá¸ááźááşáá°á¸ááźáŽá¸ ááźááşááąáŤáşááźááşá¸á áááŻáśáááŻááşááąáŹááşáĄáąáŹááş áážáŻááşáá˝áąá¸áááşáá˛ááąáŹ "ááąáŤááşáá˝á˛" áá
áşááŻáážááˇáşáá°áááşáᯠááťá˝ááşááąáŹáşáááşááŤáááşá ááᯠá¤ááźáżááŹááᯠááźáąáážááşá¸ááźáŽá¸ááźáŽ (ES-15 áááŻáˇáááŻááş ES-16) ááᯠJavascript áá˝ááş áááááťáŹá¸ áááˇáşáá˝ááşá¸ááŹá¸ááźáŽá¸ áá°áááŻááşá¸áááş áááᏠáááŻáááŻáá˝ááşáá°á
á˝áŹ áĄáááşáážáŻáááŻááşááźáááşá

Promice ááᲠáááąáŹááşáááťááşá¸... áážáąáˇáááşá¸á
ááşáážáŻááŻááşáááşá¸á áááşááᯠá
áŽááśáááˇáşáá˝á˛ááᲠáááááąáááˇáş áá°áááŻáˇáᏠáá°á¸áááşá¸áá˛áˇ ááąáŹáááşáá˛ááᯠáĄááźá˛áááŻááᯠááąáŹááşá¸áááşááŹááźáááşá ááťá˝ááşáŻááşáááŻáˇáááşáááşá¸ áááááťáŹá¸áĄáááŻááşá¸ ááá˛áááŻáˇ áááŻááşáááŻááşáá˛áˇáááşá áááŻáˇááąáŹááş áĄááźáąááśáĄáá
áş - async/await áááŻáááˇáşááźááşá¸ááźááˇáş á¤ááźáżááŹááᯠááźáąáážááşá¸áááŻááşáááş-

asynchrony ááźáżááŹááᯠááźáąáážááşá¸ááźáŽá¸ááŹá¸ááŤá Async/await áááş ááŹááŹá
ááŹá¸áĄááťááŻá¸ááťááŻá¸áá˝ááş áĄááąáŹáşááąá¸ááąáááşá¸á
áŹá¸ááąáŹ primitive áá
áşááŻááźá
áşáááşá Python áážááˇáşáĄááźáŹá¸áá°ááťáŹá¸áá˝ááşá¤ááťááşá¸áááşáážáŻáážááááş - áĄáá˝ááşááąáŹááşá¸ááŤáááşá ááźáżááŹááźáąáážááşá¸ááźáŽá¸ááźáŽá
ááŹááźáżááŹááž áááźáąáážááşá¸áááŻááşáá°á¸ááŹá¸á áá°ááąáŹááşááťáŹá¸á áážáŻááşáá˝áąá¸áážáŻááťáŹá¸á ááąáá áá áşá áážáŻááşáá˝áąá¸áážáŻáážááˇáş ááááŻááááşááťáŹá¸áááŻááşáááŻááş áááŻá¸ááźááˇáşááŹááąáááşá

- Javascript syntax áááş áĄáááşá¸áááşáá°á¸áááşá¸áááşá array áá áşááŻáážááˇáş object áá áşááŻáážááˇáş áĄááźáŹá¸ááŹáááťáŹá¸ááᯠááąáŤááşá¸áááˇáşááźááşá¸áááŻááşáᏠááźáżááŹááťáŹá¸ááᯠááťá˝ááşáŻááşáááŻáˇáĄáŹá¸ááŻáśá¸ ááááŤáááşá
- Javascript áááş multi-paradigm ááźá
áşáááşá ááąáá
áá
áş áĄáá˝ááşááźáŽá¸ááŹá¸ááąáŹáĄááŤá
- áá°áááŻááşá¸áááş ááá°ááŽááąáŹááŻáśá áśááťáŹá¸ááźááˇáş ááąá¸ááźáááş - áĄááťááŻáˇá structurally ááąá¸áááşá áĄááťááŻáˇá functionally ááąá¸áááşá ááá°ááŽááąáŹ developer ááťáŹá¸áááş ááá°ááŽááąáŹáááşá¸áááşá¸ááťáŹá¸ááźááˇáş ááąá¸ááźáááşá
- ááá°ááŽááąáŹ áááşááąáˇááşáťááťáŹá¸áážá ááá°ááŽááąáŹ áááşááąáˇááşáťááťáŹá¸ááᯠáááşáĄááŻáśá¸ááźáŻáááˇáşáĄá፠ááá°ááŽááąáŹ ááŤááŹáááŻááşá¸ááťáŹá¸á
- Javasript áá˝ááş ááŻááşááąáŹááşáááŻááşááąáŹ ááááŻááááşááťáŹá¸ááźááˇáş "ááťáąáŹáşá ááŹ" ááťáŹá¸á á˝áŹáážááááş - rambda á áŹááźááˇáşáááŻááş ááąáŤáşááŹááźáŽá¸ ááᯠá¤á áŹááźááˇáşáááŻááşáá˝ááş ááąá¸ááŹá¸ááŹá¸ááąáŹ ááááŻááááşááťáŹá¸ááᯠáááşáá°ááťáž ááááşáááŻááşááŤá
- á¤áĄááŹáĄáŹá¸ááŻáśá¸áááş ááąáá áá áşáĄááąáŤáş ááźáŽá¸ááŹá¸ááąáŹáĄááťááŻá¸áááşááąáŹááşáážáŻááźá áşá áąááźáŽá¸ áááŻáśáááŻááşááąáŹááşáĄáąáŹááş ááźáŽá¸áá˝áŹá¸ááŹáá˛áˇáááşá áááşááąáˇááťáşááťáŹá¸áááş áá áşááŻáážááˇáşáá áşáᯠááááŹááááźá áşááŤ- áĄááťááŻáˇáááş áááááťáŹá¸ááąáŤáşáá˝ááş áĄááźáąááśáááşá áĄááťááŻáˇáááş async/await ááᯠáĄááźáąááśááŹá áĄááťááŻáˇáááş callbacks ááťáŹá¸áĄááąáŤáş áĄááźáąááśááŹá¸áááşá áá˝á˛ááźáŹá¸ááąáŹ ááŤááŹáááŻááşá¸ááťáŹá¸ááźááˇáşáááşá¸ ááąá¸ááźáááşá
- áááşá¸ááźáąáŹááˇáş á áŽááśááááşá¸ááᯠááááşá¸ááááşá¸áááş áááşáá˛á áąáááşá ááŻááşáááŻááááşáááŻááşááťážááş bug áážáŹáááşáááşáá˛áááşá
Web Assembly áááŻáᏠááŹáá˛á
Mozilla Foundation ááž ááášáááážááá°ááťáŹá¸ áážááˇáş áĄááźáŹá¸ááąáŹ ááŻáášáááŽááťáŹá¸á á˝áŹááž Web Assembly áá˛áˇáááŻáˇááąáŹ áĄááŹáá áşááŻááᯠááŽáá˝ááşáá˛áˇááźáááşá ááŤááŹáá˛?

- áááşá¸áááş binary ááąáŹáşáááşááᯠááśáˇáááŻá¸ááąá¸áááˇáş áááąáŹááşááŹáá˝ááş áááşááąáŹááşááŹá¸ááąáŹ virtual machine áá áşááŻááźá áşáááşá
- Binary ááááŻááááşááťáŹá¸áááş áááŻááąááŹáááŻáˇááąáŹááşáážáááźáŽá¸ áá°áááşá¸áĄáááŻááşá¸ááŽá¸ááŤá¸ááŻááşááąáŹááşááźáááşá áááŻáááŻáááşáážáŹ áááąáŹááşááŹáááş javascript code á "noodles" áĄáŹá¸ááŻáśá¸ááᯠáĄááťáááşáááŻááşá¸ áá˝á˛ááźááşá¸á áááşááźáŹáááş ááááŻáĄááşááŤá
- áááąáŹááşááŹáĄáŹá¸ááŻáśá¸áááş ááśáˇáááŻá¸áážáŻááᯠááźáąááŹááŹá¸áááşá
- áááşá¸áááş bytecode ááźá áşááąáŹááźáąáŹááˇáş áááşáááˇáşááŹááŹá ááŹá¸áĄáá˝ááşáááᯠcompiler áá áşááŻááąá¸áááŻááşáááşá
- áĄááá áááąáŹááşááŹááąá¸ááŻáááş Web Assembly ááśáˇáááŻá¸áážáŻááźááˇáş áááşáááŻáˇááŹá¸ááźáŽá¸ááźá áşáááşá
- áááźáŹáᎠGo áá˝ááş áá°áááşá¸ááśáˇáááŻá¸áážáŻááᯠááťá˝ááşáŻááşáááŻáˇ ááťážáąáŹáşáááˇáşááąááŤáááşá á¤ááááŻááŹáĄáá áşááᯠáááˇáşáá˝ááşá¸ááźáŽá¸ááźá áşáááş- GOARCH=wasm GOOS=js (áááźáŹááŽ)á áááŻáĄááťáááşáĄááá ááťá˝ááşáŻááşááŹá¸áááşáááąáŹááşá áááşá¸áááş áĄááŻááşáááźá áşááąá¸ááąáŹáşáááşá¸ Go áá˝ááş ááťáááşá¸ááąááźá áşáááşáᯠááŻááşááźááşááťááşáá áşááŻáážááááşá
áĄáᯠááŹááŻááşáááá˛á GopherJS
ááťá˝ááşáŻááşáááŻáˇáá˝ááş Web Assembly áĄáá˝ááş ááśáˇáááŻá¸áážáŻááážáááŤá GopherJS áá˛áˇáááŻáˇ transpiler áá áşááŻáážááááşá

- Go ááŻááşááᯠâpureâ Javascript áááŻáˇ áá°á¸ááźáąáŹááşá¸áááşá
- áááąáŹááşááŹáĄáŹá¸ááŻáśá¸áá˝ááş ááŻááşááąáŹááşáááş - ááąááşááŽáááąáŹááşááŹááťáŹá¸ááᏠááśáˇáááŻá¸áááŻááşáááˇáş áĄááşášááŤáááşáĄáá áşááťáŹá¸ ááážáááŤá (áááşá¸áááş áááşáááˇáşáĄááŹááž ááŻááşááąáŹááşáááˇáş Vanilla JS ááźá áşáááş)á
- Go áááş ááŻáśáážááşáĄá áŽáĄá ááşááťáŹá¸áážááˇáş ááťááşáááşááťáŹá¸áĄááŤáĄáááş... ááťá˝ááşáŻááşáááŻáˇáážá áşáááşááźáŽá¸ ááááŹá¸áááťážáĄáŹá¸ááŻáśá¸ááŽá¸ááŤá¸áĄáá˝ááş ááśáˇáááŻá¸áážáŻáážáááŤáááşá
- áááąáŹááşááŹáá˝ááş ááśáˇáááŻá¸áááş áĄáááášááŤááşááážáááąáŹ áĄáááŻá፠áááşááąáˇááťáşááťáŹá¸áážáá˝á˛á á áśá áŹááźááˇáşáááŻááşáá áşááŻááŻáśá¸ááŽá¸ááŤá¸ááᯠááśáˇáááŻá¸ááąá¸áááş- syscallá net áĄááźááşáĄáážááşáááşáá˝ááşáážáŻááťáŹá¸ (net/http client áá áşááŻáážáááąáŹáşáááşá¸ ááŹááŹááážáááŤá áážááˇáş client ááᯠXMLHttpRequest áážáá áşáááˇáş áĄááŻáá°ááŤáááş)á ááąáá°ááťáĄáŹá¸ááźááˇáşá á áśááźá áŹááźááˇáşáááŻááşáá áşááŻááŻáśá¸ááᯠááááŻááşáááş - á¤ááąááŹáá˝ááş áááşá¸áááş browser áá˝ááşáážáááźáŽá¸á á¤ááąááŹáá˝ááş ááťá˝ááşáŻááşáááŻáˇáážá áşáááşááąáŹ Go á stdlib ááźá áşáááşá
- Go áážá áááşááąáˇááťáşááąáá áá áşáá áşááŻááŻáśá¸á ááźááşááĄáá˝á˛áˇáĄá ááşá¸ááźáąáážááşá¸ááťááşáĄáŹá¸ááŻáśá¸ááᯠGopherJS ááŻáśá¸ááźáŽá¸ á áŻá ááşá¸ááźáŽá¸ áááąáŹááşááŹáá˝ááş ááŻááşááąáŹááşáááŻááşááŤáááşá
GopherJS áááş ááááşáĄáá˝ááşáá˝ááşáá°áááş - áááşá¸áááş ááŻáśáážááş Go áááşááąáˇááťáşáá áşááŻááŹááźá áşáááşá ááťá˝ááşáŻááşáááŻáˇáá˝áŹá¸á áĄáááŽááąá¸áážááşá¸áááŻáááşááąáŹááşáááş GopherJS command áá áşááŻáážááááşá

ááŤá ááąá¸áááşáá˛áˇ áááşášáááŹááášááŹááąá¸ááŤáá˛...

...ááŻáśáážááş Go ááááŻááááşá ááŻáśáážááşááŻáśáážááş á
áŹááźááˇáşáááŻááş fmt áááşááąáˇááťáşáážááˇáş áááąáŹááşáᏠAPI áááŻááąáŹááşáážááááş Binding Jsá Println áááş ááąáŹááşááŻáśá¸áá˝ááş console log áĄááźá
áşáááŻáˇ ááźáąáŹááşá¸áá˛áá˝áŹá¸áááşááźá
áşááźáŽá¸ browser ááž âHello gophersâ áᯠááąá¸áááşááźá
áşááŤáááşá áĄá˛ááŤá áááŻá¸áážááşá¸ááŤáááş- ááťá˝ááşááąáŹáşáááŻáˇ GopherJS build ááŻááşááŤáááşá áááąáŹááşááŹáážáŹ áá˝ááˇáşáááŻááşááŹáá˛áˇ áĄáŹá¸ááŻáśá¸ áĄáááşááźáąááŤáááşá
ááąáŹááąáŹáááş áááşá¸áážáŹ ááŹáážááá˛á ááťááşáážáąáŹááşááźááşá¸á

ááŹáááşááźáŽá¸ js framework ááťáŹá¸áĄáŹá¸ááŻáśá¸áĄáá˝ááş binding ááťáŹá¸ áážááááş-
- JQuery;
- Angular.js;
- D3.js áááş ááąááŹááźáŽá¸ááźáŽá¸ááŹá¸ááŹá¸áážááˇáş ááŻááşááąáŹááşáááşá
- React.js;
- VueJS;
- áĄáŽáááşááá˝ááşáĄáá˝ááş áĄááąáŹááşáĄááśáˇááąáŹááş áážáááąá¸áááş (áááŻáááŻáááşáážáŹá ááťá˝ááşáŻááşáááŻáˇáááş áĄáŽáááşááá˝ááşááąáŤáşáá˝ááş desktop application ááťáŹá¸ááᯠááąá¸áááŻááşááąááźáŽááźá áşáááşá
- áááşá ááŹáĄááąáŹááşá¸ááŻáśá¸áĄááŹáážáŹ WebGL (3D ááááşáá áşá ááąá¸ááŽááážááˇáş ááááşá¸ááťáŹá¸áĄááŤáĄáááş ááááşáá áşáĄááźááˇáşáĄá áŻáśááᯠááťá˝ááşáŻááşáááŻáˇ áááşááŽá¸áááŻááşáááş)á
- áážááˇáş áá°ááźááŻááşááťáŹá¸ááąáŹ javascript frameworks ááťáŹá¸áážááˇáş libraries ááťáŹá¸ áážááˇáş áĄááźáŹá¸ááąáŹ ááťáááşáááşáážáŻááťáŹá¸á á˝áŹá
áá°ááąáŹááş
- GopherJS - Vecty áĄáá˝ááş áĄáá°á¸ááŽáá˝ááşááźáŽá¸ááąáŹ áááşááąáŹááşáá áşáᯠáážáááŤáááşá áááşá¸áááş React.js á ááźááˇáşá áŻáśááąáŹ analogue áá áşááŻááźá áşááąáŹáşáááşá¸ GopherJS á ááŽá¸ááźáŹá¸áĄááťááşááťáŹá¸ááźááˇáş Go áá˝ááşáᏠááŻááşááŻááşááŤáááşá
- ááááşá¸áĄáááşááťáŹá¸áážááááş (áĄáśáˇááźá
ááŹ!) áá°ááźááŻááşáĄááťáŹá¸ááŻáśá¸ áážá
áşááŻááᯠáá˝áąáˇáá˛áˇáááş
- Engo;
- Ebiten
Go áá˝ááş áááşáááşáááŻááŻáśá áśáážááˇáş áááşááąá¸ááŹá¸ááźáŽá¸ááŹá¸ááźá áşáááşááᯠáĽáááŹáĄááťááŻáˇááᯠááťá˝ááşáŻááşááźááŤáááşá

áááŻáˇáááŻááş á¤áá˝áąá¸ááťááşáá˝ááˇáş (3D ááąáááşáááŹá¸ááᯠááťá˝ááşáŻááş áážáŹááá˝áąáˇááąáŹáşáááşá¸ áááşá¸áážáŹ áážáááąáŹááşá¸áážááááŻááşáááş)á

ááŤááŹáá˝áą ááąá¸ááąááŹáá˛
áááŻáĄááŤáá˝ááş áážáąáˇááŻáśá¸á ááşáážáŻááŻááşáááşá¸áááş ááááşá Javascript ááž ááźá˝áąá¸ááźáąáŹáşáá˛áˇááąáŹ ááŹááŹá ááŹá¸ááťáŹá¸áĄáŹá¸ááŻáśá¸ áááŻááąááŹáá˝ááş áĄáážáááşáĄááŻááşááźááˇáş ááąáŹááşáážáááŹáááşááźá áşáááşá áááŻáĄááŹáĄáŹá¸ááŻáśá¸ááᯠ"áááşá ááşá¸ááąá¸áá˝á˛ááťáŹá¸" áá˝ááşá áŻá ááşá¸ááááˇáşáááşá Gophers áĄááźá áş áážááşáááşááąáŹááąááŹááᯠááá°áááş ááťá˝ááşáŻááşáááŻáˇ ááŹáááŻáĄááşááááşá¸á

Go áááş áááşá¸áááş á
áá
áşááááŻááááşá¸áááşá¸ááŹááŹá
ááŹá¸áá
áşááŻáᯠáĄá
ááşáĄááŹáĄáŹá¸ááźááˇáş áá°áááŹá¸ááźáŽá¸ UI áážááˇáş ááŻááşááąáŹááşáááşáĄáá˝ááş áááşáá˝áąáˇáá˝ááş á
áŹááźááˇáşáááŻááşááťáŹá¸ ááážáááŤá áá
áşááŻááŻááąáŹáˇ áážááááşá ááŤááąáááˇáş áá
áşáááşááąáŹááş á
á˝ááˇáşáá˝ážááşááźáŽá¸ áá
áşáááşááąáŹááşááąáŹáˇ áĄááŻááşáááźá
áşáá°á¸á
ááᯠGopherJS áá˝ááşáááşáááşáááˇáş Go áá˝ááş UI á áŹááźááˇáşáááŻááşááťáŹá¸ááźáŻááŻááşáááş áĄáá˝ááˇáşáĄááąá¸ááąáŹááşá¸áá áşááŻááźá áşáááşá ááąáŹááşááŻáśá¸áá˝ááş áááşáááş áááşááááŻááşáááŻááşáá°ááąáŹááşááᯠááąá¸áááŻááşáááşá á¤áĄááťáááşáááş áááş áá°ááąáŹááşáá áşááŻááᯠááąá¸áááŻááşáááˇáşáĄááťáááşááźá áşááźáŽá¸ áááşá¸áááş áááááŻáśá¸áážááˇáş á áąáŹá áŽá¸á á˝áŹ áá˝áąá¸á áŹá¸ááźááşá¸ááśááááşááźá áşááźáŽá¸á áááşáááş ááźááşáá˝ááˇáşááźá áşááŹááááˇáşáááş (áá°ááąáŹááşááąáŹááşá¸ááťážááş)á
Go ááąáá áá áşáá˝ááş áážáááźáŽá¸ááŹá¸ ááá°ááŽááąáŹ áááşááąáˇááťáşáĄááťáŹá¸áĄááźáŹá¸ááᯠáááąáŹááşááŹá ááŽá¸ááźáŹá¸áááşáážááşáážáŻááťáŹá¸ (áĽáááŹá Template áĄááşááťááş) áážááˇáş ááźáŻááźááşááźáąáŹááşá¸áá˛áááŻááşááŤáááşá áááşá¸áááŻáˇáááş áĄááŻááşááźá áşááąááźáŽááźá áşááźáŽá¸á áááşáááş áááąáŹááşááŹáá˝ááş áĄááźáąáŹááşá¸áĄááŹááᯠáááŻááşáááŻááş áá˝ááşáá°á á˝áŹ áááşáááşáááŻááşá áąáááş áĄáááşááźáąááąáŹ áážáąáŹááşááźááŻá¸ááťáŹá¸ááᯠááźáŻááŻááşáááŻááşáááşá áááŻáˇáĄááźááşá áĽáááŹáĄáŹá¸ááźááˇáşá server áážááˇáş front-end áá˝ááş áá°ááŽááąáŹáĄááŹááᯠáá°ááŽááąáŹááŻááşááᯠáĄááŻáśá¸ááźáŻá front-end developer ááťáŹá¸áážá áşáááşáááˇáşáĄááŹáĄáŹá¸ááŻáśá¸ (ááᯠGo áá˝ááşááŹ) ááᯠáĄááŻáśá¸ááźáŻá áááşááąáŹááşáážáŻáá áşáᯠááźáŻááŻááşáááŻááşáááşá
áááşááááşá¸áá áşááŻááąá¸áááŻááşáááşá áĄááťáąáŹáşáááąáŹáááşáááşâŚ
ááŤáᲠááťá˝ááşááąáŹáşááźáąáŹááťááşáááşá

ááąá¸áá˝ááşá¸ááťáŹá¸áááŻ
ááąá¸áá˝ááşá¸ (áááŻááąáŹááşáááŻááşá¸ Q ááŻáááşáá˝ážááşá¸áááş) - á፠Go áááŻáˇáááŻááş Js áá˝ááşááąá¸ááŤáááŹá¸á
AG- - áááşááŻááşáááŻá¸ááŻááşá ááşááťáŹá¸á ááťááşáááşááťáŹá¸á áááşááąáŹááşááŻáśááťáŹá¸á ááźážáŻááşáá˝ááşá¸ááźááşá¸ - Go áá˝ááş áĄááŹáĄáŹá¸ááŻáśá¸ááᯠáááşááąá¸ááŹá¸áááş... áááşáááş áĄá áŽáĄá ááşáá áşááŻááᯠá áŹáááşá¸áá˝ááşá¸ááźáŽá¸ áááŻááąááŹáá˝ááş ááŻááşááąáŹááşááťááşáá áşááŻááᯠááźááşáááşá¸ááŤá
IN: - ááŤááᯠá፠"naked" Js áá˛áˇ ááąá¸ááąááŹááŹá¸á
AG- - áááŻááşááŤá Go áá˝ááşáážáááá˛áˇáááŻáˇáááşááąá¸ááŹá¸ááźáŽá¸áááąáŹááşáᏠAPI áááŻáˇááťáááşáááşá፠( API áááşááźáąáŹááşá¸áá˛ááźááşá¸ááážáááŤ) á ááťááşáááşáááŻáˇ áááşááąáˇááťáşááťáŹá¸ ááąá¸áááŻáˇáááŻááşáááş áááˇáşáááŻááşáááŻááş ááťáááşáá˝á˛ááťáŹá¸ááᯠááąá¸áááŻááşáááş - áááşá¸áááş ááááşáá˛ááŤá
IN: - áááŻáááŻááşá¸ááşááąáŹá
AG- â ááťá˝ááşááąáŹáş ááąááťáŹááąáŤááş ááźááşáá°á¸áááş- JS run áá˛áˇ Cordova patch áĄáá˝ááş binding áá˝áą áážááááşá React Native áážáŹááąáŹáˇ ááťá˝ááşááąáŹáş ááááá°á¸á áážáááąáŹááşá¸áážááááşá ááážááááşá¸ áážááááŻááşáááş (ááťá˝ááşááąáŹáş áĄááťáŹá¸ááźáŽá¸ áááźááˇáşáááŻááşáááąá¸áá°á¸)á N-go game engine á áááŻáááŻááşá¸áĄááşááşáá˝áąáááŻáááşá¸ support ááŻááşáááş - iOS áá˛áˇ Android.
IN: - Web Assembly áážááˇáşáááşáááşááąáŹááąá¸áá˝ááşá¸á ááááááşááźááşá¸áážááˇáş "áá áşáá˝á˛ááźááşá¸" ááťáŹá¸ááźáŹá¸ááž ááąááŹáááŻááá°ááŹááąááŤáááş... á¤áááşá¸ááźááˇáş áážáąáˇááŻáśá¸ááášááŹááᯠááťá˝ááşáŻááşáááŻáˇ ááááşáááŻááşááąáŹáˇááŤá
AG- - Web Assembly áááş binary ááąáŹáşáááşááźá áşááźáŽá¸ áá°áááşá¸áĄáŹá¸ááźááˇáş binary áááş á áŹááŹá¸áááşáááŻá ááąáŹááşááŻáśá¸áá˝ááşáážááážáŻáá˝ááş áááźá áşáááŻááşááŤ... áááˇáşáĄáŹá¸ runtime áááŻáˇ ááąá¸áá˝á˛ááŹá¸ááąáŹáşáááşá¸ áááşá¸áááş áááşá¸áá˝ááşááážááááˇáşáĄá፠standard Javascript á áŹááźááˇáşáááŻááşááᯠáá˝á˛ááŻááşááźááşá¸áážááˇáş áĄáá°áá°áááşááźá áşáááşá áááŻáˇááźáąáŹááˇáş ááťá˝ááşáŻááşáááŻáˇá Lodash áĄááťááŻáˇáááŻááŻáśá¸ááŤá Lodash áááşááťážááźáŹáááşáááá
IN: - runtime áááş áááŻáááşá¸ááŤáááş...
AG- - "á ááşááźááşááąáŹ" Javascript áá˝ááş?
IN: - ááŻááşáá˛áˇá ááááŻáˇáááş ááťááąáŹáşáááŻáˇá ááťáŻáśáˇáááŻááşáááş...
AG- -ááŤááąáááˇáş ááŤá á áŹááŹá¸ááŤ... ááąáá°ááťáĄáŹá¸ááźááˇáşá megabyte áᏠáĄááťáŹá¸ááźáŽá¸áááŻááŻáśááááşá ááŤááąáááˇáş ááŤááŤáᲠ(áááˇáşáážáŹ runtime áá áşááŻááŻáśá¸áážáááŤáááş)á áááŻáˇááąáŹááş áááşáááş áááşá binary ááᯠ1% áááŻá¸á áąáááˇáş áááşááááŻááşáááŻááşá áŽá¸áá˝áŹá¸ááąá¸ááŻáášááááᯠááąá¸ááŤá áĄááŻááááąáŹáˇ ááŽáá°áááşááŹááᯠááá˝áąáˇááąá¸áá°á¸á áááŻáˇáĄááźááşá Web Assembly áááş áááşáážáŹá¸ááąáŹáĄááźáąáŹááşá¸ááźááťááşáĄáá˝ááş Javascript áááşáááŻáááŻááźááşáááşá á˝áŹáĄááŻááşááŻááşáááŻááşááááˇáşáááş - áááşá¸áááŻáá˝á˛ááźááşá¸á áááşááźáŹáááşááááŻáĄááşááŤá
IN: - á¤áááşáážáŹ áĄááźááşá¸áá˝áŹá¸áá˝ááşááŹáĄááťááşáá áşááŻáááşááźá áşááąá¸áááş... áááŻáˇááźáąáŹááˇáş áááşáá°áá áşáŚá¸áá áşááąáŹááşááž áážááşá¸áážááşá¸áááşá¸áááşá¸ áááŻáśá¸ááźááşáááŻááşá áąáááş âVasmaâ (Web Assembly) ááᯠáááŻá¸ááŹá¸áááˇáş áĄááąáŹááşáĄáááşááąáŹáşáážáŻááťááŻá¸ ááážáááąá¸ááŤá áááąáŹáááŹá¸áĄáá ááŻááşáááş- binary áááş áááŻáááŻááźááşáááşáááˇáşáááşáᯠááťá˝ááşáŻááşáááŻáˇáĄáŹá¸ááŻáśá¸ ááŹá¸áááşááŹá¸ááąáŹáşáááşá¸ áá°ááŽááąáŹ V8 ááᯠáááşáážááĄááąáŹááşáĄáááşááąáŹáşáážáŻáááş áĄáá˝ááşááááąáŹááşááŤáááşá
AG- - ááŻááşáá˛áˇá
IN: - áĄá˛ááŽáážáŹ Compilation á áĄáááşá¸áááŻááşááźáŽá¸ áĄááťááŻá¸ááťáąá¸áá°á¸ááźáŽá¸ááźáŽá¸ááŹá¸ááŹá¸áážááážáŹ áááŻááşááŤáá°á¸á
AG- - Web Assembly áááŻáááşá¸ áĄááźáŽá¸ááźáŽá¸áá˝áąá ááŻááşáááşá
IN: - Web Assembly ááᯠáĄáá˛ááźááşáááş áááşáá˛áá˛áᯠááťá˝ááşáŻááşáááşááŤáááşá áážá áşááąáŤááşá¸ááťáŹá¸á á˝áŹ á ááŹá¸ááźáąáŹáááŻáážáŻááťáŹá¸ áážááá˛áˇááąáŹáşáááşá¸ áĄáážááşááááş ááśá áŹá¸áááŻááşááąáŹ áĄáąáŹááşááźááşáážáŻááťáŹá¸ áĄáááşá¸áááşáᏠáážáááąá¸áááşá
AG- - ááźá áşáááŻááşá ááŹá ááźááˇáşáááŻááşáááşá
IN: - ááťá˝ááşáŻááşáááŻáˇáááş ááąáŹááşáá˝ááşáá˝ááş ááźáżááŹááážáááŤ... á¤ááźáżááŹááťáŹá¸ááᯠáážáąáˇáááşá¸áá˝ááş ááŹá¸áá˛áˇáááˇáşááŤáááŹá¸á ááŹáááŻáˇáĄá˛ááŽáááŻáá˝áŹá¸ááŹáá˛á
AG- - ááťá˝ááşáŻááşáááŻáˇáááş áážáąáˇáááşá¸ááž áĄááŻááşáááŹá¸ááťáŹá¸á áááşáááşá¸ááťáŹá¸ááᯠááŹá¸áážááááş áááŻáĄááşááŤáááşá

ááźáąáŹáşááźáŹáĄááťááŻáˇ đ
ááťá˝ááşáŻááşáááŻáˇáážááˇáşáĄáá°áážáááąáááˇáşáĄáá˝ááş ááťáąá¸áá°á¸áááşááŤáááşá ááťá˝ááşáŻááşáááŻáˇáááąáŹááşá¸ááŤá¸ááťáŹá¸ááᯠáááşáážá áşáááşááŤáááŹá¸á áááŻá áááşáááşá áŹá¸á ááŹááąáŹááşá¸áá˛áˇ áĄááźáąáŹááşá¸áĄááŹáá˝áąááᯠááźááˇáşááťááşááŤáááŹá¸á áážáŹáá°áážáŻáá áşááŻááźáŻááŻááşááźááşá¸ áááŻáˇáááŻááş áá°áááşááťááşá¸ááťáŹá¸ááᯠáĄááźáśááźáŻááźááşá¸ááźááˇáş ááťá˝ááşáŻááşáááŻáˇáĄáŹá¸ ááśáˇáááŻá¸áá°ááŽááŤá , áááşá¸áĄáá˝ááş ááŤáááŻáˇá ááŽáá˝ááşááŹá¸áá˛áˇ entry-level server áá˝áąáá˛áˇ áá°á¸ááźáŹá¸áá˛áˇ analogue áá áşááŻá (RAID1 áážááˇáş RAID10á 24 cores áĄáááážááˇáş 40GB DDR4 áĄáá)á
áĄááşá
ááŹáááşáážá Equinix Tier IV ááąááŹá
ááşááŹáá˝ááş Dell R730xd áááş á á á
áťáąá¸áááşááŹáááşá ááŽáážáŹáᏠáááşááŹáááşáážáŹ Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - $99 áážá áĄááźáąáŹááşá¸áááşááŤá
source: www.habr.com
