সি ভাষার তুলনায় সি ++ সীমাবদ্ধতা কী হবে? [বন্ধ]


116

নীচে সি ++ এর সুবিধা রয়েছে

  • সি ++ নির্দিষ্ট বৈশিষ্ট্যগুলি সরবরাহ করে যা তারা জিজ্ঞাসা করছে
  • তাদের সি সংকলক প্রায় অবশ্যই একটি সি ++ সংকলক, তাই কোনও সফ্টওয়্যার ব্যয় জড়িত নেই
  • সি ++ সি এর মতো বহনযোগ্য
  • সি ++ কোড সি এর মতো দক্ষ হতে পারে (বা আরও বেশি, বা কম)

কোনও দৃ concrete় কারণ এবং নির্দিষ্ট পরিস্থিতি রয়েছে, যেখানে কাউকে সি ++ এর উপরে সি ব্যবহার করতে হয়?

এই প্রশ্নের উল্লেখ: সি জেনারিকগুলির জন্য লাইব্রেরি

সদৃশ নয়, কারণ এই প্রশ্নটি ভাষার সীমাবদ্ধতা সম্পর্কে জিজ্ঞাসা করছে এবং অন্য ভাষাতে একটি ভাষা শেখা উচিত নয়।

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


12
এই প্রশ্নটি বিতর্কিত হওয়ার উদ্দেশ্যে করা হয়েছে কিনা তা বিবেচ্য নয়, এটি এখনও রয়েছে। কোনও প্রকল্পের জন্য ভাষার পছন্দটি হ'ল: পছন্দ।
বোম্বে

7
@ বোম্বে কীভাবে আমাদের জানানো পছন্দ করা যায় তা নিয়ে আলোচনা করার কথা নয়?



10
আপনি যখন সি প্রোগ্রামারদের সি ++ এ চলে যাওয়ার পরামর্শ দিচ্ছেন তখন কি বিদ্রূপ নয় যে আপনি যেমন হবেন, যদি কোনও সি প্রোগ্রামার আপনাকে বলে যে আপনি সি ++ খনন করে সিটিতে চলে যাবেন?
ওয়ারেন পি

উত্তর:


136

এটি একটি জবাব দিয়েছি যা আমি একটি বর্তমান প্রশ্নের উত্তর দিয়েছি যা সি এর জন্য জেনেরিকস লাইব্রেরি সম্পর্কে জিজ্ঞাসা করে - প্রশ্নকারী নির্দিষ্টভাবে বলে যে তারা সি ++ ব্যবহার করতে চায় না।

সি একটি সম্পূর্ণ প্রোগ্রামিং ভাষা। সি সি ++ এর একটি স্বেচ্ছাসেবী সাবসেট নয়। সি মোটেও সি ++ এর উপসেট নয়।

এটি বৈধ সি:

foo_t* foo = malloc ( sizeof(foo_t) );

এটি সি ++ হিসাবে সংকলন করতে আপনাকে লিখতে হবে:

foo_t* foo = static_cast<foo_t*>( malloc ( sizeof(foo_t) ) );

যা আর সি বৈধ নয়। (আপনি সি-স্টাইলের castালাই ব্যবহার করতে পারেন, এটি সি-তে সংকলন করবে তবে বেশিরভাগ সি ++ কোডিং মান এবং অনেক সি প্রোগ্রামার দ্বারা এড়িয়ে চলা হবে; পুরো স্ট্যাক ওভারফ্লোতে "কাস্ট ম্যালোক কাস্ট করবেন না" দেখুন) ।


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

আমি যে প্রকল্পে কাজ করছি তাতে প্রথম সি ফাইল নেওয়া, আপনি যদি কেবলমাত্র এটির gcc std=c99জন্য পরিবর্তন করেন তবে এটি ঘটে g++:

sandiego:$ g++ -g  -O1 -pedantic -mfpmath=sse -DUSE_SSE2 -DUSE_XMM3  -I src/core -L /usr/lib -DARCH=elf64 -D_BSD_SOURCE -DPOSIX -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112L -Wall -Wextra -Wwrite-strings -Wredundant-decls -Werror -Isrc  src/core/kin_object.c -c -o obj/kin_object.o | wc -l
In file included from src/core/kin_object.c:22:
src/core/kin_object.h:791:28: error: anonymous variadic macros were introduced in C99
In file included from src/core/kin_object.c:26:
src/core/kin_log.h:42:42: error: anonymous variadic macros were introduced in C99
src/core/kin_log.h:94:29: error: anonymous variadic macros were introduced in C99
...
cc1plus: warnings being treated as errors
src/core/kin_object.c:101: error: ISO C++ does not support the z printf length modifier
..
src/core/kin_object.c:160: error: invalid conversion from void*’ to kin_object_t*’
..
src/core/kin_object.c:227: error: unused parameter restrict
..
src/core/kin_object.c:271: error: ISO C++ does not support the z printf length modifier
src/core/kin_object.c:271: error: ISO C++ does not support the z printf length modifier

ত্রুটিগুলির মোট 69 লাইনগুলিতে, এর মধ্যে চারটি অবৈধ রূপান্তর, তবে বেশিরভাগ বৈশিষ্ট্যগুলির জন্য যা C99 তে বিদ্যমান তবে সি ++ তে নেই।

