সি প্রোগ্রামিং ভাষা এখনও ব্যবহার করা হয়?


96

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

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

সি এখনও নতুন কোনও সফটওয়্যার বিকাশ বা অন্য কিছু ব্যবহার করা হয়?


46
আপনি কি কখনও পিক্সের জন্য কোনও সি ++ সংকলক দেখেছেন?
এসকে-যুক্তি

195
আমিই কেবল সেই ব্যক্তি যে দুঃখ পেয়েছি যে কেউ সময় এবং অর্থ অপচয় করার সাথে শিক্ষার সমান হবে?
জেটি ২

37
" আমার জ্ঞানে, সিওএম এবং হার্ডওয়্যার ডিজাইনের সাথে সম্পর্কিত সমস্ত বিকাশও সি ++ এ সম্পন্ন হয়েছে " - আমার কাছে মনে হয় আপনি আসলে কোনও হার্ডওয়্যার ইন্টারফেস ডিজাইন করেন না।
এড এস

32
লোকেরা ভুলে যায় যে আমরা যে সকল উচ্চ স্তরের ভাষাগুলি পছন্দ করি প্রায়শই সি তে প্রয়োগ করা হয়
ডেভিড কাউডেন

13
@ থমাসডিং মৃত ভাষা? আপনি যদি সিটিকে একটি মৃত ভাষা হিসাবে বিবেচনা করেন তবে অবশ্যই আপনার কাছে প্রোগ্রামিং ভাষার খুব সীমিত জ্ঞান রয়েছে।
জেস্পেআর

উত্তর:


214

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

(আইএমও) ন্যায্যতার ক্রম হ্রাসে, সি এর জন্য এখনও প্রচুর ব্যবহৃত হয়

  • এম্বেড থাকা স্টাফ
    একটি ছোট প্ল্যাটফর্মের সাথে সি +++ কম্পাইলার পোর্ট করার চেয়ে সি সংকলককে পোর্ট করা সহজ। এছাড়াও, সি উকিলরা দাবি করেছেন যে সি ++ "তাদের পিছনে পিছনে খুব বেশি কিছু করে"। তবে আইএমও এফইউডি U

  • সিস্টেমে প্রোগ্রামিং
    আবার, এটি সাধারণত "সংকলকটি কী করছে" তা জানা সহজ is এমন দাবিগুলির কারণে। তবে অনেক এম্বেড থাকা প্রোগ্রাম যেমন টেমপ্লেট এবং অন্যান্য সি ++ কী বৈশিষ্ট্যগুলি থেকে উপকৃত হবে।

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


16
এটি মনোভাবের চেয়ে ইতিহাস বেশি। আপনি যখন "মূল" ওপেন সোর্স প্যাকেজগুলি বিবেচনা করতে পারেন সেগুলির অনেকগুলিই মূলত বিকাশ করা হয়েছিল যখন সি ++ এখনকার মতো বিস্তৃত ছিল না এবং এখনও সংস্থানগুলির অভাব ছিল।
ব্লারফ্লু

65
টিআইওবি সূচকটি একটি রসিকতা। অনুসন্ধান ইঞ্জিন হিট অর্থহীন।
ডেডএমজি

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

18
@ জেমস: আপনি দক্ষ বিমূর্ততা, জেনেরিক প্রোগ্রামিং এবং টাইপ-সুরক্ষার মতো জিনিস বোঝাতে চান? হ্যাঁ, কে এটা চাইবে।
Xoo

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

119

এম্বেড করা হার্ডওয়্যার প্রোগ্রামিংয়ে সি প্রচুর ব্যবহৃত হয় যেখানে সংস্থানসমূহের অভাব হয়।

লিনাক্স কার্নেলটি সিটিতে লিখিত কারণ লিনাস টরভাল্ডস এর মতে, সি ++ একটি ভয়াবহ ভাষা


14
আমি মনে করি উইন্ডোজ কার্নেলের বড় অংশটি সি এবং প্রচুর উত্তরাধিকার সিস্টেম।
কোডার

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

75
অন্যের মতে লিনাসের যুক্তি ভয়াবহ।
sbi

36
লিনাসের যুক্তি বৈধ বা নাও হতে পারে তবে লিনাক্স কার্নেলটি এখনও সরল সি :
জুনাস পুলাক্কা

15
লিনাস একটি গিট।
ubiyubix

94

আমি দেখেছি যে সমস্ত আধুনিক ভাষা সি এর সাথে ইন্টারঅ্যাক্ট করতে পারে:

  • সি ++
  • জাভা
  • সি শার্প
  • পাইথন
  • Haskell,
  • উদ্দেশ্য গ

