V8 Π΄Π²ΠΈΠΆΠΎΠΊ javascript Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ΅Π½
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ V8
V8 β ΡΡΠΎ Π΄Π²ΠΈΠΆΠΎΠΊ JavaScript ΠΎΡ Google, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Chrome. ΠΠ½ Π±ΡΡΡΡΡΠΉ ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠΎΠ΄Π°Ρ (Π‘++) Π΄Π»Ρ Linux (ΡΠΎΡΠ½Π΅Π΅ Π΄Π»Ρ gcc) ΠΈ ΠΏΠΎΠ΄ Windows.
Π ΡΠ²Π΅ΡΠ΅ ΡΠΎΡΡΠ° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ V8 Ρ ΡΠ΅ΡΠΈΠ» ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌ (Π³ΠΎΠ΄ΠΈΡΠ½ΡΠΌ) ΠΎΠΏΡΡΠΎΠΌ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Windows Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ°.
Π§Π°ΡΡΡ 1. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ V8.
β Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°, ΡΠ±ΠΎΡΠΊΠ° ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ
ΠΡΠ°ΠΊ, V8 β Π±ΡΡΡΡΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ JavaScript (ECMA-262) ΠΎΡ Google, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Chrome:
V8 Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠΎΠ΄Π°Ρ ΠΏΠΎ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ BSD:
Π― ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄ MS Visual Studio Express Edition 2008. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎΠ΄ Windows ΠΎΠΏΠΈΡΠ°Π½Π° Π·Π΄Π΅ΡΡ:
ΠΠ°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² PATH ΠΏΡΡΠΈ ΠΊ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠ°ΠΌ python, scons ΠΈ subversion.
Π‘ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΡΠ΅ΠΊΡΡΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ V8 ΠΈΠ· Π²Π΅ΡΠΊΠΈ trunk (ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ):
svn checkout v8.googlecode.com/svn/trunk v8
Π ΠΏΠ°ΠΏΠΊΠ΅ tools\visual studio Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ V8 Π΄Π»Ρ Visual Studio.
Π Π½ΠΈΡ
ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠ·ΡΡΠ°ΡΡ ΠΊΠΎΠ΄, Π½ΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΡ V8 Π»ΡΡΡΠ΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ (ΠΈΠ· ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Π³Π΄Π΅ SConstruct), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ:
scons msvcltcg=off mode=release library=static snapshot=on env=»INCLUDE:C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include;C:\Program Files\Microsoft Visual Studio 9.0\VC\include,LIB:C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib;C:\Program Files\Microsoft Visual Studio 9.0\VC\lib»
(ΠΏΡΡΠΈ ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ MS VS EE 2008).
msvcltcg ΡΡΠΎ Link Time Optimization. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠ΅Π»ΠΈΠ·ΠΎΠ², ΠΈΠ½Π°ΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ v8.lib ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡΡ Π² 3-4 ΡΠ°Π·Π° ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΏΠ°Π΄Π΅Ρ.
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ ΠΌΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ v8.lib, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΊΠΎΡΠΎ ΠΈ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π² ΡΡΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ΅.
ΠΠ΅ΡΠ΅ΠΌ v8.h ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ include ΠΈ v8.lib ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊ ΡΠ²ΠΎΠ΅ΠΌΡ MS Visual Studio 2008 ΠΏΡΠΎΠ΅ΠΊΡΡ.
Π’Π°ΠΊΠΆΠ΅ Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅:
#pragma comment(lib, «ws2_32.lib»)
#pragma comment(lib, «winmm.lib»)
ΠΠ½Π°ΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ΅. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ΅ΠΏΠ΅ΡΡ Π΄Π²ΠΈΠΆΠΎΠΊ V8 Ρ Π½Π°Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΈΠ·ΡΡΠ°ΡΡ Embedder’s Guide
β ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ V8
ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ v8.h ΠΈ ΠΈΠ·ΡΡΠ°Π΅ΠΌ.
V8 ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ²ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ C++ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ (namespace) v8. ΠΡΠ΅ Π²Π°ΠΆΠ½ΡΠ΅ javascript-ΡΡΡΡΠΊΡΡΡΡ ΠΎΠ±Π΅ΡΠ½ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π‘++ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ»Π°ΡΡ v8::Integer ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ (i64) Π² JavaScript.
.
class Context;
class String;
class Value;
class Utils;
class Number;
class Object;
class Array;
class Int32;
class Uint32;
class External;
class Primitive;
class Boolean;
class Integer;
class Function;
class Date;
.
Π‘Π°ΠΌΡΠΉ Π²Π°ΠΆΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ β ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ (v8::Context), ΡΠΎ Π΅ΡΡΡ ΠΌΠ΅ΡΡΠΎ, Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ javascript-ΠΊΠΎΠ΄. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ ΠΆΠ΅ ΠΈ ΠΌΠ΅ΡΡΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° javascript. Π’ΡΡΠ΄Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ v8, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° (Π½ΠΎ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΌΠΎΠΆΠ½ΠΎ).
ΠΠ½ΡΡΡΠΈ ΡΠ΅Π±Ρ V8 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΡΠ΅ΠΊ, Π³Π΄Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ ΡΡΠ΅ΠΊΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ V8. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Β«Π²ΠΎΠΉΡΠΈ Π² Π½Π΅Π³ΠΎΒ». ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ C++ Context::Scope (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π½ΠΈΠΆΠ΅). ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅Ρ Π½Π° Π²Π΅ΡΡΠΈΠ½Π΅ ΡΡΠ΅ΠΊΠ° V8 ΡΡΠ΅ΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ V8 Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. ΠΡΠ·ΠΎΠ² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ° Context::Scope ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΡΠ΅ΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ Π²Π΅ΡΡΠΈΠ½Ρ ΡΡΠ΅ΠΊΠ° V8. ΠΠ° ΡΡΠ΅ΠΊΠ΅ V8 ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΎΡΠ»ΠΎΠ²Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ (TryCatch), ΠΏΡΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΡΠ½Π΄Π»ΠΎΠ² (HandleScope) ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ V8. ΠΡΠ΅ ΠΊΠ»Π°ΡΡΡ C++, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΡΡΡΡΠΎΠ΅Π½Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ: Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π° ΡΡΠ΅ΠΊ V8, Π² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ΅ β ΡΠ±ΠΈΡΠ°Π΅ΠΌ.
V8 (ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±Π°Ρ javascript ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ) ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°, Π·Π°Π½ΠΈΠΌΠ°ΡΡΠΈΠΉΡΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² V8, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΡΡΡΠ»Π°Π΅ΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ V8 ΠΈΠ· C++ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Ρ ΡΠ½Π΄Π»ΠΎΠ² (v8::Handle), ΡΠΎ Π±ΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ. Π£ΠΏΡΠΎΡΠ΅Π½Π½ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΠ°ΠΊ:
Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Ρ
ΡΠ½Π΄Π»Ρ Π² Π²ΠΈΠ΄Π΅ template-ΠΊΠ»Π°ΡΡΠΎΠ² C++: v8::Handle, v8::Local, v8::Persistent.
ΠΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ Ρ
ΡΠ½Π΄Π»Ρ Π΄Π΅Π»ΡΡΡΡ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ (v8::Local) ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠ΅ (v8::Persistent).
ΠΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈ C++ ΡΡΠ΅ΠΊΠΎΠ²ΡΡ
ΠΈ Ρ
ΠΈΠΏΠΎΠ²ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠΎ Π΅ΡΡΡ Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Ρ
Π΅Π½Π΄Π»ΠΎΠ² ΠΏΡΠΈΠ²ΡΠ·Π°Π½ΠΎ ΠΊ ΡΡΠ΅ΠΊΡ, Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠ΅ ΠΆΠΈΠ²ΡΡ ΠΏΠΎΠΊΠ° ΠΈΡ
ΡΠ²Π½ΠΎ Π½Π΅ ΡΠ½ΠΈΡΡΠΎΠΆΠΈΡΡ.
ΠΠ°Π»Π΅Π΅ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ v8 ΠΈ STL (Β«using namespace v8; using namespace std; β).
ΠΡΠ°ΠΊ, Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Ρ ΡΠ½Π΄Π»Ρ V8 (v8::Local). ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ. Π‘ΡΠ°Π²Π½ΠΈΠΌ ΠΈΡ Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΡΠΎ ΡΡΠ΅ΠΊΠΎΠ²ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ C++:
V8 C++
< <
HandleScope handle_scope;
Local a = Integer::New(1); int a = 1;
> >
// a Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ Π΅Π½Π΄Π»ΠΎΠ² V8 ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ HandleScope. ΠΡΠΎ ΡΡΠ΅ΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ V8 Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Ρ ΡΠ°ΠΌΡΡ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ V8. Π£ΠΏΡΠΎΡΠ΅Π½Π½ΠΎ ΡΡΠΎ Π°Π½Π°Π»ΠΎΠ³ Π½Π°ΡΠ°Π»Π° Π±Π»ΠΎΠΊΠ° ΡΡΠ΅ΠΊΠΎΠ²ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ Π΅Π½Π΄Π»Π° Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ HandleScope, ΠΊΠΎΡΠΎΡΡΠΉ Π±Π»ΠΈΠΆΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΊ Π²Π΅ΡΡΠΈΠ½Π΅ ΡΡΠ΅ΠΊΠ° (ΡΡΠ΅ΠΊΠ° V8, ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ). ΠΠ΅Π»ΡΠ·Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Ρ Π΅Π½Π΄Π» Π±Π΅Π· HandleScope!
ΠΡ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Ρ Π΅Π½Π΄Π»Ρ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ C++ Π² ΡΡΡΠΎΠΊΡ V8. ΠΠ»Ρ ΡΡΡΠΎΠΊΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ UTF-8 ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Integer, String, Boolean, Date) ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ New (Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Ρ ΡΠ½Π΄Π»), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ V8 ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π·Π°Π½Π΅ΡΡΠΈ Π² Π½Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· C++. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ (ΡΠΌ. v8.h):
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° Value:
ΠΠ»Π°ΡΡ Value Ρ ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΈΠΏ V8. ΠΡΠΎ ΡΠΎ, Π½Π° ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ javascript: ΡΠΈΡΠ»ΠΎ, ΡΡΡΠΎΠΊΠ°, ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΡΠ½ΠΊΡΠΈΡ, ΠΌΠ°ΡΡΠΈΠ² ΠΈ ΠΏΡ. Value ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΈΠΏΠ° (IsUndefined(), IsNull(), IsString(),IsFunction() ΠΈ ΠΏΡ.). ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Value Π² Π½ΡΠΆΠ½ΡΠΉ ΡΠΈΠΏ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Cast ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠ΅Π³ΠΎ Π½Π°Ρ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Value ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ C++ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ² Integer, String ΠΈ ΠΏΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ:
β ΠΠΎΡΡΠΎΡΠ½Π½ΡΠ΅ Ρ ΡΠ½Π΄Π»Ρ V8
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Ρ ΡΠ½Π΄Π»Ρ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ. ΠΠ½ΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΠΌΠΈΠΌ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² V8.
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ: ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ V8. ΠΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ°ΠΌΠΈ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ΅Π½.
ΠΡΠΎΡΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉ: ΠΎΠ±ΡΠ΅ΠΊΡ V8 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° C++ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Π½ΡΡΡΠΈ ΡΠ΅Π±Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΠΎΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ. Π―ΡΠ½ΠΎ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ° Π²Π΄ΡΡΠ³ ΡΠ΅ΡΠΈΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ V8, ΡΠΎ ΠΌΡ ΠΏΠΎΡΠ΅ΡΡΠ΅ΠΌ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ C++ ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΡΡΠ΅ΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ V8 ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π»ΠΈΡΡ! ΠΠ°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ.
ΠΡΠ΅ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ Ρ ΡΠ½Π΄Π»ΠΎΠ² V8 (Persistent).
Π― ΠΏΡΠΈΠ²Π΅Π΄Ρ ΠΎΠΏΡΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ V8 ΠΈ Π°Π½Π°Π»ΠΎΠ³ (Π² ΡΠΌΡΡΠ»Π΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ) ΠΊΠΎΠ΄Π° Π½Π° C++.
Persistent p; int *p = 0;
< <
HandleScope handle_scope;
Local a = Integer::New(1); int a = 1;
p = Persistent ::New(a); p = new int (a);
> >
Persistent q = p; int * q = p;
p.Dispose(); delete p;
p.Clear(); p = 0;
ΠΡΠ°ΠΊ, ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ Ρ ΡΠ½Π΄Π»Π° (ΠΈΠ· Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ) β ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Π° Persistent::New(). Context ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈ ΡΠ²ΠΎΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ (New) ΡΡΠ°Π·Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΉ Ρ ΡΠ½Π΄Π». ΠΠ°Π΄Π΅ΡΡΡ, Π²ΡΠ΅ΠΌ ΡΠΆΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ β ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ ΡΠ°ΠΊ Π΄Π΅Π»Π°Π΅Ρ.
ΠΠΎΠΏΡΠΎΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΏΡΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ Ρ ΡΠ½Π΄Π»ΠΎΠ² ΠΌΡ ΠΎΡΠ»ΠΎΠΆΠΈΠΌ, Π° ΠΏΠΎΠΊΠ° ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠΎΠΎΡΡΠ΄ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΡ ΡΠ°Π±ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ javascript.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠ° String V8 Π² C++ ΠΊΠΎΠ΄. ΠΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ β ΠΊΠ»Π°ΡΡΠΎΠΌ String::AsciiValue.
Π€ΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ javascript-ΠΊΠΎΠ΄, Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
string v8_exec( const char * javascript)
<
HandleScope handle_scope; // ΡΡΠ΅ΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΡΠ½Π΄Π»ΠΎΠ²
Persistent context = Context::New(); // ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΉ Ρ ΡΠ½Π΄Π»
Context::Scope context_scope(context); // ΡΡΠ΅ΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ «Π²Ρ ΠΎΠ΄Π°» Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ; Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
TryCatch try_catch; // ΡΡΠ΅ΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ ΠΎΡΠ»ΠΎΠ²Π° javascript-ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ
Local String > source = String ::New(javascript); // ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΡΡΡΠΎΠΊΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π² ΡΡΡΠΎΠΊΡ V8
Local
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ JS: ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ V8 ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°
ΠΠ΅ΡΠ΅Π΄ Π²Π°ΠΌΠΈ β Π²ΡΠΎΡΠΎΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΈΠ· ΡΠ΅ΡΠΈΠΈ, ΠΏΠΎΡΠ²ΡΡΡΠ½Π½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΠΌ ΡΠ°Π±ΠΎΡΡ JavaScript Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄Π²ΠΈΠΆΠΊΠ° V8. Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»Π° ΡΠ΅ΡΡ ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ V8 ΠΈ ΠΎ ΡΡΠ΅ΠΊΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ². Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΡΠ³Π»ΡΠ±ΠΈΠΌΡΡ Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ V8, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° JS ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΠΌΡΡ ΡΠΎΠ²Π΅ΡΠ°ΠΌΠΈ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°.
Π JS-Π΄Π²ΠΈΠΆΠΊΠ°Ρ
JavaScript-Π΄Π²ΠΈΠΆΠΎΠΊ β ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΈΠ»ΠΈ, Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° JavaScript. ΠΠ²ΠΈΠΆΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ²: Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°, Π² Π²ΠΈΠ΄Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° (ΠΈΠ»ΠΈ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°), ΠΊΠΎΡΠΎΡΡΠΉ, ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° JS Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°.
ΠΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ JavaScript-Π΄Π²ΠΈΠΆΠΊΠΎΠ².
ΠΠΎΡΠ΅ΠΌΡ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Π΄Π²ΠΈΠΆΠΎΠΊ V8?
ΠΠ²ΠΈΠΆΠΎΠΊ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ V8 Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Google, ΠΎΠ½ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C++. ΠΠ²ΠΈΠΆΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Google Chrome. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅Ρ V8 ΠΎΡ Π΄ΡΡΠ³ΠΈΡ
Π΄Π²ΠΈΠΆΠΊΠΎΠ², ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ Node.js.
ΠΠΎΠ³ΠΎΡΠΈΠΏ V8
ΠΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ V8 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π·Π°Π΄Π°Π»ΠΈΡΡ ΡΠ΅Π»ΡΡ ΡΠ»ΡΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ JavaScript Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ . ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, V8 ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅Ρ JS-ΠΊΠΎΠ΄ Π² Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ. ΠΠ²ΠΈΠΆΠΎΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ JavaScript-ΠΊΠΎΠ΄ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² Ρ ΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ JavaScript-Π΄Π²ΠΈΠΆΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, SpiderMonkey ΠΈ Rhino (Mozilla). ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ V8 Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ JS-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ΄.
Π Π΄Π²ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ Π² V8
ΠΠ½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ V8 ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ Ρ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ Π²Π΅ΡΡΠΈΠΈ 5.9, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅Π΄Π°Π²Π½ΠΎ. ΠΠΎ ΡΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°:
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° ΡΠΎΠ±Π΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠ³Π»Π° ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ.
ΠΠ°Π»Π΅Π΅, Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Crankshaft. ΠΠ½ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ JavaScript Π² Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π΅ ΠΌΠΎΠ΄Π΅Π»Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ (static single-assignment, SSA). ΠΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Hydrogen. ΠΠ°ΡΠ΅ΠΌ Crankshaft ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π³ΡΠ°Ρ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Hydrogen. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π° ΡΡΠΎΠΌ ΡΡΠΎΠ²Π½Π΅.
ΠΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
ΠΠ΅ΡΠ²Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π·Π°Π±Π»Π°Π³ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΠΈ Π² ΠΌΠ΅ΡΡΠ° Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΡΠΌΠ° ΠΊΠΎΠ΄Π°. ΠΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° β ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°ΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ (ΡΡΡΠΎΠΊΠΈ, Π³Π΄Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ) Π½Π° Π΅Ρ ΡΠ΅Π»ΠΎ. ΠΡΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ°Π³ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΈΠ²Π½ΡΠΌΠΈ.
ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° Π΅Ρ ΡΠ΅Π»ΠΎ
Π‘ΠΊΡΡΡΡΠ΅ ΠΊΠ»Π°ΡΡΡ
JavaScript β ΡΡΠΎ ΡΠ·ΡΠΊ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°Ρ : Π·Π΄Π΅ΡΡ Π½Π΅Ρ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠ±ΡΠ΅ΠΊΡΡ Π·Π΄Π΅ΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, JS β ΡΡΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊ Π½Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΠΈΠ· Π½Π΅Π³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅.
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ JS-ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΠΈ (ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΉ), Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎ ΠΌΠ΅ΡΡΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π΅Π»Π°Π΅Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ²ΠΎΠΉΡΡΠ² Π² JavaScript Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ, ΡΠ΅ΠΌ Π² Π½Π΅Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ Java ΠΈ C#. Π Java, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠ΅ΠΉΡΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡ Π΅ΠΌΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈΡ Π½Π΅Π»ΡΠ·Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΡΡ (Π½Π°Π΄ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² C# Π΅ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΏ, Π½ΠΎ ΡΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ°ΡΡ Π½Π° ΡΡΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅). ΠΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² (ΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°) ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ, Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π² Π²ΠΈΠ΄Π΅ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ. Π¨Π°Π³ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΡΠΈΠΏΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π² JavaScript ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΈΠΏ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ Π΄Π»Ρ Π²ΡΡΡΠ½Π΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ² ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΎΡΠ΅Π½Ρ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, V8 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄: ΡΠΊΡΡΡΡΠ΅ ΠΊΠ»Π°ΡΡΡ. Π‘ΠΊΡΡΡΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π² ΡΠΈΠΏΠΈΡΠ½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΡΠΎΠ΄Π΅ Java, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΠ½ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π²ΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
ΠΠΎΠΊΠ°, Π΅ΡΡ Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Point Π½Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠ»Π°ΡΡ C0 ΠΏΡΡΡ.
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, Π² ΡΡΠ°ΡΡΠΉ ΡΠΊΡΡΡΡΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π΅ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ ΡΠΊΡΡΡΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ. ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΡΡΡΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Π²Π°ΠΆΠ½Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΡΠΊΡΡΡΡΠ΅ ΠΊΠ»Π°ΡΡΡ. ΠΡΠ»ΠΈ Π΄Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠΈΠΉ ΡΠΊΡΡΡΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈ ΠΊ Π½ΠΈΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ°Ρ ΡΠΎ, ΡΡΠΎ ΠΎΠ±Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠ²ΡΠΉ ΡΠΊΡΡΡΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈ Π²Π΅ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ΄ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½ΠΈΠΌ.
ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° C2 ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° y
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΡΡΡΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΏΠΎΡΡΠ΄ΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΊΡΡΠΈ
V8 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈ Π΄ΡΡΠ³ΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΡ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ², Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ ΠΊΡΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠ². ΠΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΎ Π½Π° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π·Π΄Π΅ΡΡ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π² ΡΡΠΎ ΡΠ³Π»ΡΠ±Π»ΡΡΡΡΡ, ΡΠΈΡΠ°Ρ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π», Π·Π΄Π΅ΡΡ ΠΌΡ ΠΈΠ·Π»ΠΎΠΆΠΈΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ Π² Π΄Π²ΡΡ ΡΠ»ΠΎΠ²Π°Ρ .
ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΆΠ΅ Π²ΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ? V8 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΊΡΡ ΡΠΈΠΏΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π½Π΅Π΄Π°Π²Π½ΠΎ Π²ΡΠ·Π²Π°Π½Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΈΠΏΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ. ΠΡΠ»ΠΈ V8 ΡΠΌΠΎΠ³ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΈΠΏΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π²ΡΡΡΠ½Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π°, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡ ΡΠ°Π½ΡΠ½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΡΠΊΡΡΡΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ°ΠΊ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΎΠ±ΡΠΈΠ΅ ΡΠΊΡΡΡΡΠ΅ ΠΊΠ»Π°ΡΡΡ. ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°ΡΡΠ΅ Π΄Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π½ΠΎ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΊΡΡΡΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ (ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅), V8 Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ, Π΄Π°ΠΆΠ΅ Ρ ΠΎΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠΏ, Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΈΠΌ ΡΠΊΡΡΡΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ ΡΠ°Π·Π½ΠΎΠ΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ.
ΠΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π½ΠΎ ΠΈΡ
ΡΠ²ΠΎΠΉΡΡΠ²Π° a ΠΈ b Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ Π² ΡΠ°Π·Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΠΎΠ΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π³ΡΠ°Ρ Hydrogen ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½, Crankshaft ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ Π΅Π³ΠΎ Π² Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Lithium. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Lithium Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ° ΡΡΠΎΠΌ ΡΡΠΎΠ²Π½Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ².
Π ΠΈΡΠΎΠ³Π΅ Lithium-ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΠ°ΡΠ΅ΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎ, ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π² ΡΡΠ΅ΠΊΠ΅ (on-stack replacement, OSR). ΠΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠ΅ΠΉ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠ°ΡΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΈΡ Π½Π΅ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ. ΠΠ°ΡΠ΅ΠΌ, Π½Π΅ ΠΏΡΠ΅ΡΡΠ²Π°Ρ ΡΠ°Π±ΠΎΡΡ, V8 ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ (ΡΡΠ΅ΠΊ, ΡΠ΅Π³ΠΈΡΡΡΡ) ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠ΄Π°. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ°, ΡΡΠΈΡΡΠ²Π°Ρ ΡΠΎ, ΡΡΠΎ ΠΏΠΎΠΌΠΈΠΌΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ, V8 ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. V8 β Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΠΉ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
ΠΠ°ΠΊ Π±ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠΉ? ΠΡ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ Π·Π°ΡΠΈΡΠ° β ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ Π΄Π΅ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ. ΠΠ½Π° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π° Π½Π° ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ Π΄Π²ΠΈΠΆΠΊΠΎΠΌ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
Π‘Π±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ°
ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ° V8 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ Π³Π΅Π½Π΅Π°Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Β«ΠΏΠΎΠΌΠ΅ΡΡ ΠΈ Π²ΡΠ±ΡΠΎΡΠΈΒ» (mark-and-sweep) Π΄Π»Ρ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΠΎΡΠΈΡΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π°. Π€Π°Π·Π° ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ JavaScript. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ° ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΌ, V8 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ: Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡ Π²ΡΡ ΠΊΡΡΡ, ΠΎΠ½ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠΈΡΡ Π²ΡΡ, ΡΡΠΎ ΡΠΌΠΎΠΆΠ΅Ρ, ΠΎΠ±Ρ ΠΎΠ΄Ρ Π»ΠΈΡΡ ΡΠ°ΡΡΡ ΠΊΡΡΠΈ. ΠΠ°ΡΠ΅ΠΌ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΎΡ ΠΎΠ΄ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ° ΠΏΠΎ ΠΊΡΡΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠ°ΠΌ, Π³Π΄Π΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΊΠΎΡΠΎΡΠΊΠΈΡ ΠΏΠ°ΡΠ· Π² Ρ ΠΎΠ΄Π΅ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΊ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΠ°Π·ΠΎΠΉ ΠΎΡΠΈΡΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ.
Ignition ΠΈ TurboFan
Π‘ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ Π² ΡΡΠΎΠΌ Π³ΠΎΠ΄Ρ V8 Π²Π΅ΡΡΠΈΠΈ 5.9. Π±ΡΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΈ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΡΠΎΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΡΡΠΈΡΡ Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΡΠΈΡΡΠΌ, Π½Π΅ Π² ΡΠ΅ΡΡΠ°Ρ , Π° Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ JavaScript-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .
ΠΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π½Π° Π±Π°Π·Π΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Ingnition ΠΈ Π½ΠΎΠ²Π΅ΠΉΡΠ΅Π³ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° TurboFan. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎΠ± ΡΡΠΈΡ Π½ΠΎΠ²ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°Ρ V8 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π² ΡΡΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅.
Π‘ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ V8 5.9 full-codegen ΠΈ Crankshaft (ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ Π² V8 Ρ 2010-Π³ΠΎ Π³ΠΎΠ΄Π°) Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ. ΠΠΎΠΌΠ°Π½Π΄Π° V8 ΡΠ°Π·Π²ΠΈΠ²Π°Π΅Ρ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°, ΡΡΠ°ΡΠ°ΡΡΡ Π½Π΅ ΠΎΡΡΡΠ°ΡΡ ΠΎΡ Π½ΠΎΠ²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ JavaScript ΠΈ Π²Π½Π΅Π΄ΡΠΈΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ. ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° Π½ΠΎΠ²ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΠΎΡΠΊΠ°Π· ΠΎΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠ°ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ V8 Π² ΡΡΠΎΡΠΎΠ½Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ Ρ ΠΎΡΠΎΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ.
Π£Π»ΡΡΡΠ΅Π½ΠΈΡ Π² ΡΠ΅ΡΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ JS
ΠΡΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ β Π»ΠΈΡΡ Π½Π°ΡΠ°Π»ΠΎ. ΠΠΎΠ²ΡΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Ignition ΠΈ TurboFan ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΠΏΡΡΡ ΠΊ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»ΡΡΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ JavaScript ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ V8 ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ½Π΅Π΅.
ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ V8, Π° ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ²Π΅ΡΠΎΠ² ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΊΡΡΠ°ΡΠΈ, Π²ΡΡ ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ ΠΈΠ· ΡΠΎΠ³ΠΎ, ΠΎ ΡΡΠΌ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ Π²ΡΡΠ΅.
ΠΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ JavaScript-ΠΊΠΎΠ΄Π° Π΄Π»Ρ V8
ΠΡΠΎΠ³ΠΈ
ΠΡ, Π² SessionStack, ΡΡΠ°ΡΠ°Π΅ΠΌΡΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π²ΡΡΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ JS-ΠΊΠΎΠ΄Π°. ΠΠ°Π΄Π΅Π΅ΠΌΡΡ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°Π²ΡΠΈΡΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ V8, ΠΈ ΡΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΡΠ°ΡΡΠΊΠ°Π·Π°Π»ΠΈ Π²ΡΡΠ΅, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ»ΡΡΡΠΈΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
Π£Π²Π°ΠΆΠ°Π΅ΠΌΡΠ΅ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ! ΠΠ°ΠΊΠΈΠΌΠΈ ΡΠΎΠ²Π΅ΡΠ°ΠΌΠΈ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ JS-ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π²Ρ?
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Node.js, ΡΠ°ΡΡΡ 2: JavaScript, V8, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
ΠΡΠ±Π»ΠΈΠΊΡΡ ΠΏΠ΅ΡΠ²ΡΡ ΡΠ°ΡΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ Node.js, ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠ·Π½Π°ΡΡ ΠΌΠ½Π΅Π½ΠΈΠ΅ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠΈΡ Π»ΠΈ Π½Π°ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, ΠΈ ΠΏΡΠΎΠ²Π΅Π»ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠΏΡΠΎΡ. ΠΠ°ΠΊ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ, Π½Π°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π»ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 94% ΠΏΡΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π²ΡΠΈΡ . ΠΠΎΡΡΠΎΠΌΡ Π²ΡΡΡΠ΅ΡΠ°ΠΉΡΠ΅ Π²ΡΠΎΡΡΡ ΡΠ°ΡΡΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ Node.js.
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠΌΠΈ Π·Π½Π°Π½ΠΈΡΠΌΠΈ Π² ΠΎΠ±Π»Π°ΡΡΠΈ JS Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Node.js, ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΠ°Π·Π»ΠΈΡΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ JavaScript-ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ JS-Π΄Π²ΠΈΠΆΠΊΠ°Ρ ΠΈ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΡΠΌΠ°Ρ Node.js-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΠ°ΠΊΠΈΠΌΠΈ JS-Π·Π½Π°Π½ΠΈΡΠΌΠΈ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π΄Π»Ρ Node.js-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ?
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ°Π»ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π³Π»ΡΠ±ΠΎΠΊΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΡΡΠΈΡΡ JavaScript Π΄Π»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΡ Node.js? ΠΠ°ΡΠΈΠ½Π°ΡΡΠ΅ΠΌΡ ΡΡΡΠ΄Π½ΠΎ Π΄ΠΎΡΡΠΈΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡ Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π½Π°Π²ΡΠΊΠ°Ρ . Π ΡΠΎΠΌΡ ΠΆΠ΅, ΠΈΠ·ΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ ΡΠΎΡΠ½ΠΎ, Π³Π΄Π΅ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΡΠΉ JavaScript ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π»Ρ Node.js.
ΠΡΠ»ΠΈ Π²Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π² ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ ΠΏΡΡΠΈ JavaScript-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, Ρ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π» Π±Ρ Π²Π°ΠΌ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠΈΡΠ°ΡΡ Π΄Π»Ρ Node.js, Ρ ΠΎΡΠΎΡΠΎ ΠΎΡΠ²ΠΎΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΠ·ΡΠΊΠ°:
ΠΡΡΠ΅ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡ Π²ΠΎΠΏΡΠΎΡ ΠΎ ΡΠΎΠΌ, Π³Π΄Π΅ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π½Π° JavaScript. ΠΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎΠ± ΡΡΠΎΠΌ.
Π Π°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Node.js ΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ
Π§Π΅ΠΌ JS-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π»Ρ Node.js ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ? Π‘Ρ ΠΎΠ΄ΡΡΠ²ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ ΡΡΠ΅Π΄Π°ΠΌΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈ ΡΠ°ΠΌ ΠΈ ΡΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ·ΡΠΊ. ΠΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°ΡΡΡΠΈΡΠ°Π½Π½ΡΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, ΠΎΡΠ΅Π½Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ·ΡΠΊΠ°, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ Π΄Π²Π° ΡΡΠΈ Π²ΠΈΠ΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π² ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ°Π·Π½ΡΠ΅ Π·Π°Π½ΡΡΠΈΡ.
ΠΠ°Π΄ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΠΎΡ, ΠΊΡΠΎ ΡΠ°Π½ΡΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π»ΡΡ ΡΡΠΎΠ½ΡΠ΅Π½Π΄ΠΎΠΌ, Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΈΠ·ΡΡΠ°ΡΡ Node.js, Ρ Π½Π΅Π³ΠΎ ΠΈΠΌΠ΅Π΅ΡΡΡ Π²Π΅ΡΡΠΌΠ° ΡΠ΅ΡΡΡΠ·Π½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΡΡΡΡΠΎ ΠΎΡΠ²ΠΎΠΈΡΡ Π²ΡΡ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π½Π° ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΌ Π΅ΠΌΡ ΡΠ·ΡΠΊΠ΅. ΠΡΠ»ΠΈ ΠΊ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΡΠ²ΠΎΠΈΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠ΅Π΄Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π΅ΡΡ ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΠ·ΡΡΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ, Π·Π°Π΄Π°ΡΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅ΡΡΡ.
ΠΡΠ°ΠΊ Π³Π»Π°Π²Π½ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ, Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°Ρ
ΡΡΠΈΡ
ΡΡΠ΅Π΄.
Π Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π½Π΅Ρ ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ Π² ΡΡΠ΅Π΄Π΅ Node.js ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ API Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΡΡ ΠΎΠ΄Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π½Π° JS Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π² ΡΡΠ΅Π΄Π΅ Node.js ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½ΠΎ Π³Π΄Π΅ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π²Ρ ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π΅ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Node.js Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π³Π΄Π΅ Π²Π°ΡΠ΅ΠΌΡ ΠΊΠΎΠ΄Ρ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΈΠΌΠ΅ΡΡΠ΅ΠΌΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅, Π½Π΅ ΠΎΠΏΠ°ΡΠ°ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½ΠΎΠ²Π΅ΠΉΡΠΈΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΡΠ·ΡΠΊΠ°.
Π’Π°ΠΊ ΠΊΠ°ΠΊ JavaScript ΠΊΡΠ°ΠΉΠ½Π΅ Π±ΡΡΡΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ, Π±ΡΠ°ΡΠ·Π΅ΡΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΡΡΠΏΠ΅Π²Π°ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π΅Π³ΠΎ Π½ΠΎΠ²ΡΠ΅ΡΡΠ²Π°. Π ΡΠΎΠΌΡ ΠΆΠ΅, Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΡΠ°ΠΌΡΡ ΡΠ²Π΅ΠΆΠΈΡ Π²Π΅ΡΡΠΈΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ². Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ ΡΡΠΎ-ΡΠΎ Π½ΠΎΠ²ΠΎΠ΅, Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ ΡΡΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ, Π·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ»ΠΈΡΡΡΡ Π² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΎΡΠΊΠ°Π·Π° ΠΎΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ JavaScript. ΠΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² ΡΠΎΡΠΌΠ°Ρ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ EcmaScript 5, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΡ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ°Π½ΡΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Babel, Π½ΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Node.js Π²Π°ΠΌ ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ.
V8 ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ JavaScript-Π΄Π²ΠΈΠΆΠΊΠΈ
V8 β ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ JavaScript-Π΄Π²ΠΈΠΆΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Google Chrome. ΠΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ JavaScript-ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅. V8 ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π»Ρ JavaScript. DOM ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ API Π²Π΅Π±-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ.
JS-Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌ ΠΎΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ ΡΠ°ΠΊΡ ΡΠ΄Π΅Π»Π°Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Node.js. V8 Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄Π²ΠΈΠΆΠΊΠ° Π΄Π»Ρ Node.js Π² 2009 Π³ΠΎΠ΄Ρ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΡΠΌΠΎ-ΡΠ°ΠΊΠΈ Π²Π·ΡΡΠ²Π½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ Node.js V8 ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π΄Π²ΠΈΠΆΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π½Π°ΡΠΈ Π΄Π½ΠΈ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ JS-ΠΊΠΎΠ΄Π°.
ΠΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° Node.js ΠΎΠ³ΡΠΎΠΌΠ½Π°. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ V8 ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Electron, ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ°Π΄ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ, ΠΏΠΎΠΌΠΈΠΌΠΎ V8, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ:
ΠΡΠΈ Π΄Π²ΠΈΠΆΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ECMA-262, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ Π΅ΡΡ ECMAScript. ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΡΠ΅Ρ JavaScript. Π‘Π²Π΅ΠΆΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π·Π΄Π΅ΡΡ.
βΠ Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° JS-Π΄Π²ΠΈΠΆΠΊΠΎΠ² ΠΈ ΡΡΡΠ΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
ΠΠ²ΠΈΠΆΠΎΠΊ V8 Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C++, Π΅Π³ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ»ΡΡΡΠ°ΡΡ. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π½Π° Mac, Windows ΠΈ Linux. ΠΠ΄Π΅ΡΡ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ Π΄Π΅ΡΠ°Π»ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ V8. Π‘Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΡ , Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ β Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ V8. ΠΠ½ΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΌΠ΅Π½ΡΡΡΡΡ, ΠΈΠ½ΠΎΠ³Π΄Π° β ΠΎΡΠ΅Π½Ρ ΡΠ΅ΡΡΡΠ·Π½ΠΎ.
V8 ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ, ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈ ΠΎ Π΄ΡΡΠ³ΠΈΡ Π΄Π²ΠΈΠΆΠΊΠ°Ρ . ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΊ ΡΠΎΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Node.js. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ Π΄Π²ΠΈΠΆΠΊΠΎΠ² Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠΎΡΠ΅Π²Π½ΡΡΡΡΡ, Π±ΠΎΡΡΡΡ Π·Π° ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ ΡΡΠΎ ΡΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π³ΠΎΠ΄Ρ. ΠΡΡ ΡΡΠΎ ΠΈΠ΄ΡΡ Π½Π° ΠΏΠΎΠ»ΡΠ·Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ.
βΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ
JavaScript ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ, Π½ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ JS-ΠΊΠΎΠ΄Π°. ΠΠ½ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡ. ΠΡΠΎ Π²Π΅ΡΠ½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ Ρ 2009-Π³ΠΎ Π³ΠΎΠ΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ JavaScript Π±ΡΠ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² Firefox 3.5, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ Π΄Π²ΠΈΠΆΠΊΠΎΠ² ΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π½ΡΠ»ΠΈ ΡΡΡ ΠΈΠ΄Π΅Ρ.
V8 Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ JavaScript Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°. Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Google Maps Π² 2004-ΠΌ Π³ΠΎΠ΄Ρ JavaScript ΡΠ²ΠΎΠ»ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π», ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ»ΡΡ ΠΈΠ· ΡΠ·ΡΠΊΠ°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ, Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΈΡΠ°Π»ΠΈ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΡΡΠΎΠΊ, Π² ΡΠ·ΡΠΊ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΈΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ· ΡΡΡΡΡ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΠΎΡΠ΅Π½ ΡΡΡΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°. Π’Π°ΠΊΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΡΠ°ΡΠ°ΠΌΠΈ, ΡΡΠΎ ΡΠ΅ΡΡΡΠ·Π½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΡΠ°ΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ JS, ΠΊΠΎΠ΄ Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠ³ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π»ΠΈΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ , Π²Π²ΠΎΠ΄ΠΈΠΌΡΡ Π² ΡΠΎΡΠΌΡ. Π ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΊΠΎΠ΄Π° ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΉ ΡΠΌΡΡΠ», ΡΠ°ΠΊ ΠΊΠ°ΠΊ, Ρ ΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ°Π³Π° ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΎΠΆΠΈΡΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ, ΡΠ΅ΠΌ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΡΡ Π±Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π»ΡΡ Π±Ρ Π±ΡΡΡΡΠ΅Π΅, Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π» Π±Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΎΠ±ΡΡΠ΄ΠΈΠ² Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠ°ΡΠ°ΡΡΠΈΠ΅ΡΡ JS-Π΄Π²ΠΈΠΆΠΊΠΎΠ², ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅. Π ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π·Π°Π²Π΅ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Node.js-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΡ ΠΎΠ΄ ΠΈΠ· Node.js-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Node.js-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠΎΠ΄ΡΠ»Ρ ΡΠ΄ΡΠ° process ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· Node.js-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ³Π»ΡΠ΄ΠΈΡ ΡΡΠΎ ΡΠ°ΠΊ:
ΠΡΠ»ΠΈ Π²Π°Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π΅Π» ΡΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ β ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ. ΠΡΠΈ Π΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅ΠΌΡ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΠΎΡΠΏΡΠΈΠ½ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ. ΠΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠ΄Ρ Π²ΡΡ
ΠΎΠ΄Π° ΠΈΠΌΠ΅ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡ
Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°Π»Π°Π΄ΠΈΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΎΠ΄Π½ΠΈΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎ ΠΊΠΎΠ΄Π°Ρ
Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π·Π΄Π΅ΡΡ.
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ, Node.js Π²Π΅ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΠΎΡ ΠΊΠΎΠ΄.
ΠΠ°Π΄ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π²ΡΠ΅ Π·Π°Π΄Π°Π½Π½ΡΠ΅ Π² Π½Π΅ΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Ρ Node.js ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅, Π² ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ , ΡΠ°ΡΡΡΠΈΡΠ°Π½Ρ Π½Π° ΡΠ°Π±ΠΎΡΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π Π΅ΡΡ ΠΈΠ΄ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ± HTTP-ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ , ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ°ΠΊΠΎΠΌΡ:
ΠΠ»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ SIGTERM ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Β«ΡΠΈΠ³Π½Π°Π»ΡΒ»? Π‘ΠΈΠ³Π½Π°Π»Ρ β ΡΡΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ POSIX (Portable Operating System Interface). ΠΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ, ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ Π΅ΠΌΡ ΠΎ Π½Π΅ΠΊΠΈΡ ΡΠΎΠ±ΡΡΠΈΡΡ .
ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΠ³Π½Π°Π» ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΈΠ· ΡΠ°ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
ΠΠ»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ PID ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ Π·Π°Π²Π΅ΡΡΠΈΡΡ.
Π§ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Node.js
ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΡΠ΅Π΄Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΡΠ΅ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π²Π°ΠΌΠΈ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ.
ΠΡΠΎΠ³ΠΈ
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΠΊΠΎΡΠ½ΡΠ»ΠΈΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° JavaScript, ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ JS-Π΄Π²ΠΈΠΆΠΊΠ°Ρ , ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π·Π°Π²Π΅ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΈΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄Ρ ΠΈΠ· Node.js-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π· ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎ Ρ ΠΎΡΡΠΈΠ½Π³Π°Ρ Π΄Π»Ρ Node.js-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Node.js Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ REPL, ΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠΊΡΠΈΠΏΡΠ°ΠΌ ΠΏΡΠΈ ΠΈΡ Π²ΡΠ·ΠΎΠ²Π΅, ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΡΡ, ΠΈ ΠΎΠ± ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² Π²ΠΈΠ΄Π΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.
Π£Π²Π°ΠΆΠ°Π΅ΠΌΡΠ΅ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ! ΠΠ°ΠΊΠΈΠ΅ ΡΡΠ΅Π±Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΏΠΎ JavaScript Π²Ρ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π»ΠΈ Π±Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΌ?