Π£ ΠΠΆΡΠ»ΠΈΠΈ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ
REPL, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ methods
ΠΈ help
.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠ½Π΅ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ.
ΠΡΠ»ΠΎ Π±Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ ΡΠΌΠ΅ΡΡ:
julia> methods(base)
# methods for generic function base
base(base::Integer,n::Integer,pad::Integer) at intfuncs.jl:290
base(symbols::Array{Uint8,N},n::Integer,p::Integer) at intfuncs.jl:291
base(base_or_symbols::Union(Integer,Array{Uint8,N}),n::Integer) at intfuncs.jl:292
julia> implementation(base,1)
base(base::Integer, n::Integer, pad::Integer) = _base(dig_syms,int(base),unsigned(abs(n)),pad,n<0)
julia> implementation(base,3)
base(base_or_symbols::Union(Integer,Array{Uint8}), n::Integer) = base(base_or_symbols, n, 1)
ΠΡΠΎ ΠΏΠΎΡ
ΠΎΠΆΠ΅ Π½Π° ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
IDE, Π½ΠΎ Π² REPL, ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΡΠΎ, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠΊΡΡΡΠΈΡΡ Π²Π²Π΅ΡΡ
ΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ _base
ΠΈΠ»ΠΈ Π½Π°ΠΉΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ dig_syms
Π² ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, Π½ΠΎ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ.
ΠΡ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡ Π΄Π»Ρ _base
, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ base
Π±ΠΎΠ»Π΅Π΅ Π·Π½Π°ΡΠΈΠΌΠΎΠΉ. (Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ Ρ REPL Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ)
julia> methods(Base._base)
# methods for generic function _base
_base(symbols::Array{Uint8,N},b::Int32,x::Unsigned,pad::Int32,neg::Bool) at intfuncs.jl:278
Π£ΡΠΈΡΡΠ²Π°Ρ, ΡΡΠΎ Π½ΠΎΠΌΠ΅ΡΠ° ΡΡΡΠΎΠΊ / ΡΠ°ΠΉΠ»Ρ ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² Π²ΡΠ²ΠΎΠ΄ methods
, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ· ΡΠ°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΡΠΎΡΡΠΎ.
ΠΡΠ»ΠΈ Π±Ρ ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΠΈΠ»ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ (ΡΠΆΠ°ΡΡΠΉ) ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΌΠ΅Π½ΡΡΡΡΡ, ΠΈ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΈΠ΄Π΅Π°Π»ΡΠ½Π°. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Ρ # 265 (ΡΠΌ. Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Ρ ΡΠ°Π½ΠΈΡΡ AST Π² ΡΠΆΠ°ΡΠΎΠΌ Π²ΠΈΠ΄Π΅ - ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠΈΠ² ΠΏΠΎΠ»Π΄ΡΠΆΠΈΠ½Ρ.
ΠΠ΅Ρ, Ρ # 265 ΡΡΠΎ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ. Π£ Π½Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΡΠΎΡΡΠΎ ΠΎΠ½Π° Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
Π‘ΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ Ρ @JeffBezanson, ΠΈ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΡΡ ΠΎΠ΄ΠΎΠΌ ΠΎΡ R, Π³Π΄Π΅ Π²Π²ΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±ΠΎΠ»Π΅Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠΎΠΊ, ΠΎΠ½ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠΌ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ (Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°ΡΡ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ afaik).
+1 Ρ ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
ΠΡΡΡΠ΅ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ https://github.com/JuliaLang/julia/issues/2594 , ΠΎΠ½ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ±ΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Windows, ΠΊΠΎΠ³Π΄Π° start
- ΡΡΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° cmd
Π° notepad
Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π½ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ / ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π½ΠΎΠΌΠ΅ΡΡ ΡΡΡΠΎΠΊΠΈ.
edit
- Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π΅Π΅ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ / ΡΠ»ΡΡΡΠΈΡΡ.
ΠΡΠΎΡΡΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, Π΅ΡΡΡ Π»ΠΈ Π·Π΄Π΅ΡΡ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΠ΅ΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π° ΡΠΊΠΎΡΠ΅Π΅ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° Β«ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β» Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ? ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π²Π΅Π±-Π·Π°ΠΏΠΈΡΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠΆΠΊΠΎΠΉ IPython, ΠΊΠΎΡΠΎΡΠ°Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ ΡΠ΄ΡΠΎΠΌ Julia, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠ°ΠΉΠ» ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅ ΡΠ΄ΡΠ°, Π° Π½Π΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅.
ΠΠ°ΠΊ Π±Ρ ΡΠΎ Π½ΠΈ Π±ΡΠ»ΠΎ, Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΡΠ΅ΠΆΠΈΠΌΠ°Ρ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, Π° Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ°ΠΉΠ»Π°Ρ . Π― ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΡ Π²ΠΈΠ΄Π΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ ΡΠ΅ΡΠ΅Π· repl. Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅ β3988.
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ΅ΠΉΠ΄ΠΆΠ΅ΡΠ° # 6921 ΠΌΠΎΠΆΠ΅Ρ ΡΠ½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΠΈ ΡΡΠΎΠ³ΠΎ.
Π― Π½Π°Ρ
ΠΎΠΆΡ ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π² ipython (ΡΠ΅ΡΠ΅Π· func??
), Ρ
ΠΎΡΡ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ julia, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΊΡΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ / cython).
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, <strong i="5">@less</strong> func(x)
ΠΏΠΎΡΡΠΈ ΡΠΎΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎ, ΡΡΠΎ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ @astrieanna (Ρ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ), Π½ΠΎ ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ $PAGER
.
<strong i="5">@less</strong> func(x)
Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ, Π½ΠΎ, ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π·ΠΈΡΠΎΠ²Π°ΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅.
ΠΡΠ»ΠΈ Π±Ρ Π±ΡΠ»ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π²Π΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΡΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π»ΠΈΡΡΠΈΠ½Π³ / ΠΎΠ±Ρ ΠΎΠ΄ / ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡ / Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
julia> q=:( function a(i::Int) ; return i+4 ; end ; b=4 ; println(a(b)) )
quote
function a(i::Int) # none, line 1:
return i + 4
end
begin
b = 4
println(a(b))
end
end
julia> function exprdescend(ex) ; if (isa(ex,Expr)) ; println("Descending Expr:",ex) ; println("head:",ex.head); println("args:",ex.args) ; println("type:",ex.typ) ; for i in ex.args ; exprdescend(i) ; end ; else ; println("*:",typeof(ex),":",ex) ; end ; end
// # ''try it ... long output''
Π² ΠΎΡΠ²Π΅Ρ Π½Π° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ: JeffBezanson ΠΏΡΠΎΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π» 20 ΠΌΠ°ΡΡΠ° 2013 Π³.
"ΠΠ΅Ρ, Ρ β 265 ΡΡΠΎ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ. Π£ Π½Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΡΠΎΡΡΠΎ ΠΎΠ½Π° Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠΎΡ
ΠΎΠΆΠ° Π½Π° ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± - ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΠΈΠ· ΡΠ°ΠΉΠ»Π°. . "
Π’Π°ΠΊ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ? Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ include / require ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π΅ΡΠΈ?
// # str = read_whole_file_into_a_string(filename)
julia> str="for i in [1,2,3,4] ; println(i) ; end "
julia> s=parse(str)
:(for i = [1,2,3,4] # line 1:
println(i)
end)
julia> exprdescend(s)
Descending Expr:for i = [1,2,3,4] # line 1:
println(i)
end
head:for
args:{:(i = [1,2,3,4]),quote # line 1:
println(i)
end}
type:Any
Descending Expr:i = [1,2,3,4]
head:=
args:{:i,:([1,2,3,4])}
type:Any
*:Symbol:i
Descending Expr:[1,2,3,4]
head:vcat
args:{1,2,3,4}
type:Any
*:Int64:1
*:Int64:2
*:Int64:3
*:Int64:4
Descending Expr:begin # line 1:
println(i)
end
head:block
args:{:( # line 1:),:(println(i))}
type:Any
*:LineNumberNode: # line 1:
Descending Expr:println(i)
head:call
args:{:println,:i}
type:Any
*:Symbol:println
*:Symbol:i
@hgkamath ΠΠΎΡΡΡ, Ρ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ Π²ΠΎΠΏΡΠΎΡΠ°, Π½ΠΎ, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΠΎΠ½ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠΏΠΈΡΠΊΠ° ΡΠ°ΡΡΡΠ»ΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΡΠΎΡΡΠΈΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Ρ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΡ .
ΠΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ - @generated
functions (ΠΈΠ· https://groups.google.com/d/topic/julia-users/4pkWhcap1Zg/discussion).
Π, Ρ ΡΠ΅ΡΠΈΠ» ΡΡΠΎ Π² # 22007?
ΠΡΠΎΠ΄Π΅ - Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ REPL ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΏΡΡΡΠ°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Π’Π°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠΏΡΠΎΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π³Π΄Π΅ Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ AST.
julia> x -> x+1
(::#5) (generic function with 1 method)
Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. (Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅ Π΄ΠΈΡΠΊΡΡΡ .)
Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ REPL
ΠΌΡ ΡΠΆΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π΄Π΅Π»Π°Π΅ΠΌ, ΠΏΡΠΎΡΡΠΎ ΡΠ°Π·Π΄ΡΠ°ΠΆΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ:
let h = Base.active_repl.interface.modes[1].hist,
replno = match(r"REPL\[(\d+)\]", $filename)
replno === nothing || h.history[h.start_idx + parse(Int, replno[1])]
end
"ΡΠ°Π·Π΄ΡΠ°ΠΆΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ" == "Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠ΅ΡΠ΅Π½Π½ΡΠΌ"
ΠΠΎΠΏΡΡΠΊΠ°Ρ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. Π― ΡΠ°ΡΡΠΎ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°Ρ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π² ΡΠ°Π·Π½ΡΡ REPL, ΡΡΠΎΠ±Ρ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΈΡ . ΠΠ½ΠΎΠ³Π΄Π° Ρ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΊΠ°ΠΊΠΎΠΉ REPL ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊΠΎΠΌΡ Π²Π°ΡΠΈΠ°Π½ΡΡ. Π’ΠΎΠ³Π΄Π° Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Yao, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ https://github.com/MasonProtter/LegibleLambdas.jl
ΠΠ°ΠΆΠ΄ΡΠΉ Π±Π»ΠΎΠΊ ΠΈΠΌΠ΅Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΡΠ±ΠΈΡΠΎΠ², ΠΈ ΠΌΡ Π½Π΅ Ρ ΠΎΡΠΈΠΌ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠ°ΡΡΠΈΡΠΎΠ²Π°Π½, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠΊΠ°ΡΠΌΠ»ΠΈΠ²Π°Π΅ΡΠ΅ ΡΡΠΎ ΡΠΈΡΠ»ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
julia> using Yao
julia> control(2, 1=>X)
(n -> control(n, 2, 1 => X gate))
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ Π±Π»ΠΎΠΊ, Π΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΡΠ±ΠΈΡΠΎΠ² Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΎΡΠ΅Π½ΠΊΠΈ. ΠΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ Π½Π°Ρ ΠΏΠΎΡΠ²ΡΡΡΡ LegibleLambdas, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΠΎ ΡΠΈΡΠ»ΠΎ Π²ΡΠΎΠ΄Π΅ #42
. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Ρ Flux, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΡ ΡΠ°Π½ΡΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π»ΠΈ Π»ΡΠΌΠ±Π΄Ρ.
ΠΠΎ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ³Π»ΠΎΠ²ΡΡ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π² LegibleLambdas, Π±ΡΠ»ΠΎ Π±Ρ Ρ ΠΎΡΠΎΡΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² REPL Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π²ΠΌΠ΅ΡΡΠΎ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°.
ΠΠ½Π΅ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ, ΡΡΠΎ ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌ ΡΡΠΎ
julia> <strong i="6">@code_native</strong> 1 + 2
.section __TEXT,__text,regular,pure_instructions
; β @ int.jl:53 within `+'
leaq (%rdi,%rsi), %rax
retq
; β
; β @ int.jl:53 within `<invalid>'
nopw %cs:(%rax,%rax)
; β
ΠΈ ΡΡΠΎ
julia> <strong i="10">@code_llvm</strong> 1 + 2
; @ int.jl:53 within `+'
define i64 @"julia_+_13402"(i64, i64) {
top:
%2 = add i64 %1, %0
ret i64 %2
}
ΠΈ ΡΡΠΎ
julia> <strong i="14">@code_typed</strong> 1 + 2
CodeInfo(
1 β %1 = Base.add_int(x, y)::Int64
βββ return %1
) => Int64
ΠΈ ΡΡΠΎ
julia> <strong i="18">@code_lowered</strong> 1 + 2
CodeInfo(
1 β %1 = Base.add_int(x, y)
βββ return %1
)
Π½ΠΎ Π½Π΅ ΡΡΠΎ
julia> <strong i="23">@code_source</strong> 1 + 2
ERROR: LoadError: UndefVarError: <strong i="24">@code_source</strong> not defined
in expression starting at REPL[23]:1
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΠΠΆΡΠ»ΠΈΡ, ΡΠΌΠ΅Π΅Ρ ΡΠΈΡΠ°ΡΡ ΠΈ ΠΏΠΈΡΠ°ΡΡ. Π― ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΡΠΎ ΠΊΠ°ΠΊ Β«ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠΌΠΎΡΡΒ», ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΆΠ΅Π»Π°Π½Π½ΡΠΌ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΡΠ·ΡΠΊΡ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, Π½ΠΎ Π²ΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² https://github.com/timholy/CodeTracking.jl , ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ Revise.jl. Π― Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΠ³ΡΠ°Π» Ρ Π½ΠΈΠΌ, ΠΈ Ρ ΠΎΡΡ ΠΎΠ½ Π½Π΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½, ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Revise Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΡΡΠ΅.
ΠΡΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π² ΡΡΠΎΠΌ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ .
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄Π½ΠΎ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, https://github.com/FluxML/Zygote.jl), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ julia
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ½Π΅ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ, ΡΡΠΎ ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌ ΡΡΠΎ
ΠΈ ΡΡΠΎ
ΠΈ ΡΡΠΎ
ΠΈ ΡΡΠΎ
Π½ΠΎ Π½Π΅ ΡΡΠΎ
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΠΠΆΡΠ»ΠΈΡ, ΡΠΌΠ΅Π΅Ρ ΡΠΈΡΠ°ΡΡ ΠΈ ΠΏΠΈΡΠ°ΡΡ. Π― ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΡΠΎ ΠΊΠ°ΠΊ Β«ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠΌΠΎΡΡΒ», ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΆΠ΅Π»Π°Π½Π½ΡΠΌ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΡΠ·ΡΠΊΡ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, Π½ΠΎ Π²ΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.