แ แแแแแแแแ แฌแแแก แแแแแแแแแแแจแ แแชแแแแแแแ แซแแแแแก แกแแแฃแแแ แ แแ แแแ แแแแ แแแแก แแแแก แจแแแฃแจแแแแแแจแ. แแแแแแแ แจแแแแฅแแแ, แฉแแแ แแแ แแ, แงแแแแแแ แแแ แขแแแ, แกแ แฃแแแ แคแฃแแฅแชแแแแแแฃแ แ แแ แแแกแแฎแแ แฎแแแแแ แแแ.
แแ แกแขแแขแแแจแ แแแแแ แแแแแแงแ แฉแแแ แแฃแจแแแแแก แซแแ แแแแแ แแขแแแแแ แแ, แแแกแแฌแงแแกแแกแแแแก, แแฆแแฌแแ แ แแแแก แจแแฅแแแแแ แแแแชแแคแชแแ แแ แแแกแ แแแ แแแแ แแแแฎแแ แชแแแแแแ, แ แแแแแแแช แแแแแแแ แแแฃแจแแแ.
แฌแแแแกแฌแแ แแแขแงแแแ, แ แแ แแแแแ แแ แแแฅแขแ แแแแฌแแ แ แฃแคแแกแ แแแกแแแแจแ, แ แแแแแ... แแแกแแ แแ แแแ แแแแแแก แแฌแงแแแ แจแแกแแซแแแแแแแ แฃแแแ แแแแแ แ แ แแแแแแแแแก แแแแขแคแแ แแแกแแแแก, แฎแแแ แจแแแแแแแแแ แแแแแ แแฌแแ แแแแแก แซแแแแแ แแแขแแแแแแแฃแ แแแแแ แแแก (แแ แแแฅแขแแก แงแแแแ แแแแแแแแแขแก แแแแ แแแแ O2 แแ แแจแแ).
แแแแก แแแจแแแแแก แแ แ
แฃแแแ แแแแแก แงแแแแแกแ, แฆแแ แก แแแ แขแฃแแแฃแ แแแแฅแแแแแ แกแแฃแแแ แ, แ แแแแแก แแแฌแแ แ แแแแแฌแแ แแแแแแแแ แแแแแแแชแแแแแก แฉแแแก แแแแแ แแแกแแจแแแแแ. แแแแแแฌแงแแแขแ แกแขแแแแก แแ แฅแแขแแฅแขแฃแ แแก แแแแแ แแแ, แแแแแ แแแแขแแ, แ แแ แแก แงแแแแแแ แแแ แขแแแ แแแ แแงแ. แแ แแแ แแแแแแ แแ แแ แแแ แแแแฃแ แ แกแขแแขแแ แแแแก แจแแกแแฎแแ, แแฃ แ แแแแ แฃแแแ แแแแแแแแ แแก แ แฃแกแฃแแแ, แแแแขแแ แแแแแแกแฃแ แแแแแแแ แแแกแแแแก แแแชแแแแแก แจแแแแแ, แแแแฏแแฅแ แฉแแแ แแแแแกแแแแแแก แแแแแแแแ แแ แแแฌแแ แแแ. แจแแแแแ แแ แฌแแ แแแแแแแแแ แฉแแแก "แแแฌแแแแแ" แแแแแแก แแ แแแแแแแแ แแแแแก แแ แกแแแแแฎแแแ แแแแแแจแแ แแแแ.
แกแขแแแแก แแแแฎแแ แชแแแแแแ
แชแฎแแแแ, VM-แแก แแแแ แแแฌแแแจแ แแ แแก แกแขแแแ. แฉแแแ แแแแฎแแ แชแแแแแแแกแแก แแก แแฃแจแแแแก แแแแแแแจแ. แแ แกแแแแแแ, แแก แแ แแก แแแฉแแแแแแแแแแก แแแ แขแแแ แแแกแแแ แแ แชแแแแแ แกแขแแแแก แแแแ แแแฌแแแแก แแแแแฅแกแแก แจแแกแแแแฎแแ.
แแแกแ แแแแชแแแแแแแชแแแกแแก แแฅแแแแแ 256 แแแแแแแขแแกแแแ แจแแแแแแ แ แแแกแแแ. แแฃ แแแกแขแแแ แแแขแ แแแฉแแแแแแแแก แแแแแขแแแ แฎแแแแ, แแแกแ แแแแ แแแ แแแแ แจแแแแแแ 256 แแแแแแแขแแ. แจแแกแแแแแแกแแ, แแแกแขแแแแ แแแแแแแขแแแแก แแแแฆแแแแกแแก, แแแกแ แแแแ แ แแแฃแแแ แแแแ.
VM แแงแแแแแก แ แแแแแแแแ แแแกแขแแก:
- แแแแแแ แ แแแกแขแ.
- แแแกแขแ แแแแ แฃแแแแแก แฅแฃแแแแแก แจแแกแแแแฎแแ.
- แแแแแแก แจแแแแ แแแแแแแ แแแกแขแ.
- แกแชแแแแ/แแแญแแ แ/แกแแแแแแแ แแแแแแแแ แแแแแฃแจแแแแแแแก แกแขแแแ.
แแฃแแแแแแแ แแ แชแแแแแแแ
แแก แแ แแ แแแ แขแแแแ. แแฃแแแแแแแ แแแแฃแจแแแแแฃแแแ แแแแแก แชแแแแแฃแ แแแขแแ แ แแแฌแแแแ แแ แฎแแแแแกแแฌแแแแแแ แแแแแแแ แแแแแแแชแแแแจแ แกแขแแขแแแฃแ แ แแแกแแแแ แแแแแก แกแแจแฃแแแแแแ. แชแแแแแแแ แแ แแก แแแ แแแแฃแแ แแแแแก แแแฉแแแแแแแแแแก แแแกแแแ, แแแก แฃแฏแ แแแแแแ แฌแแแแแ แฎแแ แชแแแแแแแ แแแแแฅแกแแ - แ.แ. แกแขแแขแแแฃแ แ แแแกแแแแ แแ. แชแแแแแแแ แจแแแซแแแแ แแแแแแขแแแแ แกแขแแแแก แแแแ แแแฌแแแจแ แแ แฌแแแแแแฎแแ แแฅแแแแ. แ แแแแฃแ แแ แแแแขแแ แแแฃแฎแแแแแแ แแแแกแ, แ แแ แฉแแแแ แชแแแแแแแ แแ แกแแแแแแ แแแแฎแแแก แแแแแแแแแแก แแแแจแแแแแแแแแแ VM แแแฎแกแแแ แแแแจแ, แแแแจแ แแแแแแแ แแแก แแแแแแชแแขแฃแ แ แแแฉแแแแแแแแแแแ แแฃแจแแแแ.
แแแแแแก แแแแแฅแชแแแแแ แ
แฉแแแก VM-แจแ แแก แแแฎแแแ แแ แแแขแแแแขแฃแ แแ. แแแแ. แแแแแแแแแ แ แแแแแ แฌแงแแแขแก แ แแแแก แแแฃแ แแแแก แแแแแแก แจแแแแ แแแแแแแก. แแก แแ แแฃแจแแแแก แฉแแแฃแแแแ แแแ แแ แแชแฎแแแแแก แแแแแงแแแแแแ, แ แแแแ แช Python, Perl, Ruby, Lua แแ แ.แจ. แแแ แฎแแ แชแแแแแแแ แแแ แแแ แแก แกแแกแขแแแแก แแแจแแแแแแ. แแแแ. แ แแแแกแแช แชแแแแแก แแแแแ แแฎแฃแแ แแฅแแก แแ แแแแแแ แแแแจแแแแแแแแก แแแแแญแแแ, แแ แแแแจแแแแแแแแก แแแฉแแแแแแแแ แแแแขแแแ แแแแแแก แจแแแแ แแแแแแแก แแแกแขแแก. แแแแแแแแจแ, แแแแแฅแชแแแแแ แ แกแฌแ แแคแแ แแแแแก แแแฉแแแแแแแแแแก แฃแแแ แแแแแแแแแฃแ แกแแแก.
แชแแแก/แแแญแแ แแก/แกแแแแแแ แแแแแแแแก แแแ แแแ
แ แแแแ แช แแแแแกแแแแ แแแแแแแแ แแแ แแแแจแ, แแแแแแแแแแกแแแแก แแแ แแแ แแแแจแแแแแแแแแ แแแแแแแแแขแแ. VM แแแ แแแ แจแแคแฃแแฃแแแ try..catch แแแแแจแ, แ แแแแแแช แจแแแซแแแแ แแแฃแแ แฃแแแแก แแแแแก แจแแกแ แฃแแแแแก แแแแแแแแแแกแแก แแแญแแ แแก แจแแแแแ, แแแก แจแแกแแฎแแ แแแ แแแแฃแแ แแแคแแ แแแชแแแก แแแกแขแแแ แแแแแขแแแแ. แแแแแแแชแแแก แแแแจแ แจแแแแซแแแแ แแแแกแแแฆแแ แแ แกแชแแแแ/แแแญแแ แ/แกแแแแแแแ แแแแแก แแแแแแแ, แแแฃแแแแแ แจแแกแแแแก แฌแแ แขแแแแแ catch-แแ (แแแแแแแแแแกแแก แแแแแฃแจแแแแแแแ) แแ แแแแแก/แแแแ (แแแแแแก แแแกแแกแ แฃแแ).
แแ แแแแแซแแคแแแแ
แแก แแฎแแ แแแญแแ แแแแ VM แแแแแแ. แแก แแ แแก แแแ แขแแแ แแ แแแกแแฎแแ แฎแแแแแ แแแแแกแแงแแแแแแแ. แแก แแฃแจแแแแก แจแแคแแ แฎแแแแก แกแแกแขแแแแก แแแ แแจแ, แแแแขแแ แแแแ แฃแแแ แจแแกแ แฃแแแแก แ แแแแแแแแ แแแแแจแ, แจแแกแแแแแแกแแ, แ แแแแแแฏแแ แแ แฃแคแ แ แกแฌแ แแคแแ.
แแแ แ แแแแแแแแแแแแ VM-แแแแกแแแแก
แแแแก แแแ แแจแ แแ แแ แกแแแแแก แแแ. VM แแฎแแ แก แฃแญแแ แก แแแแแ แขแก, แแกแแแ แ แแแแ แช แกแฎแแ แแแแแแ แแแแแ แแแแ. แจแแแแซแแแแ แแแฌแแ แแ แแแแแก แแแฌแแแ Mash-แจแ แแ แแแแแก แแแฌแแแ แแจแแแแแฃแ แแแแแแ, แจแแแแแ แแแแแแแจแแ แแ แแกแแแ แแ แแจแ.
แแแ แฏแแแแแ แแแฆแแแ แแแแแก Mash แแแแแแ VM-แแแแกแแแแก แแแแขแแแแแแแแ
แจแฃแแแแแฃแ แ แแแ
แ แแฃแแ แแแแแแ VM แแแแจแ แแแแ แแแแแแแก แกแฌแ แแคแแ แฉแแกแแฌแแ แแ, แแแ แแแแแ แจแแแแแฃแจแแแ แจแฃแแแแแฃแ แ แแแ. แจแแแแแ แแงแ แแกแแแแแแ แแก แแกแแแแกแ แกแแจแแแแแ แกแแแแฎแแแแ, แ แแแแแก แแแแฎแแแแแก แแฅ แแแแกแแแฃแแ แแแฃแแ แแแ แ แแ แแฅแแก. แแ แแฎแแแแ แแแขแงแแ, แ แแ แแ แแแแแแ แแแแ แแแแแแ แแแฃแจแแแแแก แแฃแแแแแแแกแ แแ แชแแแแแแแก, แแแแแแก แแแ แกแขแแขแแแฃแ แแแกแแแแ แแแแก แแ แจแแกแแแแก แฌแแ แขแแแแแแก แแแกแแแแ แแแแก.
แแแแ แแแแแแแก แแ แฅแแขแแฅแขแฃแ แ
แแ แแ แแแแ แฉแแ แกแแฃแแแแแกแ แแ แฅแแขแแฅแขแฃแ แ แแแแกแแฎแแ แชแแแแแแแแ. แแแแ แแแแแแ แแ แแจแแแแแก แแแแแก แฎแแก, แ แแแแ แช แแแแก แกแฎแแ แแแแ แแแแแแแแ แแแแแแแแ. แแก แฃแงแฃแ แแแก แกแขแ แฃแฅแขแฃแ แแก แกแแฌแงแแกแก. แแแแ. แแฃ แแแแแก แแแฌแแแ, แ แแแแแแช แแแแแแแแแแ, แฐแแแแก โwhile <condition>:โ-แก, แแแจแแ แแจแแแ แแ, แ แแ แแก แแ แแก while แแแ แงแฃแแแก แแแแกแขแ แฃแฅแชแแ แแ แฃแแแ แแแแฃแจแแแแแก, แ แแแแ แช while แแแ แงแฃแแแก แแแแกแขแ แฃแฅแชแแ. แ แแฆแแช แ แแฃแแ แแแแแแ แแแแแแก แแกแแแแกแ.
แแ แแ แฅแแขแแฅแขแฃแ แฃแแ แแแแแฌแงแแแขแแก แฌแงแแแแแแ, แแแแ แแแแแแ แแ แช แแฃ แแกแ แกแฌแ แแคแ แแฆแแแฉแแแ. แแฃแแชแ, แแแกแ แแแแแคแแแแชแแแก แกแแแแ แขแแแ แแแแจแแแแแแแแแ แแแแแแ แแ. แกแแญแแ แ แกแขแ แฃแฅแขแฃแ แแแ แฃแคแ แ แกแฌแ แแคแแ แแแแแแแขแ, แแแแ แ แฉแแแ แงแแแ แแแชแแแแ. แกแ แฃแแ OOP แแฎแแ แแแญแแ แ แแแแฎแแ แชแแแแแ แแ แ แแแแ แแแ แแแแแแ แแ แแจแ.
แแแแแก แแแขแแแแแแชแแ
แแฅ, แ แ แแฅแแ แฃแแแ, แฃแแแแแกแแแแช แจแแแซแแแแแแ แแแแฎแแ แชแแแแแแฃแแแงแ (แแ แแแแฎแแ แชแแแแแแแ, แแแแ แแ แแแแแแแแแแแ, แ แแแแ แช แแ แแแฃแแฎแแแแแแแแ). แฏแแ แฏแแ แแแแ, แแแขแแแแแแขแแ แแ แแฎแแแแ แแชแแก, แ แแแแ แแแแแฆแแก แแแแแฃแงแแแแแแแ แแแแ, แแฃแแแแแแแ แแ แแแแแ แขแ แแกแแแแแแแแแ. แแกแแแ, แ แแแแแแแแ แแฃแแแแแ แแ แแ แแ แแแแแ แแแแจแแแแแแแแ แแชแแแแแ แแ แแแ. แฒกแฃแ แแก แแ แแก.
แแแแก แแแแแแ
แแแแก แซแแ แแแแแ แแแแชแแคแชแแ
แแแแแแ แ แแแแ แแงแ แแแฅแกแแแแแฃแ แแ แคแฃแแฅแชแแแแแแฃแ แ แแ แแแ แขแแแ แแแแก แจแแแฃแจแแแแแ. แแ แแคแแฅแ แแ, แ แแ แแแแแแแแ แแแ แฃแแแแแแแแแ แแแแแก แแแแแแแแแก.
แแแแแก แแแแแแแ, แแ แแชแแแฃแ แแแ แแ แคแฃแแฅแชแแแแ
แแแแจแ แงแแแแ แแแแกแขแ แฃแฅแชแแ แแฎแกแแแแ แแ แฌแแ แขแแแแ. : แแ แแแฎแฃแ แฃแแแ แแแแ แแขแแ แแก แแแแ แแแแ.
แแ แแชแแแฃแ แแแ แแ แคแฃแแฅแชแแแแ แแแแแชแฎแแแแแฃแแแ, แ แแแแ แช proc แแ func, แจแแกแแแแแแกแแ. แแ แแฃแแแแขแแแ แฉแแแแแแแแแแ แคแ แฉแฎแแแแแจแ. แงแแแแแคแแ แ แกแฎแแ แแแแแแก แฃแแแขแแกแแแแก แฐแแแแก.
แแแแ แแขแแ แ แแแแ แฃแแแแแก แจแแแแซแแแแ แแแแแ แฃแแแ แแแแจแแแแแแแ แคแฃแแฅแชแแแแแ, แแแแ แแขแแ แแแแ แจแแกแแแแแแ แกแแจแฃแแแแแแก แแแซแแแแ แแแฎแแแแแ แแ แแชแแแฃแ แแก/แคแฃแแฅแชแแแแแ (แแฃ แแก แแแ แงแฃแแแแแก แแแ แแแแ).
แแแแแก แแแแฃแจแ:
...
func summ(a, b):
return a + b
end
proc main():
println(summ(inputln(), inputln()))
end
แแฎแแ แแแญแแ แแแ แแแแแแแแแ
- แแแ แงแฃแแแแ: แแแกแแกแ แฃแแแกแแแแก, แฎแแแ..แแแแแแแ, แแแแแแแ
- แแแ แแแแแ: แแฃ..[แกแฎแแ..]แแแกแ แฃแแแแแ, แแแแแ แแแ..[แกแแฅแแ..แแแกแ แฃแแแแแ..][แกแฎแแ..]แแแกแ แฃแแแแ
- แแแแแแแแ: proc <name>():... แแแกแแกแ แฃแแ, func <แกแแฎแแแ>():... แแแกแแกแ แฃแแ
- แแขแแแแขแ แแ แฌแแแแ: <แกแแฎแแแ>:, แแแแแแแ <แกแแฎแแแ>
- แฉแแแแแแแ แแ แแฃแแแแแ แแแกแแแแแ.
แชแแแแแแแ
แแแแ แแแแแแก แจแแฃแซแแแ แแแขแแแแขแฃแ แแ แแแแกแแแฆแแ แแก แแกแแแ, แแ แแฃ แแแแแแแแแ แ แฌแแ แก var-แก แแแ แแแแกแแแฆแแ แแแแ.
แแแแแก แแแแแแแแแแ:
a ?= 10
b ?= a + 20
var a = 10, b = a + 20
แแฎแแ แแแญแแ แแแแ แแแแแแแฃแ แ แแ แแแแแแฃแ แ แชแแแแแแแ.
OOP
แแกแ, แฉแแแ แแแแแแแ แงแแแแแแ แแแแ แแแ แแแแแแ. Mash แแฎแแ แก แฃแญแแ แก แแแแแฅแขแแ แแ แแแแขแแ แแแฃแแ แแ แแแ แแแแ แแแแก แงแแแแ แแแ แแแแแแแก. แแแแ. แแแแกแแแ, แแแแแแแแ แแแแ, แแแแแแแ แคแแแแ (แแแแแแแแแก แฉแแแแแแ), แแแแแแแฃแ แ แแแขแแแแขแฃแ แ แแกแแฎแแ แแ แแแขแ แแกแแแฅแชแแ (แกแ แฃแแ).
แจแแแแแแแ แจแแคแแ แฎแแแแก แแแ แแจแ, แฃแแฏแแแแกแแ แฃแแ แแแแ แแแแแก แแแแแแแแแแแก แแแงแแแแ.
แแแ แขแแแ แแแแกแ แแ แแแกแแแ แแฃแจแแแแ:
uses <bf>
uses <crt>
class MyClass:
var a, b
proc Create, Free
func Summ
end
proc MyClass::Create(a, b):
$a = new(a)
$b = new(b)
end
proc MyClass::Free():
Free($a, $b)
$rem()
end
func MyClass::Summ():
return $a + $b
end
proc main():
x ?= new MyClass(10, 20)
println(x->Summ())
x->Free()
end
แแแแแแแแแแ: 30.
แแแแแแแแ แแแแ แแ แแแแแแแ แคแแแแ:
uses <bf>
uses <crt>
class MyClass:
var a, b
proc Create, Free
func Summ
end
proc MyClass::Create(a, b):
$a = new(a)
$b = new(b)
end
proc MyClass::Free():
Free($a, $b)
$rem()
end
func MyClass::Summ():
return $a + $b
end
class MyNewClass(MyClass):
func Summ
end
func MyNewClass::Summ():
return ($a + $b) * 2
end
proc main():
x ?= new MyNewClass(10, 20)
println(x->Summ())
x->Free()
end
แแแแแแแแแแ: 60.
แ แแช แจแแแฎแแแ แแแแแแแฃแ แแแแแแแ แคแแแแก? แแแแฎ, แแก แแ แแก แแแแ แแแแ!:
uses <bf>
uses <crt>
class MyClass:
var a, b
proc Create, Free
func Summ
end
proc MyClass::Create(a, b):
$a = new(a)
$b = new(b)
end
proc MyClass::Free():
Free($a, $b)
$rem()
end
func MyClass::Summ():
return $a + $b
end
class MyNewClass(MyClass):
func Summ
end
func MyNewClass::Summ():
return ($a + $b) * 2
end
proc main():
x ?= new MyClass(10, 20)
x->Summ ?= MyNewClass::Summ
println(x->Summ())
x->Free()
end
แแแแแแแแแแ: 60.
แแฎแแ แแแแแ แแแแแแงแแ แแ แแ แฌแฃแแ แแแ แขแแแ แแแแจแแแแแแแแแแกแ แแ แแแแกแแแแก แแแขแ แแกแแแฅแขแแแแกแแแแก:
uses <bf>
uses <crt>
class MyClass:
var a, b
end
proc main():
x ?= new MyClass
println(BoolToStr(x->type == MyClass))
x->rem()
println(BoolToStr(typeof(3.14) == typeReal))
end
แแฅแแแแ แแแแแแแแแแ: แญแแจแแแ แแขแ, แญแแจแแแ แแขแ.
แแแแแแแแแก แแแแ แแขแแ แแแแกแ แแ แแจแแแ แ แแแแแขแแ แแแแก แจแแกแแฎแแ
?= แแแแ แแขแแ แ แแแแแแงแแแแแ แแแฎแกแแแ แแแแก แแแแจแแแแแแแแก แชแแแแแแกแแแแก แแแฉแแแแแแแแก แแแแแญแแแแกแแแแก.
= แแแแ แแขแแ แ แชแแแแก แแแแจแแแแแแแแก แแแฎแกแแแ แแแแจแ แชแแแแแแก แแแฉแแแแแแแแก แแแแแงแแแแแแ.
แแฎแแ แแ แชแแขแ แแแแคแแ แแแแแแแแแแแก แจแแกแแฎแแ. แแแแแ แแแแแแแขแ, แ แแ แแ แกแแแแแแแแ.
@<แชแแแแแ> โ แแแฆแแ แแแแคแแ แแแฉแแแแแแแแ แชแแแแแแ.
?<แชแแแแแ> โ แแแแฆแแ แชแแแแแ แแแฉแแแแแแแแก แแแฎแแแแแ.
@= โ แแแแแแญแแ แแแแจแแแแแแแ แชแแแแแก แแแแคแแ แแแฉแแแแแแแแ.
แแแแแก แแแแฃแจแ:
uses <bf>
uses <crt>
proc main():
var a = 10, b
b ?= @a
PrintLn(b)
b ?= ?b
PrintLn(b)
b++
PrintLn(a)
InputLn()
end
แแแแแแ: แ แแฆแแช แ แแชแฎแแ, 10, 11.
แกแชแแแ..[แแแญแแ แ..][แกแแแแแแแ..]แแแกแ แฃแแแแก
แแแแแก แแแแฃแจแ:
uses <bf>
uses <crt>
proc main():
println("Start")
try:
println("Trying to do something...")
a ?= 10 / 0
catch:
println(getError())
finally:
println("Finally")
end
println("End")
inputln()
end
แกแแแแแแแแ แแแแแแแ
แแแแ แซแแแแ แงแฃแ แแแแก แแ แแฃแงแฃแ แแ GraalVM & Truffle-แก. แฉแแแก แแแจแแแแฃแ แแแ แแแแก แแ แแฅแแก JIT แจแแแแแแแแแ, แแแแขแแ แจแแกแ แฃแแแแแก แแแแแกแแแ แแกแแ แแก แแแแแแแ แแแแแฃแ แแแขแฃแแแ แแแแแ แแฎแแแแ Python-แแแ. แแแแแ แแแฅแแก, แ แแ แจแแแซแแแ JIT แแแแแแแแชแแแก แแแแฎแแ แชแแแแแแแก GraalVM แแ LLVM-แแ แแแงแ แแแแแแ.
แกแแชแแแ
แแฅแแแ แจแแแแซแแแแ แแแแแแจแแ แแแแแแแแแแก แแแแแแแแ แแแแแ แแ แแแแแ แแแฐแงแแแ แแ แแแฅแขแก.
แแแแแแแแ, แ แแ แแแแแแแ แฌแแแแแแฎแแ, แแฃ แฌแแแแแแฎแแ.
แฌแงแแ แ: www.habr.com