এটি এমন নয় যে আমি এই বৈশিষ্ট্যগুলি মজাদার জন্য ব্যবহার করছি। এটি অন্য ভাষায় পোর্ট করতে গুরুত্বপূর্ণ কাজ লাগবে।

সুতরাং এটি প্রস্তাব দেওয়া সহজ ভুল

[একটি] সি সংকলক প্রায় অবশ্যই সত্যই একটি সি ++ সংকলক, তাই কোনও সফ্টওয়্যার ব্যয় জড়িত নেই

সি সি ++ এর পদ্ধতিগত উপসেটটিতে বিদ্যমান সি কোডটি পোর্ট করার ক্ষেত্রে প্রায়শই উল্লেখযোগ্য ব্যয় জড়িত থাকে।

সুতরাং সিতে একটি লাইনের লাইব্রেরি প্রয়োগের সন্ধানের প্রশ্নের উত্তর হিসাবে 'সি ++ এসটিডি :: কিউ ক্লাস ব্যবহার' করার পরামর্শ দেওয়ার পরে 'উদ্দেশ্য সি ব্যবহার করুন' এবং 'জাভা জাভা.ইটিল.কুইউ ক্লাসটি জেএনআই ব্যবহার করে ' কল করার পরামর্শ দেওয়া হবে না d বা 'সিপিথন লাইব্রেরি কল করুন' - উদ্দেশ্য সি আসলে সি এর যথাযথ সুপারসেট (সি 99 সহ), এবং জাভা এবং সিপাইথন লাইব্রেরি উভয়ই সি ++ ভাষার সাথে সম্পর্কযুক্ত কোড পোর্ট না করেই সি থেকে সরাসরি কলযোগ্য।

অবশ্যই আপনি সি ++ লাইব্রেরিতে একটি সি ফ্যাড সরবরাহ করতে পারেন, তবে একবার আপনি এটি করেন যে সি ++ জাভা বা পাইথনের থেকে আলাদা নয়।


21
হ্যাঁ. সি-স্টাইলের castালাই যখন আপনি ম্যালোক ব্যবহার করেন তখন বেশ স্বাভাবিক। ম্যালোক ব্যবহার করার সময় আপনি এটি সি উপসেটের মধ্যেই থাকবেন না। আপনি যদি সি ++ স্টাইল প্রোগ্রাম করতে চান তবে আপনি স্ট্যাটিক_কাস্ট + ম্যালোক নয়, অপারেটরটি নতুন ব্যবহার করবেন।
সুমা

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

27
আপনার ম্যালোক উদাহরণটি যতদূর যায়, একটি কাস্ট যোগ করা কেবল সি ++ প্রোগ্রামারদের দ্বারা বাদ দেওয়া হবে না, তবে (বিশেষত) সি প্রোগ্রামারদের দ্বারাও বাদ দেওয়া হবে। সি কোডে castালাই ছেড়ে দেওয়ার ভাল কারণ রয়েছে। এটি প্রয়োজনীয় নয় এবং এটি যুক্ত করা ত্রুটিগুলি গোপন করতে পারে। হ্যাঁ, তাদের দুটি স্বতন্ত্র ভাষা হিসাবে বিবেচনা করুন। +1 :)
জাল্ফ

26
@ ব্লুরাজা কল্পনা করুন যে যদি গিডো তার স্ক্রিপ্টিং ভাষায় অবজেক্ট যোগ না করার সিদ্ধান্ত নিয়েছে এবং দুটি গ্রুপ পাইথনের পারস্পরিক বেমানান কাঁটাচামচ তৈরি করেছে বস্তু যুক্ত করার জন্য, একটি ছোট্টলকের ভিত্তিতে একটি বস্তুর মডেল, অন্যটি সিমুলা ভিত্তিক একটি শ্রেণিবদ্ধ ব্যবস্থা সহ with তারপরে গাইডো পাইথনটির মূল ব্যবহারের দিকে নজর রেখে উন্নতি অবিরত করে। এটি সি / অবজেক্টিভ সি / সি ++ পরিস্থিতির কাছাকাছি।
পিট কির্খাম

11
@ ব্লুরাজা: এগুলি দুটি স্বতন্ত্র ভাষা যা মোটামুটি একটি সাধারণ সাধারণ অংশ share আপনি যদি সেই সাধারণ কোরটিতে প্রোগ্রাম করেন তবে আপনি এমন কাজগুলি শেষ করতে যাবেন যে কোনও ভাষায়ই ভাল কোড নয়। কোনও প্রদত্ত প্রোগ্রাম লিখতে একটি ভাষা বেছে নিন এবং সেই ভাষায় এটি ভাল করুন।
ডেভিড থর্নলে

115

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

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

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


24
আমি বেশ কয়েক বছর ধরে সি ++ ব্যবহার করেছি এবং এখনও আমার সময়টির রিফ্যাক্টরিং কোডের 50% "সি ++ সঠিক" হিসাবে ব্যয় করেছি। এটি একটি দুঃস্বপ্ন, যেমনটি আপনি বলেছেন।
কাই

