Salvete omnes in novo anno MMXX.
Cum publicatione primae
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.
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