কেন এম্বেড করা হয় কঠোরভাবে সি / সি ++ [বন্ধ]


15

আমি এই প্রশ্নটি পছন্দ করি না কারণ এটি সহজে উত্তর দেওয়া যায় না তবে সম্ভবত আমি আবারও উত্তর দিতে পারি: "কী ভাষা পরিবর্তন করতে বাধা দেয়?"

উদাহরণস্বরূপ, আমরা এম্বেডের জন্য সি / সি ++ দেখতে বেশিরভাগই দেখতে পাই (আমার মনে হয় আমি এর আগেও এডিএ উল্লেখ করেছি শুনেছি? আমি ভুল হলে আমাকে সংশোধন করি)

তবে এম্বেডড ওয়ার্ল্ডকে ভাষা পরিবর্তন করতে ঠিক কী রাখে? এটি কি ঠিক যে সি ব্যবহার করা খুব সহজ বা সি সবকিছু ঠিকঠাক করার কারণে পরিবর্তনের জন্য সত্যই "প্রয়োজন" নেই?

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

আমি বুঝতে পারি এটি একটি বিষয়ভিত্তিক প্রশ্ন, তবে আমার মূল প্রশ্নটি "কেন" এবং "আইএফ / WHEN" নয়


2
আপনি কি এম্বেড থাকা সিস্টেমে কোনও উচ্চ স্তরের ভাষা দেখতে চান? সম্পাদনা: বা বরং, আপনি কোন ভাষার বৈশিষ্ট্যগুলি সেই সি সরবরাহ করেন না তাতে আগ্রহী?
জন এল

1
@ জোনল - সি-ই ইচ্ছা করত এমন একগুচ্ছ নিম্ন স্তরের বৈশিষ্ট্য রয়েছে। EG আরও ভাল বিট / নিবল / বাইট / শব্দের কারসাজি বড় ints এর ভিতরে। উন্নত সুরক্ষা সমর্থন, EG এর বিভিন্ন ধরণের বৈশিষ্ট্য রয়েছে।
রকেটম্যাগনেট

3
এমবেড করা হয় না কঠোরভাবে সি এখানে এমবেডেড সিস্টেম জন্য উচ্চ স্তরের ভাষা একটি গুচ্ছ আছে: electronics.stackexchange.com/questions/3423/...
Kellenjb

1
"এম্বেডেড" এর আলাদা অর্থ রয়েছে। টোস্টার চালিত একটি 4-বিট মাইক্রোকন্ট্রোলার একটি ইসিইউ বা সেট টপ বক্সের থেকে আলাদা। এই বর্ণালী আপনার প্রশ্নের উত্তর কঠিন করে তোলে।
টবি জাফি

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

উত্তর:


18

প্রথমত: "এমবেডেড" সম্পর্কে ভুলে যা কারণ এটি কোনও কার্যকর পার্থক্য নয়। সমস্ত গুরুত্বপূর্ণ সম্পত্তি হ'ল "সংস্থান-সীমাবদ্ধ"। সর্বাধিক গুরুত্বপূর্ণ সংস্থানটি প্রায়শই সময় হয়, এক্ষেত্রে আমরা রিয়েল-টাইম সিস্টেমগুলি সম্পর্কে কথা বলি, তবে এটি স্মৃতি বা শক্তিও হতে পারে।

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

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

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


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

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

ইয়ে আমি উইকি পৃষ্ঠায় উল্লিখিত জিএনএটি দেখেছি। আপনি ঠিক বলেছেন, ছোট মাইক্রোসের পক্ষে খুব বেশি কিছু নেই তবে 68k, x86, MIP , ইত্যাদি (যেমন ডিডিসিআই )
অলি গ্লেজার

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

2
আদা, জ্নাত আকারে, আরডুইনোতে দেখা যায়, এভিআর মাইক্রোপ্রসেসরের উপর ঠিক ঠিক কাজ করে। আমি নির্মিত সবচেয়ে ছোট Gnat এক্সিকিউটেবলটি ছিল 65 বাইট। স্বীকার করা যে এটি সমস্ত কিছুই একটি এলইডি জ্বলজ্বল করে, যদিও সমতুল্য আরডুইনো স্কেচটি 1K এরও বেশি ছিল। আমার এক্সিকিউটেবলটি 600 বাইটে পৌঁছে যাওয়ার পরে এটি স্বাধীনভাবে 2 স্টিপার মোটর চালাচ্ছিল ... আপনার স্পার্কের দরকার নেই - যদি না আপনি নিজের এলইডি ব্লিঙ্কারটি আনুষ্ঠানিকভাবে সঠিক প্রমাণ করতে চান!
ব্রায়ান ড্রামমন্ড

9

