সি ++ বনাম আ আরডিনো ভাষা?


81

আরডুইনো ব্যবহার করার সময় প্রতিটি ভাষার সুবিধা কী কী?

আমি ভাবছি এটি একটি ভাল সাধারণ প্রশ্ন, তবে আমি কেন জিজ্ঞাসা করছি যে কেউ আমাকে টিপ দিতে চায় কিনা সে সম্পর্কে আমি কিছুটা যুক্ত করব।

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

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

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


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

4
এটি "আরডুইনো প্রোগ্রামিং ল্যাঙ্গুয়েজ" বলতে বোঝায় (এবং আসলে কী রয়েছে তার অর্থ) এর মোটামুটি পারস্পরিক বিরতি
অ্যাডজুনেক্টপ্রসফেসরফ্যালকন

10
C++ vs. The Arduino Language?- "যাও Arduino ভাষা" হল সি ++। ফাংশন প্রোটোটাইপগুলি করে আপনাকে বাঁচাতে কিছুটা প্রাকপ্রসেসিং রয়েছে, তবে এটি অবশ্যই সি ++।
নিক গ্যামন

2
আরডুইনো ভাষা বলে কিছু নেই। এটি কেবল একটি গ্রন্থাগার।
ওভারড্রাইভার

2
মন্তব্যের মতো প্রশ্নের সাথে এতটা সম্পর্কিত নয়: আটল স্টুডিও বিনামূল্যে এবং আইএমএইচও এটি আরডুইনো প্রোগ্রামিংয়ের জন্য ভিজ্যুয়াল স্টুডিওর চেয়ে ভাল। এছাড়াও ভিজুয়াল মাইক্রো প্লাগইন সমর্থন করে, যদিও প্রোগ্রামিং এবং ডিবাগিং আরডুইনোগুলির জন্য এটি মোটেই প্রয়োজন হয় না।
সাইবারপঙ্ক

উত্তর:


55

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

http://playground.arduino.cc/Code/Eclipse

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

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


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

1
জুলিয়েন বেলে রচিত একটি দুর্দান্ত বই "সি প্রোগ্রামিং ফর আরডুইনো" রয়েছে যা দরকারী। এটি সি ++ ভাষা নয় তবে ভিত্তিটি বুঝতে আপনাকে সহায়তা করা উচিত।
fenix688

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

1
সি ++ ওও বৈশিষ্ট্যগুলিকে সমর্থন করে, সি ভাষা দেয় না।
ক্রিস ও

1
@ ফ্রেন্ডোফকিম ঠিক আমার অর্থের অর্থ নয় (প্রযুক্তিগতভাবে আপনি পারলেও, নন-মেগাবাইট সিরিয়াল যোগাযোগের জন্য একটি সফ্টওয়্যার সমাধান সমর্থন করার পক্ষে যথেষ্ট দ্রুত এবং এতে মোট 5 টি ইউ (এস) আরটিএস রয়েছে তবে আরডুইনো লাইব্রেরি কেবল 4 টি সরবরাহ করে তাদের তবে আইয়র্ক ডিউ বোর্ড কোনওভাবেই মার্কিন যুক্তরাষ্ট্রে একটির জন্য পিন সরবরাহ করে না); আরডুইনো লাইব্রেরিগুলি ইউএসআর্টগুলিকে অ্যাসিঙ্ক্রোনাস মোড ব্যবহার করার জন্য কনফিগার করে, তবে আমার 6 এমবিপিএস পর্যন্ত সিঙ্ক্রোনাসের প্রয়োজন ছিল (এবং আমাকে এসপিআই মোড ব্যবহার করতে হয়েছিল কারণ ইনপুটটি কাঁচা বিটস্ট্রিম হিসাবে বিবেচনা করতে হত তাই স্টপ বিট / ইত্যাদি ইত্যাদি ছিল না) এতেও জড়িত ডিফল্ট PIO নিয়ামক কনফিগার পরিবর্তন করে।
জ্যাব

48

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

ফাংশনগুলি ছাড়াও, গ্রন্থাগারগুলি কিছু প্রকারের জন্য বিকল্প নাম যুক্ত করে। উদাহরণস্বরূপ, booleanএবং byteসি ++ মানক হয় না। তবে এগুলি সরাসরি boolএবং এর সমতুল্য unsigned char

এই সমস্ত কিছুর অর্থ আপনি সম্ভবত সাধারণ সি ++ কোডটি বিনা অসুবিধা ছাড়াই সরাসরি আরডিনোতে পোর্ট করতে পারেন। তবে অন্য পথে ফিরে যেতে কিছুটা ছোটখাটো সম্পাদনা দরকার হতে পারে।

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

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

