எம் ஐ டி ரிவியூவில் பேசப்பட்ட எதிர்கால 10 தொழில் நுட்பங்கள்

This entry is part [part not set] of 16 in the series 20010304_Issue

கணிணியின் மென்பொருளில் சிக்கலெடுப்பது (Untangling Code) க்ரெகோர் கிஸேல்ஸ் (Gregor Kiczales )


மென்பொருள் (software) எழுதும் மென்பொருள் பொறியியலாளர்களைப் (software engineers) பற்றி பரிதாபப்படாமல் என்ன செய்வது ? அவர்கள் உருவாக்கும் மென்பொருள்கள் மூலம் பல சிக்கல்களை விடுவிக்கலாம். பெரிய பெரிய ஆவணங்களை உருவாக்கலாம். அந்த ஆவணங்களில் இருக்கும் ஒரு வார்த்தையை இன்னொரு வார்த்தையாக மாற்றலாம். ஆனால் அதே மென்பொருள்களுக்குள் இருக்கும் ஆணைகளை (Code) மாற்ற ஒரு ஒரு வார்த்தையாகத்தான் மாற்ற வேண்டும். இது மிகவும் கடினமான கவனமான வேலை. ஏதோ நினைத்து எங்கோ மாற்றினால், வேறெங்கோ வெடிப்பது மென்பொருள் எழுதுபவர்களுக்கு மிகவும் பழக்கமான தலைவலி. கலிபோர்னியாவில் இருக்கும் ஜெராக்ஸ் நிறுவனத்தின் பாலோ அல்டோ ஆராய்ச்சி மையத்தில் முதன்மை பொறியியலாளராக இருக்கும் க்ரெகோர் கிஸேல்ஸ் அவர்களுக்கு நன்றாகத் தெரிந்த பிரச்னை. இந்த தலைவலிக்கு ஒரு தலைவலி மருந்தும் வைத்திருக்கிறார். கிஸேல்ஸ் சொல்லும் முறைக்குப் பெயர் ‘aspect-oriented programming ‘ என்பது. மற்ற துறைகளில் இருக்கும் குறுக்கு வழிகள் போலவே மென்பொருள் துறையிலும் இந்த குறுக்கு வழி பயன்படும் என்று கருதுகிறார்.

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

இன்னொரு பிரச்னை, ஒரே விஷயத்தை அதே நேரத்தில் இரண்டு பேர் தொடாமல் பார்த்துக்கொள்வது. (அந்த விஷய பாதுகாப்பு (Data security), விஷய நேர்மை (Data integrity) ஆகியவையும் முக்கியமாக பார்த்துக்கொள்ளவேண்டும்) இதற்காக மென்பொருள் எழுதுபவர்கள் மென்பொருளில் பல இடங்களில் பல்வேறு ஆணைகளை எழுதவேண்டும். ஒரு சாதாரண சின்ன மென்பொருளாக இருந்தாலும் இதுபோன்ற 100 பிரச்னைகளை சந்திக்க வேண்டும்.

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

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

இந்த வகை மென்பொருள் சிந்தனை பல வருடங்களாகவே பல வேறு பெயர்களில் இருந்து வருகிறது. adaptive programming என்று நார்த்ஈஸ்டர்ன் பல்கலைக்கழகத்தில் சொல்கிறார்கள். subjective programming என்று ஐபிஎம் நிறுவனத்தில் சொல்கிறார்கள். ‘composition filtering ‘ என்று நெதர்லாந்து ட்வெண்டா பல்கலைக்கழகத்தில் அழைக்கிறார்கள். வேறு இடங்களில் multidimensional separation

of concerns ‘ என்றும் அழைக்கிறார்கள். ஆனால் மற்ற இடங்களில் இருப்பதுபோல கிஸேல்ஸ் அவர்களும் அவரது தோழர்களும் இதை வெறும் பரிசோதனைச்சாலை விஷயமாகவே வைத்துவிடவில்லை. ஜாவா எனப்படும் மென்பொருள் மொழிக்கு சேர்க்கையாக ஒரு புதிய மென்பொருளையும் எழுதியிருக்கிறார்கள். இதற்கு AspectJ என்று பெயர். இதனுடைய பெடா படிமம் www.aspectj.org என்னும் இடத்தில் இலவசமாக கிடைக்கிறது. கிஸேல்ஸ் வரும் ஜ்ஊனுக்குள் முதல் படிமம் 1.0 வெளியிட விரும்புகிறார். ‘இது மைய நீரோட்டத்துக்கு வர இன்னும் 15 வருடங்கள் ஆகலாம் ‘ என்று நினைக்கிறார்.

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

AspectJ மென்பொருள் எழுதுபவர்களுக்கு மிகுந்த உதவி என்று சொல்கிறார் கிஸேல்ஸ். மென்பொருள் எழுதுபவர்கள் வேகமாகவும் தெளிவாகவும் மேல்மட்டத்திலும் மென்பொருள் எழுதலாம் என்று கருதுகிறார் கிஸேல்ஸ்

Organization Project

Mehmet Aksit (University of Twente, the Netherlands) Composition filters

Karl Lieberherr (Northeastern University) Adaptive programming

IBM Research (Yorktown Heights, N.Y.) HyperJ system for Java programming

Mira Mezini (Univ. of Siegen, Germany) Enhancing modularity and reusability of A-O software

Series Navigation

கணிணியின் மென்பொருளில் சிக்கலெடுப்பது (Untangling Code) க்ரெகோர் கிஸேல்ஸ் (Gregor Kiczales )

கணிணியின் மென்பொருளில் சிக்கலெடுப்பது (Untangling Code) க்ரெகோர் கிஸேல்ஸ் (Gregor Kiczales )