தரவமைப்பு வடிவங்களின் தமிழாக்கம் – கருத்து கணிப்புவிடைகள்

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

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

கருத்து கணிப்பு விடைகள்:

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

பயனர் “stack” என்பது தமிழில் “heap” என்பது தமிழில் “dictionary” or “associative array” என்பது தமிழில் “linked list” என்பது தமிழில் “binary tree” என்பது தமிழில் “graph” என்பது தமிழில் “hash table” என்பது தமிழில் “queue” என்பது தமிழில் “priority queue” என்பது தமிழில் “circular list” என்பது தமிழில்
0 அடுக்கு குவிப்பு அகராதி தொடர் பட்டியல் இரு கிளை மரம் முனை ஓரம் அடைவு எண்குறி அடைவு முறை வரிசை பிரதான வரிசை வட்ட தொடர் பட்டியல்
1 அடுக்கு குவிப்பு அகராதி தொடர் பட்டியல் இரு கிளை மரம் வரைபடம் எண்குறி அடைவு முறை வரிசை முக்கிய வரிசை வட்டவடிவப் பட்டியல்
2 அடுக்கு குவிப்பு அகராதி தொடர் பட்டியல் இரு கிளை மரம் முனை ஓரம் அடைவு கையெழுத்து அடைவு முறை வரிசை முக்கிய வரிசை தொடர் பட்டியல் வட்டம்
3 அடுக்கு குவிப்பு அகராதி தொடர் பட்டியல் இரும மரம் முனை ஓரம் அடைவு சுறுக்கு குறி அடைவு வரிசை முறை முதன்மை வரிசை வட்ட தொடர் பட்டியல்
4 அடுக்கு குவிப்பு அகராதி தொடர் பட்டியல் பின்னாக்கு கிளை வரைபடம் ரகசிய அடைவு வரிசை முதர்சன வரிசை வட்ட தொடர் பட்டியல்
5 அடுக்கு குவிப்பு அகராதி தொடர் பட்டியல் பின்னாக்கு கிளை வரைபடம் ரகசிய அடைவு வரிசை முதர்சன வரிசை வட்ட தொடர் பட்டியல்
6 அடுக்கு குவிப்பு அடைவு தொடர் இருகிளையி எனச்சுருங்கச் சொல்லலாம் முனை ஓரம் என்றோ கோலம் என்றோ சொல்லலாம் எண்குறி அடைவு முறை வரிசை விருப்பவரிசை, முன்னுரிமை வரிசை சுற்றுச்சங்கிலித்தொடர்
7 அடுக்கு குவிப்பு அகராதி தொடர் பட்டியல் இரு கிளை மரம் வரைபடம் எண்குறி அடைவு வரிசை முன்னுரிமை வரிசை வட்டப்பட்டியல்
8 அடுக்கு குவிப்பு தொடர்புறு அணி தொடர் பட்டியல் இரு கிளை மரம் முனை ஓரம் அடைவு எண்குறி அடைவு நேர் வரிசை முக்கிய வரிசை வட்ட தொடர் பட்டியல

பரிந்துரைகள்  – எனக்கு பிடித்த தமிழாக்கம்

எனது பரிந்துரைகளை முன்வைக்கும் முன்னரே எனக்கு உள்ள சில நிபந்தனைகளை சொல்கிறேன்.

நிபந்தனைகள் (criteria)

  1. அறிவியல் தமிழ் அல்லது கணித தமிழில் ஏற்கனவே பயன்பாடு கொண்டதாக இருக்க வேண்டும்; எ. கா. arrays என்றல் அணி என்று ஏற்கனவே உள்ளது
  2. சக்கரத்தை மறுபடி கண்டுபிடிக்க வேண்டாம். உள்ளதை அப்படியே எடுத்து கொள்ளலாம்.
  3. கணிமை சொற்களுடன் எளிதாக எழுதும் வகையில், பேசும் வகையில் இருக்கவேண்டும்
  4. நடைமுறை, இயல்பு தமிழ், மற்றும் கணிமை கோட்பாடுகளை சரியே குணாதிசியங்களை போதிக்கும் திறன் கொண்ட சொற்களாக அமைய வேண்டும்.

பரிந்துரைகள்

  1.  array அணி
  2.  set கணம்
  3. stack அடுக்கு
  4. heap குவிப்பு
  5. dictionary அடைவு, தொடர்புறு அணி
  6. linked list தொடர் பட்டியல், தொடர்
  7. circular list வட்ட தொடர் பட்டியல்
  8. graph நுனி ஓரம் / முனை ஓரம் அடைவு
  9. queue முறை வரிசை, நேர் வரிசை
  10. priority queue முன்னுரிமை வரிசை, முதர்சன வரிசை
  11. hash table எண்குறி அடைவு, சுறுக்கு குறி அடைவு
  12. binary tree  இரும மரம், இரு கிளை மரம்

