কেন কেউ C ++ এর উপরে সি ব্যবহার করবে? [বন্ধ]


132

যদিও লোকেরা সি +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++> সি ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++> জনগণ সি ++ সম্পর্কে অভিযোগ করতে চাইলেও, আপনি কেন সি ++ এর চেয়ে সি বেছে নিতে চান সে বিষয়ে খুব বেশি প্রমাণ আমি পাইনি। সি প্রায় ততটুকু ঝাঁকুনি পেয়েছে বলে মনে হচ্ছে না এবং যদি সি ++ এ সমস্ত সমস্যা থাকে তবে আপনি কেবল সি উপসেটে নিজেকে কেন সীমাবদ্ধ রাখতে পারবেন না? আপনার চিন্তা / অভিজ্ঞতা কি?


সঠিক সদৃশ লিঙ্কটি আর কাজ করে না ..... সি সি পার্টি করতে দেরি করা লোকটি বলেছে :)
কাইল

4
সি আসলে সি ++ এর চেয়ে আরও ভাল এবং সহজ তবে যে কোনও সি প্রোগ্রামার সি ++ কে সিতে রূপান্তর করতে পারে এবং হাসতে পারে।
ববরুন

11
ভয়াবহ জিনিসটি সাধারণভাবে লোকেরা মনে করে "++" এর অর্থ এটি সত্যই গুডুড, দুঃখিত দুঃখিত এটি নয়।
ববরুন

সুস্পষ্ট - ছোট / এমবেডেড ডিভাইসগুলি বাদে - সাধারণত সি খাঁটি সংখ্যা ক্রাঞ্চিং সমস্যার (যেমন জিপিইউ গ্রাফিক্স প্রসেসিং, ব্যাপকভাবে সমান্তরাল পদার্থবিজ্ঞানের গণনা, প্যাটার্ন মাইনিং ইত্যাদি) যেখানে ওওপি বৈশিষ্ট্যগুলি একটি ব্লাট are সি ++ মডেলিং সিস্টেমগুলির জন্য আরও ভাল যেখানে 'জিনিসগুলি' ইন্টারঅ্যাক্ট করে, ওওপি সক্ষমতার সাথে আরও সহজ।
পেসম্যান

3
কারণ জাভাস্ক্রিপ্ট, সেরা অনুশীলন, সি ++ এবং ওওপি এই বিমূর্ত সমস্যাগুলি সমাধান করার চেষ্টা করতে বোকা / খুব ব্যস্ত যা সম্ভবত বাস্তবে বিদ্যমান নেই বা কখনও সমাধান করার প্রয়োজন নেই।
মার্শাল ক্র্যাফট

উত্তর:


132

জোলে এর উত্তরটি আপনাকে সি ব্যবহার করতে হতে পারে এমন কারণগুলির জন্য ভাল , যদিও এখানে আরও কয়েকটি রয়েছে:

  • আপনাকে অবশ্যই শিল্পের গাইডলাইনগুলি মেনে নিতে হবে, যা সি এর জন্য প্রমাণ এবং পরীক্ষা করা সহজ which
  • সি এর সাথে কাজ করার জন্য আপনার কাছে সরঞ্জাম রয়েছে তবে সি ++ নয় (কেবলমাত্র সংকলক সম্পর্কে নয়, তবে সমস্ত সমর্থনকারী সরঞ্জাম, কভারেজ, বিশ্লেষণ ইত্যাদি)
  • আপনার লক্ষ্য বিকাশকারীরা সি গুরু
  • আপনি ড্রাইভার, কার্নেল বা অন্যান্য নিম্ন স্তরের কোড লিখছেন
  • আপনি জানেন যে C ++ সংকলক আপনার যে ধরণের কোড লিখতে হবে তা অনুকূল করে তুলতে ভাল নয়
  • আপনার অ্যাপ্লিকেশন কেবল নিজেকে অবজেক্ট ওরিয়েন্টড হিসাবে ধার্য করে না, তবে সেই ফর্মটিতে লেখা আরও শক্ত হবে

কিছু কিছু ক্ষেত্রে, যদিও, আপনি পারে চান বরং সি চেয়ে সি ++ ব্যবহার করার জন্য:

  • আপনি এসেম্বলারের কোডিংয়ের ঝামেলা ছাড়াই এসেম্বলারের পারফরম্যান্স চান (সি ++, তাত্ত্বিকভাবে 'নিখুঁত' পারফরম্যান্সে সক্ষম, তবে সংকলকরা অপ্টিমাইজেশন দেখতে খুব একটা ভাল সি প্রোগ্রামার দেখতে পাবেন না)
  • আপনি যে সফ্টওয়্যারটি লিখছেন তা তুচ্ছ বা প্রায় - ছোট সি সংকলকটি হুইপ করুন, কয়েক লাইনের কোড লিখুন, সংকলন করুন এবং আপনি প্রস্তুত আছেন - সাহায্যকারীদের সাথে একটি বিশাল সম্পাদক খোলার দরকার নেই, ব্যবহারিকভাবে লেখার দরকার নেই খালি এবং অকেজো ক্লাস, নেমস্পেস ইত্যাদির সাথে ডিল করা ইত্যাদি আপনি প্রায় একই জিনিসটি সি ++ কম্পাইলারের সাহায্যে করতে পারেন এবং কেবল সি সাবসেট ব্যবহার করতে পারেন, তবে সি ++ সংকলক এমনকি ছোট প্রোগ্রামগুলির জন্যও ধীর।
  • আপনার চূড়ান্ত পারফরম্যান্স বা ছোট কোড আকারের প্রয়োজন এবং জেনে নিন যে সি ++ সংকলকটি লাইব্রেরির আকার এবং কার্য সম্পাদনের কারণে এটি সম্পাদন করা আরও কঠিন করে তুলবে

আপনি দাবী করেছেন যে আপনি কেবল সি উপসেটটি ব্যবহার করতে এবং একটি সি ++ সংকলক দিয়ে সংকলন করতে পেরেছিলেন তবে আপনি দেখতে পাবেন যে আপনি যদি এটি করেন তবে আপনি সংকলকটির উপর নির্ভর করে কিছুটা আলাদা ফলাফল পাবেন।

নির্বিশেষে, আপনি যদি এটি করছেন, আপনি সি ব্যবহার করছেন আপনার প্রশ্নটি কি আসলেই "সি প্রোগ্রামাররা সি ++ সংকলক কেন ব্যবহার করে না?" যদি এটি হয়, তবে আপনি হয় ভাষার পার্থক্য বুঝতে পারবেন না, বা আপনি সংকলক তত্ত্ব বুঝতে পারেন না।


2
এখানে মিস্রা সি স্ট্যান্ডার্ডও রয়েছে, যা আফাইক সি ++ এর জন্য এখনও সত্যিকারের স্থিতিশীল নয়।
পল নাথান

60
পারফরম্যান্স অংশটি অগত্যা সত্য নয়। এমন অনেকগুলি ক্ষেত্র রয়েছে যেখানে সি ++ সি এর চেয়ে অনেক বেশি অনুকূল করে তুলতে পারে (অবশ্যই বিপরীতটিও মাঝে মধ্যে সত্য হয় তবে সাধারণত, পারফরম্যান্সের কারণে সি ++++ নির্বাচন করা একটি খারাপ ধারণা)।
জলফ

9
আমি আরও কর্মক্ষমতা তথ্য আগ্রহী হতে হবে। আমি বুঝতে পারছি না কেন সি কেবল "মাঝে মাঝে" আরও ভাল পারফর্ম করবেন। একটি গড় প্রোগ্রামার দেওয়া, এটি হতে পারে যে সি ++ পারফরম্যান্স অর্জন করা সহজ করে তোলে (প্যাটার্নগুলির ভাল ব্যবহার) তবে বিশেষজ্ঞের লিখিত সি প্রোগ্রামটি দ্রুত হওয়া উচিত - নিম্ন ওভারহেড।
অ্যাডাম ডেভিস

3
অবশ্যই, দ্রুত সি প্রোগ্রামটি লিখতে এবং ডিবাগ করতে আরও বেশি সময় লাগবে, সুতরাং একটি ট্রেড অফ রয়েছে, এবং মেশিনগুলির গতি প্রদত্ত বিশেষায়িত অ্যাপ্লিকেশন ব্যতীত ট্রেড অফ খুব কমই উপযুক্ত, যার কারণেই সি ++ আরও ভাল। (কোডটি শেষ হওয়ার সাথে সাথে কম্পিউটারগুলি দ্রুততর হয় এবং ভিন্নতা খায়)
অ্যাডাম ডেভিস

21
@ অ্যাডাম: সি ++ সি এর চেয়ে "চমত্কার" কোড সহ আরও ভাল অভিনয় করে। সি ++ টেমপ্লেট এবং ইনলাইন ফাংশনগুলি ব্যবহার করতে পারে যেখানে সি ম্যাক্রোর প্রয়োজন। সি ++ ওভারহেড কেবল যখন জিজ্ঞাসা করা হয় তখনই এটি উপস্থিত হয়, অন্যথায় এটি সি এর মতো হয় (ভার্চুয়াল, চেষ্টা / নিক্ষেপ, গতিশীল_কাস্ট)। ওভারহেডের বেশিরভাগই কেবল প্রোগ্রামের চিত্র আকারে দেখায়।
Zan Lynx

88

আমি ন্যূনতমতা এবং সরলতা পছন্দ করি।


9
ঠিক আছে - যথেষ্ট ন্যায্য ... তাহলে কেন ফোর্থ নয়?
জোনাথন লেফলার

14
আমি অনুমান করতে পারি যে তিনি লাইব্রেরি, বই, ফোরামগুলি পাওয়া পছন্দ করেন?
gnud

30
আমি আপনার উত্তরের ন্যূনতমতা এবং সরলতা পছন্দ করি ... :)
জো ডিএফ

8
একমত। সি অত্যন্ত সহজ এবং "ছোট"। সি সর্বদা একই দেখায় এবং আপনি যদি কোনও প্রকল্পে নতুন অবদানকারী হন তবে এটি কীভাবে কাজ করে তা বোঝা সহজ। সি ++ এর অনেকগুলি অকেজো জিনিস রয়েছে এবং একটি সি ++ প্রকল্পের দিকে তাকালে আমি তাত্ক্ষণিকভাবে বিভ্রান্ত হয়ে যাই। আমি সি ++ লোককে বুঝতে পারি (ওও ক্ষমতা সহ একটি সি ভাষা) তবে সি কেবল আরও সহজ এবং সহজ।
ব্যবহারকারী 69969

1
এছাড়াও আমি মনে করি সি একটি ছোট লাইব্রেরি, স্ক্রিপ্টিং ভাষা এবং হ্যাঁ, রেন্ডারিং ইঞ্জিনগুলির মতো কিছু ধরণের লাইব্রেরি লেখার জন্য একটি আরও উপযুক্ত উপযুক্ত ভাষা।
keebus

65
  • কারণ তারা ইতিমধ্যে সি জানি
  • কারণ তারা এমন প্ল্যাটফর্মের জন্য এম্বেড থাকা অ্যাপ্লিকেশন তৈরি করছেন যা কেবলমাত্র একটি সি সংকলক রয়েছে
  • কারণ তারা সিতে লিখিত লিগ্যাসি সফ্টওয়্যারটি বজায় রাখছেন
  • আপনি কোনও অপারেটিং সিস্টেমের স্তর, একটি রিলেশনাল ডাটাবেস ইঞ্জিন, বা খুচরা 3 ডি ভিডিও গেম ইঞ্জিনের স্তরে কিছু লিখছেন।

4
কিছু মাইক্রোকন্ট্রোলারের কেবল সি সংকলক থাকে যা সত্যই সফল হয়। বেসিক সি ++ বৈশিষ্ট্যগুলি (নেমস্পেসস, ভার্চুয়াল ফাংশন ছাড়াও ক্লাস, এনামস, টপ-অফ-ব্লকের পাশাপাশি অন্য কোথাও ভেরিয়েবল ঘোষণা করা) সর্বাধিক মূল্যবান, আইএমএইচও।
জেসন এস

2
এগুলি থেকে মনে হচ্ছে আপনি কোনও যুক্তিসঙ্গত বিকল্প না থাকলে কেবল সি বেছে নেবেন।

2
@ জো: প্রথম দিকটি বাদ দিয়ে, এটির যোগফল। পরবর্তী অনেকগুলি ভাষা সি নিয়েছিল এবং বলেছিল, 'আরে, আমরা আরও ভাল করতে পারি ।'
জোয়েল কোহোর্ন

1
একমত। আপনি যদি পরিশীলিত সি ++ বৈশিষ্ট্যগুলি ব্যবহার না করেন তবে আমি বিশ্বাস করি যে সি ++ একতরফাভাবে আরও ভাল সি the আরও বেশি পরিশীলিত সি ++ বৈশিষ্ট্যগুলির সাথে জিনিসগুলি আরও বিতর্কযোগ্য হয় তবে তর্ক বিতর্কটি সাধারণত বিমূর্ততার উচ্চতর স্তরের - যেমন জাভা সম্পর্কিত is
পল নাথান

4
বেশিরভাগ 3 ডি গেম ইঞ্জিনগুলি বাস্তবে সি ++ ব্যবহার করে। ইউই 4 বেশিরভাগ ক্ষেত্রে সি ++ ব্যবহার করে।
আদিত্য কাশি

56

পারফরম্যান্স বা ব্লোটের ভয় সি ++ ছাড়ার পক্ষে ভাল কারণ নয়। প্রতিটি ভাষার নিজস্ব সম্ভাব্য সমস্যা এবং বাণিজ্য বন্ধ রয়েছে - ভাল প্রোগ্রামাররা এগুলি সম্পর্কে শিখেন এবং যেখানে প্রয়োজনীয় মোকাবেলার কৌশল বিকাশ করা হয়, দরিদ্র প্রোগ্রামাররা বোকা হয়ে পড়বে এবং ভাষাটিকে দোষ দেবে।

দোহাই দেওয়া পাইথনটি বিভিন্ন উপায়ে "ধীর" ভাষা হিসাবে বিবেচিত হয়, তবে অ-তুচ্ছ কাজগুলির জন্য দক্ষ পাইথন প্রোগ্রামার সহজেই কোড তৈরি করতে পারে যা অনভিজ্ঞ সি ডেভেলপারের চেয়ে দ্রুত সম্পাদন করে।

