meta name="google-site-verification" content="hAAshBJMkge72rbKLRNI6KHLhedahDg0t3G2Ohhhrt8" /> computer from village computer from village google-site-verification: google0eb59b9330e8d235.html meta name="google-site-verification" content="hAAshBJMkge72rbKLRNI6KHLhedahDg0t3G2Ohhhrt8" />

ஞாயிறு, மே 06, 2012




புரோகிராமிங் அடிப்படைகள் - ஜாவா தொடர்

ஜாவா தொடர் - 2

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

 

இப்போது கம்பைலர் (மொழி மாற்றி) என்றால் என்னவென்று பார்ப்போம். சி,சி++,ஜாவா,விபி... போன்றவற்றை உயர்நிலை மொழிகள் (high level languages) என்கிறோம்.  ஏனெனில் உயர்திணைகளான மனிதர்கள் புரிந்து  கொள்ளும்படி மனிதர்களால் உருவாக்கப் பட்டவை. 

கணினி என்பது அஃறினை(உயிரற்றது) என்பதை மறந்துவிடக் கூடாது.  கணினிக்குத் தெரிந்தது இரும மொழிதான் (binary language 0-1) என்று சொல்வதுண்டு. உண்மை என்னவெனில் அவற்றிற்கு எந்த மொழியும் தெரியாது.  இரும மொழியும் மனிதர்கள் புரிந்து கொள்ளவே ஒரு சுருக்குக் குறிப்புகள்தான் (shortcut notations).  கணினி என்பது ஒரு மின்சார கருவி.  அதிலிருக்கும் கோடிக்கணக்கான சிப்புகளில் பாயும் மின்னழுத்தத்திற்கேற்ப வேலைகள் நடக்கின்றன. ஒரு குறிப்பிட்ட அளவு மின்சாரம் இருந்தால் அது 1 எனவும் அதற்கு குறைவாக இருந்தால் 0 என்றும் குறித்து வந்தனர்.  ஆரம்பகட்டத்தில் ஆராய்ச்சி நிலையில் ஒன்றையும் ஒன்றையும் கூட்டினால் இரண்டு என வரவழைப்பதற்கு இரும எண்கள் எளிதாக இருந்தது.

தரவுகள் (data), செயல்பாடுகள் (கூட்டல், கழித்தல்..) என அனைத்தையும் இரும எண்களிலேயே குறித்தனர். ஒரு எடுத்துக்காட்டிற்கு ‘வணக்கம்’ என்று வரவழைப்பதற்கு 01110101011110100001111010101 என்று நிரலெழுதினால் எப்படி இருக்கும் என எண்ணிப் பாருங்கள்.  என்னக் கொடுமை, கணினி முன்னோடிகள் தங்கள் கணியத் தேவைகளுக்கு இப்படித்தான் கட்டளை எழுதினார்கள்.  கொஞ்சம் கொஞ்சமாக கணிக்க வேண்டியவை அதிகரிக்க அதிகரிக்க இரும எண்களுக்கு ஒரு மாற்றாக பொறி மொழியை (assembly language) மனிதன் கண்டுபிடித்தான். 

இவை இரண்டையும் கூட்டு என்று சொல்வதற்கு 111100010101110101011 என்று கொடூரமாக எழுதுவதற்கு பதில் (add a,b) என்று மனிதர்களுக்கு புரியும் மொழியில் எழுதுவது எளிமையாக இருந்தது.  இதை கணினிக்கு எப்படி புரிய வைப்பது. அதற்கு புரிய வைக்க அவற்றிற்கு நாம் ஏற்கனவே சொல்லிக் கொடுத்த இரும மொழியில் மாற்றித் தர வேண்டும்.  அந்த வேலையைச் செய்யும் நிரலுக்கு(பயன்பாடு) பெயர்தான் பொறிமொழி மாற்றி (assembler).  
இப்படிப் படிப்படியாக நிரலாக்கத்தை எளிமை படுத்த ஒவ்வொன்றாக கண்டுபிடித்தனர்.  பொறிமொழி மாற்றி எவ்வாறு பொறி மொழியிலிருந்து இரும மொழிக்கு மாற்றுகிறதோ (assembler converts assembly language to binary code)

மொழிமாற்றிகள் உயர்நிலை மொழியிலிருந்து இரும மொழியாக மாற்றித் தருகின்றன (compiler converts high level language to machine language).

ஒவ்வொரு கட்டமைப்பிலும் சிக்கலின்றி இயங்க அந்தந்த கட்டமைப்புகளுக்குத் தகுந்தவாறு மொழி மாற்றிகள் உருவாக்கப் பட்டது. 
சிலமென்பொருட்களை பதிவிறக்கம் செய்ய முற்படும்போது x86, i382, x86-64 bit... என பலப் பிரிவுகள் இருப்பதைப் பார்க்கலாம்.  ஏன் இத்தனைப் பிரிவுகள். ஒரே மென்பொருள்தான், அதே செயல்பாடுதான் ஆனால் ஏன் வெவ்வேறு வகைகளாக தரவேண்டும். வெவ்வேறு வகையான கணினிகளில் உள்ள மையச் செயலி ஆணை அமைவுகளில் (microprocessor Instruction Set) மாற்றம் இருப்பதால்தான். இதை இத்தோடு நிறுத்திக் கொள்வோம், நம் தொடருக்குத் திரும்பலாம்.

சி++ மொழி கணினி மென்பொருட்களை உருவாக்க பெரும் புரட்சியைச் செய்ததென்று சொல்லலாம்.  ஜேன் ஸ்ட்ரூஸ்டரப் (Bjarne Stroutstrup) உருவாக்கிய சி++ பொருள் நோக்கு நிரலாக்க (OOP-object oriented programming) மொழியாகும்.  பொருள் நோக்கு நிரலாக்கம் மென்பொருள் உருவாக்கத்தில் பெரும் புரட்சியை செய்கின்றது.  பொருள் நோக்கு பகுப்பாய்வும் வடிவமைப்பும் (OOAD- Object oriented analysis and design) சி++ மொழிக்கு மட்டும் சொந்தமல்ல. பொருள் நோக்கு வடிவமைப்பு என்பது ஒரு தத்துவம்,

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

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



ஜாவா மொழியை எளிதாய் கற்றுக் கொள்ள நினைப்பவர்களுக்காக இந்த தொடர் கட்டுரை.


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


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


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


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




இதற்கு முக்கியமாக இரண்டு காரணங்கள்தான் இருக்கும்,

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


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


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


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


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


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


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

கருத்துகள் இல்லை:

கருத்துரையிடுக