Clojure-Thamil and privilege of programming in English

Elango Cheran, a developer in Silicon Valley, CA, USA, has been quitely developing a powerful macro-based framework of Tamil programming capabilities on top of Clojure. He has also added various tools on this platform, even tools with teeth – i.e. converting encoding from various Tamil encoding standards, and implementing santhi rules etc.

I found his blog post on his efforts in programming in Tamil to be highly persuasive, and make a strong case of programming literacy in the vernacular. I concur with some of the views expressed on ability to reach a literate audience in their vernacular without having to be pigeonholed in English language.

A few observations on the capabilities of unicode identifier aware languages like JavaScript, CLISP, and then languages with rich Unicode support like Java and Python. My own steps in exploring such translation-based support for Tamil have included TamilScript; Ezhil effort is fullblown, in comparison, in effort and time invested there.

Lisp has affordance of also being grammatically similar to Tamil than English in structure – i..e. predicate expression based structures. CLISP, and JavaScript also offer non-ASCII identifiers and can achieve somewhat of same effect like macro’s you have pointed out.

The socio-cultural need to open up world of programming to vernacular speakers has continued to haunt technology penetration/access. The field of native language programs has few leading lights. We need more players, and time to build developer interest here.


open-tamil updates (Jan 2015)

I have the pleasure of introducing a few new features in Open-Tamil this week. Among them are quite novel features like Tamil regexp for pattern matching, and Tamil numerals in American counting system. You also probably know Open-Tamil is supported in Python 2 and Python 3 as well, in the development version 0.32.

  1. Tamil tamil.utf8.get_letters bug fixes
    1. get_letters function had a few subtle bugs and somewhat of fuzzy algorithm. With this update, we can completely split a given UTF-8 string into the constituent letters.
    2. get_letters_iterable function is also updated for bug-fixes and works with smaller memory footprint using the iterators in Python.
    3. We do this in linear time O(n)
  2. Numeral generation from open-tamil in American style
    1. Previously we introduced a numeral generation using the Indian convention of crores, lakhs upto 1 lakh crore; tamil.numeral.num2tamilstr
    2. In this update we can convert numbers using the million, billion and trillion of the American numeral system, in Tamil words.tamil.numeral.num2tamilstr_americanAn example of conversions is shown from our test suite,
      def test_numerals(self):
        var = {0:u"பூஜ்ஜியம்",
        long(1e7):u"பத்து மில்லியன்",
        long(1e9-1):u"தொள்ளாயிரத்து தொன்னூற்றி ஒன்பது மில்லியன் தொள்ளாயிரத்து தொன்னூற்றி ஒன்பது ஆயிரத்தி தொள்ளாயிரத்து தொன்னூற்றி ஒன்பது",
        3060:u"மூன்று ஆயிரத்தி அறுபது",
        21:u"இருபத்தி ஒன்று",
        1051:u"ஓர் ஆயிரத்தி ஐம்பத்தி ஒன்று",
        100000:u"நூறு ஆயிரம்",
        100001:u"நூறு ஆயிரத்தி ஒன்று",
        10011:u"பத்து ஆயிரத்தி பதினொன்று",
        49:u"நாற்பத்தி ஒன்பது",
        55:u"ஐம்பத்தி ஐந்து",
        1000001:u"ஒரு மில்லியன் ஒன்று",
        99:u"தொன்னூற்றி ஒன்பது",
        101:u"நூற்றி ஒன்று",
        1000:u"ஓர் ஆயிரம்",
        111:u"நூற்றி பதினொன்று",
        1000000000000:u"ஒரு டிரில்லியன்",
        1011:u"ஓர் ஆயிரத்தி பதினொன்று"}
        for k,actual_v in var.items():
            v = tamil.numeral.num2tamilstr_american(k)
            print('verifying => # %d'%k)
    3. There were a few minor bug fixes
  3. Tamil regular expression processing
    1. Regular expression is form of finite automata. These are machines with local states which may be used for pattern matching.
    2. We have introduced new API in the Python module ‘tamil’ under the namespace ‘regexp’ which will expand Tamil letters into fully formed regular expressions, and can work in tandem with Python re module.
    3. example: the following ‘pattern’ will matching the elements 1, 2, 6 of the list variable ‘data’.
      pattern = u"^[க-ள].+[க்-ள்]$"
      data = [u"இந்த",u"தமிழ்",u"ரெகேஸ்புல்",u"\"^[க-ள].+[க்-ள்]$\"",\
              u"இத்தொடரில்", u"எதை", u"பொருந்தும்"]
      expected = [1,2,6] # i.e.தமிழ், ரெகேஸ்புல், and பொருந்தும்
    4. Another simple example experimenting with Tamil #regexp: pattern = u”^ரிச்.*[க்-ழ்]$” matches strings like ரிச்மாண்டின் and ரிச்மண்டில்.
    5. Tamil wikipedia article on has a good explanation on regular expressions (சுருங்குறித்_தொடர்).