আমার শিল্পে, ভিডিও গেমগুলিতে আমরা অভ্যন্তরীণ লুপগুলিতে আরটিটিআই, ব্যতিক্রম বা ভার্চুয়াল-ফাংশনগুলিকে এড়িয়ে উচ্চতর পারফরম্যান্স কোডটি সি ++ তে লিখি। এগুলি অত্যন্ত কার্যকর হতে পারে তবে পারফরম্যান্স বা ব্লাট সমস্যা থাকতে পারে যা এড়ানো বাঞ্ছনীয়। আমরা যদি আরও এক ধাপ এগিয়ে যেতে এবং পুরো সিতে স্যুইচ করি তবে আমরা সামান্য লাভ করব এবং সি ++ এর সর্বাধিক দরকারী নির্মাণগুলি হারাব।

সি পছন্দ করার সবচেয়ে বড় ব্যবহারিক কারণ হ'ল সি ++ এর চেয়ে বেশি সমর্থন। অনেকগুলি প্ল্যাটফর্ম রয়েছে, বিশেষত এম্বেড হওয়াগুলি, এমনকি সি ++ সংকলকও নেই।

বিক্রেতাদের সামঞ্জস্যের বিষয়টিও রয়েছে। সি এর স্থিতিশীল এবং সু-সংজ্ঞায়িত এবিআই রয়েছে (অ্যাপ্লিকেশন বাইনারি ইন্টারফেস) সি ++ নেই। ভিটিবেল এবং কনস্ট্রাক্টর / ডেস্ট্রাক্টর ইত্যাদির কারণে সি ++ এবিআই আরও জটিল, তাই প্রতিটি বিক্রেতার সাথে আলাদাভাবে প্রয়োগ করা হয় এবং এমনকি বিক্রেতাদের সরঞ্জামচইনের সংস্করণগুলিও।

বাস্তব-শর্তাদির অর্থ এর অর্থ আপনি একটি সংকলক দ্বারা উত্পাদিত একটি গ্রন্থাগার নিতে পারবেন না এবং এটিকে কোডের সাথে বা অন্যের লাইব্রেরির সাথে লিঙ্ক করতে পারবেন না যা বিতরণ প্রকল্প বা বাইনারি লাইব্রেরির মিডলওয়্যার সরবরাহকারীদের জন্য দুঃস্বপ্ন তৈরি করে।


7
"ব্যাখ্যাযুক্ত পাইথনটি বিভিন্নভাবে" ধীর "ভাষা হিসাবে বিবেচিত হয়, তবে অ-তুচ্ছ কর্মের জন্য একটি দক্ষ পাইথন প্রোগ্রামার সহজেই কোড তৈরি করতে পারে যা অনভিজ্ঞ সি ডেভেলপারের চেয়ে দ্রুত সম্পাদন করে" " আমার ধারণা এমন একটি প্রোগ্রামার (অজানা একটি পাইথন প্রোগামার নয়) একটি অ্যালগরিদম পাঠ গ্রহণ করে এমন একটি কোড তৈরি করতে পারে যা একটি অনভিজ্ঞ ডেভেলপার (সাধারণভাবে) এর চেয়ে দ্রুত কার্যকর করে।
আন্দ্রেই সিওবানু

15
এবং সেই একই অনভিজ্ঞ সিভ পাইথন কোড তৈরি করবে যা তার সি কোডের চেয়ে ধীর is পাইথন সি এর চেয়ে ধীর গতির।
মিলি স্মিথ

37

আমি সিতে লিখতে পছন্দ করি কারণ আমি একটি ছোট, আঁটসাঁট ভাষায় কাজ করা উপভোগ করি। আমি এমন একটি স্ট্যান্ডার্ডের অ্যাক্সেস পছন্দ করি যা যুক্তিসঙ্গত পরিমাণে পড়া যায় (আমার জন্য - আমি খুব ধীর পাঠক)। অধিকন্তু, আমি এটি এম্বেড থাকা সিস্টেমগুলির জন্য সফ্টওয়্যার লিখতে ব্যবহার করি যার জন্য কয়েকটি পছন্দসই সি ++ সংকলক উপস্থিত রয়েছে ( কিছু পিআইসি মাইক্রো-কন্ট্রোলারের মতো)।


পুন: চিত্রগুলি - আমি আপনার ব্যথা অনুভব করছি। যদি আমাকে অনেকগুলি পিক কোড করতে হয় তবে আমি সম্ভবত আইএআর সংকলকটি ব্যবহার করব যা সি ++ সমর্থন করে। আমি এটি এমএসপি ৪৩০ এ ব্যবহার করেছি এবং এটি বেশ সুন্দর।
জেসন এস

1
সি এর জন্য কোনও উন্নত সংকলনের সময়গুলি ভুলে যাবেন না কোনও টেমপ্লেট সিস্টেম নেই।
প্রকৌশলী

35

আমি অন্য মতামতটি গ্রহণ করি: কেন সি এর পরিবর্তে সি ++ ব্যবহার করবেন?

সি প্রোগ্রামিং ল্যাঙ্গুয়েজ (ওরফে: কেএন্ডআর) বইটি আপনাকে 300 পৃষ্ঠাগুলির আওতায় ভাষা যেভাবে করতে পারে তা কীভাবে করতে হবে তা আপনাকে পরিষ্কারভাবে জানিয়েছে। এটি ন্যূনতমতার একটি মাস্টারপিস। কোনও সি ++ বই এমনকি কাছে আসে না।

সুস্পষ্ট জবাবদিহিটি হ'ল বেশিরভাগ ক্ষেত্রে একই কথা বলা যেতে পারে, সমস্ত না হলেও, আধুনিক ভাষা - তারা আপনাকে কয়েকশ পৃষ্ঠায় কীভাবে কীভাবে করতে হবে তাও বলতে পারে না। সত্য। তাহলে কেন পরিবর্তে সি ++ ব্যবহার করবেন? বৈশিষ্ট্য সমৃদ্ধি? পাওয়ার? আপনার যদি সমৃদ্ধ বা শক্তিশালী আরও কিছু প্রয়োজন হয় তবে C #, উদ্দেশ্য সি, জাভা বা এর মতো অন্য কোনও কিছু নিয়ে যান। সি ++ এর জটিলতায় নিজেকে বোঝাবেন কেন? আপনার যদি ডিগ্রি নিয়ন্ত্রণ সি ++ অনুদানের প্রয়োজন হয় তবে আমি সি ব্যবহার করার পক্ষে যুক্তি দিচ্ছি সি কিছু করতে পারে এবং এটি ভালভাবে করতে পারে।


আমি রাজী. আমি শক্তি চাই তাই আমি 1/2 উপায় বিন্দু নয়, সত্যই শক্তিশালী কিছু ব্যবহার করি।
দিনাহ 19

7
@ দিনাহ: 1/2 ওয়ে পয়েন্ট আপনাকে সি # বা জাভাটির পারফরম্যান্স এবং মেমরির ব্যয় ছাড়াই উচ্চ স্তরের এক্সপ্রেশন শক্তি দেয়।
জ্যান লিংস

5
@ জ্যান লিঙ্কস: আপনি ঠিক বলেছেন। তবে আমি আমার মূল পোস্টে যে বিরোধী অবস্থান নিয়েছিলাম তা আমি আশা করি যে আমি সি ++ এর উপর সিটির সম্ভাব্যতার বিষয়ে একটি বক্তব্য রেখেছি ... এমনকি যদি আপনি দেখান, এটি একটি উন্মুক্ত এবং শাট কেস নয়।
দিনাহ