সি এর সাথে কথোপকথনের প্রয়োজনীয়তা থেকে প্রাপ্ত:

  • সি একটি সহজ এবিআই আছে
  • সি দীর্ঘ সময় ধরে রয়েছে

এর অর্থ এই যে যেহেতু সেই ভাষাগুলি সি এর সাথে যোগাযোগ করতে পারে, তাই তারা তা করতে পারে:

  • এর গ্রন্থাগারগুলি লাভ করুন
  • একে অন্যের সাথে সি এর মাধ্যমে যোগাযোগ করুন (উদাহরণস্বরূপ, ক্ল্যাং সি ++ এ লেখা তবে এটি সি ইন্টারফেসে পাইথন বাইন্ডিংস সরবরাহ করে)।

এবং আমি বাজি ধরব যে তাদের সকলেই তাদের রানটাইমের জন্য সি-র উপর নির্ভর করে (যদি না তারা পুরো সমাবেশে যায়? সন্দেহজনক)

সি হ'ল প্রোগ্রামিং ভাষাগুলির লিংগুয়া ফ্রাঙ্কা এবং সর্বাধিক অন্যতম (এবিআই-বুদ্ধিমান) নির্দিষ্ট আর্কিটেকচারের সাথে আবদ্ধ নয় (যেমন সমাবেশ হয়), এটি থেকে মুক্তি পেতে এটি একটি বড় পদক্ষেপ নেবে।


45

আমার মতে এটি একটি খুব সংক্ষিপ্ত দৃষ্টিশক্তিযুক্ত প্রশ্ন যা "আমার বন্ধুরা এবং আমি রেগেই শুনি really সত্যিই কি এখনও কেউ র‌্যাপ শোনেন?"।

সেখানকার প্রতিটি ভাষারই এর ব্যবহার রয়েছে। বিভিন্ন ভাষায় অবশ্যই তাদের কুলুঙ্গি রয়েছে। কিন্তু সি সম্পর্কে জিজ্ঞাসা! আমি নিশ্চিত যে প্রতিদিন কম লোক সি এর চেয়ে সি # ব্যবহার করে (কোনও দোকানে যেখানে সি সি ব্যবহার করেন না সেখানে পুরোপুরি পক্ষপাতদর্শন দৃষ্টিভঙ্গি থেকে))

ভাষাগুলির তুলনামূলক জনপ্রিয়তা খুঁজছেন দ্রুত গুগল।
আমি নিশ্চিত যে এর কোনওটিই অনুমোদনযোগ্য নয় তবে আমরা এটি ট্রেন্ডগুলি দেখতে ব্যবহার করতে পারি:

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
http://langpop.com/

এমনকি ট্যাগগুলিতে প্রশ্নের এসও অনুপাতের দিকে তাকানো:
https://stackoverflow.com/tags

  • সি #: 209845
  • অন্য 16 টি ট্যাগ
  • সি: 38790

সুতরাং সি হ'ল 18 টি সর্বাধিক জনপ্রিয় বিষয় (এবং সেখানে আরও অনেকগুলি ভাষা রয়েছে)।

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


1
এই উত্তরটি আমাকে বিভ্রান্ত করে ... আপনি সি # নিয়ে যান এবং তারপরে এসও প্রশ্ন ট্যাগগুলি দেখান তবে সেটির কোনওটিরই সি ব্যবহারের সাথে সত্যিই কিছু হয় না। জনপ্রিয়তা (বিশেষত ল্যাংপপ, যেখানে তারা জনপ্রিয়তা নির্ধারণের জন্য অনুসন্ধান ইঞ্জিন অনুসন্ধানগুলি ব্যবহার করে) সত্যই কোনও ভাষার আধুনিক দিনের ব্যবহার দেখায় না, কেবল আধুনিক দিনের কোনও ভাষার সন্ধান করে। অনুসন্ধানের জন্য আপনাকে অবশ্যই অ্যাকাউন্টে নেওয়া উচিত, নিম্ন স্তরের শ্রেণির জন্য বিশ্ববিদ্যালয়গুলিতে সি প্রায়শই ব্যবহৃত হয় যাতে প্রশ্নের সংখ্যা এবং এসও পোস্টের সংখ্যা বৃদ্ধি করতে পারে।
জেটি ২

