Mash ndi chilankhulo cha pulogalamu chomwe chimadzipanga chokha

Mash ndi chilankhulo cha pulogalamu chomwe chimadzipanga chokha

Moni kwa nonse m'chaka chatsopano cha 2020.

Kuyambira kusindikizidwa koyamba positi Pafupifupi chaka chimodzi chadutsa kuchokera pa Mash.

M’kupita kwa chaka chino, chinenerocho chasinthidwa kwambiri, mbali zake zambiri zaganiziridwa, ndipo chitsogozo cha chitukuko chake chatsimikiziridwa.

Ndine wokondwa kugawana zonsezi ndi anthu ammudzi.

chandalama

Pulojekitiyi ikupangidwa mwachidwi chabe ndipo sikutanthauza kulamulira dziko lonse pankhani ya zilankhulo zamphamvu zamapulogalamu!

Kukula kumeneku sikuyenera kuonedwa ngati muyezo womwe munthu ayenera kuyesetsa; polojekiti si yabwino, komabe ikukula.

GitHub
webusaiti
Forum

Wopanga watsopano

Munthambi ya / mashc ya malo osungira polojekiti, mukhoza kuona mtundu watsopano wa compiler, womwe unalembedwa mu Mash (chiyankhulo choyamba).

Wopangayo ali ndi jenereta yama code pamndandanda wa asm (wa assembler for stack VM).
Panopa ndikupanga mtundu wa jenereta wa Java (JDK 1.8).

Mtundu watsopano wa compiler umathandizira kwathunthu magwiridwe antchito amtundu woyamba wa chilankhulo ndikukwaniritsa.

OOP yatsopano

M'chinenero chatsopano, ntchito ndi makalasi yasinthidwa pang'ono.
Njira zamakalasi zitha kufotokozedwa mkati mwa gulu la kalasi komanso kunja kwake.
Kalasiyi tsopano ili ndi womanga momveka bwino: init.

Chitsanzo kodi:

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

Ngati cholowa chimachitika, ndiye kuti tili ndi kuthekera kopanga mafoni obadwa nawo mosavuta (chapamwamba).

Chitsanzo kodi:

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

Kuchulukitsa kwamphamvu kwa njira zamakalasi:

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

Phukusi/Mapaketi

Dzinalo liyenera kukhala loyera!
Choncho, chinenero chiyenera kupereka mwayi umenewu.
Ku Mash, ngati njira ya kalasi ili yosasunthika, imatha kuyitanidwa kuchokera kulikonse mu code.

Chitsanzo:

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

Mwa njira, woyendetsa wapamwamba azigwira ntchito moyenera akaitanidwa motere.

Kupatulapo

M'chinenero chatsopano amatengedwa ngati makalasi:

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

Enum yatsopano

Tsopano zinthu zowerengera zitha kuperekedwa nthawi zonse:

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

Chilankhulo chophatikizidwa

Mwachidziwikire, Mash atha kupeza niche yake ngati chilankhulo chokhazikika, chofanana ndi Lua.

Kuti muyambe kugwiritsa ntchito Mash pazifukwa izi, simufunikanso kumanga nokha polojekitiyo.

Mash ali ndi Runtime Environment - VM yochokera ku stack yomangidwa ngati laibulale yamphamvu yokhala ndi API yathunthu.

Zomwe muyenera kuchita ndikuwonjezera pazodalira za polojekiti yanu ndikuyimba mafoni angapo.

Chilankhulo palokha chimapereka magwiridwe antchito ngati chilankhulo chophatikizidwa.
Nthawi yomweyo, magwiridwe antchito molumikizana ndi malaibulale azilankhulo ndi gulu lachitatu sizowonongeka.
Timapeza chinenero chophatikizidwa chomwe chingagwiritse ntchito mphamvu zonse zamagulu osiyanasiyana olembedwa mmenemo.

Mash + JVM

Anayamba kupanga mtundu wa womasulira wa JVM.
Mwina, pakapita nthawi, positi pamutuwu idzawonekera pa Habr.

Zotsatira

Palibe zotsatira zenizeni. Ichi ndi chiwonetsero chazotsatira kwakanthawi.
Zabwino zonse kwa aliyense mu 2020.

Source: www.habr.com

Gulani kuchititsa kodalirika kwamasamba okhala ndi chitetezo cha DDoS, ma seva a VPS VDS Gulani malo odalirika osungira mawebusayiti okhala ndi chitetezo cha DDoS, ma seva a VPS VDS | ProHoster