
рдирдП 2020 рд╕рд╛рд▓ рдореЗрдВ рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдВред
рдореИрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реА
рдкреЛрд╕реНрдЯ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рдмрд╛рдж рд╕реЗ, рд▓рдЧрднрдЧ 1 рд╡рд░реНрд╖ рдмреАрдд рдЪреБрдХрд╛ рд╣реИред
рдЗрд╕ рд╡рд░реНрд╖ рднрд╛рд╖рд╛ рдореЗрдВ рдмрд╣реБрдд рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИ, рдЗрд╕рдХреЗ рдХрдИ рдкрд╣рд▓реБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡рд┐рдХрд╛рд╕ рд╡реЗрдХреНрдЯрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореИрдВ рдЗрд╕реЗ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдХреЗ рдЦреБрд╢ рд╣реВрдВред
рддреНрдпрд╛рдЧ
рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрддреНрд╕рд╛рд╣ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡рд┐рд╢реНрд╡ рдкреНрд░рднреБрддреНрд╡ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ!
рдЖрдкрдХреЛ рдЗрд╕ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдПрдХ рдорд╛рдирдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирдирд╛ тАЛтАЛрдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИред
GitHub
рд╡реЗрдмрд╕рд╛рдЗрдЯ
рдордВрдЪ
рдирдпрд╛ рд╕рдВрдХрд▓рдХ
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА / mashc рд╢рд╛рдЦрд╛ рдореЗрдВ, рдЖрдк рд╕рдВрдХрд▓рдХ рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдореИрд╢ (рднрд╛рд╖рд╛ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░) рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдкрд╛рд╕ asm рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ рдПрдХ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рд╣реИ (рд╕реНрдЯреИрдХ рд╡реАрдПрдо рдХреЗ рддрд╣рдд рдЕрд╕реЗрдВрдмрд▓рд░ рдХреЗ рд▓рд┐рдП)ред
рдлрд┐рд▓рд╣рд╛рд▓ рдореИрдВ рдЬрд╛рд╡рд╛ (JDK 1.8) рдХреЗ рд▓рд┐рдП рдЬрдирд░реЗрдЯрд░ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рд╕рдВрдХрд▓рдХ рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрд╛рд╖рд╛ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреВрд░рдХ рдХрд░рддрд╛ рд╣реИред
рдирдИ рдУрдУрдкреА
рднрд╛рд╖рд╛ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╡рд░реНрдЧ рдирд┐рдХрд╛рдп рдФрд░ рдмрд╛рд╣рд░ рджреЛрдиреЛрдВ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХрдХреНрд╖рд╛ рдореЗрдВ рдЕрдм рдПрдХ рд╕реНрдкрд╖реНрдЯ рд░рдЪрдирд╛рдХрд╛рд░ рд╣реИ: initред
рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
... class MyClass: private: var a, b public: init(a, b): $a ?= a $b ?= b end func Foo(): return $a + $b end end func MyClass::Bar(c): return $a + $b + c end ...
рдпрджрд┐ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдХреЙрд▓ (рд╕реБрдкрд░) рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред
рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
... class MySecondClass(MyClass): public: var c init(a, b, c): super(a, b) $c ?= c end func Bar(): super($c) end end ... x ?= new MySecondClass(10, 20, 30) println( x -> Bar() ) // 60
рдХрдХреНрд╖рд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ:
... func Polymorph::NewFoo(c): return $a + $b + c end ... x -> Foo ?= Polymorph -> NewFoo x -> Foo(30) // 60
рд╕рдВрдХреБрд▓ / рдирд╛рдо рд╕реНрдерд╛рди
рдирд╛рдорд╕реНрдерд╛рди рд╕рд╛рдл тАЛтАЛрд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП!
рддрджрдиреБрд╕рд╛рд░, рднрд╛рд╖рд╛ рдХреЛ рдпрд╣ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрд╢ рдореЗрдВ, рдпрджрд┐ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рд╕реНрдерд┐рд░ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рд╕реЗ рднреА рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
... class MyPackage: func MyFunc(a, b): return a + b end end ... println( MyPackage -> MyFunc(10, 20) ) // 30
рд╡реИрд╕реЗ, рд╕реБрдкрд░ рдСрдкрд░реЗрдЯрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдЕрдкрд╡рд╛рдж
рднрд╛рд╖рд╛ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:
... try: raise new Exception( "My raised exception!" ) catch E: if E is Exception: println(E) else: println("Unknown exception class!") end end ...
рдирдИ рдПрдирдо
рдЕрдм рдПрдиреНрдпреВрдорд░реЗрд╢рди рддрддреНрд╡реЛрдВ рдХреЛ рдирд┐рд░рдВрддрд░ рдорд╛рди рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
enum MyEnum [ meFirst = "First", meSecond = 2, meThird ] ... k ?= meSecond ... if k in MyEnum: ... end
рдПрдореНрдмреЗрдбреЗрдб рдкреА рдПрд▓
рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ - рдореИрд╢ рд▓реБрдЖ рдХреЗ рд╕рдорд╛рди рдПрдХ рдПрдореНрдмреЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рдЬрдЧрд╣ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред
рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдореИрд╢ рдореЗрдВ рдПрдХ рд░рдирдЯрд╛рдЗрдо рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рд╣реИ - рдПрдХ рд╕реНрдЯреИрдореНрдкреНрдб рд╡реАрдПрдо рдЬрд┐рд╕реЗ рдкреВрд░реНрдг рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдбрд╛рдпрдирд╛рдорд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдпрд╣ рдХреЗрд╡рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдХреБрдЫ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рднрд╛рд╖рд╛ рд╣реА рдПрдХ рдПрдореНрдмреЗрдбреЗрдб рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
рдЗрд╕реА рд╕рдордп, рднрд╛рд╖рд╛ рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдореЗрдВ рдПрдХ рдПрдореНрдмреЗрдбреЗрдб рднрд╛рд╖рд╛ рдорд┐рд▓рддреА рд╣реИ рдЬреЛ рдЙрд╕рдореЗрдВ рд▓рд┐рдЦреА рд╡рд┐рднрд┐рдиреНрди рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреА рдкреВрд░реА рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИред
рдорд╢ + рдЬреЗрд╡реАрдПрдо
рдЙрдиреНрд╣реЛрдВрдиреЗ рдЬреЗрд╡реАрдПрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд╡рд╛рджрдХ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред
рд╢рд╛рдпрдж, Nth рдХреЗ рд╕рдордп рдХреЗ рдмрд╛рдж, рд╣рдм рдкрд░ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдкреЛрд╕реНрдЯ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред
рдкрд░рд┐рдгрд╛рдо
рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдПрдХ рдЕрдВрддрд░рд┐рдо рдкреНрд░рд╕реНрддреБрддрд┐ рд╣реИред
2020 рдореЗрдВ рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБред