কোক / আগদাতে প্রত্যয়িত সংকলক এবং অপ্টিমাইজেশন


9

আমি মার্টিন-ল্যাফ টাইপ তত্ত্ব, অর্থাৎ কোক / আগদাতে আনুষ্ঠানিকভাবে যাচাই করা সংকলকগুলিতে আগ্রহী। এই মুহুর্তে আমি একটি ছোট খেলনার উদাহরণ লিখেছি। এর মাধ্যমে আমি প্রমাণ করতে পারি যে আমার অনুকূলিতকরণগুলি সঠিক। উদাহরণস্বরূপ যে শূন্যের সাথে সংযোজনগুলি মুছে ফেলা যায়, অর্থাত "x + 0" এর মত প্রকাশ।

নিয়মিত সংকলক দিয়ে সম্পাদন করা কি এমন অপটিমাইজেশন রয়েছে যা একটি ভাল উদাহরণ হিসাবে কাজ করবে? এমন কোনও প্রোগ্রামের কিছু বৈশিষ্ট্য প্রমাণ করা সম্ভব যা নিয়মিত সংকলক দিয়ে সম্পাদন করা সম্ভব নয় এমন অনুকূলিতকরণের অনুমতি দেয়? (যেমন একটি উপপাদ্য প্রবাদ দিয়ে সম্ভব যে অনুমান ছাড়া)

আমি আইডিয়া বা উদাহরণগুলিতে আগ্রহী এবং বিষয়টি সম্পর্কে উল্লেখ করতে চাই।

একটি সম্পর্কিত প্রশ্ন: সংকলক নির্ভুলতার প্রমাণ

সম্পাদনা: যেহেতু স্যুওশি সুন্দরভাবে মন্তব্যগুলিতে লিখেছেন: আমি অপ্টিমাইজেশান কৌশলগুলির সন্ধান করছি যা একটি কম্পাইলার (বলুন) সিতে লিখিত হয় তবে বাস্তবায়ন করা কঠিন তবে একটি কম্পাইলার (বলুন) কোক-এ লেখা থাকলে কার্যকর করা সহজ। যেহেতু আগদা সি-তে সংকলন করেছে (হাস্কেলের মাধ্যমে) আগদাতে সি-তেও সম্ভব সমস্ত কিছু করা সম্ভব Co সম্ভবত কোক / আগদার মতো উপপাদ্য প্রবাদদের একমাত্র উপকারটি হ'ল সংকলক এবং অপটিমাইজেশন যাচাই করা যায়।

সম্পাদনা 2: বিজয় ডিআই-র পরামর্শ অনুসারে আমি এখন পর্যন্ত যা পড়েছি তা লিখুন। আমি মূলত জাভিয়ের লেরয় এবং ইনরিয়ার কমপ্যাক্ট প্রকল্পের দিকে মনোনিবেশ করেছি (এখানে একটি 80 পৃষ্ঠার কাগজ রয়েছে যা একটি ভাল পঠনযোগ্য, আমার মনে হয়)। দ্বিতীয় আগ্রহ ইন্টারেক্টিভ প্রোগ্রামগুলিতে আন্তন সেটজারের কাজ নিয়ে ছিল। আমি যদিও তার সম্ভবত আইও প্রোগ্রামগুলি সম্পর্কিত বৈশিষ্ট্য প্রমাণ করতে এবং আইও প্রোগ্রামগুলি বিসিমুলেশন করতে ব্যবহৃত হতে পারে। Sewell উল্লেখ করার জন্য ধন্যবাদ। আমি আইসিএফপি-তে তাঁর "দ্য জঙ্গল থেকে গল্পগুলি" শুনেছি এবং তার কাগজপত্রগুলির সম্ভবত 2-3 টি পড়েছি। তবে আমি বিশেষভাবে তাঁর কাজ এবং তাঁর সহকর্মীদের দিকে নজর দিইনি।
কম্পাইলারগুলি অনুকূল করার বিষয়ে কাগজগুলি কোথায় শুরু করব বা সন্ধান করব তা আমি এখনও খুঁজে পাইনি; উদাহরণস্বরূপ, কোন অপ্টিমাইজেশানগুলি যাচাই করা সংকলকটির সেটিংসে নজর রাখা আকর্ষণীয় হবে।


