2025-11-16T02:49:12.114465

Concept-Based Generic Programming in C++

Stroustrup
We present programming techniques to illustrate the facilities and principles of C++ generic programming using concepts. Concepts are C++'s way to express constraints on generic code. As an initial example, we provide a simple type system that eliminates narrowing conversions and provides range checking without unnecessary notational or run-time overheads. Concepts are used throughout to provide user-defined extensions to the type system. The aim is to show their utility and the fundamental ideas behind them, rather than to provide a detailed or complete explanation of C++'s language support for generic programming or the extensive support provided by the standard library. Generic programming is an integral part of C++, rather than an isolated sub-language. In particular, key facilities support general programming as well as generic programming (e.g., uniform notation for types, lambdas, variadic templates, and C++26 static reflection). Finally, we give design rationales and origins for key parts of the concept design, including use patterns, the relationship to Object-Oriented Programming, value arguments, notation, concept type-matching, and definition checking.
academic

C++ তে ধারণা-ভিত্তিক সাধারণ প্রোগ্রামিং

মৌলিক তথ্য

  • পেপার আইডি: 2510.08969
  • শিরোনাম: C++ তে ধারণা-ভিত্তিক সাধারণ প্রোগ্রামিং
  • লেখক: Bjarne Stroustrup (কলাম্বিয়া বিশ্ববিদ্যালয়)
  • শ্রেণীবিভাগ: cs.PL cs.SE
  • প্রকাশনার সময়: ২০২৫
  • পেপার লিঙ্ক: https://arxiv.org/abs/2510.08969

সারসংক্ষেপ

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

গবেষণা পটভূমি এবং প্রেরণা

সমস্যার পটভূমি

১. সাধারণ প্রোগ্রামিংয়ের চ্যালেঞ্জ: ঐতিহ্যবাহী C++ সাধারণ প্রোগ্রামিং স্পষ্ট ইন্টারফেস বিশেষ নির্দিষ্টকরণের অভাব রয়েছে, যার ফলে সংকলন সময়ের ত্রুটি বার্তা অস্পষ্ট হয়, প্রোগ্রামার এবং সংকলক উভয়ই টেমপ্লেট ইন্টারফেস বুঝতে এবং ব্যবহার করতে অসুবিধা পান।

२. টাইপ নিরাপত্তা সমস্যা: C++ C ভাষার অন্তর্নিহিত টাইপ রূপান্তর নিয়ম উত্তরাধিকার সূত্রে পেয়েছে, বিশেষত পাটিগণিত প্রকারগুলির মধ্যে সংকীর্ণকরণ রূপান্তর (যেমন বড় পূর্ণসংখ্যা থেকে ছোট পূর্ণসংখ্যায় রূপান্তর তথ্য হারাতে পারে), এটি ত্রুটি এবং নিরাপত্তা সমস্যার একটি গুরুত্বপূর্ণ উৎস।

३. পরিসীমা পরীক্ষার অভাব: ঐতিহ্যবাহী পয়েন্টার এবং অ্যারে ব্যবহার বাফার ওভারফ্লো ইত্যাদি নিরাপত্তা সমস্যার দিকে পরিচালিত করে, কার্যকর পরিসীমা পরীক্ষা প্রক্রিয়ার অভাব রয়েছে।

গবেষণা প্রেরণা

এই পেপারের মূল প্রেরণা হল C++20 দ্বারা প্রবর্তিত ধারণা (concepts) ব্যবহার করে কীভাবে প্রদর্শন করা যায়:

  • স্ট্যাটিক টাইপ নিরাপদ ইন্টারফেস বিশেষ নির্দিষ্টকরণ প্রদান করা
  • শূন্য ওভারহেড টাইপ নিরাপত্তা বাস্তবায়ন করা
  • ব্যবহারকারী-সংজ্ঞায়িত টাইপ সিস্টেম সম্প্রসারণ তৈরি করা
  • সাধারণ প্রোগ্রামিং এবং সাধারণ প্রোগ্রামিংয়ের একতা বজায় রাখা

ডিজাইন লক্ষ্য

পেপারটি Alex Stepanov দ্বারা প্রস্তাবিত সাধারণ প্রোগ্রামিং লক্ষ্য অনুসরণ করে: "সবচেয়ে সাধারণ, সর্বোচ্চ দক্ষ, সবচেয়ে নমনীয় ধারণা প্রতিনিধিত্ব", এবং নিম্নলিখিত ডিজাইন প্রয়োজনীয়তা পূরণ করে:

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

মূল অবদান