28

ইতিমধ্যে উল্লিখিত আরও কয়েকটি বিষয় ছাড়াও:

কম আশ্চর্য

এটি হ'ল এটি দেখতে খুব সহজ যে কোনও অংশের কোড ঠিক কী করবে । সি ++ তে আপনাকে কম্পাইলারটি ঠিক কী কোড উত্পন্ন করে তা জানতে সক্ষম হওয়ার জন্য গুরু স্তরের সাথে যোগাযোগ করতে হবে (টেমপ্লেট, একাধিক উত্তরাধিকার, স্বয়ংক্রিয়ভাবে উত্পাদিত কন্সট্রাক্টর, ভার্চুয়াল ফাংশনগুলির একটি সংমিশ্রণ চেষ্টা করুন এবং কিছুটা নেমস্পেস ম্যাজিক এবং আর্গুমেন্ট নির্ভর অনুসন্ধানের মিশ্রণ করুন)।

বেশিরভাগ ক্ষেত্রে এই যাদুটি দুর্দান্ত, তবে উদাহরণস্বরূপ রিয়েল-টাইম সিস্টেমে এটি আপনার দিনটিকে সত্যই আঁকতে পারে।


27

আপনার প্রশ্নের লিনাসের উত্তর "কারণ সি ++ একটি ভয়ঙ্কর ভাষা"

তার প্রমাণ সর্বোপরি বিস্মৃত, তবে তার একটা বক্তব্য আছে ..

নিম্ন স্তরের ভাষার বেশি হওয়ার কারণে আপনি এটি সি ++ এর চেয়ে বেশি পছন্দ করবেন .. অতিরিক্ত বৈশিষ্ট্যগুলির জন্য সংযুক্ত লাইব্রেরি এবং সংকলক সমর্থন সহ সি ++ সি ( উভয় ভাষায় অন্যান্য ভাষার বৈশিষ্ট্য রয়েছে যা আলাদা করে না এবং জিনিসগুলি আলাদাভাবে প্রয়োগ করে ) তবে আপনি যদি সময় এবং সি সঙ্গে অভিজ্ঞতা, আপনি অতিরিক্ত যোগ নিম্ন স্তরের সাথে সম্পর্কিত ক্ষমতা থেকে উপকৃত হতে পারেন ... [সম্পাদিত] (কারণ আপনি ব্যবহার করতে পারেন আরো কাজ নিজে বদলে কিছু ক্ষমতা ভাষা / কম্পাইলার নিজেই থেকে আসছে থেকে উপকৃত করছেন)

লিঙ্ক যুক্ত করা হচ্ছে:

এম্বেডের জন্য সি ++ কেন

আপনি এখনও সি ব্যবহার করছেন কেন? পিডিএফ

আমি এটির জন্য গুগল করব .. কারণ ওয়েবে ইতিমধ্যে প্রচুর মন্তব্য রয়েছে


17
আমি সি তে প্রচুর কোডিং করেছি, তারপরে সি ++ এর একটি সংক্ষিপ্ত সময়, তারপরে ভিবিতে একটি দীর্ঘকালীন দীর্ঘ সময়, এবং এখন আমি গত কয়েক বছর ধরে সি # ব্যবহার করছি। আমি তখন থেকে কিছুটা সি এবং সি ++ কোড লিখেছি এবং বুঝতে পেরেছি যে সি ভালভাবে সংজ্ঞায়িত এবং আঁটসাঁট, সি # দুর্দান্ত এবং শক্তিশালী, এবং সি ++ কেবল চুষছে।
সিএমপালমার

25
লিনাস সি ++ এর গুণাবলী সম্পর্কে কথা বলতে সত্যিই যোগ্য নয়। তাকে উদ্ধৃত করা যেন সে একরকম ওরাকল কেবল বোকা। এবং "কঠোর উপায়ে কাজগুলি করা" সম্পর্কে কিছুটা বোঝা যায় না। সি ব্যবহারের ভাল কারণ রয়েছে তবে "এটি আরও কাজ", বা "লিনাস তাই বলেছিলেন" তাদের মধ্যে নেই।
jalf

8
@ জালফ, লিনাসকে উদ্ধৃত করে এমনভাবে মনে করেননি যে তিনি কোনও প্রকারের ওরাকল, বিশ্বের সর্বাধিক ব্যবহৃত প্রোগ্রামগুলির মধ্যে তার পছন্দগুলির জন্য একজন জ্ঞাত প্রোগ্রামারের মতামত উল্লেখ করা ভাল: লিনাক্স কার্নেল। প্রশ্নটি উত্তর দেওয়ার লক্ষ্য নিয়ে আমার মতামত (কেন কেউ সি বেছে নেবে) জিজ্ঞাসা করে।
রিক টোকিও

6
লিনাস সি ++ তে মতামতের জন্য একটি খারাপ উত্স কারণ তিনি এটি ব্যবহার করেন না এবং যতদূর আমি জানি, কেবল এটি 1990-একবারে একবার চেষ্টা করেছিলেন।
জ্যান লিংস

3
@ জ্যান লিনাস অন্য কোথাও আরও স্ব-নিয়ন্ত্রণ প্রদর্শন করেছেন: "আমরা সি ++ এবং এটি যে অতিরিক্ত বৈশিষ্ট্যগুলি নিয়ে আসে তা ব্যবহার করতে পছন্দ করতাম তবে সি এর চেয়ে সি ++ এ কোথায় খারাপ কোড পাওয়া যায় তা দেখতে আরও শক্ত"। আমার উত্তরের উদ্ধৃতিটি "নেতার অনুসরণ করুন" পরিবর্তে একটি মতামতের রেকর্ড।
রিক টোকিও

26

কারণ তারা একটি প্লাগইন লিখছেন এবং সি ++ এর কোনও স্ট্যান্ডার্ড এবিআই নেই।


9
যদিও সত্য, এটি সিটির সাথে লেগে থাকার দৃ conv় কারণ নয় কারণ আপনি সি লিঙ্কেজ ব্যবহার করে প্রয়োজনীয় ফাংশনগুলি রফতানি করতে পারেন এবং এখনও আপনার প্রয়োগটি সি ++ এ রাখতে পারেন।
কোডেলোগিক

2
@ কোডেলজিক - সি ++ প্রকল্পের সমতুল্য সি প্রকল্পগুলির চেয়ে আরও অনেক ধরণের এবং ফাংশন রফতানি করার প্রবণতা রয়েছে। এটি চূড়ান্তভাবে ভাগ করা লাইব্রেরিতে লুকিয়ে রাখা সম্ভব, তবে এটির পক্ষে এটি যথাসম্ভব বেশি প্রচেষ্টা।
টম

টিবিএইচটি খুব ভাল উত্তর নয় তবে +1 কারণ সি ++ এর কোনও স্ট্যান্ডার্ড এবিআই নেই (হ্যাঁ .. সি ++ সফল হয়েছে)
হাসান

6
সি এর কোনও স্ট্যান্ডার্ড এবিআই নেই।
স্টিফেন ক্যানন

25

