This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Wednesday, August 7, 2013

புரோகிராம் எழுதுவது எப்படி?

புரோகிராமிங் என்றால் என்ன? தொடர் 4

Program எழுதுவதற்கு Logic எவ்வளவு முக்கியம் என்பது பற்றியும், அதை எப்படி வளர்த்துக் கொள்வது என்பது பற்றியும் முந்தைய பாகத்தில் பார்த்தோம். இனி Program ஐ எப்படி எழுதுவது என்பதைப் பார்ப்பபோம்.

புரோகிராம் எப்படி எழுதுவது?

Program எழுதுவதற்கு முன் நாம் சில அடிப்படைகளை புரிந்துகொள்ள வேண்டும். அதாவது நமது மனதில் உள்ள எண்ணங்களை computer அறிந்து கொண்டு எந்த வேலையும் செய்யாது. நாம்தான் நமது தேவைகள் என்ன என்பதை command டுகளாக எழுதவேண்டும். நாம் எழுதிய புரோகிராமில் ஏதாவது bug வந்தால் அது கம்ப்யூட்டரின் பிழையில்லை, மாறாக அது நமது logic ல் உள்ள பிழை என்பதை கவனத்தில் கொள்ளவேண்டும். நாம் ஒரு பிழையான code ஐ எழுதி அதை execute செய்யும் போது கம்ப்யூட்டர் அதை தானாக சரிசெய்து கொள்ளாது. error / crash / hang என்று ஏதேனும் ஒரு வழியில் நமக்கு காட்டிவிடும். அதை எப்படி fix செய்வது என்பதை நாம்தான் யோசிக்கவேண்டும்.

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

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

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

உதாரணமாக சாப்பிடு என்று அம்மா சொன்னால் நமது மூளை நமக்கிடும் கட்டளைகளை பாருங்கள்.

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

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

சரி மேற்கூரிய செயல்களை வரிசை மாற்றி ஒரு ஒழுங்கில்லாமல் நமது மூளை நமக்கு கட்டளையிட்டால்....

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

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

அதாவது plan இல்லாமல் மூளை இயங்குகிறது. இறுதியில் எதிர்பார்த்த result கிடைப்பதில்லை.

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

இதை ஆங்கிலத்தில் software engineering method for problem solving என்று சொல்வார்கள்.

அதை அடுத்து பார்ப்போம்...

Software engineering method என்றால் என்ன?

புரோகிராமிங் என்றால் என்ன? தொடர் 5

ஒரு வேலையை முடிப்பதற்காக, நமது மூளையானது செய்யவேண்டிய செயல்களை எந்த வரிசைப்படி செய்தால் என்னென்ன result கிடைக்கும் என்பதை பரிசோதித்து, நிறைய plan கள் போட்டு அதிலிருந்து சிறந்த பிளானை தேர்வுசெய்து நமக்கு கட்டளைகளை வரிசைக்கிரமமாக தந்துகொண்டிருக்கிறது என்பதையும் அதுதான்Software engineering method for problem solving என்பதற்கு அடிப்படை என்பதையும் முந்தைய பாகத்தில்  பார்த்தோம். இனி...

Software engineering method என்றால் என்ன? 

நமக்கு தரப்பட்ட problem or requirement ற்கு ஏற்ப program எழுதுவதற்காக நாம் கையாளும் பல்வேறு technique க்குகளை software engineering method for problem solving எனலாம். இந்த method ல் ஐந்து கட்டங்கள் உள்ளன. இவற்றை நாம் பின்பற்றினால் நம்மால் தரமான program ஐ கொடுக்க முடியும்.

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

2. இரண்டாவது Analysis செய்வது. அதாவது requirements கிடைத்தவுடன் அதை ஆய்வு செய்வது. Requirement சரியாக இருக்கிறதா? அதற்கு தேவையான input க்கள் என்னென்ன? output க்கள் என்னென்ன? அதனை செய்து முடிக்க தேவையான இதர விசயங்கள் என்னென்ன என அனைத்தையும் ஆய்வு செய்வது.

