Mac OS X-இல் எழில் இடைமுகம் (GUI) செயலி உருவாக்க நேரிடும் சவால்கள்

3platforms
படம் 1: எழில் மொழி செயலி மூன்று இயங்கு தளங்களில் கிடைக்கும் படி செய்ய திட்டமிட்டோம். ஆனால் மேக் OS X-இல் சற்று தடங்கல்கள் உள்ளன என்று இந்த பதிவில் தெரிவிக்கிறோம்.

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

விண்டோஸ் தளத்தில் 64-bit கணினிகளில் Windows 7, 8, 10, என்பதில் எழில் மொழி செறிவர நிறுவி வேலைசெகிறது என்று நான் பலரிடம் அவரவர்கள் நடத்திய பரிசோதனைகளில் உறுதிபடுத்தி கொண்டேன்.

லினக்ஸ் இயங்கு தளத்தில் எதுவும் ப்ரிச்சனை இருப்பதாக தெரியவில்லை. Ubuntu-விலும்  64-bit கணினியில் சரியாக வேலை செய்கிறது.

அனால் இந்த Mac OS-X இல் மட்டும் எழில் மொழி Github repo-வில் இருந்து console வழி மட்டும் செயல் படுகிறது. எழுதி செயலி window வழி graphical interface GTK-இனை சார்ந்து உள்ளதால் இதற்க்கு Mac OS-X இல் இயக்க சற்று சிக்கல்களாக உள்ளது. காரணம் PyGobject3  Windows மற்றும் Linux தலங்களுக்கு மட்டுமே நிறுவ தயார் நிலையில் உள்ளது. Mac OS-X இக்கு  Gtk-ஐ மூல நிரல்களில் இருந்து மட்டுமே நிறுவும் நிலை உள்ளது என்பதால் இதனை திரட்டி ஆக்குவதும், ‘எழுதி’ செயலியை இயக்குவதும் சற்று கஷ்டமாக / முடியாமல் போனது.

இந்நிலையில் Mac OS-X-இல் எழில் மொழி console இடைமுகம் செயலி நன்றாக வேலை செய்கிறது என்றும் பதிவு செய்கிறேன். வரும் நாட்களில் ஏதேனும் புதிய முன்னேற்றங்கள் இல்லாத பட்சத்தில் எழில் மொழி ‘எழுதி’ இடைமுகம் இந்த தளத்தில் கிடைக்காது – கட்டளை இடைமுகம் மட்டுமே கிடைக்கும்.

உங்களில் எவருக்கும் Mac OS X-இல் GTK அல்லது packaging வல்லமைகளை, பரிந்துரைகள் இருந்தால் பகிரவும்.

-முத்து,

சான் ஓசே, கலிபோர்னியா

எழில் எங்கே போகிறது ?

ezhil_March1_2017.png
படம் :  திருத்தியுடன்  எழில் மொழி  செயலி; நிரல் இடது பக்கம், இயக்கிய வெளியீடு வலது பக்கம். சாளரத்தின் கீழ் இயக்கிய விவரம். இந்த செயலி எழில் படிக்க உதவும்.       (c) 2017 எழில் மொழி அறக்கட்டளை.

 

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

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

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

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

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

எழில் மொழியில் உள்ள “installer” திரட்டியில் இவை இடம் பெறவேண்டும் என்று எனக்கு தற்சமய நிபந்தனை:

  1. Platform Support: இயங்கு தளங்களில் வேலை செய்ய வேண்டும்:
    1. Windows 64, 32 bit
    2. Linux 64
  2. திரட்டியில் வேண்டியவை : Installer package
    1. எழில் மொழி திருத்தி ; இதனை ‘ezhuthi’ (எழுதி) என்று pygtk-இல் இங்கு இங்கு வடிவமைத்து வருகிறேன்.
    2. எழில் மொழி ezhil module python library
    3. தமிழில் நிரல் எழுது புத்தகம்
    4. தமிழில் நிரல் எழுது புத்தகம் பயிற்சி நிரல்கள்
    5. மேல் நிலை எழில் எ.கா. உதாரணங்கள்
    6. பாடம், ஆசிரியர்களுக்கு உண்டான காணொளி, கேள்வி தாள், வினா-விடை பாட திட்டம்.
  3. பரிசோதனைகள்
    1.  மொத்தமாக நிறுவுதல் பரிசோதனை (அணைத்து தளங்களிலும்)
    2. நிரல் எழுதுவது
    3. கோப்புகளை திறப்பது, இயக்குவது, சேமிப்பது
    4. தனியன்க்கி பரிசோதனைகள் (automatic tests)
    5. பயனர் நடப்பு பரிசோதனை (interactive tests)
  4. வெளியீடு
    1. md5 checksum, zip/exe/tgz package generation and upload to networks
    2. release notes, credits, contribution notes, credits to open-source software

