"বিখ্যাত লজিস্টিয়ানরা এখানে বিব্রতকর ত্রুটি করেছেন," এসআইসপির একটি লাইন। এটি কি উল্লেখ করা হয়?


14

এখানে "স্থানীয় নাম" শিরোনামে কম্পিউটার প্রোগ্রামগুলির কাঠামো ও ব্যাখ্যা , বিভাগ 1.1.8 রয়েছে:

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

এই শেষ লাইনের শেষে একটি পাদটীকা রয়েছে (26), যা বলে:

ধারাবাহিক নামকরণের ধারণাটি আসলে সূক্ষ্ম এবং আনুষ্ঠানিকভাবে সংজ্ঞা দেওয়া কঠিন difficult বিখ্যাত লজিস্টিয়ানরা এখানে বিব্রতকর ত্রুটি করেছেন।

কী বা কাকে পাঠ্য উল্লেখ করা হচ্ছে? "ধারাবাহিক নামকরণ" সংজ্ঞায়িত করা কেন কঠোর হবে, যা যুক্তিবিদরা এটি সংজ্ঞায়িত করার চেষ্টা করে ত্রুটি করেছে এবং সেই ত্রুটিগুলি কী ছিল?


3
আমি আমার ছাত্রদের বলছি যে "নিয়মিতভাবে বাউন্ড ভেরিয়েবলের নাম পরিবর্তন" বোঝার একমাত্র উপায় হ'ল অভিশাপটি সঠিকভাবে বাস্তবায়ন করা। অনেক যুক্তিযুক্ত বই ইস্যুটি এড়িয়ে যায়, নামকরণের অসম্পূর্ণ প্রক্রিয়াটি দেয় বা প্রদত্ত নাম পরিবর্তনের পদ্ধতিটি সঠিক যে খুব স্বল্পতম প্রমাণই বাদ দেয়। তবে কোন বিশেষ গসিপটি বইটি উল্লেখ করেছে তা আমি জানি না।
আন্দ্রেজ বাউয়ার

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

1
আমি যদি সম্ভব হয় তবে নীচের উত্তর বাক্সে আরও বেশি কংক্রিট উত্তরকে উপলব্ধি করব। এই মন্তব্যগুলি এখনও বিষয়টি রহস্যজনক করে তুলেছে কারণ আপনি এগুলি ইতিমধ্যে হাতে থাকা ইস্যুটির সাথে পরিচিত ছিলেন এমন কেউ পড়তে লিখতে লিখেছেন, যদিও আমি নই
ubadub

@ কেচি আমি বিশেষত এই বিষয়গুলির সাথে সম্পর্কিত সুপারিশগুলি পড়ার প্রশংসা করব, যদি আপনার কোনও থাকে। অগ্রিম ধন্যবাদ
ubadub

উত্তর:


11

এটি একটি আংশিক উত্তর: এসআইসিপি কোন ত্রুটিগুলি বা লোকেদের উল্লেখ করছে সে সম্পর্কে আমার কোনও ধারণা নেই। আমি "কেন" ভেরিয়েবলের পুনরায় নামকরণটি হ্যান্ডেল করার জন্য বেদনাদায়ক হতে পারে সে সম্পর্কে কেবল কিছু ইঙ্গিত সরবরাহ করতে পারি।

প্রথমত, এটি সংজ্ঞায়িত করা তুচ্ছ মনে হয় না। উদাহরণস্বরূপ, আমরা ইনডেক্সড অঙ্কগুলিতে বাউন্ড ভেরিয়েবলের নাম পরিবর্তন করতে পারি

xe=y(e{y/x})

যেখানে কোনও অভিব্যক্তি, এবং each প্রতিটি সাথে সিনট্যাকটিক প্রতিস্থাপনকে বোঝায় । তুচ্ছ, ঠিক?ee{y/x}xy

ঠিক আছে, যদি আমরা উপরোক্ত নিয়মটি অন্ধভাবে প্রয়োগ করি তবে আমরা পাই

x(x+y)=y(y+y)

এটা ভালো না. আমাদের " ঘটবে না " প্রয়োজনীয়তা যুক্ত করতে হবে , বা আমরা নামের সংঘর্ষ পাই।ye

এখন, এই সঠিক নামকরণ বিবেচনা করুন

xy(x+y)=xz(x+z)

আমরা নামান্তর করতে চান তাহলে মধ্যে , নিয়ম করে উপরের আমরা ডান দিকে এটা করতে পারেন, কিন্তু বাম দিকে নয়। এটি অসুবিধাগুলি, যেহেতু দু'জনেই কেবল নতুন নামকরণের মাধ্যমে পৃথক হয়, সুতরাং তাদের একই পদ্ধতিতে পরিচালনা করা উচিত।xy