8 এবং 16-বিট মাইক্রোকন্ট্রোলার ভিত্তিক এমবেডেড সিস্টেমগুলির সাথে, এটি খুব কম পরিমিত স্টোরেজ সীমাবদ্ধতার সীমিত সংস্থাগুলির সাথে মাপসই করতে পারে এমন সফ্টওয়্যার বিকাশ করা সহজতর হয়েছে ( লো-এন্ড 8-বিট মাইক্রোকন্ট্রোলারের জন্য র্যামের কয়েকটি 100 বাইট হতে পারে) , 2-8 কিওবিটি রম বা কোড স্টোরেজের জন্য ইপ্রোম / ফ্ল্যাশ সহ)।

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

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

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

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

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

আমি আশা করি যে ব্রড স্ট্রোকগুলির মূল রূপগুলি আপনি সি এবং অ্যাসেমবিলিটি মূলত ছোট বা পুরানো এম্বেডড সিস্টেমে ব্যবহার করবেন এবং নতুন মধ্য থেকে উচ্চ প্রান্তের এম্বেড থাকা সিস্টেমগুলির সীমাবদ্ধতার সাথে একটি traditionalতিহ্যবাহী ডেস্কটপ ব্যক্তিগত কম্পিউটার থেকে কিছুটা পৃথক।


5

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

এটি এমন নয় যে "সি একটি খারাপ বা পুরানো পছন্দ তবে আমরা এখনও এটি অভ্যাসের বাইরে ব্যবহার করি না" (কিউওয়ার্টি কীবোর্ডগুলির মতো)।

এম্বেডড ডেভলপমেন্টের জন্য সি নিজেই খুব ভাল পছন্দ, বিশেষত সময়-সমালোচনামূলক অ্যাপ্লিকেশনগুলিতে। কেন?

  • রিয়েল-টাইম প্রোগ্রামগুলি প্রয়োগ করতে সহজেই এটি পর্যাপ্ত পর্যায়ে যায়। আপনার যদি ন্যানোসেকেন্ডে সময় পরিমাপ করতে হয়, প্রতি 5 মাইক্রোসেকেন্ডে একটি বাধা পেতে হয়, বা মোট র‍্যামের ঠিক 64 বাইট ব্যবহার করতে হয় , তবে খুব উচ্চ স্তরের ভাষার সাথে এটি প্রায়শই অসম্ভব বা খুব কঠিন হয়ে যায় এটি সমাধান করা । উচ্চতর স্তরের ভাষার তুলনায় সি আপনাকে হার্ডওয়্যারের উপর আরও ভাল নিয়ন্ত্রণ দেয় , এম্বেড থাকা বনাম পিসির জন্য বিকাশের মধ্যে এটি অন্যতম গুরুত্বপূর্ণ পার্থক্য।

  • এটি সমাবেশের তুলনায় দ্রুত এবং কোড সহজ করার পক্ষে যথেষ্ট উচ্চ স্তরের।

সুতরাং, এসেম্বলির গতি এবং সরাসরি হার্ডওয়্যার অ্যাক্সেস এবং উচ্চ স্তরের ভাষাগুলির সহজ পড়া এবং বোঝার মধ্যে সি হ'ল সেরা (বা সেরাগুলির মধ্যে একটি) ise


1
আমি মনে করি সি এর পক্ষে একটি বড় দিক হ'ল এটির মাধ্যমে অন্যকে এই জাতীয় কোড চালানোর (সম্ভবত তত দক্ষতার সাথে না) চালানোর অনুমতি দেওয়ার সময় এটি একটি নির্দিষ্ট প্ল্যাটফর্মের জন্য কোডটি অনুকূলিত করতে দেয়। পিআইসির মতো কোনও কিছুর উপর, অনেক সি নির্দেশাবলী মেশিনের নির্দেশিকায় পূর্বাভাস অনুবাদ করবে; একটি লুপ এর মতো unsigned char i=63,j=128; do {something;} while(--j); while(--i);পড়ার মতো হবে না unsigned int i=16000; do {something;} while(--i);তবে এটি দ্রুত চালাবে এবং PIC এ আরও দক্ষ হবে। কোডটি এআরএম এ স্থানান্তরিত করা হলে, দ্বিতীয় পদ্ধতির আরও দক্ষ হবে, তবে প্রথমটি এখনও কাজ করবে।
সুপারক্যাট

4

নিয়মিত প্রোগ্রামিংয়ে (সর্বাধিক ব্যবহৃত) ভাষাগুলি (সত্যিই) পরিবর্তন হয় না কেন এটি ঠিক একই কারণ:

  1. প্রচুর পরিমাণে বিদ্যমান কোড (গ্রন্থাগার / বিদ্যমান প্রয়োগ)
  2. বৃহত সরঞ্জাম সেট যা এই ভাষাগুলির সাথে কাজ করতে পারে (আইডিই, সিমুলেটর, ...)

