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 á¡áá¯ááºáá¯ááºáá²á· Cordova patch á¡ááœáẠáá»ááºááŸá±á¬ááºááŸá¯ááœá±ááŸááááºá React Native ááŸá¬ - áá«ááááá°áž; ááŸáááá¯ááºáááºá ááŒá áºááá¯ááºáááºá ááá¯ááºáá°áž (áá»áœááºáá±á¬áº á¡áá°áž á áááºááááºá á¬ážáá²á·áá°áž)á N-go ááááºážá¡ááºáá»ááºááẠ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- - áá»áœááºá¯ááºááá¯á·ááẠááŸá±á·áááºážá០á¡áá¯ááºááá¬ážáá»á¬ážá áááºáááºážáá»á¬ážááᯠáá¬ážááŸáááẠááá¯á¡ááºáá«áááºá
ááŒá±á¬áºááŒá¬á¡áá»áá¯á· ð
áá»áœááºá¯ááºááá¯á·ááŸáá·áºá¡áá°ááŸááá±ááá·áºá¡ááœáẠáá»á±ážáá°ážáááºáá«áááºá áá»áœááºá¯ááºááá¯á·ááá±á¬ááºážáá«ážáá»á¬ážááᯠáááºááŸá
áºáááºáá«ááá¬ážá ááá¯á
áááºáááºá
á¬ážá
áá¬áá±á¬ááºážáá²á· á¡ááŒá±á¬ááºážá¡áá¬ááœá±ááᯠááŒáá·áºáá»ááºáá«ááá¬ážá ááŸá¬áá°ááŸá¯áá
áºáá¯ááŒá¯áá¯ááºááŒááºáž ááá¯á·ááá¯áẠáá°áááºáá»ááºážáá»á¬ážááᯠá¡ááŒá¶ááŒá¯ááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·á¡á¬áž áá¶á·ááá¯ážáá°áá®áá«á
á¡ááºá
áá¬áááºááŸá Equinix Tier IV áá±áá¬á
ááºáá¬ááœáẠDell R730xd ááẠá á á
á»á±ážáááºáá¬áááºá áá®ááŸá¬áá¬
source: www.habr.com