
Moni kwa nonse m'chaka chatsopano cha 2020.
Kuyambira kusindikizidwa koyamba Pafupifupi chaka chimodzi chadutsa kuchokera pa Mash.
M’kupita kwa chaka chino, chinenerocho chasinthidwa kwambiri, mbali zake zambiri zaganiziridwa, ndipo chitsogozo cha chitukuko chake chatsimikiziridwa.
Ndine wokondwa kugawana zonsezi ndi anthu ammudzi.
chandalama
Pulojekitiyi ikupangidwa mwachidwi chabe ndipo sikutanthauza kulamulira dziko lonse pankhani ya zilankhulo zamphamvu zamapulogalamu!
Kukula kumeneku sikuyenera kuonedwa ngati muyezo womwe munthu ayenera kuyesetsa; polojekiti si yabwino, komabe ikukula.
Wopanga watsopano
Munthambi ya / mashc ya malo osungira polojekiti, mukhoza kuona mtundu watsopano wa compiler, womwe unalembedwa mu Mash (chiyankhulo choyamba).
Wopangayo ali ndi jenereta yama code pamndandanda wa asm (wa assembler for stack VM).
Panopa ndikupanga mtundu wa jenereta wa Java (JDK 1.8).
Mtundu watsopano wa compiler umathandizira kwathunthu magwiridwe antchito amtundu woyamba wa chilankhulo ndikukwaniritsa.
OOP yatsopano
M'chinenero chatsopano, ntchito ndi makalasi yasinthidwa pang'ono.
Njira zamakalasi zitha kufotokozedwa mkati mwa gulu la kalasi komanso kunja kwake.
Kalasiyi tsopano ili ndi womanga momveka bwino: init.
Chitsanzo kodi:
...
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
...
Ngati cholowa chimachitika, ndiye kuti tili ndi kuthekera kopanga mafoni obadwa nawo mosavuta (chapamwamba).
Chitsanzo kodi:
...
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
Kuchulukitsa kwamphamvu kwa njira zamakalasi:
...
func Polymorph::NewFoo(c):
return $a + $b + c
end
...
x -> Foo ?= Polymorph -> NewFoo
x -> Foo(30) // 60
Phukusi/Mapaketi
Dzinalo liyenera kukhala loyera!
Choncho, chinenero chiyenera kupereka mwayi umenewu.
Ku Mash, ngati njira ya kalasi ili yosasunthika, imatha kuyitanidwa kuchokera kulikonse mu code.
Chitsanzo:
...
class MyPackage:
func MyFunc(a, b):
return a + b
end
end
...
println( MyPackage -> MyFunc(10, 20) ) // 30
Mwa njira, woyendetsa wapamwamba azigwira ntchito moyenera akaitanidwa motere.
Kupatulapo
M'chinenero chatsopano amatengedwa ngati makalasi:
...
try:
raise new Exception(
"My raised exception!"
)
catch E:
if E is Exception:
println(E)
else:
println("Unknown exception class!")
end
end
...
Enum yatsopano
Tsopano zinthu zowerengera zitha kuperekedwa nthawi zonse:
enum MyEnum [
meFirst = "First",
meSecond = 2,
meThird
]
...
k ?= meSecond
...
if k in MyEnum:
...
end
Chilankhulo chophatikizidwa
Mwachidziwikire, Mash atha kupeza niche yake ngati chilankhulo chokhazikika, chofanana ndi Lua.
Kuti muyambe kugwiritsa ntchito Mash pazifukwa izi, simufunikanso kumanga nokha polojekitiyo.
Mash ali ndi Runtime Environment - VM yochokera ku stack yomangidwa ngati laibulale yamphamvu yokhala ndi API yathunthu.
Zomwe muyenera kuchita ndikuwonjezera pazodalira za polojekiti yanu ndikuyimba mafoni angapo.
Chilankhulo palokha chimapereka magwiridwe antchito ngati chilankhulo chophatikizidwa.
Nthawi yomweyo, magwiridwe antchito molumikizana ndi malaibulale azilankhulo ndi gulu lachitatu sizowonongeka.
Timapeza chinenero chophatikizidwa chomwe chingagwiritse ntchito mphamvu zonse zamagulu osiyanasiyana olembedwa mmenemo.
Mash + JVM
Anayamba kupanga mtundu wa womasulira wa JVM.
Mwina, pakapita nthawi, positi pamutuwu idzawonekera pa Habr.
Zotsatira
Palibe zotsatira zenizeni. Ichi ndi chiwonetsero chazotsatira kwakanthawi.
Zabwino zonse kwa aliyense mu 2020.
Source: www.habr.com
