সি ++ কি নেট ব্যাপকভাবে ব্যবহৃত হয়?


25

আমি traditionতিহ্য অনুসারে সি ++ কোডার। গত 12 মাস ধরে আমি প্রচুর সি # কোডিং করছি, এবং সি # এর ব্যবহারিক পদ্ধতির দ্বারা আনন্দিতভাবে অবাক হয়েছি (একবার আমি এটি কোড করার চেষ্টা বন্ধ করে দিয়েছিলাম যেন এটি "আবর্জনা সংগ্রহের সাথে সি ++")।

আমরা সম্প্রতি কিছু স্নাতক পেয়েছি এবং তাদের একজনকে সহায়তা করার সময় আমি বুঝতে পেরেছিলাম যে সে সিটি ++ এর মধ্যে ব্যবহার করছে et তাকে কেন জিজ্ঞাসা করার পরে, তিনি বলেছিলেন যে "তাকে তার পরিচালকের মাধ্যমে সি ++ ব্যবহার করতে বলা হয়েছিল"। সুস্পষ্ট যোগাযোগের সমস্যাটি একদিকে রেখে, আমি ধরে নিই যে সে ব্যবহার করছে et নেট কারণ এটিই কেবল তার কাঠামোর সংস্পর্শে এসেছে।

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

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

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

উত্তর:


32

সি ++। নেট (অথবা, অবিকল, সি ++ / CLI) দ্বারা আছে গার্বেজ কালেকশন আছে, অন্যথায় যে শুধু সবকিছু .NET উপরে রান চাই। সি ++ যথাযথভাবে সামঞ্জস্য রেখে এটি অর্জন করতে, এটি ^সিনট্যাক্স এবং gcnewআবর্জনা-সংগৃহীত ('নিরাপদ') পয়েন্টারগুলির জন্য ব্যবহার করে।

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

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

এছাড়াও নোট করুন যে সি # নিজেই স্থানীয় লাইব্রেরিগুলির সাথে ইন্টারফেস করতে পারে, সুতরাং আপনার যদি বিদ্যমান সি ++ কোডবেস ব্যবহার করতে হয় তবে আপনাকে অবশ্যই তাদের নেট .NET- র বিরুদ্ধে পুনরায় সংকলন করতে হবে না: প্রায়শই, সিওএম বা পি / ইনভোকের মাধ্যমে তাদের সাথে ইন্টারফেস করা ভাল সমাধান is ।


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

দ্বিতীয় - এবং আমার মতে মাইক্রোসফ্ট দেশীয় বিকাশের ক্ষেত্রে সি ++ এর যথাযথ স্থানে পুনরায় সামঞ্জস্য করে যেভাবে বিচার করে স্বচ্ছন্দে তাতে সম্মত হয়েছে I
জোশ গ্রিফার

2
নোট করুন যে ভাষাটি আসলে C ++ / CLI বলা হয়, সি ++ নয় N
svick

@ এসভিক: সঠিক সম্পাদনা করা হয়েছে।
tmadmers

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