१. ধারণা-ভিত্তিক টাইপ নিরাপদ প্রোগ্রামিং কৌশল প্রস্তাব করা: সংকীর্ণকরণ রূপান্তর দূর করতে এবং পরিসীমা পরীক্ষা প্রদান করতে ধারণা কীভাবে ব্যবহার করতে হয় তা প্রদর্শন করা, একই সাথে শূন্য রানটাইম ওভারহেড বজায় রাখা।

२. ব্যবহারিক টাইপ সিস্টেম সম্প্রসারণ তৈরি করা:

  • Number<T> টাইপ বাস্তবায়ন করা, বিপজ্জনক সংকীর্ণকরণ রূপান্তর দূর করা
  • নিরাপদ Span টাইপ ডিজাইন করা, পরিসীমা পরীক্ষা সহ অ্যারে অ্যাক্সেস প্রদান করা
  • অ্যালগরিদম ডিজাইনে ধারণার প্রয়োগ প্রদর্শন করা

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

४. সাধারণ প্রোগ্রামিংয়ের একতা প্রদর্শন করা: প্রমাণ করা যে সাধারণ প্রোগ্রামিং C++ এর একটি উপাদান, একটি বিচ্ছিন্ন উপভাষা নয়, এবং অন্যান্য ভাষা বৈশিষ্ট্যের সাথে (যেমন lambda, পরিবর্তনশীল টেমপ্লেট, স্ট্যাটিক প্রতিফলন) নির্বিঘ্নে একীভূত।

পদ্ধতি বিস্তারিত

ধারণার মৌলিক সংজ্ঞা

ধারণা হল সংকলন সময়ে মূল্যায়িত ফাংশন (বিধেয়), যা টাইপ পরামিতি গ্রহণ করতে পারে:

template<typename T>
concept Num = integral<T> || floating_point<T>;

সংকীর্ণকরণ রূপান্তর দূর করার পদ্ধতি

সংকীর্ণকরণ সনাক্ত করার ধারণা সংজ্ঞা

template<typename T, typename U>
concept Can_narrow_to = 
    ! same_as<T, U>    // ভিন্ন প্রকার
    && Num<T> && Num<U>   // উভয়ই সংখ্যাসূচক প্রকার
    && ( 
        (floating_point<T> && integral<U>) // দশমিক অংশ হারাতে পারে
        || (numeric_limits<T>::digits > numeric_limits<U>::digits) // কাটা হতে পারে
        || (signed_integral<T>!=signed_integral<U> && sizeof(T)==sizeof(U)) // চিহ্ন পরিবর্তন হতে পারে
    );

রানটাইম পরীক্ষা ফাংশন

template<Num U, Num T>
constexpr bool will_narrow(U u) {
    if constexpr (!Can_narrow_to<T, U>)
        return false;  
    // শুধুমাত্র সংকীর্ণকরণ সম্ভব হলে রানটাইম পরীক্ষা করুন
    T t = u;
    return (t != u);
}

Number প্রকার বাস্তবায়ন

template<Num T>
class Number {
    T val;
public:
    template<Num U>
    constexpr Number(const U u) : val{convert_to<T>(u)} { }
    
    operator T() { return val; }
};

নিরাপদ পরিসীমা অ্যাক্সেসের বাস্তবায়ন

Span প্রকার ডিজাইন

template<class T>
class Span {
    T* p;
    unsigned n;
public:
    Span(Spanable auto& s) : p{data(s)}, n{size(s)} {}
    
    T& operator[](Number<unsigned> i) { 
        return p[check(i)]; 
    }
    
private:
    unsigned check(unsigned nn) {
        if (n <= nn) throw Span_range_error{};
        return nn;
    }
};

অ্যালগরিদমে ধারণার প্রয়োগ

ধারণা সীমাবদ্ধ sort ফাংশন

template<typename R, typename Pred = ranges::less>
concept Sortable_range = 
    ranges::random_access_range<R>
    && sortable<ranges::iterator_t<R>, Pred>;

template<typename R, typename Pred = ranges::less>
requires Sortable_range<R,Pred>
void sort(R& r, Pred p = {}) {
    sort(r.begin(), r.end(), p);
}

প্রযুক্তিগত উদ্ভাবন পয়েন্ট

१. ব্যবহারের নিদর্শন (Use Patterns)

ধারণা ব্যবহারের নিদর্শনের মাধ্যমে প্রয়োজনীয়তা সংজ্ঞায়িত করে, শ্রেণী সংজ্ঞার মতো ফাংশন সংগ্রহের মাধ্যমে নয়:

