αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αž˜αžΈ Mash

αž’αžŸαŸ‹αžšαž™αŸˆαž–αŸαž›αž‡αžΆαž…αŸ’αžšαžΎαž“αž†αŸ’αž“αžΆαŸ†αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž–αŸ’αž™αžΆαž™αžΆαž˜αžŠαŸƒαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αŸ” αžαžΆαž˜αž‚αŸ†αž“αž·αžαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž”αž„αŸ’αž€αžΎαžαž—αžΆαžŸαžΆαžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αž αž˜αž»αžαž„αžΆαžšαž–αŸαž‰αž›αŸαž‰ αž“αž·αž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž αžΎαž™αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„ αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž‚αŸ†αž“αž·αžαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž“αŸƒαž—αžΆαžŸαžΆ αž“αž·αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαŸ†αž”αžΌαž„αžšαž”αžŸαŸ‹αžœαžΆ αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž€αŸ†αž–αž»αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž“αžΆαž–αŸαž›αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸαŸ‡αŸ”

αžαŸ’αž‰αž»αŸ†αžŸαžΌαž˜αž“αž·αž™αžΆαž™αž‡αžΆαž˜αž»αž“αžαžΆαžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαžšαžŸαŸαžšαž‚αž˜αŸ’αžšαŸ„αž„αž‘αžΆαŸ†αž„αž˜αžΌαž›αž“αŸ…αž€αŸ’αž“αž»αž„ Free Pascal αž–αžΈαž–αŸ’αžšαŸ„αŸ‡ ... αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ…αž›αžΎαžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‚αž»αŸ†αž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαŸαž‘αž·αž€αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ† αž αžΎαž™αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αžαŸ’αž›αž½αž“αž―αž„αž•αž›αž·αžαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžšαžŠαŸ‚αž›αž”αžΆαž“αž€αŸ‚αž›αž˜αŸ’αž’αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„ (αžαŸ’αž‰αž»αŸ†αž”αŸ’αžšαž˜αžΌαž›αžŸαž˜αžΆαžŸαž’αžΆαžαž»αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž„αŸ‹ O2) αŸ”

αž˜αŸ‰αŸ„αž„αžšαžαŸ‹αž—αžΆαžŸαžΆ

αž‡αžΆαžŠαŸ†αž”αžΌαž„αžœαžΆαž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αžαŸ’αžšαžΌαžœαžŸαžšαžŸαŸαžšαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αžΆαž–αŸαž›αž’αž“αžΆαž‚αžαž‡αžΆαž—αžΆαžŸαžΆαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž’αž“αž»αžœαžαŸ’αžαžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž‡αž„αŸ‹ αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž‡αžΆαž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αžαŸ” αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž’αžαŸ’αžαž”αž‘αž’αž˜αŸ’αž˜αžαžΆαž˜αž½αž™αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž’αŸ’αžœαžΎαžœαžΆαž‡αžΆαž—αžΆαžŸαžΆαžšαž»αžŸαŸ’αžŸαžΈαž‘αŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŸαŸ’αž‚αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αž―αž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαž˜αŸ’αž—αžΆαžšαŸˆαž‡αžΆαž—αžΆαžŸαžΆαž’αž„αŸ‹αž‚αŸ’αž›αŸαžŸ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž’αž„αŸ’αž‚αž»αž™αž…αž»αŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαžšαž…αž“αžΆ αž“αž·αž„αžŸαžšαžŸαŸαžšαž€αž„αŸ‹αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž‚αŸ†αž“αž·αž αž“αž·αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ "αž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹" αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αŸ”

αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‡αž„αŸ‹

αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž“αŸ…αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž›αžΎαž“αŸƒ VM αž‚αžΊαž‡αžΆαž‡αž„αŸ‹αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž”αŸ’αž›αž»αž€αŸ” αžŸαŸ†αžαžΆαž“αŸ‹αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž’αžΆαžšαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸƒαž‘αŸ’αžšαž“αž·αž… αž“αž·αž„αž’αžαŸαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž“αŸƒαž€αŸ†αž–αžΌαž›αž“αŸƒαž‡αž„αŸ‹αŸ”
αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž’αžΆαžšαŸαž“αŸƒαž’αžΆαžαž» 256 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž‘αŸ’αžšαž“αž·αž…αž…αŸ’αžšαžΎαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž»αž‰αž›αžΎαž‡αž„αŸ‹ αž‘αŸ†αž αŸ†αžšαž”αžŸαŸ‹αžœαžΆαž€αžΎαž“αž‘αžΎαž„αžŠαŸ„αž™αž’αžΆαžαž» 256 αž”αž“αŸ’αž‘αžΆαž”αŸ‹αŸ” αžŠαžΌαž…αŸ’αž“αŸ„αŸ‡αž αžΎαž™αž“αŸ…αž–αŸαž›αž™αž€αž’αžΆαžαž»αž…αŸαž‰αž–αžΈαž‡αž„αŸ‹αž‘αŸ†αž αŸ†αžšαž”αžŸαŸ‹αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαŸ”

VM αž”αŸ’αžšαžΎαž‡αž„αŸ‹αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ–

  1. αž‡αž„αŸ‹αž…αž˜αŸ’αž”αž„αŸ”
  2. αž‡αž„αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž–αž·αž“αŸ’αž‘αž»αžαŸ’αžšαž‘αž”αŸ‹αŸ”
  3. αž‡αž„αŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαž˜αžΌαž›αžŸαŸ†αžšαžΆαž˜αŸ”
  4. αžŸαžΆαž€αž›αŸ’αž”αž„/αž…αžΆαž”αŸ‹/αž…αž»αž„αž€αŸ’αžšαŸ„αž™ αžšαžΆαžšαžΆαŸ†αž„αž‡αž„αŸ‹αž’αŸ’αž“αž€αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αŸ”

ធថេរ αž“αž·αž„αž’αžαŸαžš

αž˜αž½αž™αž“αŸαŸ‡αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αŸ” Constants αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αžαžΌαž…αž˜αž½αž™αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž“αŸƒαž€αžΌαžŠ αž αžΎαž™αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αžΆαž–αŸαž›αž’αž“αžΆαž‚αžαžαžΆαž˜αžšαž™αŸˆαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž‹αž·αžαž·αžœαž“αŸ’αžαŸ” αž’αžαŸαžšαž‚αžΊαž‡αžΆαž’αžΆαžšαŸαž“αŸƒαž‘αŸ’αžšαž“αž·αž…αž“αŸƒαž‘αŸ†αž αŸ†αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ αž€αžΆαžšαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž€αŸ’αžšαž‘αžΆαžšαž”αžŸαŸ‹αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž›αž·αž”αž·αž€αŸ’αžšαž˜ - i.e. αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž‹αž·αžαž·αžœαž“αŸ’αžαŸ” αž’αžαŸαžšαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž»αž‰αž‘αŸ…αž€αŸ†αž–αžΌαž›αž“αŸƒαž‡αž„αŸ‹αž¬αž’αžΆαž“αž–αžΈαž‘αžΈαž“αŸ„αŸ‡αŸ” αžαžΆαž˜αž–αž·αžαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚ αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž’αžαŸαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž‘αŸ’αžšαž“αž·αž…αž‘αŸ…αžαž˜αŸ’αž›αŸƒαž“αŸ…αž€αŸ’αž“αž»αž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ† VM αž—αžΆαžŸαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸ’αžšαž”αžŠαžŽαŸ’αžŠαž”αŸ‹αžŠαŸ„αž™αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž‘αŸ’αžšαž“αž·αž…αžŠαŸ‚αž›αž”αž„αŸ’αž€αž”αŸ‹αž“αŸαž™αŸ”

αž’αŸ’αž“αž€β€‹αž”αŸ’αžšαž˜αžΌαž›β€‹αžŸαŸ†αžšαžΆαž˜

