সি ++ স্ট্যান্ডার্ড কেন প্রকাশের টেম্পলেট গ্রহণ করল না?


17

এটি আমার বোঝা যায় যে 1998 সালে মূল সি ++ স্ট্যান্ডার্ডের আগে একটি কৌশল হিসাবে অভিব্যক্তি টেম্পলেটগুলি উল্লেখযোগ্যভাবে আবিষ্কার করা হয়েছিল Why কেন তারা বেশ কয়েকটি স্ট্যান্ডার্ড শ্রেণীর মতো std::stringএবং স্ট্রিমগুলির পারফরম্যান্স উন্নত করতে ব্যবহার করা হয়নি ?


@ ক্রিসলাইভলি: যদি আমি এই জাতীয় পরিবর্তনের পরামর্শ দিয়ে একটি প্রস্তাব পেশ করি, তবে এটি অবশ্যই একটি সমস্যা হবে যা আমি জানতাম না কেন এটি প্রথমবারের মতো করা হয়নি, এবং এটি একেবারেই প্রাসঙ্গিক প্রোগ্রামিং এবং উত্তরটি খুব নির্দিষ্ট.
ডেড এমএমজি

স্ট্রিংগুলিকে গতি বাড়ানোর জন্য আপনি এক্সপ্রেশন টেম্পলেটগুলির সাথে ঠিক কী করবেন?
jalf

5
@ জাল্ফ: আপনি যদি এটি প্রয়োগ করতে চান তবে আপনি বারবার বরাদ্দের জন্য রিডোনডেন্ট বরাদ্দ operator+অর্জন করতে O(n)এবং শূন্য রেফারেন্সগুলির তুলনায় এখনও দ্রুততর কিছু অর্জন করতে পারতেন । এছাড়াও, আপনি কেবল "নন-কনস্টেড ইনডেক্সে" নয়, লেখায় অনুলিপি করে COW বাস্তবায়নের জন্য অনুকূল করতে পারেন । অন্যান্য অ্যাপ্লিকেশনগুলিও রয়েছে যেখানে এক্সপ্রেশন টেম্পলেটগুলির সাথে পারফরম্যান্স এবং শব্দার্থক উভয়ই উন্নত করা যায়।
ডেড এমএমজি

আমি বুঝতে পারি যে এই প্রশ্নটি কিছুক্ষণ আগে জিজ্ঞাসা করা হয়েছিল, তবে দয়া করে এক্সপ্রেশন টেমপ্লেটগুলি কী এবং / অথবা প্রাসঙ্গিক উপাদানের সাথে লিঙ্ক রয়েছে সে সম্পর্কে কিছু বিশদ বর্ণনা করুন।
einpoklum

উত্তর:


17

এক্সপ্রেশন টেমপ্লেটগুলি টড ভেল্ডহুইজন 1995 সালের জুনে সি ++ রিপোর্ট ম্যাগাজিনের একটি নিবন্ধে প্রকাশ করেছিলেন । ততক্ষণে, স্ট্যান্ডার্ড কমিটি এসটিএলকে সি ++ স্ট্যান্ডার্ডে যুক্ত করার সাথে ইতিমধ্যে ভারীভাবে জড়িত ছিল , এটি একটি কার্য যা নিজেরাই স্ট্যান্ডার্ডকে এক বা দুই বছরের মধ্যে বিলম্ব করেছিল। (এসটিএল ১৯৯৩ সালে কমিটির কাছে উপস্থাপিত হয়েছিল এবং ১৯৯৪ সালে আনুষ্ঠানিকভাবে প্রস্তাব দেওয়া হয়েছিল। মান শেষ করতে আরও চার বছর সময় লেগেছে।)
সি ++ মানককরণ কমিটি স্বেচ্ছাসেবীদের একগুচ্ছ বলে দেওয়া হয়েছে, তাদের মধ্যে কয়েকটি তাদের প্রদানকারী সংস্থাগুলিও সমর্থন করেননি ব্যয়, আমি মনে করি না কারও কাছে সি ++ স্ট্যান্ডার্ডে আরও একটি ধারণা যুক্ত করার জন্য ব্যবহারের কোনও সংস্থান ছিল।

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

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


1
তবে std::stringএবং আইওস্ট্রিমগুলি এসটিএলে ছিল না।
আর মার্টিনহো ফার্নান্দেস

@ আর.মার্টিনহো ফার্নান্দেস: এর অর্থ এই নয় যে কমিটির বাঁচার কোনও সংস্থান ছিল। (এবং এটি একটি এসটিএল ধারক, বিটিডাব্লুতে পরিণত করার জন্য পরিবর্তন করা std::string হয়েছিল )
এসবিআই

2
আমার মনে হয় আমাকে কেবল এটি লিঙ্ক করতে হবে: এসটিডি :: স্ট্রিংটি কি এসটিএলটির অংশ?
Xoo

@ এসবিআই আহ, তা বোঝা যায়।
আর মার্টিনহো ফার্নান্দেস

10

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

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


8
আপনি কিছুটা অন্যায় শুরু করলেন, কারণ তিনি তখন সবেমাত্র তার ডায়াপারকে সবেমাত্র ছাপিয়ে গিয়েছিলেন এবং সম্ভবত "সি ++" উচ্চারণ করতে পারে এমন জায়গায় পৌঁছাতে পারেননি এমন সরল সত্যের কারণে ডেড এমজি এটির পক্ষে লবি করতে পারেনি। :)
এসবিআই