সম্পূর্ণ নমনীয়তার জন্য, আরডুইনো সমর্থন করতে একটি প্লাগ-ইন সহ তৃতীয় পক্ষের আইডিই (যেমন Eclipse) ব্যবহার করুন। এটি আপনাকে আরডুইনো লাইব্রেরি সহ সি ++ এর সমস্ত সুবিধা দেয়।


25

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

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

সুতরাং, "আরডুইনো ভাষা" হ'ল সি ++ বা সি is

সি ++ আবর্জনা সংগ্রহ করা হয় না। এটি স্কোপে ভেরিয়েবল পরিচালনা করে - আপনি যদি লিখেন:

int led = 13;

void blinkTimes(int value)
{
   int i;

   for(i=0;i<value;i++)
   {
      digitalWrite(led, HIGH);
      delay(1000);
      digitalWrite(led, LOW);
      delay(1000);
   }
}

তারপরে আপনি এটি খুঁজে পাবেন ledএবং iআপনি যতবার কল করবেন না কেন, বাড়বে না বা ফাঁস হবে না blinkTimes

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

আপনি এখনও স্মৃতিশক্তি হারিয়ে ফেলতে পারেন, যদি আপনি বিশাল ক্লাস তৈরি করেন এবং সেগুলি গভীরভাবে বাসাযুক্ত ফাংশনগুলিতে ব্যবহার করেন তবে সাধারণভাবে আপনি যতক্ষণ না ডিল newএবং freeফাংশনগুলি শুরু করেন ততক্ষণ আপনি সমস্যার মধ্যে পড়বেন না ।

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


1
ঠিক আছে, যদি তাত্ক্ষণিক জিনিসগুলি (নতুন সহ) আবর্জনা সংগ্রহ না করা হয় তবে আমাকে এটিও শিখতে হবে। আমি মনে করি সি ++ তে যে কোনও বই এতে আবরণ করবে। একটি উত্তরের জন্য ধন্যবাদ!
কিম এর বন্ধু

14

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

আরডুইনো এবং সি ++ এর মধ্যে প্রধান পার্থক্যগুলি মেমরি স্টোরেজে রয়েছে। সাধারণত একটি আধুনিক কম্পিউটারে 2 জিবি র‌্যামের বেশি থাকে, আরডুইনো ইউনোটিতে 2 কেবি (1 মিলিয়ন গুণ কম) থাকে। আরডুইনো 32 টি বিট কম্পিউটার ব্যবহার করে তার স্থিতিতে 8-বিট নির্দেশাবলীও ব্যবহার করে। এটি মূলত আপনি কোনও ভেরিয়েবলে সঞ্চয় করতে পারবেন এমন পরিমাণের পরিমাণকে প্রভাবিত করবে।

আপনি যদি আরডিনো দুনিয়ায় খুব নতুন হন তবে আপনার একটি টিউটোরিয়ালটি সন্ধান করা উচিত, কারণ সেখানে অনেকগুলি ভাল রয়েছে।


আপনি স্মৃতি উল্লেখ। আমার ডিউ আছে যা র‌্যামের 96KB পেয়েছে। তবে আমি সর্বশেষ জিনিসটি হ'ল মেমরি ফাঁস হওয়ার কারণে হেলিকপ্টারটি ক্র্যাশ করতে হবে (একটি খুব ব্যয়বহুল ক্যামেরা হেলিকপ্টারটিতে লাগানো)।
কিম এর বন্ধু

অন্যথায় সুনির্দিষ্ট না করা থাকলে কি সি ++ তে থাকা স্মৃতি স্বয়ংক্রিয়ভাবে পরিচালিত হবে (জাভাতে আবর্জনা সংগ্রাহকের মতো)?
কিমের বন্ধু

2
সি ++ স্ট্যান্ডার্ড মেমরির আকারগুলি সম্পর্কে কোনও গ্যারান্টি দেয় না - সি ++ ইতিমধ্যে সংশোধন ছাড়াই এমবেডেড হার্ডওয়্যারে চালিত হয়।
মাইকেল থর্প

2
আপনি হার্ডওয়্যার প্ল্যাটফর্মগুলির মধ্যে পার্থক্য বর্ণনা করছেন, যদিও সেখানে সি ++ নেই।
সাইবারবিবোনস