ஒரு தவம், வரம் மறக்கப்படாது – முயற்சி திருவினையாக்கும். கை கூடுவோம், வாருங்கள்.

 

தொடர் பட்டியல் (Linked lists)

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

தொடர் பட்டியல் அவதாரங்கள்

இந்த தொடர் பட்டியல் இரண்டு வகையாக அமையும்: ஒருபடை தொடர் பட்டியல் (singly linked list) மற்றும் இருபடை(doubly linked list) இவை கீழே படங்களில் காணலாம். இதனையும் தாண்டி வட்டம் தொடர் பட்டியல் (circular linked list) என்றும் செய்யலாம் இதனை கடைசியில் காண்போம்.

408px-singly-linked-list-svg

படம் 1: ஒருபடை தொடர் பட்டியல் (singly linked list). இதன் முதல் தலை நுனி ‘12’ என்ற மதிப்பை கொண்டது. இதன் ‘அடுத்த’ மதிப்பு ‘99’ மதிப்பு கொண்ட நுனியின் விலாசத்தை கொண்டது. மேலும் ‘99’ நுனி ‘37’ என்ற மதிப்பு கொண்ட நுனியின் விலாசம் கொண்டது. ‘37’ நுனி என்பது கடைசி நுனி என்பதால் இதற்க்கு அடுத்து மதிப்பு காலி என கொண்டது. இந்த ‘அடுத்து’ என்ற இணைப்பே ‘12’ நுனியில் தொடங்கி ‘37’ வரை செல்லும் அம்சத்தை தொடர் பட்டியல் என்று ஆகும் படி இந்த தரவு வடிவத்திற்கு அளிக்கிறது.

610px-doubly-linked-list-svg

படம் 2: படம் 1-ஐ போலவே தொடர் பட்டியல் ஆனால் ‘அடுத்து’ மதிப்பை போலவே கூடுதலாக ‘முந்தைய’ என்ற மதிப்பையும் ஒவ்வொரு நுனியும் கொண்டது. இதன் காரணமாக இதனை ‘இருபடை தொடர் பட்டியல்’.

 

தொடர் பட்டியல் அமைப்பு

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

# நுனி உருவாக்குதல்

நிரல்பாகம் ஒருபடை_நுனி( மதிப்பு )

      நு = {“அடுத்து” : [], “மதிப்பு” : மதிப்பு  }

      பின்கொடு நு

முடி

# நுனியின் அடுத்து விலாசத்தை மற்றோரு நுனியில் அமைத்தல் /

நிரல்பாகம் ஒருபடை_இணை( நுனி_முதல், நுனி_அடுத்து  )

      நுனி_முதல் [“அடுத்து”] = நுனி_அடுத்து

      பின்கொடு நுனி_அடுத்து

முடி

தொடர் பட்டியலில் அணுகுதல்

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

தொடர் பட்டியலில் தேடல்

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

# ஒருபடை தொடர் பட்டியலை வரிசையில் அணுகுதல்

நிரல்பாகம் ஒருபடை_அணுகு( நுனி  )

   நுனி_அடுத்து = []

   காலி =  []

   @(    நுனி != காலி  ) வரை  

       #பதிப்பி “முதிப்பு  => “,

       பதிப்பி நுனி [“மதிப்பு”]

       நுனி_அடுத்து = நுனி [“அடுத்து”]

       நுனி = நுனி_அடுத்து

   முடி

   பின்கொடு  நுனி_அடுத்து

முடி