3. மூன்றாவது Design செய்வது. அதாவது நம்முடைய Logic மற்றும் idea க்களை பயன்படுத்தி எப்படி result ஐ கொண்டுவரப் போகிறோம் என்பதை நமக்கு புரிகிற மாதிரி எழுதுதல் (Algorithm writing). இது மனிதர்களுக்கு விளங்குகின்ற மொழியில் எழுதுவது. ஆரம்பத்தில் இதை நீங்கள் தமிழில் கூட எழுதலாம். இதுதான் மிக முக்கியமான கட்டம் ஆகும். ஏனென்றால் இங்குதான் நமது program எப்படி வேலை செய்யப் போகிறது என்பது தீர்மானிக்கப்படுகிறது. 

சில சமயம் requirements ஸும் அதற்காக நாம் செய்யவிருக்கும் program மும் மிகப்பெரியதாக இருந்தால் முழுப் program முடைய அனைத்து concept or idea ஆரம்பத்திலேயே தெரியாதே என்ற கேள்வி எழலாம். கேள்வி சரிதான், பல்வேறு சமயங்களில் algorithm எழுதுவது சற்று சிரமமாகத்தான் இருக்கும். ஏனென்றால் ஒரு புரோகிராம் எழுதி execute பண்ணுவதற்கு முன்பே அதைப்பற்றி அவ்வளவாக நமக்கு idea இருக்காதுதான். அதற்காக அதை விட்டுவிட முடியுமா? அவ்வாறு நமக்கு புரியாத விசயங்களை high level steps களாக வகைப்படுத்த வேண்டும். அதன் பின்னரும் விளங்கவில்லையென்றால் ஒவ்வொரு high level step ஐயும் சிறிது சிறிதாக பிரித்து (divide into smaller steps) அவற்றை ஆய்வு செய்யவேண்டும். அதற்கடுத்து அதையும் சிறிது சிறிதாக பிரித்து எழுதுவது இவ்வாறு எழுதும்போது பெரிய விசயங்கள் எல்லாம் சிறிய சிறிய பகுதிகளாக பிரிக்கப்பட்டு விடுவதால் idea நமக்கு எளிதாக கிடைக்கும்.

நான்கு மாடுகள் ஒற்றுமையுடன் இருந்தபோது சிங்கத்தால் அவற்றை கொல்ல முடியவில்லை. சிங்கம் யோசித்தது. மாடுகளை தனித்தனியாக முதலில் பிரித்தது. பின்னர் சுலபமாக அனைத்தையும் கொன்றது. என்ன சிறுவயதில் பள்ளி புத்தகத்தில் படித்த நீதிக்கதை ஞாபகம் வருதா? இந்த கதையிலிருந்து ஒவ்வொருவரும் ஒவ்வொரு படிப்பினை பெறும் வேளையிலே, சிங்கத்தின் logic or algorithm சரியாக வேலை செய்தது என்று ஒரு programmer சொல்வார். Algorithm சரியில்லையென்றால் என்னவாகியிருக்கும்? சிங்கத்துக்கு உணவு கிடைச்சிருக்காது, உதைதான் கிடைச்சிருக்கும்.

இதைத்தான் divide and conquer method என்று சொல்வார்கள்.

4. நான்காவது implement the algorithm. அதாவது algorith தத்தை programming command டுகளாக மாற்றி எழுதுவது. இங்கு ஒரு விசயத்தை நாம் புரிந்து கொள்ளவேண்டும். algorithm என்பதை எல்லோரும் போடலாம். ஏன் நமது கதையில் சிங்கம் கூட போட்டது. ஆனால் இந்த algorith தத்தை computer விளங்காது. அதற்கென உள்ள சில பிரத்யேகமான command டுகளை நாம் பயன்படுத்தி program எழுதவேண்டும். இதற்குதான் நாம் c, delphi, visual basic, java என்று படிக்கிறோம். அதாவது programmer என்பவருக்கு algorithm + programming commands இரண்டையும் எப்படி எழுதவேண்டும் என்பது தெரிந்திருக்க வேண்டும். 