12
আপনি সর্বদা ঠিক প্রথমবার এটি করতে পারেন। কনস্ট যোগ করা কঠিন নয়।
GManNickG

14
আমি দশ বছরের জন্য সি ++ ব্যবহার করেছি এবং সিতে ফিরে যাওয়া (আমার ক্ষেত্রে এম্বেড হওয়া সিস্টেমগুলির জন্য) আমার সেরা কাজ ছিল।
ওয়ারেন পি

আমি এই উত্তর ভালবাসি। আপনি আমার অনুভূতিও পেরেছেন। আমি সি ++ দেব হিসাবে কয়েক বছর কাজ করেছি, আমার দিনের কাজটি এখনও সি ++ is তবে এর অর্থ এই নয় যে আমি ভাষাটি পছন্দ করি, আমি
সিতে

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

58

নিম্ন-স্তরের এম্বেড থাকা সিস্টেমের মতো কয়েকটি বাস্তব-বিশ্বের পরিবেশে কেবল সি ++ সমর্থিত নয়। এবং এর একটি ভাল কারণ রয়েছে: সি সহজে এই জাতীয় জিনিসগুলির জন্য যথেষ্ট ভাল, তবে কেন আরও বড় কিছু ব্যবহার করবেন?


2
ঠিক। আমি 8 বিট মাইক্রো কন্ট্রোলারের জন্য সি সংকলক দেখেছি।
ডিএমকেকে --- প্রাক্তন-মডারেটর বিড়ালছানা

6
অবশ্যই. বেশিরভাগ যদি না হয় 8 বিট চিপগুলির এই দিনগুলিতে সি সংকলক রয়েছে have
এলি বেন্ডারস্কি

gbdk.sourceforge.net - এক জন্য GBDK ..
Kelden কাওয়ান

+1 এটি সঠিক উত্তর। সি ++ সংকলকগুলি সি সংকলকগুলির চেয়ে অনেক বেশি শক্ত লেখা, মূলত (একাধিক) উত্তরাধিকারের জটিলতার কারণে।
ব্লুরাজা - ড্যানি পিফ্লুঘুফুট

9
@ ব্লুরাজা: টেমপ্লেটগুলির সাথে তুলনা করুন ... একাধিক-উত্তরাধিকার এখানে আসল প্রতিরোধক নাও হতে পারে। সমস্ত টেমপ্লেটগুলি তাদের নিজস্ব একটি পূর্ণাঙ্গ ভাষা তৈরি করে।
ম্যাথিউ এম।

49

আমি সি ++ এ প্রোগ্রামিং ঘৃণা করি।


6
লল আমি
সেটিকে

30
খুব বিশ্বাসী! আমি আপনার যুক্তির ভিত্তিতে পাইথনে স্যুইচ করার কথা ভাবছি।
জিমি জে

8
সম্ভবত বিশ্বাসযোগ্য নয়, তবে এটিই আসল কারণ।
জর্জি স্কলি

@ জিমি জে: পাইথন অবিশ্বাস্য। এটি ইউনিক্স, সি এর সেরা এবং আপনার সমস্ত "আধুনিক" ভাষার বৈশিষ্ট্য সঠিকভাবে সম্পন্ন হয়েছে। যদি আপনার পারফরম্যান্সে সমস্যা হয় তবে পাইথন আপনাকে সিতে নেমে যেতে চায় এবং এটি সহজেই করে।
ম্যাট জয়েনার

2
@ জর্জি: আমি স্বীকার করব যে আমি কখনই এক নজর দেখিনি, আমি পাইথনের প্রতি খুব মুগ্ধ হয়েছি।
ম্যাট জয়েনার

38

কয়েকটি কারণ হতে পারে:

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

আমি যখনই এটি থেকে দূরে সরে যেতে পারি তখনি আমি সি ++ এ লেখার বিষয়টি পছন্দ করি এবং সামগ্রিকভাবে, আমি মনে করি সুবিধার অসুবিধাগুলি ছাড়িয়ে যায়। তবে কিছু ক্ষেত্রে সি ব্যবহারের যুক্তিও দেখতে পাচ্ছি।


4
আমি যুক্ত করব যে সি কোডটি সি ++ এর চেয়ে অনেক দ্রুত সংকলন করে। আমাদের সংস্থায় একটি বিশাল প্রকল্প (এক মিলিয়নেরও বেশি লাইন) 30 সেকেন্ডের চেয়ে কম সংকলন করে।
কলমারিয়াস

31

এম্বেড থাকা প্রোগ্রামিং, পারফরম্যান্স এবং স্টাফ নিয়ে প্রচুর যুক্তি রয়েছে, আমি সেগুলি কিনে না। সি ++ সহজেই সেগুলিতে সি এর সাথে তুলনা করে। যাহোক:

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

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

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


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

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

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

2
সি ++ এ কোডিংয়ে সহায়তা করার পরে আমি একটি পদক্ষেপ ফিরে পেয়েছি। লক্ষ্যটি স্থির করুন এবং তার দিকে লিখুন (সি স্টাইল)। সি ++ এসএমএসের কারখানাগুলি তাদের কার্যকারিতা স্পষ্ট হওয়ার সাথে সাথে।
ম্যাট জয়েনার

