গুগল ক্লোজার কি সত্যিকারের সংকলক?


19

এই প্রশ্নটি স্ট্যাক ওভারফ্লো প্রশ্নটিতে মন্তব্যগুলিতে বিতর্ক দ্বারা অনুপ্রাণিত হয় । গুগল বন্ধ কম্পাইলার ডকুমেন্টেশন মার্কিন যুক্তরাষ্ট্র নিম্নলিখিত (জোর দেওয়া যোগ):

ক্লোজার সংকলক জাভাস্ক্রিপ্ট ডাউনলোড এবং দ্রুত চালানোর জন্য একটি সরঞ্জাম। এটি জাভাস্ক্রিপ্টের জন্য সত্যিকারের সংকলক। উত্স ভাষা থেকে মেশিন কোডে সংকলনের পরিবর্তে এটি জাভাস্ক্রিপ্ট থেকে আরও ভাল জাভাস্ক্রিপ্টে সংকলন করে।

তবে উইকিপিডিয়া একটি "সংকলক" এর নিম্নলিখিত সংজ্ঞা দেয়:

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

তার ভিত্তিতে, আমি বলব যে গুগল ক্লোজার কোনও সংকলক নয়। তবে গুগল স্পষ্টভাবে জানিয়ে দিয়েছে যে এটি আসলে একটি "সত্য সংকলক" আমাকে আরও অবাক করে দিয়েছে যে এর আরও কিছু আছে কিনা। গুগল ক্লোজার কি আসলেই জাভাস্ক্রিপ্ট সংকলক?


2
আমি জেএসকে বাজি ধরছি এটি আউটপুটগুলি সমস্ত আইনী জেএসের একটি উপযুক্ত উপসেট; এই অর্থে, তার আউটপুট ভাষা হল "অন্য" ভাষা।
আকাশম

উত্তর:


23

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

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

সুতরাং পছন্দ হয়

  • এটিকে গুগল ক্লোজার ফাগল বলুন এবং ডিকোসিকনে একটি সম্পূর্ণ নতুন অন্যথায় অর্থহীন শব্দটি প্রবর্তন করুন।
  • এটিকে গুগল ক্লোজার মিনিপ্টিভিয়েডেটর বলুন, যা অভিপ্রায় অনুসারে পরিষ্কার তবে মনে রাখা শক্ত।
  • একে গুগল ক্লোজার কমপ্লেয়ার বলুন, যা সত্যের খুব কাছাকাছি।

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

অথবা, পূর্ববর্তী উদাহরণে ফিরে আসতে, আপনি টাইপস্ক্রিপ্ট সম্পর্কে এমন গুরুত্বপূর্ণ কিছু খুঁজে পেতে পারেন যা এটিকে "সত্য সংকলক" হিসাবে অভিহিত করতে দেয়, যখন গুগল ক্লোজার কম্পাইলারকে "প্রায় একটি সংকলক" হিসাবে সীমাবদ্ধ রাখা উচিত?


প্রশ্নের মূল বক্তব্যটি কেবল "সংকলক" হিসাবে লোকেরা কী দেখায় তা সত্যই ছিল। 0 এ 0 ডি দ্বারা বর্ণিত হিসাবে এটি কেবল শব্দার্থক, তবে আমি নিজেকে ভাবছিলাম যে গুগল কেন এটি একটি "সত্য সংকলক" ছিল তা পরিষ্কার করার প্রয়োজনীয়তা অনুভব করেছিল। "মিনোপটিভিয়েডেটার" এর জন্য +1!
জেমস অ্যালার্ডাইস

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

1
আমি জানি না, আমি "গুগল ফগল" পছন্দ করছি :-)
গ্র্যান্ড

9
আমি ভোট Minoptival। এটি ডাইনোসরের মতো শোনাচ্ছে। সবাই ডাইনোসর পছন্দ করে, তাই না?
ইজকাটা

2
@ ইজকাটা: বিবর্তনের ইতিহাস আমাদের যদি এমন একটি বিষয় শিখিয়ে দেয় তবে তা জাভাস্ক্রিপ্টের মধ্যে নেই। জাভাস্ক্রিপ্ট বিনামূল্যে বিরতি দেয়, এটি নতুন অঞ্চলগুলিতে প্রসারিত হয় এবং বেদনাদায়ক, এমনকি বিপজ্জনকভাবে বাধার মধ্য দিয়ে ক্র্যাশ হয়।
পিডিআর

9

তার ভিত্তিতে, আমি বলব যে গুগল ক্লোজার কোনও সংকলক নয়।

হ্যাঁ হ্যাঁ ... তবে এটি ধরে নিয়েছে যে উইকিপিডিয়া এই বিষয়টিতে অনুমোদনযোগ্য।

এবং উইকিপিডিয়া সংজ্ঞার বিরোধী হিসাবে, কয়েকটি অভিধান সংজ্ঞা বিবেচনা করুন ( http : //www.thefreed অভিধান.com/ compiler থেকে ):

2) (কম্পিউটার সায়েন্স) - এমন একটি প্রোগ্রাম যা উচ্চ স্তরের ভাষায় রচিত অন্য একটি প্রোগ্রামকে মেশিনের ভাষায় অনুবাদ করে যাতে এটি কার্যকর করা যায়।

