এক বছর আগে, দ্য নিরাপদ সি ++ প্রস্তাব তৈরি করা হয়েছিল। লক্ষ্যটি ছিল সি ++ এ একটি নিরাপদ সাবসেট/প্রসঙ্গ যুক্ত করা যা বিদ্যমান সি ++ কোড না ভেঙে মরিচা সরবরাহ করে তার অনুরূপ শক্তিশালী গ্যারান্টি (মেমরি সুরক্ষা, টাইপ সুরক্ষা, থ্রেড সুরক্ষা) দেয়। এটি সি ++ এর একটি এক্সটেনশন বা সুপারসেট ছিল। অপ্ট-ইন প্রক্রিয়াটি ছিল নিরাপদ প্রসঙ্গে অন্তর্ভুক্ত কোডের অংশগুলি স্পষ্টভাবে চিহ্নিত করা। লেখকরা এমনকি বলেছেন:
নিরাপদ প্রসঙ্গে কোডটি মরিচাগুলিতে লিখিত কোড হিসাবে একই শক্তিশালী সুরক্ষা গ্যারান্টি প্রদর্শন করে।
বাকীগুলি সাধারণ সি ++ অর্থে “অনিরাপদ” থেকে যায়। এর অর্থ হ’ল বিদ্যমান কোডটি কাজ করে চলেছে, যখন নতুন বা রিফ্যাক্টরযুক্ত অংশগুলি সুরক্ষা অর্জন করতে পারে। যারা মরিচা লেখেন তাদের জন্য, নিরাপদ সি ++ এর মরিচাগুলির সাথে অনেকগুলি মিল রয়েছে, কখনও কখনও সি ++ এর নকশার সাথে সামঞ্জস্য করার জন্য সামঞ্জস্য রয়েছে। এছাড়াও, যেহেতু সি ++ এর ইতিমধ্যে “অনিরাপদ কোড” এর একটি বিশাল বেস রয়েছে, নিরাপদ সি ++ কে নিরাপদ এবং অনিরাপদ মিশ্রণের জন্য এবং ইনক্রিমেন্টাল মাইগ্রেশনের জন্য ব্যবস্থা সরবরাহ করতে হবে। সেই অর্থে, নিরাপদ সি ++ এর সমস্ত নিরাপদ বৈশিষ্ট্যগুলি অপ্ট-ইন। বিদ্যমান কোড সংকলন এবং আগের মতো কাজ করে। নিরাপদ প্রসঙ্গে পরিচয় করানো কোডটি ভেঙে দেয় না যা এটি ব্যবহার করে না।
প্রস্তাবটি আমার আগ্রহ ধরা পড়ে। এটি সি ++ কে সুরক্ষিত করার জন্য একটি ভাল আপস বলে মনে হয়েছিল, যদিও সেখানে উন্মুক্ত বা অমীমাংসিত সমস্যা ছিল, যা খসড়া প্রস্তাবের জন্য সম্পূর্ণ স্বাভাবিক। উদাহরণস্বরূপ, orrow ণ চেকার এবং আজীবন ত্রুটিগুলির জন্য কীভাবে ত্রুটি প্রতিবেদন করা ত্রুটি কাজ করবে, বা জেনেরিক কোড এবং টেমপ্লেটগুলি কীভাবে আজীবন যুক্তি এবং নিরাপদ/অনিরাপদ বাছাইপর্বের সাথে যোগাযোগ করবে। এগুলি কেবল কয়েকটি বিষয়, প্রস্তাবটি খুব দীর্ঘ এবং বিস্তৃত। তদুপরি, আমি কোনও প্রোগ্রামিং ল্যাঙ্গুয়েজ ডিজাইনার নই, তাই আরও ভাল বিকল্প থাকতে পারে।
যাইহোক, আজ আমি আবিষ্কার করেছি যে প্রস্তাবটি আর অনুসরণ করা হবে না। আমি যখন আজ সকালে আবার প্রস্তাবটি সম্পর্কে ভেবেছিলাম, তখন আমি বুঝতে পেরেছিলাম যে আমি কিছু সময়ের জন্য এটিতে কোনও আপডেট পড়িনি। তাই আমি অনুসন্ধান করেছি এবং কিছু উত্তর পেয়েছি রেডডিট।
নিরাপদ সি ++ প্রস্তাবের অন্যতম মূল লেখক শান বাক্সটারের প্রতিক্রিয়া:
সুরক্ষা এবং সুরক্ষা ওয়ার্কিং গ্রুপ নিরাপদ সি ++ এর চেয়ে প্রোফাইলগুলিকে অগ্রাধিকার দেওয়ার পক্ষে ভোট দিয়েছে। প্রোফাইলগুলিকে একটি আপডেটের জন্য জিজ্ঞাসা করুন। নিরাপদ সি ++ চালিয়ে যাওয়া হচ্ছে না।
এবং আবার:
মরিচা সুরক্ষা মডেল কমিটির সাথে অপ্রচলিত। আমার শেষে আরও কাজ এটি পরিবর্তন করবে না। প্রোফাইলগুলি যুক্তি জিতেছে। সমস্ত প্রচেষ্টা ব্যবহার-মুক্ত বাগ, ডেটা রেস, অচলাবস্থা এবং রিসোর্স লিকগুলি স্ট্যান্ডার্ডে ফাঁস করার জন্য প্রোফাইলের ভাষা পাওয়ার জন্য সমস্ত প্রচেষ্টা করা উচিত, যাতে বিকাশকারীরা এটি থেকে উপকৃত হতে পারে।
সুতরাং আমি প্রোফাইল (1) (2) (3) (4) সম্পর্কিত নথিগুলি পড়তে গিয়েছিলাম। আমি যা বুঝতে পেরেছি তা সংক্ষিপ্ত করার চেষ্টা করি: সেগুলি নির্দিষ্ট সুরক্ষার বৈশিষ্ট্যগুলির গ্যারান্টি দেওয়ার জন্য আপনি কীভাবে ভাষা এবং গ্রন্থাগারটি ব্যবহার করেন সে সম্পর্কে বাধা চাপিয়ে দেয় এমন সি ++ এর মোডগুলি সংজ্ঞায়িত করার জন্য সেগুলি বোঝানো হয়েছে। এগুলি প্রাথমিকভাবে সংকলন-সময়সীমাবদ্ধতা, যদিও বাস্তবে কিছু চেক লাইব্রেরি সুবিধাগুলি ব্যবহার করে প্রয়োগ করা যেতে পারে যা সীমিত রানটাইম ওভারহেড যুক্ত করে। সম্পূর্ণ নতুন ভাষা নির্মাণ প্রবর্তনের পরিবর্তে, প্রোফাইলগুলি বেশিরভাগ বিদ্যমান বৈশিষ্ট্য এবং ব্যবহারগুলিকে সীমাবদ্ধ করে। ধারণাটি হ’ল আপনি একটি প্রোফাইল সক্ষম করতে পারেন এবং এটি ব্যবহার করে যে কোনও কোড নিষেধাজ্ঞাগুলি অনুসরণ করতে সম্মত হয়। আপনি যদি এটি সক্ষম না করেন তবে জিনিসগুলি আগের মতো কাজ করে। সুতরাং এটি পিছনে সামঞ্জস্যপূর্ণ।
প্রোফাইলগুলি কম র্যাডিক্যাল এবং আরও গ্রহণযোগ্য বলে মনে হয়, একটি নিরাপদ বাই-ডিফল্ট সি ++ মরিচা মডেলকে জোর করে না যা সর্বাধিক সাধারণ সি ++ সমস্যাগুলি মোকাবেলা করার লক্ষ্যে। আমি মনে করি নিরাপদ সি ++ আরও উচ্চাভিলাষী ছিল: নতুন সিনট্যাক্স, টাইপ কোয়ালিফায়ার, নিরাপদ বনাম অনিরাপদ প্রসঙ্গ ইত্যাদি প্রবর্তন করা কমিটির কিছু লোক মনে করেছিলেন যে খুব ভারী, এবং প্রোফাইলগুলিকে আরও বাস্তববাদী পথ হিসাবে দেখা হয়। মূল আপত্তিটি সুস্পষ্ট: কেউ বলতে পারেন যে প্রোফাইলগুলি নিরাপদ সি ++ সরবরাহের জন্য কী তার চেয়ে কম সীমাবদ্ধ করে।
এখানে এবং সেখানে মন্তব্যগুলি পড়া, জং মডেলটি গ্রহণের দিকে সম্প্রদায়ের মধ্যে দৃশ্যমান প্রতিরোধের রয়েছে এবং একটি নির্দিষ্ট দৃষ্টিকোণ থেকে আমি এটি বুঝতে পারি। আপনি যদি মরিচা মত লিখতে চান তবে কেবল মরিচা লিখুন। .তিহাসিকভাবে, সি ++ এমন একটি ভাষা যা প্রায়শই অন্যান্য জগতের বৈশিষ্ট্যগুলি গ্রহণ করে এবং সেগুলি নিজের মধ্যে সংহত করে। এই ক্ষেত্রে, আমি মনে করি যে সি ++ এর সুরক্ষা উপগ্রহগুলি ইতিমধ্যে কোনওভাবে অনানুষ্ঠানিকভাবে বিদ্যমান। প্রোফাইলগুলি ইতিমধ্যে অনুশীলনে বিদ্যমান এমন কিছুকে মানিককরণ এবং একত্রিত করার চেষ্টা। প্রযুক্তিগতভাবে, তারা নতুন মৌলিক শব্দার্থবিজ্ঞান যুক্ত করে না। পরিবর্তে, তারা বাধা, বাধ্যবাধকতা এবং গ্যারান্টি সরবরাহ করে।
আমার মতে, কমিটি এবং পুরো সি ++ সম্প্রদায়ের পছন্দগুলি বিবেচনা করে, যদিও আমি নিরাপদ সি ++ প্রস্তাবের প্রশংসা করেছি এবং সি ++ প্রসঙ্গটি বিবেচনা করে আমি বিশ্বাস করি যে প্রস্তাবিত হিসাবে প্রোফাইলগুলিকে মানক করা এবং সংহত করা অনেক বেশি বাস্তবসম্মত পদ্ধতি। প্রোফাইলগুলি নিখুঁত নাও হতে পারে তবে সেগুলি কোনও কিছুর চেয়ে ভাল। এগুলি সম্ভবত প্রয়োগের ক্ষেত্রে অসম এবং নীতিগতভাবে নিরাপদ সি ++ এর চেয়ে দুর্বল হবে। তারা আমাদের রৌপ্য-বুলেট গ্যারান্টি দেবে না, তবে তারা এগিয়ে একটি বাস্তব পথ।
(1) সি ++ 26 এর জন্য মূল সুরক্ষা প্রোফাইল
(3) প্রোফাইল কি?