C Programming in Tamil
What is Programming? and Fundamentals
மனிதனின் கட்டளைகளை கணினிக்கு புரியும் முறையில் உருவாக்குவது. அதாவது கணினி மொழியை கணினிக்குள் பதிவு செய்வது. கணினியின் ஒரு பகுதியான Hardware ல் நமது கட்டளைகளை பதிவதன் மூலம், அதன்படி கணினியை செயல்பட வைக்கலாம். பொதுவாக Hardware பதிவது என்பது RAM ல் பதிவதாகும்.
In computer terms, Programming means setting sequence of instructions/operational code in hardware such as Random Access Memory (RAM).
Basics in Memory
நம்முடைய கட்டளையை நாம் ஒரு File ல் சேமித்து (Secondary Memory), அதனை Compiler கொண்டு Compile செய்தால் அது ஒரு Binary வடிவில் மாற்றப்படும் இதுவே கணினி மொழியாகும். இதை Execute செய்தால் கணினி இதை RAM ல் (Primary Memory) ஏற்றி இதன் கட்டளைகளைப் படித்து இயங்க ஆரம்பிக்கும்.
Program Execution | கணினி கட்டளை இயக்கம்
கணினியின் செயல்பாட்டு மையமான CPU (Central Processing Unit), RAM ல் ஏற்றப்பட்ட கட்டளைகளைப் படிக்கும். CPU விற்கு நான்கு விதமான செயல்களே செய்ய தெரியும். அவைகள் கீழே.
Central Processing Unit (CPU) will be triggered to fetch the instructions from hardware and do the respective actions. There are four main CPU actions.
- Arithmetic operation
- Logical Operation
- Read
- Write
இதை கற்கும்போது Computer இன் இந்த ஐந்து முக்கிய அம்சங்களை மனதில் கொள்ளுங்கள்.
- Primary Memory (RAM)
2. Secondary Memory (HardDisk)
3. CPU
4. Screen (Monitor)
5. Four CPU Operations. (Arithmetic, Logical, Read, Write)
Various Stages of C Code Compilation
C code ஐ Compile செய்யும் போது அது நான்கு படிகளைத்தாண்டி Exe ஐ உருவாக்குகிறது. இந்த நான்கு வேலைகளையும் சேர்த்தே நாம் Code Compilation என்கிறோம்.
- PreProcessing
- Compiling
- Assembling
- Linking
How does a C Code execution?
இப்போது நீங்கள் helloworld.c என்ற File ஐ உருவாக்கி Save செய்து Compile செய்கிறீர்கள் என்றால், முதலில் Compiler, helloworld.c File ஐ Compile செய்து ஒரு .o File ஐ உருவாக்கி, அதனை executable File வடிவில் மாற்றும்.
இந்த executable File -ம் HardDisk -லேயே சேமிக்கப்பட்டிருக்கும். நீங்கள் அதை Run செய்தால், CPU அதை RAM இல் Copy செய்து (Loading) Binary வடிவில் உள்ள Instruction ஐ படித்து, அதற்குரிய நான்கு செயல்களை வைத்து கட்டளைகளை செய்ய ஆரம்பிக்கும். அவ்வளவுதான், உங்கள் வேலை முடிந்தது.
நமது கட்டளை File இல் இரண்டு பகுதி உள்ளது.
1. Operators – இதுவே உண்மையான கட்டளை (+, -, *, /, =, !=, <, >, <=)
2. Operands – இது ஏற்பிகள். அதாவது எண் மதிப்புகளை வைத்திருக்கும் குறியீடு (i=1)
Memory Layout or Memory Segments
CPU தான் RAM இல் Copy செய்கிறது என்று தெரியும். ஆனால் அது RAM இல் எவ்வாறு பதிந்திருக்கும்? அதை எப்படி புரிந்து கொள்வது?
RAM ஐ ஒரு தேன் கூட்டின் அறைகளைப்போல கற்பனை செய்து கொள்ளலாம். ஒவ்வொரு அறைக்கும் ஒரு முகவரி (Address) இருக்கும். படத்தில் காட்டப்பட்டுள்ளவாறு ஒரு ஒழுங்கான அமைப்பில் நமது EXE File Binary Format இல் வரிசையாக அறைகளில் அடுக்கப்பட்டிருக்கும்.
அந்த அடுக்குகள் என்னென்ன என்பதை பார்ப்போம்.
Text Segment:
இங்கு நமது Exe File அப்படியே வைக்கப்பட்டிருக்கும். Exe என்பது Binary வடிவில் உள்ள கட்டளைகள் (Instruction) தானே. அதனால் இந்த Segment இல் நம்மால் திருத்தி எழுத இயலாது. வாசிக்க மட்டுமே முடியும். இது Read Only Segment. இதுதான் முதல் அடுக்காகும். இது தொடக்க முகவரியில் (Lower Address) அமைக்கப்பட்டிருக்கும். CPU இதை தனக்கான கட்டளைகளாக எடுத்துக்கொண்டு தொடர்ச்சியாக ஒவ்வொன்றாக வாசித்து அதன்படி வேலை செய்யும்.
இந்த அடுக்கில் ஒரு வேலை எழுதும் அனுமதியும் (Write Permission) இருந்தால், ஒரே சமயத்தில் Execute ஆகும் மற்ற Program களால் இந்த அடுக்கிற்கு தவறுதலாக மாற்றி எழுதப்படும் அபாயம் உள்ளது. அதனால் உங்கள் Execution இல் தவறு நடந்து Corrupt ஆகிவிடலாம். அதனால்தான் இந்த Text Segment அடுக்கிற்கு Read Only Permission மட்டும் கொடுக்கப்பட்டுள்ளது.
Initialized Data Segment:
இந்த அடுக்கில் நாம் நமது Exe இல் உள்ள சில குறிப்பிட்ட தகவலை மட்டும் வைத்திருக்கும். இங்கு Copy செய்து வைக்கப்பட்டிருக்கும் நமது கட்டளையின் Operands நம்மால் Initialize செய்யப்பட்டிருக்கும். அது என்ன என்பதை பின்னர் பார்ப்போம். இங்கு இரண்டு பிரிவுகள் உண்டு. ஒரு பிரிவில் நாம் Read-Write செய்ய முடியும். மற்றொரு பிரிவில் Read மட்டும் செய்யமுடியும்.
பிரிவுகள்:
Initialized Read-Write
Initialized Read-only
UnInitialized Data Segment:
இதற்கு இன்னொரு பெயரும் உண்டு BSS (Block Started by symbol). இங்கும் நமது கட்டளையின் Operands, Copy செய்யப்பட்டிருக்கும். இது Kernal லினால் Initialize செய்யப்பட்டிருக்கும். இந்த அடுக்கு Initialized Data Segment க்கு அடுத்ததாக வைக்கப்பட்டிருக்கும். இங்குள்ள அணனத்து தகவலையும் Read-Write செய்ய முடியும்.
Stack Segment:
இந்த அடுக்கிலும்நமது Program இன் Operands வைக்கப்பட்டிருக்கும். இதில் LIFO என்ற முறையில் வைக்கப்படும். ஆனால் இதில் என்ன தனித்துவம் உள்ளது? என்ற கேள்வி எழுகின்றதா? இங்கு வைக்கப்படும் Operands இல் ஒரு வித்தியாசம் உள்ளது. இதையும் பிறகு பார்ப்போம். Stack Segment மற்றும் Heap Segment இரண்டும் எதிர் திசையில் நிரப்பப்படும். தேவைக்கேற்ப நிரம்பி ஒரு வேலை இரண்டும் அதன் எல்லையை தொட்டுவிட்டால் இனி இடம் ஏதும் இல்லை என்ற நிலை உருவாகும். இதனால் நினைவகம் முடிந்து காலியாகிவிடும். இதற்கு என்ன செய்யலாம்? இதையும் பிறகு பார்த்துக்கொள்ளலாம். இவைகளை தற்போது மனதில் மட்டும் வைத்துக் கொள்ளுங்கள். இந்த அடுக்கை இன்னும் உண்ணிப்பாக புரிந்துகொள்ள Function மற்றும் Stack Frame என்பதை நிச்சயம் தெரிந்து வைத்திருக்க வேண்டும்.
Heap Segment:
இதுவரை பார்த்த நினைவக அடுக்குகள் நமது Exe ஐ RAM இல் Copy செய்யும் போது நிரம்பும். ஆனால் இந்த அடுக்கில் நமது கட்டளை இயங்க ஆரம்பிக்கும் போது, ஒரு வேலை கட்டளையில் தேவையென்றால் மட்டும் நிரப்பும். இதைத்தான் நாம் RunTime Memory Allocation என்கிறோம். மற்ற மூன்று அடுக்குகளில் நினைவகம் நிரப்பும் வகை Compile Time Memory Allocation ஆகும்.
Windows Vs Linux எது உகந்தது?
ஒரு வேலை நீங்கள் Windows OS பயன்படுத்துகிறீர்கள் என்றால், Turbo C ஐ பயன்படுத்துவீர்கள். இங்கு தனித்தனியாக Compile and Run செய்ய வேண்டியதில்லை. ஒரு பொத்தானை அழுத்தினாலே போதும், அதுவே அனைத்தையும் முடித்து Output காட்டிவிடும்.
எனினும் நான் உங்களுக்கு Linux தான் பரிந்துரைப்பேன். நீங்கள் இதனோடு Linux ஐ பயன்படுத்தும் அனுபவத்தையும் அடையலாம்.
உங்களிடம் Linux OS இருக்கிற Computer இல்லை என்றால் கவலை வேண்டாம். தற்போது நிறைய Online C Editor andCompiler இருக்கிறது. அதுவே உங்களுக்கு போதுமானது
What Next? How to learn C Programming?
இனி நாம், C Programming Language ஐ தெரிந்து கொள்ளவேண்டியதுதான் மிச்சம். MS Paint -இல் உள்ள Tools போல தான் இந்த C Language-ம். என்னென்ன Tools என்னென்ன செய்யும் என்று கற்றுகொண்டாலே, உங்களால் ஒரு Basic C Program ஐ சொந்தமாக எழுத முடியும். அனைத்து Symbol களையும் கற்றுவிட்டாலே போதும் உங்களால் எந்த ஒரு Coding -ம் எழுதும் பக்குவம் வந்துவிடும். அப்படியே அனுபவமும் சேர்ந்து விட்டால், நீங்கள் ஒரு Professional Software Developer ஆக மாறிவிடக்கூடும்.
Source: https://hw2tamil.blogspot.com/search/label/C%20Programming