2) (ইলেকট্রনিক্স এবং কম্পিউটার বিজ্ঞান / কম্পিউটার বিজ্ঞান) একটি কম্পিউটার প্রোগ্রাম যার মাধ্যমে একটি উচ্চ স্তরের প্রোগ্রামিং ল্যাঙ্গুয়েজ, যেমন সিওবিএল বা ফোরট্রানকে মেশিন ল্যাঙ্গুয়েজে রূপান্তর করা হয় যা একটি কম্পিউটার দ্বারা কাজ করা যেতে পারে।

নির্দিষ্ট প্রোগ্রামিং ভাষার সাথে যুক্ত একটি কম্পিউটার প্রোগ্রাম যা সেই ভাষাগুলিতে লিখিত নির্দেশকে মেশিন কোডে রূপান্তর করে যা পরে কম্পিউটার দ্বারা সরাসরি সম্পাদন করা যেতে পারে।

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

ক্লোজার সংকলকটি একটি "সত্য সংকলক" বা না (আইএমও) একটি কার্যকর ক্রিয়াকলাপ নয় কিনা তা নিয়ে বিতর্ক। "সত্যিকারের সংকলক" দ্বারা গুগল ভাবাপন্ন লোকেরা কী বোঝায় তা বোঝা আরও দরকারী হবে ... সেই প্রসঙ্গে।


2
+1, হাস্যকরভাবে, জেএস হ'ল ওয়েবের জন্য 'মেশিন ল্যাঙ্গুয়েজ' এবং একটি 'উচ্চ-স্তরের প্রোগ্রামিং ভাষা'।
কে.স্টেফ

3
+1 এবং আরও একটি 'উইকিপিডিয়া এই বিষয়টিতে রচয়িতা আছে' ধরে নেয়। সেখানে অনেক কিছু লেখা আছে বলেই অন্ধভাবে গ্রহণ করছেন।
মার্জন ভেনেমা

6

আমি মনে করি কেন এটি "সত্যিকারের সংকলক" বলা যেতে পারে কারণ এটি আপনার প্রোগ্রামগুলির মধ্যে একটি সম্পূর্ণ এএসটি (বিমূর্ত শব্দার্থ গাছ) তৈরি করে এবং এটি একটি নতুন পাঠ্য উত্পন্ন করতে ব্যবহার করে।

মূল এবং ফলাফল উভয় পাঠ্য বৈধ জাভাস্ক্রিপ্ট যে সত্য নিছক কাকতালীয়।

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


1
ধন্যবাদ, এটি একটি আকর্ষণীয় উত্তর। আমি মনে করি আপনার ব্যাখ্যাটি উইকিপিডিয়া এবং অন্যদের উদ্ধৃত করা বিভিন্ন অভিধানের চেয়ে "সংকলক" এর আরও ভাল সংজ্ঞা দিতে পারে।
জেমস এলার্ডিস

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

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

4

এটি আমার মতে শব্দার্থবিজ্ঞান। প্রচলিত অর্থে এটি কোনও সংকলক নয়। তবে, একই উইকিপিডিয়া লিঙ্কে, এটি বলে

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

বন্ধ এই সমস্ত অপারেশনগুলির কিছু বা সমস্ত সম্পাদন করে।

উইকিপিডিয়া নিবন্ধে আরও কিছুটা দূরে

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

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

বিশেষ্য হিসাবে ক্লোজার সংকলক একটি নন-সিকুইটার


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

3

প্রথমে উত্স থেকে উত্স সংকলক যেভাবে উপস্থিত রয়েছে তা থেকে এটি সরিয়ে নেওয়া যাক। আপনি কিছু বলতে পারেন না যে কোনও সংকলক নয় কারণ শেষ ফলাফল নিম্ন স্তরের কোড নয়।

যদিও এটি সঠিক যে ক্লোজার সংকলকটি এএসটি উত্পন্ন করে এবং কোড উত্পন্ন বাক্যাংশ রয়েছে, সেখানে অনেক জাভাস্ক্রিপ্ট মিনিমাইজার ইতিমধ্যে তা করেছে এবং আমি সম্ভবত তাদেরকে সংকলকও বলব না।

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

টাইপ সিস্টেম:

সমাপ্তি সংকলক একটি টীকাযুক্ত সিস্টেমের সংজ্ঞা দেয়। এটি টাইপ অনুমিত কৌশলগুলি ব্যবহার করে যা অনেকগুলি সংকলক ত্রুটির জন্য আপনার প্রোগ্রামটি পরীক্ষা করতে ব্যবহার করে।

আন্তঃসম্পর্কীয় অপ্টিমাইজেশন

সমাপ্তি সংকলক পুরো প্রোগ্রামের স্তরে ডেড কোডটির নামকরণ এবং মুছে ফেলার জন্য কল গ্রাফগুলি তৈরি করে।

ইন্ট্রাপ্রোসিডেরাল অপ্টিমাইজেশন

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

মডিউল সিস্টেম

ক্লোজার কম্পাইলারের একটি কম পরিচিত অংশ যা আপনার কোডটি দ্রুত প্রারম্ভকালের জন্য পৃথক ডাউনলোডে ভাগ করতে ব্যবহার করা যেতে পারে। এটি পাশাপাশি অনেক গ্রাফ অ্যালগরিদম ব্যবহার করে। কিছু কিছু "প্রথাগত" সংকলকগুলিতে খুব সাধারণ।

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

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