7
মারাত্মকভাবে দুঃখিত যে একটি বাচ্চা হিসাবে, আমি লবিং করিনি: পি
ডেড এমজি

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

এক্সপ্রেশন টেম্পলেটগুলিতে ভ্যালারি ঘাঁটিগুলির libgcc বাস্তবায়ন।
ফ্রেসেল

3

"এক্সপ্রেশন টেমপ্লেট" নামে পরিচিত কৌশলটি টোড ভেল্ডহুইজন এবং আমি উভয়েই কমপক্ষে ১৯৯৪ সালে আবিষ্কার করেছিলেন (টডের নিবন্ধটি ১৯৯৫ সালের, তবে স্টাফ প্রকাশের জন্য কিছুটা সময় লাগে; আমার নিজস্ব কাজ comp.lang.c ++) এ প্রথম প্রদর্শিত হয়েছিল।

আমি আসলে এই সমস্যাটির কারণে সি ++ কমিটির সভায় অংশ নেওয়া শুরু করেছি। আমি ১৯৯ and সালের মার্চ মাসে সান্তা ক্রুজের প্রথম সভায় কমিটিটির কাছে স্ট্যান্ড :: ভ্যালারির কৌশল এবং সম্পূর্ণ পুনরায় নকশা উপস্থাপন করেছি a স্টকহোলেমে যে স্ট্যান্ডার্ড :: ভ্যালর্রে প্রয়োগের জন্য এক্সপ্রেশন টেম্পলেটগুলির সক্ষম করে। আমার অবাক করার জন্য, এই শব্দগুলি এখনও রয়েছে: http://wg21.link/N4727 এ অনুচ্ছেদ [valarray.syn] 29.7.1 এর অনুচ্ছেদ দেখুন ।


1
আশ্চর্যের কিছু কি বাস্তব URL এর পরিবর্তে লিংক সংক্ষেপনকারী ব্যবহারের বিন্দু
মশা

3
@ গ্যাनेट: আপনি যদি কোনও নথির নম্বর জানেন তবে wg21.link এর URL লিখতে এটি তুচ্ছ v আমি এখানে কি করেছি। এটি কোনও ডকুমেন্ট প্রকাশিত হয়েছিল এমন নির্দিষ্ট মেইলিং / বছর সন্ধানে আমাকে বাঁচায় Also এছাড়াও, আমি আশা করছি যে / যখন ডাব্লুজি 21 হোস্টিং ইউআরএলগুলি স্থানান্তরিত করার সিদ্ধান্ত নেয়, wg21.link সেই অনুযায়ী আপডেট করা হবে, সুতরাং বাসি উল্লেখগুলি এড়িয়ে চলে। (অর্থাত্ পয়েন্টটি ছোট করা হচ্ছে না, তবে পঠনযোগ্যতা))
ডেভিড ভি।

0

আমার সেরা অনুমান যে কোনও সংকলক 1998 সালে ফিরে প্রকাশের টেম্পলেটগুলি সংকলন করতে সক্ষম হত না।


1
টড ভেল্ডহুইজন 1996 এর আগে কেএআই এর সি ++ সংকলক ব্যবহার করে তার এক্সপ্রেশন টেম্পলেট কাজ করেছিল। কারণটি আরও

1
সি ++ সম্প্রদায়ের একটি বিরাট শতাংশ ২০০৩ সাল পর্যন্ত এসটিএলকে তার সম্পূর্ণ সম্ভাবনার জন্য ব্যবহার করতে সক্ষম হয় নি (আমি আপনাকে দেখছি, মাইক্রোসফ্ট!), এবং এটি এসটিএলকে স্ট্যান্ডার্ডের সাথে অন্তর্ভুক্ত করার জন্য কমিটি থামেনি।
এসবিআই

2
প্রকৃতপক্ষে, bth টড এবং আমি মূলত বোরল্যান্ড সি ++ 4 সংকলক (যা 1993 সালে প্রকাশিত হয়েছিল) কাজ করার জন্য এক্সপ্রেশন টেম্পলেটগুলির কৌশল পেয়েছিলাম। ঘটনাচক্রে, আমি বিশ্বাস করি যে এটিই প্রথম সংকলক যার উপর এসটিএল সম্পূর্ণরূপে কাজ করার জন্য তৈরি হয়েছিল। পরে আমি বিভিন্ন অন্যান্য সংকলকগুলিতে (সেই সময়ে সান এর সিফ্রন্ট-ভিত্তিক সংকলক সহ!) একটি এক্সপ্রেশন টেম্পলেট গ্রন্থাগার পোর্ট করেছি। কেএআই সি ++ সংকলক ক্যামের একটু পরে।
ডেভিড ভি।

@DaveedV। বিসিসি 4 তার সময়ের জন্য খুব ভাল সংকলক ছিল এবং সেই সময়ের ভিসি সংস্করণের চেয়ে অনেক ভাল! কুখ্যাত "স্মাইলি বাগ" এর মতো এটিরও কিছু উদ্বেগ ছিল। :->এছাড়াও তারা এটির দ্রুত উন্নতি করতে ব্যর্থ হয়েছিল, সুতরাং এটির সাথে দ্রুত উন্নতি করার টেম্পলেটগুলির কৌশলটি ব্যবহার করা দ্রুততর এবং শক্ত হয়ে উঠল। যখন ভিসি 7.1 প্রকাশিত হয়েছিল এবং আরও মেনে চলছিল, এতে বোরল্যান্ড মারা যায়।
এসবিআই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.