In C "Memory is Syntactic Sugar" असे म्हणतात. Programming World मध्ये language चा syntax प्रोग्रॅमर ला लिहायला व समजायला सोपा असला तर त्याला "Syntactic Sugar" असे गोड नाव आहे. त्याचे कारण म्हणजे डेटा-टाइप व व्हेअरेबल चे नाव वापरुन मेमरी बरोबर आपण direct खेळ करू शकतो. Assembly level language मध्ये अशी कोणतीही सुविधा नसते कारण त्या मध्ये डेटा टाइपच नसतात. गंम्मत आहे ना...! आज मी या पोस्ट मध्ये दिसायला व समजायला एकदम सोप्पा असणारा पण मशीनच्या आत जावून बघितले तर interesting असा variable in C हा विषय निवडला आहे.
Syntactic Sugar |
int x;
float y;
char ch;
या वरील तीन स्टेटमेंट्स (ज्याला आपण Type declaration statements म्हणतो) मध्ये int, float, आणी char याला आपण डेटा टाइप म्हणतो. तर x, y, ch ला आपण variables म्हणतो. काय करतात ही स्टेटमेंट्स नक्की...?
ही स्टेटमेंट्स compiler ला मेमरी राखीव ठेवण्यासाठी व्यवस्था करण्याची विनंती करतात! या मध्ये एकंदरीत ३ महत्वाच्या information दडलेल्या आहेत.
- प्रत्येक व्हेअरेबल हे मेमरीचा starting address denote करते.
- प्रत्येक व्हेअरेबल ला डेटा टाइप आवश्यकच असतो
- डेटा टाइप म्हणजे compiler ला किती bytes राखीव ठेवायच्या इतक्याच कारणासाठी आवश्यक असतो.
त्यामुळेच ज्यावेळी आपण int x असे लिहीतो त्यावेळी आपण कंपायलरला सांगत आहोत की तु जी मेमरी राखीव ठेवली आहेस त्याला मी नाव x असे दिले आहे. अर्थात compiler ला मात्र x च्या address शी देणे-घेणे असते व त्या starting address पासून तो integer ला 4 bytes लागत असतील तर पुढील 32 bits access करण्याचे काम करतो. (सांग काम्या हो नाम्या हि मराठी म्हण कशी कंपायलरा तंतोतंत लागू होते...!)
मग प्रश्न असा उरतो की compiler ला कसे कळते की किती bytes द्यायचे ते...? तर integer data types ची definition limits.h या header file मध्ये ठेवलेली असते आणी float data type ची definition मात्र macro चा आधार घेउन floats.h या header file मध्ये ठेवलेली असते.
त्यामुळे variable म्हणजे मेमरी हे प्रोग्रॅमरने कायम लक्षात ठेवणे जरूरी आहे. म्हणूनच variable is named memory location अशी त्याची व्याख्या करता येइल. शिवाय हे सुद्धा लक्षात घेतले पाहीजे कि ज्या प्रकारचे व्हेअरेबल आहे त्याच प्रकारचा constant त्या मध्ये (memory मध्ये) ठेवता येतो.
variables declare करतांना C मध्ये काही नियम पाळणे मात्र जरूरी आहे जसे की...
- variable चे नाव ठरवतांना त्या मध्ये digits आणी alphabets असू शकतात.
- variable च्या नावाची सुरवात digit ने होउ शकत नाही. variable name मधील पहीले character alphabet च असले पाहीजे. (अर्थात underscore चालतो पण शक्यतो प्रोग्रॅमर ने तो वापरू नये कारण compiler लिहीणाऱ्या प्रोग्रॅमर त्याचा वापर करतात असे convention आहे.
- variable name मध्ये underscore व्यतीरीक्त कोणतेही special character वापरायला allowed नाही
- variable name मध्ये blank space किंवा dot किंवा comma टाकण्याची शक्यता असते पण ही सर्व special characters असल्यामुळे वापरता येत नाहीत
- variable चे name हे शक्यतो meaningful, short व sweet असावे.
- C language मध्ये सर्व व्हेअरेबल्स हि block (scope) च्या सुरवातीला करायला लागतात.