template<typename T, typename U = T>
concept equality_comparable = requires(T a, U b) {
    {a==b} -> Boolean;
    {a!=b} -> Boolean;
    {b==a} -> Boolean;
    {b!=a} -> Boolean;
}

এই পদ্ধতির সুবিধা:

  • মিশ্র নিদর্শন পাটিগণিত পরিচালনা করা
  • অন্তর্নিহিত রূপান্তর পরিচালনা করা
  • ইন্টারফেস স্থিতিশীলতা প্রদান করা

२. ফাংশন হিসাবে ধারণা

ধারণা টাইপের টাইপ বা টাইপের বৈশিষ্ট্য হিসাবে নয়, সংকলন সময়ের ফাংশন হিসাবে ডিজাইন করা হয়েছে:

  • টাইপের বৈশিষ্ট্য সম্পর্কে জিজ্ঞাসা করতে পারে ("আপনি একটি পুনরাবৃত্তিকারক?")
  • একাধিক পরামিতি গ্রহণ করতে পারে
  • সংকলন সময়ে সম্পাদিত হয়, অত্যন্ত দক্ষ

३. শূন্য ওভারহেড বিমূর্ততা

সংকলন সময়ের পরীক্ষা এবং শর্তসাপেক্ষ সংকলনের মাধ্যমে শূন্য রানটাইম ওভারহেড অর্জন করা:

template<Num U, Num T>
constexpr bool will_narrow(U u) {
    if constexpr (!Can_narrow_to<T, U>)
        return false;  // সংকলন সময়ে নির্ধারিত, কোনো রানটাইম খরচ নেই
    // শুধুমাত্র প্রয়োজনে রানটাইম পরীক্ষা করুন
}

পরীক্ষামূলক সেটআপ

কোড উদাহরণ যাচাইকরণ

পেপারটি পদ্ধতির কার্যকারিতা যাচাই করতে অসংখ্য বাস্তব কোড উদাহরণের মাধ্যমে:

१. পাটিগণিত রূপান্তর উদাহরণ: Number প্রকার কীভাবে সংকীর্ণকরণ রূপান্তর প্রতিরোধ করে তা প্রদর্শন করা २. পরিসীমা অ্যাক্সেস উদাহরণ: Span প্রকার কীভাবে নিরাপদ অ্যারে অ্যাক্সেস প্রদান করে তা প্রদর্শন করা ३. সাজানো অ্যালগরিদম উদাহরণ: ধারণা কীভাবে অ্যালগরিদম ইন্টারফেসের স্পষ্টতা এবং নিরাপত্তা উন্নত করে তা প্রদর্শন করা

কর্মক্ষমতা বিবেচনা

  • সংকলন সময়ের পরীক্ষা কোনো রানটাইম ওভারহেড উৎপন্ন করে না
  • শুধুমাত্র সম্ভাব্য সংকীর্ণকরণ ক্ষেত্রে রানটাইম পরীক্ষা করা হয়
  • অন্তর্নিহিত কোডের সমান কর্মক্ষমতা বৈশিষ্ট্য বজায় রাখা

পরীক্ষামূলক ফলাফল

প্রধান অর্জন

१. টাইপ নিরাপত্তা উন্নতি:

Number<int> test() {
    Number<unsigned int> ii = 0;
    ii = 2;   // ঠিক আছে
    ii = -2;  // ব্যতিক্রম - চিহ্ন ত্রুটি ধরা পড়েছে
}

२. পরিসীমা নিরাপত্তা:

Span<int> sa{array};
int x = sa[10];   // ঠিক আছে যদি পরিসীমায় থাকে
int y = sa[-1];   // ব্যতিক্রম - নেতিবাচক সূচক ত্রুটি ধরা পড়েছে

३. অ্যালগরিদম ইন্টারফেস উন্নতি:

sort(vec);  // সংক্ষিপ্ত ইন্টারফেস
sort(lst);  // সংকলন সময়ের ত্রুটি: তালিকা র্যান্ডম অ্যাক্সেস সমর্থন করে না

কর্মক্ষমতা বৈশিষ্ট্য

  • সংকলন সময়ের পরীক্ষা: শূন্য রানটাইম ওভারহেড
  • রানটাইম পরীক্ষা: শুধুমাত্র প্রয়োজনে, ন্যূনতম ওভারহেড
  • অপ্টিমাইজেশন বান্ধব: ইনলাইনিং এবং অন্যান্য সংকলক অপ্টিমাইজেশন সমর্থন করে

সম্পর্কিত কাজ