এখানে একটা প্রচলিত পদ্ধতির redefining অবলম্বন হয় হিসাবে "ক্যাপচার-এড়ানো প্রতিকল্পন", এবং প্রয়োজন "শিথিল ঘটতে না " এবং পরিবর্তে ব্যবহার করুন " ঘটবে না বিনামূল্যে মধ্যে "।e{y/x}yeye

এরপরে আমরা নিখরচায় সংঘটনগুলি সংজ্ঞায়িত করি:

free(x)={x}free(e+t)=free(e)free(t)free(xe)=free(e){x}

পরিশেষে, প্রতিস্থাপন এড়ানো ক্যাপচার:

  • x{t/y} হয় যদি , এবং অন্যথায়।tx=yx
  • (e+e){t/y}=e{t/y}+e{t/y} (সহজ কেস)
  • (xe){t/y}=??

শেষ ঘটনাটি বেদনাদায়ক। যদি তবে বিকল্পটি কোনও বিকল্প নেই, যেহেতু আমরা এটি কেবল ফ্রি ভেরিয়েবলকেই প্রভাবিত করতে চাই এবং সীমাবদ্ধ। সুতরাং ফলাফলটি কেবল ।x=yxxe

যদি , আমরা বলতে চাই যে । এটি তবে সাধারণভাবে, যেহেতু বিনামূল্যে হয় তবে আমরা ক্যাপচার পাই।yx(xe){t/y}=x(e{t/y})xt

দীর্ঘশ্বাস. সুতরাং, আমরা কে "প্রথম" ভেরিয়েবল হতে দেই যা 1) নয় , 2) বিনামূল্যে নয় , এবং 3) বিনামূল্যে নয় । এখানে, "প্রথম" এর অর্থ হল আমাদের চলক নামগুলির সেটটি ভালভাবে অর্ডার করতে হবে (উদাহরণস্বরূপ নাম এবং প্রাকৃতিকগুলির মধ্যে দ্বিচার পছন্দ করে)। তারপরে, আমরা অবশেষে ।zytxe(xe){t/y}=z(e{z/x}{t/y})

আমি আশা করি আমি এটা ঠিক পেয়েছি। (আমার প্রথম প্রচেষ্টাটি ভুলভাবে হয়েছিল)

কিছু লেখক আরও কেস বিবেচনা করে তবে ফলাফলটি একই সাথে "পুনর্নামকরণ পর্যন্ত"। "প্রথম" পছন্দটি উপরে বর্ণিত নয়: এই জাতীয় কোনও কাজ করবে এবং একই ফলাফলের দিকে নিয়ে যাবে (আবার নাম বদলানো পর্যন্ত)।zz

এখন, অবশেষে, আমাদের নাম পরিবর্তন করার ( রূপান্তর) এবং একটি মুক্ত ভেরিয়েবলের ক্যাপচার-এড়ানো বিকল্পের একটি সংজ্ঞা রয়েছে। উপরে, আমি অঙ্কগুলি বিবেচনা করেছি, তবে সেগুলি সমস্ত বাইন্ডারগুলিতে প্রয়োগ হয় (যেমন mb ল্যাম্বডা ক্যালকুলাসে , অনেক পিএল-তে ফাংশন সংজ্ঞা ইত্যাদি)।αλx

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

নির্মমভাবে সত্য বলতে, এটি প্রমাণ হিসাবে প্রতারণা করছে। আমরা "উইঙ্ক উইঙ্ক, ন্যাজ ন্যাজ, আরও কিছু বলতে পারি না!" একই চেতনায়। আমরা মূলত করুণার জন্য জিজ্ঞাসা করি এবং পাঠককে বলি: "দেখুন, এটি বিরক্তিকর, আমি এটি করতে চাই না, আপনি এটি পড়তে চান না - আমরা উভয়েই জানি যে বিশাল চেষ্টা করে আমরা এই প্রমাণটি আবার লিখতে পারি সমস্ত বিবরণ অন্তর্ভুক্ত করুন "।

প্রযুক্তিগতভাবে, একটি মিথ্যা বক্তব্য প্রমাণের জন্য এই শর্টকাটটি ব্যবহার করা সম্ভব। অভিজ্ঞ প্রুফ পর্যালোচক অবশ্য জানেন যে "নৈতিকভাবে ভাল" কী এবং নিখুঁতভাবে তৈরি করতে পারে (দুর্দান্ত প্রচেষ্টার সাথে), এবং সন্দেহজনক কী। পরবর্তীকালে এমন কিছু অন্তর্ভুক্ত থাকতে পারে যা আবদ্ধ নামের প্রকৃত পছন্দের উপর নির্ভর করে (যাতে আমরা প্রতিশ্রুতি অনুসারে "" পর্যন্ত "কাজ করি না !)। এই ক্ষেত্রে, পর্যালোচনা আরও বিশদ জানতে চাইবে, যাতে (গুলি) সে নিশ্চিত হতে পারে।

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