Mash harshe ne na shirye-shirye wanda ke haɗa kansa

Mash harshe ne na shirye-shirye wanda ke haɗa kansa

Gaisuwa ga kowa da kowa a cikin sabuwar shekara 2020.

Tun lokacin da aka buga na farko post Kusan daidai shekara 1 ta wuce game da Mash.

A cikin wannan shekara, harshe ya inganta sosai, an yi la'akari da yawancin al'amuransa da kuma tantance tasirin ci gaba.

Ina farin cikin raba duk wannan tare da al'umma.

Disclaimer

Ana ci gaba da wannan aikin ne kawai a cikin sha'awa kuma baya yin kama da mamayar duniya a fagen haɓakar harsunan shirye-shirye!

Bai kamata a yi la'akari da wannan ci gaban a matsayin ma'auni da za a yi ƙoƙari ba; aikin ba shi da kyau, amma yana tasowa duk da haka.

GitHub
website
Tattaunawa

Sabon mai tarawa

A cikin reshen /mashc na ma'ajiyar aikin, zaku iya ganin sabon sigar mai tarawa, wanda aka rubuta a cikin Mash (Sigar farko na yaren).

Mai tarawa yana da janareta na lamba a lissafin asm (na mai haɗawa don VM na tushen tari).
A halin yanzu ina haɓaka sigar janareta don Java (JDK 1.8).

Sabuwar sigar mai tarawa tana goyan bayan aikin sigar farko na harshe kuma yana cika shi.

Sabon OOP

A cikin sabon sigar harshen, aikin da azuzuwan an sake fasalin wani bangare.
Ana iya bayyana hanyoyin ajin duka a cikin aji da kuma wajensa.
Ajin yanzu yana da bayyanannen mai gini: init.

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

Idan gado ya faru, to muna da damar yin kiran gada cikin sauƙi (super).

Misali 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

Ƙunƙarar wuce gona da iri kan hanyoyin aji:

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

Fakitin / wuraren suna

Dole ne yankin suna ya kasance mai tsabta!
Saboda haka, dole ne harshen ya ba da wannan dama.
A cikin Mash, idan hanyar aji ta tsaya tsayin daka, ana iya kiranta lafiya daga kowane bangare na lambar.

Alal misali:

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

Af, babban ma'aikacin zai yi aiki daidai lokacin da aka kira shi ta wannan hanyar.

Ban da

A cikin sabon sigar harshen ana kula da su kamar azuzuwan:

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

Sabon enum

Yanzu ana iya sanya abubuwan ƙidayar ƙididdiga masu ƙima akai-akai:

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

Harshen da aka haɗa

Mai yuwuwa, Mash na iya samun alkukinsa azaman yaren shirye-shirye da aka haɗa, kama da Lua.

Don fara amfani da Mash don waɗannan dalilai, ba kwa buƙatar haɗa aikin da kanku.

Mash yana da Muhalli na Runtime - VM mai tushe wanda aka haɗa azaman ɗakin karatu mai ƙarfi tare da cikakken API.

Duk abin da kuke buƙatar yi shine ƙara shi zuwa dogaron aikin da yin kira biyu.

Harshen da kansa yana ba da ayyuka don aiki azaman harshe da aka haɗa.
A lokaci guda, aiki tare da haɗin gwiwar harshe da dakunan karatu na ɓangare na uku ba su da tasiri.
Muna samun yaren da aka haɗa wanda zai iya amfani da cikakken ikon sassa daban-daban da aka rubuta a ciki.

Mash + JVM

Na fara haɓaka sigar fassarar JVM ɗin.
Wataƙila, bayan N adadin lokaci, rubutu akan wannan batu zai bayyana akan Habré.

Sakamakon

Babu takamaiman sakamako. Wannan matsakaicin wakilci ne na sakamakon.
Sa'a ga kowa a 2020.

source: www.habr.com

Add a comment