3
@ জেটি: আমি স্পষ্ট করেই কেন বললাম: I am sure none of this is authoritative but we can use it to see trendsতবে আমি আপনার দ্বিতীয় বক্তব্যের সাথে একমত নই; সি আর উচ্চতর শিক্ষাপ্রতিষ্ঠানগুলিতে শেখানো প্রধান ভাষা নয় (এটি যদি তখন স্নাতকদের নতুন ব্যাচটি অকেজো হত না)। লোকেরা আজকাল জাভা / সি # তীক্ষ্ণ শিখতে ঝোঁক। এছাড়াও টিওব রিপোর্টটি কোয়েরি নয়, চাকরি সম্পর্কে।
মার্টিন ইয়র্ক

পিছনে ফিরে তাকানোর পরে, আমার পক্ষ থেকে একটি দুর্বল শব্দ পছন্দ বলে মনে হচ্ছে। আমি নিম্ন সংখ্যার ক্লাস (শুরুর ক্লাস) বোঝাতে চাইনি, আমি বোঝাতে চাইছি সিস্টেম ক্লাস (কম্পিউটার আর্কিটেকচার) যেখানে সি ব্যবহৃত হয়।
জেটি

4
এসও ট্যাগ গণনা সাধারণত ভাষার জনপ্রিয়তা সংজ্ঞায়িত করে না, এটি কেবল এসও এর ব্যবহারকারীদের মধ্যে ভাষার জনপ্রিয়তা দেখায় ।
এড এস

4
@ এড এস স্পষ্টতই। তবে প্রশ্নটি জনপ্রিয়তার নয়। এটি একটি ভাষা হিসাবে সি এর অস্তিত্ব সম্পর্কে। এসও ট্যাগ গণনা আমাদের দেখায় যে এটি অবশ্যই কোনও মৃত ভাষা নয়। অন্যান্য সাইটে সি 2 শীর্ষে রয়েছে এ বিষয়টি প্রথম / দ্বিতীয় সর্বাধিক ব্যবহৃত ভাষা হিসাবে তৈরি করে না। তবে শীর্ষ দশে এর অস্তিত্ব একটি তাৎপর্যপূর্ণ মার্কার যা এটি মারা যায় নি। অবশ্যই এর কোনওটিই কেবল দৃ strong় সূচক নয় যে সি এখনও সক্রিয়ভাবে ব্যবহৃত হচ্ছে।
মার্টিন ইয়র্ক

23

আপনার যখন সংস্থান কম থাকে এবং অবজেক্ট ওরিয়েন্টেড সক্ষমতা প্রয়োজন হয় না তখন আপনাকে সি ব্যবহার করতে হবে।

আজ ব্যবহৃত অনেক সফটওয়্যার এখনও সি-তে লেখা রয়েছে, হার্ডওয়্যার ড্রাইভারের কথা উল্লেখ না করে।

টিওব ইনডেক্স অনুসারে , সি এখনও সবচেয়ে বেশি ব্যবহৃত ভাষা।


যেমন tcrosley পরামর্শ দিয়েছে, আপনি এই সম্পর্কিত প্রশ্নটি একবার দেখে নিতে পারেন ।


এছাড়াও আপনি C ও C ++ মধ্যে পার্থক্য মত কিছু সম্পর্কিত নিবন্ধ জন্য পরীক্ষা করা উচিত এই উইকি বা এই উদাহরণস্বরূপ।


4
আহেমে !! একটি দুর্দান্ত পয়েন্ট। আমি কখনই ভাবিনি যে "ওওপি দক্ষতা আসলে ভাষার জন্য ওভারহেড যুক্ত করে"। এই বৈধ পয়েন্টটি পরিষ্কার করার জন্য ধন্যবাদ। এখন, আমি বুঝতে পারি, সি অন্যদের চেয়ে এগিয়ে কোথায়
পঙ্কজ উপাধ্যায় ২ay

7
@ পঙ্কজ সি ++ সাধারণত প্রয়োজনীয়ভাবে ওভারহেডের প্রচুর পরিমাণে যোগ করেন না, ভাষার অনেক জটিলতা হ'ল "আপনি যা ব্যবহার করেন না তার জন্য অর্থ প্রদান না করার" নীতিটি - যদি আপনি ব্যতিক্রম না ব্যবহার করেন তবে ব্যতিক্রমগুলি করবেন না আপনার কোডটিতে ধীর গতি বা আকার যুক্ত করুন। সংকলকটি বৃহত্তর এবং আরও জটিল যদিও
মার্টিন বেকেট ২ '


6
আপনার কখনই ওওপি সক্ষমতার প্রয়োজন হয় না , এটি কিছু পরিস্থিতিতে ভালভাবে কাজ করে।
এড এস

