ஜூன் 24, 2015

Compiler தெரியும், அதென்ன Transpiler?


Compiler, Interpreter பற்றி கணினி பாடத்திட்டத்தில் ஏற்கனவே படித்திருப்போம்.  Transpilerரும் ஒருவகையான compilerதான்.  ஆனால் இரண்டும் எவ்வாறு வேறுபடுகிறதெனத் தெரிந்து கொள்வோம்.
Interpreter என்பது ஒரு புரோகிராமிங் மொழியை கணினிக்கு ஏற்றவாறு ஒட்டுமொத்தமாக மாற்றாது.  Interpreted மொழிகள் மனிதன் புரிந்து கொள்ளும் நிலையிலேயே (human friendly, not machine friendly) வெளியிடப்படும்.  Interpreterரில் இயங்கும்போதுதான் ஒவ்வோரு வரியாக கணினிக்கு ஏற்றவாறு மாற்றம் கொள்ளும்.  Javascript, Visual Basic, VBScript, MATLAB, Perl, PHP, Python, Java Byte code (ஜாவா மொழி முதலில் compile செய்யப்பட்டு பின்னர் JVMல் interpret செய்யப்படுகிறது ) போன்ற மொழிகள் Interpreted நிரல் மொழிகளுக்கு எடுத்துக்காட்டு.

hello.vbs (create and save in notepad, just double click to run) 
msgbox "hello... I m running n a interpreter"
















Compilerரின் வேலை மேல்நிலை புரொகிரமிங் மொழியை (high level) கணினிக்கு ஏற்றவாறு கீழ்நிலை மொழியாக (low level) மாற்றுவது.  C, C++, Java (compiles to Byte code), C#, GO போன்ற நிரல் மொழிகள் compiled மொழிகளுக்கு எடுத்துக்காட்டு.


Transpilerரும் ஒரு நிரல் மொழியை மொத்தமாக மற்றொரு மொழியாக மாற்றும் மென்பொருள் உருவாக்கக் கருவிதான்.  என்ன வேறுபாடென்றால் Compiler மேல் நிலை மொழியை தன்னைவிட கீழ் நிலை மொழியாக
மாற்றும்.



ஆனால் Transpiler மேல் நிலை மொழியை அதன் சம நிலையிலேயே உள்ள மற்றொரு நிரல் மொழியாக மாற்றும் எடுத்துகாட்டிற்கு Coffeescript என்பது மேல்நிலை நிரல் மொழி (Scripting language).  Coffescriptல் எழுதும் நிரலை Coffeescript transpiler வேறொரு மேல்நிலை மொழியான Javascriptடாக மாற்றி விடும்.  Javascriptடை வெளியீடாகக் தரும் ஏகப்பட்ட Transpilerகள் இருக்கிறது.  மைக்ரோசாப்ட் உருவாக்கிய TypeScript மொழியும் Javascriptடாக transpile செய்யப்படும்  ஒரு மொழிக்கு நல்ல எடுத்துக்காட்டு.

சில மொழிகளில் எழுதப்பட்ட நிரல்கள், அந்த மொழியின் புதிய பதிப்பிற்கு மாற்றம் செய்யும் போது நிறைய பிரச்சனைகள் வரும் (backward compatability இருக்காது).  இதை தவிர்க்க அல்லது ஓரளவாவது சரிசெய்ய அந்த மொழிகளின் transpiler toolகளைப் பயன்படுத்தலாம்.  எடுத்துகாட்டிற்கு Python2ல் செய்த நிரலை 2to3 transpiler கருவி மூலம் Python3 syntaxசிற்கு மாற்றிக் கொள்ளலாம்.

Transpilerருக்கு இணையான கலைச்சொல் ஒன்றை அன்பர்கள் பரிந்துரைக்கவும்.

Compiler    -  நிரல்மொழி மாற்றி என வைத்துக் கொண்டால்
Transpiler  -  இணைநிலை நிரல்மொழி மாற்றி என்பது பொருந்துமா!