Tag Archives: functional programming

செயற்கூறிய நிரலாக்கம் – செயற்கூறிய ஜாவாஸ்கிரிப்ட்டு – பகுதி 10

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

செயற்கூறிய நிரலாக்கம் – தரவின வரையறை – பகுதி 9

இயல்நிலைமொழிகளில் (Static languages) ஒரு செயற்கூற்றின் வரையறையோடு, தரவினங்களும் (data types) பிணைக்கப்பட்டுள்ளதை, பின்வரும் எடுத்துக்காட்டில் காணலாம். public static String quote(String str) { return “‘” + str + “‘”; } பொதுப்படையான தரவினங்களைக் (generic types) குறிக்கும்போது, இது இன்னும் சிக்கலானதாகிறது. private final Map<Integer, String> getPerson(Map<String, String> people, Integer personId) { // … } இயங்குநிலைமொழிகளில் (dynamic languages) இந்தச்சிக்கல் இருப்பதில்லை. ஜாவாஸ்கிரிப்ட்டிலேயே, நாம் பின்வருமாறு… Read More »

செயற்கூறிய நிரலாக்கம் – இயங்குவரிசை – பகுதி 8

பெரும்பாலான நிரல்கள் அல்லது செயலிகள் ஒற்றைஇழையைக் (single-threaded) கொண்டவையாகவே இருக்கின்றன. பலவிழைகளைக் (multi-threaded) கொண்ட நிரல்களில், இவ்விழைகள், ஒருகோப்பினை அணுகவோ, இணையத்திற்காகவோ காத்திருப்பதிலேயே நேரத்தை செலவழிக்கின்றன. இயல்பாகவே மனிதமூளை தான்செய்யவேண்டிய செயல்களை ஒன்றன்பின் ஒன்றாக செய்யவே திட்டமிடுகிறது. நம் எல்லோருக்கும் பரிச்சயமான சுவையானவொரு ரொட்டி தயாரிக்கும் எடுத்துக்காட்டுடன் இதைப்புரிந்துகொள்ளலாம். இதற்கான படிநிலைகள்: [code lang=”javascript”] ரொட்டியை எடுக்கவேண்டும். இருதுண்டுகளை வாட்டுவதற்கான சாதனத்தில் இடவேண்டும். வாட்டுமளவைத் தெரிவுசெய்யவேண்டும். வாட்டுவதைத்தொடங்குவதற்கான பொத்தானை அழுத்தவேண்டும். வாட்டப்பட்ட ரொட்டி குதித்துவரும்வரை பொறுத்திருக்கவேண்டும். ரொட்டித்துண்டுகளை… Read More »

செயற்கூறிய நிரலாக்கம் – பொதுவான செயற்கூறிய செயற்கூறுகள் – பகுதி 7

செயற்கூறிய நிரலாக்கமொழிகளில் பரவலாகப் பயன்படுத்தப்படும் மூன்று முக்கியசெயற்கூறுகளைப்பற்றி இப்பதிவில் தெரிந்துகொள்ளலாம். நமக்கு நன்கு பரிச்சயமான, எளிமையான ஜாவாஸ்கிரிப்ட்டு நிரலிலிருந்து தொடங்கலாம். [code lang=”javascript”] for (var i = 0; i < something.length; ++i) { // do stuff } [/code] இந்நிரலில் வழுவேதுமில்லை. ஆனால், இதற்குள் பெரும்பிரச்சனையொன்று அடங்கியிருக்கிறது. அதென்னவென்று கண்டறிய முடிகிறதா? இதுவொரு வார்ப்புநிரல் (Boilerplate code). ஒரு தீர்வைச்செயல்படுத்துவதற்கு இவை உதவுகின்றனவேயன்றி, இவற்றால் தீர்வினைத்தரமுடியாது. ஆனாலும் இதுபோன்ற கட்டளைகளை நாம்… Read More »

செயற்கூறிய நிரலாக்கம் – ஒற்றைஉள்ளீட்டாக்கம் – பகுதி 6

முந்தைய பகுதியில் mult மற்றும் add என்ற இருசெயற்கூறுகளைகளின் உள்ளீட்டுஉருபுகளின் எண்ணிக்கையின் வேறுபாட்டால், அவற்றைக்கொண்டு செயற்கூற்றுக்கலவையை உருவாக்கமுடியாமல் போனது. [code lang=”javascript”] var add = (x, y) => x + y; var mult5 = value => value * 5; var mult5AfterAdd10 = y => mult5(add(10, y)); [/code] இங்கே add செயற்கூறு இரண்டு உள்ளீட்டுஉருபுகளை ஏற்கிறது. எனவே அதனை ஒற்றை உள்ளீட்டுஉருபை ஏற்கும் mult என்ற செயற்கூறோடு… Read More »

செயற்கூறிய நிரலாக்கம் – செயற்கூறுகளின் கலவை – பகுதி 5

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

செயற்கூறிய நிரலாக்கம் – சூழச்சுருட்டு – பகுதி 4

Closureஐப்பற்றி அறிந்துகொள்வதற்கு முன்னதாக, அதைப்பயன்படுத்தும் ஓர் எளிய செயற்கூற்றைக்காணலாம். [code lang=”javascript”] function grandParent(g1, g2) { var g3 = 3; return function parent(p1, p2) { var p3 = 33; return function child(c1, c2) { var c3 = 333; return g1 + g2 + g3 + p1 + p2 + p3 + c1 + c2 + c3; }; };… Read More »

செயற்கூறிய நிரலாக்கம் – உயர்வரிசை செயற்கூறுகள் – பகுதி 3

கீழேயுள்ள நிரலிலுள்ளதைப்போன்ற செயற்கூறுகளை நமது அன்றாட நிரலாக்கப்பணியில் கண்டிருப்போம். [code lang=”javascript”] function validateSsn(ssn) { if (/^\d{3}-\d{2}-\d{4}$/.exec(ssn)) console.log(‘Valid SSN’); else console.log(‘Invalid SSN’); } function validatePhone(phone) { if (/^\(\d{3}\)\d{3}-\d{4}$/.exec(phone)) console.log(‘Valid Phone Number’); else console.log(‘Invalid Phone Number’); } [/code] அடிப்படையில், இவ்விரு செயற்கூறுகளும் ஒரேவேலையைத்தான் செய்கின்றன. அதாவது, கொடுக்கப்பட்ட மதிப்பை (ssn / phone), ஒரு செங்கோவையைக்கொண்டு (RegularExpressions) சரிபார்த்து, அதன் விடையை அச்சிடுகின்றன. எனவே, இவ்விரு செயற்கூறுகளுக்குப்பதிலாக… Read More »

செயற்கூறிய நிரலாக்கம் – நிலைமாறாத்தன்மை – பகுதி 2

முன்குறிப்பு: கருத்தனின் பரிந்துரைப்படி, Functional programming என்பதற்கு “செயற்கூறிய நிரலாக்கம்” என்ற பதத்தையே தொடர்ந்து பயன்படுத்துவோம். [code lang=”javascript”] var x = 1; x = x + 1; [/code] இந்த நிரலை முதன்முதலில் பயன்படுத்தியபோது, xம், (x + 1)ம் சமமாக இருக்கமுடியாதென்ற அடிப்படை கணித சமன்பாட்டை மறந்துவிட்டிருந்தோம். xன் மதிப்புடன் ஒன்றைக்கூட்டி, அதன் விடையை மீண்டும் xல் சேமிக்கவேண்டும் என்பதே, பிறமுக்கிய மொழிகளில் , இதன் பொருள். ஆனால், x = x… Read More »

செயல்பாட்டு நிரலாக்க அடிப்படைகள் – பகுதி 1

இதுநாள்வரையில் பொருள்நோக்குநிரலாக்கத்தைப் (object oriented programming) பயன்படுத்தியே நிரலெழுதி வருவோர், செயல்பாட்டு நிரலாக்கத்தைக் (functional programming) கற்றுக்கொள்ளவேண்டுமென்றால் அதன் அடிப்படைக்கருத்துக்களை அறிந்துகொள்ளவேண்டியது அவசியம். முதலில் இது சற்றே கடினமான விசயமாகத்தெரிந்தாலும், சரியான கோணத்திலிருந்து அணுகும்போது எளிமையானதாகவே இருக்கிறது. முதன்முதலில் ஒரு வாகனத்தை ஓட்டக்கற்றுக்கொள்ளும்போது மிகவும் சிரமப்பட்டு கற்றுக்கொள்கிறோம். பிறர் செய்வதைக்காணும்போது எளிமையாகத்தோன்றினாலும், நாமே செய்யும்போது நாம் நினைத்ததைவிட கடினமானதாகவே இருந்தது. மிதிவண்டியை வாடகைக்கு எடுத்துக்கொண்டு, அக்கம்பக்கத்து தெருக்களில் சுற்றித்திரிந்து பழகுகிறோம். பலமுறை விழுந்தெழுந்து, முட்டிமோதி சைக்கிள் ஓட்டக்கற்றுக்கொண்டுவிட்டோம்.… Read More »