எழில் : முதல் பக்கம் வடிவமைப்பு

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

small-ezhil-splash-5
படம் 1: எழில் மொழி முதல் பக்கம் – செயலியில் தொடங்குதல்.
எழில் – தமிழ் கணினி மொழி

“தமிழில் நிரல்படுத்தி கணிமை பழகுவோம்!” என்பது புதிய கொள்கை

படம் சில மணி நேரம் முன்னேற வடிவமைக்கப்பட்டது. எந்த தமிழ் எழுத்துருக்கள் என்று சொல்லமுடியுமா உங்களால் ?

நன்றி

-முத்து

 

 

இரு கிளை மரம் தரவு உருவம் – (binary tree data structure)

கணிமையில் நமது மாறிலி (variables) மற்றும் தரவு மதிப்புகளை (data values) வரிசை படுத்தியோ அல்லது சீரற்ற வழியில் ஒரே மாதிரி அடுக்கி தரும் தரவு உருவம்  வகையில் (data structure) ஒன்று ‘இரு கிளை மரம்’ (binary tree)- இதனை இரட்டித்த மரம் என்றும் சுருக்கி சொல்லலாம்.

மரம் – நிஜமாவா ?

எண் ‘2’-ஐ  வேர் என்றும், ‘5’, ’11’, ‘4’, ‘2’ என்ற எண்கள் இலைகள் ஆகவும் இந்த இரட்டித்த மரம் அமைந்திருக்கு.

இது இயற்கையில் உள்ள இயற்கை மரம் போலவே காட்சி அளிக்குமோ என்று சந்தேக பட்டால், அது சரியானது! மரம் என்பதற்கு எப்படி,

  1. வேர் (root)
  2. கிளை (branch)
  3. இலைகள் (leaves)

உள்ளதோ அதே போன்று இந்த இரட்டித்த மரம் தரவு வகையில் இதற்கு இணையான (isomorphic) அம்சங்கள் இருக்கு. இந்த பதிவில் இதை பார்க்கலாம்.

இரட்டித்த மரம் நடுவோம் – கட்டுமானம்

மேல் கண்ட படத்தில் உள்ள மரத்தை எப்படி உருவாக்குவது ? இது சுலபம்.

மரத்தின் எல்லா மதிப்புகளையும்  நுனிகள் (nodes) என்று பெயரிடுவோம். இரட்டித்த மதத்தின் குணம் என்ன என்றால், நுனிகளில் இரண்டு கிளைகள் இருக்கும் – வலது (right) நுனி, இடது (left) நுனி, மற்றும் நுனியின் மதிப்பு (value).

முதலில் வேர் நுனி என எண் ‘2’ நியமிக்கவும். இந்த வேர் நுனியிர்க்கு இரண்டு வலது கிளை நுனி (right node) என எண் ‘5’-ம், இடது கிளை நுனி (left node) என எண் ‘7’-ம் அமைக்கவும்.

அடுத்து,  நுனி 7 என்பதில் வலது நுனி 6, இடது நுனி 2 எனவும் இணைக்கவும். நுனி 5-இல் வலது நுனி 9, மற்றும் 9-இன் இடது நுனி 4 எனவும் அமைக்கவும்.

கடைசியாக நுனி 6-இன் வலது புரம் 11 எனவும் இடது புரம் 5-உம் அமைக்கவும்.

இதனை போல் தொடர்ச்சியாக செய்தால் நமக்கு கணினி நினைவில் ஒரு ‘இரட்டித்த மரம்’ என்ற தரவு  உருவத்தை நீங்கள் செய்யலாம்.

விளக்க நிரல் எடுத்துகாட்டுகள் 

இந்த பதிவில் உள்ள நிரல்களை Github-இல் இருந்து இயக்கி பாருங்கள்.

பைதான் மொழியில், இதனை கீழ்கண்டவாறு செய்யலாம்:

root = make_tree(2)
node5 = make_tree(5)
node7 = make_tree(7)
set_right(root,node5)
set_left(root,node7)

node9 = make_tree(9)
node4 = make_tree(4)
set_right(node5,node9)
set_left(node9,node4)

node2 = make_tree(2)
node6 = make_tree(6)
set_right(node7,node6)
set_left(node7,node2)

node11 = make_tree(11)
node5 = make_tree(5)
set_right(node6,node11)
set_left(node6,node5)

எழில் மொழியில், இதனை கீழ்கண்டவாறு செய்யலாம்:

நிரல்பாகம் மரம்_செய்( அளவு )
# left, right,value
ம = {“இடது_நுனி”: [],”வலது_நுனி”: [], “மதிப்பு”:அளவு}
பின்கொடு ம
முடி

நிரல்பாகம் வலது_நுனி_செய்( வேர்நுனி, நுனி )
வேர்நுனி[“வலது_நுனி”] = நுனி
முடி

நிரல்பாகம் இடது_நுனி_செய்( வேர்நுனி, நுனி )
வேர்நுனி[“இடது_நுனி”] = நுனி
முடி

# இரட்டித்த மரம் நடுவோம் – கட்டுமானம்
வேர் = மரம்_செய்(2)
நுனி5 = மரம்_செய்(5)
நுனி7 = மரம்_செய்(7)
வலது_நுனி_செய்(வேர்,நுனி5)
இடது_நுனி_செய்(வேர்,நுனி7)

நுனி9 = மரம்_செய்(9)
நுனி4 = மரம்_செய்(4)
வலது_நுனி_செய்(நுனி5,நுனி9)
இடது_நுனி_செய்(நுனி9,நுனி4)

நுனி2 = மரம்_செய்(2)
நுனி6 = மரம்_செய்(6)
வலது_நுனி_செய்(நுனி7,நுனி6)
இடது_நுனி_செய்(நுனி7,நுனி2)

நுனி11 = மரம்_செய்(11)
நுனி5 = மரம்_செய்(5)
வலது_நுனி_செய்(நுனி6,நுனி11)
இடது_நுனி_செய்(நுனி6,நுனி5)

# மரம் நுனிகளை அனைத்தயும் வரிசையில் எடுப்பது
ம_வரிசை = பட்டியல்()
வரிசையில்_எடு( வேர், ம_வரிசை )
பதிப்பி ம_வரிசை

மரம் நுனிகளை அனைத்தயும் வரிசையில் எடுப்பது :

கேள்வி : “வேர் நுனி மட்டும் கிடைத்தால் மரம் நுனிகளை அனைத்தயும் வரிசையில் எப்படி எடுப்பது ? ”

இது ஒரு சராசரியான செயல்பாடு; எப்போது இரட்டித்த மரம் என்றாலும் உடனடியாக அந்த இடத்தில் “அனைத்து நுனிகளை எடுக்க” என்ற செயல் புரியும் தேவை உங்கள் கணிமை programming-இல் வந்து விடும்.

சரி இதன் கேள்விக்கு விடை ஒரு induction வழியாக பார்க்கலாம்;

  1. நிலை : மரத்தில் வேர் மற்றும் உள்ளது – (மொத்தம் 1 நுனி)
    • வேர்[“மதிப்பு”] மட்டும் அணுகினால் போதும்.
    • நமது மரம் படத்தில், 2
  2. நிலை : மரத்தில் 2 அல்லது 3 நுனிகள் மட்டும் உள்ளன.
    • வேர்[“இடது_நுனி”][“மதிப்பு”],   வேர்[“மதிப்பு”], வேர்[“வலது_நுனி”][“மதிப்பு”] என்ற வரிசையில் நுனிகளை சிந்திப்போம்
    • நமது மரத்தில், 7, 2, 5 என்றும் காண்போம்
  3. நிலை : மரத்தில் 4,5,6,7 அல்லது 8 நுனிகள்
    1. இரண்டாம் படியில் வேர் என்ற மாறிலிக்கு பதில் வேர்[“இடது_நுனி”], வேர்[“வலது_நுனி”] என்றும் கூடுதலாக தொடக்கத்தில் மாற்றத்தை செய்து செயல் பட்டால் இது முடிந்து விடும்

ஆகவே நமது செயல்முறை வழி (algorithm) என்பது இதன்போல் காட்சி அளிக்கும்:

வரிசையில் அணுகு ( உள்ளீடு : மரம் வேர்_நுனி )

படி 1: மரத்தின் இடது பக்கத்தை வரிசையில் அணுகு, எடு

படி 2: தன்னிலை வேர்_நுனி மதிப்பை எடு

படி 3: மரத்தின் வலது பக்கத்தை வரிசையில் அணுகு, எடு