தேடிய ‘குறிப்பிட்ட மதிப்பு’ கிடைக்காவிட்டால் -1 என்ற மதிப்பு பின்கொடுக்கப்படும்; கிடைத்தால், தலை நுனியில் இருந்து தூரத்தை  வரிசை எண் என்று பின்கொடுக்கப்படும்

நிரல்பாகம் ஒருபடை_தேடு ( நுனி, குறிப்பிட்ட_மதிப்பு   )

   நுனி_அடுத்து = []

   காலி =  []

   வரிசை_எண்  = 1

   @(    நுனி != காலி  ) வரை

       @( நுனி [“மதிப்பு”] == குறிப்பிட்ட_மதிப்பு ) ஆனால்

           பின்கொடு வரிசை_எண்        

       முடி

        நுனி_அடுத்து = நுனி [“அடுத்து”]

        நுனி = நுனி_அடுத்து

        வரிசை_எண் = வரிசை_எண் + 1

   முடி

   பின்கொடு  -1

முடி

 

# நுனி உருவாக்குதல்

நு12 = ஒருபடை_நுனி( 12 )

நு99 = ஒருபடை_நுனி( 99 )

நு37 = ஒருபடை_நுனி( 37 )

 

# நுனியின் அடுத்து விலாசத்தை மற்றோரு நுனியில் அமைத்தல் /

ஒருபடை_இணை( நு12, நு99 )

ஒருபடை_இணை( நு99, நு37 )

 

# ஒருபடை தொடர் பட்டியலை வரிசையில் அணுகுதல்

ஒருபடை_அணுகு( நு12 )

#சாவே இல்லாத வீட்டிலே கைப்பிடி கடுகு  கிடைக்குமா ?

பதிப்பி ஒருபடை_தேடு(நு12, 10) 

பதிப்பி ஒருபடை_தேடு(நு12, 37)

இதன் வெளியீடு :  12, 99, 37. முழு நிரல் இங்கு.

இந்த மாதிரி தொடர் பட்டியலில் பல கேள்விகளை எழுப்பலாம், உதாரணத்திற்கு:

  1. இரண்டு தொடர்பட்டியலை எப்படி இணைப்பது ?
  2. ஒரு தொடர்பட்டியலில் குறிப்பிட்ட மதிப்பு எத்தனை முரை அவதானிக்கிறது ?
  3. தொடர்பட்டியலை முன்னுக்கு பின் எப்படி வேகமாக மாற்றுவது ?
  4. இரு தொடர் பட்டியலில் உள்ள பொதுவான மதிப்புகளை கண்டு எடுக்க முடியுமா ?
  5. அணிகள் (arrays) என்பதற்கும் தொடர் பட்டியல் என்பதற்கும் என்ன வித்யாசம் ?

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

  1. “Introduction to algorithms” by Cormen, Leiserson, Rivest, and Stein. MIT press இங்கு.
  2. “The Algorithm Design Manual” by Steven Skiena. இங்கு

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

மேலும் அடுத்த வாரம்.

-முத்து

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

(eBook) “தமிழில் நிரல் எழுது – எழில் நிரலாக்க மொழி”

(eBook) “தமிழில் நிரல் எழுது – எழில் நிரலாக்க மொழி”

இந்த புத்தகம் தமிழில் நிரல் எழுத கற்று கொடுக்க உதவும்.

பொருளடக்கம் (Table of Contents)

முன்னோட்ட புத்தகம் (Preview Book)

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

தற்சமயம் சோதனை அடிப்படையில் வெளியிடப்பட்டுள்ள இந்த மொழி, விரைவில் முழுச் செயல்பாட்டுக்கு வரும் என எதிர்பார்க்கப்படுகிறது.
மேலும் வலைத்தளத்தில் http://ezhillang.org/

This book teaches you to program in Ezhil language.

Ezhil, in Tamil language script (எழில்), is compact, open source, interpreted, programming language, originally designed to enable native-Tamil speaking students, K-12 age-group to learn computer programming, and enable learning numeracy and computing, outside of linguistic expertise in predominatly English language based computer systems.

Ezhil is the first freely available Tamil programming language, and accessible via web at http://ezhillang.org/

To buy the book –

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