4

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

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

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

আমার ধারণা, এই কারণেই লোকেরা পিএইচপি ব্যবহার করে

পিএইচপি ডাবল নখ হাতুড়ি।


আপনি যদি প্রশ্নটি মন্তব্য বা মেটা ব্যবহার করে আলোচনা করতে চান, আপনি যদি কোনও ভাল প্রশ্নের জন্য ব্যবহারকারীকে পিছনে চাপ দিতে চান তবে এটি আপভোট করুন বা মন্তব্য করুন।
কর্টুক

আপনি সর্বদা পাস্কাল ব্যবহার করতে পারেন - এটির জন্য মনে হচ্ছে যে অতিরিক্ত সীমাবদ্ধতা রয়েছে :-)। বা সুপার লিন্টের কিছু ফর্ম।
রাসেল ম্যাকমাহন

2
সি এর পক্ষে সম্ভবত একটি তাত্পর্যপূর্ণ কারণ হ'ল সি ++ কম্পাইলারের চেয়ে বেসিক সি সংকলকটি লেখা সহজ। আরও গুরুত্বপূর্ণ কাজ আমাকে দূরে সরিয়ে দেওয়ার আগে আমি কিছুক্ষণের জন্য কাজ করেছি। মজার জিনিস! একটি সি ++ সংকলক লিখছেন? বিতৃষ্ণা। যদিও আমি ব্যবহারকারী হিসাবে সি ++ পছন্দ করি।
দারন

1
@ রাসেলম্যাকমাহন - আমি পাস্কালটি ব্যবহার করতে পারি না, কারণ আমি যে এমসিসি ব্যবহার করছি তার জন্য পাস্কাল সংকলক নেই।
রকেটম্যাগনেট

@ সদরন - এটি একটি খুব ভাল পয়েন্ট। তবে জিপিপির মতো খুব ভাল ওপেন সোর্স সি ++ কম্পাইলার রয়েছে। তাদের কেবল এটির জন্য একটি ব্যাক এন্ড লিখতে হবে।
রকেটম্যাগনেট

4

স্পার্ক অ্যাডা সম্পর্কে এখানে কি কেউ শুনেনি?

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

আরও নির্ভরযোগ্য স্পার্ক কোডিংয়ের সাথে সি / সি ++ এর তুলনায় গবেষণাগুলি প্রসেসিং গতিতে মাত্র 5-10% ক্ষতি দেখিয়েছে।

আমি মনে করি এম্বেড থাকা সিস্টেমে সি এর বিস্তার অর্থনৈতিক কারণে হয়েছে:

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

  • স্পার্ক সরঞ্জামসেটটি নিজের মধ্যে এবং প্রশিক্ষণ কর্মীদের এটি ব্যবহারের জন্য অতিরিক্ত ব্যয় হতে চলেছে।

  • এম্বেডড কন্ট্রোলার / ম্যানেজমেন্ট সিস্টেমে স্পার্কের (বা অন্যান্য নন-সি ভাষা) যুক্ত হওয়া সুবিধাগুলি ভোক্তার চোখে পণ্যর দামের প্রয়োজনীয় প্রিমিয়ামটিকে ন্যায়সঙ্গত করার পক্ষে যথেষ্ট না - বিশেষত যখন তারা দৃশ্যত "ভাল" প্রতিদ্বন্দ্বী ব্র্যান্ড বিক্রি দেখছে কম দামের জন্য

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

সুতরাং, @ ওয়াটার, অ্যাডা এম্বেড কোডের প্রয়োজনে আপনার আকাশে মারা যাওয়ার বিষয়ে চিন্তা করার দরকার নেই!

এটি ইতিমধ্যে বহু বছর ধরে বিমানের সিস্টেমে রয়েছে। তেমনি আপনার পেসমেকার

তবে ডিশ ওয়াশারের জন্য, বিল্ডিং সার্ভিসেস কন্ট্রোল সিস্টেম, ল্যাব ফার্নেস কন্ট্রোলার এবং অন্যান্য এত কঠোরভাবে নিয়ন্ত্রিত নয় - এটি অতিরিক্ত মাইল যেতে অর্থনৈতিক দিক থেকে কি মূল্যবান?


আকর্ষণীয়, ধন্যবাদ - আমি স্পার্কের কথা শুনিনি, এটি পরীক্ষা করে দেখব।
অলি গ্লেজার

কিছু গবেষণায় সিটিতে বিদ্যমান অ্যাপ্লিকেশনটির তুলনায় একটি গতি বাড়ানো দেখানো হয়েছে - "আইরনসাইডস" ডিএনএস সার্ভারটি দেখুন ...
ব্রায়ান ড্রামমন্ড