5
@ ফ্রেন্ডোফকিম সি ++ এ, ভেরিয়েবল / অবজেক্ট ইনস্ট্যান্ট করার দুটি ভিন্ন উপায় রয়েছে। আপনি যদি স্থানীয়ভাবে এগুলি ইনস্ট্যান্ট করেন (যেমন int blah = 5;) তবে তারা সুযোগের বাইরে চলে গেলে (যেমন লুপ বা ফাংশনের শেষে) স্বয়ংক্রিয়ভাবে ধ্বংস হয়ে যায় destroyed যাইহোক, আপনি যদি তাদের গাদা (উদাহরণস্বরূপ int *blah = new int(5);) এ ইনস্ট্যান্ট করেন তবে আপনাকে সেগুলি নিজেই মুক্তি দিতে হবে। এম্বেড থাকা প্রোগ্রামিংয়ে হিপ ডেটা ব্যবহার করা সাধারণত বুদ্ধিমানের কাজ নয়।
পিটার ব্লুমফিল্ড

14

--- আপডেট 170412
আমি একটি স্বতন্ত্র "আরডুইনো সি ++" বিদ্যমান দৃষ্টিকোণ থেকে তিন বছর আগে আমার মূল উত্তরটি লিখেছিলাম। আইডিই ব্যবহৃত ভাষা হয় , কারণ এটি গনুহ সি ++ কম্পাইলার দ্বারা বাস্তবায়িত হয়, মানক সি ++। "আপাতদৃষ্টিতে" পার্থক্যের সূত্রপাত কারণ আইডিই ভাষার নতুন আগতদের কয়েকটা 'গোটাচা' এড়াতে সাহায্য করার জন্য কিছু প্রাক প্রসেসিং করবে, কিছু # অন্তর্ভুক্ত করে, এফ / প্রাক্তন filling তবে আপনি - এবং আমি করতে পারি - এটিতে সঠিক সি ++ লিখুন এবং আপনি যা যা প্রত্যাশা করেছেন ঠিক তেমন পান।
--- শেষ আপডেট

যাদের বাস্তবায়ন আপনি পুরোপুরি বুঝতে পেরেছেন তাদের মধ্যে আপনার সি ++ ভাষার বৈশিষ্ট্যগুলির ব্যবহার সীমাবদ্ধ করবেন না। কিছু বৈশিষ্ট্য রয়েছে যা উত্স কোড পড়া থেকে সুস্পষ্টর চেয়ে আরও বেশি সংস্থান-কোড সহ সংকলন করে। Allyচ্ছিকভাবে উত্পাদিত .lss (একত্রিত উত্স এবং সমাবেশ) তালিকা আপনাকে যখন সন্ধানী ছিল না তখন সি ++ সংকলকটি কী করেছিল তার কিছুটা ভাল অন্তর্দৃষ্টি দিতে পারে।

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

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

[মূল উত্তর] - সি ++ হ'ল একটি মানক ভাষা। এটি এম্বেডড সিস্টেম সহ অনেক পরিবেশে ব্যাপকভাবে মোতায়েন করা হয় এবং অতএব "আরডুইনো" ভাষা-এর মতো সি ++ ভাষার চেয়ে আরও ভালভাবে পরীক্ষা করা হয়। আপনার পরিকল্পনা মতো মিশন-সমালোচনামূলক / সুরক্ষা-সমালোচনামূলক অ্যাপ্লিকেশনগুলির জন্য এটি বিশেষত গুরুত্বপূর্ণ। ক্র্যাশ কোডটির অর্থ ক্র্যাশ হওয়া 'হেলিকপ্টার এবং এমনকি এটি কাউকে আঘাত না করলেও এটি আপনার ব্যয়বহুল মেশিনটি ভেঙে দেবে

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

  • আরডুইনো আইডিই আপনার পিঠের পিছনে জিনিসগুলি করে - বিশেষত এটি যখন .h ফাইলগুলিকে অন্তর্ভুক্ত করে যখন মনে করে যে আপনার প্রয়োজন আছে। এমনকি যদি এটি সঠিক হয় তবে আপনি সত্যিই লিখতে চান, বা কমপক্ষে দেখতে এবং বুঝতে চান, সংকলকটি যা যা দেখতে চলেছে। প্রোগ্রামিং ভাষা কম্পিউটারের জন্য তৈরি হয় না (কম্পিউটার প্রাতঃরাশের জন্য বিট খায়); এগুলি লোকেদের জন্য তৈরি করা হয়েছে, বিশেষত এমন লোকেরা যারা আপনাকে এই প্রকল্পে অনুসরণ করে, তাদের মধ্যে সবচেয়ে গুরুত্বপূর্ণ হতে পারে ... আপনি !, যখন আপনি একটি মডিউল লেখার months মাস পরে, আপনাকে এটি উন্নত করতে ফিরে আসতে হবে, বা আরও কিছু সম্ভবত, এটি ঠিক করুন। আপনি সংকলকটি যা দেখায় তা দেখতে সত্যিই সক্ষম হতে চান।