দীর্ঘ সংকলনের সময়গুলি বিরক্তিকর হতে পারে। সি ++ এর সাথে আপনার খুব দীর্ঘ সংকলন সময় থাকতে পারে (যার অর্থ অবশ্যই স্ট্যাক ওভারফ্লোয়ের জন্য আরও বেশি সময়!)।


কেন এটিকে ভোট দেওয়া হয়েছিল? আমি নিজে সি ++ তে প্রচুর কাজ করি এবং আমি সিতে ফিরে যাই না, তবে এটি অবশ্যই বেদনাদায়ক দীর্ঘ সংকলনের সময় (উদাহরণস্বরূপ টেমপ্লেটগুলির কথা ভাবেন) করতে পারে।
ফ্র্যাঙ্ক

6
আমি আসল কাজের জন্য সি ++ ব্যবহার করি তবে নিকটে-তাত্ক্ষণিক সংকলনের সময়গুলির কারণে আমি সিতে সর্বদা প্রোটোটাইপ করি।
টম

হুম, যখন সঠিক উপায়ে সম্পন্ন করা হয়, যেমন আমাদের প্রয়োজন-তে-প্রস্ফুটিত না হওয়া- এটি অন্তর্ভুক্ত করে এবং নিশ্চিত-নিশ্চিত-না-যা-ঠিক-সঠিক-অন্তর্ভুক্ত রয়েছে-তাই-সমস্ত-# সংকলন সময়গুলি ঝরঝরে অন্তর্ভুক্ত। আমি যখন এক বা তিনটি ফাইল হ্যাক করি তখন আমার 100 কেপিএল প্রকল্পগুলি কম্পাইল করতে আমার কেবল 1-2 সেকেন্ড সময় নেয়।
সেবাস্তিয়ান মাচ

4
@ টম: আমি আশ্চর্য হই যে আপনার আসল কাজটি সি ++ এর মতো দেখাচ্ছে, আপনি যদি সি-তে প্রোটোটাইপ করতে পারেন আপনি কি সি ++ 'সক্ষমতা ব্যবহার করছেন না? তুমি কি বিস্তারিত বলতে পারো?
সেবাস্তিয়ান মাচ

24

আমি আমার প্রকল্পগুলির জন্য সি ++ ব্যবহার করতে ব্যবহৃত হয়েছি। তারপরে আমি এমন একটি চাকরি পেয়েছি যেখানে প্লেইন সি ব্যবহার করা হয় (দু'দফা ডকুমেন্টেশন সহ একটি এভি সফ্টওয়্যারটির 20 বছরের পুরানো বিবর্তিত কোডবেস ...)

সি-তে আমার পছন্দ মতো 3 টি জিনিস হ'ল:

  • কিছুই জড়িত নয়: আপনি দেখুন যে আপনার প্রোগ্রামটি ঠিক কী করে বা না করে। এটি ডিবাগিংকে সহজ করে তোলে।

  • নেমস্পেস এবং ওভারলোডগুলির অভাব একটি সুবিধা হতে পারে: আপনি যদি নির্দিষ্ট ফাংশনটি কোথায় ডাকা হয় তা জানতে চান, সোর্স কোড ডিরেক্টরিটি দিয়ে গ্রেপ করুন এবং এটি আপনাকে জানাবে। অন্য কোনও বিশেষ সরঞ্জামের প্রয়োজন নেই।

  • আমি ফাংশন পয়েন্টারগুলির শক্তি আবার আবিষ্কার করেছি। মূলত তারা আপনাকে সি ++ তে সমস্ত পলিমারফিক জিনিসগুলি করার অনুমতি দেয় তবে তারা আরও নমনীয়।


8
+1 তবে সিতে এই জাতীয় বহুবিধতা সাধারণত অকার্যকর * এর মাধ্যমে পাওয়া যায়, এটি বিপজ্জনক কারণ এটি কোনও খারাপ কাজ করছেন কিনা তা যাচাই করার জন্য সংকলকের যে কোনও ক্ষমতা অক্ষম করে।
gd1

4
@ gd1 বাস্তবে আমি কোনও একটি ঘটনা মনে করতে পারি না যখন এটির void*কারণে সমস্যা হয়েছিল। ভুলগুলি থেকে রক্ষা করার জন্য অনেকগুলি প্রতিরক্ষামূলক প্রোগ্রামিং কৌশল রয়েছে: যেকোন জায়গায় অ্যাসেসর্ট স্থাপন করা, আপনার স্ট্রাকগুলিতে ম্যাজিক সংখ্যা যুক্ত করা (ডিবাগ তৈরিতে) ইত্যাদি But তবে আজকাল আমাদের ভালগ্রাইন্ড, ডা। মেমরি, এবং এমনকি এমএসভিসি কোডগুলি সমস্যা সনাক্ত করতে কোড প্রয়োগ করে, তাই মেমরির দুর্নীতির সমস্যাগুলি বাছাই করা বেশ সহজ।
কলমারিয়াস

4
আমি আমার প্রোগ্রামগুলিতে মেমরি দুর্নীতি প্রায় কখনও অনুভব করি না, তবে সম্ভব হলে প্রোগ্রামটি চালানোর আগে আমি ভুলগুলি সনাক্ত করতে পছন্দ করতাম। কাস্টিং void*করার whatever*কিছু কম্পাইলার সরল বিশ্বাসে গ্রহণ করা হয়। আমি আমার সংস্থাপকটিকে পছন্দ করি যাতে আমার উপর বিশ্বাস না হয় এবং শক্ত ধরণের চেক প্রয়োগ করার সম্ভাবনা থাকে। সি ++ সংকলক দ্বারা জারি করা টেম্পলেট প্রতিস্থাপনের ত্রুটিগুলি পড়ার জন্য কষ্টদায়ক তবে কমপক্ষে আবর্জনা সংকলন করে না।
gd1

1
@ gd1 আপনার প্রথম মন্তব্যে ফিরুন, প্রক্রিয়াজাতীয় কৌশলগুলির সাথে আপনার কতটা অভিজ্ঞতা আছে তা আমি জানি না (আমি দেখতে পাচ্ছি আপনি বেশিরভাগ ওও ট্যাগগুলিতে সক্রিয় আছেন)। void*সাধারণত এড়ানো যায়। কাস্টম আচরণ যুক্ত করার সময় সাধারণ প্যাটার্নটি কোনও ফাংশন পয়েন্টার এবং void*ব্যবহারকারীর ডেটার জন্য পাস করে। একটি জেনেরিক ইন্টারফেস সাধারণত এটির মতো দেখায়। তারপরে void*পাঠাগারটি এটির সাথে আর কিছু না করেই আপনার কলব্যাকে ফিরে যায় passes প্রায়শই আপনার কোনও অতিরিক্ত ডেটা থাকে না, সুতরাং আপনি নাল পাস করেন এবং আপনার কলব্যাকের ব্যবহারকারীর পরামিতি উপেক্ষা করুন। আমি অনুমান করেছি যে আপনি এটি জানেন।
Calmarus

@ কালমারিয়াস "প্রায়শই আপনার কাছে কোনও অতিরিক্ত ডেটা থাকে না" -> এটি পলিমারফিজমের পক্ষে আসলে সুবিধা। অকার্যকর পয়েন্টার ব্যবহার না করে অতিরিক্ত ডেটা বাঁধাই সহজ। সুতরাং, আপনার অজুহাতটি মূলত "আমি সেই বৈশিষ্ট্যটি আর যাইহোক ব্যবহার করি না।"
ব্যবহারকারী 2445507

15

আমি অবাক হয়েছি কারও উল্লিখিত লাইব্রেরি নেই। প্রচুর ভাষা সি লিবের বিরুদ্ধে লিঙ্ক করতে পারে এবং সি ফাংশনগুলিতে কল করতে পারে (সি ++ সহ বহিরাগত "সি" সহ)। সি ++ হ'ল একমাত্র জিনিস যা সি ++ লিবিব ব্যবহার করতে পারে (এটি একটি লিব হিসাবে সংজ্ঞায়িত হয় যা সি ++ তে বৈশিষ্ট্যগুলি ব্যবহার করে যা সিতে নেই [যেমন ওভারলোডেড ফাংশন, ভার্চুয়াল পদ্ধতি, ওভারলোডেড অপারেটর, ...], এবং রফতানি করে না বাহ্যিক "সি" 'এর মাধ্যমে সি সামঞ্জস্যপূর্ণ ইন্টারফেসের মাধ্যমে সমস্ত কিছু)।


