আপনার প্রশ্নের উত্তর নির্ভর করে এটি কোন সি ভাষা সম্পর্কে জিজ্ঞাসা করছে upon
ডেনিস রিচির 1974 সি রেফারেন্স ম্যানুয়ালে বর্ণিত ভাষাটি ছিল একটি নিম্ন-স্তরের ভাষা যা উচ্চ স্তরের ভাষার প্রোগ্রামিং সুবিধার জন্য কিছু প্রস্তাব করেছিল। সেই ভাষা থেকে প্রাপ্ত উপভাষাগুলিও একইভাবে নিম্ন স্তরের প্রোগ্রামিং ভাষা হয়ে থাকে।
1989/1990 সি স্ট্যান্ডার্ড প্রকাশিত হয়েছিল, তবে, এটি প্রকৃত মেশিন প্রোগ্রামিংয়ের জন্য জনপ্রিয় হয়ে ওঠা নিম্ন-স্তরের ভাষাটির বিবরণ দেয়নি, তবে এর পরিবর্তে উচ্চ স্তরের ভাষাটি বর্ণিত হতে পারে - তবে এটি হওয়ার দরকার ছিল না- নিম্ন স্তরের পদগুলিতে প্রয়োগ করা হয়েছে।
সি স্ট্যান্ডার্ড নোটের লেখক হিসাবে, ভাষাটি কার্যকর করে তোলে এমন একটি জিনিস হ'ল অনেকগুলি বাস্তবায়নকে উচ্চ-স্তরের সমাবেশকারী হিসাবে বিবেচনা করা যেতে পারে। যেহেতু সি অন্যান্য উচ্চ-স্তরের ভাষার বিকল্প হিসাবেও ব্যবহৃত হয়েছিল, এবং অনেক অ্যাপ্লিকেশনগুলিতে উচ্চ-স্তরের ভাষাগুলি যে কাজগুলি করতে পারে না সেগুলি করার দক্ষতার প্রয়োজন হয় না, তাই স্ট্যান্ডার্ডের লেখকরা বাস্তবায়নকে সালিশী ফ্যাশনে আচরণ করার অনুমতি দেয় allowed যদি প্রোগ্রামগুলি নিম্ন-স্তরের কনস্ট্রাক্ট ব্যবহার করার চেষ্টা করে। ফলস্বরূপ, সি স্ট্যান্ডার্ড দ্বারা বর্ণিত ভাষাটি কখনও নিম্ন-স্তরের প্রোগ্রামিং ভাষা হয়নি।
এই পার্থক্যটি বোঝার জন্য, রিচির ভাষা এবং সি 89 কোড স্নিপেটটি কীভাবে দেখবে তা বিবেচনা করুন:
struct foo { int x,y; float z; } *p;
...
p[3].y+=1;
একটি প্ল্যাটফর্মে যেখানে "চর" 8 বিট, "ইনট" 16 বিট বিগ-এন্ডিয়ান, "ফ্লোট" 32 বিট, এবং কাঠামোর কোনও বিশেষ প্যাডিং বা প্রান্তিককরণের প্রয়োজনীয়তা নেই তাই "স্ট্রাক্ট ফু" এর আকার 8 বাইট হয়।
রিচির ভাষায়, সর্বশেষ বিবৃতিটির আচরণটি "পি" এ সঞ্চিত ঠিকানাটি গ্রহণ করবে, এতে 3 * 8 + 2 [অর্থাৎ 26] বাইট যুক্ত করবে এবং ঠিকানায় এবং পরবর্তীটিতে বাইটগুলি থেকে 16-বিট মান আনবে , সেই মানটিতে একটি যুক্ত করুন এবং তারপরে একই দুটি বাইটে 16 বিটের মানটি লিখুন। আচরণটি সংজ্ঞায়িত করা হবে 26 ও 27 তম বাইটগুলি অনুসরণ করে অ্যাড্রেস পিতে নিম্নলিখিতটি কী ধরণের বস্তু সংরক্ষণ করা হয়েছিল তা বিবেচনা না করেই following
সি স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত ভাষায়, * পি যে "স্ট্রাক্ট ফু []" এর উপাদান চিহ্নিত করে যা এরপরে কমপক্ষে আরও তিনটি সম্পূর্ণ উপাদান অনুসরণ করে, শেষ বিবৃতিটি তার সদস্য সদস্যের সাথে যুক্ত করবে * পি এর পরে তৃতীয় উপাদান। আচরণটি অন্য কোনও পরিস্থিতিতে স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত করা হবে না।
রিচির ভাষাটি একটি নিম্ন-স্তরের প্রোগ্রামিং ভাষা ছিল কারণ এটি যখন কোনও প্রোগ্রামারকে সুবিধাজনকভাবে অ্যারে এবং স্ট্রাকচারের মতো বিমূর্ত ব্যবহার করার অনুমতি দেয়, তখন এটি মেমরির অবজেক্টগুলির অন্তর্নিহিত বিন্যাসের ক্ষেত্রে আচরণকে সংজ্ঞায়িত করে। বিপরীতে, C89 দ্বারা বর্ণিত ভাষা এবং পরবর্তী মানগুলি জিনিসগুলি একটি উচ্চ-স্তরের বিমূর্তনের ক্ষেত্রে সংজ্ঞা দেয় এবং কেবল কোডের আচরণের সাথে এটিই সামঞ্জস্যপূর্ণ সংজ্ঞা দেয়। নিম্ন-স্তরের প্রোগ্রামিংয়ের জন্য উপযুক্ত মানের বাস্তবায়ন স্ট্যান্ডার্ড দ্বারা আধ্যাত্মিক আদেশের চেয়ে আরও বেশি ক্ষেত্রে কার্যকরভাবে আচরণ করবে, তবে এমন কোনও "অফিসিয়াল" নথি নেই যা উল্লেখ করে যে এই ধরনের উদ্দেশ্যে উপযুক্ত হওয়ার জন্য কোনও বাস্তবায়ন অবশ্যই করতে হবে।
ডেনিস রিচি উদ্ভাবিত সি ভাষাটি এইভাবে একটি নিম্ন-স্তরের ভাষা, এবং এটি হিসাবে স্বীকৃত ছিল। সি স্ট্যান্ডার্ড কমিটি দ্বারা উদ্ভাবিত ভাষাটি যদিও মান-আদেশের বাইরে চলে না এমন বাস্তবায়ন-সরবরাহিত গ্যারান্টিগুলির অভাবে কখনও নিম্ন-স্তরের ভাষা হয়নি।