Beannachtaí gach duine don athbhliain 2020.
Ó foilsíodh an chéad cheann
I rith na bliana seo, feabhsaíodh an teanga go mór, rinneadh machnamh ar go leor dá gnéithe agus socraíodh veicteoir na forbartha.
Tá áthas orm é seo ar fad a roinnt leis an bpobal.
Séanadh
Tá an tionscadal seo á fhorbairt ar dhíograis amháin agus ní ligeann sé air féin go bhfuil forlámhas domhanda aige i réimse na dteangacha ríomhchlárúcháin dinimiciúla!
Níor cheart breathnú ar an bhforbairt seo mar chaighdeán le dícheall a dhéanamh, níl an tionscadal idéalach, ach tá sé ag forbairt mar sin féin.
Tiomsaitheoir nua
Sa bhrainse /mashc de stór an tionscadail, is féidir leat leagan nua den tiomsaitheoir a fheiceáil, atá scríofa i Mash (an chéad leagan den teanga).
Tá gineadóir cóid ag an tiomsaitheoir i liostú ASM (do chóimeálaí do VM bunaithe ar chruach).
Faoi láthair tá mé ag forbairt leagan den ghineadóir do Java (JDK 1.8).
Tacaíonn an leagan nua den tiomsaitheoir go hiomlán le feidhmiúlacht an chéad leagan den teanga agus comhlánaíonn sé é.
OOP nua
Sa leagan nua den teanga, tá athdhearadh páirteach ar obair na ranganna.
Is féidir modhanna ranga a dhearbhú sa chorp ranga agus lasmuigh de.
Tá cruthaitheoir follasach ag an rang anois: init.
Cód primer:
...
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
...
Má tharlaíonn oidhreacht, ansin tá an deis againn glaonna oidhreachta (super) a dhéanamh go héasca.
Cód primer:
...
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
Sárú dinimiciúil ar mhodhanna ar chásanna ranga:
...
func Polymorph::NewFoo(c):
return $a + $b + c
end
...
x -> Foo ?= Polymorph -> NewFoo
x -> Foo(30) // 60
Pacáistí/spásanna ainm
Caithfidh an t-ainmspás fanacht glan!
Dá réir sin, caithfidh an teanga an deis seo a chur ar fáil.
I Mash, má tá modh ranga statach, is féidir é a ghlaoch go sábháilte ó aon chuid den chód.
Sampla:
...
class MyPackage:
func MyFunc(a, b):
return a + b
end
end
...
println( MyPackage -> MyFunc(10, 20) ) // 30
Dála an scéil, oibreoidh an t-oibreoir sármhaith i gceart nuair a ghlaoitear air ar an mbealach seo.
Eisceachtaí
Sa leagan nua den teanga caitear leo mar ranganna:
...
try:
raise new Exception(
"My raised exception!"
)
catch E:
if E is Exception:
println(E)
else:
println("Unknown exception class!")
end
end
...
Enum nua
Anois is féidir luachanna tairiseacha a thabhairt d’eilimintí áirimh:
enum MyEnum [
meFirst = "First",
meSecond = 2,
meThird
]
...
k ?= meSecond
...
if k in MyEnum:
...
end
Teanga leabaithe
D'fhéadfadh go mbeadh Mash in ann a nideoige a aimsiú mar theanga ríomhchláraithe leabaithe, cosúil le Lua.
Chun tús a chur le Mash a úsáid chun na gcríoch sin, ní gá duit fiú an tionscadal a chur le chéile tú féin.
Tá Timpeallacht Runtime ag Mash - VM bunaithe ar stack a tiomsaíodh mar leabharlann dinimiciúil le API iomlán.
Níl le déanamh agat ach é a chur le spleáchas an tionscadail agus cúpla glaoch a dhéanamh.
Soláthraíonn an teanga féin feidhmiúlacht chun oibriú mar theanga leabaithe.
Ag an am céanna, ní chuirtear isteach ar fheidhmíocht i gcomhar le leabharlanna teanga agus tríú páirtí.
Faighimid teanga leabaithe ar féidir léi úsáid a bhaint as cumhacht iomlán na gcreataí éagsúla atá scríofa inti.
Mash + JVM
Thosaigh mé ag forbairt leagan den aistritheoir don JVM.
B’fhéidir, tar éis N méid ama, go mbeidh postáil ar an ábhar seo le feiceáil ar Habré.
Torthaí
Níl aon torthaí ar leith. Is léiriú idirmheánach é seo ar na torthaí.
Ádh mór do gach duine i 2020.
Foinse: will.com