1
তেমন নয়; আপনি সি এর সাথে এক্সপোজ করতে আপনার ফাংশনগুলি "সি" বা __cdecl করতে পারেন
ক্র্যাশওয়ার্কস

দুর্দান্ত, তবে অন্যান্য কোন ভাষাগুলির সাথে এটি কাজ করে?
বিগস্যান্ডউইচ

2
একটি সি লিব আরও অনেক জায়গায় কাজ করতে পারে।
বিগস্যান্ডউইচ

1
সি এর সাথে লিঙ্ক করতে পারে এমন
সমস্তগুলি

2
আন্তঃব্যবহারযোগ্যতার সমস্যার সর্বাধিক সুস্পষ্ট কারণ হ'ল নাম-ম্যাংলিং, এবং আমি মনে করি এটি সামনে আনার পক্ষে উপযুক্ত।
টম

15

আপনি যদি চান যে আপনার কোডটি কার্যত কোনও প্রোগ্রামার সি দ্বারা লিখতে পারে understood


12

কারণ তারা সি 99 এর এমন বৈশিষ্ট্যগুলি ব্যবহার করতে চান যাগুলির সি ++ তে সমতুল্য নেই।


তবে, সি -++ এর জন্য দরকারী এমন সি -৯৯ এর মতো এতগুলি বৈশিষ্ট্য নেই যা লোকেরা প্রথম নজরে বলে। পরিবর্তনশীল দৈর্ঘ্যের অ্যারে? সি ++ এর এসটিডি :: ভেক্টর রয়েছে। জটিল / কাল্পনিক সংখ্যার জন্য সমর্থন? সি ++ এর একটি টেম্প্লেটেড জটিল ধরণ রয়েছে। টাইপ জেনেরিক গণিত ফাংশন? সি ++ একই ফলাফলের ফলে স্ট্যান্ডার্ড গণিতের ক্রিয়াকলাপগুলি ওভারলোড হয়েছে।

নাম দেওয়া আদি? সি ++ তে নেই, তবে একটি কার্যকারিতা রয়েছে:

struct My_class_params {
    int i;
    long j;
    std::string name;

    My_class_params& set_i(int ii)
    {
        i = ii;
        return *this;
    }

    My_class_params& set_j(long jj)
    {
        j = jj;
        return *this;
    }


    template <typename STRING>
    My_class_params& set_name(STRING&& n)
    {
        name = std::forward<STRING>(n);
        return *this;
    }

    My_class_params()
    {
        // set defaults
    }
};

class My_class {
    My_class_params params;
  public:
    My_class(const My_class_params& p) : params(p) { }
    ...
};

এটি আপনাকে এই জাতীয় জিনিস লিখতে দেয়:

My_class mc(My_class_params().set_i(5).set_name("Me"));

শুনতে শুনতে! সি ++ তে নামযুক্ত মনোনীত ইনিশিয়ালাইজের অভাব আমাকে প্রতিবার এটি ব্যবহার করার সময় প্রাচীরের দিকে চালিত করে।
প্রশংসিত

2
আমি প্রথম দিকে 100% এর সাথে আছি !!!
বিচারক মেইগার্ডেন

আপনি যদি কোনও ফাংশনের বাইরে কোনও বৈশ্বিক কাঠামো সূচনা করতে চান (যাতে আপনি .set _ * () না পারেন), সি ++ আপনাকে নামবিহীন ইনিডিলাইজার সিনট্যাক্স ব্যবহার করতে, বা আপনার কাঠামোর জন্য কোনও কনস্ট্রাক্টর লিখতে বাধ্য করে। আমি এই বিকল্পগুলির মধ্যে একটিও পছন্দ করি না।
প্রথম

সি 99 (জিসিসি) এ ভিএলএ রয়েছে যা দিয়ে কাজ করা আরও সহজ std:vector
ওয়াহিদ আমিরি

10

কারণ অনেক প্রোগ্রামিং কাজের জন্য সি সহজ, এবং যথেষ্ট ভাল। আমি যখন বিশেষত লাইটওয়েট ইউটিলিটিগুলি প্রোগ্রাম করি, তখন আমি মনে করি যে সি ++ কেবল কোডটি লেখার পরিবর্তে নিজের স্বার্থে একটি মার্জিত সুপার স্ট্রাকচার তৈরি করতে চাই।

OTOH, আরও জটিল প্রকল্পগুলির জন্য, কমনীয়তা আমার কীবোর্ড থেকে স্বাভাবিকভাবে প্রবাহিত হওয়ার চেয়ে আরও ভাল শক্ত কাঠামোগত কঠোরতা সরবরাহ করে।


8

সি ++ এর বেশিরভাগ উল্লেখযোগ্য বৈশিষ্ট্য কোনও না কোনওভাবে ক্লাস বা টেম্পলেটগুলিতে জড়িত। সংকলক যেভাবে অবজেক্ট কোডে রূপান্তর করে সেগুলি বাদে এগুলি দুর্দান্ত বৈশিষ্ট্য। বেশিরভাগ সংকলক নাম ম্যাংলিং ব্যবহার করেন এবং যেগুলি অন্তত অগোছালো হিসাবে কিছু না করে।

যদি আপনার সিস্টেমটি নিজে থেকে বেঁচে থাকে, যেমন অনেক অ্যাপ্লিকেশনগুলির ক্ষেত্রে, তবে সি ++ একটি দুর্দান্ত পছন্দ।

যদি আপনার সিস্টেমে সি ++ তে প্রায়শই লিখিত না থাকা সফ্টওয়্যারটির সাথে যোগাযোগ করা প্রয়োজন (তবে প্রায়শই এসেম্বারার বা ফোর্টরান লাইব্রেরিগুলিতে থাকে) তবে আপনি একটি শক্ত জায়গায় রয়েছেন। এই ধরণের মামলার সাথে ইন্টারঅ্যাক্ট করার জন্য আপনাকে সেই চিহ্নগুলির জন্য নাম ম্যাঙ্গালিং অক্ষম করতে হবে। এটি সাধারণত objects অবজেক্টগুলি ঘোষণা করেই করা হয় extern "C", তবে তারপরে সেগুলি টেমপ্লেট, অতিরিক্ত লোড ফাংশন বা ক্লাস হতে পারে না। যদি সেগুলি আপনার অ্যাপ্লিকেশন এপিআই হওয়ার সম্ভাবনা থাকে তবে আপনাকে সেগুলি সহায়ক ফাংশনগুলিতে আবৃত করতে হবে এবং সেই ফাংশনগুলি প্রকৃত বাস্তবায়নের সাথে সুসংগত করে রাখতে হবে।