2
infinite gunfireওহ হ্যাঁ, তাই সত্য। আমাদের পা আক্ষরিকভাবে
কাঁপুন

27

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

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

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

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

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

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

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

জীবন সংক্ষিপ্ত...


2
+1, আরও একমত হতে পারে না।
মিসিংফ্যাক্টর

2
এটি লিনাসের যুক্তির সাথে উল্লেখযোগ্যভাবে সমান্তরাল বলে মনে হচ্ছে। (কোনও অবজেক্টের প্রসঙ্গের কম = বোঝা সহজ))
ওয়ারেন পি

20

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

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

সি ++ এর একটি ভয়ঙ্কর নকশা অসীমভাবে খারাপ কারণ অ্যাবস্ট্রাকশনের এলোমেলো স্তরগুলি আপনার মস্তিষ্ককে কোডবেসের চারপাশে যত্নশীল করে কোনও কোডটি কোন অবস্থায় কার্যকর করা হবে তা নির্ধারণ করার চেষ্টা করে send

আমি যদি জানি এমন প্রকৌশলীদের সাথে যদি কাজ করতে হয় তবে তারা দুর্দান্ত ডিজাইন তৈরি করতে পারবে না, তবে আমি আগেরটির চেয়ে আগেরটি চাই have


আমেন ভাই। হার্ডওয়্যার ইঞ্জিনিয়ারদের দ্বারা উত্পাদিত সি উত্সের সাথে কাজ করে আমি যদি তারা সি ++ এ কাজ করে থাকি তবে আমি কীসের মুখোমুখি হব তা ভেবে কাঁপতে লাগলাম।
রিচার্ড চেম্বারস

19

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

  • ক্লাস এবং সদস্য ফাংশনগুলির সাধারণ ফাংশনগুলির তুলনায় শূন্য ওভারহেড থাকে (যদি আপনি ভার্চুয়াল ফাংশন ব্যবহার না করেন তবে ফাংশন পয়েন্টার ব্যবহারের তুলনায় কোনও ওভারহেড নেই)
  • টেমপ্লেটগুলির খুব কম ওভারহেড থাকে (প্রায়শই প্রায়শই ওভারহেড থাকে না)

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


3
ভার্চুয়াল ফাংশন সহ একটি শ্রেণীর আরও ওভারহেড থাকে: প্রতিটি উদাহরণটি টাইপ সনাক্ত করতে অতিরিক্ত ক্ষেত্রের চারপাশে বহন করতে হয়।
bstpierre

6
এর চেয়ে বেশি ওভারহেড কী? টাইপটি ভিটিবিএল বহন করে। আপনি যদি ফাংশন পয়েন্টার ব্যবহার করে অনুরূপ প্রক্রিয়াটি প্রয়োগ করেন তবে আপনার ব্যবহৃত ফাংশন পয়েন্টারটি নির্বাচন করতে আপনার কমপক্ষে একটি পয়েন্টার (বা সূচক, বা যা কিছু) প্রয়োজন whatever
সুমা

3
বিএসপিপিয়ার: আমার মনে হয় সুমা যা বলছে তা হ'ল: নিজে
সিটিতে

2
ক্লাসের প্রতিটি ইনস্ট্যান্টে vtable ক্লাসগুলির একটি পয়েন্টার সংরক্ষণ করা হয়।
tstenner

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

13

ইংরেজিতে কথা বলার সীমা কেন? সম্ভবত আপনি সার্বীয় ভাষায় আরও সৃজনশীল লেখক হবেন।

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


3
আমি যদি সাবলীল ইংরেজি এবং সাবলীল সার্বিয়ান উভয় ভাষায় কথা বলতে পারি তবে আমি নিশ্চিত যে আমি আরও সৃজনশীল হব। আপনি একমত না?

2
@ নিল সত্যই, তবে সার্বিয়ান ভাষা শেখার জন্য প্রয়োজনীয় প্রচেষ্টাটি আমার বর্তমান সৃজনশীলতা ব্লক সমাধান করার পক্ষে যুক্তিযুক্ত হতে পারে না।
পাতলা

2
আমার মনে হয় আরনো এই সত্যটি হাইলাইট করছে যে আপনি সিপিইউয়ের জন্য লিখছেন না, আপনি আপনার সহকর্মীদের পড়ার জন্য এবং আপনার অন্যান্য লাইব্রেরিগুলিকে লিঙ্ক করার জন্য লিখছেন, ইত্যাদি। সর্বোপরি, আমি যদি কেবল প্রকাশ এবং গতির জন্য যাই তবে আমি ওসিএএমএল-এ লিখতাম write
কেন

10

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

কোনও পেশাদার প্রকল্পের জন্য এই যুক্তিটি গণনা করা হতে পারে না, কারণ আপনি এমন লোকদের নিয়োগ করতে পারেন যারা ইতিমধ্যে C ++ খুব ভাল জানেন know কিন্তু ওপেন সোর্স প্রকল্পগুলিতে, যেখানে সি এখনও বিধিবদ্ধ ব্যবহৃত হয়, লোকেরা তাদের পছন্দ মতো ভাষা বেছে নেয় এবং তারা ব্যবহার করতে সক্ষম হয়। বিবেচনা করুন যে প্রতিটি ওএস-প্রোগ্রামার পেশাদার প্রোগ্রামার নয়।


