Mash bụ asụsụ mmemme na-achịkọta onwe ya

Mash bụ asụsụ mmemme na-achịkọta onwe ya

Ekele dịrị onye ọ bụla n'afọ ọhụrụ 2020.

Ebe ọ bụ na e bipụtara nke mbụ biputere Ihe fọrọ nke nta ka ọ bụrụ otu afọ agafeela banyere Mash.

N'ime afọ a, a na-eme ka asụsụ ahụ dịkwuo mma, a tụlere ọtụtụ akụkụ ya na vector nke mmepe.

Obi dị m ụtọ ịkọrọ ndị obodo ihe a niile.

Disclaimer

A na-arụ ọrụ a naanị na ịnụ ọkụ n'obi ma ọ dịghị eme ka ọ na-achị ụwa n'ọhịa nke asụsụ mmemme dị ike!

Agaghị ewere mmepe a dị ka ọkọlọtọ a ga-agba mbọ; ọrụ a adịghị mma, mana ọ na-etolite n'agbanyeghị.

GitHub
website
forum

Onye nchịkọta ọhụrụ

Na ngalaba /mashc nke ebe nchekwa ọrụ, ị nwere ike ịhụ ụdị ọhụrụ nke mkpokọta, nke edere na Mash (ụdị mbụ nke asụsụ).

Onye nchịkọta nwere koodu generator na ndepụta asm (maka onye na-ezukọta maka VM dabeere na nchịkọta).
Ugbu a, m na-emepụta ụdị generator maka Java (JDK 1.8).

Ụdị ọhụrụ nke mkpokọta na-akwado ọrụ nke ụdị mbụ nke asụsụ ahụ ma mejuo ya.

OOP ọhụrụ

N'ụdị asụsụ ọhụrụ, arụgharịrị ọrụ na klaasị n'otu akụkụ.
Enwere ike ikwuwapụta usoro klaasị ma n'anụ ahụ ma na mpụga ya.
Klas ugbu a nwere ihe nrụpụta doro anya: init.

Koodu nlele:

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

Ọ bụrụ na ihe nketa emee, yabụ anyị nwere ohere ịme oku ketara ngwa ngwa (super).

Koodu nlele:

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

Ntugharị dị egwu nke usoro na oge ọmụmụ klaasị:

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

Ngwungwu/oghere aha

Oghere aha ga-adị ọcha!
N'ihi ya, asụsụ ga-enye ohere a.
Na Mash, ọ bụrụ na usoro klaasị kwụ ọtọ, enwere ike ịkpọ ya n'enweghị nsogbu site na akụkụ ọ bụla nke koodu.

Ihe nlele:

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

Site n'ụzọ, nnukwu onye ọrụ ga-arụ ọrụ nke ọma mgbe akpọrọ ya otu a.

Naanị

Na ụdị asụsụ ọhụrụ a na-emeso ha dị ka klaasị:

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

Ọhụrụ enum

Ugbu a enwere ike kenye ihe ngụkọ ọnụ ụkpụrụ mgbe niile:

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

Asụsụ agbakwunyere

Enwere ike, Mash nwere ike ịchọta niche ya dị ka asụsụ mmemme agbakwunyere, yiri Lua.

Iji malite iji Mash maka ebumnuche ndị a, ọ dịghị mkpa ka ị chịkọta ọrụ ahụ n'onwe gị.

Mash nwere Gburugburu Oge ojiri gaa - VM gbadoro ụkwụ achịkọta dị ka ọba akwụkwọ siri ike nwere API zuru oke.

Ihe niile ị ga - eme bụ ịgbakwunye ya na ndabere ọrụ ma kpọọ oku abụọ.

Asụsụ n'onwe ya na-enye ọrụ iji rụọ ọrụ dị ka asụsụ agbakwunyere.
N'otu oge ahụ, arụmọrụ yana njikọ asụsụ na ọba akwụkwọ ndị ọzọ adịghị emetụta.
Anyị na-enweta asụsụ agbakwunyere nke nwere ike iji ike zuru oke nke usoro dị iche iche edere na ya.

Mash + JVM

Amalitere m imepụta ụdị onye ntụgharị maka JVM.
Ikekwe, mgbe oge N gachara, post na isiokwu a ga-apụta na Habré.

Nsonaazụ

Enweghị nsonaazụ pụrụ iche. Nke a bụ nnọchite anya n'etiti nsonaazụ ya.
chioma diri onye obula na 2020.

isi: www.habr.com

Tinye a comment