நிறைய பெயர்கள் எ. க. ‘dictionary’ என்பன நேர்வழி தமிழில் ‘அகராதி’ என்றும் ‘graph’ என்பது ‘வரைபடம்’ என்றும் மொழி பெயர்க்க முடியாது – கணினி தரவமிப்பில் தமிழில் இதை அடைவு அல்லது தொடர்புறு அணி என்று சொன்னால் சரியாக இருக்கும்; ‘graph’ என்பது ‘கோலம்’ அல்லது ‘முனை ஓரம அடைவு’/’நுனி ஓரம் அடைவு’ என்றும் சொன்னால் பொருளளவில் தமிழாக்கம் செய்யப்படும்.

 

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

(replica of) "Thinker" statue by Auguste Rodin, at the Baltimore Art Museum at the Johns Hopkin's University.

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

(பாகம் 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. எழில் வழி மாதிரி இயக்கி

மூளை குழம்பி மொழி இயக்கி வடிவமைப்பது எப்படி?

Ezhil Language Tamil Programming

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

மூல நிரலுக்கு இங்கு github-இல் பார்க்கவும்.

இந்த மூளை குழம்பி மொழியில் உள்ள செயலுறுபுகள் என்ன ?

success_Arun_Vekataswamy_8184568429
2016-இல் எழில் மொழி வழி ஒரு மூளை-குழம்பி என்ற மொழியை முழுமையாக நிறுவியுள்ளோம்

செயலுறுபு – (Operators) –

  1. ‘>’, ‘<‘ – செயலுறுபு நினைவகத்தை குறிக்கும் இடத்தை முன் அல்லது பின் அளவில் மாற்றும்
  2.  ‘+’, ‘-‘ – செயலுறுபு நினைவகத்தின் மதிப்பை கூட்டும் அல்லது குரைக்கும்
  3.  ‘[‘, ‘]’ – செயலுறுபு நிரலின்இயக்கம் பகுதியி அடுத்த அடைவுகுரிப்பிபிற்கு ‘]’, அல்லது ‘[‘ இற்கு தாவும் படி குறிக்கும்
  4.  ‘,’,’.’ – என்ற செயலுறுபு உள்ளிடு, வெளியீடு, குறிக்கும்

முக்கியமான மைய்யகணினி இயக்கியின் பண்பு

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

இப்போது இந்த மைய்யகநினியில், மூளை குழம்பி மொழியில் எப்படி எண்களை கூட்டுவது ?

இரண்டு எண்களை கூட்டுவது

program_sum  = “++>+++++.<[>+<-].” #sum of 2+5 in cell #2

“Hello World” நிரல் எழுதுவது

program_hello_world = “++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>—.+++++++..+++.>>.<-.<.+++.——.——–.”
# Ref: https://en.wikipedia.org/wiki/Brainfuck#Hello_World.21

இதன் இயக்கியை நாம் எழில் நிரலாக இங்கு படிக்கலாம்!

Bernoulli numbers

History:

உலகின் முதல் நிரல் இயற்றிய அரசி அடா லவ்லேஸ், (Bernoulli numbers) பெர்னொல்லீ எண்களை கணக்கிட்டார்!

Bernoulli number’s have the historic significance in computer programming – Lady Ada Lovelace’s “first” computer program for the Babbage Analytical engine calculated the Bernoulli number sequence. Here we do the same operations using a slightly easier method of recursion using the recurrence relation:

 \begin{align}   B_m(n) &= n^m-\sum_{k=0}^{m-1}\binom mk\frac{B_k(n)}{m-k+1} \\   B_0(n) &= 1. \end{align}

Code:

You can see the full code listing at Ezhil-Language repository

# பெர்னொல்லீ எண்களை கணக்கிடு
நிரல்பாகம்  பெர்னொல்லீ_எண் ( m, n  )
  @( m == 0 ) ஆனால்
    # பெர்னொல்லீ_எண்( 0, n ) = 1
    பின்கொடு  1.0
  இல்லை
    பெர்னொல்லீ = 0.0
    மொத்தம் = 0.0
    எண்கள் = range(0,m)
    @(எண்கள் இல் இவ்வெண்) ஒவ்வொன்றாக
        மொத்தம் = மொத்தம் + binomial_coeff(m,இவ்வெண்)*பெர்னொல்லீ_எண்(இவ்வெண்,n)/(m - இவ்வெண் + 1.0)	
        #பதிப்பி இவ்வெண், மொத்தம்
    முடி
    பெர்னொல்லீ = n^(m*1.0) - மொத்தம்
    பின்கொடு    பெர்னொல்லீ
  முடி
முடி

Tests:

You can run the code to verify the first few Bernoulli numbers:

B1 = பெர்னொல்லீ_எண்(1,0)
பதிப்பி "B1 = B(1,0)", B1
assert( (B1 - 0.5) < 1e-3 )

பதிப்பி "B2 = B(2,0)", பெர்னொல்லீ_எண்(2,0)
பதிப்பி "B4 = B(4,0)", பெர்னொல்லீ_எண்(4,0)

B6 = பெர்னொல்லீ_எண்(6,0)
பதிப்பி "B6 = B(6,0)", B6
assert( (B6 - 0.02380) < 1e-3 )

பதிப்பி "B4 = B(4,1)", பெர்னொல்லீ_எண்(4,1)

Credits: Photo from Flickr user.

2014 தமிழ் கணிமை விருது – ஏற்புரை (Tamil computing award 2014)

06/13/2015

2014 தமிழ் கணிமை விருது – ஏற்புரை

இடம்:  தமிழ் இலக்கிய தோட்டம் ஆண்டு விழா, டோரான்டோ, கனடா

அரங்கத்தில் உள்ள அணைவருக்கும் வணக்கம். 2014-ஆம் ஆண்டு தமிழ் கணிமைக்கான விருதை த.இ.தொ/காலச்சுவடு அறக்கட்டளையின் பார்வையில் பெறுவது மிகுந்த மகிழ்ச்சி.

AcceptanceSpeech
Acceptance Speech at Toronto, Tamil Literary Garden for 2014 Tami Computing Award. Image (C) @donion

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

  1. எழில் மொழி திற மூல மென்பொருள்; இணையம் வழி கற்றிடலாம்;  மற்றும்
  2. இதனை கற்பதற்கு “தமிழில் நிரல் எழுது” என்ற துணை கையேடும் வெளியிடப்பட்டுள்ளது.
  3. கணிமை மூதாதையர் அலன் டியூரிங் அவரின் வழி “டியூரிங் வரையறைக்குள் முழுமையாக” (Turing complete) உள்ளது.

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

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

  1. ஆங்கிலத்தில் இல்லாத சில நிரலாக்க மொழி சார்ந்த, குறியீடு சார்ந்த சிக்கல்கள்.
  2. சிறிய சந்தை அளவினாலும், இலாபம் குறைவாக இருப்பதால் பலர் தமிழில் பங்களிப்பதையோ, உருவாக்குவதையோ வெறும் வணிகரீதியில் பார்க்கின்றனர்.
  3. மேலும் கூறினால் தொழில் நுட்பத்தில் முதலீடு செய்யவும் இலாபம்
    பார்ககும் வரை தாக்குப்பிடிக்க பண வசதி செய்ய யாரும் இல்லை.
  4. அரசாங்கத்தின் டேன்டர் பெறுவசம் சார்ந்த தனியார் நிறுவனங்கள் மட்டும் உள்ளன.
  5. நாம் எப்படி அடுத்த கட்ட இளைஞரை தமிழ் பொறியியலில் தயார் செய்யலாம்?

இந்த கேள்விகளுக்கு விடையில்லாட்டியும், நல்ல முடிவு நிச்சயம் இருக்கு.

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

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

விருது விழாவில் கலந்து கொள்வதற்கு வழிகாட்டிய திரு.  Tamil Literary Garden award ceremonyமுத்துலிங்கம் ஜயாவிற்கு, திரு. வெங்கட் அவருக்கும் நன்றி கூறுகிறேன். அஸ்டிரேலிய தமிழர் SBS Radio-வின் குலசேகரம் சஞ்சயன் அவரின் நுட்பமான வானொலி நேர்காணலிற்கும், தி இந்து பத்திரிகையாளர் கார்திக் அவருக்கும், எழில் மொழியினை பற்றிய செய்தியை பலர் அறியுமாறு செய்தமைக்கு நன்றி.

வழி முழுவதும் ஊக்குவித்த தாய்-தந்தையிற்கும், தம்பியிற்கும், நன்றி. டொறான்டொ வரை அழைத்து வந்த வாய்ப்புகளை ஏற்று செயல்பட ஊக்கம் அளித்த மனைவி சாலாவிற்கு நன்றி.

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

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

நன்றி. வணக்கம்!

– முத்து அண்ணாமலை

அடிக்குறிப்பு :  அளித்த உரையின் சற்றே விரிவான கட்டுரை

Programming Languages and Tamil Computing – Ezhil Language and Beyond

Programming Language and Tamil Computing : Ezhil Language and Beyond

This is a new kind of blog post – sharing with the whole world, my discussion with some collaborators and friends.

Participants: Arun Ram, Elango Cheran, and Muthu Annamalai

Ezhil Language Tamil Programming
Ezhil Language Tamil Programming

Date: 05/16/15

Points of discussion:
I propose the following agenda for our 45min – 1hr meeting on Saturday, 05/16/2015 at 10 PM (EDT) on Google Hangouts.

1. How to make it easy for crossing bi-lingual barrier ?
2. Develop a more standardized Tamil kanimai/niralakkam vocabulary
3. Developing for ‘Tamil Focused’ software development
4. Discuss volunteering experiences in Tamil community; Ezhil experience
5. Developing documentation for end user, APIs, tutorials/books
6. Opportunities for collaborating between Ezhil and CLJ-Thamil
7. Discussion of Trie based approaches to Unicode Tamil letter collation

Conclusions:
1. Participants agree Tamil computing is useful at elementary level to show people from non bi-lingual
backgrounds “unnal mudiyum thambi/thangachi”
2. Elango, and Arun Ram propose a functional language based approach to learn computing in Tamil
3. Muthu touched upon some of structural aspects in rolling out the technology to students/target-audience
4. Arun Ram and Muthu agreed on ideas of Gamification to support the technology rollout to circumvent bureaucracy
KidsRuby project which Muthu had translated to Tamil was a good example. Also code.org Hour of Code used “Frozen”
Disney movie character based animations.
5. Elango said the grammar of Tamil language need not be followed in the programming language
6. Muthu emphasized Ezhil has a grammar that models the Tamil SOVA structure, compared to English SVOA.
7. All of us agreed that we could open up the keyword ratification/standardization again. Some of Ezhil language
survey results are found in the INFITT-2014 paper “How can you write code in Tamil” (Tamil paper).
8. Muthu suggested necessity of “soolal” surroundings of the Tamil computing environment like, books and articles
on data structures and algorithms, puzzles, etc., etc.
9. Muthu and Elango spoke on issues with Unicode standard for Tamil, UTF-8 and alternative TACE-16. However both
of them agreed that Unicode current standard is workable for developing Tamil software.
10. Muthu appreciated the efforts of CLJ-Thamil Clojure project, and suggested Elango to think of making it interactive
and web based like TryRuby.org and possibly rolling it out to Android platform.

Action items:
1. Act to re-open the keyword survey and suggest the results to the Tamil-VU or other INFITT technical groups.

கூடம் – எழில் கற்க இணையம் வழி பள்ளிக்கூடம் – 2

Online evaluator - latest version - for Ezhil Language.
Online evaluator – latest version – for Ezhil Language.

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

Feature list
Code in this directory provides the following
* Writing Code, Editing, and Evaluating *
1. Syntax highlighting editor for Ezhil using ACE JavaScript editor
2. Code browser lets user to look at sample Ezhil programs from the ezhil-lang source/testsuite, in the single page app editor
3. Users can run the code on this page, and see the output in the same page.
4. Correctly executed code with should output in light yellow; clicking on the output will hide it, as you work on second problem.
5. Errors in code or server execution cause your program output to be highlighted in red.
6. Source code is persisted between sessions in terms of cookies

இதை http://www.ezhillang.org/koodam/play/eval இல் நீங்கள் பயன்படுத்தலாம்!

வலைதமிழ் – எழில் நேர்காணல் (45 min)

ச. பார்த்தசாரதி

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

எழில் நிரலாக்க மொழியின் உருவா

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

கூடம் – எழில் கற்க இணையம் வழி பள்ளிக்கூடம்

கூடம் – எழில் கற்க இணையம் வழி பள்ளிக்கூடம்

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

Feature list
Code in this directory provides the following
* Writing Code, Editing, and Evaluating *
1. Syntax highlighting editor for Ezhil using ACE JavaScript editor
2. Code browser lets user to look at sample Ezhil programs from the ezhil-lang source/testsuite, in the single page app editor
3. Users can run the code on this page, and see the output in the same page.
4. Correctly executed code with should output in light yellow; clicking on the output will hide it, as you work on second problem.
5. Errors in code or server execution cause your program output  to be highlighted in red.
6. Source code is persisted between sessions in terms of cookies

Adios

இதை http://www.ezhillang.org இல் வேகுவில் நிறுவு முனைகிரேன். அதுவரை ஹஸ்தா-ல-விஸ்தா!