Mash o se gagana fa'apolokalameina e fa'aputuina ia lava

Mash o se gagana fa'apolokalameina e fa'aputuina ia lava

Fa'atalofa atu i tagata uma ile tausaga fou 2020.

Talu mai le lomiga muamua pou Toeitiiti atoa le 1 tausaga ua mavae e uiga ia Mash.

I lenei tausaga, sa matua fa'aleleia atili le gagana, tele o ona itu sa mafaufau lelei ma fa'amautu le vete o le atina'e.

Ou te fiafia e faasoa atu nei mea uma i le nuu.

Tuuese

O lenei poloketi o loʻo atiaʻe naʻo luga o le naunautai ma e le faʻafoliga e pulea le lalolagi i le matata o gagana faʻalauiloa faʻalauiloa!

O lea atinae e le tatau ona avea o se tulaga e taumafai i ai; o le poloketi e le o se mea lelei, ae o loʻo atinaʻe.

GitHub
website
fono

Fa'aopoopo fou

I le /mashc lala o le fale teu oloa, e mafai ona e vaʻai i se faʻamatalaga fou o le tuʻufaʻatasia, lea e tusia i le Mash (le lomiga muamua o le gagana).

O loʻo i ai i le tagata faʻapipiʻi se faʻasologa o tulafono ile lisi asm (mo le faʻapipiʻi mo se VM faʻavae faʻavae).
O le taimi nei o loʻo ou atiaʻe se faʻasologa o le generator mo Java (JDK 1.8).

O le fa'afou fou a le tagata fa'apipi'i e lagolagoina atoatoa le fa'atinoga o le ulua'i fa'aliliuga o le gagana ma fa'amae'a ai.

OOP fou

I le fa'aliliuga fou o le gagana, o le galuega ma vasega ua toe fa'atulagaina se vaega.
E mafai ona fa'ailoa auala i vasega i totonu o le tino ma fafo atu.
Ua i ai nei i le vasega se faufale manino: init.

Fa'ata'ita'iga code:

...
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
...

Afai e tupu le tofi, ona tatou maua lea o le avanoa e faigofie ai ona faia ni valaau tuufaasolo (super).

Fa'ata'ita'iga code:

...
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

Fa'atosina fa'atosina o metotia ile vasega fa'ata'ita'iga:

...
func Polymorph::NewFoo(c):
  return $a + $b + c  
end
...
x -> Foo ?= Polymorph -> NewFoo
x -> Foo(30)    // 60

afifi/igoa avanoa

E tatau ona mama le igoa avanoa!
O lea la, e tatau ona maua e le gagana lea avanoa.
I le Mash, afai o se auala vasega e tumau, e mafai ona valaʻau saogalemu mai soʻo se vaega o le code.

Faataitaiga:

...
class MyPackage:
  func MyFunc(a, b):
    return a + b  
  end
end
...
println( MyPackage -> MyFunc(10, 20) )    // 30

I le auala, o le super operator o le a galue saʻo pe a valaʻau i lenei auala.

Tuusaunoaga

I le fa'aliliuga fou o le gagana o lo'o fa'atinoina e pei o vasega:

...
try:
  raise new Exception(
    "My raised exception!"
  )
catch E:
  if E is Exception:
    println(E)
  else:
    println("Unknown exception class!")
  end
end
...

Enume fou

I le taimi nei, e mafai ona tuʻuina atu faʻasologa o elemene taua:

enum MyEnum [
  meFirst = "First",
  meSecond = 2,
  meThird
]
...
k ?= meSecond
...
if k in MyEnum:
  ...
end

Gagana fa'apipi'i

E mafai, e mafai e Mash ona maua lona fa'ailoga o se gagana fa'apipi'i polokalame, e tutusa ma Lua.

Ina ia amata faʻaaoga Mash mo nei faʻamoemoega, e te le manaʻomia le faʻapipiʻiina o le poloketi oe lava ia.

Mash o loʻo i ai se Siosiomaga Taimi - o se VM faʻavae faʻapipiʻi tuʻufaʻatasia o se faletusi faʻamalosi ma se API atoa.

Pau lava le mea e tatau ona e faia o le faʻaopoopo i le faʻalagolago i le poloketi ma fai ni nai telefoni.

O le gagana lava ia e maua ai galuega e galue ai o se gagana fa'apipi'i.
I le taimi lava e tasi, e le afaina le faʻatinoga faʻatasi ma le gagana ma faletusi a isi vaega.
Matou te maua se gagana fa'apipi'i e mafai ona fa'aogaina le malosi atoa o fa'ava'a eseese o lo'o tusia ai.

Mash + JVM

Na amata ona ou atiaʻe se faʻaliliuga mo le JVM.
Masalo, a maeʻa le N taimi, o le a faʻaalia se pou i luga o lenei autu ile Habré.

O taunuʻuga

E leai ni fa'ai'uga fa'apitoa. O se fa'aaliga fa'avaitaimi lea o fa'ai'uga.
Manuia mo tagata uma ile 2020.

puna: www.habr.com

Faaopoopo i ai se faamatalaga