ஆகஸ்ட் 14, 2010

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

ஜாவா தொடர் - 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)... போன்றவை அடிப்படைத் தத்துவங்களாக உள்ளது.  மரபுரிமம் என்பது தாத்தா சொத்தில் பேரப் பிள்ளைகளுக்கு உரிமை என்பதைப் போன்றது.  நீங்கள் ஒரு நிரல் எழுதியுள்ளீர்கள். அதிலிருக்கும் சில வசதிகளை பிறர் பயன்படுத்தலாம் என்று கொடுக்கிறீர்கள் என வைத்துக் கொள்வோம், எங்களுக்கு வேண்டிய வசதிகள் அதிலிருந்தால் நாங்கள் அதை அப்படியே பயன்படுத்திக் கொண்டு இல்லாத வசதிகளுக்கு மட்டும் நிரல் எழுதிக் கொள்ளலாம்.  நமக்கு அனைத்து வசதிகளும் தேவையில்லையெனில் தேவையற்றதை நீக்கிக் கொண்டு நம் தேவைக்கேற்ப மாற்றிக் கொள்ளலாம்.

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

தொடரும்...

8 கருத்துகள் :

  1. you can join this blogs' rss feed in feed reader like google reader. there your posts are readable clearly.

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

    பதிலளிநீக்கு
  3. அருமை . தொடர்ந்து பதிவுகளை இடவும்

    பதிலளிநீக்கு
  4. போகன் said.//ஆங்கிலம் கொடுப்பது அவசியமே...

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

    பதிலளிநீக்கு
  5. Hi Raj,

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

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

    பதிலளிநீக்கு
  7. எழில், ஒரு தமிழ் நிரலாக்க மொழி; தமிழ் மாணவர்களுக்கு இது முதல் முறை கணிப்பொறி நிரல் எழுதுவதற்கு உதவும்.

    எழில் (Ezhil), தமிழில் எழுதும்வகையில் உருவாக்கப்பட்டுள்ள நிரலாக்க மொழியாகும். இதில் தமிழ் கலைச் சொற்களைக் கொண்டே நிரல்கள் எழுத முடியும். WWW ezhillang DOT org

    பதிலளிநீக்கு