αž“αŸ…αž€αŸ’αž“αž»αž„ VM αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αžœαžΆαž‚αžΊαž–αžΆαž€αŸ‹αž€αžŽαŸ’αžαžΆαž›αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ” αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžαŸ’αž›αž½αž“αž―αž„αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžαžΆαž–αŸαž›αžŽαžΆαžαŸ’αžšαžΌαžœαž αŸ…αž’αŸ’αž“αž€αž”αŸ’αžšαž˜αžΌαž›αžŸαŸ†αžšαžΆαž˜αŸ” αžœαžΆαž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαž‘αŸ’αžšαž“αž·αž…αž‘αŸ’αžšαž“αž·αž…αž’αž˜αŸ’αž˜αžαžΆαžŠαžΌαž…αž“αŸ…αž€αŸ’αž“αž»αž„ Python, Perl, Ruby, Lua αž‡αžΆαžŠαžΎαž˜αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžαžΆαž˜αžšαž™αŸˆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αŸ” αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αžαŸαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαžαŸ‹αžαž˜αŸ’αž›αŸƒαž”αžŽαŸ’αžαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“ αž‘αŸ’αžšαž“αž·αž…αž‘αŸ…αžαž˜αŸ’αž›αŸƒαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž‡αž„αŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαž˜αžΌαž›αžŸαŸ†αžšαžΆαž˜αŸ” αž“αŸ…αž–αŸαž›αž’αž“αžΆαž‚αž αž’αŸ’αž“αž€αž”αŸ’αžšαž˜αžΌαž›αž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αŸ‰αžΆαž„αž›αžΏαž“αžαžΆαž˜αžšαž™αŸˆαž”αž‰αŸ’αž‡αžΈαž…αž„αŸ’αž’αž»αž›αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αž…αŸ†αžšαž½αž…αž αžΎαž™αŸ”

αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„/αž…αžΆαž”αŸ‹/αž…αž»αž„αž€αŸ’αžšαŸ„αž™αžšαžΆαžšαžΆαŸ†αž„

αžŠαžΌαž…αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαž‘αŸ†αž“αžΎαž”αžŽαžΆαž˜αž½αž™ αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αž‚αžΊαž‡αžΆαžŸαž˜αžΆαžŸαž’αžΆαžαž»αžŸαŸ†αžαžΆαž“αŸ‹αž˜αž½αž™αŸ” αžŸαŸ’αž“αžΌαž› VM αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž»αŸ†αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αž›αž»αž€ try..catch αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαž‘αž”αŸ‹αž‘αŸ…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαžŠαžœαž·αž‰ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž…αžΆαž”αŸ‹αž”αžΆαž“αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αžŠαŸ„αž™αžšαž»αž‰αž–αŸαžαŸŒαž˜αžΆαž“αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αž–αžΈαžœαžΆαž‘αŸ…αž›αžΎαž‡αž„αŸ‹αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž’αŸ’αž“αž€αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹ try/catch/finally blocks αž“αŸƒ code αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž…αŸ†αž“αž»αž…αž…αžΌαž›αž“αŸ… catch (exception handler) αž“αž·αž„αž…αž»αž„αž€αŸ’αžšαŸ„αž™/end (end of block)αŸ”

αž–αž αž»αžαŸ’αžŸαŸ‚

αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαž“αŸ…αž€αž˜αŸ’αžšαž·αž VM αŸ” αžœαžΆαžŸαžΆαž˜αž‰αŸ’αž‰ αž“αž·αž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ’αžšαžΎαŸ” αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαŸ†αžαžΆαž“ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αžΌαžŠαž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αŸ’αž“αž»αž„αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαž„αž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“αžšαŸ€αž„αŸ—αžαŸ’αž›αž½αž“αŸ”

αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžαžΆαž„αž€αŸ’αžšαŸ…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ VMs

αž‚αŸ’αž˜αžΆαž“αžœαž·αž’αžΈαž’αŸ’αžœαžΎαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αžšαžΏαž„αž“αŸαŸ‡αž‘αŸαŸ” VM αž‚αžΆαŸ†αž‘αŸ’αžšαž€αžΆαžšαž“αžΆαŸ†αž…αžΌαž› αžŸαŸ’αžšαžŠαŸ€αž„αž“αžΉαž„αžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž‡αžΆαž—αžΆαžŸαžΆαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž’αŸ’αž“αž€αž’αžΆαž…αžŸαžšαžŸαŸαžšαž•αŸ’αž“αŸ‚αž€αž“αŸƒαž€αžΌαžŠαž‡αžΆ Mash αž“αž·αž„αž•αŸ’αž“αŸ‚αž€αž“αŸƒαž€αžΌαžŠαž‡αžΆαž—αžΆαžŸαžΆαž€αŸ†αžŽαžΎαž αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž—αŸ’αž‡αžΆαž”αŸ‹αž–αž½αž€αžœαžΆαž‘αŸ…αž‡αžΆαž˜αž½αž™αŸ”

αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚αž–αžΈαž—αžΆαžŸαžΆ Mash αž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αž‘αŸ…αž‡αžΆ bytecode αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ VMs

αž—αžΆαžŸαžΆαž€αž˜αŸ’αžšαž·αžαž˜αž’αŸ’αž™αž˜

αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αžŸαžšαžŸαŸαžšβ€‹αž’αŸ’αž“αž€β€‹αž”αž€β€‹αž”αŸ’αžšαŸ‚β€‹αž–αžΈβ€‹αž—αžΆαžŸαžΆβ€‹αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰β€‹αž‘αŸ…β€‹αž‡αžΆβ€‹αž€αžΌαžŠ VM αž™αŸ‰αžΆαž„β€‹αž†αžΆαž”αŸ‹β€‹αžšαž αŸαžŸ αžαŸ’αž‰αž»αŸ†β€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž—αžΆαžŸαžΆβ€‹αž€αž˜αŸ’αžšαž·αžβ€‹αž˜αž’αŸ’αž™αž˜β€‹αžŠαŸ†αž”αžΌαž„αŸ” αž›αž‘αŸ’αž’αž•αž›β€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αž‘αžŸαŸ’αžŸαž“αžΈαž™αž—αžΆαž–β€‹αžŠαŸβ€‹αž‚αž½αžšβ€‹αž±αŸ’αž™β€‹αž—αŸαž™αžαŸ’αž›αžΆαž…β€‹αž˜αž½αž™β€‹αžŠαŸ‚αž›β€‹αž‚αŸ’αž˜αžΆαž“β€‹αž…αŸ†αžŽαž»αž…β€‹αž–αž·αžŸαŸαžŸβ€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž–αž·αž…αžΆαžšαžŽαžΆβ€‹αž“αŸ…β€‹αž‘αžΈαž“αŸαŸ‡αŸ” αžαŸ’αž‰αž»αŸ†αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž“αž·αž™αžΆαž™αžαžΆαž“αŸ…αž€αž˜αŸ’αžšαž·αžαž“αŸαŸ‡ αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αžαŸαžš αž“αž·αž„αž’αžαŸαžšαž—αžΆαž‚αž…αŸ’αžšαžΎαž“ αž‚αžŽαž“αžΆαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž‹αž·αžαž·αžœαž“αŸ’αžαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž“αž·αž„αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž…αŸ†αžŽαž»αž…αž…αžΌαž›αŸ”

αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚

αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž›αŸ’αž’αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‘αŸαŸ” αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚αž˜αž·αž“αž”αž„αŸ’αž€αžΎαžαž˜αŸ‚αž€αž’αžΆαž„αž€αžΌαžŠαžŠαžΌαž…αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž’αŸ’αžœαžΎαž‘αŸαŸ” αž‚αžΆαžαŸ‹αž˜αžΎαž›αž“αŸ…αžŠαžΎαž˜αžŠαŸ†αž”αžΌαž„αž“αŸƒαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ” αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž”αŸ†αžŽαŸ‚αž€αž“αŸƒαž€αžΌαžŠαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž‰αŸ‚αž€αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž‡αžΆ "while <condition>:" αž“αŸ„αŸ‡αžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αžŽαžΆαžŸαŸ‹αžαžΆαž“αŸαŸ‡αž‚αžΊαž‡αžΆ while loop construct αž αžΎαž™αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆ while loop construct αŸ” αž’αŸ’αžœαžΈαž˜αž½αž™αžŠαžΌαž…αž‡αžΆαž€αžšαžŽαžΈαž”αŸ’αžαžΌαžšαžŸαŸ’αž˜αž»αž‚αŸ’αžšαžŸαŸ’αž˜αžΆαž‰αŸ”

