ማሽ እራሱን ያጠናከረ የፕሮግራም ቋንቋ ነው።

ማሽ እራሱን ያጠናከረ የፕሮግራም ቋንቋ ነው።

ለሁላችሁም እንኳን ለአዲሱ ዓመት 2020 በሰላም አደረሳችሁ።

የመጀመሪያው ከታተመ ጀምሮ መጾም ስለ ማሽ በትክክል 1 ዓመት አልፏል።

በዚህ አመት ውስጥ ቋንቋው በጣም ተሻሽሏል, ብዙ ገፅታዎቹ የታሰቡበት እና የእድገት ቬክተር ተወስኗል.

እነዚህን ሁሉ ከማህበረሰቡ ጋር በማካፈል ደስተኛ ነኝ።

ማስተባበያ

ይህ ፕሮጀክት በጉጉት ብቻ እየተዘጋጀ ነው እና በተለዋዋጭ የፕሮግራም አወጣጥ ቋንቋዎች መስክ የዓለም የበላይነትን አያስመስልም!

ይህንን ልማት እንደ መመዘኛ መቁጠር የለብዎትም ፣ እርስዎ ሊሞክሩት ይገባል ፣ ፕሮጀክቱ ተስማሚ አይደለም ፣ ግን ግን እያደገ ነው።

የፊልሙ
ድር ጣቢያ
መድረክ

አዲስ አቀናባሪ

በፕሮጀክት ማከማቻው /mashc ቅርንጫፍ ውስጥ በማሽ (የቋንቋው የመጀመሪያ ስሪት) የተጻፈውን አዲሱን የአቀናባሪውን ስሪት ማየት ይችላሉ.

አቀናባሪው በ asm ዝርዝሩ ውስጥ የኮድ ጀነሬተር አለው (በቁልል ቪኤም ስር ለሚሰበሰበው)።
በአሁኑ ጊዜ ለጃቫ (JDK 1.8) የጄነሬተሩን ስሪት እያዘጋጀሁ ነው።

አዲሱ የአቀናባሪው ስሪት የቋንቋውን የመጀመሪያ ስሪት ተግባራዊነት ሙሉ በሙሉ ይደግፋል እና ያሟላል።

አዲስ ኦኦፒ

በአዲሱ የቋንቋው ስሪት፣ ከክፍሎች ጋር መስራት በመጠኑ በአዲስ መልክ ተዘጋጅቷል።
የክፍል ዘዴዎች በሁለቱም በክፍል አካል ውስጥ እና ከእሱ ውጭ ሊታወቁ ይችላሉ.
ክፍሉ አሁን ግልጽ የሆነ ገንቢ አለው፡ 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

የተከተተ PL

ሊሆን የሚችል - ማሽ እንደ ሉአ ያለ ሊካተት የሚችል የፕሮግራሚንግ ቋንቋ ሆኖ የራሱን ቦታ ማግኘት ይችላል።

ለእነዚህ አላማዎች Mash መጠቀም ለመጀመር, ፕሮጀክቱን እራስዎ መገንባት እንኳን አያስፈልግዎትም.

Mash የሩጫ ጊዜ አካባቢ አለው - ከሙሉ ኤፒአይ ጋር እንደ ተለዋዋጭ ቤተ-መጽሐፍት የተሰራ ቁልል ቪኤም።

ወደ ፕሮጀክቱ ጥገኞች ማከል እና ሁለት ጥሪዎችን ማድረግ ብቻ ያስፈልግዎታል።

ቋንቋው ራሱ እንደ የተከተተ ቋንቋ ​​ለመስራት ተግባራዊነትን ይሰጣል።
በተመሳሳይ ጊዜ, ከቋንቋ እና ከሶስተኛ ወገን ቤተ-መጻሕፍት ጋር በመተባበር አፈጻጸም አይጣስም.
በውስጡ የተፃፉ የተለያዩ ማዕቀፎችን ሙሉ ኃይል ሊጠቀም የሚችል ሊካተት የሚችል ቋንቋ እናገኛለን።

ማሽ + JVM

ለJVM የአስተርጓሚውን ስሪት ማዘጋጀት ጀምሯል።
ምናልባት፣ ከ N-th የጊዜ መጠን በኋላ፣ በዚህ ርዕስ ላይ ልጥፍ በሀበሬ ላይ ይታያል።

ውጤቶች

ምንም ልዩ ውጤቶች የሉም. ይህ የውጤቶች መካከለኛ ውክልና ነው.
መልካም እድል በ2020 ለሁሉም።

ምንጭ: hab.com

አስተያየት ያክሉ