Ndibulise kuye wonke umntu kunyaka omtsha ka-2020.
Ukususela ekupapashweni kokuqala
Kulo nyaka, ulwimi luye lwaphuculwa kakhulu, uninzi lwemiba yalo yacingisiswa kwaye kwamiselwa nevector yophuhliso.
Ndiyavuya ukwabelana ngako konke oku noluntu.
isikhanyeli
Le projekthi iphuhliswa ngomdla kuphela kwaye ayizenzi ngathi ilawula ihlabathi kwicandelo leelwimi eziguqukayo zokucwangcisa!
Olu phuhliso akufuneki luthathelwe ingqalelo njengomgangatho omele ukwenziwa; iprojekthi ayilunganga, kodwa iyaphuhla nangona kunjalo.
Umqokeleli omtsha
Kwisebe / i-mashc yendawo yokugcina iprojekthi, unokubona inguqu entsha yomqambi, ebhalwe kwi-Mash (uguqulelo lokuqala lolwimi).
Umqokeleli unomvelisi wekhowudi kuluhlu lwe-asm (kwi-assembler ye-VM esekelwe kwi-stack).
Okwangoku ndiphuhlisa inguqulelo yejenereyitha yeJava (JDK 1.8).
Inguqulelo entsha ye-compiler isekela ngokupheleleyo ukusebenza kwenguqulelo yokuqala yolwimi kwaye iyayincedisa.
I-OOP entsha
Kuhlelo olutsha lolwimi, umsebenzi weeklasi uhlengahlengiswe ngokuyinxenye.
Iindlela zeklasi zinokubhengezwa zombini kumzimba weklasi nangaphandle kwawo.
Iklasi ngoku inomakhi ocacileyo: init.
Ikhowudi yesampuli:
...
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
...
Ukuba ilifa lenzeka, ke sinethuba lokwenza iifowuni ezizuzwe ngokulula (super).
Ikhowudi yesampuli:
...
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
Ukugqithisa okuguquguqukayo kweendlela kwiimeko zeklasi:
...
func Polymorph::NewFoo(c):
return $a + $b + c
end
...
x -> Foo ?= Polymorph -> NewFoo
x -> Foo(30) // 60
Iipakethi/izithuba zamagama
Isithuba samagama kufuneka sihlale sicocekile!
Ngokufanelekileyo, ulwimi kufuneka lunike eli thuba.
Kwi-Mash, ukuba indlela yeklasi i-static, inokubizwa ngokukhuselekileyo kuyo nayiphi na inxalenye yekhowudi.
Umzekelo:
...
class MyPackage:
func MyFunc(a, b):
return a + b
end
end
...
println( MyPackage -> MyFunc(10, 20) ) // 30
Ngendlela, umqhubi ophezulu uya kusebenza ngokuchanekileyo xa ebizwa ngale ndlela.
Ngaphandle
Kwinguqulelo entsha yolwimi baphathwa njengeeklasi:
...
try:
raise new Exception(
"My raised exception!"
)
catch E:
if E is Exception:
println(E)
else:
println("Unknown exception class!")
end
end
...
Iqela elitsha
Ngoku izinto zobalo zinokubelwa amaxabiso angatshintshiyo:
enum MyEnum [
meFirst = "First",
meSecond = 2,
meThird
]
...
k ?= meSecond
...
if k in MyEnum:
...
end
Ulwimi olulungisiweyo
Ngokunokwenzeka, i-Mash inokufumana i-niche yayo njengolwimi olufakelweyo lwenkqubo, efana neLua.
Ukuqala ukusebenzisa iMash ngezi njongo, awudingi nokuba udibanise iprojekthi ngokwakho.
I-Mash ine-Runtime Environment - i-VM esekwe kwi-stack ehlanganiswe njengethala leencwadi eliguqukayo eline-API epheleleyo.
Konke okufuneka ukwenze kukuyongeza kuxhomekeke kwiprojekthi kwaye wenze iifowuni ezimbalwa.
Ulwimi ngokwalo lubonelela ngokusebenza njengolwimi oluzinzisiweyo.
Kwangaxeshanye, ukusebenza ngokubambisana nolwimi kunye namathala eencwadi angaphandle akuchaphazeleki.
Sifumana ulwimi olufakelweyo olungasebenzisa amandla apheleleyo eendlela ezahlukeneyo zesakhelo esibhaliweyo kuyo.
IMash + JVM
Ndaqalisa ukuphuhlisa inguqulelo yomguquli weJVM.
Mhlawumbi, emva kwexesha le-N, isithuba malunga nesi sihloko siya kubonakala kuHabrΓ©.
Iziphumo
Akukho ziphumo zithile. Olu luphawu oluphakathi lweziphumo.
Ithamsanqa kuye wonke umntu ngo-2020.
umthombo: www.habr.com