αž’αžšαž‚αž»αžŽαž…αŸ†αž–αŸ„αŸ‡αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž“αŸαŸ‡ αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚αž”αŸ’αžšαŸ‚αžαžΆαž˜αž·αž“αž›αžΏαž“αž‘αŸαŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸƒαž€αžΆαžšαž€αŸ‚αž”αŸ’αžšαŸ‚αžšαž”αžŸαŸ‹αžœαžΆαž”αžΆαž“αž€αžΎαž“αž‘αžΎαž„αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž›αžΏαž“αž‡αžΆαž„αž€αžΆαž αŸ’αžœαŸαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αžαŸ’αžšαž‡αžΆαž€αŸ‹αž…αž»αŸ‡αŸ” αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš OOP αž–αŸαž‰αž›αŸαž‰αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αžαž·αž…αž‡αžΆαž„αž˜αž½αž™αžŸαž”αŸ’αžαžΆαž αŸαŸ”

αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž€αžΌαžŠ

αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αž‡αžΆαž€αžΆαžšαž–αž·αž αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž”αžΆαž“αž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αž˜αž»αž“ (αž αžΎαž™αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™ αžŠαžšαžΆαž”αžŽαžΆαž˜αž“αž»αžŸαŸ’αžŸαž˜αŸ’αž“αžΆαž€αŸ‹αž‘αž‘αž½αž›αž”αžΆαž“αžœαžΆ)αŸ” αžšαž αžΌαžαž˜αž€αžŠαž›αŸ‹αž–αŸαž›αž“αŸαŸ‡ αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžŠαžΉαž„αž–αžΈαžšαž”αŸ€αž”αž€αžΆαžαŸ‹αž€αžΌαžŠαžŠαŸ‚αž›αž˜αž·αž“αž”αŸ’αžšαžΎ ថេរ αž“αž·αž„αž€αžΆαžšαž“αžΆαŸ†αž…αžΌαž›αž–αžΈαžŸαž“αŸ’αž“αž·αž”αžΆαžαŸ” αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸαŸ‡αž•αž„αžŠαŸ‚αžš αžαŸαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαžŠαžΌαž…αž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ†αž“αž½αžŸαžŠαŸ„αž™αž˜αž½αž™αŸ” αž’αžŸαŸ‹αž αžΎαž™αŸ”

αž—αžΆαžŸαžΆαž˜αŸ‰αžΆαžŸ

αž‚αŸ†αž“αž·αžαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž—αžΆαžŸαžΆ

αž‚αŸ†αž“αž·αžαž…αž˜αŸ’αž”αž„αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž’αž—αž·αžœαžŒαŸ’αžαž—αžΆαžŸαžΆαžŠαŸ‚αž›αž˜αžΆαž“αž˜αž»αžαž„αžΆαžš αž“αž·αž„αžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αŸ” αžαŸ’αž‰αž»αŸ†β€‹αž‚αž·αžβ€‹αžαžΆβ€‹αž€αžΆαžšβ€‹αž’αž—αž·αžœαžŒαŸ’αžβ€‹αžαŸ’αžšαžΌαžœβ€‹αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™β€‹αž‡αžΆαž˜αž½αž™β€‹αž“αžΉαž„β€‹αž€αž·αž…αŸ’αž…αž€αžΆαžšβ€‹αžšαž”αžŸαŸ‹β€‹αžαŸ’αž›αž½αž“β€‹αžŠαŸ„αž™β€‹αžŸαŸ†αž‘αŸαž„β€‹αžαŸ’αž›αžΆαŸ†αž„αŸ”

αž”αŸ’αž›αž»αž€αž€αžΌαžŠ αž“αžΈαžαž·αžœαž·αž’αžΈ αž“αž·αž„αž˜αž»αžαž„αžΆαžš

αžŸαŸ†αžŽαž„αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžŠαŸ„αž™αžŸαž‰αŸ’αž‰αžΆαŸ” : αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αžŠαŸ„αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš αž”αž‰αŸ’αž…αž”αŸ‹.

