ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

Kyiv Go Meetup ืžืื™ 2018:

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

ืขื•ืคืจืช: - ืฉืœื•ื ืœื›ื•ืœื! ืชื•ื“ื” ืฉื”ื™ื™ืช ื›ืืŸ! ื”ื™ื•ื ื™ืฉ ืœื ื• ืฉื ื™ ื“ื•ื‘ืจื™ื ืจืฉืžื™ื™ื - ืœื™ื•ืฉื” ื•-ื•ื ื™ื”. ื™ื”ื™ื• ืขื•ื“ ืฉื ื™ื™ื ืื ื™ื”ื™ื” ืœื ื• ืžืกืคื™ืง ื–ืžืŸ. ื”ื“ื•ื‘ืจ ื”ืจืืฉื•ืŸ ื”ื•ื ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘, ื”ื•ื ื™ืกืคืจ ืœื ื• ืขืœ GopherJS.

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘ (ืœื”ืœืŸ - AG): โ€“ ืื ื™ ืžืคืชื— Go, ื•ืื ื™ ื›ื•ืชื‘ ืฉื™ืจื•ืชื™ ืื™ื ื˜ืจื ื˜ ื‘-Go. ืœืคืขืžื™ื ืืชื” ืฆืจื™ืš ืœื”ืชืžื•ื“ื“ ืขื ื”ื—ื–ื™ืช, ืœืคืขืžื™ื ืืชื” ืฆืจื™ืš ืœื”ื™ื›ื ืก ืืœื™ื• ื™ื“ื ื™ืช. ืื ื™ ืจื•ืฆื” ืœื“ื‘ืจ ืขืœ ื”ื ื™ืกื™ื•ืŸ ื•ื”ืžื—ืงืจ ืฉืœื™ ื‘-Go ื‘ื—ื–ื™ืช ื”ืงืฆื”.

ื”ืื’ื“ื” ื”ื™ื ื›ื–ื•: ืชื—ื™ืœื” ื ื“ื‘ืจ ืขืœ ืœืžื” ืื ื—ื ื• ืจื•ืฆื™ื ืœื”ืคืขื™ืœ ืืช Go ื‘ื—ื–ื™ืช, ื•ืื– ื ื“ื‘ืจ ืขืœ ืื™ืš ื–ื” ื™ื›ื•ืœ ืœื”ื™ืขืฉื•ืช. ื™ืฉื ืŸ ืฉืชื™ ื“ืจื›ื™ื - Web Assembly ื•-GopherJS. ื‘ื•ืื• ื ืจืื” ืžื” ื”ืกื˜ื˜ื•ืก ืฉืœ ื”ืคืชืจื•ื ื•ืช ื”ืœืœื• ื•ืžื” ื ื™ืชืŸ ืœืขืฉื•ืช.

ืžื” ืจืข ื‘ื—ื–ื™ืช?

ื”ืื ื›ื•ืœื ืžืกื›ื™ืžื™ื ืฉื”ื›ืœ ื‘ืกื“ืจ ืขื ื”ื—ื–ื™ืช?

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

ืื™ืŸ ืžืกืคื™ืง ื‘ื“ื™ืงื•ืช? ื‘ื ื™ื™ื” ืื™ื˜ื™ืช? ืžืขืจื›ืช ืืงื•ืœื•ื’ื™ืช? ื‘ืกื“ืจ ื’ืžื•ืจ.

ืœื’ื‘ื™ ื”-frontend, ืื ื™ ืื•ื”ื‘ ืืช ื”ืฆื™ื˜ื•ื˜ ืฉืืžืจ ืื—ื“ ืžืžืคืชื—ื™ ื”-frontend ื‘ืกืคืจ ืฉืœื•:

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

ืœ-Javascript ืื™ืŸ ืžืขืจื›ืช ืกื•ื’ื™ื. ื›ืขืช ืืฆื™ื™ืŸ ืืช ื”ื‘ืขื™ื•ืช ืฉื ืชืงืœืชื™ ื‘ื”ืŸ ื‘ืžื”ืœืš ืขื‘ื•ื“ืชื™ ื•ืืกื‘ื™ืจ ื›ื™ืฆื“ ื”ืŸ ื ืคืชืจื•ืช.

ืžืขืจื›ืช ื”ื˜ื™ืคื•ืก ื‘ืื•ืคืŸ ื›ืœืœื™ ื‘ืงื•ืฉื™ ื™ื›ื•ืœื” ืœื”ื™ืงืจื ืžืขืจื›ืช ื˜ื™ืคื•ืก ื‘-Javasript - ื™ืฉ ืงื•ื•ื™ื ืฉืžืฆื™ื™ื ื™ื ืืช ืกื•ื’ ื”ืื•ื‘ื™ื™ืงื˜, ืื‘ืœ ืœืžืขืฉื” ืื™ืŸ ืœื–ื” ืฉื•ื ืงืฉืจ ืœื˜ื™ืคื•ืกื™ื. ื‘ืขื™ื” ื–ื• ื ืคืชืจืช ื‘-TypeScript (ืชื•ืกืฃ ืœ-Javasript) ื•ื‘-Flow (ื‘ื•ื“ืง ืžืกื•ื’ ืกื˜ื˜ื™ ื‘-Javascript). ืœืžืขืฉื”, ื”-frontend ื›ื‘ืจ ื”ื’ื™ืข ืœื ืงื•ื“ื” ืฉืœ ืคืชืจื•ืŸ ื”ื‘ืขื™ื” ืฉืœ ืžืขืจื›ืช ืžืกื•ื’ ื’ืจื•ืข ื‘-Javascript.

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

