- আমি কি সি / সি ++ শব্দটি ব্যবহার করা বন্ধ করব?
একেবারে। এই নির্মাণটি কী প্রকাশ করতে চেয়েছিল তা পরিষ্কার নয়, সম্ভবত এই শব্দটি ব্যবহার করে এমন ব্যক্তির পক্ষে সি এবং সি ++ কী রয়েছে তা নিয়ে বিভ্রান্তি রয়েছে।
যেহেতু এই বিভ্রান্তি হতাশার একটি সাধারণ উত্স, তাই অনেক লোক এ সম্পর্কে বেশ আবেগপ্রবণ হয়ে পড়েছে এবং কেবলমাত্র সেই শব্দটির উপস্থিতি তাদের অবদান সম্পর্কে নেতিবাচক হওয়ার পক্ষে যথেষ্ট কারণ হবে। এটি নির্বোধ মনে হতে পারে তবে এটি আমাদের কাছে রয়েছে বলে মনে হয়।
আমি প্রস্তাব দিচ্ছি যে "সি / সি ++" সম্পর্কে কথা বলার পরিবর্তে আপনি এমন একটি শব্দ ব্যবহার করেন যা আসলে আপনার অর্থটি পরিষ্কার করে দেয়।
আপনি যদি সি-তে এমন কিছু কথা বলছেন যা সি ++ এর ক্ষেত্রেও সত্য হতে পারে বা নাও হতে পারে, কেবল সি বলে ।
উদাহরণ: সিটিতে ফাংশনটি কীভাবে main
ঘোষণা করা উচিত ?
প্রথমে, মনে হতে পারে সি ++ জন্য উত্তর একই: int main()
বা int main(int, char**)
। তবে আলোচনাটি চলার সাথে সাথে এটি উল্লেখ করা প্রাসঙ্গিক হতে পারে যে সি ++ এ, ফাংশনটি বিশ্বব্যাপী ঘোষিত হতে হবে, যা সি-তে কোনও namespace
অর্থবোধ করে না, কারণ এটির কোনও ফলাফল নেই । অন্যদিকে, main
সি ++ না করে এমন সময় পুনরাবৃত্তভাবে কল করার অনুমতি দেয় । সি ++ এ, return 0;
আপনি যদি “পড়ে যান” main
তবে একটি গুরত্ব রয়েছে তবে সিতে যে return
কোনও পথে বিবৃতি প্রয়োজন। তালিকাটি এগিয়ে যায় এবং আপনি আলোচনার ভাষাটি কী তা সামনে পরিষ্কার করে দিলে আলোচনাটি আরও সহজ হয়।
আপনি যদি সি ++ তে এমন কিছু সম্পর্কে কথা বলছেন যা হয়তো সি-র ক্ষেত্রেও সত্য হতে পারে বা নাও পারে, কেবল সি ++ বলুন ।
উদাহরণ: একটি malloc()
এড অ্যারে int
প্রাথমিকভাবে সি ++ এ অল-জিরো হবে?
সি এর সংক্ষিপ্ত উত্তর একই হতে পারে: না। তবে উত্তরটি এগিয়ে যাওয়ার সাথে সাথে এটি উল্লেখ করা সার্থক হতে পারে যে calloc
সি ++ এ থাকাকালীন সি একটি ভাল বিকল্প হতে পারে , সম্ভবত এটি ব্যবহার করা std::vector<int>
আরও ভাল বিকল্প ছিল।
আপনি সি এবং সি ++ এর মধ্যে একটি সাদৃশ্য বাতলান করতে চান তাহলে, বলে সি এবং সি ++ ।
উদাহরণ: সি এবং সি ++ এ sizeof
একটি int
বাস্তবায়ন সংজ্ঞায়িত হয় এবং সংযোজক এবং আর্কিটেকচারের মধ্যে পৃথক হতে পারে।
এখানে আমরা উল্লেখ করতে চাই যে সি এবং সি ++ একইভাবে আচরণ করে। আমরা উভয় ভাষা সম্পর্কে স্পষ্টভাবে কথা বলছি ।
আমি আসলে আপনাকে সুপারিশ করি যে আপনি আরও নির্দিষ্ট হন এবং কেবল "সি" বা "সি ++" নয় তবে সুনির্দিষ্ট সংস্করণ সম্পর্কে কথা বলেন। উভয় ভাষা বিকশিত হয় এবং একটি ভোঁতা বিবৃতি যেমন
সি ++ সমর্থন করে /* … */
এবং // …
মন্তব্য করে যখন সি কেবল /* … */
শৈলী সমর্থন করে ।
সঠিক বা ভুলও নয়।
- যদি # 1 এর উত্তর হ্যাঁ হয় তবে আমি এমন একটি প্রোগ্রামকে কীভাবে কল করব যেখানে সি এবং সি ++ এর মিশ্রণ ব্যবহার করা হবে?
যেহেতু ভাষাগুলি ওভারল্যাপ করেছে তাই প্রতিটি সি প্রোগ্রামে এমন অংশ থাকবে যা সি ++ এবং এর বিপরীতে দেখাবে। তবুও, লেখক সম্ভবত একটি সি বা সি ++ সংকলক ব্যবহার করে স্থির হয়ে উঠবেন। চলুন "প্রোগ্রামে লেখা আছে সি " যদি এটি একটি সি কম্পাইলার এবং "প্রোগ্রামে লেখা আছে সঙ্গে কম্পাইল করা হয় সি ++ যদি তাদের সি ব্যবহার ++, কম্পাইলার", এমনকি যদি তারা যেকোন আধুনিক সি ++ বৈশিষ্ট্য ব্যবহার করতে অস্বীকার করতে পারে। কিছু লোক সি-স্টাইল সি ++ হিসাবে এই জাতীয় সি ++ কোড উল্লেখ করে । অতিরিক্ত লোডিং, ব্যতিক্রম, বহুবিজ্ঞান, টেমপ্লেট এবং I / O এর অনুপস্থিতি এই জাতীয় কোডের একটি সাধারণ বৈশিষ্ট্য প্রবাহিত করে।
পারলে, এর পরিবর্তে, কিছু ফাইল সি লিখিত হয় এবং একটি সি কম্পাইলার দিয়ে কম্পাইল এবং কিছু অন্যান্য ফাইল C ++ লিখিত এবং একটি সি ++ কম্পাইলার, এবং তারপর সঙ্গে সংকলিত একসঙ্গে লিঙ্ক বস্তুর ফাইল, আমি বলতে হবে যে, "প্রোগ্রামে লেখা আছে একটি সি এবং সি ++ "এর মিশ্রণ , বাস্তবে, আপনি ইতিমধ্যে করেছেন।
যাইহোক, পরিবর্তে, লেখকগণ প্রতিটি ফাইলকে এমনভাবে লিখতে খুব যত্ন নিয়েছিলেন যাতে এটি সি বা সি ++ সংকলক দিয়ে তৈরি করা যায় এবং ফলস্বরূপ প্রোগ্রামটি একই কাজ করতে পারে, আপনি বলতে পারেন যে "প্রোগ্রাম সি এবং সি ++ এর একটি সাধারণ উপসেটে রচিত ।
পরবর্তীটি প্রায়শই শিরোনাম ফাইলগুলির ক্ষেত্রে হয় যা সি এবং সি ++ কোডের মধ্যে ভাগ করা উচিত। এই জাতীয় কোড লেখা সহজ, উপায় দ্বারা। আপনি আরও যে জোর শুধুমাত্র যেমন নির্মান ব্যবহার করা হয়েছে যে সি এবং সি ++ বৈধ করতে চান তবে নির্বাচন এবং ব্যাপকভাবে বিভিন্ন কম্পাইলার বিক্রেতাদের দ্বারা সমর্থিত শব্দটি একটি পোর্টেবল সি এবং সি ++ সাধারণ উপসেট ব্যবহার করা যেতে পারে এই জোর।
- এই দু'টিই "আলাদা" ভাষা হওয়ায় সম্ভবত এটি সম্ভবত যে কোনও সময় সি ++ সংকলক সি ভাষায় লিখিত সমর্থনকারী কোডটি বন্ধ করে দেয় (যেহেতু আধুনিক সি ++ পয়েন্টার, গতিশীল মেমরি হ্যান্ডলিং ইত্যাদির মতো বেসিক স্টাফগুলির জন্য সি মানসিকতা থেকে সরে গেছে)?
আমি নিশ্চিত না যে আমি এই প্রশ্নটি বুঝতে পেরেছি। যেহেতু সি এবং সি ++ হয় বিভিন্ন ভাষায়, আপনি তাদের এক জন্য একটি কম্পাইলার অপরের জন্য লিখিত একটি প্রোগ্রাম গ্রহণ আশা করতে পারে না। যাইহোক, সংকলকগুলি প্রায়শই একটি মডুলার উপায়ে ডিজাইন করা হয় এবং যদি কোনও সংকলকটিতে সি ++ ফ্রন্ট-এন্ড থাকে তবে সম্ভাবনা ভাল থাকে তবে এটির সি ফ্রন্ট-এন্ডও থাকবে। (আপনি তারপরে কমান্ড লাইন সুইচ বা অনুরূপ মাধ্যমের মাধ্যমে আপনি তাদের মধ্যে কোনটি বেছে নিতে চান তা বেছে নিতে পারেন both) যতক্ষণ না উভয় ভাষা ব্যাপকভাবে ব্যবহৃত হবে ততক্ষণ এটি খুব সম্ভবত সম্ভাব্য বলে মনে হচ্ছে যে এটি পরিবর্তন হতে চলেছে। "আধুনিক সি ++" সম্পর্কে আপনার বক্তব্য আমি মনে করি মূলত ভাল কোডিং মান এবং স্ট্যান্ডার্ড লাইব্রেরির বিষয়। থেকে কম্পাইলার এর দৃষ্টিকোণ, উভয় ভাষায় বিবর্তনের বরং বিচ্যুত চেয়ে সমকেন্দ্রি করা হয়।
- সামঞ্জস্যতা বজায় রাখতে সি / সি ++ এর মান তৈরি করা লোকদের মধ্যে এখনই কি কোনও সহযোগিতা রয়েছে?
হ্যাঁ. সি ++ 11 এবং সি 11-এ প্রবর্তিত মেমরি মডেল এবং পারমাণবিক অপারেশন লাইব্রেরি একটি ভাল উদাহরণ। দেখে মনে হচ্ছে উভয় ভাষার ডিজাইনাররা বুঝতে পেরেছেন যে সামঞ্জস্যতা গুরুত্বপূর্ণ এবং এটি উন্নতির দিকে কাজ করছে। ব্যক্তিগতভাবে, আমি চাই যে এই সহযোগিতা আরও তীব্র হয় এবং দুটি আইএসও ওয়ার্কিং গ্রুপ সম্ভবত এতে যোগ দিয়েছিল তবে আমার ইচ্ছাটি গুরুত্বপূর্ণ নয়।
সিজনিয়াল প্রোগ্রামিং ল্যাঙ্গুয়েজের ৪ র্থ সংস্করণের ৪৪.৩ ডলারে সি এবং সি ++ এর বিভিন্ন সংস্করণের মধ্যে পার্থক্য এবং সাধারণতার বিষয়ে বাজরান স্ট্রস্ট্রপ আলোচনা করেছেন , যার উপায়ে বলা হয়েছে, "সি / সি ++ সামঞ্জস্যতা" শিরোনাম। শব্দটির ব্যবহার আসলে এই ক্ষেত্রে উপযুক্ত হতে পারে কারণ এটি কী বোঝাতে চাইছে তা স্পষ্ট।
- যদি # 4 হ্যাঁ হয়, আধুনিক সি ++ (11/14/17) এর উপস্থিতির সাথে এই জাতীয় সহযোগিতা অদূর ভবিষ্যতে শেষ হতে পারে
উপরে আলোচিত হিসাবে, এটি সি ++ 11 এ ঘটেছিল এবং এটি প্রত্যাশিত / প্রত্যাশিত / আবার ঘটতে হবে বলে আশা করা হচ্ছে।