αž“αžΈαžαž·αžœαž·αž’αžΈ αž“αž·αž„αž˜αž»αžαž„αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸαžαžΆαž‡αžΆ proc αž“αž·αž„ func αžšαŸ€αž„αž‚αŸ’αž“αžΆαŸ” αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαž™αž€αŸ’αž“αž»αž„αžœαž„αŸ‹αž€αŸ’αžšαž…αž€αŸ” αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαžŠαžΌαž…αž‡αžΆαž—αžΆαžŸαžΆαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αŸ”

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰ αž’αŸ’αž“αž€αž’αžΆαž…αžαŸ’αžšαž‘αž”αŸ‹αžαž˜αŸ’αž›αŸƒαž–αžΈαž’αž“αž»αž‚αž˜αž“αŸ αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš αž”αŸ†αž”αŸ‚αž€ αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž…αŸαž‰αž–αžΈαž“αžΈαžαž·αžœαž·αž’αžΈ / αž˜αž»αžαž„αžΆαžš (αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž“αŸ…αžαžΆαž„αž€αŸ’αžšαŸ…αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†) αŸ”

αž€αžΌαžŠαž‚αŸ†αžšαžΌαŸ–

...

func summ(a, b):
  return a + b
end

proc main():
  println(summ(inputln(), inputln()))
end

αž€αžΆαžšαžšαž…αž“αžΆαžŠαŸ‚αž›αž‚αžΆαŸ†αž‘αŸ’αžš

  • αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αŸ– αžŸαž˜αŸ’αžšαžΆαž”αŸ‹..αž”αž‰αŸ’αž…αž”αŸ‹ αžαžŽαŸˆαž–αŸαž›..αž”αž‰αŸ’αž…αž”αŸ‹ αžšαž αžΌαžαžŠαž›αŸ‹..αž”αž‰αŸ’αž…αž”αŸ‹
  • αž›αž€αŸ’αžαžαžŽαŸ’αžŒαŸ– if..[else..] end, switch..[case..end..][else..] end
  • αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαŸ– proc <name>():... end, func <name>():... end
  • Label & goto: <name>:, jump <name>
  • αž€αžΆαžšβ€‹αžšαžΆαž”αŸ‹β€‹αž”αž‰αŸ’αž…αžΌαž›β€‹αž‚αŸ’αž“αžΆβ€‹αž“αž·αž„β€‹αž’αžΆαžšαŸβ€‹αžαŸαžšαŸ”

ធថេរ

αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αž–αž½αž€αžœαžΆαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž¬αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžŸαžšαžŸαŸαžš var αž˜αž»αž“αž–αŸαž›αž€αŸ†αžŽαžαŸ‹αžœαžΆαŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž€αžΌαžŠαŸ–

a ?= 10
b ?= a + 20

var a = 10, b = a + 20

αž’αžαŸαžšαžŸαž€αž› αž“αž·αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαŸ”

OOP

αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαžŽαžΆαžŸαŸ‹, αž™αžΎαž„αž”αžΆαž“αž˜αž€αžŠαž›αŸ‹αž”αŸ’αžšαž’αžΆαž“αž”αž‘αžŠαŸ‚αž›αž†αŸ’αž„αžΆαž‰αŸ‹αž”αŸ†αž•αž»αžαŸ” Mash αž‚αžΆαŸ†αž‘αŸ’αžšαž‚αŸ†αžšαžΌαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαž˜αŸ’αžšαž„αŸ‹αž‘αž·αžŸαžœαžαŸ’αžαž»αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αžαŸ’αž“αžΆαž€αŸ‹, αž˜αžšαžαž€, αž–αž αž»αž“αž·αž™αž˜ (αžšαž½αž˜αž‘αžΆαŸ†αž„αžαžΆαž˜αžœαž“αŸ’αž), αž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžαžΆαž˜αžœαž“αŸ’αžαž“αž·αž„αžœαž·αž…αžΆαžšαžŽαž‰αžΆαžŽ (αž–αŸαž‰αž›αŸαž‰) αŸ”