ืื™ืŸ ืกืคืจื™ื™ื” ืกื˜ื ื“ืจื˜ื™ืช ื‘ื“ืคื“ืคืŸ ื›ื›ื–ื” - ื™ืฉ ื›ืžื” ืื•ื‘ื™ื™ืงื˜ื™ื ืžื•ื‘ื ื™ื ื•ืคื•ื ืงืฆื™ื•ืช "ืงืกื" ื‘ื“ืคื“ืคื ื™ื. ืื‘ืœ ื‘-Javascript ืื™ืŸ ืกืคืจื™ื™ื” ืกื˜ื ื“ืจื˜ื™ืช ื›ื›ื–ื•. ื‘ืขื™ื” ื–ื• ื ืคืชืจื” ื›ื‘ืจ ืคืขื ืื—ืช ืขืœ ื™ื“ื™ jQuery (ื›ื•ืœื ื”ืฉืชืžืฉื• ื‘-jQuery ืขื ื›ืœ ืื‘ื•ืช ื”ื˜ื™ืคื•ืก, ื”ืขื•ื–ืจื™ื, ื”ืคื•ื ืงืฆื™ื•ืช ืฉื ื“ืจืฉื• ื›ื“ื™ ืœืขื‘ื•ื“). ืขื›ืฉื™ื• ื›ื•ืœื ืžืฉืชืžืฉื™ื ื‘-Lodash:

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

ื”ืชืงืฉืจื•ืช ื—ื•ื–ืจืช ืœืขื–ืื–ืœ. ืื ื™ ื—ื•ืฉื‘ ืฉื›ื•ืœื ืจืื• ืืช ืงื•ื“ Javascript ืœืคื ื™ ื›-5 ืฉื ื™ื, ื•ื”ื•ื ื ืจืื” ื›ืžื• "ืื˜ืจื™ื•ืช" ืฉืœ ืžื•ืจื›ื‘ื•ืช ืžื“ื”ื™ืžื” ืฉืœ ื”ืชืงืฉืจื•ื™ื•ืช ื—ื•ื–ืจื•ืช. ื›ืขืช ื”ื‘ืขื™ื” ื”ื–ื• ื ืคืชืจื” (ืขื ื”ืฉื—ืจื•ืจ ืฉืœ ES-15 ืื• ES-16), ื”ื‘ื˜ื—ื•ืช ื ื•ืกืคื• ืœ-Javascript ื•ื›ื•ืœื ื™ื›ื•ืœื™ื ืœื ืฉื•ื ืœื–ืžืŸ ืžื”.

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

ืขื“ ืฉื”ื’ื™ื”ื ื•ื ืฉืœ Promice ื”ื’ื™ืข... ืื ื™ ืœื ื™ื•ื“ืข ืื™ืš ืชืขืฉื™ื™ืช ื”ืคืจื•ื ื˜-ืื ื“ ืžืกืชื“ืจืช, ืื‘ืœ ื”ื ืชืžื™ื“ ืžืกื™ืขื™ื ืืช ืขืฆืžื ืœืื™ื–ื” ื’'ื•ื ื’ืœ ืžื•ื–ืจ. ื”ืฆืœื—ื ื• ื’ื ืœืขืฉื•ืช ื’ื™ื”ื ื•ื ืขืœ ื”ื‘ื˜ื—ื•ืช. ื•ืื– ืคืชืจื ื• ืืช ื”ื‘ืขื™ื” ืขืœ ื™ื“ื™ ื”ื•ืกืคืช ืคืจื™ืžื™ื˜ื™ื‘ื™ ื—ื“ืฉ - ืืกื™ื ื›ืจื•ืŸ/ื—ื›ื”:

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

ื”ื‘ืขื™ื” ืขื ื-ืกื™ื ื›ืจื•ืŸ ื ืคืชืจื”. Async/await ื”ื•ื ืคืจื™ืžื™ื˜ื™ื‘ื™ ืคื•ืคื•ืœืจื™ ืœืžื“ื™ ื‘ืฉืคื•ืช ืฉื•ื ื•ืช. ืœืคื™ื™ืชื•ืŸ ื•ืื—ืจื™ื ื™ืฉ ื’ื™ืฉื” ื–ื• - ื”ื™ื ื“ื™ ื˜ื•ื‘ื”. ื”ื‘ืขื™ื” ื ืคืชืจื”.

