முதலில் அசெம்பிளி மொழியில் தொடங்கி இன்று ரூபி மொழி வரை கணினி நிரல் மொழிகள் வளர்ந்து வந்திருக்கின்றன. ஒரு நிரைவான கணிமொழி நம் பேச்சுவழக்கைக் கொண்டு இயங்கும். மனிதர்களைப் போல் புரிந்துகொள்ளும் சக்தியுடையதாய் இருக்கும். ஆனால் அதற்கு இன்னும் வருடங்கள் பல ஆகும். அசெம்பிளி மொழியில் வெறும் சில எளிய கட்டளை தொகுப்புகளில் தொடங்கி இன்று ரூபியில் எளிய ஆங்கில பிரயோகங்களாக வளர்ந்திருக்கிறது. அதாவது அசெம்பிளி மொழியில் ஒரு சின்ன கூட்டல் செய்ய தோராயமாக இப்படி எழுதலாம்:
MOV A,2
MOV B,3
ADD ..
ஒரு சின்ன கூட்டலே இவ்வளவு வரிகளென்றால் இன்று இயங்கும் அனைத்து நிரல்களையும் உருவாக்க துவக்கப்பள்ளி முதல் இந்தியாவிலுள்ள அனைவரையும் மென்பொருள் எழுதச் சொன்னால்கூட மாளாது. இதனால் கொஞ்சம் மேம்பட்டு நம் சிந்தனையை பிரதிபலிக்கும் வகையில் பரவலாக பயன்படுத்தபடும் C++'ல் இதையே மெருகூட்டி இப்படி எழுதலாம்:
cout << 2+3;
இப்பொழுது பரவலாக பேசப்படும் கணிமொழி ரூபியில் இதையே - 2.plus 3 என்று எளிமையாக பேசுவதுபோல் எழுதலாம். இந்த எளிமை அடிப்படை விஷயங்களில் மட்டுமே. இன்னும் கணிமொழி என்பது நாம் சரளமாக பேசும் மொழியிலிருந்து மாறுபட்டே இருக்கிறது. சரி அப்ப என்னதான் சொல்ல வற்றேன்கறீங்களா?

