ΡΠ΅Π»ΠΈΠ· ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ , Π²ΠΊΠ»ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠΈΠΌΡΠ½Π½ΡΠΉ ΠΌΡΠ»ΡΡΠΈΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ΅Π½Π½ΡΠΉ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎ ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΠΊΡΠΎΡΡ-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΎΠ΅ΠΊΡΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ Π² Π‘++, HashLink/C, JavaScript, C#, Java, PHP, Python ΠΈ Lua, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ JVM, HashLink/JIT, Flash ΠΈ Neko, Ρ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ ΡΠΎΠ΄Π½ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GPLv2, Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡΡ Π΄Π»Ρ Haxe Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½ ΠΈ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ MIT.
Π―Π·ΡΠΊ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΈΡΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ, ΠΎΠ±ΠΎΠ±ΡΡΠ½Π½ΠΎΠ³ΠΎ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Haxe Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ECMAScript ΠΈ Π΅Π³ΠΎ ΡΠ°ΠΊΠΈΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, Π°Π²ΡΠΎΠ²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ², ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°Ρ ΡΠΈΠΊΠ» Β«forΒ», AST-ΠΌΠ°ΠΊΡΠΎΡΡ, GADT (Generalized Algebraic Data Types), Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΡΠΈΠΏΡ, Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΡΠΏΡΠΎΡΡΠ½Π½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΠΊ ΠΏΠΎΠ»ΡΠΌ, ΠΊΠ»Π°ΡΡΠ°ΠΌ ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ, ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΡ ΡΡΡΠΎΠΊ (Β«βMy name is $name'Β»), ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠΏΠΎΠ² (βnew Main<String>(Β«fooΒ»)β) ΠΈ .
class Test {
static function main() {
final people = [
Β«ElizabethΒ» => Β«ProgrammingΒ»,
Β«JoelΒ» => Β«DesignΒ»
];
for (name => job in people) {
trace(β$name does $job for a living!β);
}
}
}
ΠΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΈ 4.1:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Ρ Π²ΠΎΡΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ API Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
- Π Π°Π·ΡΠ΅ΡΠ΅Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Β«try {} catch(e) {}Β» ΠΊΠ°ΠΊ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Β«try {} catch(e: haxe.Exception) {}Β».
- Π ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ eval Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° SSL.
- Π¦Π΅Π»Π΅Π²Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° JVM Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠΉ.
- ΠΠ»Ρ Language Server Protocol Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΉ Β«Goto ImplementationΒ» ΠΈ Β«Find referencesΒ».
- Π£Π»ΡΡΡΠ΅Π½ΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. Π£Π΄Π°Π»Π΅Π½Ρ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΠ΅ Β«return;Β» Π² ΡΡΡΠ΅Π»ΠΎΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ Π±Π΅Π· Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
- Π ΠΏΠΎΠ»ΡΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° (get, default) (ΡΠΎΠ»ΡΠΊΠΎ Π³Π΅ΡΡΠ΅Ρ, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ).
- Π Π°Π·ΡΠ΅ΡΠ΅Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ° ΠΈ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΏΠΎΠ»Π΅ΠΉ .
- Π£Π»ΡΡΡΠ΅Π½ΠΎ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΠ΅ (inlining) for-ΡΠΈΠΊΠ»ΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ².
- js: Π£Π»ΡΡΡΠ΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ StringMap Π΄Π»Ρ ES5.
- js: Π ΠΎΠΏΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Β«-D js-es=6Β» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ let ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΡΠ»ΡΡΡΠ΅Π½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ES6 ΠΊΠ»Π°ΡΡΠΎΠ².
- lua: ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Β«StringIteratorΒ», ΡΠ»ΡΡΡΠ΅Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ.
- php: ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Β«Std.isOfTypeΒ» Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠΈΠΏΠΎΠ².
- php: Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ Π½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Β«IteratorΒ», Β«IteratorAggregateΒ», Β«CountableΒ».
- cs: ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΌΠ΅ΡΠ°Π΄Π°ΡΡ Β«@:assemblyMetaΒ» ΠΈ Β«@:assemblyStrictΒ».
- python: Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Β«__contains__Β»
ΠΈ Β«__getitem__Β», ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ ΠΊΠ°ΠΊ ΡΠ»ΠΎΠ²Π°ΡΠΈ Π² ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. - jvm: ΠΠ½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π½ΠΎΠ²ΠΎΠΌΡ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π² ΡΠ»ΡΡΠ°ΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠ°ΠΊ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ
ΡΡΡΡΠΊΡΡΡ (ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠΈΡΠΊ ΡΠ²ΠΎΠΉΡΡΠ²):
Π£Π»ΡΡΡΠ΅Π½ΠΈΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Β«Array.containsΒ».
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ Β«Array.keyValueIteratorΒ», ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ key-value ΠΈΡΠ΅ΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² (Β«for (key => value in array)Β»).
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Β«haxe.Constraints.NotVoidΒ».
- Π ΠΊΠ»Π°ΡΡ Β«LambdaΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Β«findIndexΒ» ΠΈ Β«foldiΒ».
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Β«array accessΒ» (Π΄ΠΎΡΡΡΠΏ ΡΠ΅ΡΠ΅Π· Β«arr[i]Β») ΠΈ key-value ΠΈΡΠ΅ΡΠ°ΡΠΈΡ Π΄Π»Ρ Β«haxe.ds.HashMapΒ».
- jvm: Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ JVM-ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Β«StringMapΒ», Β«sys.thread.LockΒ», Β«sys.thread.ThreadΒ».
- java/jvm: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π½Π°ΡΠΈΠ²Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Β«MD5Β», Β«SHA-1Β» ΠΈ Β«SHA-256Β» Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Β«haxe.cryptoΒ».
- macro: ΠΠΎΠ±Π°Π²Π»Π΅Π½ Β«haxe.macro.Context.containsDisplayPosition(pos)Β».
- nullsafety: ΡΠ΅ΠΆΠΈΠΌ Β«StrictΒ» ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ; Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Β«StrictThreadedΒ».
- Β«Std.isΒ» ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ Π² ΠΏΠΎΠ»ΡΠ·Ρ Β«Std.isOfTypeΒ».
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±Π΅Π· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡΡ .
- js: Β«untyped __js__(code, args)Β» ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ, Π²Π·Π°ΠΌΠ΅Π½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Β«js.Syntax.code(code, args)Β».
- php/neko: Β«neko.WebΒ» ΠΈ Β«php.WebΒ» ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌΠΈ ΠΈ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Ρ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Β«hx4compatΒ».
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ΅Π»ΠΈΠ·Π΅ :
- Π£Π»ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° .
- ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ API Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ .
- Π‘ΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (coroutines).
- ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±Π΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² (ΡΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π² Π½ΠΎΡΠ½ΡΡ ΡΠ±ΠΎΡΠΊΠ°Ρ ).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
