ټولو ته د نوي ۲۰۲۰ کال مبارکي وایم.
د لومړي خپریدو راهیسې
د دې کال په اوږدو کې، ژبه خورا ښه شوه، ډیری اړخونه یې په پام کې ونیول او د پراختیا ویکتور وټاکل شو.
زه خوشحاله یم چې دا ټول د ټولنې سره شریک کړم.
دادعا
دا پروژه یوازې په لیوالتیا رامینځته کیږي او د متحرک برنامې ژبو په ډګر کې د نړۍ تسلط ته غاړه نه ږدي!
دا پرمختګ باید د یو معیار په توګه ونه ګڼل شي چې هڅه یې وشي؛ پروژه مثالي نه ده، مګر بیا هم وده کوي.
نوی کمپیلر
د پروژې د ذخیره /mashc څانګې کې، تاسو کولی شئ د کمپیلر نوې نسخه وګورئ، کوم چې په Mash (د ژبې لومړۍ نسخه) کې لیکل شوي.
کمپیلر د asm لیست کولو کې د کوډ جنریټر لري (د سټیک میشته VM لپاره د راټولونکي لپاره).
اوس مهال زه د جاوا (JDK 1.8) لپاره د جنراتور نسخه رامینځته کوم.
د کمپیلر نوې نسخه په بشپړ ډول د ژبې د لومړۍ نسخې فعالیت ملاتړ کوي او بشپړوي.
نوی OOP
د ژبې په نوې نسخه کې، د ټولګیو سره کار په جزوي توګه بیا ډیزاین شوی.
د ټولګي میتودونه په ټولګي کې او د هغې بهر هم اعلان کیدی شي.
ټولګي اوس یو څرګند جوړونکی لري: init.
نمونه کوډ:
...
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
...
که چیرې میراث واقع شي، نو موږ فرصت لرو چې په اسانۍ سره میراثي تلیفونونه (سوپر) وکړو.
نمونه کوډ:
...
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
د ټولګي په مثالونو کې د میتودونو متحرک زیرمه کول:
...
func Polymorph::NewFoo(c):
return $a + $b + c
end
...
x -> Foo ?= Polymorph -> NewFoo
x -> Foo(30) // 60
بستې/نوم ځایونه
د نوم ځای باید پاک وي!
په دې اساس، ژبه باید دا فرصت چمتو کړي.
په میش کې، که د ټولګي میتود جامد وي، دا د کوډ له هرې برخې څخه په خوندي ډول ویل کیدی شي.
بېلګه:
...
class MyPackage:
func MyFunc(a, b):
return a + b
end
end
...
println( MyPackage -> MyFunc(10, 20) ) // 30
په هرصورت، سوپر آپریټر به په سمه توګه کار وکړي کله چې په دې ډول ویل کیږي.
استثناوې
د ژبې په نوې نسخه کې دوی د ټولګیو په څیر چلند کیږي:
...
try:
raise new Exception(
"My raised exception!"
)
catch E:
if E is Exception:
println(E)
else:
println("Unknown exception class!")
end
end
...
نوی اینوم
اوس د شمیرنې عناصر د ثابت ارزښتونو ټاکل کیدی شي:
enum MyEnum [
meFirst = "First",
meSecond = 2,
meThird
]
...
k ?= meSecond
...
if k in MyEnum:
...
end
سرایت شوی ژبه
په احتمالي توګه، ماش کولی شي خپل ځای د یو ځای شوي پروګرامینګ ژبې په توګه ومومي، لکه لوا ته ورته.
د دې اهدافو لپاره د میش کارولو پیل کولو لپاره ، تاسو حتی اړتیا نلرئ پخپله پروژه راټول کړئ.
میش د چلولو چاپیریال لري - د سټیک پراساس VM د بشپړ API سره د متحرک کتابتون په توګه ترتیب شوی.
ټول هغه څه چې تاسو یې کولو ته اړتیا لرئ دا د پروژې انحصار کې اضافه کړئ او یو څو تلیفونونه وکړئ.
ژبه پخپله د یو ځای شوي ژبې په توګه کار کولو لپاره فعالیت چمتو کوي.
په ورته وخت کې، د ژبې او دریمې ډلې کتابتونونو سره په ګډه فعالیت اغیزه نلري.
موږ یوه سرایت شوې ژبه ترلاسه کوو چې کولی شي د لیکل شوي مختلف چوکاټونو بشپړ ځواک وکاروي.
ماش + JVM
ما د JVM لپاره د ژباړونکي نسخه رامینځته کول پیل کړل.
شاید، د N مقدار وخت وروسته، د دې موضوع په اړه یو پوسټ به په Habré کې ښکاره شي.
پایلې
کومې ځانګړې پایلې شتون نلري. دا د پایلو منځګړیتوب استازیتوب کوي.
ټولو ته د ۲۰۲۰ کال مبارک وي.
سرچینه: www.habr.com