5. அடுத்து  Test செய்வது. என்னதான் சிறப்பாக algorithm எழுதி அதை program ஆக மாற்றினாலும் அதில் ஏதாவது bug (சிக்கல்) இருக்கத்தான் செய்யும். அதைத் தவிர்க்கமுடியாது. என்ன... பழகப் பழக... அதாவது experience கிடைக்க கிடைக்க bug வேண்டுமானால் குறையலாம். எனவே கவலைப்படத் தேவையில்லை. Bug குகளை களைய வேண்டுமானால் நாம் நிறைய test செய்யவேண்டும். ஒரு கோணத்திலிருந்து test செய்தால் ஒருவேளை program சரியாக செயல்பட்டு நமக்கு தேவையான result ஐ கொடுக்கலாம். உடனே ஆஹா என்னுடைய program எதிர்பார்த்த result ஐ கொடுத்துவிட்டது என்று எண்ணக்கூடாது...

என்னது! program correct result கொடுத்தாலும் வேலை முடிஞ்சிடுச்சுன்னு சொல்லக்கூடாதா... என்னங்க சொல்றீங்க.... என்று நீங்கள் கேட்பது புரிகிறது....

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


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

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

எதற்கு சம்பந்தமி்ல்லாம குதிரை கதையை இங்கு சொல்கிறேன் என்று பார்க்கிறீர்களா
Test செய்யும்போது ஒரே மாதிரியே யோசிக்கக்கூடாது. ஏனென்றால் ஒவ்வொருவரும் வித்தியாசமான கோணத்தில் உங்கள் program ஐ கையாளும் போது அவர்கள் நீங்கள் போட்டிருக்கும் rule களை அப்படியே  follow பண்ணுவார்கள் என்று நினைப்பது அபத்தம். இப்படி test செய்து பார்த்தால் என்ன விடை கிடைக்கும்.  அப்படி test செய்து பார்த்தால் என்ன விடை கிடைக்கும் என பல கோணங்களிலிருந்து உங்கள் program ஐ நீங்களே test செய்து பார்க்கும்போதுதான் அதில் உள்ள பிரச்சனைகள் என்னென்ன என்பதும் அதை solve செய்ய எப்படி நமது algorithm த்தை மாற்ற வேண்டும் என்ற ஐடியாவும் கிடைக்கும்.


இப்போ குதிரை கதையில் உள்ள bug என்னன்னு பார்ப்போம். அப்பாடா என்றால் ஓடவேண்டும் என்று algorithm எழுதிய அந்த நபர் ரோட்டிலேயும் குதிரையை test செய்து பார்த்திருந்தால் ஏதாவதொரு சூழ்நிலையில் அப்பாடா என்றதற்கு தவறான result டினை பெற்றிருப்பார். ஆஹா!!! அப்பாடா என்றால் ஓடவல்லவா பழக்கியிருக்கிறோம் இந்த சமயத்தில் ஓடக்கூடாதே என யோசித்து அதிலிருந்து மீள்வதற்கான வழியை ஆராய்ந்து குதிரையை இன்னும் சிறப்பாக பழக்கியிருப்பார்.அதாவது குதிரையும் அப்பாடா என்றவுடன் ஓடாமல் எதிரில் இருக்கின்ற சூழ்நிலைக்கு தக்கவாறு நடந்துகொள்ள பழகியிருக்கும். எனவே நிறைய கோணங்களில் நாம் யோசிக்கவும் test செய்யவும் பழகிக்கொள்ள வேண்டும்.

மேலே நாம் பார்த்த ஐந்து கட்டங்களில் மூன்றாவது கட்டமான Program design செய்வதுதான் software engineering method for problem solving  ல் முக்கியமான கட்டம் என்பதை தெரிந்துகொண்டோம். அதிலே Design என்றால் Alogithm எழுதுவது என்று பார்த்தோம். அதென்ன Algorithm அதை எப்படி எழுதுவது என்பதை அடுத்து பார்ப்போம்...

புரோகிராமிங் என்றால் என்ன? தொடர் 3


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

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

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