1
"নিয়মিত সংকলক দিয়ে সম্পাদন করা কঠিন এমন কি আছে": এটি কি অসম্ভব? আমি যদি যাচাই করা সংকলক থেকে সঠিকতার প্রমাণ সরিয়ে ফেলি তবে আমি একটি নিয়মিত সংকলক পাই। সুতরাং, যাচাই করা সংকলক যা কিছু করতে পারে তা নিয়মিত সংকলক দ্বারাও করা যেতে পারে। যাচাই করা সংকলকটির বিষয়টি হ'ল এটি কোনও অপ্টিমাইজেশন সম্পাদন করতে পারে না যা ভুল। (কম্পাইলার এবং প্রোগ্রাম যাচাইকরণ সম্পর্কে আমার জ্ঞান সংক্ষিপ্ত মাফ করবেন আমি যদি বিন্দু অনুপস্থিত করছি।।)
Tsuyoshi ইটো

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

1
আপনি যদি একটি কম্পাইলার সম্পর্কে কথা বলা হয় লেখা Coq / Agda বা কম্পাইলার জন্য Coq / Agda? আমি ভেবেছিলাম যে আপনার প্রশ্নটি কক / আগদায় লিখিত একটি সংকলক সম্পর্কে ছিল, তবে আমি মনে করি না যে কক / আগদায় লিখিত একটি সংকলক সি
সোসোশি ইতো

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

1
আপনি যদি আপনার প্রশ্নটি আরও সীমাবদ্ধ না করেন তবে এ জাতীয় কোনও অপ্টিমাইজেশন নেই। চরম ক্ষেত্রে সি সংকলক গোপনে তার অন্ত্রগুলিতে একটি উপপাদ্য প্রবাদটি প্রয়োগ করতে পারে (এবং বেশিরভাগ আসলে এটি সীমিত উপায়ে করে)। "নিয়মিত সংকলক" দ্বারা আপনি কী বোঝাতে চেয়েছেন তা অস্পষ্ট বলে আমি মনে করি।
আন্দ্রেজ বাউয়ার 17

উত্তর:


5

ইয়েভেস বার্টোট, বেঞ্জামিন গ্রায়েগোয়ার এবং জাভিয়ের লেরয়ের এই কাগজটি সম্পূর্ণরূপে কোক স্পেসিফিকেশনের ভিত্তিতে সি-এর মতো ভাষার ভাষার জন্য একটি অনুকূলকরণ সংকলক তৈরি করেছে। এই প্রযুক্তিটির কিছু স্পষ্টতই কম্পার্ট সি সংকলকটিতে ব্যবহার করা হয়েছে ।

ডেটাফ্লো বিশ্লেষণের ভিত্তিতে সংকলক অনুকূলকরণ প্রমাণ করার জন্য একটি কাঠামোগত পদ্ধতির

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

কনসার্টের একটি মূল দিকটি হ'ল বেশিরভাগ সংকলক খাঁটি কার্যকরী শৈলীতে সরাসরি কোক স্পেসিফিকেশন ভাষায় লেখা হয়। এক্সিকিউটেবল কমপ্লায়ার এই স্পেসিফিকেশন থেকে ক্যামেল কোডের স্বয়ংক্রিয়ভাবে নিষ্কাশন দ্বারা প্রাপ্ত হয়।

তবে কাগজের শেষে তারা লক্ষ্য করে যে বাস্তব সংকলকগুলিতে কিছু সংকলক অপ্টিমাইজেশান রয়েছে যা তাদের কাঠামোর মধ্যে মডেল করা যায় না।

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


3

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

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

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

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

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