2
এটি সত্যিই ভাল উত্তর। এটি আপনার কাছে সি ++ পছন্দ করে এবং এটিও আমার পছন্দ করা উচিত বলে পরিষ্কার মনে হয়! ... তবে গম্ভীরভাবে, আমি বুঝতে পারি যে আমি বিভিন্ন সিউরারের সাথে "যোগাযোগ" কীভাবে কাজ করে তা বুঝতে পারলেই আমি সি ++ এ চলে যাব।
কিমের বন্ধু

আপনি কি বিষয় সম্পর্কে ভাল কোন বই জানেন? (অন্যান্য ভাষায় বছরের পর বছর ধরে প্রোগ্রামিং করা আমার জন্য উপযুক্ত, এবং কেবল সি ++ এর "এমবেডেড অংশ" প্রয়োজন))
কিম

আপনি কি ভাবেন যে এক্সিলারেটেড সি ++ এর জন্য একটি ভাল বই?
কিমের বন্ধু

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

1
... গতি এবং মেমরির স্থান উন্নতির জন্য সরাসরি I / O নিবন্ধগুলিতে লেখার পরিকল্পনা করুন। ব্লিঙ্কি.পি.পি এবং হ্যালো.ক.পি এর মতো প্রোগ্রামগুলি হার্ডওয়ারের সাথে গোলমাল শুরু করার জন্য ভাল জায়গা। একটি সরল মাল্টিমিটার এবং ডান বর্তমান-সীমাবদ্ধ প্রতিরোধকগুলি সহ কয়েকটি এলইডি স্থায়ীভাবে এক পাতে সোনারড যুক্ত করুন এবং আপনার প্রচেষ্টার ফলে আপনি যদি বাস্তব হতে পারেন তবে সাধারণ দেখতে পারা উচিত। এরপরে, কোনও হার্ডওয়্যারের জন্য ডেটা-শিটগুলি পড়ুন যা আপনাকে কী সিগন্যালগুলি পড়তে পারে তা শিখতে আগ্রহী করে / সেগুলি খেলতে তাদের লিখতে হবে। তাপমাত্রা সেন্সরগুলি ব্যবহার করা সহজ এবং প্রত্যেকেরই কোনও ফ্রিজে লগার দরকার নেই? আনন্দ কর!
জে রবার্ট

10

আমার অভিজ্ঞতায়, সীমাবদ্ধ মেমরির সাহায্যে মেশিনগুলিতে চলাকালীন নতুন এড়ানো এবং মুছে ফেলা ভাল ।

  • মেমরি পরিচালনা নিজেই মূল্যবান প্রোগ্রাম এবং র‌্যাম স্পেস ব্যবহার করে
  • আইএসআর ভেক্টর সংকলন tme এ সেট করা হয়। কোনও শ্রেণীর উদাহরণের জন্য রান সময়ে ISR দাবি করা কঠিন (অসম্ভব?)?
  • সাধারণত কোন সংকলনের সময় আপনি জানতে পারবেন আপনার কোন শ্রেণীর উদাহরণগুলি প্রয়োজন - যেমন 3 বোতাম ডিবিউনসার, একটি ডিসপ্লে ড্রাইভার এবং একটি 2-লাইন ডিসপ্লে ড্রাইভার
  • মেমোরি পরিচালনা যখন আপনি নতুন ব্যবহার করেন বা মুছবেন তখন অজানা বিলম্বের পরিচয় দেয়।

এমন ঘটনাও ঘটতে পারে যেখানে গতিশীল উদাহরণ নির্মাণ ও ধ্বংস ব্যবহার করা ন্যায়সঙ্গত, তবে আমার সন্দেহ হয় যে এগুলি বিরল।


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

1
আপনি যা বলছেন সবই সঠিক তবে আমি দেখতে পাচ্ছি না এটি ওপি প্রশ্নের উত্তর কীভাবে। newএবং deleteআরডুইনো আইডিইতেও উপলব্ধ।
jfpoil ব্যাখ্যা

এটি কোনও উত্তর নয়, তবে খুব সহায়ক তথ্য যা আমি সত্যই প্রশংসা করি।
কিমের বন্ধু

