C மொழித் தந்தைக்கு ஒரு மாணவனின் அஞ்சலி

“It’s not the actual programming that’s interesting. But it’s what you can accomplish with the end results that are important.”

–    Dennis Ritchie (in an interview to ‘Investor’s Business Daily’)

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

இதை எழுதிக்கொண்டிருப்பது ஓர் எழுத்தாளனாக அல்ல; ஒரு மாணவனாக‌.

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

நேர்முகத் தேர்வுகளில், பிடித்த ஏதேனும் மொழியில் குறிப்பிட்ட விஷ‌யத்துக்கு நிரல் எழுதச் சொன்னபோதெல்லாம் C மொழியையே தேர்ந்திருக்கிறேன். நான் மற்றவர்களை நேர்காணல் செய்ய நேர்ந்தபோதும் இதே கேள்விக்கு C மொழி பயன்படுத்தி எழுதியவர்கள்பால் தனியானதொரு வாஞ்சை ஏற்பட்டிருக்கிறது.

எண்ணங்களிலும் செயல்களிலும் ஊறிப்போயிருக்கும் இத்தொழில்நுட்பங்களின் ஆதிவடிவங்களை ஆக்கியவர் டென்னிஸ் ரிட்ச்சி – ஒன்று C மொழி; மற்ற‌து யூனிக்ஸ் இயங்குதளம். இவைதவிர அவரது முக்கியமான ஆக்கம் என நான் கருதுவது அவரது புத்தகங்களை: The C Programming Language மற்றும் Unix Programmer’s Manual.

கொஞ்சம் நிதானமாக யோசித்துப் பார்த்தால் சமகாலத்தவர் எவரையும்விட‌ தொழில்நுட்பத்தின்வழி நம் தினசரி வாழ்வின்மீது ஆகப்பெரிய பாதிப்பை எற்படுத்தியவர் என டென்னிஸ் ரிட்ச்சியையே சொல்லவேண்டியிருக்கிறது – ‘எவரையும்’ என்பது பில் கேட்ஸ், ஸ்டீவ் ஜாப்ஸ் இருவரையும் சேர்த்துத்தான்.

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

ஆனால் அவரது இறப்புச் செய்தி அவர் இறந்து மூன்று நாட்கள் கழித்து அவரது முன்னாள் பணிச்சகாவான ராப் பைக் என்பவர் தன் கூகுள் ப்ளஸ் பக்கத்தில் நேற்று அதிகாலை 6:32-க்கு பகிர்ந்து கொண்டதன் வாயிலாகவே வெளி உலகத்துக்கு வந்ததிருக்கிறது. அதிலும் அவரது மரணத்தேதி சரியாகக் குறிப்பிடப்படவில்லை.

நேற்று காலை 9 மணிவரை எந்த ஆங்கில வலைதளத்திலுமே இந்தச் செய்தி வெளியாகவில்லை. காலை 10 மணிவரை விக்கிப்பீடியாவில் தகவல் பதியப்படவில்லை. நேற்று மதியம் 2 மணி வரை பிபிசி போன்ற பிரபல செய்தி நிறுவன‌ங்கள் இச்செய்தியை வெளியிடவில்லை. இப்போதும்கூட ட்விட்டரில் ட்ரெண்டிங் ஆகவில்லை. தவிர்க்க இயலாது, ஸ்டீவ் ஜாப்ஸின் சமீப‌ மரணத்துக்குக் கிடைத்த அளப்பரிய அலப்பறைகளோடு ஒப்பிட்டுப் பார்த்து மனம் ஆதங்கம் கொள்கிறது.

கணிமையின் வரலாற்றில் ஒரு முக்கியமான சகாப்தமான அவரைப் பற்றி அவர் இறந்தபின்னரே எழுத நேர்ந்தது குற்றவுணர்ச்சியை எழுப்புவதாகவே இருக்கிறது.

டென்னிஸ் ரிட்ச்சி தனது வலைப்பக்கத்தில் தன் வாழ்க்கையை ஓர் அஞ்சலிக் குறிப்பைப்போல் சொல்ல விரும்பாமல் தன்மையிலேயே விவரிக்கிறார். (“A brief biography, in first person instead of obituary style.”) இப்போது அவர் இறப்புக்குப்பின் எழுதப்படும் இக்குறிப்பும் அவர் விருப்பம் போல் அப்படியே சொல்லப்படுகிறது:

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

பின் ஹார்வார்ட் பல்கலைக்கழகத்தில் இளநிலை இயற்பியல் படித்தேன். அப்போது ஹார்வார்ட்டில் இருந்த Univac – I என்ற கணினி பற்றிய ஒரு விரிவுரையைக் கேட்க நேர்ந்தது. அதுதான் கணினியியல்மீதான காதல் எனக்குள் உண்டாவ‌தற்கான முதல் விதை. பின்னர் கணினிகள் பற்றி, குறிப்பாக அவற்றின் நிரலாக்கம் பற்றித் தேடிப் படிக்கத் தொடங்கினேன்.

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

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

எம்.ஐ.டி தவிர பெல், ஜெனரல் எலெக்ட்ரிக், ஹனிவெல் ஆகிய நிறுவனங்கள் இத்திட்டத்துக்கு உதவின. கல்லூரிகளில் படித்துக்கொண்டிருந்தவர்களும், நிறுவனங்களில் பணியாற்றிக்கொண்டிருந்தவர்களும் இதில் பங்கெடுத்துக்கொண்டனர். அப்போது நிரலாக்கம் எனக்கு ஒரு சிக்கலான பிரச்னையாக அல்லாமல், சுவாரசியமான புதிராகவே தோன்றியது. இறுதியில் 1,000 பேர் பயன்படுத்தவல்ல, 24 மணி நேரமும் செயல்படும் ஓர் இயங்குதளத்தை வெற்றிகரமாக உருவாக்கினோம். அது மூன்றாவது பலமான‌ விதை.

1967-ல் என் அப்பா வேலை பார்த்த பெல் பரிசோதனைக்கூடத்திலேயே எனக்கும் வேலை கிடைத்தது. அங்கே கணினியியல் ஆராய்ச்சி மையத்தில் பணி. பின் 1968-ல், ஹார்வார்ட் பல்கலைக்கழகத்தில் பேட்ரிக் ஃபிஷர் என்ற புகழ்மிக்க கணினி விஞ்ஞானியின் கீழ் ஆய்வு செய்து பி.ஹெச்டி பெற்றேன். என் ஆய்வு subrecursive hierarchies of functions என்பது தொடர்பானது. இளநிலையில் நான் கற்றுக்கொண்ட விஷயம், இயற்பியல் என்பது எனக்கு ஒத்துவராது என்பதையே; அதேபோல் முதுநிலையில் நான் கற்றுக்கொண்ட விஷயம் அல்காரிதம் எனக்கு ஒத்துவராது என்பதையே. இவ்வாறுதான் நான் மெல்ல கணினியியலை வந்தடைந்தேன்.

பெல் பரிசோதனைக்கூடத்தில் சேர்ந்த புதிதில் மல்ட்டிக்ஸ் இயங்குதளத்தை (Multics OS) வடிவமைப்பதில் ஈடுபட்டிருந்தேன். பெல், எம்.ஐ.டி, ஜெனரல் எலெக்ட்ரிக் ஆகியவற்றின் கூட்டுமுயற்சியில் நடந்துவந்தது அத்திட்டம். அதில் இருந்தபோதுதான் BCPL, ALTRAN ஆகிய நிரலாக்க மொழிகளின் கம்பைலர்களை எழுதினேன்.

பெல் பரிசோதனைக்கூடத்தில் கென் தாம்ப்ஸனின் அறிமுகம் கிடைத்தது. அவர் எனக்கு ஓராண்டுமுன்பு அதாவது 1966ல்-தான் பெல் பரிசோதனைக்கூடத்தில் சேர்ந்திருந்தார். என் வாழ்வில் என்னை அதிகம் பாதித்த ஒருவர் இருப்பாரெனில் அது கென்னாகவே இருக்க முடியும். அவருடன் பணியாற்றிய அந்த ஆண்டுகள் என் ஒட்டுமொத்த வாழ்வின் மிக முக்கியமான காலகட்டம் எனக் கருதுகிறேன்.

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

1971-ல் யூனிக்ஸ் உதவிக் கையேடு (UNIX Programmer’s Manual) வெளியிடப்பட்டது.

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

“UNIX is very simple, it just needs a genius to understand its simplicity” என்று நினைக்கிறேன்.

பின் 1970-களின் தொடக்கத்தில் C நிரலாக்க மொழியின் உருவாக்கத்தில் நான் தனியே ஈடுபட்டேன். BCPL மொழியின் நீட்சியாக கென் தாம்ப்ஸன் உருவாக்கியதுதான் B மொழி. அதை நீட்டித்து நான் C மொழியை உருவாக்கத் தொடங்கினேன்.

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

1973-ல் C மொழியின் முதல் வடிவம் வெளியிடப்பட்ட‌து. தொடர்ந்து நானும் தாம்ப்ஸனும் யூனிக்ஸ் இயங்குதளத்தை C மொழியில் மாற்றி எழுதுவதில் ஈடுபட்டோம். 1973-லேயே C மொழியில் எழுதப்பட்ட யூனிக்ஸ் வெளியானது.

1978-ல் ப்ரையன் கெர்னிகன் என்பவருடன் இணைந்து C மொழியைப் பயன்படுத்துவது குறித்து ‘The C Programming Language’ என்ற புத்தகத்தை எழுதினேன்.

பின்னர் யூனிக்ஸ் என்ற நோக்கத்தைத் தாண்டி C மொழியைப் பல்வேறு அமைப்பு நிரலாக்கங்களுக்கு (System Programming), பயன்பாட்டு நிரலாக்கங்களுக்கு (Application Programming) பயன்படுத்தத் தொடங்கினார்கள். அதன் விஸ்தரிப்பின் பிரம்மாண்டம் அதன் பிரம்மாவான எனக்கே வியப்பளிக்கக்கூடியதாகவே இருந்துவருகிறது.