সাধারণ প্রোগ্রামিং ইতিহাস

  • STL ধারণা: পুনরাবৃত্তিকারক, ক্রম, ধারক (১৯৯০ এর দশকের প্রথম দিকে)
  • গাণিতিক ধারণা: মোনোয়েড, গ্রুপ, রিং, ক্ষেত্র (শত শত বছরের ইতিহাস)
  • গ্রাফ তত্ত্ব ধারণা: প্রান্ত, শীর্ষ, গ্রাফ, DAG (১৭৩৬ সাল থেকে)

C++ ধারণা উন্নয়ন

  • ২০০३: প্রথম ধারণা প্রস্তাব
  • २००९: C++0x ধারণা সরানো হয়েছিল
  • २०१७: ধারণা পুনরায় প্রবর্তিত হয়েছিল
  • २०२०: C++20 আনুষ্ঠানিকভাবে ধারণা অন্তর্ভুক্ত করেছে

অন্যান্য সীমাবদ্ধতা সিস্টেমের সাথে তুলনা

পেপারটি নির্দেশ করে যে অনেক সীমাবদ্ধতা সিস্টেম ফাংশন সংগ্রহের উপর নির্ভর করে (শ্রেণী সংজ্ঞার মতো), যখন C++ ধারণা একটি কার্যকরী পদ্ধতি ব্যবহার করে, আরও বেশি নমনীয়তা প্রদান করে।

উপসংহার এবং আলোচনা

প্রধান উপসংহার

१. ধারণা সংকলন সময়ের ফাংশন: এই ডিজাইন নমনীয়তা এবং দক্ষতার সর্বোত্তম ভারসাম্য প্রদান করে।

२. সাধারণ প্রোগ্রামিং এবং OOP পরিপূরক:

  • GP ফাংশন (অ্যালগরিদম) এবং পরামিতি প্রয়োজনীয়তার উপর ফোকাস করে
  • OOP বস্তু এবং ইন্টারফেস বাস্তবায়নের উপর ফোকাস করে
  • উভয়ই কার্যকরভাবে একসাথে ব্যবহার করা যেতে পারে

३. একীভূত প্রোগ্রামিং মডেল: সাধারণ প্রোগ্রামিং একটি বিচ্ছিন্ন উপভাষা নয়, বরং C++ এর একটি উপাদান।

ডিজাইন দর্শন

ধারণা বনাম শ্রেণী শ্রেণিবিন্যাস

  • ধারণা: টেমপ্লেট তার পরামিতিতে সম্পাদন করতে সক্ষম হওয়া উচিত এমন অপারেশন নির্দিষ্ট করে
  • শ্রেণী শ্রেণিবিন্যাস: পূর্বনির্ধারিত ইন্টারফেস, দূরদর্শিতা প্রয়োজন
  • ধারণা আরও নমনীয়: প্রয়োজনীয়তা পূরণ করে এমন যেকোনো প্রকার সংমিশ্রণ ব্যবহার করতে পারে

প্রতীকী প্রতিনিধিত্ব পছন্দ

// আদর্শ কার্যকরী সিনট্যাক্স (গৃহীত হয়নি)
void sort(Sortable_range& r);

// প্রকৃত গৃহীত আপস সিনট্যাক্স
void sort(Sortable_range auto& r);

ভবিষ্যত উন্নয়ন দিকনির্দেশনা

१. স্বতঃসিদ্ধ (Axioms): বিশ্লেষক এবং কোড জেনারেটরের জন্য নির্মাণের শব্দার্থিক বৈশিষ্ট্য নির্দিষ্ট করা २. আউটপুট পরিসীমা: পরিসীমা নিরাপত্তা বৃদ্ধি করা, আউটপুট অপারেশনের জন্য পরিসীমা পরীক্ষা করা ३. প্রতীকী প্রতিনিধিত্ব উন্নতি: ধারণার পরে auto অপ্রয়োজনীয়তা দূর করা ४. শ্রেণীর ওভারলোডিং: ধারণার উপর ভিত্তি করে শ্রেণী ওভারলোডিং অনুমতি দেওয়া ५. প্যাটার্ন ম্যাচিং: কার্যকরী প্রোগ্রামিং শৈলীর প্যাটার্ন ম্যাচিং ६. একীভূত ফাংশন কল: কার্যকরী এবং OOP শৈলী কল সিনট্যাক্স একীভূত করা

গভীর মূল্যায়ন

সুবিধা

१. শক্তিশালী ব্যবহারিকতা: সরাসরি প্রয়োগযোগ্য প্রোগ্রামিং কৌশল প্রদান করে, বাস্তব টাইপ নিরাপত্তা সমস্যা সমাধান করে।