ืื™ื–ื• ื‘ืขื™ื” ืœื ื ืคืชืจื”? ื”ืžื•ืจื›ื‘ื•ืช ื”ื”ื•ืœื›ืช ื•ื’ื•ื‘ืจืช ืฉืœ ืžืกื’ืจื•ืช, ื”ืžื•ืจื›ื‘ื•ืช ืฉืœ ื”ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช ื•ื”ืชื•ื›ื ื™ื•ืช ืขืฆืžืŸ.

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

  • ืชื—ื‘ื™ืจ Javascript ืงืฆืช ืžื•ื–ืจ. ื›ื•ืœื ื• ืžื›ื™ืจื™ื ืืช ื”ื‘ืขื™ื•ืช ื‘ื”ื•ืกืคืช ืžืขืจืš ื•ืื•ื‘ื™ื™ืงื˜ ื•ื‘ื“ื™ื—ื•ืช ืื—ืจื•ืช.
  • Javascript ื”ื•ื ืจื‘ ืคืจื“ื™ื’ืžื”. ื–ื•ื”ื™ ืžืขืจื›ืช ื“ื—ื•ืคื” ื‘ืžื™ื•ื—ื“ ื›ืขืช ื›ืืฉืจ ื”ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช ื’ื“ื•ืœื” ืžืื•ื“:
    • ื›ื•ืœื ื›ื•ืชื‘ื™ื ื‘ืกื’ื ื•ื ื•ืช ืฉื•ื ื™ื - ื—ืœืง ื›ื•ืชื‘ื™ื ื‘ืฆื•ืจื” ืžื‘ื ื™ืช, ื—ืœืง ื›ื•ืชื‘ื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ืช, ืžืคืชื—ื™ื ืฉื•ื ื™ื ื›ื•ืชื‘ื™ื ื‘ื“ืจื›ื™ื ืฉื•ื ื•ืช;
    • ืžื—ื‘ื™ืœื•ืช ืฉื•ื ื•ืช, ืคืจื“ื™ื’ืžื•ืช ืฉื•ื ื•ืช ื›ืืฉืจ ืืชื” ืžืฉืชืžืฉ ื‘ื—ื‘ื™ืœื•ืช ืฉื•ื ื•ืช;
    • ื™ืฉ ื”ืจื‘ื” "ื›ื™ืฃ" ืขื ืชื›ื ื•ืช ืคื•ื ืงืฆื™ื•ื ืœื™ ื‘-Javasript - ืกืคืจื™ื™ืช rambda ื”ื•ืคื™ืขื” ื•ืขื›ืฉื™ื• ืืฃ ืื—ื“ ืœื ื™ื›ื•ืœ ืœืงืจื•ื ืชื•ื›ื ื™ื•ืช ืฉื ื›ืชื‘ื• ื‘ืกืคืจื™ื™ื” ื”ื–ื•.

  • ื›ืœ ื–ื” ืžืฉืคื™ืข ืžืื•ื“ ืขืœ ื”ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช, ื•ื”ื™ื ื’ื“ืœื” ื‘ืฆื•ืจื” ืžื“ื”ื™ืžื”. ื”ื—ื‘ื™ืœื•ืช ืื™ื ืŸ ืชื•ืืžื•ืช ื–ื• ืœื–ื•: ื—ืœืงืŸ ืžื‘ื•ืกืกื•ืช ืขืœ ื”ื‘ื˜ื—ื•ืช, ื—ืœืงืŸ ืžื‘ื•ืกืกื•ืช ืขืœ ืืกื™ื ื›ืจื•ืŸ/ื—ื›ื”, ื—ืœืงืŸ ืžื‘ื•ืกืกื•ืช ืขืœ ื”ืชืงืฉืจื•ื™ื•ืช ื—ื•ื–ืจื•ืช. ื”ื ื’ื ื›ื•ืชื‘ื™ื ื‘ืคืจื“ื™ื’ืžื•ืช ืฉื•ื ื•ืช!
  • ื–ื” ืžืงืฉื” ืขืœ ืชื—ื–ื•ืงื” ืฉืœ ื”ืคืจื•ื™ืงื˜. ืงืฉื” ืœืžืฆื•ื ื‘ืื’ ืื ืื™ื ืš ื™ื›ื•ืœ ืœืงืจื•ื ืืช ื”ืงื•ื“.

ืžื”ื™ Web Assembly?

ื”ื—ื‘ืจ'ื” ื”ืืžื™ืฆื™ื ืžืงืจืŸ ืžื•ื–ื™ืœื” ื•ืžืกืคืจ ื—ื‘ืจื•ืช ืื—ืจื•ืช ื”ืขืœื• ื“ื‘ืจ ื›ื–ื” ื›ืžื• Web Assembly. ืžื” ื–ื”?

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

  • ื–ื•ื”ื™ ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ื”ืžื•ื‘ื ื™ืช ื‘ื“ืคื“ืคืŸ ื”ืชื•ืžื›ืช ื‘ืคื•ืจืžื˜ ื”ื‘ื™ื ืืจื™.
  • ืชื•ื›ื ื™ื•ืช ื‘ื™ื ืืจื™ื•ืช ืžื’ื™ืขื•ืช ืœืฉื ื•ืžื‘ื•ืฆืขื•ืช ื›ืžืขื˜ ื‘ืื•ืคืŸ ืžืงื•ืจื™, ื›ืœื•ืžืจ, ื”ื“ืคื“ืคืŸ ืœื ืฆืจื™ืš ืœื ืชื— ืืช ื›ืœ ื”"ืื˜ืจื™ื•ืช" ืฉืœ ืงื•ื“ javascript ื‘ื›ืœ ืคืขื.
  • ื›ืœ ื”ื“ืคื“ืคื ื™ื ื”ืฆื”ื™ืจื• ืขืœ ืชืžื™ื›ื”.
  • ืžื›ื™ื•ื•ืŸ ืฉื–ื”ื• bytecode, ืืชื” ื™ื›ื•ืœ ืœื›ืชื•ื‘ ืžื”ื“ืจ ืœื›ืœ ืฉืคื”.
  • ืืจื‘ืขื” ื“ืคื“ืคื ื™ื ืขื™ืงืจื™ื™ื ื›ื‘ืจ ื ืฉืœื—ื™ื ืขื ืชืžื™ื›ื” ื‘-Web Assembly.
  • ืื ื• ืžืฆืคื™ื ืœืชืžื™ื›ื” ืžืงื•ืจื™ืช ื‘-Go ื‘ืงืจื•ื‘. ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ื”ื—ื“ืฉื” ื”ื–ื• ื›ื‘ืจ ื ื•ืกืคื”: GOARCH=wasm GOOS=js (ื‘ืงืจื•ื‘). ืขื“ ื›ืืŸ, ืœืžื™ื˜ื‘ ื”ื‘ื ืชื™, ื–ื” ืœื ืคื•ื ืงืฆื™ื•ื ืœื™, ืื‘ืœ ื™ืฉ ืืžื™ืจื” ืฉื–ื” ื‘ื”ื—ืœื˜ ื™ื”ื™ื” ื‘-Go.

