সি ++ এর সম্মতিযুক্ত সুবিধাগুলি থেকে জাস্ট কীভাবে বিভক্ত হবে?


35

প্রশ্নাবলি

আমি বুঝতে চেষ্টা করছি যে মরিচা সি ++ এর সামঞ্জস্য সুবিধার ভিত্তিতে মৌলিকভাবে এবং পর্যাপ্তরূপে উন্নত হয়েছে কিনা যাতে সিদ্ধান্ত নিতে পারে যে আমারে রাস্ট শেখার জন্য সময় ব্যয় করা উচিত কিনা।

বিশেষত, আইডিয়োমেটিক জাস্টটি কীভাবে উন্নত হয়, বা যে কোনও হারে আইডিয়োমেটিক সি ++ এর সম্মতিযুক্ত সুবিধাগুলি থেকে আলাদা হয়?

উন্নতি (বা ডাইভারজেন্স) বেশিরভাগ সিনট্যাক্টিক্যাল, নাকি এটি দৃষ্টান্তে যথেষ্ট উন্নতি (ডাইভারজেন্স)? নাকি এটা অন্য কিছু? নাকি আসলেই এটি কোনও উন্নতি (বিচ্যুতি) নয়?


যুক্তিসহ ব্যাখ্যা

আমি সম্প্রতি নিজেকে সি ++ 14 এর সম্মতিসূত্র সুবিধাগুলি শেখানোর চেষ্টা করছি এবং কিছু একটা ঠিক ঠিক মনে হচ্ছে না। কিছু মনে হচ্ছে। কি মনে হচ্ছে? বলা কঠিন.

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

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

উত্তর:


56

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

নিরাপদ এবং অনিরাপদ জং

"মরিচা" দুটি ভাষার সমন্বয়ে গঠিত: একটি যা সিস্টেম প্রোগ্রামিংয়ের বিপদ থেকে আপনাকে আলাদা করার জন্য খুব চেষ্টা করে এবং এরকম কোনও আকাঙ্ক্ষা ছাড়াই আরও শক্তিশালী।

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

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

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

অ-পার্থক্য: ভাগ করা / পরিবর্তনীয় মেমরি

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

অধিকন্তু, সি ++ এর মতো এবং কার্যকরী ভাষার মতো নয়, মরচে আসলেই প্রথাগত অপরিহার্য ডেটা স্ট্রাকচার পছন্দ করে। স্ট্যান্ডার্ড লাইব্রেরিতে স্থির / অপরিবর্তিত লিঙ্কের কোনও তালিকা নেই। আছে std::collections::LinkedListকিন্তু এটা মত std::listC ++ এবং একই কারণে নিরুৎসাহিত std::list(ক্যাশের খারাপ ব্যবহার)।

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

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

অ-পার্থক্য: ডেটা দৌড়গুলি অনির্ধারিত আচরণ (ইউবি)

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

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

পার্থক্য: কঠোর লকিং শৃঙ্খলা

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

আপনার অবশ্যই একটি লক থাকতে পারে যাতে কোনও কার্যকর ডেটা ( Mutex<()>) থাকে না এবং কেবলমাত্র সেই লকটির সাথে স্পষ্টভাবে সংযুক্ত না করে কিছু মেমরি ভাগ করে নেওয়া যায়। তবে, সম্ভাব্য অপরিবর্তিত শেয়ার্ড মেমরির প্রয়োজন unsafe

পার্থক্য: দুর্ঘটনা ভাগাভাগি প্রতিরোধ

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

পরবর্তী পয়েন্টের সাথে এই সম্পর্কগুলি:

পার্থক্য: থ্রেড-সুরক্ষা ট্র্যাকিং