1
আর্ম ... না? আপনি সি বেসটি শিখবেন (সম্ভবত অ্যারে এবং সি-স্টাইলের স্ট্রিং হ্যান্ডলিং << ভেক্টর> এবং <স্ট্রিং> এর পক্ষে বাদ দেওয়া) বাদ দিয়ে আপনি এগিয়ে যাচ্ছেন। আপনি পাশাপাশি যাওয়ার সাথে সাথে সমস্ত কিছু বাছাই করতে পারেন। সি ++ দিয়ে শুরু করার জন্য আপনাকে ওও, জিপি, বা ব্যতিক্রমগুলি সম্পর্কে কিছু জানতে হবে না ...
দেবসোলার

4
সি "ছোট" হতে পারে তবে দীর্ঘমেয়াদে এটি ব্যবহার করা সহজ নয়। ম্যানুয়াল মেমোরি পরিচালনা? না ধন্যবাদ.
জিমি জে

7
সি ++ তে স্বয়ংক্রিয় মেমরি পরিচালনার মতো কিছুই নেই।
ওয়ারেন পি

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

1
@ অরেওন: এটি সত্য, 3 বছর আগে আমি যেভাবে লিখেছিলাম তা এখন আর ধারণ করে না। :)
ম্যাট জয়েনার

10

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

  1. কোডিং মানগুলি কঠোরভাবে প্রয়োগ করা কঠিন
  2. একটি ভাল সঙ্গে আসা খুব কঠিন হতে পারে।

আমি মনে করি যে এখানে দ্বিতীয় কারণ প্রথমটির চেয়ে অনেক বেশি গুরুত্বপূর্ণ, কারণ একটি কোডিং স্ট্যান্ডার্ডের সিদ্ধান্ত নেওয়া সহজেই একটি রাজনৈতিক বিষয় হয়ে উঠতে পারে এবং পরবর্তী সময়ে এটি সংশোধনের বিষয় হতে পারে subject নিম্নলিখিত সরলীকৃত ক্ষেত্রে বিবেচনা করুন:

  1. আপনাকে স্টাইলের পাত্রে ব্যবহার করার অনুমতি দেওয়া হয়েছে তবে নিজের কোনও কোডে টেমপ্লেট ব্যবহার করার জন্য নয়।
  2. লোকেরা অভিযোগ শুরু করে যে তারা কেবল এই বা সেই টেম্পলেট শ্রেণীর কোড দেওয়ার অনুমতি দিলে তারা আরও বেশি উত্পাদনশীল হবে।
  3. কোডিং মানটি এটির জন্য সংশোধিত হয়েছে।
  4. একটি অত্যধিক জটিল কোডিং স্ট্যান্ডার্ডে একটি opeাল স্লাইড করুন যা কেউ স্ট্যান্ডার্ডকে ঘিরে অতিরিক্ত আমলাতন্ত্রীর সাথে মিলিত হওয়ার মতো স্ট্যান্ডার্ডটিকে রোধ করার জন্য হুবহু ধরণের বিপজ্জনক কোডটি অনুসরণ না করে এবং ব্যবহার করে না।

(স্ট্যান্ডার্ড 3 য় স্ট্যান্ডার্ডটি সংশোধন করা হয়নি এমন বিকল্পটি অনুমিতভাবে বিবেচনা করা খুব অসম্ভব এবং যাইহোক এটি এত ভাল হবে না))

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


10

আমি সি ব্যবহার করি, বা আমি লাইব্রেরি কোড লিখিলে অন্তত একটি সি ইন্টারফেস রপ্তানি করি।

আমি অ-সংজ্ঞায়িত এবিআই ঝামেলা চাই না।


একই। কেবল ইন্টারফেসে কঠোর সি। আমি চাই শেষ জিনিসটি অন্য কারোর হাস্যকর জিনিস ফ্রেমওয়ার্কটি আমার উপর চাপিয়ে দেওয়া।
ম্যাট জয়েনার

9

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

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


3
সম্মত, "সি ++++ এর চেয়ে ভাল" অনুদানগুলি কখনই যাচাইয়ের পক্ষে দাঁড়ায় না।
জিমি জে

6
আমি বিশ্বাস করি সি ++ আমাকে খুব ছোট সুবিধা উপভোগ করে এবং আমাকে প্রচুর পরিমাণে দুর্ঘটনাজনিত জটিলতা দেয়। আমি বিশ্বাস করি যে আমি বর্তমানে সি, পাস্কাল, পাইথন এবং অবজেক্টিভ-সি তে সেরকম ++ তে দক্ষ হয়ে উঠতে সি ++ পাঠ্যপুস্তকের প্রায় 1500 পৃষ্ঠাগুলি এবং দশ বছর চেষ্টা করতে হবে। উপরোক্ত প্রতিটি ভাষা প্রায় 20x আরও অরথোগোনাল, কমপ্যাক্ট এবং মানসিকভাবে ব্যবহার করার জন্য সুবিধাজনক, আমি যে পরিবেশগুলিতে সেগুলি ব্যবহার করি সেখানে আরও শক্তিশালী উল্লেখ না করে not আমার সাধারণ বিকাশের পরিবেশে সি ++ এর জন্য কেবল যুক্তিসঙ্গতভাবে ন্যায়সঙ্গত ব্যবহারগুলি নেই।
ওয়ারেন পি

