নির্ভরকারী টাইপের জন্য সংকলক কি কোনও ইন্টারপ্রেটারের চেয়ে অনেক বেশি শক্ত?


12

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

সুতরাং

  • আমার নিষ্পাপ ছাপ ঠিক আছে?
  • যদি এটি সঠিক হয়, নির্ভরশীল প্রকারকে সমর্থন করে কোনও স্ট্যাটিকালি পরীক্ষিত ভাষা প্রয়োগের কোনও উদাহরণ / সংস্থান?

না, যেহেতু আপনি নির্ভরশীল ধরণের সংকলন সমস্যাটিকে একটি পরিচিত সমস্যায় কমিয়ে আনতে পারেন: (1) টাইপ করুন দোভাষী ব্যবহার করে প্রোগ্রামটি পরীক্ষা করুন; (২) প্রোগ্রামটি ওসিএএমএল / হাস্কেল / যাই হোক না কেন; (3) ocamloptবা জিএইচসি :-) ব্যবহার করে সংকলন করুন (এটি উপায়, কোক এবং আগদা পদ্ধতির উপায়))
xrq

উত্তর:


13

এটা মজার একটা প্রশ্ন! অ্যান্টনির উত্তরটি যেমন প্রস্তাবিত হয়েছে, একজন নির্ভরশীল অবিচলিত ভাষা সংকলনের জন্য সাধারণ পদ্ধতির ব্যবহার করতে পারে তবে শর্ত থাকে যে আপনার কাছে টাইপ-চেকিংয়ের শর্তাদি মূল্যায়নের জন্য ইতিমধ্যে কোনও দোভাষী রয়েছে

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

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

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


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

2
2 এবং 3 সমাধানগুলি এই সমস্যার সমাধান করে: আপনি কোডটি সংকলন করেন যা ভাল টাইপডনেস (এবং বিশেষত ধরণের রূপান্তর সম্পাদন করে) পরীক্ষা করে। আমার দ্বিতীয় মন্তব্যটি হ'ল আপনি কিছু পরিস্থিতিতে নির্ভরশীল টাইপড কোডটি চালাতে চান (ইদ্রিস, উর / ওয়েব দেখুন)।
কোডি

1
এছাড়াও: একটি নির্দিষ্ট পরিমাণে, দোভাষী এবং সংকলকের মধ্যে লাইনগুলি ঝাপসা করে সমাধান 1 এটিকেও ঠিকভাবে সম্বোধন করে।
কোডি

1
আমি ভাবছি যদি ফিউটুরাম প্রজেকশন কৌশলটি কার্যকরভাবে সংকলকটি শেষ করে দোভাষীকে গতিতে ব্যবহার করতে পারে?
স্টিভন শ


10

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

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