Mash jẹ ede siseto ti o ṣe akopọ funrararẹ

Mash jẹ ede siseto ti o ṣe akopọ funrararẹ

Ẹ kí gbogbo ènìyàn ní ọdún tuntun 2020.

Niwon awọn atejade ti akọkọ ifiweranṣẹ Fere gangan ọdun 1 ti kọja nipa Mash.

Ni ọdun yii, ede naa ti ni ilọsiwaju pupọ, ọpọlọpọ awọn apakan rẹ ni a ro nipasẹ ati pe a pinnu ipa ti idagbasoke.

Inu mi dun lati pin gbogbo eyi pẹlu agbegbe.

be

Iṣẹ akanṣe yii ni idagbasoke nikan lori itara ati pe ko ṣe dibọn si ijọba agbaye ni aaye ti awọn ede siseto ti o ni agbara!

Idagbasoke yii ko yẹ ki o gbero bi idiwọn lati tiraka fun; iṣẹ akanṣe ko bojumu, ṣugbọn o n dagbasoke sibẹsibẹ.

GitHub
aaye ayelujara
forum

New alakojo

Ninu ẹka /mashc ti ibi ipamọ iṣẹ akanṣe, o le rii ẹya tuntun ti alakojọ, eyiti a kọ sinu Mash (ẹya akọkọ ti ede).

Olupilẹṣẹ naa ni olupilẹṣẹ koodu ni atokọ asm (fun apejọ fun VM ti o da lori akopọ).
Lọwọlọwọ Mo n ṣe agbekalẹ ẹya ti monomono fun Java (JDK 1.8).

Ẹya tuntun ti alakojọ ṣe atilẹyin iṣẹ ṣiṣe ti ẹya akọkọ ti ede ati pe o ni ibamu.

OOP tuntun

Ninu ẹya tuntun ti ede naa, iṣẹ pẹlu awọn kilasi ti tun ṣe ni apakan.
Awọn ọna kilasi le jẹ ikede mejeeji ni ara kilasi ati ni ita rẹ.
Kilasi ni bayi ni onitumọ ti o fojuhan: init.

Koodu apẹẹrẹ:

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

Ti ilẹ-iní ba waye, lẹhinna a ni aye lati ni irọrun ṣe awọn ipe jogun (Super).

Koodu apẹẹrẹ:

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

Yiyipo awọn ọna lori awọn iṣẹlẹ kilasi:

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

Awọn idii / awọn aaye orukọ

Aaye orukọ gbọdọ wa ni mimọ!
Nitorinaa, ede gbọdọ pese aye yii.
Ni Mash, ti ọna kilasi ba jẹ aimi, o le pe ni lailewu lati eyikeyi apakan ti koodu naa.

Apeere:

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

Nipa ọna, oniṣẹ Super yoo ṣiṣẹ ni deede nigbati a ba pe ni ọna yii.

Awọn imukuro

Ninu ẹya tuntun ti ede naa wọn ṣe itọju bi awọn kilasi:

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

Enum tuntun

Bayi awọn eroja ikawe le jẹ sọtọ awọn iye igbagbogbo:

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

Ede ti a fi sinu

Ni agbara, Mash le wa onakan rẹ bi ede siseto ti a fi sii, ti o jọra si Lua.

Lati bẹrẹ lilo Mash fun awọn idi wọnyi, iwọ ko paapaa nilo lati ṣajọpọ iṣẹ akanṣe funrararẹ.

Mash ni Ayika asiko asiko – VM ti o da lori akopọ bi ile ikawe ti o ni agbara pẹlu API ni kikun.

Gbogbo ohun ti o nilo lati ṣe ni ṣafikun si igbẹkẹle iṣẹ akanṣe ati ṣe awọn ipe meji kan.

Ede funrararẹ pese iṣẹ ṣiṣe lati ṣiṣẹ bi ede ti a fi sii.
Ni akoko kanna, iṣẹ ṣiṣe ni apapo pẹlu ede ati awọn ile-ikawe ẹnikẹta ko kan.
A gba ede ifibọ ti o le lo agbara kikun ti awọn ilana oriṣiriṣi ti a kọ sinu rẹ.

Mash + JVM

Mo bẹrẹ si ni idagbasoke ẹya ti onitumọ fun JVM.
Boya, lẹhin iye akoko N, ifiweranṣẹ lori koko yii yoo han lori Habré.

Awọn esi

Ko si awọn abajade kan pato. Eyi jẹ aṣoju agbedemeji ti awọn abajade.
Orire fun gbogbo eniyan ni 2020.

orisun: www.habr.com

Fi ọrọìwòye kun