Mes est lingua programmandi quae se ordinat

Mes est lingua programmandi quae se ordinat

Salvete omnes in novo anno MMXX.

Cum publicatione primae jejunium Fere exacte 1 annus circiter Mes transiit.

Hoc anno, lingua valde emendata, multae rationes eius cogitabantur et vector evolutionis definita est.

Laetus sum haec omnia communicare cum communitate.

Disclaimer

Hoc consilium unice studio augetur ac dominatum mundum non simulat in agro dynamicae programmationis linguarum!

Haec progressio non debet considerari ut vexillum ad quaerendum: non est propositum ideale, sed nihilominus proficiens.

GitHub
website
Forum

Novus compilator

In /mashc parte repositorii project, videre potes novam versionem compilatoris, quae in Mash scripta est (prima versio linguae).

Compilator codicem generantis in asm enumeratis habet (pro convocator pro ACERVUS VM fundatus).
In praesenti versionem generantis pro Java (JDK 1.8).

Nova versio compilatoris plene confirmat functionem primae versionis linguae et complementi illam.

Novum OOP

In nova versione linguae, opus classium partim redesignatum est.
Genus methodi declarari possunt tam in corpore classis quam extra.
Classis nunc explicatorem habet: init.

Exemplum codicem:

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

Si hereditas occurrat, tunc habemus facultatem ad facillime vocatos haereditarios.

Exemplum codicem:

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

Dynamica earundem methodorum in genere instantiarum:

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

Packages / spatiis nominalibus

Nomen spatii mundare debet!
Proinde lingua hanc occasionem praebere debet.
In Mash, si genus methodi est statice, tuto vocari potest a quacumque parte codicis.

exempli gratia:

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

Viam recte operarius eximius hoc modo vocatus faciet.

dictarum excepcionium

In nova versione linguae tractatae sunt sicut classes;

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

Novum enum

Nunc elementa enumeratio valores constantes assignari possunt;

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

Lingua embedded

Potentia, Mes angulum suum reperire potest sicut programmationis linguae inhaerens, Luae similis.

Ad haec utens Mes utendo, etiam consilium te convenire non debes.

Mash habet Runtime Environment - ACERVUS fundatum VM ut bibliothecam dynamicam cum plena API composuit.

Omnes vos postulo ut faceretis adiciendum ad consilium dependentiae et duos vocatos facere.

Lingua ipsa munus praebet ad operandum sicut lingua infixa.
Eodem tempore, effectus in coniunctione linguae et tertiae bibliothecae partium non patitur.
Linguam infixam consequimur, quae plenam potestatem variarum compagum in ea scriptarum uti potest.

Mes + JVM

Versionem interpretis pro JVM evolvere coepi.
Forsitan post N temporis spatium columella de hoc loco in Habre apparebit.

results

Nulla efficitur particularis. Haec est media repraesentatio eventus.
Bene vale omnes in MMXX.

Source: www.habr.com