சிந்திக்க தூண்டும் சின்ன சின்ன கேள்விகளை உருவாக்கி பதில் அளியுங்கள்:

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

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

அடுத்து உங்களுக்கு விருப்பமான புரோகிராமிங் லாங்குவேஜில் (உதாரணமாக C, Delphi, Visual Basic, Java) சிறிய சிறிய புரோகிராம்களை உருவாக்குங்கள். உதாரணமாக

1. Write a program to find the max, min, average and total of numbers entered by the user.

2. Write a program to accept a string from the user and find the number of vowels and the vowels that got repeated the most.

3. Write a program to accept an array of numbers and sort the same using Bubble Sort Algorithm.

4. Write a program to accept a number from the user and test if it is a Fibonacci number or not.

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

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

பிறர் எழுதிய புரோகிராம்களை ஆய்வு செய்யுங்கள்:

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

புதிர்களுக்கு விடை அளியுங்கள்:
இதழ்களில் வரும் (கணிதப்) புதிர்களுக்கும், Elementary school (ஒன்று முதல் 5 ஆம் வகுப்பு வரை உள்ள) கணித பாடங்களுக்கும் விடையளியுங்கள். ஆரம்ப கட்டத்தில் விடைகாண நிறைய நேரம் தேவைப்படலாம். கவலைப்படாமல் பழகுங்கள். போகப்போக விரைந்து சிந்திக்கும் ஆற்றல் உங்களிடம் வளரும்.

அடுத்தவர்களுக்கு உதவுங்கள்:

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

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

என்னுடன் பகிர்ந்து கொள்ளுங்கள்:

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

புரோகிராமிங் என்றால் என்ன? தொடர் 2


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

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

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

புரோகிராமிங் மிகவும் கடினமான ஒன்று என்று சொல்லும் மாணவர்களை கவனித்தால் அவர்கள் Logic ஐ மனப்பாடம் செய்துகொண்டிருப்பவர்களாக இருப்பார்கள்.

சரி முந்தைய பாகத்தில் விட்ட இடத்திற்கு வருவோம்...

வீட்டை விட்டு வெளியே வருகிறீர்கள்...

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

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

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

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

சாதாரண விசயமாக நீங்கள் கருதும் இந்த project ஐ எப்படி கையாண்டீர்கள் என்று பார்ப்போமா?

உங்களுக்கு கிடைத்த requirement order ஐ சற்று கவனியுங்கள்.

A1. பொன்னி அரிசி வாங்க வேண்டும்

A2. 5 கிலோ வாங்க வேண்டும்

A3. பொன்னி அரிசி இல்லையென்றால் வேறு எதுவும் வாங்கக்கூடாது

A4. அமுதம் கடையில் வாங்க வேண்டும்

A5. அங்கு இல்லையென்றால் டவுனுக்கு போய் அரிசி மார்க்கெட்டுல வாங்கவேண்டும்

A6. சைக்கிள் எடுத்துக்கிட்டு போகவேண்டும்

A7. காசு எடுத்துக்கிட்டு போகவேண்டும்

உங்களுக்கு கிடைத்த இதே வரிசையிலா நீங்கள் செயல்பட்டீர்கள்? சற்று சிந்தியுங்கள்.... ஆகா இல்லையே....

பின்னே எப்படி சரியாக அரிசியை வீட்டுக்கு கொண்டுவந்தேன் என்கிறீர்களா?...

அங்குதான் உங்களுடைய லாஜிக் வேலை செய்தது. எந்த வரிசையில் செயல்பட்டீர்கள் என்பதை பார்ப்போமா?

முதலில் A7

அடுத்து A6

அடுத்து

சைக்கிள் ஓட தேவையென்று நீங்கள் கருதும் காற்று, பூட்டு, ஸ்டேன்டு முதலியவற்றை செக் செய்தீர்கள் (logic: necessary input validation)

அடுத்து

தெருவில் போனீர்கள் (executing set of tasks to achieve the goal), போக முடியாத அளவிற்கு பள்ளம் இருந்தது, வேறு பாதையை தேர்ந்தெடுத்து போனீர்கள் (instant problem solving / decision making )