C மொழிக்கு ஒத்துவராத கணினி ஆர்க்கிடெக்ச்சர்கள் அதன்பிறகு அதிகம் எழுதப்படவில்லை. கணினி நிரல் எழுதுகிற ஒவ்வொருவருமே C மொழியைப் பயன்படுத்த விரும்பினார்கள். “C is quirky, flawed, and an enormous success” – அதுவே அதன் வெற்றி. பிற்பாடு 1983-ல் யார்ன் ஸ்த்ரோஸ்த்ரூப் C++ மொழியை உருவாக்க C மொழியே அடிப்படையாக அமைந்தது. Java, Javascript, C#, Objective C போன்ற பிற மொழிகளும் C மொழியின் மறைமுக பாதிப்பைக் கொண்டிருக்கின்றன‌.

1984-க்குப் பின் GNU, BSD, MINIX இயங்குதளங்கள் யூனிக்ஸை அடிப்படையாகக் கொண்டு உருவாக்கப்பட்டன‌. இவற்றின் அடுத்தகட்டமாக லினக்ஸ் இயங்குதளம் இலவச, திறமூல மென்பொருளாக (Free and Open Source Software) 1991-ல் அறிமுகப்படுத்தப்பட்டது. அது இன்று இயங்குதளச் சந்தையில் பிரம்மாண்டமான, தவிர்க்க இயலாத‌ ஓர் அங்கமாக வளர்ந்து நிற்பது திருப்தியை அளிக்கிறது.

பின்னர் தொடர்ந்து பெல் பரிசோதனைக்கூடத்திலேயே பல திட்டங்களில் பங்கெடுத்தேன். 1995-ல் Plan 9 என்ற இயங்குதளத்தையும் 1996-ல் Inferno என்ற இயங்குதளத்தையும் எனது தலைமையிலான குழு உருவாக்கி வெளியிட்டது.

எனது பணிகளுக்காக‌ நான் பெற்ற விருதுகள்: ACM award for outstanding paper in systems and languages (1974), IEEE Emmanuel Piore Award (1982), Bell Laboratories Fellow (1983), ACM Turing Award (1983), ACM Software Systems Award (1983), United States National Academy of Engineering Membership (1988), C&C Foundation Award of NEC (1989), IEEE Richard W. Hamming Medal (1990), National Medal of Technology (1998), Japan Prize for Information and Communications (2011).

இதில் பல விருதுகள் கென் தாம்ப்ஸனுடன் கூட்டாகப் பெற்றவை. இவற்றில் முக்கியமானது National Medal of Technology – தொழில்நுட்பத்துறையில் சாதனை நிகழ்த்திய அமெரிக்கர்களுக்கு அமெரிக்க அரசு வழங்கும் உயரிய விருது. இவிவிருதினை 1999-ல் அப்போதைய அமெரிக்க அதிபர் பில் க்ளிண்டனிடமிருந்து நானும் கென்னும் பெற்றுக்கொண்ட‌து மிகச் சந்தோஷமான தருணம்.

Bell Telephone Laboratories, Bell Laboratories, AT&T Bell Laboratories, Lucent Bell Labs Innovations, Alcatel-Lucent Bell Labs என பெல் ப‌ரிசோதனைக்கூடத்தின் பல்வேறு பெயர் மற்றும் நிர்வாக மாற்றங்களுக்கிடையே கிட்ட்த்தட்ட நாற்ப‌தாண்டுகள் அதனோடு இணைந்து பணிபுரிந்திருக்கிறேன். 2007-ல் பணி ஓய்வு பெறும்போது பெல் கணிமை மற்றும் மென்பொருள் துறையின் தலைவராக இருந்தேன். இப்போது பார்க்கையில் கணிமைக்கான என் ஆகச்சிறந்த பங்களிப்பு என யூனிக்ஸ் உருவாக்கத்தில் பங்கெடுத்ததையும் C மொழியை வார்த்தெடுத்ததையுமே சொல்வேன்.

தற்போது இந்த 2011-ல் 70 வயதாகிறது. நியூ ஜெர்சியின் பெர்க்லி ஹைட்ஸ் பகுதியில் இருக்கும் என் பெரிய வீட்டில் முழுக்கவே தனிமையில் அடைந்து கிடக்கிறேன். ப்ரோஸ்டேட் புற்று நோய்க்கான சிகிச்சை நடக்கிறது. உடன் இதயம் சம்மந்தப்பட்ட நோய்களும். ஆனால் நான் இப்பூமிக்கு வந்த கடமையைச் சரியாக‌ முடித்துவிட்டேன். தொழில்நுட்பத்தில் மனித குலத்தின் அடுத்தகட்ட நகர்வுக்கு முக்கியமானதொரு பங்களிப்பைச் செய்திருப்பதாகவே தோன்றுகிறது. அது ஒருவித திருப்தியையும் மனநிறைவையும் அளிக்கிறது.”   

– சி.சரவணகார்த்திகேயன்