অনেক শিল্প-ব্যবহৃত সংকলকগুলিতে কেন ধারাবাহিকতা পাস করার শৈলীর চেয়ে স্থির-একক অ্যাসাইনমেন্টকে প্রাধান্য দেওয়া হয়?


16

স্ট্যাটিক-সিঙ্গল অ্যাসাইনমেন্টের (এসএসএ) উইকিপিডিয়া পৃষ্ঠা অনুসারে , এসএসএ বড় এবং সুপরিচিত প্রকল্পগুলি যেমন এলএলভিএম, জিসিসি, এমএসভিসি, মনো, ডালভিক, স্পাইডারমনকি এবং ভি 8 ব্যবহার করে যখন ধারাবাহিকতা-পাসিং স্টাইল ব্যবহার করে প্রকল্পগুলির পৃষ্ঠা (সিপিএস) তুলনায় কিছুটা অভাব রয়েছে।

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

এসএসএ গ্রহণের গতি ছাড়াও শিল্পে ব্যবহৃত হওয়ার কোনও বিশেষ কারণ আছে কি? এসএসএ এবং সিপিএসের একটি ঘনিষ্ঠ সম্পর্ক রয়েছে; এর অর্থ হ'ল যে কোনও একটির শর্তে এটি বলা সহজ হবে তবে সিপিএসের জন্য তথ্য উপস্থাপনা কম কমপ্যাক্ট বা কম দক্ষ হবে।


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

উত্তর:


9

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

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

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

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

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

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


2
প্রাথমিক উত্তরের পরে কিছুটা সময় হয়ে গেছে তবে শেষ পর্যন্ত আমি 10% এরও বেশি বুঝতে পেরেছি উত্তরটি গ্রহণ করার পক্ষে আমি যথেষ্ট ভালো ...
CinchBlue

2

আমি কোনও সংকলক বিশেষজ্ঞ নই, তাই আমি যা বলি তা নুনের দানা দিয়ে নিন, আমি আশা করি যে সত্যিকারের সংকলক বিশেষজ্ঞ চিমিয়ে যাবেন I আমাকে বলা হয়েছিল:

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

উভয়ই সিপিএস-ট্রান্সফর্ম দ্বারা তুলনামূলকভাবে ধীরে ধীরে সংকলিত কোড তৈরির ষড়যন্ত্র করে।


3
আমি মনে করি আপনি সিপিএস একটি মধ্যবর্তী ভাষা ব্যবহার করে সিপিএস রূপান্তরিত উত্স কোড (বা উত্স থেকে উত্স রূপান্তর) মিশ্রণ করছেন । ধরে নিচ্ছি আপনার ইনপুট ভাষা যেমন নিয়ন্ত্রণ প্রভাবগুলিকে সমর্থন করে না , উদাহরণস্বরূপ, ধারাবাহিকতাগুলি স্ট্যাক শৃঙ্খলার সাথে ব্যবহার করা হবে - কোনও আবর্জনা সংগ্রহকারী প্রয়োজন হবে না, এবং ধারাবাহিকতা নিয়ন্ত্রণ প্রবাহের প্রান্তের সাথে কমবেশি মিলবে will গ্রাফ তাই কোনও অতিরিক্ত জাম্পিং হবে না। উচ্চতর অর্ডার ফাংশনগুলির কিছু সাধারণ-উদ্দেশ্য বাস্তবায়ন ব্যবহার করে আপনাকে ধারাবাহিকতাগুলি প্রয়োগ করতে হবে না। call/cc
ডেরেক এলকিন্স SE

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