@ ওয়ারেন আপনি যে ভাষা ব্যবহার করেন কেবল তার জন্যই আপনি অর্থ প্রদান করেন। আপনি ভাষাটিতে নয়, সি ++ তে কীভাবে বুদ্ধিমানভাবে কোড করবেন তা সিদ্ধান্ত নিতে সক্ষম না হলে।
ড্যান ওলসন

2
তাই না। আপনি যদি কোনও প্রকল্পের একমাত্র বিকাশকারী হন তবে তা হতে পারে। তবে আমাদের দু'জন বিকাশকারী হওয়ার সাথে সাথেই আমাদের লড়াই হয়। কি? আপনি আইওসি পাত্রে জোর দিয়েছিলেন, যেখানে আমি প্রতিনিধিদের অন্য কোনও উপায়ে পছন্দ করি ... আপনি তিন স্তরের নেস্টেড টেম্পলেট পছন্দ করেন এবং আমি শূন্য টেম্পলেট পছন্দ করি। একটি জগাখিচুড়ি.
ওয়ারেন পি

আমি জানি এই পোস্টটি 10 ​​বছরের পুরানো তবে এটি কি আরও সি ​​এবং সি ++ এর সাথে তুলনা করা সত্যিই ন্যায্য? এগুলি উভয়ই পৃথক, বিভক্ত ভাষা (সি 99 এর পরে) এবং তাদের উভয়ই তাদের সুবিধাগুলি এবং প্রতিবন্ধকতা রয়েছে যা প্রত্যেকে আচ্ছাদন করে। সি ++ ডিবাগ করা এবং রক্ষণাবেক্ষণ করা কঠিন? সি এর স্পষ্টবাদী আপনি আরও ভাল ডিবাগ করা যাক। সি জেনেরিকস নেই? সি ++ এর জেনেরিকস রয়েছে! এই সময়ে, কোনও ভাষা অন্য ভাষার চেয়ে ভাল নয়।
নারগাল

9

একটি পয়েন্ট আমি এখনও উত্থাপিত দেখিনি, যা আমি মনে করি সবচেয়ে গুরুত্বপূর্ণ:

আমি প্রতিদিন যে লাইব্রেরিগুলি ব্যবহার করি সেগুলির বেশিরভাগটি সি লাইব্রেরিগুলি পাইথন, রুবি, পার্ল, জাভা ইত্যাদির জন্য বাইন্ডিং সহ আমি যা দেখেছি সেগুলি থেকে সি লাইব্রেরিগুলিকে 19 টি ভিন্ন ভিন্ন ভাষার বাইন্ডিংয়ের সাথে জড়ানো অনেক সহজ than সি ++ লাইব্রেরি মোড়ানো।

উদাহরণস্বরূপ, আমি একবার কায়রো শিখেছি এবং তখন থেকে এটি 3 বা 4 বিভিন্ন ভাষায় ব্যবহার করেছি। বড় জয়! আমি বরং এমন একটি প্রোগ্রাম লিখব যা ভবিষ্যতে আবার ব্যবহার করা যেতে পারে এবং অন্য প্রোগ্রামিং ভাষাগুলিতে সহজেই গৃহীত হতে পারে এমন একটি লেখা এটি এর চরম ঘটনা।

আমি জানি যে সি ++ লাইব্রেরিগুলি বাঁধাই সম্ভব, কিন্তু আফিক্স এটি এক নয় it's আমি অন্য ভাষায় Qt (v3 এবং v4) ব্যবহার করেছি এবং এটি ব্যবহার করার মতো সুন্দর কোথাও নেই: তারা অন্য কোনও ভাষায় সি ++ লেখার মতো মনে করেন, নেটিভ লাইব্রেরির মতো নয়। (আপনাকে সি ++ পদ্ধতি সিগগুলি স্ট্রিং হিসাবে পাস করতে হবে!)

আপনি একবার ব্যবহার করার জন্য কোনও ফাংশন লিখছেন বা আপনি যদি বিশ্বকে C ++ বলে মনে করেন তবে সম্ভবত সি ++ আরও ভাল ভাষা। সি আপনি যদি প্রথম থেকেই ভাষা-বহনযোগ্যতার জন্য ডিজাইন করেন তবে এটি একটি সহজ ভাষার মতো মনে হয়।


"স্ট্রিং হিসাবে পাস পদ্ধতি!" জিনিসটি Ct+ এর নয়, Qt এর ত্রুটিযুক্ত। আপনি চাইলে একটি সি ফ্রেমওয়ার্কের সাথে আসলে একই নির্বোধ ব্যবস্থা থাকতে পারে। এমনকি কিউটিতে থাকা ছেলেরাও সম্মত হয় যে এটি করা একটি ভুল ছিল। তখন তাদের মনে এর চেয়ে ভাল বিকল্প আর ছিল না এবং তারা বুঝতে পেরে এটিকে ফিরিয়ে আনতে খুব দেরি হয়েছিল।
ereOn