8

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


6

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

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

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

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

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


4

যাও Arduino ভাষা হল সি ++ (যদিও সাধারণত আরো "শ্রেণীর সঙ্গে সি," যা এমবেডেড সিস্টেম মাইক্রোকন্ট্রোলার বিশ্বের আসলে মোটামুটি সাধারণ মত একটি শৈলী প্রয়োগ করা)। গল্পের শেষে. লোকেরা ভাবছে যে এটি ইতিমধ্যে একটি ভিন্ন ভাষা! এটি g ++ সংকলক ব্যবহার করে।

প্রমাণ:

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

এখানে কিছু অতিরিক্ত অন্তর্দৃষ্টি:

আমার নিজের শব্দ:

যাও Arduino কোড হল সি ++। আরডুইনো কোর ফাংশনগুলি হ'ল আপনি ব্যবহার করতে পারেন এমন সি ++ ক্লাস এবং লাইব্রেরির একটি সেট। এটি GNU gcc / g ++ সংকলক ব্যবহার করে নির্মিত এবং সংকলিত । আপনার সেটআপ () এবং লুপ () ফাংশনগুলি কেবল বাধ্যতামূলক মূল () ফাংশনে স্থাপন করা হয় ( ঠিক এখন এখানে - ফাইলটি "মেইন সিপিপি" নয়, যা স্বয়ংক্রিয়ভাবে আপনার জন্য সি ++ উত্স ফাইল) এবং আরও কিছু অতিরিক্ত আছে এটি একটি বৈধ সি ++ প্রোগ্রাম কিনা তা নিশ্চিত করার জন্য প্রাক-প্রসেসিং করা (উদাহরণস্বরূপ: সমস্ত ফাংশন প্রোটোটাইপগুলির জন্য স্ক্যানিং [ওরফে: ঘোষণা]] যাতে আপনি কোনও ফাংশন ব্যবহার করতে পারেন যদিও এর প্রোটোটাইপটি আপনার .ino ফাইলে পরে আসে)। আর্দুইনোর বেশিরভাগ অংশ "সি স্টাইলে" লেখা হয়, এবং তাই # extern "C" {}সি ++ প্রতিরোধ করার জন্য চারপাশের ধনুর্বন্ধনী প্রয়োজন requires"নেম-ম্যাংলিং" ( "নাম সাজসজ্জা / নাম সাজসজ্জা" নামেও পরিচিত ) ফাংশনটি এভিআর-লিবিসি দ্বারা প্রয়োগ করা সি ফাংশনগুলিতে কল করে , এটি এটিএমগা 328 এবং অন্যান্য এভিআর-আর্কিটেকচার মাইক্রোকন্ট্রোলারদের সি প্রয়োগকারী implementation

আরডুইনোর কথা:

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

সূত্র: https://www.arduino.cc/en/Main/FAQ#toc13

আরডুইনো লাইব্রেরি বনাম খাঁটি সি বা সি ++ কখন ব্যবহার করবেন ?

সুতরাং, আরডুইনো ভাষাটি ব্যবহার করুন যেখানে এটি জিনিসগুলিকে সহজতর করে এবং আপনার নিজের ফাংশনগুলি লিখুন যেখানে আপনার আরও বিশেষজ্ঞের প্রয়োজন। কোড লেখার জন্য আমি আইডিই থেকে দ্রুত পালিয়ে যাওয়ার পরামর্শ দিই - কেবল এটি সংকলনের জন্য ব্যবহার করুন। "বাহ্যিক সম্পাদক" ব্যবহার করতে আইডিই পছন্দগুলি সেট করুন। তারপরে আপনার কোডটি লেখার জন্য কোনও পেশাদার উত্স কোড সম্পাদক / আইডিই যেমন সাব্লাইম টেক্সট 3 , অ্যাটম , ভিজ্যুয়াল স্টুডিও কোড , বা একটিলিপস সিডিটি ব্যবহার করুন। তারপরে আপনি সংকলন এবং আপলোড করতে আরডুইনো আইডিইতে ফিরে ক্লিক করতে পারেন। আপনি যদি Eclipse এর সাথে যান তবে Eclipse এ করার উপায় রয়েছে (অন্যান্য উত্তরগুলি এখানে দেখুন, এবং এখানেও আরডুইনো খেলার মাঠের ग्रहण নিবন্ধটি দেখুন ) সুতরাং সেই কৌশলগুলি ব্যবহার করার বিষয়েও বিবেচনা করুন।

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