2
@ জোসে ফাতি: আমার বস একমত হবেন কারণ আমার বস একজন অভিজ্ঞ, যুক্তিযুক্ত লোক। সে প্রোগ্রামিং ধর্মে কিনে না।
এড এস

20

দেখে মনে হচ্ছে আপনি নিজেকে বোঝানোর চেষ্টা করছেন যে সি অকেজো এবং তাই এড়ানো যায়। আসুন আপনার প্রশ্নটি ভেঙে দিন:

"আমি অনুভব করেছি যে সি তে বিকাশ হলেই কেউ কেবল পরীক্ষার জন্য সি শিখবে।"

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

"আমার জ্ঞানে, সিওএম এবং হার্ডওয়্যার ডিজাইনের সাথে সম্পর্কিত সমস্ত বিকাশও সি ++ এ সম্পন্ন হয়েছে।"

এটা ভুল।

"অতএব, আপনার সি ++ ব্যবহারের প্রয়োজন হলে সি শিখতে কোনও অর্থ হয় না I আমি historicতিহাসিক তাত্পর্যতেও বিশ্বাস করি না, তবে কেন সি শেখার ক্ষেত্রে সময় এবং অর্থ অপচয় করবেন?"

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


7
সি হ'ল সি ++ এর একটি উপসেট , এটি কি আপনি বোঝাতে চেয়েছিলেন ?? । সি সি ++ এর উপসেট নয়; আসলে তারা বেশ আলাদা। হ্যাঁ, সি ++ সি এর বর্ধনশীল, বা কখনও কখনও ক্লাস এবং ওওপি সহ সি হিসাবে উল্লেখ করা হয়, তবে সি বলতে একটি উপসেট বলে
প্রমাণিত

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

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

16

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

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

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


ডি সি সি ++ এর মতো সরাসরি সি কোড কল করতে পারে। আপনার সমস্ত প্রয়োজন যদি ফাংশন প্রোটোটাইপ (আবার, ঠিক সি ++ এর মতো)। আপনি কেবল extern(C)ডি-তে লিখেন , যেখানে সি ++ তে আপনি লিখেনextern "C"
পিটার আলেকজান্ডার

@ পিটার আলেকজান্ডার আমি ডি-তে এক্সটার্নান (সি) সম্পর্কে অবগত রয়েছি wra আপনি সরাসরি সি শিরোনামকে অন্তর্ভুক্ত করতে পারবেন না (যা আপনি সি ++ তে করতে পারেন, ধরে নিলেই সি হেডারটি বহিরাগত "সি" ব্যবহার করে এবং #ifdef __cplusplus ব্লক রয়েছে যা বেশিরভাগ ক্ষেত্রে রয়েছে)। তখন কেবল এক্সটার্ন (সি) ব্যবহারের মধ্যে অন্যান্য অসুবিধাগুলি রয়েছে (বিশেষত স্ট্রিংগুলি কীভাবে পরিচালনা করা হয় my আমার জ্ঞানের কাছে, ডি তে তাদের কোনও নাল টার্মিনেটর নেই তাই এটি সি তে পাস করার সময় আপনাকে বিশেষভাবে অ্যারে পরিবর্তন করতে হবে)।
jsternberg

11

খুঁজে বার করো langpop.com Freshmeat এবং Google কোড থেকে বিশেষত গ্রাফ,। এটি দেখায় যে সি এখনও এগিয়ে রয়েছে।

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


4
এই URL টি খুলবেন না ! ওয়েবসাইটটির আর অস্তিত্ব নেই এবং ইউআরএল কিছু বিরক্তিকর স্প্যামি পৃষ্ঠাতে পুনঃনির্দেশ করে।
নিকোলে সুভান্দজিয়েভ

11

আমি প্রায় প্রতিদিন এটি আইপ্যাড / আইফোনের জন্য বিকাশ করি use অনেক লাইব্রেরি সি-তে লেখা থাকে এবং এতে একটি উদ্দেশ্য-সি সমতুল্য থাকে না। তাই হ্যাঁ, এটি এখনও ব্যবহৃত হয় এবং বাজারের অন্যতম নতুন ডিভাইস।

সি এর সাহায্যে আপনি প্রচুর এমবেডেড সিস্টেম প্রোগ্রাম করতে পারেন, এটি ক্ষুদ্র এবং কার্যকর এবং সম্ভবত এটি আসতে অনেক বছর ধরে থাকবে (ওরফে আপনি সময় বা অর্থ ব্যয় করছেন না এটি শিখতে)


2
"উদ্দেশ্য-সি এখনও তরুণ" এটি আসলে 1980 এর দশকের মাঝামাঝি থেকে প্রায় C ++ এর মতো পুরানো। যদিও বেশিরভাগ লোকেরা এটি ব্যবহার করে 2007 এর আগে পর্যন্ত এটি আসে নি।

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

7

সাধারণত এম্বেড থাকা সিস্টেমের জন্য সি এখনও বহুল ব্যবহৃত হয়।

এই প্রশ্নটি আরও কিছু উদাহরণ দেয়।

Tiobe সূচক , যা ভাষা শ্রেণীভুক্ত করার প্রচেষ্টা জনপ্রিয়তা / ব্যবহার ধারাবাহিকভাবে প্রথম স্থানে সি রাখে।


২ য় স্থান (জাভার পরে)।
মার্টিন ইয়র্ক

7
আকর্ষণীয় যে সি ++ এবং জাভা উভয়ই গত 10 বছরে জনপ্রিয়তার জন্য উভয়ই নীচের দিকে প্রবণতা বোধ করছে, যখন সি কম-বেশি স্থির থাকে।
পল আর

7

পোর্টেবিলিটি।

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

আপনি যদি আমার মতো একই উত্তর নিয়ে এসে থাকেন তবে উপসংহারটি হ্যাঁ।


5

ঠিক আছে, আমি মনে করি সি নিম্নলিখিত কারণগুলির কারণে সবচেয়ে শক্তিশালী ভাষা!

1) প্রথম সিটিতে এটি একটি সিস্টেমের ভাষা (যার অর্থ এটি ন্যূনতম বা রান-টাইম সহ নিম্ন-স্তরের প্রোগ্রামিং করতে ব্যবহৃত হতে পারে)।