அடுத்து A4 (சரியான கடையை தேர்ந்தெடுத்தீர்கள் conditional test to ensure requirement is achieved)

அடுத்து A1 (வாங்கியது பொன்னிதான் என்பதை கன்பார்ம் செய்கிறீர்கள் validation)

அடுத்து A2 (5 கிலோதான் வாங்கினோமா என்பதை கன்பார்ம் செய்கிறீர்கள் validation)

A3 மற்றும் A5  (இதை செயல்படுத்த அவசியமில்லாமல் போனது. காரணம் நமது objective A1 மற்றும் A2 மூலம் நிறைவேறிவிட்டது)

அடுத்து

பத்திரப்படுத்தி எடுத்து வருகிறீர்கள். (executing necessary tasks to achieve the goal)

பிராஜக்ட் முடிந்தது.

இந்த பகுதியின் இரண்டாம் பாராவை இப்பொழுது படியுங்கள் அதன் அர்த்தம் உங்களுக்கு விளங்கும்.

இதுதான் புரோகிராமிங்கின் அடிப்படை. என்ன கொஞ்சம் புரிய ஆரம்பிக்கிறதா?

சரி. இதெல்லாம் ஒரு விசயமா இதில் என்ன இருக்கிறது என்று உங்களில் சிலர் கேட்கலாம்.

இந்த project ஐ நடத்திவிட்டு இது பரிட்சைக்கு வரும் என்று உங்கள் ஆசிரியர் கூற உங்கள் நண்பர் ஒருவர் இதை (லாஜிக் உட்பட) மனப்பாடம் செய்கிறார் என்று வைத்துக்கொள்வோம்.

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

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

டென்ஷன் ஆகிறார், மனப்பாடம் செய்ததை கொஞ்சம் கொஞ்சமாக நினைவுபடுத்தி பார்த்துக்கொள்கிறார்.

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

வீட்டை விட்டு வெளியே வருதல்...

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

கடையில் சைக்கிளை வாடகைக்கு எடுத்தல்...

அம்மா சொன்ன அரிசி கடைக்கு போய் அரிசி 5 கிலோ வாங்கி வீட்டுக்கு அரிசியை கொண்டுபோய் சேர்த்தல்...

எடுத்த சைக்கிளை கொண்டு போய் விட்டு விட வேண்டும் என்பதை எழுத தோன்றவில்லை.

இவ்வாறாக எழுதுகிறார்!

புரோகிராமை execute பார்த்தால் error என்று வருகிறது! எதிர்பார்த்த ரிசல்ட் கிடைக்கவில்லை. டென்ஷன் இன்னும் தலைக்கேறி எப்படி fix செய்வதென்று புரியவில்லை.

எதையெதையோ மாற்றி திருத்தி பார்க்கிறார்... ஊகூம்... ஒன்னும் நடக்கமாட்டேங்குது...

பரிட்சை நேரம் முடிந்தது solve பண்ணாமலேயே வந்து விடுகிறார். வெளியே அவருடைய நண்பர் ஒருவர் டேய் நம்ம சாரு சொன்ன அதே program எனக்கு வந்துச்சுடா கொஞ்சம் twist பண்ணி கேட்டிருந்தாங்க புரோகிராம்ல கொஞ்சம் லாஜிக்கை மாற்றி எழுதி execute பண்ணி பார்த்தேன். சார் very good ன்னு சொன்னார்டான்னு சொன்னதைக் கேட்டு நம்மாளுக்கு அழுகையே வந்துடும்.

உங்களுடைய இந்த இரு நண்பர்களுக்கும் இடையே உள்ள வித்தியாசம் என்னன்ன புரிஞ்சுதா? லாஜிக்க மனப்பாடம் செய்வது எவ்வளவு அபத்தம்னு இப்ப தெரியுதா?

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

லாஜிக்க மனப்பாடம் பண்ணுறது தப்புன்னு இப்போவாச்சம் விளங்குச்சே. சரி லாஜிக்க எப்படி உருவாக்கறதுன்னு அடுத்து பார்க்கலாம்...