C--
সি-(উচ্চারিত সি বিয়োগ বিয়োগ) একটি সি-সদৃশ প্রোগ্রামিং ভাষা, যা মূলত মানব প্রোগ্রামারদের দ্বারা লেখার পরিবর্তে উচ্চ-স্তরের ভাষার জন্য সংকলক দ্বারা তৈরি করার জন্য ডিজাইন করা হয়েছে। এটি কার্যকরী প্রোগ্রামিং গবেষক সাইমন পেটন জোন্স এবং নরম্যান রামসে দ্বারা তৈরি করা হয়েছিল। অন্যান্য অনেক মধ্যবর্তী ভাষার বিপরীতে, এটি সরল এ. এস. সি. আই. আই পাঠ্যে প্রতিনিধিত্ব করা হয়, বাইটকোড বা অন্য কোনও বাইনারি বিন্যাসে নয়। দুটি প্রধান শাখা রয়েছেঃ সি--, মূল শাখা, চূড়ান্ত সংস্করণ 2 সহ 2005 সালের মে মাসে প্রকাশিত সি. এম. এম, গ্লাসগো হাস্কেল কম্পাইলার (জি. এইচ. সি) ডিজাইন সি-তে মধ্যবর্তী উপস্থাপনা (আই. আর) হিসাবে সক্রিয়ভাবে ব্যবহৃত কাঁটাচামচ-একটি "বহনযোগ্য সমাবেশ ভাষা", যা উচ্চমানের মেশিন কোড তৈরি করে এমন সংকলকগুলির বাস্তবায়ন সহজ করার জন্য ডিজাইন করা হয়েছে। এটি একটি সি-কম্পাইলারকে নিম্ন-স্তরের কোড-জেনারেশন এবং প্রোগ্রাম অপ্টিমাইজেশনের দায়িত্ব দিয়ে করা হয়। বৈচিত্র্যময় ফাংশন, পয়েন্টার সিনট্যাক্স এবং সি-এর টাইপ সিস্টেমের দিকগুলির মতো স্ট্যান্ডার্ড সি বৈশিষ্ট্যগুলি বাদ দিয়ে বা পরিবর্তন করার সময় ভাষার সিনট্যাক্স সি থেকে প্রচুর পরিমাণে ধার নেয়, কারণ তারা সি-এর প্রয়োজনীয় বৈশিষ্ট্যগুলি এবং কোড-জেনারেশনের সহজতাকে বাধা দেয়। ভাষার নামটি একটি রসিকতা, যা ইঙ্গিত করে যে সি-- সি-এর একটি হ্রাসকৃত রূপ, একইভাবে "সি + +" সি-এর একটি উন্নত সংস্করণকে বোঝাতে বেছে নেওয়া হয়েছিল। (সি-তে,-- এবং + + মানে যথাক্রমে "হ্রাস" এবং "বৃদ্ধি"।) 1990-এর দশকের শেষের দিকে সি-এর কাজ শুরু হয়। যেহেতু একটি কাস্টম কোড জেনারেটর লেখা নিজেই একটি চ্যালেঞ্জ, এবং সেই সময়ে গবেষকদের জন্য উপলব্ধ কম্পাইলার ব্যাকএন্ডগুলি জটিল এবং দুর্বলভাবে নথিভুক্ত ছিল, তাই বেশ কয়েকটি প্রকল্পে কম্পাইলার লেখা ছিল যা সি কোড তৈরি করেছিল (উদাহরণস্বরূপ, মূল মডুলা-3 কম্পাইলার)। যাইহোক, কার্যকরী ভাষার জন্য সি একটি খারাপ পছন্দঃ এটি টেল-কল অপ্টিমাইজেশনের নিশ্চয়তা দেয় না, বা সঠিক আবর্জনা সংগ্রহ বা দক্ষ ব্যতিক্রম পরিচালনা সমর্থন করে না। সি-- সি-এর একটি কঠোরভাবে সংজ্ঞায়িত সহজ বিকল্প যা এই সমস্তগুলিকে সমর্থন করে। এর সবচেয়ে উদ্ভাবনী বৈশিষ্ট্য হল একটি রান-টাইম ইন্টারফেস যা বহনযোগ্য আবর্জনা সংগ্রহকারী, ব্যতিক্রম পরিচালনা ব্যবস্থা এবং অন্যান্য রান-টাইম বৈশিষ্ট্যগুলি লেখার অনুমতি দেয় যা যে কোনও সি-কম্পাইলারের সাথে কাজ করে। সি-এর প্রথম সংস্করণটি 1998 সালের এপ্রিলে একটি এমএসআরএ কাগজ হিসাবে প্রকাশিত হয়েছিল, যার সাথে 1999 সালের জানুয়ারিতে আবর্জনা সংগ্রহের উপর একটি কাগজ ছিল। 1999 সালের মে মাসে এইচ. টি. এম. এল আকারে একটি সংশোধিত ম্যানুয়াল প্রকাশ করা হয়। 2000 সালে নরম্যান রামসে ("প্রস্তাবিত পরিবর্তন") এবং ক্রিশ্চিয়ান লিন্ডিগ ("একটি নতুন ব্যাকরণ") দ্বারা প্রস্তাবিত দুটি বড় পরিবর্তনের সেট সি-সংস্করণ 2-এর দিকে পরিচালিত করে, যা 2004 সালের দিকে চূড়ান্ত করা হয় এবং আনুষ্ঠানিকভাবে 2005 সালে মুক্তি পায়। টাইপ সিস্টেম সি-টাইপ সিস্টেমটি উচ্চ-স্তরের ভাষাগুলির দ্বারা আরোপিত রীতিনীতির পরিবর্তে হার্ডওয়্যার দ্বারা আরোপিত সীমাবদ্ধতাগুলি প্রতিফলিত করার জন্য ডিজাইন করা হয়েছে। একটি রেজিস্টার বা মেমরিতে সংরক্ষিত একটি মানের শুধুমাত্র একটি প্রকার থাকতে পারেঃ বিট-ভেক্টর। যাইহোক, বিট-ভেক্টর একটি বহুরূপী প্রকার যা বিভিন্ন প্রস্থে আসে, যেমন। ,, বা। ভাসমান-বিন্দু ধরনের একটি পৃথক 32-বা-64 বিট পরিবার সমর্থিত। বিট-ভেক্টর প্রকার ছাড়াও, সি-একটি বুলিয়ান প্রকার প্রদান করে, যা অভিব্যক্তি দ্বারা গণনা করা যেতে পারে এবং নিয়ন্ত্রণ প্রবাহের জন্য ব্যবহার করা যেতে পারে কিন্তু একটি রেজিস্টার বা মেমরিতে সংরক্ষণ করা যায় না। একটি সমাবেশ ভাষার মতো, যে কোনও উচ্চতর ধরনের শৃঙ্খলা, যেমন স্বাক্ষরিত, স্বাক্ষরহীন, ফ্লোট এবং পয়েন্টারের মধ্যে পার্থক্য, সি-অপারেটর বা অন্যান্য বাক্য গঠন দ্বারা আরোপিত হয়। সি-টাইপ-চেক করা হয় না, বা এটি কলিং কনভেনশন প্রয়োগ বা চেক করে না। সি-সংস্করণ 2 বিট-ভেক্টর এবং ফ্লোটিং-পয়েন্ট প্রকারের মধ্যে পার্থক্য সরিয়ে দেয়। এই প্রকারগুলি একটি স্ট্রিং "টাইপ" ট্যাগ দিয়ে ব্যাখ্যা করা যেতে পারে, অন্যান্য বিষয়ের মধ্যে, একটি পরিবর্তনশীলের পূর্ণসংখ্যা বনাম ফ্লোট টাইপিং এবং এর সঞ্চয় আচরণ (গ্লোবাল বা স্থানীয়) আলাদা করার জন্য। প্রথমটি পূর্ণসংখ্যা এবং ভাসমান-বিন্দু মানের জন্য পৃথক রেজিস্টার রয়েছে এমন লক্ষ্যগুলিতে কার্যকর। পয়েন্টার এবং স্থানীয় শব্দের জন্য বিশেষ প্রকার চালু করা হয়েছিল, যদিও এগুলি লক্ষ্য-নির্ভর দৈর্ঘ্যের সাথে একটি বিট-ভেক্টরের সাথে ম্যাপ করা হয়। উদাহরণ কোড নিম্নলিখিত সি-কোডটি 1 থেকে এন পর্যন্ত পূর্ণসংখ্যার যোগফল এবং গুণফল গণনা করে (এন একটি যুক্তি হিসাবে গ্রহণ করা হয়)। এটি দুটি ভাষার বৈশিষ্ট্য প্রদর্শন করেঃ পদ্ধতিগুলি একাধিক ফলাফল দিতে পারে। "জাম্প" কীওয়ার্ড দিয়ে লেজের পুনরাবৃত্তির জন্য স্পষ্টভাবে অনুরোধ করা হয়। / * লেজের পুনরাবৃত্তি */রপ্তানি sp2; sp2 (বিটস32 এন) {জাম্প sp2 _ হেল্প (এন, 1,1);} sp2 _ হেল্প (বিটস32 এন, বিটস32 এস, বিটস32 পি) {যদি এন = = 1 {রিটার্ন (এস, পি);} অন্যথায় {জাম্প sp2 _ হেল্প (এন-1, এস + এন, পি * এন);} বাস্তবায়ন সি-এর নির্দিষ্টকরণ পৃষ্ঠায় সি-এর কয়েকটি বাস্তবায়ন তালিকাভুক্ত করা হয়েছে। "সবচেয়ে সক্রিয়ভাবে বিকশিত" সংকলক, কুইক সি--, 2013 সালে পরিত্যক্ত হয়। সাইমন পেটন জোন্স, জোয়াও ডায়াস এবং নরম্যান রামসে সহ সি-এর কিছু বিকাশকারী জি. এইচ. সি-তে কাজ করেছেন বা কাজ করেছেন, যার বিকাশ সি-ভাষায় সম্প্রসারণের দিকে পরিচালিত করেছে, সি. এম. এম উপভাষা গঠন করেছে যা এর্গোনমিক্সের জন্য সি প্রিপ্রসেসর ব্যবহার করে। জিএইচসি ব্যাকএন্ডগুলি এলএলভিএম আইআর, স্লো সি বা সরাসরি অন্তর্নির্মিত নেটিভ ব্যাকএন্ডের মাধ্যমে সি-কে এক্সিকিউটেবল কোডে রূপান্তরিত করার জন্য দায়ী। মূল উদ্দেশ্য থাকা সত্ত্বেও, জিএইচসি সি---এর উপর তার অনেকগুলি সাধারণ অপ্টিমাইজেশন সম্পাদন করে। অন্যান্য কম্পাইলার আই. আর-এর মতো, সি-উপস্থাপনাটি ডিবাগিংয়ের জন্য ফেলে দেওয়া যেতে পারে। লক্ষ্য-নির্দিষ্ট অপ্টিমাইজেশানগুলি পরে ব্যাকএন্ড দ্বারা সঞ্চালিত হয়। আরও দেখুন বিসিপিএল এলএলভিএম রেফারেন্স এক্সটার্নাল লিঙ্ক আর্কাইভ অফ ওল্ড অফিসিয়াল ওয়েবসাইট (cminusminus.org) কুইক সি-কোড আর্কাইভ (রেফারেন্স বাস্তবায়ন) সি প্রোগ্রামিং ভাষা পরিবার সংকলক