२. তত্ত্ব এবং অনুশীলনের সমন্বয়: গভীর তাত্ত্বিক ভিত্তি (গাণিতিক ধারণা) এবং নির্দিষ্ট বাস্তবায়ন উদাহরণ উভয়ই রয়েছে।

३. শূন্য ওভারহেড ডিজাইন: সংকলন সময়ের পরীক্ষা ডিজাইনের মাধ্যমে, টাইপ নিরাপত্তা অর্জন করা হয় কর্মক্ষমতা হ্রাস ছাড়াই।

४. ব্যাপক ডিজাইন বিবেচনা: মৌলিক সিনট্যাক্স থেকে উন্নত বৈশিষ্ট্য (যেমন স্ট্যাটিক প্রতিফলন) পর্যন্ত সম্পূর্ণ ডিজাইন স্থান কভার করে।

५. কর্তৃত্ব: লেখক Bjarne Stroustrup হলেন C++ ভাষার স্রষ্টা, অপ্রতিদ্বন্দ্বী কর্তৃত্ব রয়েছে।

অসুবিধা

१. খাড়া শেখার বক্ররেখা: ধারণার সিনট্যাক্স এবং ব্যবহারের নিদর্শন শিক্ষানবিসদের জন্য জটিল হতে পারে।

२. সংকলন সময় প্রভাব: বিস্তৃত সংকলন সময়ের পরীক্ষা সংকলন সময় বৃদ্ধি করতে পারে, পেপার এটি যথেষ্ট আলোচনা করে না।

३. পিছিয়ে সামঞ্জস্যতা চ্যালেঞ্জ: সামঞ্জস্য বজায় রাখা হয়েছে, তবে নতুন এবং পুরানো কোড মিশ্রিত ব্যবহার করার সময় বিভ্রান্তি হতে পারে।

४. ত্রুটি বার্তা গুণমান: যদিও ধারণা ত্রুটি বার্তা উন্নত করেছে, জটিল ধারণার ত্রুটি বার্তা এখনও বোঝা কঠিন হতে পারে।

প্রভাব

१. C++ সম্প্রদায়ের উপর প্রভাব: C++20 ধারণার বাস্তব প্রয়োগের জন্য কর্তৃপক্ষ নির্দেশনা প্রদান করে।

२. অন্যান্য ভাষার অনুপ্রেরণা: ধারণা ডিজাইন দর্শন অন্যান্য ভাষার সীমাবদ্ধতা সিস্টেম ডিজাইনকে প্রভাবিত করতে পারে।

३. শিক্ষামূলক মূল্য: সাধারণ প্রোগ্রামিং শিক্ষার জন্য চমৎকার শিক্ষা উপকরণ প্রদান করে।

४. ব্যবহারিক মূল্য: প্রদত্ত কৌশল সরাসরি কোডের টাইপ নিরাপত্তা উন্নত করতে ব্যবহার করা যেতে পারে।

প্রযোজ্য পরিস্থিতি

१. সিস্টেম-স্তরের প্রোগ্রামিং: উচ্চ কর্মক্ষমতা এবং টাইপ নিরাপত্তা প্রয়োজন এমন নিম্ন-স্তরের কোড।

२. লাইব্রেরি ডিজাইন: সাধারণ লাইব্রেরির জন্য স্পষ্ট ইন্টারফেস বিশেষ নির্দিষ্টকরণ প্রদান করা।

३. শিক্ষা এবং প্রশিক্ষণ: সাধারণ প্রোগ্রামিং ধারণা এবং কৌশলের শিক্ষা উপকরণ হিসাবে।

४. কোড পুনর্গঠন: বিদ্যমান অনিরাপদ কোডকে টাইপ নিরাপদ সংস্করণে পুনর্গঠন করা।

রেফারেন্স

পেপারটিতে C++ ভাষা ডিজাইন থেকে সাধারণ প্রোগ্রামিং তত্ত্ব পর্যন্ত বিভিন্ন দিক কভার করে সমৃদ্ধ রেফারেন্স রয়েছে, প্রধানত অন্তর্ভুক্ত:

  • Alex Stepanov এর STL এবং সাধারণ প্রোগ্রামিং সম্পর্কে যুগান্তকারী কাজ
  • C++ মান কমিটির প্রযুক্তিগত রিপোর্ট এবং প্রস্তাব
  • লেখক নিজের C++ ডিজাইন এবং বিবর্তন সম্পর্কে ঐতিহাসিক নথি
  • সম্পর্কিত প্রোগ্রামিং ভাষা তত্ত্ব গবেষণা

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