அறிவியல் நோக்கில் கணினி நிரலாக்கம்

இதழ்: அறிவியல் ஒளி; தேதி : அக்டோபர் 2, 2016

ஆசிரியர் : முனைவர். முத்து அண்ணாமலை, எழில் மொழி அறக்கட்டளை

அறிவியல் நோக்கில் கணினி நிரலாக்கம்

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

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

கணினி என்பது பல அவதாரங்களில் நம்மிடையே இன்று பயன்பாட்டில் உள்ளது. சொல்லப்போனால் மடி கணினி (laptop), திறன்பேசி (smart phone), கைபேசி (mobile phone), மேசை கணினி (desktop) என்றெல்லாம் சில வடிவங்களில் சொல்லலாம். ஆனால் இவை அனைத்தும் ஒரே ஒரு அடிப்படை அறிவியல் கொள்கையினால் உருவானது. சற்று சிந்தித்து பாருங்கள் எல்லா எண்ணிம மின்சார கருவிகளும் (digital electronic gadgets) இந்த மாதிரி ஒரே மூல காரணத்தினால் இயங்குகிறது.

கணினியின் அடிப்படை செயல்பாடு

சரி. அப்ப இந்த எண்ணிம கருவிகளின் அடிப்படையான இரும ஏரணம் (binary logic) என்ற தர்க கணிதவியல் பற்றியும், இந்த இரு நிலை தர்க செயல்பாட்டை அமல்படுத்துவது திரைதடயம் (semiconductor transistor). இன்னும் எளிமையாக சொல்ல போனால் (தமிழ் விக்கிப்பீடியாவில் இருந்து)கணினியை இயக்கும் நுண்கருவிகளில் மின்னோட்டம் நடக்கும்நடக்காது என இரட்டை நிலை (உண்டுஇல்லை) இயக்கமாகிய தொடுக்கியாகவும் (சுவிட்சு, switch) பயன்படுகின்றது.”

சும்மா சொல்ல போனால் கணினி என்பது செயல்படுவதற்கு மின்சாரத்தில் இயங்கும் மையகனிணி (CPU) தேவை. இந்த மையகனிணி கணிதம், தர்க்க கோட்பாடுகள் (மற்றும் {AND}, அல்லது {OR}, எதிர்மரை {NOT}) போன்றவற்றை கணிக்கவும், மற்றும் இரு நிலை – ‘0’ அல்லது ‘1’ என்பதையும் நினைவில் கொள்ள நினைவகம் (memory) என்ற இரு செயல்களையும் புரிய உருவாக்கப்பட்ட வன்பொருள். இது போன்ற சிபியுகளை semiconductor transistor வழியாக உருவாக்கலாம். (CPU தயாரிப்பாளர்கள் Intel, AMD, ARM, Qualcomm போன்றவர்களை விளம்பரம் மூலம் நீங்கள் சந்தித்திருக்க வாய்ப்பு உள்ளது.)