7

উইন্ডোজ কার্নেল বিকাশ সি ++ সমর্থন করে না (দুঃখের সাথে)।


ওটা কেমন? কেন? সি ++ কম্পাইলার থেকে উত্পাদিত বাইনারি কি সি সংকলক থেকে আলাদা? ড্রাইভার বিকাশ কি কেবল এপিআই-র সাথে মেনে চলে না?
ডেভ ভ্যান ডেন এয়েণ্ডে

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

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


এটি ভিজ্যুয়াল স্টুডিও 2015 এর জন্য লক্ষ্য করুন?
কিংবদন্তি লেন্থথ

6

আপনার কাছে আরো একটি বিনোদনের গলাবাজি পড়তে পারেন কেন লিনাস টোরভাল্ডস সি উপযোগী এখানে


6
এটি সি ++ এর বিপরীতে রেন্টের চেয়ে অবজেক্ট-ওরিয়েন্টেড ডিজাইনের বিপরীতে অর্ধ-সুসংহত রেন্টের বেশি।
ড্যান ওলসন 10

16
মিঃ টরভাল্ডসের কাছে তিনি পছন্দ করেন না এমন জিনিসগুলির একটি দীর্ঘ তালিকা রয়েছে, কয়েকটি উল্লেখ করার জন্য সি ++, ইমাস, সাবভার্সন, ওও। কেউ কখনও কখনও ইচ্ছা করেন তার ঠোঁটটি আরও কিছুটা বোতাম করুন

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

9
লিঙ্কটি শিক্ষার চেয়ে বিনোদনের জন্য ছিল
পল ডিকসন

6
প্রমাণ যে এমনকি প্রতিভা কখনও কখনও পুতুল হতে পারে।
কাজ ড্রাগন

5

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


4

আমি বিভিন্ন কারণ সম্পর্কে চিন্তা করতে পারেন।

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

প্রশ্নকারী, বা লোকেদের সাথে সে কাজ করে, তারা সি এর সাথে পরিচিত হতে পারে তবে সি ++ নয় not

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

প্রশ্নকারীর সি ++ এর শেখার বক্ররেখার একটি অপ্রচলিত দর্শন থাকতে পারে। (যখন সঠিকভাবে যোগাযোগ করা হয়, এটি সি এর চেয়ে সহজ I've

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


3

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


3

আমি দুটি কারণে সি প্রোগ্রামিং সহ সি ++ ব্যবহার করি:

  • vectorএবং stringঅ্যারে মেমরি পরিচালনা আমার কাছ থেকে সরাতে
  • কঠোর প্রকারের চেকিং এবং সতর্ক করতে এবং / অথবা সমস্ত উপদ্রবগুলি ধরা ক্যাসেটগুলি অন্যথায় আমি মিস করব।

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


3

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


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

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

আপনার কোডটি যে লোকেরা লিখেছিল তারা হ'ল আমার কাছে যে ক্রেপের সাথে ডিল করতে হয়েছিল তার চেয়ে ভাল কোডার ছিল :-)
গর্ডন থম্পসন

3
  1. সি একটি সহজ ভাষা, সি ++ হয় না। অনেক লোকের জন্য সি ++ পুরোপুরি আয়ত্ত করতে খুব জটিল, http://en.wikedia.org/wiki/C%2B%2B# ক্রিটিকিজম দেখুন

  2. জটিলতার কারণে, বিভিন্ন প্রোগ্রামাররা সাধারণত ভাষার বিভিন্ন উপসংশ্লিষ্টকেই দক্ষ করে তোলে। এটি অন্যান্য লোকের কোড পড়া বেদনাদায়ক করে তোলে।

  3. ভাষার জটিলতা, অসুবিধাগুলি খুব বেশি বিচ্যুতি যুক্ত করে এবং কখনও কখনও উত্পাদনশীলতাকে আঘাত করে। চাকরিতে নিজেই মনোনিবেশ করার পরিবর্তে, আমি প্রায়শই নিজেকে ভাষা দিয়ে লড়াই করতে দেখি। জাভা / পাইথন আরও উত্পাদনশীল বিকল্প।

  4. একটি ভাঙা সি কোড ডিবাগিং সাধারণত একটি ভাঙা সি ++ কোড ডিবাগ করার চেয়ে অনেক বেশি সোজা is

  5. জাভা / সি # এর বিপরীতে, সি ++ স্ট্যান্ডার্ড লাইব্রেরি সি স্ট্যান্ডার্ড লাইব্রেরির ক্ষেত্রের বাইরে কিছুটা অর্জন করে।

  6. লিনাস টরভাল্ডস (লিনাক্স) এবং রিচার্ড স্টলম্যান (ইমাকস) এর মতো কিছু বিখ্যাত প্রোগ্রামার সি ++ অপছন্দ করে।


3
আমি আপনার উত্তরটি ভোটাভুটি বিবেচনা করেছি যতক্ষণ না আমি যুক্তি # 6 পড়ি।
ফুজ

1

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


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

1

আমি তিনটি কারণ চিন্তা করতে পারি। একটি হ'ল এম এম্বেড করা সিস্টেমগুলির জন্য সি আরও উপযুক্ত, এর বাইনারিগুলির ছোট আকার এবং যে কোনও সিস্টেমে সি সংকলকগুলির বিস্তৃত প্রাপ্যতার কারণে দ্বিতীয়টি বহনযোগ্যতা: সি একটি ছোট ভাষা এবং এএনএসআই সি কোড যে কোনও জায়গায় সংকলন করবে। সি ++ তে বহনযোগ্যতা ভাঙ্গা সহজ। শেষটি হ'ল ভাষা। সি ++ আরও শক্ত এবং এটি অবশ্যই খুব খারাপভাবে ডিজাইন করা একটি ভাষা। উপরে টরভাল্ডস গ্রিপস রিপোর্ট করা হয়েছে। আপনি সি ++ ঘন ঘন প্রশ্নযুক্ত উত্তরগুলিও দেখতে চাইতে পারেন ( http://yosefk.com/c++fqa/ )।


5
এবং আপনি যদি বুদ্ধিমান হন তবে এফকিউএ দেখার পরে আপনি বুঝতে পারবেন যে এটি হ্যাকের কাজটি এমন কারও দ্বারা করা হয়েছে যা সত্যিকার অর্থে সি ++ বুঝতে পারে না তবে তা এটিকে ঘৃণা করে।
ডেভিড থর্নলি

1

বহনযোগ্যতা একটি সমস্যা হতে পারে। গর্ডন কার্পেন্টার-থম্পের উত্তরের থেকে আলাদা, আমি পরামর্শ দেব যে এটি বরং বিভিন্ন লিনাক্স / ইউনিক্স সংস্করণে libstdc ++ এর বিভিন্ন সংস্করণের রানটাইম সমর্থন। এই সম্পর্কে একটি ভাল আলোচনার জন্য এই লিঙ্কটি দেখুন । সামান্য অংশ:

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

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


1

আমি উভয় দিকেই এখানে অনেক পরামর্শ অনুসরণ করতে পারি। তবে শেষ পর্যন্ত এটি নেমে আসে ক) তুলনীয় সহজ খ) তুলনামূলক জটিল।