இதுவே recursion சார்ந்த செயல்முறை வழி. இதனை ‘inorder traversal’ (நேர் வரிசையில் அணுகுதல் என்றும் சொல்லலாம். இது எப்படி செயல்படுகிறது என்பதை ஒரு காகிதத்தில் நீங்களே எழுதி பார்த்தால் இன்னமும் எளிமையாக இருக்கும்.   காணொளிகளை மற்ற மென்பொருள் பறிச்சியாளர்கள் youtube-இல்பார்க்கவும் பதிவித்தார்கள்.

எழில் மொழியில் இந்த நேர் வரிசை அணுகல் என்பதை நிரல்க்கி பார்த்தால்,

# walk in in-order; ப – பட்டியல் என்ற மாறிலி (ப- variable is a list)
நிரல்பாகம் வரிசையில்_எடு(வேர்,ப)
@( வேர்[“இடது_நுனி”] != [] ) ஆனால்
வரிசையில்_எடு( வேர்[“இடது_நுனி”] , ப)
முடி

பதிப்பி “%d,”, வேர்[“மதிப்பு”]
பின்இணை( ப, வேர்[“மதிப்பு”] )

@( வேர்[“வலது_நுனி”] != [] ) ஆனால்
வரிசையில்_எடு( வேர்[“வலது_நுனி”] , ப)
முடி

பின்கொடு ப
முடி

பைதான் மொழியில் இதனை, inorder traversal என்றும் எழுதலாம்

# walk in in-order
def walk_inorder(root,listval):
if root.left:
walk_inorder(root.left,listval)
#print(“%d, “%root.value)
listval.append(root.value)
if root.right:
walk_inorder(root.right,listval)
return

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

  1. நேர் வரிசை அணுகல் – inorder traversal
    • அணுகும் வரிசை: இடது, வேர், வலது
  2. தன் முன் வரிசை அணுகல் – pre-order traversal
    • அணுகும் வரிசை: வேர்இடது, வலது
  3. தன் பின் வரிசை அணுகல்  – post-order traversal
    • அணுகும் வரிசை: இடது, வலது, வேர்

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

virtual reality – VR technology links

Next level of user experience is already being defined in virtual reality and augmented reality. These two technologies are profiled in the OSA-OPN magazine issue here

What do you think will define next levels of learning/teaching Tamil in the VR world ? Can these technologies be used for the better Tamil engagement ?

-Muthu

 

மூளை குளம்பி – மைய கணினியை செயல்படுத்தும் எந்திர மொழி (Brain F**k interpreter in Ezhil language)

மூளை குளம்பி மைய கணினியை செயல்படுத்தும் எந்திர மொழி

(பாகம் 1)

(replica of) "Thinker" statue by Auguste Rodin, at the Baltimore Art Museum at the Johns Hopkin's University.
(replica of) “Thinker” statue by Auguste Rodin, at the Baltimore Art Museum at the Johns Hopkin’s University. (C) 2016, M. A.

கணினியை செயல்படுத்துவது அதன் மூலமான மைய கணினி; கணினியில் செயல்படும் அனைத்திற்கும் மூலமாக அமைவது அதன் மைய கணினி, மற்றும் அந்த மைய கணினியின் assembly மொழி (instruction set). சும்மா சொல்ல வேண்டுமானால் iPhone-இல் இருந்து, மடி கணினி, கைபேசி என்ற எல்லா செயலி சவுரியங்களுமே இதை போன்ற அடிப்படையில் தான் அடுக்கடுக்காக மென்பொருள்களை கொண்டு வடிவமைக்க பட்டுள்ளன.

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

மூளை குளம்பி மொழி [1] என்பது P” என்ற 1964-இல் உருவாக்கிய மொழியில் இருந்து உருவாக்கப்பட்டது. இந்த மொழியில் ‘+’, ‘-’, ‘[‘, ‘]’ , ‘>’, ‘<’ போன்ற செயலுறுபுகள் என்பதில் இருந்து ,மைய கணினி ஒன்றை உருவாக்கும் திறன் பெற்றது. மூளை குளம்பி என்ற மொழியில் வெளியிடு என்பதற்கு ‘.’ என்றும், உள்ளீடு என்பதற்கு ‘,’ என்றும் கூடுதலாக கொண்டாது.

செயலுறுபு விளக்கம் – (Operators)

  1. >’, ‘<‘ – செயலுறுபு நினைவகத்தை குறிக்கும் இடத்தை முன் அல்லது பின் திசையில் ஒரு இடம் அளவு மாற்றும்

  2. +’, ‘-‘ – செயலுறுபு நினைவகத்தின் மதிப்பை கூட்டும் அல்லது கழிக்கும்

  3. [‘, ‘]’ – செயலுறுபு நிரலின் இயக்கம் பகுதியின் அடுத்த அடைவுகுரிப்பிபிற்கு ‘]’, அல்லது தொடங்கும் குறி ‘[‘ –இற்கு தாவும் படி குறிக்கும்

  4. ,’ ’.’ – என்ற செயலுறுபு உள்ளிடு, வெளியீடு, குறிக்கும்

இன்று நாம் “மூளை குழம்பி” என்ற ஒரு மொழியை பற்றியும் புரிந்து கொண்டு இதனை செயல்படுத்தும் ஒரு எந்திரத்தை எழில் மொழியில் உருவாக்கலாம்.

மூளை குழம்பி மொழியின் அம்சங்கள்; இந்த மொழியில் எண்களை எப்படி எழுதுவது, எண்களை கூட்டுதல், “Hello World” என்று அழைப்பது எப்படி? என்றெல்லாம் உள்ள கேள்விகளுக்கு விடை காணலாம்.

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

இந்த மொழியில் நிரல்களை எழுதுவது ஒரு ஆதிகணினி மொழி அல்லது Turing Machine என்பதை போல் ஒரு தோற்றம் அளிக்கும். இதில் ஒரு எண்ணலி நீளமான பேப்பர் ஒன்றை நினைவகமாக கொண்டு ஒரு பேனா ஒன்றையும் கொண்டது. இந்த பேனாவை கொண்டு பேப்பரில் உள்ள கட்டங்களில் ‘1’ அல்லது ‘0’ என்று எழுதலாம்; அதாவது ‘1’ என்று எழுதினால் எழுதுவதாகவும், ‘0’ என்று எழுதினால் அழிப்பதாகவும் பொருள். நாம் நிரல் இயக்கத்தை தொடங்கும் பொழுது பேப்பர் நினைவகம் முழுவதும் ‘0’ (பூஜ்யம்) என்ற நிலையில் உள்ளதாக கொள்ளலாம் [2].

image1

படம்: டுரிங் எந்திரத்தின் பேப்பர் நினைவகமும், இயக்கம் முனையும்; [3]

  1. கணினி மொழிகள் அனைத்தும் ஒன்றுடன் ஒன்று டுரிங்எந்திரத்தின் வரையரைக்குள் சமன்பாடு கொண்டது (Turing-Completeness).

  2. ஒரு கல்குலேடர் (கணிப்பான்) செயல்படுத்தும் திறன் கொண்ட மொழி ஒன்றை உருவாக்கினால் இந்த மொழி டுரிங் மொழி என்பதற்கு சமன்பாடனது; இது போன்ற மொழியை இயக்கும் சக்தியுடைய எந்திரம், (Turing Machine) டுரிங் எந்திரம் என்பதற்கு சமமாகும்.

எண்களை எப்படி குரியீடுவது ?

இந்த மாதிரி ஒரு எந்திரத்தில் முதலில் நாம் எண்களை எப்படி குரியீடுவது ? இவ்வாறு கணினியில் ஏற்றிய எண்களை கொண்டு எப்படி கணிப்பது ? இந்த மொழியில் நிபந்தனை கூறுகளை எப்படி எழுதுவது ? இதனை நாம் இந்த கட்டுரை பிரிவில் காணலாம்:

எண்களை நாம் பேப்பர் நினைவகத்தில் ‘1’ என்று எண்ணின் மதிப்பின் அளவிற்கு அத்தனை முறை குறியீடவும்; .. 5 என்ற எண்ணை ‘11111’என்று அடுத்தடுத்த பேப்பர் நினைவகத்தின் கட்டத்தில் குறியிடலாம். இதற்க்கு எப்படி நிரல் எழுதுவது ? பேனாவை கொண்டு முதலில் ‘1’ என்று எழுத ‘+’ என்ற செயலுருபை பயன்படுத்தலாம். அடுத்த பேப்பர் கட்டத்திருக்கு செல்ல ‘>’ என்ற செயலுறுபை பயன்படுத்தலாம். மொத்தமாக, நினைவகத்தில் ‘11111’ என்று எழுத, ‘+>’ என்று ஐந்து முறை எழுதினால் ‘+>+>+>+>+>’ என்பது 5 என்ற எண்ணை குறியிடும் மூளை குளம்பி நிரல் ஆகும்.

இப்பொழுது P” மொழியில், மூளை குழம்பி மொழியில் உள்ள நினைவகத்தில் எந்த 8-பிட் எங்களையும் சேமிக்கலாம் என்றால், இதே எங்களை குறியீடும் நிரலை, 5 என்ற எண்ணை ‘+++++’ என்றும் எழுதலாம்.

தாவும் தன்மை உடைய மடக்கு கட்டளைகள்

இப்பொழுது இந்த மொழியில் மடக்கு வாக்கியத்தை எப்படி செயல்படுத்துவது என்று பார்க்கலாம். மடக்கு வாக்கியம் தொடக்கத்தை குறி ‘[‘ என்றும், இதன் முடிவை குறி ‘]’ என்று குறியிடலாம். இதன் பொருள், குறி ‘[‘ என்ற கட்டளையை கண்டபின் , தற்போது உள்ள பேப்பர் நினைவகத்தின் மதிப்பு பூஜியத்தின் அளவை விட கூடுதலாக இருந்தால் தொடரும் கட்டளைகளை இயக்கும்; இல்லையெனில் இதனை ஒடுத்த (பின்னால் வரும்) குறி ‘]’ முடிவு கட்டளையின் பின் வரும் கட்டளைகளுக்கு செல்லும் (தாவும் – Jump என்றே கொள்ளலாம்).

இதே போல் ‘]’ முடிவு கட்டளை, மடக்கு வக்கியதினை பழயபடி தொடங்கும் (இதனை ஓடுத்த, முன்னால் வரும்) குறி ‘[‘ கட்டளையிற்கு செல்லும். இதில் ஒப்பீடு என்றும் ஏதும் இல்லை.

எண்களை கூட்டுதல் எப்படி ?

மடக்கு கட்டளைகை கொண்டு எப்படி இரண்டு எண்களை கூட்டுவது ? நமது கணினியில் ஏற்கனவே 9, 10 என்ற எண்கள் நினைவகத்தில் உள்ளன என்று கொள்வோம்; இப்போது இரண்டாவது எண் 10-உடன் 9-முறை 1-ஐ கூட்டினால் நமக்கு விடை கிடைத்துவிடும் அல்லவா! இதை எப்படி மூளை குளம்பியில் எழுதுவது ? இது சிறிது சாதாரணமான மடக்கு வாக்கியத்தால் முடியும்,

[->+<]

இந்த நிரல் இயங்கியபின் நினைவகத்தில், 0, 19, என்று தோன்றி 19 உங்கள் விடை ஆகும். இதனை திரையில் இட, ‘.’ என்பதை சேர்த்துகொள்ளுங்கள்

[->+<].

மேலும் இந்த நிரல் ஏதேனும் இரண்டு எண்களை கூட்டவும் உதவும், 9, 10 மட்டுமல்ல!

முடிவிலா விடுகதை

இந்த மொழியில் தவறாக

+[]

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

Hello World” என்று அழைப்பது

மேல்கண்ட அம்சங்களை ஒருங்கினைத்து ஒரு வணக்கம் உலகம் (“Hello World”) என்று வெளியிடுவதற்கு ஒரு மூளை குளம்பி நிரலை இப்படி எழுதலாம்,

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>—.+++++++..+++.>>.<-.<.+++.——.——–.

மேல்கண்ட அம்சங்களை ஒருங்கினைத்து ஒரு (மென்பொருளில்) எந்திரம் ஒன்றை நிரல்படுத்துவது பற்றி அடுத்த அத்தியாயத்தில் விளக்கத்துடன் பார்க்கலாம். அதுவரை இந்த நிரலை எழில் மொழி வழி இயக்குவதற்கு மூல நிரலுக்கு இங்கு github-இல் பார்க்கவும் [4].

(அடுத்த அத்தியாயத்தில் எழில் வழி இந்த மொழியை இயக்குவது பற்றி பற்கலாம்)

மேற்கோள்கள்

  1. மூளை குளம்பி மொழி https://en.wikipedia.org/wiki/P′′

  2. கணினியின் கோட்பாடுகளை கண்டறிந்த மேதை அலன் டுரிங்

  3. டுரிங் எந்திரம் விக்கிபீடியா

  4. எழில் வழி மாதிரி இயக்கி

‘மிலுவாக்கீ’ எந்த அமெரிக்கா மாநிலத்தில் உள்ளது?

இந்த கட்டுரை 2015-இல் எழுதியது; மாற்றங்களின்றி இங்கே;

தமிழில் மென்பொருள் சூழலை எப்படி உருவாக்குவது

பாஸ்டன் அமெரிக்கா ஜுலை 10, 2015

தமிழில், தமிழ்மொழி பயன்பாட்டையும், கலாச்சாரத்தையும் முதன்மையாகக் கொண்ட மென்பொருள் ஏன் இந்த “ஆஃப்” காலத்திலும் குறைவாக உள்ளது? நாம் வளர்ந்து முன்னேறும்போது நம் மொழியினை தக்கவைத்துவிட்டுச் செல்வது சரியா? என்ற கேள்வியைத்தான் இந்த கட்டுரையில் விரிவாக ஆராயப்போகிறேன்?.

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

பொறியாளர் என்ற கோணத்தில் பார்த்தால் காரணம் சிலவற்றை சுட்டிக்காட்டலாம்.

1. குறியீடு முறைகள் சற்றே சிக்கலாக இருப்பதால் தமிழ் சார்ந்த தமிழ் உரை ஆலோசனை /ஆய்வு நிரல்கள் எழுதுவது ஒரு சிக்கலாக உள்ளது.

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

3. நம் தமிழ் செயலிகள், Siri, Cortana, Google Voice போன்ற சேவைகளைப் பயன்படுத்தி உருவாக்கிய நிரல்களை விட ஒரு படி குறைவாகவே தோன்றும்.

4. தமிழ்மொழிச்செயலிகள் உருவாக்க ஒரு நிரல்தொகுப்பு (Standard Library) இல்லாதது ஒரு பயிலும் மாணவருக்கு தமிழ்மொழி செயலி உருவாக்கல் கடினமாக்குகிறது.

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

கட்டுரை அமைப்பு

முதலில் என்னுடைய பங்களிப்புகளில் சிலவற்றைப் பார்க்கலாம். தமிழ் நிரலாக்க மொழி பற்றியும், எந்த ஒரு கேள்விக்கு பதில் அளிக்கிறது என்பதையும் பார்க்கலாம்.

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

முடிவாக எனது முக்கோண திட்டத்தை முன் வைக்கிறேன்.

எழில் தமிழ் நிரலாக்கல் மொழி

எழில் (http://ezhillang.org) என்பது ஒரு நிரலாக்கல் மொழி (Programming Language) பெரும்பாலான நிரலாக்கல் மொழிகள் ஆங்கிலத்தில் தான் உள்ளன. தமிழில் கணிமையின் கட்டமைப்புகளைக் கையாண்டு சிலர் முயன்ற போதிலும், எழில் மொழிமட்டும் தனித்துவம் வாய்ந்து அமைந்தள்ளது. ஏனெனில் எழில் மொழியில் மட்டுமே கட்டளைகளை தமிழ் மொழி போன்ற சொற்றொடரியல் இலக்கணத்தை கொண்டது. இம்மொழியின் சிறப்பு அம்சம்.

1. எழில் மொழி திறமூல மென்பொருள் இணையம் வழி கற்றிடலாம் மற்றும்

2. இதனைக் கற்பதற்கு தமிழில் நிரல் எழுது என்ற துணை கையேடும் வெளியிடப்பட்டுள்ளது. இந்தப் புத்தகம் அச்சில் உள்ளது.

3. கணிமை மூதாதையர் அலன் டியூரிங் அவரின் வழி டியூரிங் வரையறைக்குள் முழுமையாக (Turning complete) உள்ளது.

தமிழ் மட்டும் அறிந்த மாணவர்கள் கணிமை துறையில் பின்தங்கியதாக இருக்க வேண்டாம்?. அந்த நிரலாக்கல் திறன் இன்று எழில் தமிழ் வழியாகவும் ஆங்கிலம் சார்ந்ததாக உள்ளது. கையில் சொற்கள் இருப்பினும் தமிழில் முதன்மையாக நிரல் எழுத வசதியில்லை. 2007இல் தோற்றம் எடுத்தாலும் எனது முதுநிலைப் படிப்பின் காரணமாக 2009 முதல் 2012 ஆண்டுகள் வரை அதிகம் மேம்படுத்தப்படாமல் இருந்தது. திரும்ப 2013 முதல் இந்த திட்டம் மறுபிறப்பேடுத்து இணையம் வழி வழங்கப்பட்டது.

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

1. ஆங்கிலத்தில் இல்லாத சில நிரலாக்க மொழிசார்ந்த குறியீடு சார்ந்த சிக்கல்கள்.

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

3. மேலும் கூறினால் தொழில் நுட்பத்தில் முதலீடு செய்யவும்

4. இலாபம் பார்க்கும் வரை தாக்குப்பிடிக்க பண வசதி செய்ய யாரும் இல்லை.

5. அரசாங்கத்தின் உதவி பெறும் தனியார் நிறுவனங்கள் மட்டும் உள்ளன.

6. நாம் எப்படி அடுத்த கட்ட இளைஞர்களை தமிழ் பொறியியலில் தயார் செய்யலாம்?.

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

தமிழ் இலக்கிய தோட்டம் (..தோ) ஆண்டு விழா டொரன்டோ, கனடா இந்த ஆண்டு ஜுன் 13ஆம் நாள் நடந்தது. 2014–ஆம் ஆண்டு தமிழ் கணிமைக்கான விருதை த..தோ. கலச்சுவடு அறக்கட்டளையின் சார்பில் நான் உருவாக்கிய எழில் என்ற நிரலாக்க மொழி விருது பெற்றது மிகுந்த மிகழ்ச்சி. INFITT, ..தோ போன்ற அறக்கட்டளைகளைத் தொடர்ந்து சிறப்பாக செயல்பட வேண்டும்.

சிலோன் பெயர் கொடுத்த ஆங்கில சொல் ‘serendip’ – `serendipity’- என்று தேட அதிர்ஷ்டமாய் வந்த த..பே.தா அழைப்பு மற்றும் விருது என் வாழ்வில் ஒரு மையில் கல் ஆக அமைந்தது.

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

நேரம் படிக்கும் கெடிகாரம்

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

 

இதற்கு காரணங்கள் இரண்டு

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

2. இதை வைத்து ஒரு சில எண், சொல் (.கா. 100, 1000 – நூறு ஆயிரம் இவற்றிற்கு மட்டும் ஆண், பெண் குரலில் ஒலி வடிவ கோப்புகளை சேமிக்கவும்.

இதற்கு 63 ஒலி வடிவு குரல் கோப்புகள் மட்டும் தேவைப்படுகின்றது. இதை மட்டும் வைத்து எந்த எண் ஆனாலும் அதை ஒலி வடிவில் தானியங்கியாக கணினி வழியில் ஒலியாக்கலாம்.

இதை வைத்து 6 முதல் 10,000 கோடி வரை முழு எண்.1729 ஆனாலும் தசம எண்.3.14159 ஆனாலும் அழகாக ஆண் குரலிலோ பெண் குரலிலோ ஒலி வடிவமைக்கலாம். இதன் சான்றுகளை இந்த சுட்டியின் வழி கேட்டிடலாம். https://soundcloud.com/ezhil-lang

குரல் கிடைத்தது.

இந்த தானியங்கி உருவாக்க ஒரு பெண் குரல் தேவைப்பட்டது. ஒரு தமிழ் பெண் பொறியாளர். இவர் நான் விடுத்த வலைபூ மற்றும் கீச்சு (Twitter) அழைப்பிற்கு தானே பங்களித்தார். நானே ஆண் குரலுக்கு பங்களித்தேன்.

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

இந்த ஒலி பேசி செயலியைக் கொண்டு நாம் ஒலி பேசும் கடிகாரம் ஒன்றை உருவாக்கலாம். (.கா.) இதை கொண்டு ஒரு வங்கியில் வரிசைச்சீட்டு முறை செயல்படுத்த உதவி செய்யலாம்.

இதற்கு பணம் ஏதும் கொடுக்கவில்லை. என்னடா விசித்திரமாக சொல்கிறாரே என்று என்ன வேண்டாம். இது திற மூல மென்பொருளிற்கு உடைய பல அம்சங்களில் ஒரு சிறப்பு அம்சம் எனது மென்பொருள் அவரது குரல் ஔி கோப்பு அனைத்து இலவசமாக பயன்படுத்தலாம் எவ்வளவு ஆச்சரியம்!

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

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

மின் ஊடக கணினித் தமிழ் – குறுகிய வரலாறு

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

1980 – முதல் 2000- வர எழுத்துரு வகை குறியீட்டில் (font based encoding) சிக்கியும், இதன் சிதைவு பிடியில் இருந்து தப்பமுடியாமல் இருந்த தருணம் இந்த தேக்க நிலையில் இருந்து பல தன்னார்வலர், தொழிலதிபர் மற்றும் சில அரசு வல்லுநர் குழுக்கள் முயற்சியால் குறியீடும் (ஒருங்குறி), விசைப் பலகையும் (தமிழ் -99) தரம் செய்யப்பட்டது.

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

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

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

ஒருங்குறி ஒரு தரமாக ஏற்றுகொள்ளப்பட்டாலும் நாம் குறியீடு விவாதங்களில் இருந்து விடு பெற்று மேன்மை மென்பொருள்கள் இலக்கை எட்டத் தேர்ச்சி பெற்றுள்ளோம்.

ஆப்பிளும் முக்கனியும்

திறன்பேசி பயன்பாட்டில் ஆங்கிலம் நிலையை காட்டிலும் தமிழ் பயன்பாடு பல படிகள் குறவைாகவே உள்ளது. தமிழ் பேசினால் அதற்கு புரியாது. அதுவும் உங்களிடம் தமிழ் வரை, கவிதை, கட்டுரைகளை படிக்காது கிட்டதட்ட அது ஒரு 10 ஆண்டுகள் முன்னர் உள்ள ஒரு தொலைபேசி நோக்கியா 3330’ போன்று தான். தமிழகம் பொறுத்தவரை செயல்படுகிறது.

மிலுவாக்கீ எந்த அமெரிக்க மாநிலத்தில் உள்ளது?

நீங்கள் கூகிள்ளில் (Google) இந்த கேள்வி ’மிலுவாக்கீ’ எந்த அமெரிக்கா மாநிலத்தில் உள்ளது?” என்ற கேள்வியை கேட்டால் அது தமிழ் அல்லது ஆங்கிலத்தில் கேட்டதன் வித்தியாசம் வாயிலாக விடை அமையும். இதன் காரணம் கூகிள் தமிழ் இயற்கை மொழி உரையாடல் புரிந்து கொள்ளது ஏன் ஆங்கிலம் மட்டும் கணினிற்கு ஏற்ற மொழியா? என்று கேட்டால் விடை, இல்லை. கணினி ஆய்வுகள் அனைத்தும் ஆங்கில வடிவில் உள்ளதால் ஆங்கிலம் முன்னிலையில் உள்ளதாகவே நாம் இதைப் புரிந்து கொள்வோம்.

ஒரு வீட்டுப் படமாக இந்தக் கேள்வியை கூகிள் வழி கேட்டால் ஆங்கிலத்தில் புள்ளிவிவரத்தோ `விஸ்கான்சின்’ என்று சிறப்பாக தமிழ் தற்போது இந்த நிலையில் இல்லாவிட்டாலும் விரைவில் இந்த இலக்கை நோக்கி நம்மில் ஒருவர் முயல்வார்கள். இது நீங்களாவும் இருக்கலாம்.

என் பார்வையில் இந்த பரிணாம வளர்ச்சியின்பால் இப்போது அடுத்த 10-15 ஆண்டுகளில் ஒரு நல்ல தமிழ் நிரலாக்கம் சூழலை வருங்கால நிரலாளர்களுக்கு, உருவாக்கி கொடுத்தால், அது, அவர்களை நிரல் எழுதி தமிழில் செயலிகளை உருவாக்க ஊக்கம் அளிக்கும். ஒரு நல்ல சூழலில் நிரல் தொகுப்புகள் அகராதி, சொல்திருத்தி, இலக்கம் ஆய்வு. நிரல் செயல்முறை (அல்கோரித்ம்ஸ்) நிரலாளர், ஆவணங்கள், பயனர், குழுக்கள், பயிலரங்கங்கள் மேம்பாடு அடைய வேண்டும்.

முன்னோக்கு பலமான அஸ்திவாரம்

நூறு மாடிக்கட்டடம் ஒன்றை கனவு கண்டு எழுப்புவது எப்படி? அதற்கு ஒரு நல்ல திட்டம், ஒரு பலமான அஸ்திவாரம் வடிவமைத்துத் தொடங்க வேண்டும்.

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

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

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

முக்கோண திட்டம்

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

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

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

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

****

ஓபன் தமிழ் வழி சொல்திருத்தி

எல்லாம் நலமாக இருக்கிறீர்கள் என்று எண்ணுகிறேன். சென்ற வாரம் பாஸ்டன் நகரில் சைபீரியா குளிர் -22*C, அனால் எனக்கும் ஓபன் தமிழ் திட்டத்தில் பங்களிக்க நேரம் கிடைத்தது.

ஓபன் தமிழ் வழி சொல்திருத்தி ஒன்றை உருவாக்கும் பணியை மீண்டு இந்த ஆண்டு தொடங்கினேன். இந்த திருத்தியை “பல்-நிலை” (multi-pass) முறையில் முன்பே திட்டமிட்ட படி நாம் செயல்படுத்தலாம். இன்றுவரை செய்த நிரல்களை இங்கு பாருங்கள்
நேரம், ஆர்வம் இதற்க்கு சற்றுற ஒதுக்குங்கள்.
நன்றி,
முத்து