ඔබේ ප්රශ්නයට පිළිතුර රඳා පවතින්නේ එය අසන්නේ කුමන භාෂාවද යන්න මතය.
ඩෙනිස් රිචීගේ 1974 සී යොමු අත්පොතෙහි විස්තර කර ඇති භාෂාව පහත් මට්ටමේ භාෂාවක් වන අතර එමඟින් ඉහළ මට්ටමේ භාෂාවල වැඩසටහන්කරණ පහසුව ලබා දෙනු ඇත. එම භාෂාවෙන් උපුටා ගන්නා ලද උපභාෂා ද පහත් මට්ටමේ ක්රමලේඛන භාෂාවන් විය.
කෙසේ වෙතත්, 1989/1990 සී ප්රමිතිය ප්රකාශයට පත් කරන විට, එය සත්ය යන්ත්ර ක්රමලේඛනය සඳහා ජනප්රිය වී ඇති පහත් මට්ටමේ භාෂාව විස්තර නොකළ අතර ඒ වෙනුවට ඉහළ මට්ටමේ භාෂාවක් විස්තර කළ හැකි නමුත් එය අවශ්ය නොවීය. පහළ මට්ටමේ වචන වලින් ක්රියාත්මක කිරීම.
සී ස්ටෑන්ඩර්ඩ් හි කතුවරුන් පවසන පරිදි, භාෂාව ප්රයෝජනවත් වූ එක් කරුණක් වූයේ බොහෝ ක්රියාත්මක කිරීම් ඉහළ මට්ටමේ එකලස් කරන්නන් ලෙස සැලකිය හැකි වීමයි. වෙනත් ඉහළ මට්ටමේ භාෂාවන්ට විකල්පයක් ලෙස C ද භාවිතා කර ඇති නිසාත්, බොහෝ යෙදුම්වලට ඉහළ මට්ටමේ භාෂාවන්ට කළ නොහැකි දේ කිරීමට හැකියාවක් අවශ්ය නොවූ නිසාත්, සම්මතයේ කතුවරුන් අත්තනෝමතික ලෙස හැසිරීමට ඉඩ දී ඇත වැඩසටහන් පහත් මට්ටමේ ඉදිකිරීම් භාවිතා කිරීමට උත්සාහ කළේ නම්. සී ස්ටෑන්ඩර්ඩ් විසින් විස්තර කරන ලද භාෂාව කිසි විටෙකත් පහත් මට්ටමේ ක්රමලේඛන භාෂාවක් නොවීය.
මෙම වෙනස අවබෝධ කර ගැනීම සඳහා, රිචීගේ භාෂාව සහ සී 89 කේත ස්නිපටය දෙස බලන ආකාරය සලකා බලන්න:
struct foo { int x,y; float z; } *p;
...
p[3].y+=1;
වේදිකාවක “char” බිටු 8 ක්, “int” බිටු 16 විශාල-එන්ඩියන්, “float” බිටු 32 ක් වන අතර ව්යුහයන්ට විශේෂ පෑඩින් හෝ පෙළගැස්වීමේ අවශ්යතා නොමැති බැවින් “struct foo” හි ප්රමාණය බයිට් 8 කි.
රිචීගේ භාෂාවෙන්, අවසාන ප්රකාශයේ හැසිරීම "p" හි ගබඩා කර ඇති ලිපිනය ගෙන, එයට 3 * 8 + 2 [එනම් 26] බයිට් එකතු කර, එම ලිපිනයේ සහ ඊළඟ ලිපිනයේ බයිට් වලින් බිටු 16 ක අගයක් ලබා ගනී. , එම අගයට එකක් එකතු කරන්න, ඉන්පසු එම බිට් 16 අගය එකම බයිට් දෙකකට නැවත ලියන්න. හැසිරීම අර්ථ දැක්වෙන්නේ එහි කුමන ආකාරයේ වස්තුවක් ගබඩා කර ඇත්ද යන්න නොසලකා 26 වන සහ 27 වන බයිට් වල ලිපිනය p හි ඇති ලිපිනයට පසුව ක්රියා කිරීමයි.
සී ස්ටෑන්ඩර්ඩ් විසින් නිර්වචනය කරන ලද භාෂාවෙන්, * p විසින් “struct foo [] හි මූලද්රව්යයක් හඳුනාගත හොත්, එම වර්ගයේ අවම වශයෙන් තවත් සම්පූර්ණ අංග තුනක් වත් අනුගමනය කළ හොත්, අවසාන ප්රකාශය සාමාජික y ට සාමාජිකයෙකු එක් කරයි * p ට පසු තෙවන මූලද්රව්යය. වෙනත් කිසිදු තත්වයක් යටතේ හැසිරීම ප්රමිතියෙන් නිර්වචනය නොකෙරේ.
රිචීගේ භාෂාව පහත් මට්ටමේ ක්රමලේඛන භාෂාවක් වූ අතර, ක්රමලේඛකයෙකුට පහසු වූ විට අරා සහ ව්යුහයන් වැනි වියුක්තයන් භාවිතා කිරීමට ඉඩ දී ඇති අතර, එය මතකයේ ඇති වස්තූන්ගේ සැකැස්ම අනුව හැසිරීම අර්ථ දැක්වීය. ඊට හාත්පසින්ම වෙනස්ව, C89 සහ පසු ප්රමිතීන් විසින් විස්තර කරන ලද භාෂාව ඉහළ මට්ටමේ වියුක්තයක් අනුව දේවල් නිර්වචනය කරන අතර එයට අනුකූල වන කේතයේ හැසිරීම පමණක් අර්ථ දක්වයි. පහත් මට්ටමේ ක්රමලේඛනය සඳහා සුදුසු තත්ත්ව ක්රියාත්මක කිරීම සම්මතයෙන් නියම කර ඇති ප්රමාණයට වඩා බොහෝ අවස්ථාවන්හිදී ප්රයෝජනවත් ලෙස හැසිරෙනු ඇත, නමුත් එවැනි අරමුණු සඳහා සුදුසු වීමට ක්රියාත්මක කිරීමක් කළ යුතු දේ සඳහන් කරන “නිල” ලේඛනයක් නොමැත.
ඩෙනිස් රිචී විසින් නිර්මාණය කරන ලද සී භාෂාව මේ අනුව පහත් මට්ටමේ භාෂාවක් වන අතර එය පිළිගැනීමට ලක්විය. කෙසේවෙතත්, සී ප්රමිති කමිටුව විසින් නිර්මාණය කරන ලද භාෂාව කිසි විටෙකත් පහත් මට්ටමේ භාෂාවක් නොවූ අතර එය ක්රියාත්මක කිරීමේ සහතිකයන් නොමැති විට සම්මත ප්රමිතීන් ඉක්මවා යයි.