এবং বাস্তবে, সি ++ ভাষা এমন বৈশিষ্ট্যগুলির জন্য একটি মানক সিনট্যাক্স সরবরাহ করে যা খাঁটি সিতে সহজেই প্রয়োগ করা যায় for

সংক্ষেপে, বেশিরভাগ লোকদের ন্যায়সঙ্গত করতে আন্তঃব্যযোগযোগ্য সি ++ এর ওভারহেড খুব বেশি।


3
আমি এটি শুনে খুব অবাক হয়েছি কারণ আমি অনেকগুলি লিখেছি C অবশ্যই আপনি কেবল সদস্য ফাংশন পয়েন্টারগুলি প্রকাশ করতে পারবেন না, তবে __cdecl কলিংয়ের জন্য মার্শাল ডেটা এটি খুব বেশি সমস্যায় নেই।
ক্র্যাশ ওয়ার্কস

1
আসলে, আপনি টেম্প্লেটেড কোড এক্সপোর্ট করতে পারেন। এটির নামের সংঘাতগুলি এড়াতে আপনি যে প্রতিটি ধরণের ব্যবহার করতে চান তার জন্য কেবলমাত্র অ-টেম্প্লেটেড ফাংশন র‌্যাপারগুলির প্রয়োজন।
বিচারক মেগার্ডেন

8

এটি বেশ অগভীর তবে একজন ব্যস্ত শিক্ষার্থী হিসাবে আমি সি বেছে নিলাম কারণ আমি ভেবেছিলাম সি ++ শিখতে খুব বেশি সময় লাগবে। আমার বিশ্ববিদ্যালয়ের অনেক অধ্যাপক পাইথনে অ্যাসাইনমেন্ট গ্রহণ করবেন না এবং আমাকে দ্রুত কিছু বাছাই করতে হবে।


8
আপনার শিক্ষকদের জ্ঞানী!
আন্দ্রে সিওবানু

6

"আপনি যে সি ++ ব্যবহার করতে চান তার সাবসেটটি ব্যবহার করুন" সম্পর্কে একটি মন্তব্য: এই ধারণার সাথে সমস্যাটি হ'ল প্রকল্পটির প্রত্যেকে একই উপসেটটি ব্যবহার করে এমনটি প্রয়োগ করার জন্য এটির ব্যয় হয়। আমার নিজের মতামতটি হ'ল আলগাভাবে মিলিত প্রকল্পগুলির জন্য (যেমন ওপেন সোর্সগুলি) খুব বেশি, এবং সি ++ আরও ভাল সি হওয়ার ক্ষেত্রে সম্পূর্ণ ব্যর্থ হয়েছিল, এই অর্থে যে আপনি যেখানে সি ব্যবহার করেছেন সেখানে সি ++ ব্যবহার করতে পারবেন না in


6

ওহ আমার, সি বনাম সি ++, শিখা যুদ্ধ শুরু করার দুর্দান্ত উপায়। :)

আমি মনে করি ড্রাইভার এবং এমবেডেড কোডের জন্য সি ভাল।

সি ++ এর কয়েকটি দুর্দান্ত বৈশিষ্ট্য রয়েছে যা সিতে নেই, তবে লোকেরা পর্দার আড়ালে প্রকাশিত অ-স্পষ্টত পার্শ্ব-প্রতিক্রিয়াগুলির সাথে কোড লিখলে সি ++ এর অনেকগুলি অবজেক্ট ওরিয়েন্টেড বৈশিষ্ট্যগুলি স্মারকীয় কোডিং মেসস তৈরি করতে পারে। ক্রেজি কোডটি কন্সট্রাক্টর, ডেস্ট্রাক্টর, ভার্চুয়াল ফাংশনগুলিতে লুকানো যেতে পারে ... সি কোডের সৌন্দর্যটি হ'ল ভাষাটি আপনার পিঠের পিছনে কিছু পরিষ্কার নয়, সুতরাং আপনি কোডটি পড়তে পারেন এবং প্রতিটি কনস্ট্রাক্টর এবং ডেস্ট্রাক্টরের দিকে তাকাতে হবে না C ইত্যাদি। বেশিরভাগ সমস্যা হ'ল কিছু লোকের কোডিং কোডিং অনুশীলন।

আমার নিখুঁত ভাষাটি C99 এর সাথে আরও নিরাপদ সি ++ ক্ষমতাগুলির একটি সর্বনিম্ন উপসেটের সংমিশ্রণ হবে যা বাইনারি আউটপুটে জিরো (বা শূন্যের নিকটে) সংকলক ওভারহেড যুক্ত করে। নিখুঁত সংযোজনগুলি ক্লাস এনক্যাপসুলেশন এবং ডেটা এবং ফাংশনগুলির নামকরণের ধারণাগুলি হবে।


এর নাম দিন সি + বা সি 100: _)
এম

4

আপনি কেন সি ++ এর চেয়ে বেশি সি বেছে নিতে চান সে বিষয়ে আমি খুব বেশি প্রমাণ খুঁজে পাইনি।

আমি যা বলতে চাইছি তার পক্ষে আপনি খুব কমই কল করতে পারবেন; এটা আমার মতামত।

সি সি পছন্দ করেন কারণ এটি প্রগ্রামারের মনের ভিতরে সুন্দরভাবে ফিট করে।

সি ++ এর অনেকগুলি জটিল নিয়ম রয়েছে [কখন আপনার ভার্চুয়াল ডেস্ট্রাক্টরগুলির দরকার হয়, আপনি যখন কোনও কনস্ট্রাক্টরে ভার্চুয়াল পদ্ধতিগুলি কল করতে পারেন, কীভাবে ওভারলোডিং এবং ওভাররাইডিং ইন্টারঅ্যাক্ট করে, ...] এবং এগুলি আয়ত্ত করতে অনেক প্রচেষ্টা প্রয়োজন। এছাড়াও, রেফারেন্স, অপারেটর ওভারলোডিং এবং ফাংশন ওভারলোডিংয়ের মধ্যে একটি কোডের টুকরো বোঝার জন্য আপনাকে অন্য কোডগুলি বোঝার প্রয়োজন হতে পারে যা খুঁজে পাওয়া খুব সহজ বা নাও হতে পারে।

সংস্থাগুলি কেন সি ++ এর চেয়ে বেশি সি পছন্দ করবে তার একটি আলাদা প্রশ্ন। আমি জানি না, আমি কেবল একটি মানুষ ;-)

সি ++ এর প্রতিরক্ষাতে, এটি টেবিলে মূল্যবান বৈশিষ্ট্যগুলি নিয়ে আসে; আমি যেটিকে সবচেয়ে বেশি গুরুত্ব দিচ্ছি তা হ'ল প্যারামেট্রিক ('ইশ) পলিমারফিজম, যদিও: ক্রিয়াকলাপ এবং প্রকার যা এক বা একাধিক ধরণের যুক্তি হিসাবে গ্রহণ করে।