কেউ যদি একরকম ভাষার জটিলতা পরিমাপের "আবিষ্কার" করেন তবে আমার ধারণা নেই।

0 - 10 থেকে স্কেল আমি সম্ভবত 2 বা 3 এ সি রেট করব তবে সি ++ 8-10-এর মধ্যে হবে। আমি যুক্তি দিয়েছিলাম যে সি ++ সবচেয়ে জটিল ভাষাগুলির মধ্যে একটি তবে আমি অ্যাডা, পিএল 1 বা এর মতো উদাহরণ জানি না, তাই অন্য কোনও ভাষার তুলনায় সম্ভবত এটি জটিল নয়।

সি ++ সি এর সমস্ত জটিলতা উত্তরাধিকার সূত্রে প্রাপ্ত তাই এটি সি এর জটিলতা স্তরের নীচে থাকতে পারে না

আমি আমার অংশের জন্য কিছু স্ক্রিপ্টিং ভাষা এবং সি ব্যবহার করে অনেক বেশি স্বাচ্ছন্দ্যবোধ করব So সুতরাং শেষের দিকে নিম্নলিখিত প্রশ্নের উত্তর দিতে হবে। "আরও কি সবসময় ভাল হয়?"


1

সি-এর মধ্যে আমি সবচেয়ে দরকারী জিনিসটি হ'ল নেমস্পেস এবং ওভারলোডের অভাব: ফাংশন এবং চিহ্নের নামগুলি অনন্য শনাক্তকারী। এই চিহ্নগুলি যে জায়গাগুলিতে ব্যবহৃত হয়েছে তা সন্ধান করতে আপনি ঠিক পারেনgrep উত্স কোড ফাইলের মাধ্যমে এবং অনুসন্ধানের ফলাফলগুলি অবস্থানগুলি প্রদর্শন করতে পারেন।

পুরানো এবং জটযুক্ত সিস্টেমে কোনও নতুন বৈশিষ্ট্য বা উপাদানগুলিতে ওয়্যারিংয়ের সময় এটি প্রয়োজনীয়।

একটি পরিশীলিত কল গ্রাফ বিল্ডিং সরঞ্জাম ছাড়াই আপনি সি ++ এ সহজেই এটি করতে পারবেন না।


0

বেশিরভাগ লোক মনে করে যে সি এবং সি ++ কোনওভাবে সম্পর্কিত, তবে তারা দুঃখজনকভাবে ভুল হয়েছে। সি ++ সি এর চেয়ে সম্পূর্ণ আলাদা ভাষা is

সি ++ এ আপনি অবজেক্টের ক্ষেত্রে এবং কীভাবে এটি একে অপরের সাথে সম্পর্কিত তা বিবেচনা করুন। সি তে, আপনি এপিআই-এর শর্তাবলী ভাবেন। এটি দিনের এবং 17 এর মধ্যে পার্থক্যের মতো।

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


0

কোনও প্রকল্পকে সি-তে সীমাবদ্ধ রাখাই সুবিধাজনক হতে পারে তার কারণগুলি নিম্নলিখিত:

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