Mash என்பது தன்னைத் தொகுத்துக் கொள்ளும் ஒரு நிரலாக்க மொழி

Mash என்பது தன்னைத் தொகுத்துக் கொள்ளும் ஒரு நிரலாக்க மொழி

அனைவருக்கும் 2020 புத்தாண்டு வாழ்த்துக்கள்.

முதல் வெளியீடு முதல் அஞ்சல் மேஷைப் பற்றி கிட்டத்தட்ட சரியாக 1 வருடம் கடந்துவிட்டது.

இந்த ஆண்டில், மொழி பெரிதும் மேம்படுத்தப்பட்டது, அதன் பல அம்சங்கள் சிந்திக்கப்பட்டு வளர்ச்சியின் திசையன் தீர்மானிக்கப்பட்டது.

இதையெல்லாம் சமூகத்துடன் பகிர்ந்து கொள்வதில் மகிழ்ச்சி அடைகிறேன்.

பொறுப்புத் துறப்பு

இந்த திட்டம் முழுக்க முழுக்க உற்சாகத்துடன் உருவாக்கப்பட்டு வருகிறது மற்றும் டைனமிக் புரோகிராமிங் மொழிகள் துறையில் உலக ஆதிக்கத்தைப் போல் நடிக்கவில்லை!

இந்த வளர்ச்சியை பாடுபட வேண்டிய ஒரு தரநிலையாகக் கருதக்கூடாது; திட்டம் சிறந்ததல்ல, இருப்பினும் அது வளர்ந்து வருகிறது.

மகிழ்ச்சியா
வலைத்தளத்தில்
மன்றம்

புதிய கம்பைலர்

திட்ட களஞ்சியத்தின் /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

இப்போது எண்ணும் கூறுகளுக்கு நிலையான மதிப்புகளை ஒதுக்கலாம்:

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

உட்பொதிக்கப்பட்ட மொழி

லுவாவைப் போன்றே ஒரு உட்பொதிக்கப்பட்ட நிரலாக்க மொழியாக Mash அதன் முக்கிய இடத்தைக் கண்டறிய முடியும்.

இந்த நோக்கங்களுக்காக Mash ஐப் பயன்படுத்தத் தொடங்க, நீங்கள் திட்டத்தை நீங்களே இணைக்க வேண்டிய அவசியமில்லை.

Mash ஆனது ஒரு இயக்க நேர சூழலைக் கொண்டுள்ளது - ஒரு முழு API உடன் டைனமிக் லைப்ரரியாக தொகுக்கப்பட்ட ஸ்டாக் அடிப்படையிலான VM.

நீங்கள் செய்ய வேண்டியதெல்லாம், திட்ட சார்புநிலையில் அதைச் சேர்த்து, இரண்டு அழைப்புகளைச் செய்யுங்கள்.

மொழியே உட்பொதிக்கப்பட்ட மொழியாக வேலை செய்வதற்கான செயல்பாட்டை வழங்குகிறது.
அதே நேரத்தில், மொழி மற்றும் மூன்றாம் தரப்பு நூலகங்களுடன் இணைந்து செயல்திறன் பாதிக்கப்படாது.
அதில் எழுதப்பட்ட பல்வேறு கட்டமைப்புகளின் முழு சக்தியையும் பயன்படுத்தக்கூடிய உட்பொதிக்கப்பட்ட மொழியைப் பெறுகிறோம்.

மேஷ் + ஜேவிஎம்

ஜேவிஎம்மிற்கான மொழிபெயர்ப்பாளரின் பதிப்பை உருவாக்கத் தொடங்கினேன்.
ஒருவேளை, N நேரத்திற்குப் பிறகு, இந்த தலைப்பில் ஒரு இடுகை Habré இல் தோன்றும்.

முடிவுகளை

குறிப்பிட்ட முடிவுகள் எதுவும் இல்லை. இது முடிவுகளின் இடைநிலை பிரதிநிதித்துவமாகும்.
2020 இல் அனைவருக்கும் வாழ்த்துக்கள்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்