ஒரு (கணி)மொழி என்றால் இரண்டு விஷயங்களுண்டு - syntax, semantics. இவை அம்மொழியின் இலக்கணம், விதிகள் இவற்றை குறிக்கின்றது. கணி அறிவியலாலர்கள் ஒரு நிரைவான கணிமொழி என்பது மனிதர்களாகிய நாம் பயன்படுத்தும் மொழியின் syntax, semantics'ஐ ஒத்து இருக்கவேண்டும் என்கிறார்கள். ஆதலால் நம் syntax, semantics ஒத்து ஒரு புதிய மேம்பட்ட சங்கேதத்தை (a higher level abstract construct) உருவாக்க முயற்சிக்கின்றனர். பின்பு இந்த சங்கேதத்திலிருந்து நாம் தெரிவு செய்யும் கணிமொழியில் நிரல்மூலங்களை (program source code) உருவாக்கும். இதன் மூலம் நாம் எளிமையாக நிரல்களை எழுதுவதுடன் C++, python, ruby என வேண்டிய கணிமொழியில் நிரல்களை உருவாக்கிக் கொள்ளலாம்.
இந்த மேம்பட்ட சங்கேதம்தான் தற்போது Extended Backus Naur Form (EBNF) எனப்படுகிறது. இதில் ஆச்சர்யம் என்னவென்றால் இது அப்படியே சமஸ்கிருதத்தின் இலக்கணத்தை பிரதிபலிக்கிறது. ஆதலால் சமஸ்கிருத மொழியை ஆராய்ந்து அம்மொழியின் ஞானத்தை பயன்படுத்த எத்தனித்துள்ளனர். வருங்காலத்தில் சமஸ்கிருதத்திலேயே அல்லது தமிழிலோ அல்லது வேறெந்த மொழியிலும் நிரல்கள் எழுத இயலும். ஆனால் இவ்வனைத்து நிரல்களும் சமஸ்கிருதத்தின் இலக்கணத்தை சார்ந்திருக்கும் என்றால் அது மிகையல்ல. மேலும் தெளிவு பெற கூகிளில் தேட சில கூறுகள்: EBNF, Parser - Generators,, Ruby, Panini's grammar, computational linguistics.
பாணினியின் அஷ்டத்யயி படித்தால் அதன் எளிமையின் மேதமை விளங்கும். இதனால் சமஸ்கிருதம் கணினிக்காக உருவக்கப்பட்டதென்றோ மற்ற மொழிகளில் இது போன்ற சிறப்புகள் இல்லையா என்று வாதம் செய்யவேண்டாம். ஏதோ இந்த இடத்தில் சமஸ்கிருதம் உபயோகமாக இருக்கிறது என்று நினைத்துக் கொள்ளலாம். கணிமொழி என்பது மனிதன் கணினி மூலம் தனக்கு வேண்டியதை செய்யும் நிரலை உருவாக்க பயன்படுத்தும் ஒரு மொழியே.
நிரல் எழுதுவது ஒரு முகமென்றாலும், மனிதனோடு ஊடாட பயன்படுத்தும் இடைமுகம் (Human Computer Interface/Interaction | HCI) என்பது வேறொரு முகம். :-) சமஸ்கிருதம் உள்ளிட்ட ஏனைய இந்திய மொழிகளில் HCI'ல் பயன்படுத்த நிரைய சௌகரியங்கள் இருக்கின்றது. உதாரணத்திற்கு சில:
1. நம் மொழிகள் அனைத்தும் Monosyllabic - அதாவது ஒரு அட்சரத்திற்கு ஒரு ஒலி மாத்திரை. பொதுவாக வார்த்தைகள் ஒலிக்கும் போது silent letters கிடையாது. இதனால் பேச்சு உருவாக்கம் மற்றும் பேச்சு அறிதல் விஷயங்களில் சில நன்மைகள் பயக்கும்.
2. குறிப்பாக சமஸ்கிருதத்தில் மற்றும் இன்னபிற இந்திய மொழிகளில் ஒரு வாக்கியத்தில் noun, verb இத்யாதி எல்லாம் எந்த வரிசையில் வேண்டுமானாலும் இருக்கலாம். அத்தனையும் இலக்கணத்திற்கு உட்பட்டதுதான். இதனால் ஒரு இலக்கண திருத்தி (proofing tools) உருவாக்குவது எளிதாகிறது.
3. இந்திய மொழிகள் agglutinative வகையை வார்ந்தவை. இதனால் ஒரு வார்த்தையை புணர்ச்சி விதிகளின் உதவியுடன் அதன் கூறுகளை பிரித்து அவ்வார்த்தையின் அர்தத்தை புரிந்து கொள்ளலாம். This is very procedural and hence programmable!
இப்படி இன்னும் சில விஷயங்கள் உள்ளன. ஆனாலும் இதையெல்லாம் பயன்படுத்தி நம் மொழிகளுக்கான ஒரு முழுமையான நிரல் இன்னும் உருவாக்கபடவில்லை. வருத்தப் படவேண்டிய விஷயம்!
4 comments:
நன்றி பதிவாளரே, கணினித்துறையில் இருப்பவன் என்ற முறையில் தங்களது கருத்துக்களை அப்படியே ஏற்றுக்கொள்கிறேன்.....
வருகைக்கு நன்றி, மதுரையம்பதி. உங்களுக்கு இது இன்னும் ஆழமாக புரியும்.
I liked your detailed analysis of the programming language constructs. Actually your hope that we can program in tamil, has been tried before. It is being tried again, by the ஏழில் - ஒரு தமிழ் நிரல் மொழி
project ( http://students.uta.edu/mx/mxa6471/ ).
I would greatly appreciate if you can comment on the syntax/semantics of the language we can develop and push in Tamil. It could be a wonderful starting point, given we have something already.
Sincerely,
Muthiah
வணக்கம் yagna.
கிழக்கு மொட்டை மாடிக் கூட்டத்தில் கண்டதில் மகிழ்ச்சி. தயவுசெய்து ravidreams at gmail dot com என்ற முகவரிக்கு ஒரு மடல் எழுத இயலாமா? பல தமிழ்க் கணிமை முயற்சிகள் குறித்தும் உங்களுடன் தொடர்பில் இருக்க விரும்புகிறோம்.
நன்றி,
ரவி
Post a Comment