সি ++ এ, এসফিনে এবং রূপকগুলি ইচ্ছাকৃত বা কেবলমাত্র টেম্পলেটগুলির উপ-উত্পাদক ছিল?


11

SFINAE এবং metaprogrammingtemplate বিস্ময়কর জিনিস করতে পারে এবং অনেক গ্রন্থাগার এগুলি যথেষ্ট পরিমাণে ব্যবহার করে।

Icallyতিহাসিকভাবে এই দুটি "যাদু ধারণা" সি ++ এ ইচ্ছাকৃতভাবে চালু / সমর্থিত হয়েছিল? অথবা এগুলি পরে ঠিক মূল templateপ্রোগ্রামিংয়ের দরকারী উপ-উত্পাদক (পার্শ্ব পণ্য) হিসাবে আবিষ্কার হয়েছিল ?

উত্তর:


19

দশক একটি সম্পর্কে আগে একটি সম্মেলন দিনের পর আমি নিজেকে সঙ্গে একটি পাব খুঁজে ঘটেছে এরউইন Unruh এবং অন্য কয়েকজন এবং আমি প্রোগ্রাম সম্পর্কে তাকে জিজ্ঞেস করলাম VJovic উল্লিখিত । ততক্ষণে আমরা বেশ কয়েকটা বিয়ার পেয়েছি, এটি ছিল একটি অনানুষ্ঠানিক বৈঠক, এবং এটি আমার মাথায় এক দশক ধরে বেঁচে আছে, তাই এটি লবণের দানা দিয়ে নিন, তবে আমার স্মৃতি অনুসারে:

তিনি বলেছিলেন যে তারা এসটিএলকে আরও ভালভাবে পরিবেশন করার জন্য টেমপ্লেট বৈশিষ্ট্যগুলি যুক্ত করেছে। তাঁর মতে, কমিটির / বেশিরভাগ / অনেকেই অনুভব করেছেন যে তারা এর সম্পূর্ণ ক্ষমতা না জেনে কিছু তৈরি করছেন। তিনি নিজেই সন্দেহ করেছিলেন যে সমস্ত টেমপ্লেট স্টাফ, বিশেষত এতটুকু আংশিক বিশেষত্ব, একটি টিউরিং-সম্পূর্ণ ভাষা তৈরি করেছিল এবং তিনি সর্বদা তার প্রথাগত প্রমাণ করতে চেয়েছিলেন, তবে কখনও তা করেননি।

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

আমার মনে আছে আমি এই প্রোগ্রামটিতে বিশেষত তাকে বার্জন স্ট্রস্ট্রপের প্রতিক্রিয়া সম্পর্কে জিজ্ঞাসা করেছি এবং এর জবাবে এরউইন তার হাত দিয়ে চোখ coveringাকিয়ে তাকে নকল করেছিলেন। :)

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


+1, আকর্ষণীয় অভিজ্ঞতা। তারা কি তখন SFINAE সম্পর্কে কিছু কথা বলেছিল?
iammilind

@ আইয়ামিলিন্ড: আমার মনে হয় এসটিএলকে আরও ভালভাবে সমর্থন করার জন্য যে বৈশিষ্ট্যগুলি যুক্ত করা হয়েছিল তার মধ্যে এসফিনএইর একটি মাত্র বৈশিষ্ট্য, যদিও "এসফিনএই" মনিকারকে তার কয়েক বছর পরেই তৈরি করা হয়েছিল।
এসবিআই

11

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

এই উদ্ধৃতিটি ভ্যান্ডেভোর্দে এবং জোসুটিস (অধ্যায় 17) দ্বারা "সি ++ টেমপ্লেট" থেকে নেওয়া হয়েছে।

আপনি দেখতে পাচ্ছেন, এটি প্রথম দিকে আবিষ্কার হয়েছিল এবং এর পাওয়ারটি তত্ক্ষণাত্ স্বীকৃতি পেয়েছে।


2
ভাল একটা. এই ধরণের নিবন্ধটি আমি ইন্টারনেটেও পড়েছি, উত্সটি মনে রাখবেন না। এটি কি এসএফআইএনএই-র জন্যও সত্য?
iammilind

@ আইয়ামিলিন্ড "SFINAE এর জন্যও এটি কি সত্য?"
BЈовић

1
SFINAE সাধারণত সংকলক থেকে কিছু সমর্থন প্রয়োজন। সুতরাং এটি সম্ভব যে, এটি দুর্ঘটনাক্রমে আবিষ্কৃত নাও হতে পারে।
iammilind

: @iammilind আমি একজন informit এর নিবন্ধ বই থেকে একটি অনুরূপ রচনা রয়েছে সেখানে পাওয়া গেছে informit.com/articles/article.aspx?p=30667&seqNum=8
BЈовић

@ আইয়ামিলাইন্ড উত্তর সম্পাদনা করেছেন আমি বলব এটি দুর্ঘটনাক্রমে হয়েছিল, কারণ টেমপ্লেটগুলির জন্য সংকলকগুলির সমর্থন সীমিত ছিল। প্রোগ্রামটি পোর্টেবল ছিল না এবং আমি মনে করি এটি কেবল একটি সংকলক
9
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.