রেফারেন্সিয়াল স্বচ্ছতা শব্দটির অর্থ কী? আমি এটিকে "এর অর্থ আপনি সমান সমান প্রতিস্থাপন করতে পারবেন" হিসাবে বর্ণিত শুনেছি তবে এটি একটি অপর্যাপ্ত ব্যাখ্যার মতো বলে মনে হচ্ছে।
রেফারেন্সিয়াল স্বচ্ছতা শব্দটির অর্থ কী? আমি এটিকে "এর অর্থ আপনি সমান সমান প্রতিস্থাপন করতে পারবেন" হিসাবে বর্ণিত শুনেছি তবে এটি একটি অপর্যাপ্ত ব্যাখ্যার মতো বলে মনে হচ্ছে।
উত্তর:
"রেফারেনশিয়াল স্বচ্ছতা" শব্দটি এসেছে বিশ্লেষণাত্মক দর্শন থেকে , দর্শনের একটি শাখা যা প্রাকৃতিক ভাষার গঠন, বিবৃতি এবং যুক্তি এবং গণিতের পদ্ধতির উপর ভিত্তি করে যুক্তি বিশ্লেষণ করে। অন্য কথায়, আমরা কম্পিউটার প্রোগ্রামিং ভাষার শব্দার্থকে যাকে বলি তার কাছে কম্পিউটার বিজ্ঞানের বাইরের নিকটতম বিষয় । দার্শনিক উইলার্ড কুইন রেফারেনশিয়াল স্বচ্ছতার ধারণা শুরু করার জন্য দায়বদ্ধ ছিলেন, তবে বার্ট্রান্ড রাসেল এবং আলফ্রেড হোয়াইটহেডের পদ্ধতির ক্ষেত্রেও এটি অন্তর্নিহিত ছিল।
এর মূল ভিত্তিতে, "রেফারেন্সিয়াল স্বচ্ছতা" একটি খুব সাধারণ এবং স্পষ্ট ধারণা। "রেফারেন্স" শব্দটি বিশ্লেষণাত্মক দর্শনে এমন একটি জিনিসকে বোঝাতে ব্যবহৃত হয় যা একটি অভিব্যক্তি বোঝায় । এটি প্রোগ্রামিং ভাষার শব্দার্থবিদ্যায় আমরা "অর্থ" বা "ডায়নোটেশন" বলতে যা বোঝায় তার প্রায় একই রকম। অ্যান্ড্রু বারকেটের উদাহরণ ( ব্লগ পোস্ট ) ব্যবহার করে "স্কটল্যান্ডের রাজধানী" শব্দটি এডিনবার্গ শহরকে বোঝায়। এটি একটি "রেফারেন্স" এর একটি সরল উদাহরণ।
বাক্যটির একটি প্রসঙ্গ "প্রাসঙ্গিকভাবে স্বচ্ছ" হয় যদি সেই প্রসঙ্গে একটি পদকে অন্য পদ দ্বারা প্রতিস্থাপন করা হয় যা একই সত্তাকে বোঝায় তবে তার অর্থ পরিবর্তন হয় না। উদাহরণ স্বরূপ
স্কটল্যান্ডের রাজধানী স্কটল্যান্ডের পার্লামেন্টে সভা হয়েছে।
মানে একই
স্কটিশ পার্লামেন্টের সভা এডিনবার্গে।
সুতরাং "স্কটিশ পার্লামেন্টের বৈঠকে ..." প্রসঙ্গটি একটি স্বতঃস্ফূর্ত স্বচ্ছ প্রসঙ্গ। অর্থ পরিবর্তন না করে আমরা "স্কটল্যান্ডের রাজধানী" "এডিনবার্গ" দিয়ে প্রতিস্থাপন করতে পারি। অন্য কোনও উপায়ে বলতে গেলে, প্রসঙ্গটি কেবল শব্দটি কী বোঝায় সে সম্পর্কে যত্নশীল এবং অন্য কিছুই নয়। এটি সেই অনুভূতিতে যে প্রসঙ্গটি "রেফারেন্টালি স্বচ্ছ"।
অন্যদিকে, বাক্যে,
এডিনবার্গ ১৯৯৯ সাল থেকে স্কটল্যান্ডের রাজধানী।
আমরা এই ধরনের প্রতিস্থাপন করতে পারি না। আমরা যদি তা করি তবে আমরা পেয়ে যাব "১৯৯৯ সাল থেকে এডিনবার হ'ল এডিনবার্গ", যা বলা বাহুল্য বিষয় এবং মূল বাক্যটির মতো একই অর্থ প্রকাশ করে না। সুতরাং, মনে হবে প্রসঙ্গটি "এডিনবার্গ ১৯৯৯ সাল থেকে ..." রেফারেন্টালি অস্বচ্ছ (রেফারেন্টালি স্বচ্ছের বিপরীত) is এটি স্পষ্টতই শব্দটি বোঝায় তার চেয়েও বেশি কিছু সম্পর্কে চিন্তা করে। এটা কি?
"স্কটল্যান্ডের রাজধানী" এর মতো জিনিসগুলিকে সুনির্দিষ্ট পদ বলা হয় এবং তারা দীর্ঘকাল ধরে লজিস্টিয়ান এবং দার্শনিকদের কোনও মাথা ঘা না দেয়। রাসেল এবং কুইন এগুলি বাছাই করে বলেছিলেন যে তারা আসলে "রেফারেন্টিয়াল" নয়, অর্থাত উপরোক্ত উদাহরণগুলি সত্ত্বার বিষয়ে উল্লেখ করার জন্য ব্যবহৃত হয় তা ভাবা ভুল। "এডিনবার্গ হ'ল স্কটল্যান্ডের রাজধানী ১৯৯৯ সাল থেকে" বোঝার সঠিক উপায়
স্কটল্যান্ডের রাজধানী ছিল ১৯৯৯ সাল থেকে এবং সেই রাজধানীটি এডিনবার্গ।
এই বাক্যটিকে বাদামে রূপান্তর করা যায় না। সমস্যা সমাধান! কুইনের মূল বক্তব্যটি ছিল যে প্রাকৃতিক ভাষাটি অগোছালো, বা কমপক্ষে জটিল, কারণ এটি ব্যবহারিক ব্যবহারের জন্য সুবিধাজনক হিসাবে তৈরি করা হয়েছে, তবে দার্শনিক এবং লজিস্টদের তাদের সঠিক উপায়ে বোঝার মাধ্যমে স্পষ্টতা আনতে হবে। রেফারেনশিয়াল স্বচ্ছতা অর্থের এমন স্বচ্ছতা আনার জন্য ব্যবহার করা একটি সরঞ্জাম ।
এই সমস্ত কি প্রোগ্রামিং সঙ্গে কি আছে? আসলে খুব বেশি নয়। যেমনটি আমরা বলেছি, রেফারেনশিয়াল স্বচ্ছতা ভাষা বোঝার ক্ষেত্রে অর্থ বোঝাতে ব্যবহার করার একটি সরঞ্জাম । ক্রিস্টোফার স্ট্রেচি , যিনি প্রোগ্রামিং ভাষার শব্দার্থবিদ্যার ক্ষেত্র প্রতিষ্ঠা করেছিলেন, তিনি তার অর্থ গবেষণায় এটি ব্যবহার করেছিলেন। তাঁর ফাউন্ডেশনাল পেপার " প্রোগ্রামিং ভাষায় মৌলিক ধারণা " ওয়েবে উপলব্ধ is এটি একটি সুন্দর কাগজ এবং প্রত্যেকে এটি পড়তে এবং বুঝতে পারে। সুতরাং, দয়া করে এটি করুন। আপনি অনেক আলোকিত হবে। তিনি এই অনুচ্ছেদে "রেফারেনশিয়াল স্বচ্ছতা" শব্দটি চালু করেছেন:
এক্সপ্রেশনগুলির অন্যতম দরকারী বৈশিষ্ট্য হ'ল কোয়েন রেফারেনশিয়াল স্বচ্ছতা called সংক্ষেপে এর অর্থ হ'ল আমরা যদি একটি উপ-এক্সপ্রেশন ধারণ করে এমন একটি এক্সপ্রেশনটির মান fi n করতে চাই, তবে সাব-এক্সপ্রেশন সম্পর্কে আমাদের কেবল একটি জিনিস জানতে হবে এটির মান। উপ-এক্সপ্রেশনটির অন্য কোনও বৈশিষ্ট্য যেমন এর অভ্যন্তরীণ কাঠামো, এর উপাদানগুলির সংখ্যা এবং প্রকৃতি, তারা যে ক্রমে মূল্যায়ন করা হয় বা যে কালিটিতে তারা লেখা হয় তা রঙের মূলের সাথে অপ্রাসঙ্গিক অভিব্যক্তি।
"সংক্ষেপে" ব্যবহারের পরামর্শ দেয় যে স্ট্রেচি এটিকে সহজ পদে ব্যাখ্যা করার জন্য এটিকে প্যারাফ্রেস করছে। কার্যকরী প্রোগ্রামাররা নিজেরাই এই অনুচ্ছেদটি বুঝতে পারে বলে মনে হয়। কাগজে "রেফারেনশিয়াল স্বচ্ছতা" এর আরও 9 টি ঘটনা রয়েছে তবে তারা অন্য কারও সম্পর্কে মাথা ঘামায় না বলে মনে হয়। প্রকৃতপক্ষে স্ট্রাচের পুরো কাগজটি অত্যাবশ্যক প্রোগ্রামিং ভাষার অর্থ ব্যাখ্যা করতে উত্সর্গীকৃত । কিন্তু আজ, ক্রিয়ামূলক প্রোগ্রামারদের দাবি করে যে অনুজ্ঞাসূচক প্রোগ্রামিং ভাষা হয় না referentially স্বচ্ছ। স্ট্রেচি তার কবরে ঘুরবে।
আমরা পরিস্থিতি উদ্ধার করতে পারি। আমরা বলেছিলাম যে প্রাকৃতিক ভাষা "অগোছালো, বা কমপক্ষে জটিল" কারণ এটি ব্যবহারিক ব্যবহারের জন্য সুবিধাজনক হতে তৈরি করা হয়েছে। প্রোগ্রামিং ভাষা একইভাবে। এগুলি "অগোছালো, বা কমপক্ষে জটিল" কারণ এগুলি ব্যবহারিক ব্যবহারের জন্য সুবিধাজনক হিসাবে তৈরি করা হয়েছে। এর অর্থ এই নয় যে তাদের আমাদের বিভ্রান্ত করা দরকার। এগুলি কেবল সঠিকভাবে বুঝতে হবে, একটি মেটা ভাষা ব্যবহার করতে হবে যা প্রাসঙ্গিকভাবে স্বচ্ছ হয় যাতে আমাদের অর্থের স্পষ্টতা থাকে। আমি যে কাগজে উদ্ধৃত করেছি, স্ট্রেচি ঠিক তা-ই করেছেন। তিনি অত্যাবশ্যক প্রোগ্রামিং ভাষাগুলির প্রাথমিক ধারণাগুলি ভাঙার মাধ্যমে ব্যাখ্যা করেন, কখনও কোথাও স্পষ্টতা হারাবেন না। তার বিশ্লেষণের একটি গুরুত্বপূর্ণ অংশটি উল্লেখ করা যে প্রোগ্রামিং ভাষাগুলিতে প্রকাশের দুটি ধরণের "মান" রয়েছে,r- মান । স্ট্রেচের কাগজের আগে, এটি বোঝা যায় নি এবং বিভ্রান্তি সর্বোচ্চভাবে রাজত্ব করেছিল igned আজ, সি এর সংজ্ঞা এটি নিয়মিত উল্লেখ করে এবং প্রতিটি সি প্রোগ্রামার পার্থক্য বুঝতে পারে। (অন্যান্য ভাষার প্রোগ্রামাররা এটি সমানভাবে বুঝতে পারে কিনা তা বলা শক্ত))
কুইন এবং স্ট্রেচি উভয়ই ভাষা নির্মানের অর্থ নিয়ে উদ্বিগ্ন ছিলেন যা কিছু প্রসঙ্গ-নির্ভরতার সাথে জড়িত। উদাহরণস্বরূপ, আমাদের উদাহরণ "এডিনবার্গ ১৯৯৯ সাল থেকে স্কটল্যান্ডের রাজধানী" এই সত্যটি বোঝায় যে "স্কটল্যান্ডের রাজধানী" যে সময় বিবেচনা করা হচ্ছে তার উপর নির্ভর করে। প্রাকৃতিক ভাষা এবং প্রোগ্রামিং ভাষা উভয় ক্ষেত্রেই এ জাতীয় প্রসঙ্গ-নির্ভরতা একটি বাস্তবতা। এমনকি কার্যনির্বাহী প্রোগ্রামিংয়েও, মুক্ত এবং সীমাবদ্ধ ভেরিয়েবলগুলি যে প্রসঙ্গে উপস্থিত হয় তার প্রতি শ্রদ্ধার সাথে ব্যাখ্যা করতে হয় any যে কোনও প্রকারের প্রাসঙ্গিক নির্ভরতা কোনওভাবে বা অন্যভাবে রেফারেন্সিয়াল স্বচ্ছতা অবরুদ্ধ করে। আপনি যদি তাদের উপর নির্ভরশীল প্রসঙ্গগুলি বিবেচনা না করে শর্তগুলির অর্থ বোঝার চেষ্টা করেন তবে আপনি আবার বিভ্রান্তির অবসান ঘটাবেন। কুইন মডেল লজিকের অর্থ নিয়ে উদ্বিগ্ন ছিল। তিনি তা ধরে রেখেছিলেনমডেল লজিকটি প্রাসঙ্গিকভাবে অস্বচ্ছ ছিল এবং এটিকে একটি রেফারেন্সালি স্বচ্ছ কাঠামোর অনুবাদ করে পরিষ্কার করা উচিত (উদাহরণস্বরূপ, প্রযোজনা হিসাবে প্রয়োজনীয়তা দ্বারা)। তিনি এই বিতর্কটি মূলত হেরে গেছেন। লজিস্টিয়ান এবং দার্শনিকরা একইভাবে ক্রিপকের সম্ভাব্য বিশ্ব শব্দার্থবিজ্ঞান পুরোপুরি পর্যাপ্ত হতে পেরেছিলেন। অনুরূপ পরিস্থিতি অপরিহার্য প্রোগ্রামিংয়ের সাথেও রাজত্ব করে। স্ট্রেই দ্বারা ব্যাখ্যা করা রাষ্ট্র-নির্ভরতা এবং রেনল্ডস দ্বারা ব্যাখ্যা করা স্টোর-নির্ভরতা (ক্রিপেকে সম্ভাব্য বিশ্ব শব্দার্থবিজ্ঞানের অনুরূপ) পুরোপুরি পর্যাপ্ত। কার্যকরী প্রোগ্রামাররা এই গবেষণার অনেক কিছুই জানেন না। রেফারেন্সিয়াল স্বচ্ছতার বিষয়ে তাদের ধারণাগুলি লবণের একটি বড় শস্যের সাথে নেওয়া উচিত।
[অতিরিক্ত দ্রষ্টব্য: উপরের উদাহরণগুলি উদাহরণস্বরূপ বোঝায় যে "স্কটল্যান্ডের মূলধন" এর মতো একটি সহজ বাক্যাংশটির একাধিক অর্থ রয়েছে। এক পর্যায়ে, আমরা বর্তমান সময়ে রাজধানী সম্পর্কে কথা বলছি। অন্য স্তরে, আমরা সম্ভবত স্কটল্যান্ডের সেই সমস্ত সম্ভাব্য রাজধানীগুলি নিয়ে কথা বলব। আমরা সাধারণ অনুশীলনে খুব সহজেই সমস্ত প্রসঙ্গটি ছড়িয়ে দিতে একটি নির্দিষ্ট প্রসঙ্গে "জুম" করতে এবং "জুম আউট" করতে পারি। প্রাকৃতিক ভাষার দক্ষতা তা করার আমাদের দক্ষতার ব্যবহার করে। অত্যাবশ্যক প্রোগ্রামিং ভাষা খুব একইভাবে দক্ষ। নির্দিষ্ট অবস্থাতে এর মান সম্পর্কে আলাপ করার জন্য আমরা একটি অ্যাসাইনমেন্টের ( r-value ) ডানদিকে একটি ভেরিয়েবল এক্স ব্যবহার করতে পারি । অথবা, আমরা এর এল-মান সম্পর্কে কথা বলতে পারিযা সমস্ত রাজ্যে বিস্তৃত। মানুষ এই জাতীয় জিনিসগুলি দ্বারা খুব কমই বিভ্রান্ত হয়। তবে, তারা ভাষা নির্মানের অন্তর্নিহিত অর্থের সমস্ত স্তরগুলি সঠিকভাবে ব্যাখ্যা করতে সক্ষম হতে পারে বা নাও করতে পারে। এ জাতীয় অর্থের সমস্ত স্তর অগত্যা 'সুস্পষ্ট' নয় এবং সেগুলি সঠিকভাবে অধ্যয়ন করা বিজ্ঞানের বিষয়। যাইহোক, এই জাতীয় স্তরযুক্ত অর্থগুলি ব্যাখ্যা করার জন্য সাধারণ মানুষের অযৌক্তিকতা বোঝায় না যে তারা তাদের সম্পর্কে বিভ্রান্ত are
নীচে একটি পৃথক "পোস্টস্ক্রিপ্ট" কার্যনির্বাহী এবং অপরিহার্য প্রোগ্রামিংয়ের উদ্বেগগুলির সাথে এই আলোচনাটির সাথে সম্পর্কিত ।
রেফারেনশিয়াল স্বচ্ছতা, একটি শব্দ সাধারণত ফাংশনাল প্রোগ্রামিংয়ে ব্যবহৃত হয়, এর অর্থ একটি ফাংশন এবং একটি ইনপুট মান দেওয়া হয়, আপনি সর্বদা একই আউটপুট পাবেন। এর অর্থ ফাংশনটিতে কোনও বহিরাগত অবস্থা ব্যবহৃত হয় না।
এখানে একটি রেফারেন্সিয়াল স্বচ্ছ ফাংশনের উদাহরণ রয়েছে:
int plusOne(int x)
{
return x+1;
}
একটি ইনফুট এবং একটি ফাংশন প্রদত্ত একটি রেফারেন্সিয়াল স্বচ্ছ ফাংশন সহ, আপনি এটিকে ফাংশনটি কল করার পরিবর্তে একটি মান দিয়ে প্রতিস্থাপন করতে পারেন। সুতরাং 5 এর পরামিতি দিয়ে প্লাসওন কল করার পরিবর্তে, আমরা কেবল এটি 6 এর সাথে প্রতিস্থাপন করতে পারি।
আর একটি ভাল উদাহরণ হ'ল সাধারণভাবে গণিত। গণিতে কোনও ফাংশন এবং একটি ইনপুট মান দেওয়া হয়, এটি সর্বদা একই আউটপুট মানকে ম্যাপ করে। f (x) = x + 1. অতএব গণিতে ক্রিয়াকলাপগুলি স্বচ্ছ হয়।
এই ধারণাটি গবেষকদের কাছে গুরুত্বপূর্ণ কারণ এর অর্থ হ'ল যখন আপনার একটি স্বতঃস্ফূর্ত স্বচ্ছ ফাংশন থাকে, তখন এটি সহজেই স্বয়ংক্রিয়ভাবে সমান্তরালকরণ এবং ক্যাশে চলে যায় le
রেফারেন্সিয়াল স্বচ্ছতা হাস্কেলের মতো ক্রিয়ামূলক ভাষায় সর্বদা ব্যবহৃত হয়।
-
এর বিপরীতে রেফারেনশিয়াল অস্বচ্ছতার ধারণা রয়েছে। এর অর্থ বিপরীত। ফাংশনটিতে কল করা সর্বদা একই আউটপুট তৈরি করে না।
//global G
int G = 10;
int plusG(int x)
{//G can be modified externally returning different values.
return x + G;
}
আরেকটি উদাহরণ, একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজে সদস্য ফাংশন। সদস্য ফাংশনগুলি সাধারণত এর সদস্য ভেরিয়েবলগুলিতে কাজ করে এবং সুতরাং এটি রেফারেন্সিয়াল অস্বচ্ছ হবে। সদস্যের কাজগুলি অবশ্যই অবশ্যই স্বচ্ছ হতে পারে।
তবুও অন্য উদাহরণ একটি ফাংশন যা একটি পাঠ্য ফাইল থেকে পড়ে এবং আউটপুট প্রিন্ট করে। এই বাহ্যিক পাঠ্য ফাইলটি যে কোনও সময় পরিবর্তিত হতে পারে তাই ফাংশনটি উল্লেখযোগ্যভাবে অস্বচ্ছ হবে।
একটি উল্লেখযোগ্যভাবে স্বচ্ছ ফাংশন হ'ল এটি কেবল তার ইনপুটের উপর নির্ভর করে।
[আলোচনাকে কার্যকরী / অত্যাবশ্যক প্রোগ্রামিংয়ের উদ্বেগের আরও কাছে আনার প্রয়াত ২৫ শে মার্চ থেকে আমার এই উত্তরটির পোস্টস্ক্রিপ্ট cript
রেফারেন্সিয়াল স্বচ্ছতার কার্যকরী প্রোগ্রামারদের ধারণাটি তিনটি উপায়ে স্ট্যান্ডার্ড ধারণা থেকে পৃথক বলে মনে হচ্ছে:
যেখানে দার্শনিক / লজিস্টিয়ানরা "রেফারেন্স", " ডোনোটেশন ", " ডিজাইনটাম " এবং " বেদেউতুং " (ফ্রেজের জার্মান শব্দ) এর মতো শব্দ ব্যবহার করেন, ক্রিয়ামূলক প্রোগ্রামাররা "মান" শব্দটি ব্যবহার করেন। (এটি পুরোপুরি তাদের করণীয় নয়। আমি লক্ষ্য করেছি যে ল্যান্ডিন, স্ট্রেচি এবং তাদের বংশধরেরাও "মান" শব্দটি রেফারেন্স / ডেনোটেশন সম্পর্কে কথা বলার জন্য ব্যবহার করেছিলেন। এটি ল্যান্ডিন এবং স্ট্রেচি প্রবর্তন করেছিলেন এমন একটি পরিভাষা সরলকরণ হতে পারে, তবে মনে হয় এটি একটি কার্যকর হয়েছে) যখন একটি নিষ্পাপ উপায়ে ব্যবহার করা হয় তখন বড় পার্থক্য)
কার্যকরী প্রোগ্রামাররা বিশ্বাস করে যে এই "মানগুলি" প্রোগ্রামিং ভাষার ভিতরেই রয়েছে, বাইরে নয়। এটি করার ক্ষেত্রে, তারা দার্শনিক এবং প্রোগ্রামিং ভাষার শব্দার্থবিদ উভয়ের থেকে পৃথক।
তারা বিশ্বাস করে বলে মনে হয় যে এই "মানগুলি" মূল্যায়নের মাধ্যমে প্রাপ্ত হওয়ার কথা।
উদাহরণস্বরূপ, রেফারেন্সিয়াল স্বচ্ছতার বিষয়ে উইকিপিডিয়া নিবন্ধটি বলেছেন, আজ সকালে:
কোনও এক্সপ্রেশনকে উল্লেখযোগ্যভাবে স্বচ্ছ বলে বলা হয় যদি কোনও প্রোগ্রামের আচরণ পরিবর্তন না করে এর মান দিয়ে প্রতিস্থাপন করা যায় (অন্য কথায়, একই প্রোগ্রামে ফলদান এবং একই ইনপুটটিতে একই প্রভাব এবং ফলাফল থাকে)।
দার্শনিক / লজিস্টিয়ানরা যা বলেন তার সাথে এটি সম্পূর্ণ ভিন্ন। তারা বলে যে একটি প্রসঙ্গটি রেফারেনশিয়াল বা রেফারেন্সিয়ালি স্বচ্ছ হয় যদি সেই প্রসঙ্গে কোনও অভিব্যক্তিটি একই জিনিসকে বোঝায় এমন একটি অন্য অভিব্যক্তি দ্বারা প্রতিস্থাপন করা যেতে পারে (একটি কোরফেরেনশিয়াল এক্সপ্রেশন)। এই দার্শনিক / যুক্তিবিদ কারা? এগুলির মধ্যে রয়েছে ফ্রিজ , রাসেল , হোয়াইটহেড , কার্নাপ , কুইন , চার্চএবং অগণিত অন্য। তাদের প্রত্যেকটিই এক বিশাল চিত্র। এই লজিস্টিয়ানদের সম্মিলিত বৌদ্ধিক শক্তি হ'ল ন্যূনতমভাবে বলতে গেলে পৃথিবী-চূর্ণকারী। এঁরা সকলেই সেই অবস্থানের বিষয়ে imক্যবদ্ধ যে প্রথাগত ভাষার বাইরে রেফারেন্ট / বর্ণচিহ্ন বিদ্যমান এবং ভাষার ভিতরে প্রকাশ কেবল তাদের সম্পর্কেই কথা বলতে পারে। সুতরাং, ভাষার মধ্যে যা কিছু করতে পারে তা হ'ল এক এক্সপ্রেশনটিকে অন্য এক্সপ্রেশন দ্বারা প্রতিস্থাপন করা যা একই সত্তাকে বোঝায়। Referents / denotations নিজেদের না ভাষা মধ্যে বিদ্যমান। কার্যকরী প্রোগ্রামাররা কেন এই সুপ্রতিষ্ঠিত traditionতিহ্য থেকে বিচ্যুত হয়?
কেউ ধারণা করতে পারেন যে প্রোগ্রামিং ল্যাঙ্গুয়েজ শব্দার্থবিদরা তাদের বিভ্রান্ত করেছে। কিন্তু, তারা তা করেনি।
(ক) প্রতিটি এক্সপ্রেশন একটি নেস্টিং subexpression কাঠামো আছে, (খ) প্রতিটি subexpression কিছু বোঝায় (সাধারণত একটি সংখ্যা, সত্য মান বা সংখ্যাসূচক ফাংশন) , (গ) একটি অভিব্যক্তি যে জিনিসটি বোঝায়, তার "মান" কেবল তার উপর নির্ভর করে এর উপ-এক্সপ্রেশনগুলির মানগুলি, অন্য কোনও বৈশিষ্ট্যে নয়। [যুক্ত জোড়]
স্টয় :
একটি অভিব্যক্তি সম্পর্কে একমাত্র বিষয়টির মূল্য হ'ল তার মান এবং যে কোনও স্যুপ এক্সপ্রেসনকে অন্য কোনও সমান মান দ্বারা যুক্ত করা যেতে পারে [যুক্ত জোর]] তদুপরি, একটি অভিব্যক্তির মান নির্দিষ্ট সীমার মধ্যে যখনই ঘটে তখন একই "।
একটি অভিব্যক্তিটির মানটি কেবলমাত্র তার উপাদানযুক্ত ভাবের মানগুলির উপর নির্ভর করে (যদি থাকে) এবং এই subexpress একই মান [যুক্ত জোড়] থাকা অন্যরা অবাধে প্রতিস্থাপন করতে পারে ।
সুতরাং, পূর্বসূচীতে ল্যান্ডিন এবং স্ট্রাচির "রেফারেন্স" / "ডেনোটেশন" "মান" দিয়ে প্রতিস্থাপনের মাধ্যমে পরিভাষাটি সরল করার প্রচেষ্টা প্ররোচিত হতে পারে। "মান" শোনার সাথে সাথেই মূল্যায়ন প্রক্রিয়াটি ভাবার প্রলোভন দেখা দেয় যা এর দিকে পরিচালিত করে। মূল্যায়ন "মান" হিসাবে যা কিছু উত্পন্ন করে তা ভেবে সমানভাবে লোভনীয়, যদিও এটি পুরোপুরি পরিষ্কার হতে পারে যে এটি নোটটি নয় ation ফাংশনাল প্রোগ্রামারদের দৃষ্টিতে "রেফারেনশিয়াল স্বচ্ছতা" ধারণাটি ঘটতে আমি এটাই জড়ো করেছি। তবে প্রারম্ভিক শব্দার্থবিদদের দ্বারা যে "মান" বলা হয়ে থাকে তা কোনও মূল্যায়ন বা কোনও ফাংশন বা এ জাতীয় কোনও ফলাফলের ফলাফল নয়। এটি শব্দটির ডোনোটেশন।
একবার আমরা একটি জটিল গাণিতিক / ধারণাগত অবজেক্ট হিসাবে অভিব্যক্তির তথাকথিত "মান" (শাস্ত্রীয় দার্শনিকদের বক্তৃতায় "রেফারেন্স" বা "ডোনোটেশন") বুঝতে পারলে সমস্ত ধরণের সম্ভাবনা খোলে।
এ জাতীয় ভাষাগুলিকে "রেফারেন্টালি স্বচ্ছ" বলতে ফাংশনাল প্রোগ্রামারদের অনীহা কেবল বোঝায় যে তারা এই জাতীয় জটিল গাণিতিক / ধারণাগত বিষয়গুলিকে "মান" হিসাবে মানতে নারাজ। অন্যদিকে, তারা যখন কোনও নিজস্ব ট্রান্সফর্মারকে তাদের নিজস্ব পছন্দসই সিনট্যাক্সে রাখে এবং "মোনাড" এর মতো বাজে শব্দটি পরিধান করে তখন তারা কোনও "রাষ্ট্র" ট্রান্সফর্মারকে "মান" বলতে ইচ্ছুক বলে মনে হয়। আমার বলতে হবে যে তারা সম্পূর্ণরূপে অসঙ্গত হচ্ছে, এমনকি যদি আমরা তাদেরকে এই বলে দিই যে তাদের "রেফারেন্সিয়াল স্বচ্ছতা" সম্পর্কে ধারণাটির কিছু মিল রয়েছে।
এই বিভ্রান্তিগুলি কীভাবে বাস্তবে রূপ নিয়েছিল তার ইতিহাস কিছুটা আলোকপাত করতে পারে। ক্রিস্টোফার স্ট্রাচির জন্য ১৯62২ থেকে ১৯6767 সালের সময়কাল ছিল অত্যন্ত নিবিড়। 1962-65 এর মধ্যে, তিনি সিপিএল হিসাবে পরিচিতি লাভকারী প্রোগ্রামিং ভাষার নকশা ও প্রয়োগের জন্য মরিস উইলকসের সাথে গবেষণা সহকারী হিসাবে একটি খণ্ডকালীন চাকুরী গ্রহণ করেছিলেন। এটি একটি অত্যাবশ্যক প্রোগ্রামিং ভাষা ছিল তবে এটি শক্তিশালী কার্যকরী প্রোগ্রামিং ভাষার দক্ষতাও ছিল। ল্যান্ডিন, যিনি তাঁর পরামর্শদাতা প্রতিষ্ঠানে স্ট্রেচের একজন কর্মচারী ছিলেন, প্রোগ্রামিং ভাষা সম্পর্কে স্ট্রেচের দৃষ্টিভঙ্গির উপর বিশাল প্রভাব ফেলেছিলেন। " পরবর্তী 700 প্রোগ্রামিং ল্যাঙ্গুয়েজ " 1965 এর গবেষণাপত্রে ল্যান্ডিন লন্ডন নির্বিঘ্নে কার্যকরী প্রোগ্রামিং ভাষাগুলি প্রচার করে (তাদেরকে স্বনামধন্য বলে অভিহিত করে)ভাষা) এবং অত্যাবশ্যক প্রোগ্রামিং ভাষাগুলি তাদের "বিরোধী" হিসাবে বর্ণনা করে। পরবর্তী আলোচনায়, আমরা দেখতে পাচ্ছি স্ট্রেচি ল্যান্ডিনের শক্ত অবস্থান সম্পর্কে সন্দেহ উত্থাপন করেছেন।
... ডিএলগুলি সমস্ত ভাষার একটি উপসেট তৈরি করে। এগুলি একটি আকর্ষণীয় উপসেট, তবে এটির ব্যবহার ব্যতীত অসুবিধাগুলি একটি। আমাদের সেগুলি দরকার কারণ এই মুহুর্তে আমরা কীভাবে এমন ভাষাগুলির সাথে প্রমাণ তৈরি করতে জানি না যার মধ্যে প্রতিবন্ধকতা এবং জাম্প অন্তর্ভুক্ত থাকে। [যুক্ত জোড়]
1965 সালে, স্ট্রেচি অক্সফোর্ডে একটি পাঠকের পদ গ্রহণ করেছিলেন এবং মনে হয় যে অগত্যা এবং জাম্পগুলির তত্ত্বটি বিকাশের জন্য মূলত পুরো সময়ের কাজ করেছেন। 1967 সালের মধ্যে, তিনি একটি তত্ত্ব নিয়ে প্রস্তুত ছিলেন, যা তিনি কোপেনহেগেন গ্রীষ্মের একটি বিদ্যালয়ে " প্রোগ্রামিং ভাষাগুলিতে মৌলিক ধারণা " বিষয়ে তাঁর কোর্সে পাঠদান করেছিলেন । বক্তৃতা নোটগুলি প্রকাশিত হয়েছিল বলে মনে করা হয়েছিল কিন্তু "দুর্ভাগ্যক্রমে, চর্চাকারী সম্পাদনার কারণে, প্রক্রিয়াটি কখনই বাস্তবায়িত হয়নি; অক্সফোর্ডে স্ট্রেচের বেশিরভাগ কাজের মতোই, কাগজটির একটি প্রভাবশালী ব্যক্তিগত প্রচার ছিল।" ( মার্টিন ক্যাম্পবেল-কেলি )
স্ট্রাচির লেখাগুলি প্রাপ্তির অসুবিধা বিভ্রান্তির কারণ হতে পারে, লোকেরা গৌণ উত্স এবং শ্রবণশক্তির উপর নির্ভর করে। তবে, এখন যে " ফান্ডামেন্টাল ধারণাগুলি " ওয়েবে সহজেই উপলব্ধ, কাজ অনুমান করার দরকার নেই। আমাদের এটি পড়তে হবে এবং স্ট্রেচের অর্থ কী তা নিয়ে নিজের মন তৈরি করা উচিত। নির্দিষ্টভাবে:
এল-ভ্যালু, আর-ভ্যালু এবং অন্যান্য জটিল বস্তুগুলির মধ্যে পার্থক্য বুঝতে না পেরে "রেফারেনশিয়াল স্বচ্ছতার" যে কোনও আলোচনা অগত্যা প্রোগ্রামারের ধারণাগত মহাবিশ্বকে জনপ্রিয় করে তোলে এটি মূলত ভুল is
একটি উল্লেখযোগ্য স্বচ্ছ ফাংশন হ'ল গাণিতিক ফাংশনের মতো কাজ করে; একই ইনপুট দেওয়া হয়, এটি সর্বদা একই আউটপুট উত্পাদন করবে। এটি সূচিত করে যে রাষ্ট্রটি পাস করেছে তা সংশোধিত নয় এবং ফাংশনের নিজস্ব কোনও রাজ্য নেই।
একটি সংক্ষিপ্ত ব্যাখ্যা প্রয়োজন তাদের জন্য আমি একটি বিপত্তি করব (তবে নীচে প্রকাশটি পড়ুন)।
একটি প্রোগ্রামিং ভাষার ক্ষেত্রে রেফারেনশিয়াল স্বচ্ছতা সমীকরণীয় যুক্তিকে উত্সাহ দেয় - সমান তর্ক করার পক্ষে আপনার যত বেশি রেফারেন্সিয়াল স্বচ্ছতা তত সহজ হয় easier উদাহরণস্বরূপ একটি (সিউডো) ফাংশন সংজ্ঞা সহ,
fx = x + x,
আপনি যে স্বাচ্ছন্দ্যের সাহায্যে (নিরাপদে) f (foo) কে foo + foo এর সাথে এই সংজ্ঞাটির আওতায় প্রতিস্থাপন করতে পারবেন, যেখানে আপনি এই হ্রাসটি সম্পাদন করতে পারবেন সেখানে খুব বেশি বাধা না থাকলে আপনার প্রোগ্রামিংয়ের ভাষাটি কতটা রেফারেন্সিয়াল স্বচ্ছতা তা প্রমাণ করতে পারে হয়েছে।
উদাহরণস্বরূপ, foo সি প্রোগ্রামিং অর্থে যদি x ++ থাকে তবে আপনি এই হ্রাসটি নিরাপদে করতে পারতেন না (যার অর্থ, যদি আপনি এই হ্রাসটি চালাচ্ছিলেন তবে আপনি যে প্রোগ্রামটি শুরু করেছিলেন তা শেষ না করে)।
ব্যবহারিক প্রোগ্রামিং ভাষায় আপনি নিখুঁত রেফারেন্সিয়াল স্বচ্ছতা দেখতে পাবেন না তবে কার্যকরী প্রোগ্রামাররা এটি বেশিরভাগের চেয়ে বেশি যত্ন করে (সিএফ হাস্কেল, যেখানে এটি একটি মূল লক্ষ্য)।
(সম্পূর্ণ প্রকাশ: আমি একজন কার্যনির্বাহী প্রোগ্রামার তাই শীর্ষ জবাব দিয়ে আপনার এই ব্যাখ্যাটি নুনের দানা দিয়ে নেওয়া উচিত))
আপনি যদি ব্যুৎপত্তি বিষয়ে আগ্রহী হন (অর্থাত্ এই ধারণাটির এই বিশেষ নামটি কেন আছে), বিষয়টিতে আমার ব্লগ পোস্টটি দেখুন । পরিভাষাটি দার্শনিক / যুক্তিবিদ কুইনের কাছ থেকে আসে।
1-এ প্রশ্নে দুটি ভাষার স্পষ্টতা রয়েছে:
2-এ, বস্তুর ঘনিষ্ঠতা এবং ধাতব ভাষাগুলির জন্য ধন্যবাদ, তারা বিভ্রান্ত হতে পারে।
ভাষা প্রয়োগকারী হিসাবে, আমি দেখতে পাই যে এই পার্থক্যটি আমার ক্রমাগত মনে রাখা দরকার।
প্রফেসর রেড্ডি আমি আপনাকে এইভাবে প্যারাফ্রেস করতে পারি :-)
ক্রিয়ামূলক প্রোগ্রামিং এবং শব্দার্থবিজ্ঞানের প্রসঙ্গে, রেফারেনশিয়াল ট্রান্সপারেন্সি শব্দটি উল্লেখযোগ্যভাবে স্বচ্ছ নয়।
নিম্নলিখিত উত্তরটি আমি আশা করি বিতর্কিত প্রথম এবং তৃতীয় উত্তর যুক্ত করে এবং যোগ্যতা অর্জন করে।
আসুন আমরা মঞ্জুর করি যে একটি অভিব্যক্তি কিছু রেফারেন্টকে বোঝায় বা বোঝায়। যাইহোক, একটি প্রশ্ন হ'ল এই রেফারেন্টগুলি এই জাতীয় অভিব্যক্তিগুলিকে 'মান' বলে অভিহিত করে নিজেরাই প্রকাশের অংশ হিসাবে আলাদাভাবে এনকোড করা যায়। উদাহরণস্বরূপ, আক্ষরিক সংখ্যার মানগুলি পাটিগণিতের এক্সপ্রেশনগুলির সেটের একটি উপসেট, সত্য মানগুলি বুলিয়ান এক্সপ্রেশনগুলির সেটের একটি উপসেট ইত্যাদি etc. ধারণাটি হ'ল তার মানটির সাথে কোনও অভিব্যক্তি মূল্যায়ন করা (যদি এটি থাকে)। সুতরাং 'মান' শব্দের অর্থ একটি বর্ণ বা অভিব্যক্তির সেটের একটি পৃথক উপাদানকে বোঝায়। তবে যদি রেফারেন্ট এবং মানের মধ্যে আইসোমরফিজম (একটি বাইজেকশন) থাকে তবে আমরা বলতে পারি যে তারা একই জিনিস। (এটি বলেছে, একটিকে অবশ্যই রেফারেন্টস এবং আইসোমর্ফিজমকে সংজ্ঞায়িত করার জন্য সতর্কতা অবলম্বন করতে হবে, যেমন ডেনোটেশনাল শব্দার্থবিদ্যার ক্ষেত্র দ্বারা প্রমাণিত। তৃতীয় উত্তরের উত্তরে উল্লিখিত একটি উদাহরণ দেওয়ার জন্য,data Nat = Zero | Suc Nat
প্রাকৃতিক সংখ্যার সেটের সাথে প্রত্যাশার সাথে মিল নেই))
আসুন E[·]
একটি গর্ত সহ একটি প্রকাশের জন্য লিখি , এটি কিছু প্রান্তে 'প্রসঙ্গ' হিসাবেও পরিচিত। সি-মত প্রকাশের জন্য দুটি প্রসঙ্গ উদাহরণ [·]+1
এবং
[·]++
।
আসুন আমরা [[·]]
সেই ফাংশনটির জন্য লিখি যা কোনও অভিব্যক্তি নিয়ে (কোনও গর্ত ছাড়াই) নিয়ে আসে এবং এর অর্থ (রেফারেন্স, ডেনোটেশন ইত্যাদি) কিছু অর্থ-সরবরাহকারী মহাবিশ্বে সরবরাহ করে। (আমি ডেনোটেশনাল শব্দার্থের ক্ষেত্র থেকে স্বীকৃতি নিচ্ছি))
আসুন আমরা কুইনের সংজ্ঞাটি কিছুটা আনুষ্ঠানিকভাবে নিম্নরূপে মানিয়ে নিই: একটি প্রসঙ্গ E[·]
উল্লেখযোগ্যভাবে স্বচ্ছ হয় যদি কোনও দুটি অভিব্যক্তি দেওয়া হয় E1
এবং E2
(কোনও গর্ত নেই) যেমন [[E1]] = [[E2]]
(অর্থাত্ প্রকাশগুলি একই রেফারেন্টকে বোঝায় / রেফার করে) তবে তার ক্ষেত্রে এটি ঘটে [[E[E1]]] = [[E[E2]]]
(অর্থাত্ ভরাট - হয়রানীর সাথে গর্তে E1
বা E2
এক্সপ্রেশনগুলিতে ফলাফল যা একই একইটিকে বোঝায়।
সমান হিসাবে সমান প্রতিস্থাপনের লাইবনিজের নিয়মটি সাধারণত 'যদি E1 = E2
তবে E[E1] = E[E2]
' হিসাবে প্রকাশিত হয়
, যা বলে যে E[·]
এটি একটি ফাংশন। একটি ফাংশন (বা সেটির জন্য ফাংশনটি গণনা করার জন্য প্রোগ্রামটি) একটি উত্স থেকে একটি লক্ষ্যে একটি ম্যাপিং হয় যাতে প্রতিটি উত্স উপাদানের জন্য সর্বাধিক একটি লক্ষ্য উপাদান থাকে। অ-নিরঙ্কুশক ক্রিয়াকলাপগুলি =
হ'ল ভুল ব্যবহারকারী, সেগুলি হয় সম্পর্ক, ফাংশন সেট সরবরাহ ইত্যাদি Le সুতরাং একটি উল্লেখযোগ্য স্বচ্ছ প্রসঙ্গ একটি ফাংশন। এবং লাইবনিজের নিয়ম সমীকরণীয় যুক্তির মূল উপাদান, সুতরাং সমীকরণের যুক্তি অবশ্যই স্পষ্টভাবে স্বচ্ছতার সাথে সম্পর্কিত।
যদিও [[·]]
অভিব্যক্তি থেকে ডেনোটেশনের ক্ষেত্রে এটি একটি ফাংশন, এটি এক্সপ্রেশন থেকে 'মানগুলিতে' প্রকাশের একটি সীমাবদ্ধ উপসেট হিসাবে বোঝা একটি ফাংশন হতে পারে এবং [[·]]
এটি মূল্যায়ন হিসাবে বোঝা যায়।
এখন, যদি E1
একটি অভিব্যক্তি হয় এবং E2
একটি মূল্য হয় যা আমি মনে করি যা আমি মনে করি বেশিরভাগ লোকের দ্বারা অভিব্যক্তি, মান এবং মূল্যায়নের ক্ষেত্রে রেফারেনশিয়াল স্বচ্ছতার সংজ্ঞা দেওয়ার সময় বোঝানো হয়। তবে এই পৃষ্ঠায় প্রথম এবং তৃতীয় উত্তর দ্বারা চিত্রিত হিসাবে, এটি একটি ভুল সংজ্ঞা।
মত প্রসঙ্গে যেমন সমস্যাটি [·]++
পার্শ্ব প্রতিক্রিয়া নয়, তবে এটির মানটি সি এরোসম্পর্কিতভাবে সংজ্ঞায়িত হয়নি। ক্রিয়াকলাপগুলি মান হয় না (ভাল, ফাংশনগুলির দিকে নির্দেশক হয়) তবে কার্যকরী প্রোগ্রামিং ভাষাগুলিতে তারা হয়। ল্যান্ডিন, স্ট্রেচি এবং ডায়নোটেশনাল শব্দার্থবিদ্যার পথিকৃৎরা অর্থ প্রদানের জন্য কার্যকরী জগত ব্যবহারে যথেষ্ট চালাক ছিলেন।
অপরিহার্য সি-এর মতো ভাষার জন্য আমরা (মোটামুটিভাবে) ফাংশনটি ব্যবহার করে এক্সপ্রেশনগুলিকে শব্দার্থ সরবরাহ করতে পারি [[·]] : Expression -> (State -> State x Value)
।
Value
এর একটি উপসেট Expression
। State
জোড়া রয়েছে (সনাক্তকারী, মান)) শব্দার্থক ফাংশনটি একটি অভিব্যক্তি গ্রহণ করে এবং এর অর্থ বর্তমান অবস্থা থেকে আপডেট রাষ্ট্র এবং মান সহ জোড় হিসাবে যুক্ত করে। উদাহরণস্বরূপ, [[x]]
বর্তমান অবস্থা থেকে যুগলটির প্রথম কার্যকারিতাটি বর্তমান রাষ্ট্র এবং যার দ্বিতীয় উপাদানটি x এর মান। বিপরীতে, [[x++]]
বর্তমান অবস্থা থেকে জোড়ের মধ্যে ফাংশনটি কী যার প্রথম উপাদানটি এমন একটি রাজ্য যেখানে x এর মান বাড়ানো হয়, এবং যার দ্বিতীয় উপাদানটি এটি খুব মান। এই অর্থে, প্রসঙ্গটি [·]++
উল্লেখযোগ্যভাবে স্বচ্ছ হয় যদি এটি উপরে বর্ণিত সংজ্ঞাটি সন্তুষ্ট করে।
আমি মনে করি ফাংশনাল প্রোগ্রামাররা রেফারেনশিয়াল স্বচ্ছতা এই অর্থে ব্যবহার করার অধিকারী যে তারা স্বাভাবিকভাবেই [[·]]
মূল্যবোধ থেকে অভিব্যক্তি থেকে ফাংশন হিসাবে পুনরুদ্ধার করে । ক্রিয়াকলাপগুলি প্রথম শ্রেণির মান এবং রাষ্ট্রটি একটি মানও হতে পারে, বর্ণচিহ্ন নয়। রাজ্য মনাদ (অংশে) রাজ্যটি পাস করার (বা থ্রেডিং) করার জন্য একটি পরিষ্কার পদ্ধতি।
নোট করুন যে "অর্থ" এর এই ধারণাটি এমন কিছু যা পর্যবেক্ষকের মনে ঘটে। সুতরাং, একই "রেফারেন্স" বলতে বিভিন্ন লোককে বিভিন্ন জিনিস বোঝাতে পারে। সুতরাং, উদাহরণস্বরূপ, উইকিপিডিয়ায় আমাদের একটি এডিনবার্গ দ্ব্যর্থহীন পৃষ্ঠা রয়েছে।
একটি সম্পর্কিত সমস্যা যা প্রোগ্রামিংয়ের প্রসঙ্গে প্রদর্শিত হতে পারে তা বহুবচন হতে পারে।
এবং সম্ভবত আমাদের বহুবিজ্ঞানের বিশেষ ক্ষেত্রে (বা সম্ভবত এমনকি ingালাই) এর একটি নাম থাকতে হবে যেখানে আমাদের উদ্দেশ্যগুলির জন্য পৃথক পৃথক বহুবর্ণের ঘটনাগুলি শব্দার্থগতভাবে সমতুল্য (ঠিক একইরকমের বিপরীতে। উদাহরণস্বরূপ, সংখ্যা 1 - যা প্রতিনিধিত্ব করা হতে পারে একটি পূর্ণসংখ্যা টাইপ, বা একটি জটিল টাইপ বা অন্যান্য বিভিন্ন ধরণের যে কোনও একটি ব্যবহার করে - বহুবিকভাবে চিকিত্সা করা যেতে পারে)।
আমি " কম্পিউটার প্রোগ্রামার স্ট্রাকচার অ্যান্ড ইম্পিমেন্টেশন " (উইজার্ড বুক) বইটিতে রেফারেন্সিয়াল স্বচ্ছতার সংজ্ঞাটি দরকারী বলে খুঁজে পেয়েছি কারণ এটি অ্যাসাইনমেন্ট অপারেশন প্রবর্তন করে রেফারেন্সিয়াল স্বচ্ছতা কীভাবে লঙ্ঘিত হয়েছে তার একটি ব্যাখ্যা দ্বারা পরিপূরক । এই বিষয়টি সম্পর্কে আমি নিম্নলিখিত স্লাইড ডেকটি দেখেছি: https://www.slideshare.net/pjschwarz/introducing-assignment-inomotates-the-substedia-model-of-evaluation-and-violates-referencesnac- transferences-as- ব্যাখ্যা-ইন-sicp-জাদুকর-বুক
রেফারেন্সিয়াল স্বচ্ছতা হিসাবে সহজভাবে বলা যেতে পারে:
উদাহরণস্বরূপ, প্রোগ্রামিং ভাষা হাস্কেল একটি খাঁটি কার্যকরী ভাষা; মানে এটি স্বচ্ছভাবে স্বচ্ছ।