2
++score: আপনার বক্তব্য "সি এর মতো লোকেরা কারণ এটি প্রোগ্রামারের মনের ভিতরে ভাল ফিট করে" খুব সুন্দরভাবে বিবৃত একটি বক্তব্য is একটি সাধারণ ভাষায় প্রোগ্রাম করতে সক্ষম হওয়া যেখানে আপনি জানেন যে আপনি যা দেখছেন তা হ'ল একটি প্রোগ্রামিং ভাষার জন্য সত্যই আকর্ষণীয় সম্পত্তি।
tchrist

3

আমি বলব যে সি আপনাকে সি ++ এর চেয়ে অপ্টিমাইজেশন এবং দক্ষতার উপর আরও ভাল নিয়ন্ত্রণ দেয় এবং তাই মেমরি এবং অন্যান্য সংস্থানগুলি সীমিত এবং প্রতিটি অপ্টিমাইজেশন সহায়তা করে এমন পরিস্থিতিতে কার্যকর হবে। এটি অবশ্যই একটি ছোট পদচিহ্ন আছে।


আপনি কি এর উদাহরণ দিতে পারেন?
অ্যান্ড্রু গ্রান্ট

সুতরাং সি সি সংকলক ব্যবহার করে সংকলিত একই সি কোডটি আরও কার্যকর হবে যে যদি সি ++ সংকলক ব্যবহার করে সংকলন করা হয়?
স্টিভ কুও

1
কয়েক বছর আগে লিনাক্স কার্নেলটি জিসিসি বা জি ++ দিয়ে সংকলন করা যেত , তবে g ++ " ধীরে ধীরে লিনাস বিকাশ কার্নেলটি বজায় রাখার সময় ..." এর অধীনে স্লো কোড ( tux.org/lkML/#s15-3 ) তৈরি করেছে।
সর্বোচ্চ Lybbert

আমি মনে করি যে আপনার কোডটি সি ++ এর মাধ্যমে কীভাবে অনুকূলিত করা যায় সে সম্পর্কে আরও নিয়ন্ত্রণ করতে সক্ষম হবার প্রান্তে আমি আরও চিন্তাভাবনা করছি। অনেকটা যেমন প্রোগ্রামার ভাষা ব্যবহার করে এমন একজন প্রোগ্রামার উচ্চতর স্তরের ভাষা ব্যবহারের চেয়ে তার কোডটি টিউনটি আরও সুরক্ষিত করতে পারেন।
ক্রিস 19

2

কিছু দোকানগুলি সি -+ এর মতো কয়েকটি সি ++ এর বৈশিষ্ট্যগুলি ব্যবহার করার ক্ষেত্রে এমন পদ্ধতিরও রয়েছে, তবে আপত্তিজনক বিষয়গুলি এড়িয়ে চলে। উদাহরণস্বরূপ, ক্লাস এবং ক্লাসের পদ্ধতিগুলি এবং ফাংশন ওভারলোডিং (যা সাধারণত সি ডাইয়ার্ডসের পক্ষে সহজেই মোকাবেলা করা সহজ) ব্যবহার করা, তবে এসটিএল, স্ট্রিম অপারেটর এবং বুস্ট নয় (যা শেখার পক্ষে শক্ত এবং স্মৃতিশক্তির খারাপ বৈশিষ্ট্য থাকতে পারে)।


1

কারণ আপনি এমন একটি সিস্টেমে লিখছেন যেখানে সংস্থানগুলি শক্ত (যেমন একটি এমবেডেড সিস্টেম, বা কার্নেলের মতো কিছু প্রকৃত খালি ধাতব কোড) এবং আপনি যতটা সম্ভব ওভারহেড চান want

বেশিরভাগ এম্বেড থাকা সিস্টেমে সি ++ সংকলক না থাকার একটি কারণ রয়েছে - এটি এমন নয় যে লোকেরা একটি চায় না, এটি সেই ছোট্ট একটি জায়গার মধ্যে সি ++ কোড ক্র্যামিং করা এমন কাজ যা অসম্ভবের কাছে পৌঁছায়।


3
ভাষা হিসাবে নিজেই সি ++ এর সমস্যা এত বেশি নয়, তবে টেমপ্লেটগুলির নির্বিচারে ব্যবহারের কারণ হতে পারে এমন প্যাথলজিকাল ফোলা।
ক্র্যাশ ওয়ার্কস

1
বাস্তু মূলত সি ++ তে লেখা হয়। ভাষা (সি এর তুলনায়) এবং এক্সিকিউটেবল আকারের মধ্যে কোনও সম্পর্ক নেই (যতক্ষণ আপনি জানেন কী কী বৈশিষ্ট্যগুলি ব্যবহার করতে হবে)।
ব্যবহারকারী52875

1
"যতক্ষণ আপনি জানেন কী কী বৈশিষ্ট্যগুলি ব্যবহার করবেন"। এটাই মূল কথা - "ভাল, আমাদের সি ++ আছে বলার ফলাফল, তবে আমরা ওভারহেড কারণে অর্ধেক ভাষা বৈশিষ্ট্য সমর্থন করতে পারি না" হ'ল সিম্বিয়ান / সি ++, যা সি প্রোগ্রামার এবং সি ++ প্রোগ্রামার উভয়কেই বিভ্রান্ত করে এবং ক্রোধ করে ...
স্টিভ জেসোপ

1
সকল পয়েন্টে একমত "কী কী বৈশিষ্ট্যগুলি ব্যবহার করতে হবে" সে সম্পর্কে আমাদের সমাধানটি হ'ল কেবল একটি সি সংকলক ব্যবহার করে একটি দিন কল করা। অবশ্যই, আমরা সি ++ কাজ করতে পারতাম, (যা একটি সুপার-নর্দার ধরণের উপায়ে সত্যই মজাদার হত) তবে শিপ করার জন্য আমাদের একটি পণ্য ছিল এবং এটি নিয়ে উদ্বিগ্ন হওয়ার মতো সময় আমাদের হাতে ছিল না।
ইলেক্ট্রন_আহয়

1

সি এর যা দরকার তা ছিল আরও ভাল প্রিপ্রোসেসর। সিফ্রন্ট ছিল এক এবং এইভাবে সি ++ জন্মগ্রহণ করে

আমি সি ব্যবহার করব, যেখানে 'সি ++ প্রিপ্রসেসর হিসাবে' ঠিক হবে না।

আমি বেশ নিশ্চিত, যে কোনও লিখিত সি ++ গ্রন্থাগার / ফ্রেমওয়ার্ক / সরঞ্জামকিটের নীচে আপনি নোংরা-পুরাতন সি (বা স্থির ক্যাসেটগুলি দেখতে পাবেন যা একই)


0
  • কয়েক বছর আগে অবধি বিদ্যমান সি ++ সংকলকগুলির মধ্যে গুরুত্বপূর্ণ বৈশিষ্ট্যগুলি ছিল না, বা সমর্থনটি কম ছিল এবং সমর্থিত বৈশিষ্ট্যগুলি তাদের মধ্যে বন্যভাবে পরিবর্তিত হয়, এবং তাই পোর্টেবল অ্যাপ্লিকেশনগুলি লেখা শক্ত ছিল to
  • প্রতীকগুলির কোনও মানক নামকরণের কারণে অন্যান্য ভাষা / অ্যাপ্লিকেশনগুলির পক্ষে সরাসরি সি ++ ক্লাস সমর্থন করা কঠিন।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.