ืžื” ืœืขืฉื•ืช ืขื›ืฉื™ื•? GopherJS

ืืžื ื ืื™ืŸ ืœื ื• ืชืžื™ื›ื” ื‘-Web Assembly, ืื‘ืœ ื™ืฉื ื• ื˜ืจื ืกืคื™ืœืจ ื›ืžื• GopherJS.

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

  • ืงื•ื“ Go ืžื•ืขื‘ืจ ืœ-Javascript "ื˜ื”ื•ืจ".
  • ืคื•ืขืœ ื‘ื›ืœ ื”ื“ืคื“ืคื ื™ื - ืื™ืŸ ืชื›ื•ื ื•ืช ื—ื“ืฉื•ืช ืฉื ืชืžื›ื•ืช ืจืง ืขืœ ื™ื“ื™ ื“ืคื“ืคื ื™ื ืžื•ื“ืจื ื™ื™ื (ื–ื”ื• Vanilla JS, ืฉืคื•ืขืœ ืขืœ ื›ืœ ื“ื‘ืจ).
  • ื™ืฉ ืชืžื™ื›ื” ื›ืžืขื˜ ื‘ื›ืœ ืžื” ืฉื™ืฉ ืœ-Go, ื›ื•ืœืœ ื’ื•ืจื•ื˜ื™ื ื™ื ื•ืขืจื•ืฆื™ื... ื›ืœ ืžื” ืฉืื ื—ื ื• ื›ืœ ื›ืš ืื•ื”ื‘ื™ื ื•ื™ื•ื“ืขื™ื.
  • ื›ืžืขื˜ ื›ืœ ื”ืกืคืจื™ื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช ื ืชืžื›ืช, ืคืจื˜ ืœืื•ืชืŸ ื—ื‘ื™ืœื•ืช ืฉืื™ืŸ ื”ื’ื™ื•ืŸ ืœืชืžื•ืš ื‘ื”ืŸ ื‘ื“ืคื“ืคืŸ: syscall, ืื™ื ื˜ืจืืงืฆื™ื•ืช ื ื˜ื• (ื™ืฉ ืœืงื•ื— net/http, ืื‘ืœ ืื™ืŸ ืฉืจืช, ื•ื”ืœืงื•ื— ืžื—ื•ืงื” ื‘ืืžืฆืขื•ืช XMLHttpRequest). ื‘ืื•ืคืŸ ื›ืœืœื™, ื›ืœ ื”ืกืคืจื™ื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช ื–ืžื™ื ื” - ื”ื ื” ื”ื™ื ื‘ื“ืคื“ืคืŸ, ื”ื ื” stdlib ืฉืœ Go, ืฉืื ื—ื ื• ืื•ื”ื‘ื™ื.
  • ื›ืœ ืืงื•ืกื™ืกื˜ื ื”ื—ื‘ื™ืœื” ื‘-Go, ื›ืœ ืคืชืจื•ื ื•ืช ืฆื“ ืฉืœื™ืฉื™ (ืชื‘ื ื™ื•ืช ื•ื›ื•') ื ื™ืชื ื™ื ืœื”ื™ื“ื•ืจ ื‘ืืžืฆืขื•ืช GopherJS ื•ืœื”ืคืขื™ืœ ื‘ื“ืคื“ืคืŸ.

ืงืœ ืžืื•ื“ ืœื”ืฉื™ื’ ืืช GopherJS - ื–ื• ืจืง ื—ื‘ื™ืœืช Go ืจื’ื™ืœื”. ืื ื—ื ื• ื”ื•ืœื›ื™ื ืœืงื‘ืœ, ื•ื™ืฉ ืœื ื• ืคืงื•ื“ืช GopherJS ืœื‘ื ื•ืช ืืช ื”ืืคืœื™ืงืฆื™ื”:

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

ื–ื” ืขื•ืœื ืฉืœื•ื ืงื˜ืŸ ื›ื–ื”...

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

...ืชื•ื›ื ื™ืช Go ืจื’ื™ืœื”, ื—ื‘ื™ืœืช fmt ืกืคืจื™ื™ื” ืจื’ื™ืœื” ื•-Binding Js ื›ื“ื™ ืœื”ื’ื™ืข ืœ-API ืฉืœ ื”ื“ืคื“ืคืŸ. Println ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ื™ื•ืžืจ ืœื™ื•ืžืŸ ื”ืžืกื•ืฃ ื•ื”ื“ืคื“ืคืŸ ื™ื›ืชื•ื‘ "Hello gophers"! ื–ื” ื›ืœ ื›ืš ืคืฉื•ื˜: ืื ื—ื ื• ืขื•ืฉื™ื GopherJS build - ืื ื—ื ื• ืžืฉื™ืงื™ื ืืช ื–ื” ื‘ื“ืคื“ืคืŸ - ื”ื›ืœ ืขื•ื‘ื“!

ืžื” ื™ืฉ ืœืš ื›ืจื’ืข? ื›ืจื™ื›ื•ืช

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

ื™ืฉ ื›ืจื™ื›ื•ืช ืœื›ืœ ืžืกื’ืจื•ืช js ื”ืคื•ืคื•ืœืจื™ื•ืช:

  • JQuery;
  • Angular.js;
  • D3.js ืœืฉืจื˜ื•ื˜ ื•ืขื‘ื•ื“ื” ืขื ื‘ื™ื’ ื“ืื˜ื”;
  • React.js;
  • VueJS;
  • ื™ืฉ ืืคื™ืœื• ืชืžื™ื›ื” ื‘-Electron (ื›ืœื•ืžืจ, ืื ื—ื ื• ื›ื‘ืจ ื™ื›ื•ืœื™ื ืœื›ืชื•ื‘ ื™ื™ืฉื•ืžื™ ืฉื•ืœื—ืŸ ืขื‘ื•ื“ื” ืขืœ Electron);
  • ื•ื”ื“ื‘ืจ ื”ืžืฆื—ื™ืง ื‘ื™ื•ืชืจ ื”ื•ื WebGL (ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื™ืฆื•ืจ ืืคืœื™ืงืฆื™ื•ืช ื’ืจืคื™ื•ืช ืžืœืื•ืช, ื›ื•ืœืœ ืžืฉื—ืงื™ื ืขื ื’ืจืคื™ืงื” ืชืœืช ืžื™ืžื“ื™ืช, ืžื•ื–ื™ืงื” ื•ื›ืœ ื”ื˜ื•ื‘);
  • ื•ืขื•ื“ ื›ืจื™ื›ื•ืช ืจื‘ื•ืช ืœื›ืœ ืžืกื’ืจื•ืช ื”-Javascript ื•ื”ืกืคืจื™ื•ืช ื”ืคื•ืคื•ืœืจื™ื•ืช.

ืžืกื’ืจืช

  1. ื™ืฉ ืžืกื’ืจืช ืื™ื ื˜ืจื ื˜ ืฉื›ื‘ืจ ืคื•ืชื—ื” ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ GopherJS - Vecty. ื–ื”ื• ืื ืœื•ื’ื™ ืžืœื ืฉืœ React.js, ืืš ืคื•ืชื— ืจืง ื‘-Go, ืขื ื”ืคืจื˜ื™ื ื”ืกืคืฆื™ืคื™ื™ื ืฉืœ GopherJS.
  2. ื™ืฉ ืชื™ืงื™ ืžืฉื—ืง (ื”ืคืชืขื”!). ืžืฆืืชื™ ืืช ื”ืฉื ื™ื™ื ื”ื›ื™ ืคื•ืคื•ืœืจื™ื™ื:
    • ืื ื’ื•;
    • ืื‘ื˜ืŸ.

ืื ื™ ืืจืื” ืœืš ื›ืžื” ื“ื•ื’ืžืื•ืช ืื™ืš ื–ื” ื ืจืื” ื•ืžื” ืืชื” ื›ื‘ืจ ื™ื›ื•ืœ ืœื›ืชื•ื‘ ื‘-Go:

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

ืื• ืืคืฉืจื•ืช ื–ื• (ืœื ื”ืฆืœื—ืชื™ ืœืžืฆื•ื ื™ื•ืจื” ืชืœืช ืžื™ืžื“, ืื‘ืœ ืื•ืœื™ ื”ื™ื ืงื™ื™ืžืช):

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

ืžื” ืื ื™ ืžืฆื™ืข?

ื›ืขืช ืชืขืฉื™ื™ืช ื”ื—ื–ื™ืช ื ืžืฆืืช ื‘ืžืฆื‘ ื›ื–ื” ืฉื›ืœ ื”ืฉืคื•ืช ืฉื‘ืขื‘ืจ ื‘ื›ื• ืž-Javascript ื™ืžื”ืจื• ืœืฉื. ื›ืขืช ื”ื›ืœ ื™ื•ืจื›ื‘ ืœ"ืืกื™ืคื•ืช ืื™ื ื˜ืจื ื˜". ืžื” ืื ื—ื ื• ืฆืจื™ื›ื™ื ื›ื“ื™ ืœืชืคื•ืก ืืช ืžืงื•ืžื ื• ื”ืจืื•ื™ ืฉื ื›ื’ื•ืคืจื™ื?

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

Go ื”ื ื™ื—ื” ื‘ืื•ืคืŸ ืžืกื•ืจืชื™ ืฉื–ื• ืฉืคืช ืชื›ื ื•ืช ืžืขืจื›ืช, ื•ืื™ืŸ ื›ืžืขื˜ ืกืคืจื™ื•ืช ืœืขื‘ื•ื“ื” ืขื ืžืžืฉืง ื”ืžืฉืชืžืฉ. ื™ืฉ ืžืฉื”ื•, ืื‘ืœ ื”ื•ื ื—ืฆื™ ื ื˜ื•ืฉ, ื—ืฆื™ ืœื ืžืชืคืงื“.

ื•ืขื›ืฉื™ื• ื™ืฉ ื”ื–ื“ืžื ื•ืช ื˜ื•ื‘ื” ืœื™ืฆื•ืจ ืกืคืจื™ื•ืช ืžืžืฉืง ืžืฉืชืžืฉ ื‘-Go ืฉื™ืคืขืœื• ืขืœ GopherJS! ืกื•ืฃ ืกื•ืฃ ืชื•ื›ืœ ืœื›ืชื•ื‘ ืžืกื’ืจืช ืžืฉืœืš! ื–ื” ื”ื–ืžืŸ ืฉื‘ื• ืืชื” ื™ื›ื•ืœ ืœื›ืชื•ื‘ ืžืกื’ืจืช, ื•ื”ื™ื ืชื”ื™ื” ืžื”ืจืืฉื•ื ื•ืช ื•ืœืงื‘ืœ ืื™ืžื•ืฅ ืžื•ืงื“ื, ื•ืืชื” ืชื”ื™ื” ื›ื•ื›ื‘ (ืื ื–ื• ืžืกื’ืจืช ื˜ื•ื‘ื”).

ืืชื” ื™ื›ื•ืœ ืœื”ืชืื™ื ื”ืจื‘ื” ื—ื‘ื™ืœื•ืช ืฉื•ื ื•ืช ืฉื›ื‘ืจ ื ืžืฆืื•ืช ื‘ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช ืฉืœ Go ืœืคืจื˜ื™ ื”ื“ืคื“ืคืŸ (ืœื“ื•ื’ืžื”, Template engine). ื”ื ื›ื‘ืจ ื™ืขื‘ื“ื•, ืืชื” ื™ื›ื•ืœ ืœืขืฉื•ืช ื›ืจื™ื›ื•ืช ื ื•ื—ื•ืช ื›ืš ืฉืืชื” ื™ื›ื•ืœ ื‘ืงืœื•ืช ืœืจื ื“ืจ ืืช ื”ืชื•ื›ืŸ ื™ืฉื™ืจื•ืช ื‘ื“ืคื“ืคืŸ. ื‘ื ื•ืกืฃ, ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ, ืœืžืฉืœ, ืฉื™ืจื•ืช ืฉื™ื›ื•ืœ ืœืจื ื“ืจ ืืช ืื•ืชื• ื”ื“ื‘ืจ ื‘ืฉืจืช ื•ื‘ื—ื–ื™ืช ื”ืงืฆื”, ื‘ืืžืฆืขื•ืช ืื•ืชื• ืงื•ื“ - ื›ืœ ืžื” ืฉืžืคืชื—ื™ ืงืฆื” ืื•ื”ื‘ื™ื (ืจืง ืขื›ืฉื™ื• ื‘-Go).

ืืชื” ื™ื›ื•ืœ ืœื›ืชื•ื‘ ืžืฉื—ืง! ืกืชื ื‘ืฉื‘ื™ืœ ื”ื›ื™ืฃโ€ฆ

ื–ื” ื›ืœ ืžื” ืฉืจืฆื™ืชื™ ืœื”ื’ื™ื“.

ืืœื›ืกื™ื™ ื’ืจืฆ'ื‘: ืฆื ืœื—ื–ื™ืช

ืฉืืœื•ืช

ืฉืืœื” (ืœื”ืœืŸ ืฉ'): โ€“ ื”ืื ืื ื™ ื›ื•ืชื‘ ื‘-Go ืื• ื‘-Js?

AG: โ€“ ื›ื•ืชื‘ื™ื ืฉื’ืจื•ืช, ืขืจื•ืฆื™ื, ืžื‘ื ื™ื, ื”ื˜ืžืขื” โ€“ ื”ื›ืœ ื‘ื’ื•... ื ืจืฉืžืช ืœืื™ืจื•ืข, ืžืขื‘ื™ืจ ืฉื ืคื•ื ืงืฆื™ื”.

ื‘ืชื•ืš: - ืื– ืื ื™ ื›ื•ืชื‘ ื‘-Js "ืขื™ืจื•ื"?

AG: โ€“ ืœื, ืืชื” ื›ื•ืชื‘ ื›ืื™ืœื• ื‘-Go ื•ืžืชื—ื‘ืจ ืœ-API ืฉืœ ื”ื“ืคื“ืคืŸ (ื”-API ืœื ื”ืฉืชื ื”). ืืชื” ื™ื›ื•ืœ ืœื›ืชื•ื‘ ื›ืจื™ื›ื•ืช ืžืฉืœืš ื›ืš ืฉื”ื•ื“ืขื•ืช ื™ื™ืฉืœื—ื• ืœืขืจื•ืฅ - ื–ื” ืœื ืงืฉื”.

ื‘ืชื•ืš: - ืžื” ืœื’ื‘ื™ ื ื™ื™ื“?

AG: โ€“ ื‘ื”ื—ืœื˜ ืจืื™ืชื™: ื™ืฉ ื›ืจื™ื›ื•ืช ืœืชื™ืงื•ืŸ ืงื•ืจื“ื•ื‘ื” ืฉ-Js ืžืจื™ืฅ. ื‘-React Native - ืื ื™ ืœื ื™ื•ื“ืข; ืื•ืœื™ ื™ืฉ, ืื•ืœื™ ืœื (ืœื ื”ืชืขื ื™ื™ื ืชื™ ื‘ืžื™ื•ื—ื“). ืžื ื•ืข ื”ืžืฉื—ืง N-go ืชื•ืžืš ื‘ืฉืชื™ ื”ืืคืœื™ืงืฆื™ื•ืช ืœื ื™ื™ื“ - ื’ื ื‘-iOS ื•ื’ื ื‘ืื ื“ืจื•ืื™ื“.

ื‘ืชื•ืš: โ€“ ืฉืืœื” ืœื’ื‘ื™ ืืกืคืช ืื™ื ื˜ืจื ื˜. ื™ื•ืชืจ ื•ื™ื•ืชืจ ืžืงื•ื ื ืชืคืก, ืœืžืจื•ืช ื”ื“ื—ื™ืกื” ื•ื”"ืžื›ื•ื•ืฅ"... ื”ืื ืœื ื ื”ืจื•ื’ ืืช ื”ืขื•ืœื ื”ืคืจื•ื ื˜-ืื ื“ ื‘ืฆื•ืจื” ื›ื–ื• ืขื•ื“ ื™ื•ืชืจ?

AG: โ€“ Web Assembly ื”ื•ื ืคื•ืจืžื˜ ื‘ื™ื ืืจื™, ื•ื‘ื™ื ืืจื™ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืœื ื™ื›ื•ืœ ืœื”ื™ื•ืช ื‘ืžื”ื“ื•ืจื” ื”ืกื•ืคื™ืช ื™ื•ืชืจ ืžื˜ืงืกื˜... ืืชื” ื ืžืฉืš ืœื–ืžืŸ ืจื™ืฆื”, ืื‘ืœ ื–ื” ื–ื”ื” ืœื’ืจื™ืจืช ืกืคืจื™ื™ืช Javascript ื”ืจื’ื™ืœื” ื›ืฉื”ื™ื ืœื ืฉื, ืื– ืื ื—ื ื• ื”ืฉืชืžืฉ ื‘ืงืฆืช Lodash. ืื ื™ ืœื ื™ื•ื“ืข ื›ืžื” ืœื•ื“ืฉ ืœื•ืงื—.

ื‘ืชื•ืš: - ื‘ืจื•ืจ ืฉืคื—ื•ืช ืžื–ืžืŸ ืจื™ืฆื”...

AG: - ื‘-Javascript "ื˜ื”ื•ืจ"?

ื‘ืชื•ืš: - ื›ืŸ. ืื ื• ื“ื•ื—ืกื™ื ืื•ืชื• ืœืคื ื™ ืฉืœื™ื—ืชื•...

AG: - ืื‘ืœ ื–ื” ื˜ืงืกื˜... ื‘ืื•ืคืŸ ื›ืœืœื™, ืžื’ื” ื‘ื™ื™ื˜ ื ืจืื” ื›ืžื• ื”ืจื‘ื”, ืื‘ืœ ื–ื” ื”ื›ืœ (ื™ืฉ ืœืš ืืช ื›ืœ ื–ืžืŸ ื”ืจื™ืฆื”). ืœืื—ืจ ืžื›ืŸ, ืืชื” ื›ื•ืชื‘ ืืช ื”ื”ื™ื’ื™ื•ืŸ ื”ืขืกืงื™ ืฉืœืš, ืืฉืจ ื™ื’ื“ื™ืœ ืืช ื”ื‘ื™ื ืืจื™ ืฉืœืš ื‘-1%. ืขื“ ื›ื” ืื ื™ ืœื ืจื•ืื” ืฉื–ื” ื”ื•ืจื’ ืืช ื”ื—ื–ื™ืช. ื™ืชืจื” ืžื›ืš, Web Assembly ื™ืขื‘ื•ื“ ืžื”ืจ ื™ื•ืชืจ ืž-Javascript ืžื”ืกื™ื‘ื” ื”ื‘ืจื•ืจื” - ืื™ืŸ ืฆื•ืจืš ืœื ืชื— ืื•ืชื•.

ื‘ืชื•ืš: โ€“ ื–ื• ืขื“ื™ื™ืŸ ื ืงื•ื“ื” ืฉื ื•ื™ื” ื‘ืžื—ืœื•ืงืช... ืื™ืŸ ืขื“ื™ื™ืŸ ื™ื™ืฉื•ื ื™ื™ื—ื•ืก ืฉืœ "Vasma" (ืืกืคืช ืื™ื ื˜ืจื ื˜) ื›ืš ืฉื ื™ืชืŸ ืœืฉืคื•ื˜ ื‘ืื•ืคืŸ ื—ื“ ืžืฉืžืขื™. ืžื‘ื—ื™ื ื” ืงื•ื ืกืคื˜ื•ืืœื™ืช, ื›ืŸ: ื›ื•ืœื ื• ืžื‘ื™ื ื™ื ืฉื‘ื™ื ืืจื™ ืฆืจื™ืš ืœื”ื™ื•ืช ืžื”ื™ืจ ื™ื•ืชืจ, ืื‘ืœ ื”ื™ื™ืฉื•ื ื”ื ื•ื›ื—ื™ ืฉืœ ืื•ืชื• V8 ื™ืขื™ืœ ืžืื•ื“.

AG: - ื›ืŸ.

ื‘ืชื•ืš: - ืงื•ืžืคื™ืœืฆื™ื” ืฉื ืขื•ื‘ื“ืช ืžืžืฉ ืžื’ื ื™ื‘ื” ื•ื–ื” ืœื ืขื•ื‘ื“ื” ืฉื™ื”ื™ื” ื™ืชืจื•ืŸ ื’ื“ื•ืœ.

AG: - Web Assembly ื ืขืฉื” ื’ื ืขืœ ื™ื“ื™ ื‘ื—ื•ืจื™ื ื’ื“ื•ืœื™ื.

ื‘ืชื•ืš: โ€“ ื ืจืื” ืœื™ ืฉืขื“ื™ื™ืŸ ืงืฉื” ืœืฉืคื•ื˜ ืืช Web Assembly. ื™ืฉ ืฉื™ื—ื•ืช ื›ื‘ืจ ื”ืจื‘ื” ืฉื ื™ื, ืื‘ืœ ื™ืฉ ืžืขื˜ ื”ื™ืฉื’ื™ื ืืžื™ืชื™ื™ื ืฉืืคืฉืจ ืœื”ืจื’ื™ืฉ.

AG: - ืื•ืœื™. ื ืจืื”.

ื‘ืชื•ืš: โ€“ ืื™ืŸ ืœื ื• ื‘ืขื™ื•ืช ื‘ืงืฆื” ื”ืื—ื•ืจื™... ืื•ืœื™ ื›ื“ืื™ ืœื”ืฉืื™ืจ ืืช ื”ื‘ืขื™ื•ืช ื”ืœืœื• ื‘ืงืฆื” ื”ืงื“ืžื™? ืœืžื” ืœืœื›ืช ืœืฉื?

AG: - ืขืœื™ื ื• ืœืฉืžื•ืจ ืขืœ ืฆื•ื•ืช ืฉืœ ืขื•ื‘ื“ื™ื ื‘ื—ื–ื™ืช.

ื›ืžื” ืžื•ื“ืขื•ืช ๐Ÿ™‚

ืชื•ื“ื” ืฉื ืฉืืจืช ืื™ืชื ื•. ื”ืื ืืชื” ืื•ื”ื‘ ืืช ื”ืžืืžืจื™ื ืฉืœื ื•? ืจื•ืฆื™ื ืœืจืื•ืช ืขื•ื“ ืชื•ื›ืŸ ืžืขื ื™ื™ืŸ? ืชืžื›ื• ื‘ื ื• ืขืœ ื™ื“ื™ ื‘ื™ืฆื•ืข ื”ื–ืžื ื” ืื• ื”ืžืœืฆื” ืœื—ื‘ืจื™ื, Cloud VPS ืœืžืคืชื—ื™ื ื”ื—ืœ ืž-$4.99, ืื ืœื•ื’ื™ ื™ื™ื—ื•ื“ื™ ืฉืœ ืฉืจืชื™ื ื‘ืจืžืช ื”ื›ื ื™ืกื”, ืฉื”ื•ืžืฆื ืขืœ ื™ื“ื™ื ื• ืขื‘ื•ืจื›ื: ื›ืœ ื”ืืžืช ืขืœ VPS (KVM) E5-2697 v3 (6 ืœื™ื‘ื•ืช) 10GB DDR4 480GB SSD 1Gbps ื”ื—ืœ ืž-$19 ืื• ืื™ืš ืœืฉืชืฃ ืฉืจืช? (ื–ืžื™ืŸ ืขื RAID1 ื•-RAID10, ืขื“ 24 ืœื™ื‘ื•ืช ื•ืขื“ 40GB DDR4).

Dell R730xd ื–ื•ืœ ืคื™ 2 ื‘ืžืจื›ื– ื”ื ืชื•ื ื™ื Equinix Tier IV ื‘ืืžืกื˜ืจื“ื? ืจืง ื›ืืŸ 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV ื”ื—ืœ ืž-$199 ื‘ื”ื•ืœื ื“! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ื”ื—ืœ ืž-$99! ืœืงืจื•ื ืขืœ ื›ื™ืฆื“ ืœื‘ื ื•ืช ืชืฉืชื™ื•ืช ืงื•ืจืค. ืžื—ืœืงื” ืขื ืฉื™ืžื•ืฉ ื‘ืฉืจืชื™ Dell R730xd E5-2650 v4 ื‘ืฉื•ื•ื™ 9000 ื™ื•ืจื• ืขื‘ื•ืจ ืื’ื•ืจื”?

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”