An example:
You can do a lot more things with open-tamil, and a simple example demonstrated in the item #3 above.

Have a nice weekend. Share your comments, and thoughts on open-tamil below.

Scratch – programming for children from MIT – not available in Tamil

Children like to learn by sharing stories, and characters, and themes. The Scratch project originally from the MIT Media lab, in Cambridge, MA, USA near Boston. As most engineers know, MIT has a great tradition of pioneering contributions to engineering field, and science from early 1900s.

Scratch is an impressive framework, and here is why,

  1. Scratch is designed for use on web, with a story-board and characters in a world
  2. Users, the children, then interact with this world by writing event handler code – this controls the character reactions to events.
  3. In this approach other language teaching tools have followed Scratch : Kids Ruby project.
  4. This is now called gamification in the edu-space.
  5. Scratch can be accessed on the Linux, Mac, Windows and also on the web using a Adobe Flash plugin
  6. Scratch is written in Smalltalk language, and has a history of over 25 years or so, morphing from its original form in the early 90s.

Learn more : at Scratch webpage

Ofcourse, my interests come from why Scratch is not ported to Tamil. Always. You can start helping bring this technology to Tamil students world wide by translating some strings into the Tamil language, now!.
Best Regards

Tamilscript in development – writing code in a web browser

Recently I have been trying to put together a system for writing code on client side browser by translating the code directly into Javascript. Today, I would like to show a demo of simple translator for Tamilscript

Demo of Tamilscript for use within a web browser. Tamilscript can leverage jQuery, and power of modern web browsers.

Comments and suggestions welcome. I will release the code if we reach any sizable level.

Open-Tamil porting for Python 3 and Python 2

For a long time Open-Tamil package was envisioned and supported for both Python 3 and Python 2. Now in work done during last weekend (during harsh Boston winter what better than sit indoors and code away?) I have made the following changes,

  1. source code compatible for both Python 3 and Python 2,
  2. pass unittests on Python 2.6, 2.7, 3.3 and 3.4 with Travis-CI testing , and running successfully on Windows and Linux

This is still development bleeding edge software so please feel free to poke and play, and file bugs. Let us know if you are using open-tamil in your work.


“தமிழ்ழில் நிரல் எழுத – எழில் தமிழ் நிரலாக்க மொழி” புத்தகம் வெளியீடு | (Releasing ‘Write Code in Tamil’ book)

அனைவருக்கும் வணக்கம்.

தமிழில் கணினி மென்பொருள் நிரல் (Computer Software Program) எழுதக் கற்றுக்கொள்ளவேண்டும் என்கிற ஆர்வத்துடன் இந்த “எழில்” தளத்துக்கு வந்திருக்கிறீர்கள். உங்களுக்கு எங்கள் வாழ்த்துகள்! எழில் திட்டத்தில் உங்கள் நேரம் மற்றும் ஆர்வத்திற்கு நன்றி.

நீங்கள் எங்கள் “தமிழ்ழில் நிரல் எழுத – எழில் தமிழ் நிரலாக்க மொழி” புத்தகத்தை, இலவச தரவிறக்கம் செய்ய இணைப்பு

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

எழில் மொழி அறக்கட்டளை,
பாஸ்டன், அமெரிக்கா