பைத்தானில் C++ நிரல்களை தருவித்தல்
இப்பாடம் பைத்தானில் C++ நிரல்களை எவ்வாறு தருவிப்பது (importing) மற்றும் இயக்குவது என்பதை விளக்குகிறது. ஸ்கிரிப்டிங் மொழியின் முக்கியத்துவம், பைத்தான் மற்றும் C++ இடையேயான வேறுபாடுகள், MinGW இடைமுகம் மற்றும் g++ தொகுப்பான் ஆகியவற்றை ஆராய்கிறது. மேலும், `sys`, `os`, மற்றும் `getopt` போன்ற பைத்தான் கூறுநிலைகள் (modules) மூலம் கட்டளை வரி செயலுருபுகளைக் கையாள்வதையும் விளக்குகிறது.
இந்தப் பாடத்தைப் படியுங்கள்
பைத்தானில் C++ நிரல்களை தருவித்தல் பற்றி
நடுத்தரம் ~90 நிமிடப் படிப்பு
நிரலாக்க உலகில், பைத்தான் மற்றும் C++ ஆகிய இரண்டு மொழிகளும் வெவ்வேறு பயன்பாட்டுத் தளங்களைக் கொண்டுள்ளன. பைத்தான் ஒரு மாறும் தன்மை கொண்ட, எளிதில் புரிந்துகொள்ளக்கூடிய ஸ்கிரிப்டிங் மொழியாகும். அதே சமயம், C++ ஒரு நிலையான, அதிவேகமாக இயங்கக்கூடிய தொகுக்கப்பட்ட மொழியாகும். மென்பொருள் உருவாக்கத்தில், பைத்தானின் எளிமையையும் C++ மொழியின் வேகத்தையும் இணைத்துச் செயல்படுத்துவது ஒரு சிறந்த அணுகுமுறையாகும். இப்பாடம் இந்த இரு மொழிகளையும் ஒன்றிணைத்துச் செயல்படும் 'உறைஇடுதல்' (wrapping) தொழில்நுட்பத்தைப் பற்றி மாணவர்களுக்குக் கற்றுக்கொடுக்கிறது.
இங்குள்ள கருத்துக்கள், கணினியின் இயக்க அமைப்புகளுடன் நேரடியாகத் தொடர்பு கொள்கின்றன. ஒரு C++ நிரலைத் தொகுத்து இயக்க, விண்டோஸ் சூழலில் MinGW இடைமுகம் மற்றும் g++ தொகுப்பான் எவ்வாறு பயன்படுகிறது என்பதை இது விளக்குகிறது. பைத்தானின் `sys`, `os` மற்றும் `getopt` போன்ற கூறுநிலைகள் (modules) எவ்வாறு ஒன்றிணைந்து செயல்பட்டு, C++ நிரலின் ஆவணங்களை ஏற்றுக்கொண்டு, கட்டளை வரி மூலம் தொகுத்து இயக்குகின்றன என்ற தொடர்பை இந்த அத்தியாயம் தெளிவுபடுத்துகிறது. பின்தளத்தில் நடக்கும் இந்தத் தொகுப்பு செயல்முறையானது கணினி அறிவியலின் மிக முக்கியமான கருத்தாகும்.
தேர்வு நோக்கில், இந்த அத்தியாயம் மிகவும் முக்கியத்துவம் வாய்ந்ததாகும். இதில் உள்ள ஸ்கிரிப்டிங் மற்றும் நிரலாக்க மொழிகளுக்கு இடையிலான வேறுபாடுகள், பைத்தானின் சிறப்பு கூறுநிலைகள், மற்றும் அவற்றின் பயன்பாடுகள் ஆகியவை அடிக்கடி வினாக்களாகக் கேட்கப்படுகின்றன. மாணவர்கள் கட்டளை வரி செயலுருபுகளின் செயல்பாடுகள் மற்றும் பியழைகளைக் கையாள்வது போன்ற நடைமுறை அடிப்படையிலான கேள்விகளுக்குச் சரியாகப் பதிலளிக்க இந்த அத்தியாயத்தின் கோட்பாடுகளை ஆழமாகப் புரிந்து கொள்ள வேண்டும்.
நீங்கள் கற்பவை
- ஸ்கிரிப்டிங் மொழிகள் மற்றும் பாரம்பரிய நிரலாக்க மொழிகளுக்கு இடையே உள்ள அடிப்படை வேறுபாடுகளைக் கண்டறிதல்.
- C++ நிரல்களைப் பைத்தானுடன் ஒன்றிணைக்கும் பல்வேறு உறைஇடுதல் (wrapping) இடைமுகங்களை ஒப்பிடுதல்.
- விண்டோஸ் இயக்க அமைப்பில் C++ நிரல்களைத் தொகுக்க MinGW மற்றும் g++ ஐப் பயன்படுத்துதல்.
- `sys.argv` மற்றும் `getopt` கூறுநிலைகளைப் பயன்படுத்தி கட்டளை வரி செயலுருபுகளைப் பிரித்தெடுத்தல்.
- `os.system()` மூலம் இயக்க அமைப்பின் கட்டளைகளைப் பைத்தான் நிரலுக்குள் இயக்குதல்.
- பைத்தான் இடைமுகத்தின் வழியே C++ நிரல் தொகுப்பில் ஏற்படும் பிழைகளைக் கண்டறிந்து திருத்துதல்.
தொடங்குவதற்கு முன்
- பைத்தானின் மாறிகள், கட்டுப்பாட்டு கட்டமைப்புகள் மற்றும் செயற்கூறுகள் பற்றிய அடிப்படை அறிவு.
- C++ மொழியில் நிரல்களை எழுதுதல், தொகுத்தல் மற்றும் இயக்குதல் பற்றிய பொதுவான புரிதல்.
- கட்டளை வரி இடைமுகம் (Command Prompt/Terminal) மற்றும் அதன் அடிப்படைப் பயன்பாடு.
இந்த அத்தியாயத்தில் உள்ள தலைப்புகள்
பைத்தானில் C++ நிரல்களை தருவித்தல் — விரிவான விளக்கம்
பைத்தானில் C++ நிரல்களைத் தருவிப்பதன் விரிவான மேலோட்டம்
1. ஸ்கிரிப்டிங் மொழி மற்றும் நிரலாக்க மொழி
ஸ்கிரிப்டிங் மொழி என்பது பிற நிரலாக்க மொழிகளுடன் எளிதாக ஒருங்கிணைந்து செயல்படவும் பணிகளைத்தானியங்குபடுத்தவும் வடிவமைக்கப்பட்ட ஒரு மேம்பட்ட மொழியாகும். சி அல்லது C++ போன்ற பாரம்பரிய நிரலாக்க மொழிகளுக்கு நிரல்களை இயக்குவதற்கு முன்பு அவற்றை முழுமையாகத் தொகுத்தல் (compilation) என்ற படிநிலை அவசியமாகிறது, ஆனால் ஸ்கிரிப்டிங் மொழிகளுக்கு அது தேவையில்லை. அவை நேரடியாக வரிகமாழி மாற்றியால் (interpreter) இயக்கப்படுகின்றன. இதனால் ஸ்கிரிப்டிங் மொழிகள் குறியீட்டின் மறுபயனாக்கத்தையும், விரைவான சோதனை மற்றும் மென்பொருள் மேம்பாட்டையும் மிக எளிமையாக வழங்குகின்றன.
2. C++ ஐ விட பைத்தானின் மேம்பட்ட பண்புகள்
பைத்தான் மொழியானது தானியங்கி குப்பை சேகரிப்பு (garbage collection) வசதியைக் கொண்டுள்ளது, இது கணினியின் தேவையற்ற நினைவக இடத்தைத் தானாகவே கண்டறிந்து விடுவிக்கிறது. மேலும், C++ நிலையான வகைப்படுத்தப்பட்ட (statically typed) மொழியாக இருக்கும்போது, பைத்தான் ஒரு மாறும் வகைப்படுத்தப்பட்ட (dynamically typed) மொழியாகச் செயல்படுகிறது. பைத்தானின் குறிமுயற்சி நீளம் C++ ஐ விட ஐந்து முதல் பத்து மடங்கு வரை குறைவாக இருப்பதால், குறியீடு மிக எளிமையாகவும் அதிக வாசிப்புத்தன்மையுடனும் அமைகிறது. இதனால் பெரிய மென்பொருள்களை எளிதாக உருவாக்க முடிகிறது.
3. C++ நிரல்களைத் தருவிப்பதற்கான இடைமுகங்கள்
பைத்தான் நிரலில் C++ நிரல்களைத் தருவிப்பதை 'C++ ஐ உறைஇடுதல்' (wrapping C++ in Python) என்கிறோம். இதற்குப் பல்வேறு நவீன இடைமுகங்கள் மற்றும் கருவிகள் பயன்படுகின்றன. அவற்றுள் Python-C-API, Ctypes, SWIG (Simplified Wrapper Interface Generator), Cython, Boost.Python மற்றும் MinGW போன்றவை மிகவும் குறிப்பிடத்தக்கவை ஆகும். இவை கடினமான C++ குறியீடுகளைப் பைத்தான் புரிந்து கொள்ளக்கூடிய எளிய வடிவமாக மாற்றி, இரு வேறுபட்ட மொழிகளுக்கும் இடையே ஒரு திறமையான தகவல் தொடர்புப் பாலமாகச் செயல்படுகின்றன.
4. MinGW மற்றும் g++ தொகுப்பான்
விண்டோஸ் இயக்க அமைப்பில் C, C++ மற்றும் போர்ட்ரான் நிரல்களைத் தொகுத்து இயக்க MinGW இடைமுகம் பெரிதும் பயன்படுகிறது. இதில் உள்ள 'g++' தொகுப்பான் என்பது GNU C தொகுப்பானை அழைக்கும் ஒரு சிறப்பு நிரலாகும். இது சி++ நிரலைத் தொகுக்கும்போது தானாகவே தேவையான நூலகக் கோப்புகளை இலக்கு கோப்புடன் இணைக்கிறது. பைத்தானில் இருந்து g++ தொகுப்பானைப் பயன்படுத்தி விண்டோஸ் சூழலில் C++ நிரல்களை வெற்றிகரமாகத் தொகுத்து இயக்குவதற்கு இந்த இடைமுகம் மிக முக்கியமான பங்காற்றுகிறது.
5. பைத்தானின் சிறப்பு கூறுநிலைகள்
பைத்தானில் C++ நிரல்களைத் தருவிக்க மூன்று முக்கிய கூறுநிலைகள் (modules) தேவைப்படுகின்றன. அவை முறையே `sys`, `os` மற்றும் `getopt` ஆகும். `sys.argv` என்பது கட்டளை வரியிலிருந்து பெறப்படும் செயலுருபுகளின் பட்டியலை நமக்குத் தருகிறது. `os.system()` இயக்க அமைப்பின் கட்டளைகளைத் தனது வாதங்களாக ஏற்று இயக்கப் பயன்படுகிறது. `getopt` கூறுநிலையானது கட்டளை வரியில் பயனர் உள்ளிடும் பல்வேறு விருப்பங்களையும் கோப்புப் பெயர்களையும் எளிதாகப் பிரித்தெடுத்துப் பகுப்பாய்வு செய்யப் பயன்படுகிறது.
6. சிறப்பு மாறி `__name__` மற்றும் பியழைகளைக் கையாளுதல்
பைத்தானில் `__name__` என்பது தற்போதைய கூறுநிலையை மதிப்பிடும் ஒரு உள்ளிணைந்த சிறப்பு மாறியாகும். பைத்தான் கோப்பு நேரடியாக இயக்கப்படும் போது இதன் மதிப்பு `__main__` என மாறும். மேலும், பைத்தான் மூலமாக இயக்கப்படும் C++ நிரலில் ஏதேனும் தொகுத்தல் அல்லது இயக்க நேரப் பிழைகள் இருந்தால், பைத்தான் அவற்றை அவற்றின் வரி எண்களுடன் விரிவான பிழைச் செய்தியாகக் காண்பித்து, பிழைத்திருத்தத்தை மிகவும் எளிமையாக்குகிறது. இதனால் மாணவர்கள் குறியீட்டில் உள்ள தவறுகளை எளிதில் கண்டறியலாம்.
தவிர்க்க வேண்டிய பொதுவான தவறுகள்
- C++ கோப்பின் பெயரைப் பைத்தானில் அழைக்கும்போது `.cpp` நீட்டிப்பைத் தவறாகக் குறிப்பிடுதல்; தொகுத்தலின் போது மட்டுமே நீட்டிப்பு தேவைப்படும் என்பதால் இயக்கத்தின் போது அதைத் தவிர்க்க வேண்டும்.
- கட்டளை வரியில் `getopt` ஐப் பயன்படுத்தும்போது முக்காற்புள்ளி (:) குறியீட்டைத் தவறவிடுதல்; பயனர் விருப்பங்களுக்குப் பிறகு மதிப்புகள் தேவை என்பதை உணர்த்த இக்குறியீடு கட்டாயமாகும்.
- விண்டோஸ் கணினியில் `g++` தொகுப்பான் அமைந்திருக்கும் சுற்றுச்சூழல் பாதையை (Environment Path) சரியாக அமைக்கத் தவறுதல்; இதனால் தொகுக்கும்போது கோப்பு கண்டறியப்படவில்லை என்ற பிழை ஏற்படும்.
- பயன்படுத்தப்படாத மற்றும் மூடிவைக்கப்படாத கோப்புகளை அப்படியே விட்டுவிடுதல்; கோப்புச் செயல்பாடுகள் முடிந்தவுடன் `close()` செயற்கூறைக் கொண்டு கோப்பை மூடி நினைவகத்தை விடுவிக்க வேண்டும்.
இவற்றை பயிற்சித் தேர்வு மூலம் சோதித்துப் பாருங்கள்; பிறகு விடையுடன் கூடிய வினாக்கள் பகுதியில் விரிவான விளக்கத்தைப் படியுங்கள்.
அடிக்கடி கேட்கப்படும் கேள்விகள்
பைத்தான் மற்றும் C++ இடையே உள்ள முக்கிய வேறுபாடுகள் யாவை?
பைத்தான் என்பது ஒரு வரி மொழி மாற்றி (interpreter) மூலம் இயக்கப்படும் மாறும் வகைப்படுத்தப்பட்ட மொழியாகும். C++ என்பது ஒரு நிரல் தொகுப்பியின் (compiler) மூலம் இயக்கப்படும் நிலையான வகைப்படுத்தப்பட்ட மொழியாகும். பைத்தானில் மாறியின் தரவினத்தை முன்கூட்டியே அறிவிக்கத் தேவையில்லை, ஆனால் C++ மொழியில் தரவினத்தை அறிவிப்பது கட்டாயமாகும்.
பைத்தானில் C++ நிரலை இயக்குவது ஏன் உறைஇடுதல் (wrapping) என்று அழைக்கப்படுகிறது?
ஒரு மொழியில் எழுதப்பட்ட நிரல் குறியீட்டை மற்றொரு மொழி புரிந்து கொள்ளக்கூடிய வகையில் ஒரு உறை போல சுற்றி சிறப்பு வாய்ந்த இடைமுகங்களை உருவாக்குதால் இது உறைஇடுதல் என அழைக்கப்படுகிறது. இதன் மூலம் C++ மொழியின் அதிவேகமான செயல்பாட்டுத் திறனையும் பைத்தானின் எளிமையான குறியீட்டு அமைப்பையும் நாம் ஒரே மென்பொருளில் மிகச் சிறப்பாகப் பயன்படுத்த முடியும்.
பைத்தானில் C++ நிரலைத் தருவிக்க உதவும் இடைமுகங்கள் யாவை?
பைத்தானில் C++ குறியீடுகளைத் தருவிக்கப் பல்வேறு சிறந்த இடைமுகங்கள் பயன்படுகின்றன. அவற்றுள் Python-C-API, Ctypes, SWIG (Simplified Wrapper Interface Generator), Cython, Boost.Python மற்றும் MinGW போன்றவை மிகவும் முக்கியமானவை ஆகும். விண்டோஸ் இயக்க அமைப்பில் g++ தொகுப்பானைப் பயன்படுத்தி நிரலைத் தொகுக்க MinGW இடைமுகம் நமக்கு பெரிதும் உதவுகிறது.
பைத்தானின் sys.argv என்றால் என்ன?
`sys.argv` என்பது பைத்தான் கோப்பினை இயக்கும்போது கட்டளை வரியிலிருந்து பெறப்படும் செயலுருபுகளின் (arguments) பட்டியலைக் கொண்ட ஒரு அணியாகும். இதில் `sys.argv` என்பது எப்போதும் இயக்கப்படும் பைத்தான் நிரலின் பெயரைக் குறிக்கும். அதற்குப் பிறகு வரும் குறியீடுகள் பயனர் கட்டளை வரியில் அனுப்பும் பிற செயலுருபுகளை வரிசையாகக் குறிக்கும்.
getopt.getopt() செயற்கூறு எவ்வாறு செயல்படுகிறது?
இந்த செயற்கூறு கட்டளை வரியில் பயனர் உள்ளிடும் விருப்பங்களையும் செயலுருபுகளையும் பிரித்தெடுக்கப் பயன்படுகிறது. இது இரண்டு வெவ்வேறு பட்டியல்களைத் திருப்பி அனுப்பும். முதலாவது பட்டியல் பயனர் உள்ளிட்ட விருப்பங்கள் மற்றும் கோப்புப் பெயர்களைக் கொண்டிருக்கும். இரண்டாவது பட்டியல் பிரிக்க முடியாத தவறான வாதங்களைக் கொண்ட ஒரு வெற்று அணியாக இருக்கும்.
பைத்தானில் __name__ மாறியின் பயன் என்ன?
`__name__` என்பது தற்போதைய பைத்தான் கோப்பு எவ்வாறு இயக்கப்படுகிறது என்பதை அறிய உதவும் ஒரு உள்ளிணைந்த சிறப்பு மாறியாகும். கோப்பு நேரடியாக இயக்கப்படும் போது இதன் மதிப்பு `__main__` என இருக்கும். இதனால் குறிப்பிட்ட நிரல் ஒரு கூறுநிலையாக இறக்குமதி செய்யப்பட்டுள்ளதா அல்லது முதன்மை நிரலாக இயங்குகிறதா என்பதைக் கண்டறியலாம்.
கடைசியாகப் புதுப்பிக்கப்பட்டது 22 ஆகஸ்ட் 2026