டிசம்பர் 07, 2010

தமிழ் தேதியிலிருந்து ஆங்கில தேதியை கணக்கிடுவது எப்படி?

தமிழ் நாட்காட்டி

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



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



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



http://www.prokerala.com/general/calendar/tamilcalendar.php
http://www.tamil-calendar.com 
http://www.barathonline.com/Articles/TamilCalendar2010.htm
http://tamildailycalendar.com/

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

டிசம்பர் 01, 2010

ஜாவா தொடர் - Interface

இந்தப் பதிவில் Interface குறித்து அறிந்து கொள்வோம்.  C, C++ மொழிகளில் இந்தக் கருத்துரு இல்லை.  ஜாவா, C# மொழிகள் interfaceக்கு ஆதரவளிக்கிறது.  Interfaceஐ தமிழில் இடைமுகப்பு எனச் சொல்லலாம்.  Interface declaration ஒரு classஐ declare செய்வதைப் போலவே ஒத்திருக்கும். Interfaceல் methodகளைக் declare செய்யலாமே தவிர define செய்ய இயலாது. 

Methodகளை எழுத முடியாதென்றால் பிறகு அப்படியென்ன நன்மை interfaceஆல் கிடைத்து விடப் போகிறது.  Interfaceஆல் பல நன்மைகள் புரோகிராமருக்கு உள்ளன.  பெரிய ப்ராஜெக்ட்டுகளில் interfaceஐத் தவிர்க்க இயலாது.  Interface இல்லாமலும் புரொகிராம் எழுதலாம்.  Interfaceஐத் தவிர்க்கும் போது என்னென்ன பிரச்சனைகள் வருமெனப் பார்ப்போம்.  பணியில் அமர்வதற்கு முன்னர் interface என்றால் என்ன என என்னிடம் கேட்டிருந்தால், ஜாவாவில் multiple inheritance இல்லை அதற்குபதில் interface பயன்படுத்திக் கொள்ளலாம் எனச் சொல்லியிருப்பேன்.  இதில் கொஞ்சம் உண்மையிருக்கிறதே தவிர interfaceன் பயன்பாடே வேறு.

Interface ஒரு class இப்படித்தான் இருக்க வேண்டுமெனச் சொல்கிறது.  எந்தெந்த classசெல்லாம் interfaceஐ implement செய்கிறதோ அவை interfaceல் உள்ள methodகளுக்கு விளக்கமளிக்க வேண்டும்.  ஒரு class ஒன்று அல்லது ஒன்றுக்கு மேற்பட்ட interfaceகளை implement செய்கிறதென்றால், அந்த class தனக்கு அறிவுறுத்தப்பட்ட interfaceசுடன் பொருந்திச் செல்கிறதெனச் சொல்லலாம்.  அதிகப்படியான குழப்பங்கள் விளைவிப்பதன் காரணமாக ஜாவா multiple inheritanceஐ ஆதரவளிப்பதில்லை.  ஜாவாவில் எழுதப்படும் எந்தவொரு classக்கும் அதிகப்படியாக ஒரு classன் பண்புகளை மட்டுமே inherit செய்ய முடியும்.  ஒரு classல் உள்ள பண்புகள் பல classகளுக்குத் தேவைப்படுகிறதென்றால் interface அதற்கு துணை புரியும்.


Animal என்றொரு class உள்ளதென வைத்துக்கொள்வோம்.
class Animal{
         int no_of_legs;
         void run() {
         }
}
நீங்கள் Dog என்றொரு class எழுதப் போகிறீர்கள், அதில் run() method வேண்டுமென நினைக்கிறீர்கள்.  run() மெத்தட் புதிதாக எழுதுவதற்கு பதில் ஏற்கனவே Animal.classல் எழுதப்பட்டிருக்கும் run() மெத்தடை பயன்படுத்திக் கொள்ளலாம். class Dog extends Animal {} என எழுதுவோம்.  இதுவே Animal என்பதை classசாக இல்லாமல் இடைமுகப்பாக வைத்திருந்தோமென்றால்
interface Animal {
           int no_of_legs; 
           void run();
}
என இருக்கும்.  Interfaceஐ extend செய்வதற்கு பதில் implement செய்ய வேண்டும். class Dog implements Animal. இங்கு Animal என்பது interface.

ஒரு classக்கு ஆப்ஜெக்ட் உருவாக்குவது போல் interfacக்கு ஆப்ஜெக்ட் உருவாக்க முடியாது.
class Animal.... 
Animal animal = new Animal();

இதுவே interface Animalலாக இருந்தால்
Animal animal = new Animal() என எழுத முடியாது.  Interfaceசை வைத்துக் கொண்டு object reference உருவாக்கலாம்.  பின்னர் அந்த interfaceஐ implement செய்திருக்கும் எந்தவொரு classக்கும் புது ஆப்ஜெக்ட் உருவாக்கி assign செய்து கொள்ளலாம்.
Animal animal = new Dog();  Dog class Animal interfacசை implement செய்திருக்காவிட்டால் இது சாத்தியமில்லை.

அடுத்த பதிவில் interface குறித்து மேலும் விரிவாகப் பார்ப்போம்.

-தொடரும்