2) ফলাফল আবেদনের গতি। সি উত্স কোডটি উচ্চ স্তরের ভাষার তুলনায় অনেক বেশি অনুকূলিত করা যেতে পারে কারণ ভাষা সেটটি তুলনামূলকভাবে ছোট এবং খুব দক্ষ। সমাবেশের ভাষায় প্রোগ্রামিং ছাড়াই আপনি সমাবেশ ভাষায় প্রোগ্রামিংয়ের মতোই কাছাকাছি। এবং আপনি এমনকি সমাবেশ এবং সি ব্যবহার করতে পারেন!

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

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

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

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

সামগ্রিকভাবে, এটি একটি অ্যাপ্লিকেশন ভাষা হিসাবে হ্রাস পাচ্ছে, তবে এখনও সিস্টেমের ভাষা হিসাবে দৃ .়ভাবে ধরে আছে।


1

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

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

আমি তার পরে যে সংস্থায় গিয়েছিলাম, সেখানে পণ্যটি সি -+ তে নয়, সি-তে নির্মিত হয়েছিল। এটি আসলে ১৯৯০ এর দশকের মাঝামাঝি থেকে একটি প্রকল্পের ধারাবাহিকতা, যদিও সাম্প্রতিক পারফরম্যান্স উন্নতির দাবিগুলির কারণে, সিদ্ধান্ত নেওয়া হয়েছিল যে মূলত সবকিছুই আবার লেখা হবে। এই পুনর্লিখনের কারণে আমাদের কাছে সি ++ নির্বাচন করার বিকল্প ছিল, কিন্তু তা হয়নি।

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

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

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

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

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

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


0

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

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

পাইথন থেকে কল করা যায় এমন কোনও সি # এসডিকে আমি লিখতে পারি না, যেমন, বা পাইথন এসডিকে সি # থেকে কল করা যায়।

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

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

আমি বিদ্যমান ডেটা স্ট্রাকচারগুলি ব্যবহার করতে বা বিদ্যমানগুলি ব্যবহার করে উচ্চ-স্তরেরগুলি প্রয়োগ করতে চাইলে আমি সি এর চেয়ে সি ++ পছন্দ করি তবে আমি যদি কোনও ইঞ্জিনের মূল অংশে একটি নিম্ন-স্তরের ডেটা কাঠামো বাস্তবায়ন করতে যাচ্ছি যার জন্য কোনও ব্যবহার নেই বিদ্যমান ডেটা স্ট্রাকচার, সি অবশ্যই নিশ্চিত করেছে যে এটি তার সহজ সরল টাইপ সিস্টেমের সাহায্যে খুব সহজ করে দেয় যা আপনাকে memcpyএখানে কেবল জিনিস এবং memmoveসেখানে জিনিসগুলি দেয় , mallocএকটি সংকীর্ণ ব্লক এবং reallocএটি সেখানে নির্মাতারা, ডিস্ট্রাক্টর এবং ব্যতিক্রম সম্পর্কে চিন্তা না করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.