αž”αžΎαž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž”αŸ’αžšαž»αž„αž”αŸ’αžšαž™αŸαžαŸ’αž“αž‘αŸ αžœαžΆαž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αžαž›αŸ‹αž§αž‘αžΆαž αžšαžŽαŸαž€αžΌαžŠαŸ”

αžαŸ’αž“αžΆαž€αŸ‹αžŸαžΆαž˜αž‰αŸ’αž‰αž“αž·αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžœαžΆαŸ–

uses <bf>
uses <crt>

class MyClass:
  var a, b
  proc Create, Free
  func Summ
end

proc MyClass::Create(a, b):
  $a = new(a)
  $b = new(b)
end

proc MyClass::Free():
  Free($a, $b)
  $rem()
end

func MyClass::Summ():
  return $a + $b
end

proc main():
  x ?= new MyClass(10, 20)
  println(x->Summ())
  x->Free()
end

αž‘αž·αž“αŸ’αž“αž•αž›: 30 αŸ”

αž˜αžšαžαž€ αž“αž·αž„αž–αž αž»αž˜αžšαžαž€αŸ–

uses <bf>
uses <crt>

class MyClass:
  var a, b
  proc Create, Free
  func Summ
end

proc MyClass::Create(a, b):
  $a = new(a)
  $b = new(b)
end

proc MyClass::Free():
  Free($a, $b)
  $rem()
end

func MyClass::Summ():
  return $a + $b
end

class MyNewClass(MyClass):
  func Summ
end

func MyNewClass::Summ():
  return ($a + $b) * 2
end

proc main():
  x ?= new MyNewClass(10, 20)
  println(x->Summ())
  x->Free()
end

αž‘αž·αž“αŸ’αž“αž•αž›: 60 αŸ”

αž…αž»αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž…αŸ†αž–αŸ„αŸ‡ αžŒαžΈαžŽαžΆαž˜αž·αž€αž”αŸ‰αžΌαž›αžΈαž˜αŸαžšαž αŸ’αžœαžΈαžŸ? αž˜αŸ‚αž“αž αžΎαž™ αž“αŸαŸ‡αž‡αžΆαž€αžΆαžšαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„!

uses <bf>
uses <crt>

class MyClass:
  var a, b
  proc Create, Free
  func Summ
end

proc MyClass::Create(a, b):
  $a = new(a)
  $b = new(b)
end

proc MyClass::Free():
  Free($a, $b)
  $rem()
end

func MyClass::Summ():
  return $a + $b
end

class MyNewClass(MyClass):
  func Summ
end

func MyNewClass::Summ():
  return ($a + $b) * 2
end

proc main():
  x ?= new MyClass(10, 20)
  x->Summ ?= MyNewClass::Summ
  println(x->Summ())
  x->Free()
end

αž‘αž·αž“αŸ’αž“αž•αž›: 60 αŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž…αžΌαžšαž™αžΎαž„αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž”αž“αŸ’αžαž·αž… αžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž…αžΆαžšαžŽαžΆαž’αŸ†αž–αžΈαžαž˜αŸ’αž›αŸƒ αž“αž·αž„αžαŸ’αž“αžΆαž€αŸ‹αžŸαžΆαž˜αž‰αŸ’αž‰αŸ—αŸ–

uses <bf>
uses <crt>

class MyClass:
  var a, b
end

proc main():
  x ?= new MyClass
  println(BoolToStr(x->type == MyClass))
  x->rem()
  println(BoolToStr(typeof(3.14) == typeReal))
end

αž›αž‘αŸ’αž’αž•αž›αž“αžΉαž„αŸ– αž–αž·αž, αž–αž·αžαŸ”

αž’αŸ†αž–αžΈαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž…αžΆαžαŸ‹αžαžΆαŸ†αž„ αž“αž·αž„αžŸαž‰αŸ’αž‰αžΆαž…αž„αŸ’αž’αž»αž›αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹

αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš ?= αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αŸ’αžšαžΎβ€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž€αŸ†αžŽαžαŸ‹β€‹αž’αžαŸαžšβ€‹αž‘αŸ’αžšαž“αž·αž…β€‹αž‘αŸ…β€‹αžαž˜αŸ’αž›αŸƒβ€‹αž€αŸ’αž“αž»αž„β€‹αž’αž„αŸ’αž‚β€‹αž…αž„αž…αžΆαŸ†αŸ”
αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžš = αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž˜αŸ’αž›αŸƒαž€αŸ’αž“αž»αž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžŠαŸ„αž™αž”αŸ’αžšαžΎαž‘αŸ’αžšαž“αž·αž…αž–αžΈαž’αžαŸαžšαŸ”
αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αž”αž“αŸ’αžαž·αž…αž’αŸ†αž–αžΈαž‘αŸ’αžšαž“αž·αž…αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž–αž½αž€αžœαžΆαž‘αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž–αž½αž€αž‚αŸαž˜αžΆαž“αŸ”
@<variable> β€” αž™αž€αž‘αŸ’αžšαž“αž·αž…αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αž‘αŸ…αž’αžαŸαžšαŸ”
?<variable> β€” αž‘αž‘αž½αž›αž”αžΆαž“αž’αžαŸαžšαžŠαŸ„αž™αž‘αŸ’αžšαž“αž·αž…αŸ”
@= β€” αž€αŸ†αžŽαžαŸ‹αžαž˜αŸ’αž›αŸƒαž‘αŸ…αž’αžαŸαžšαžŠαŸ„αž™αž‘αŸ’αžšαž“αž·αž…αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž‘αŸ…αžœαžΆαŸ”

αž€αžΌαžŠαž‚αŸ†αžšαžΌαŸ–

uses <bf>
uses <crt>

proc main():
  var a = 10, b
  b ?= @a
  PrintLn(b)
  b ?= ?b
  PrintLn(b)
  b++
  PrintLn(a)
  InputLn()
end

αž“αžΉαž„αž”αž‰αŸ’αž…αŸαž‰αŸ– αž›αŸαžαž˜αž½αž™αž…αŸ†αž“αž½αž“ ៑០, αŸ‘αŸ‘αŸ”

αžŸαžΆαž€αž›αŸ’αž”αž„..[αž…αžΆαž”αŸ‹..] [αž…αž»αž„αž€αŸ’αžšαŸ„αž™..]αž…αž”αŸ‹

αž€αžΌαžŠαž‚αŸ†αžšαžΌαŸ–

uses <bf>
uses <crt>

proc main():
  println("Start")
  try:
    println("Trying to do something...")
    a ?= 10 / 0
  catch:
    println(getError())
  finally:
    println("Finally")
  end
  println("End")
  inputln()
end

αž•αŸ‚αž“αž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αž“αžΆαž‚αž

αžαŸ’αž‰αž»αŸ†αž”αž“αŸ’αžαžŸαž˜αŸ’αž›αžΉαž„αž˜αžΎαž› GraalVM & TruffleαŸ” αž”αžšαž·αž™αžΆαž€αžΆαžŸαž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž˜αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ JIT αž‘αŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αŸ’αž“αž»αž„αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž”αŸ’αžšαž€αž½αžαž”αŸ’αžšαž‡αŸ‚αž„αž‡αžΆαž˜αž½αž™ Python αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αžαŸ’αž‰αž»αŸ†αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž’αžΆαž…αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž…αž„αž€αŸ’αžšαž„ JIT αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎ GraalVM ឬ LLVM αŸ”

αžƒαŸ’αž›αžΆαŸ†αž„

αž’αŸ’αž“αž€αž’αžΆαž…αž›αŸαž„αž‡αžΆαž˜αž½αž™αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„αž’αŸ’αžœαžΎαžαžΆαž˜αž‚αž˜αŸ’αžšαŸ„αž„αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ”

αž‚αŸαž αž‘αŸ†αž–αŸαžš
αžƒαŸ’αž›αžΆαŸ†αž„αž“αŸ…αž›αžΎ GitHub

αžŸαžΌαž˜αž’αžšαž‚αž»αžŽαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αžΆαž“αžŠαž›αŸ‹αž‘αžΈαž”αž‰αŸ’αž…αž”αŸ‹ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αžΆαž“αž’αŸ’αžœαžΎαŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