মরিচা টাইপ সিস্টেম থ্রেড সুরক্ষার কিছু ধারণা ট্র্যাক। বিশেষত, Syncবৈশিষ্ট্যটি এমন ধরণের চিহ্নকে বোঝায় যেগুলি ডেটা দৌড়ের ঝুঁকি ছাড়াই বেশ কয়েকটি থ্রেড দ্বারা ভাগ করা যায়, এবং Sendসেইগুলি চিহ্নিত করে যা এক থ্রেড থেকে অন্য থ্রেডে স্থানান্তরিত হতে পারে। এটি পুরো প্রোগ্রাম জুড়েই সংকলক দ্বারা প্রয়োগ করা হয়েছে, এবং এইভাবে গ্রন্থাগার ডিজাইনাররা এমন অপ্টিমাইজেশানগুলি করার সাহস করে যা এই স্থির চেকগুলি ব্যতীত মূর্খতার সাথে বিপজ্জনক হবে be উদাহরণস্বরূপ, সি ++ এর std::shared_ptrযা সর্বদা তার রেফারেন্স গণনাটি হস্তান্তর করতে পারমাণবিক ক্রিয়াকলাপগুলি ব্যবহার করে, ইউবি এড়াতে যদি কোনও shared_ptrথ্রেড দ্বারা ব্যবহৃত হয় তবে। মরচে হয়েছে Rcএবং Arc, যা শুধুমাত্র যে পার্থক্য Rc ব্যবহারসমূহ অ পারমাণবিক refcount অপারেশন এবং threadsafe (অর্থাত বাস্তবায়ন করে না Syncবা Send) যখন Arcহয় খুব মতshared_ptr (এবং উভয় বৈশিষ্ট্য প্রয়োগ করে)।

মনে রাখবেন যে কোনও ধরণের যদি ম্যানুয়ালি সিঙ্ক্রোনাইজেশন প্রয়োগ করতে ব্যবহার unsafeনা করা হয় তবে বৈশিষ্ট্যের উপস্থিতি বা অনুপস্থিতি সঠিকভাবে অনুমান করা হয়।

পার্থক্য: খুব কঠোর নিয়ম

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

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

পার্থক্য: কম সরঞ্জাম

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

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

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


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

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

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

Note that if a type doesn't use unsafe to manually implement synchronization, the presence or absence of the traits are inferred correctly.আসলে এটি এখনও unsafeউপাদানগুলির সাথে করে। কেবল কাঁচা পয়েন্টারগুলিই নয় Syncবা Shareএর অর্থ হ'ল ডিফল্ট স্ট্রাক্টের সাথে সেগুলিও থাকবে না।
হাউলেথ

@ ŁukaszNiemier এটা কাজ করা ঠিক ঘটতে পারে, কিন্তু বিলিয়ন উপায়ে একটি অনিরাপদ-ব্যবহার টাইপ গুটান পারে Sendবা Syncএমনকি এটা সত্যিই উচিত না যদিও।

-2

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

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

নীচে রুট ডক্সের একটি উদ্ধৃতি দেওয়া আছে।

মালিকানা বিধিগুলি বার্তা প্রেরণে গুরুত্বপূর্ণ ভূমিকা পালন করে কারণ তারা আমাদের নিরাপদ, সমবর্তী কোড লিখতে সহায়তা করে। সমসাময়িক প্রোগ্রামিংয়ের ত্রুটিগুলি রোধ করা আমাদের জাস্ট প্রোগ্রামগুলি জুড়ে মালিকানা সম্পর্কে চিন্তাভাবনা করে ট্রেড-অফ করে আমাদের লাভ। - মানগুলির মালিকানার সাথে বার্তা প্রেরণ করা।

যদি এরলং কঠোর এবং গো একটি মুক্ত রাষ্ট্র হয় তবে মরিচা একটি আয়াতে রাজ্য।

আপনি প্রোগ্রামিং ভাষাগুলির কনকুরেনসি মতাদর্শগুলি থেকে আরও তথ্য পেতে পারেন : জাভা, সি #, সি, সি +, গো এবং জং


2
স্ট্যাক এক্সচেঞ্জে স্বাগতম! দয়া করে মনে রাখবেন যে আপনি যখনই নিজের ব্লগে লিঙ্ক করেন তখন আপনাকে এতো স্পষ্ট করে বলা দরকার; দেখতে সহায়তা কেন্দ্র
গ্লোরফাইন্ডেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.