எண்ணிம நுட்பம் மற்றும் தர்க கணிதவியல் வரலாறு

 `georgeboole

[படம்: ஜார்ஜ் பூல்: பூலியன் கணிமை கண்டுபித்த ஆங்கிலேயர்]

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

இவர்கள், கணித மேதை பூலியன் அல்ஜிப்ரா படைத்த ஆங்கிலர் ஜார்ஜ் பூல் (1815-1864), மற்றும் தகவல்தொழில்நுட்பம் துரையின் தந்தை இருநிலை தர்க்க கணிதத்தை தொலைபேசி வலையமைப்பில் ஞானித்த அமெரிக்க மின்னணுவியல் பொறியாளர் கிலாடு ஷான்னன் (1916-2001) அவர்களை பற்றியும் நீங்கள் வீட்டு படமாக மேலும் படித்து தெரிந்து கொள்ள வேண்டும். இதற்கு தமிழ் விக்கீபீடியவை பயன்படுத்தலாமே (http://ta.wikipedia.org)!

 shannon

[படம்: கிலாடு ஷான்னன்: தொலைபேசி வலையமைப்பில் பூலியன் கோட்பாடுகளை செயல்படுத்திய அமெரிக்க பொறியாளர்]

தர்க வகை கணிதம் மட்டும் போதுமா ?

இதானால் நம்முடைய கணினியை பொறுத்த மட்டில் இது செயல்படுவது எண்ணிம தர்க வகை கணிதம் (digital logic) மற்றும் சிலிக்கான் திண்மத்தால் உருவாக்கிய திரைதடயம் (semiconductor transistor).

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

எஞ்சிய துண்டு நிரலாக்கம்

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

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

என்னவோ குழந்தை தட்டு தடுமாறி, படி மேல் கால்வைத்து, எழுந்து நடந்து, ஓடிய கதை மாதிரி இருக்குதல்லவா ? இது கேள்வி கூறினால் உங்கள் சிந்தனை சரியான திசையில் நோக்கி செல்கிறது என்று சந்தோஷ படுங்கள்.

நிரலாக்கம் (programming) அப்படினா என்ன ?

கணினி செய்யும் ஓவ்வொரு செயலிலும் அதற்கு போதித்து நாம் நிரல் மூலம் சொல்ல வேண்டி இருக்கிறது இதையே நிரலாக்கம் (programming) என்றும், இதனை செய்பவள் நிரலாளர் (programmer) என்றும் அழைக்கிறோம். இவ்வாறு தர்க ரீதியாக, கணிதம் ரீதியாக, செயல்முறை (algorithm) விதிகளையும் கோட்பாடுகளையும் கொண்டு ஒரு கணினியை செயல்படுத்தும் வேலை தற்போது படு கிராக்கியாக உள்ளது எல்லோரும் அறிந்த உண்மை. ஆனால் இதனையும் தாண்டி இந்த துறையில் என்னமோ ஒரு சிறப்பு அம்சம் உள்ளது என்பதையும் இதந்த அறிவியல் துறை மிக இளமையானது என்பதையும் இன்றைய மாணவர்கள் மனதில் கொள்ளவேண்டும்.

கணிமையின் கோட்பாடு கட்டமைப்பு அலன் டூரிங்

அலன் டூரிங் (1912-1954) என்ற கணிதவியல் மேதை, தனது தர்க ஆராய்ச்சிகளில் கணிமையின் அடிப்படை கோட்பாடுளை 1936 ஆண்டில் “on computable numbers with an application to the entscheidungsproblem,என்ற தலைப்பில் ஒரு மாபெரும் ஆய்வு கட்டுரையை வெளியிட்டார். இதில் எப்படி ஒரு சூத்திரம் அல்லது செயல்முறை இருந்தாலும் அவற்றில் சில கோட்பாடுகளை எந்திரத்தாலும் கூட கணிக்கவே முடியாது என்றும் நிரூபித்தார். இந்த ஆய்வில் அவர் சிந்தனையில் உருவாக்கிய கருவியே பின்னாளில் “டூரிங் எந்திரம்” (Turing machine) என்றும் பெயர் பெற்று தற்கால கணினி கட்டமைப்பிலும் ஏறத்தாழ 80 ஆண்டுகளாக இன்றுவரையும் நமக்கு கலங்கரை விளக்காக அமைந்துள்ளது.

turing1 turing2

[படம் : அலன் டூரிங் (1912-1954) – கணிமையின் பிதாமகன், தற்கால கணினியின் விஸ்வரூபத்தை முதலில் கண்டுபிடித்தும், இதற்க்கு கணிதவியல் கோட்பாடுகளில் அடிப்படை அஸ்திவாரத்தை அமைத்ததும் இவரே. இவர் கலோனிய இந்தியாவில் பிறந்த ஆங்கிலேயர்]

கணினி நிரலாக்கம்

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

தமிழில் கணினி நிரலாக்கம் செய்யும் வழி “எழில்” என்றும் ஒரு நிரலாக்க மொழி உள்ளது இதனை http://ezhillang.org என்ற வலை தளத்தில் இருந்து பயன்படுத்தி பார்க்கலாம். இதே தளத்தில் கணிமை நிரலாக்கம் பற்றி கற்று கொள்ளவும் ஒரு புத்தகம், “தமிழில் நிரல் எழுது” என்ற பெயரில், உள்ளது (இது இலவசமாக கிடைக்கும்). எழில் மொழி உங்களை போன்ற சிறுவர்கள் உங்களுக்கு முதன்முறையாக நிரல்கள் எழுத உதவும். ஆங்கிலம் அறியாதவர்கள் கணிப்பொறியை இயக்க உதவும். கீழே ஒரு வினா விடை விளையாட்டை எழில் மொழியில் எப்படி கணினியுடன் விளையாடுவது என்றும் பார்க்கலாம்,

பதிப்பி======== சரியான விடையை தேர்ந்தெடுக்கவும் ========”

பதிப்பி இந்தியாவின் தலைநகரம் எது?”
பதிப்பி அ ⇒ சென்னை
பதிப்பி ஆ⇒ மதுரை
பதிப்பி இ ⇒ டெல்லி
பதிப்பி ஈ ⇒.மும்பை

சரியானவிடை = “
உங்கள்விடை
= உள்ளீடு(“உங்களுடைய பதில் என்ன? “)

@(சரியானவிடை == உங்கள்விடை) ஆனால்
பதிப்பி வாழ்த்துகள். உங்களுக்கு 10 மதிப்பெண்கள்!”
இல்லை
பதிப்பி தவறான விடை. மீண்டும் முயற்சி செய்யுங்கள்!”
முடி

[குறிப்பு : வினா விடை விளையாட்டை இயக்கும் வண்ணம் அமைந்த “எழில்” கணினி மொழி நிரல்]

இந்த நிரலை இயக்கினால் ‘இ’ என்றும் பயனர் விடையளித்தால் வாழ்த்து கிடைக்கும், அல்லது உதை (சும்மா விளையாட்டுங்க) – இல்லை இல்லை திரும்ப விளையாடும் வாய்ப்பும் பயனருக்கு கிடைக்கும் வண்ணம் இந்த நிரல் உருவாக்கபட்டது.

cover

[படம்: எழில் மொழி பயில்வதற்கு உபயோகமாகும் “தமிழில் நிரல் எழுது எழில் நிரலாக்க மொழி,” புத்தகம். இதை http://ezhillang.org இல் இருந்து பெறலாம்]

 example

[படம் (வலது): பெர்னோல்லி எண்களின் சூத்திரம்; இதனை நிரலாகவும் மாற்றலாம்.]

adalovelace

[படம் (இடது): இலண்டன் பூங்காவில் அரசி அடா லவ்லேஸ்இன் சிற்பம்]

சாதனை நிரலாளர்கள்

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

# பெர்னொல்லீ எண்களை கணக்கிடு
நிரல்பாகம் பெர்னொல்லீ_எண் ( m, n )
@( m == 0 )
ஆனால்
# பெர்னொல்லீ_எண்( 0, n ) = 1
பின்கொடு 1.0
இல்லை
பெர்னொல்லீ
= 0.0
மொத்தம்
= 0.0
எண்கள்
= range(0,m)
@(எண்கள் இல் இவ்வெண்) ஒவ்வொன்றாக
மொத்தம்
= மொத்தம் + binomial_coeff(m,இவ்வெண்)*பெர்னொல்லீ_எண்(இவ்வெண்,n)/(m – இவ்வெண் + 1.0) #பதிப்பி இவ்வெண், மொத்தம்
முடி
பெர்னொல்லீ
= n^(m*1.0) – மொத்தம்
பின்கொடு பெர்னொல்லீ
முடி
முடி

[குறிப்பு : பெர்னோல்லி எண்களை கணக்கிடும் வண்ணம் அமைந்த “எழில்” கணினி மொழி நிரல்]

அறிவுரை

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

உங்களுக்காக செயற்கை நுண்ணறிவும் (A.I), எந்திரன் போன்ற ரோபோக்கள் (Robots), தானியங்கி கார்கள் (self-driving cars) போன்ற பல சவால்கள் காத்திருக்கின்றன. நீங்கள் இவற்றை மேற்கொள்ள கணினியியல், மற்றும் நிரலாக்கம், ஒரு நல்ல படிக்கல்லாக அமையும் என்று உங்களுக்கு அறிவுறுத்துகிறேன்.

முனைவர். திரு. முத்து அண்ணாமலை,

விரிகுடா பகுதி.

கலிஃபோர்னியா. ஐக்கிய அமெரிக்க

(தொடர்பு மின்அஞ்சல்: ezhillang@gmail.com)

குறிப்பு: படங்கள் ஒப்புகைகள் விக்கிபீடியா, கிரேட்டிவ் காமன்ஸ் பொது உரிமை நோக்கில் சேர்க்கப்பட்டன.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s