3

আমি অনুমান করি যে সি এর জনপ্রিয়তার মূল কারণটি হ'ল প্রথম: সি জনপ্রিয় এবং অনেক লোক এটি জানেন এবং দ্বিতীয়: জাভা, সি # এবং এমনকি সি ++ এর অনেকগুলি নতুন ভাষা আর কোনও এম্বেড করা কাজের জন্য উপযুক্ত নয়। মূলত আমি উল্লিখিত 3 টি অন্যান্য ভাষা গতিশীল মেমোরির উপর অনেক বেশি নির্ভর করে যা এটির সাথে প্রোগ্রামের অ-নিরঙ্কুশ কার্যকর প্রয়োগ করে, বস্তুগুলি, যা তাদের সাথে গতিশীল মেমরি নিয়ে আসে, বৃহত মেমরির প্রয়োজনীয়তা (যেহেতু OO এর আরও গুরুত্বপূর্ণ দিকগুলির মধ্যে একটি হ'ল ব্যবহার ক্লাসের বৃহত সংখ্যক), কেবল সময়ের সংকলনে ক্রমবর্ধমান জনপ্রিয়তা (এবং অনেক এম্বেড থাকা প্ল্যাটফর্মগুলি এমনকি তাদের নিজস্ব সি কোডও সংকলন করতে পারে না) ...

এ ছাড়া এও আছে যে জাভা বা সি # বলে পাঠানো লাইব্রেরিগুলির মধ্যে অনেকগুলি এম্বেডযুক্ত সংখ্যক প্রকল্পের জন্য অকেজো।

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

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

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


1
সি জনপ্রিয় কারণ সি জনপ্রিয়? :-)
স্টিভেনভ

2
@ স্টেভেনভ হ্যাঁ, এটি সত্য। এটি এক ধরণের ইতিবাচক প্রতিক্রিয়া লুপ। এটি যত বেশি জনপ্রিয়, তত জনপ্রিয় gets
AndrejaKo

3

সি একটি খুব সাধারণ ভাষা, এবং একাধিক উপলক্ষে অভিনব সমাবেশের ভাষা হিসাবে চিহ্নিত হয় । এটি আপনার বিধানসভা কোডের উপরের ন্যূনতম পরিমাণের বিমূর্ততা প্রায় সরবরাহ করতে পারে, কেননা সি মেশিন-স্তরীয় নির্মাণে মোটামুটি সরাসরি মানচিত্র তৈরি করে।

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

সি ++ সি এর শীর্ষে উত্স-কোড অনুবাদ স্তর হিসাবে বাস্তবায়িত (প্রকৃতপক্ষে ছিল) হতে পারে, এর অর্থ আপনি সি সি ++ (বা এর কমপক্ষে কিছু সংস্করণ) পান আপনার সি সংকলক সহ বিনামূল্যে।

সি এবং সি ++ এর সাহায্যে, আপনার নতুন চিপের জন্য আপনার প্রয়োজনীয় সমস্ত কিছুর একটি বুটস্ট্র্যাপ আপনি এটিকে শুরু করার যৌক্তিক জায়গা করে তুলেছেন।


3

অন্যরা উল্লেখ না করার কিছু কারণ:

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

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



1

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

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

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

তবে অবশ্যই আপনার কাছে প্রায় সবসময় সি / সি ++ ব্যবহারের বিকল্প রয়েছে, স্পষ্টতই, আমি উপরে উল্লিখিত একই কারণে। এবং বিকল্পটি থাকা এবং আপনি এমনি এমনি এমনি এম্বেড থাকা স্বাচ্ছন্দ্যে সি এর সাথে স্বাচ্ছন্দ্য বোধ করছেন কেন আপনি অন্য ভাষা বেছে নেবেন?


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

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

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

@ ফেসকনেল, আমি রানটাইম পরিবেশের সাথে সি ++ ব্যবহার করি নি এবং আমরা এখানে এম্বেড করা সিস্টেমগুলি নিয়ে আলোচনা করছি, আমি আমার মাইক্রোকন্ট্রোলারগুলিতে কখনও রান-টাইম ব্যবহার করি নি। এই প্রশ্নটি কিছুটা আলাদা তবে আপনি এটি পড়ে থাকতে পারেন, এটি জিজ্ঞাসা করছে যে কেন সি / সি ++ কেবলমাত্র প্রচলিত পছন্দ, কেন সি ++ এর পরিবর্তে সি নয়। আমি স্বীকার করব, সিউটের মতো সাধারণ কিছু ব্যবহার করা আমার মাইক্রোতে কখনও ঘটবে না, আমার কাছে কয়েকটি ফ্রি পিন রয়েছে, স্ক্রিন নয়।
কর্টুক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.