গতিশীল ভাষা সবসময় ব্যাখ্যা করা হয়?


18

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


4
গতিশীল ভাষা সংজ্ঞায়িত করুন, এটি গতিশীল টাইপ করা হয়?
বেনজামিনবি

3
উদ্দেশ্য-সি অনেকগুলি "গতিশীল" বৈশিষ্ট্য প্রদর্শন করে।
এডওয়ার্ড স্ট্রেঞ্জ

4
@ জোব, কয়েক দশক ধরে কেউ লিস্পের সাথে এটি করতে পারে। এবং এটি উভয়ই সংকলিত এবং গতিশীল টাইপ করা হয়। সুতরাং, সংকলন এবং ব্যাখ্যার মধ্যে কখনই সঠিক সীমানা তৈরি হয়নি।
এসকে-যুক্তি 6

2
@ ড্যারিন আপনি রান সময়টিও সংকলন করতে পারেন এবং কোডটি পরে কার্যকর করতে পারেন। কড়া কথায় বলতে গেলে এটি কোনও ব্যাখ্যা নয়।
xmm0

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

উত্তর:


33

সর্বাধিক (সমস্ত না থাকলে) গতিশীল ভাষাগুলি [অর্থাত পাইথন, পিএইচপি, পার্ল এবং রুবি] দেখলে সেগুলি সমস্তই ব্যাখ্যা করা হয়।

সত্য না. আপনি পাইথন উত্স সংকলন করতে পারেন। এটি একটি অস্তিত্বের প্রমাণ।

স্ট্যাটিকালি-টাইপ করা ভাষার জন্য দোভাষী এবং গতিশীল টাইপযুক্ত ভাষার জন্য সংকলক রয়েছে। দুটি ধারণাটি অরথোগোনাল।

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


19
পাইথনকে সিন্ট্যাক্টিক্যালি বৈধ হওয়ার জন্য হোয়াইটবোর্ডে কোন সূক্ষ্মতার সাথে ইনডেন্টসের মিল থাকতে হবে? ;)
এডিএ-কিএ মার্ট-ওরা-ই

1
আপনি পাইথন সংকলন করতে পারবেন না। পিওয়াইসি কেবলমাত্র একটি মডিউলের লোডকে ত্বরান্বিত করে। এবং পাইপেক্সে সোজা ফাইলের সাহায্যে এক্সাইতে ব্যাখ্যাকারীকে এম্বেড করুন।
বেনিয়ামিনবি

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

4
@ ইউবুইকিট: হ্যাঁ, এটি সঠিক, তবে এটি "আপনি পাইথন সংকলন করতে পারবেন না" বা পাইথন সংকলন করা সম্ভব কিনা আপনার এই দাবির সাথে কোনও সম্পর্ক নেই । প্রথম এবং সর্বাগ্রে, আপনি মিশ্রণ করছেন Pythonএবং CPythonযদিও পূর্ববর্তীটি পূর্বের বাস্তবায়ন, তেমন PyPy
ফ্যান্ট0 মি

2
@ ক্লাইমসি কোনও ভাষার সমস্ত বৈশিষ্ট্য সংকলক বা দোভাষী হিসাবে অন্তর্নির্মিত হয়, অন্যথায় অনুবাদক বা সংকলক অন্য ভাষার জন্য কিছু।
পিটার বি

15

কমন লিস্পটি গতিশীল (এবং দৃ strongly়ভাবে) টাইপযুক্ত এবং সাধারণত সংকলিত হয়

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


12

সি # 4.0 গতিশীল ধরণের (দেরিতে-বাঁধাই করা) সমর্থন করে এবং এটি সংকলিত।


4

নোড.জেএস গুগলের ভি 8 জাভাস্ক্রিপ্ট ইঞ্জিনের উপর ভিত্তি করে। ভি 8 রানটাইম সংকলন করে। ভি 8 অন্ধভাবে সেই সত্যটি দেওয়া হয়েছে। কেবলমাত্র http://shootout.alioth.debian.org দেখুন এবং উপরোক্ত বর্ণিত কোনও ভাষার তুলনায় ভি 8 বনাম তুলনা করুন।


3

না - গতিশীল ভাষাগুলি সংকলন করা অবশ্যই সম্ভব।

এমন কি কিছু গতিশীল ভাষা রয়েছে যা সর্বদা ডিজাইন দ্বারা সংকলিত হয় (উদাহরণস্বরূপ Clojure)।

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

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

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

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


2

একসময় বেসিককে ব্যাখ্যা করা হত। এবং বেসিকের কয়েকটি বৈকল্পিকের গতিশীল টাইপিং ছিল। এবং আপনি তাদের জন্য সংকলকও পেতে পারেন।

(এটি 100 কে ফ্লপি ড্রাইভের দিনগুলিতে ফিরে এসেছিল, যখন ডাইনোসররা এখনও পৃথিবীতে ঘোরাঘুরি করেছিল এবং প্রাতঃরাশের জন্য অবিশ্বাস্য এস / ডাব্লু ডেভেলপারদের খেয়েছিল।)


... তবে যখন তারা জিওটিও ব্যবহার করবে। (এটি অবশ্যই খুব সাধারণ ছিল যদি তারা বেসিকের বিকাশ করত A আহা! এটি ব্যাখ্যা করে!)
ম্যাসন হুইলার

বেসিকটি এর নকশাকালীন সময়ে একটি সংকলিত ভাষা ছিল।
এপ্রোগ্রামার

2

বিভিন্ন স্মলটাক বাস্তবায়ন এটিকে আলাদাভাবে পরিচালনা করে তবে তাদের বেশিরভাগই বাইকোডগুলিতে সংকলন করে যা একটি উচ্চ-কর্মক্ষমতা ভিএম-তে চালিত হয়।


2

আসলে বেশিরভাগ তথাকথিত "অনুবাদিত" ভাষাগুলি এটিকে দ্রুত চালিত করার জন্য একটি ইন-টাইম সংকলনকে মঞ্জুরি দেয় / মঞ্জুরি দেয়। এবং এগুলির মধ্যে কিছুগুলি চালানোর আগে তাদের বাইট কোডে সংকলন করতে হবে।

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


1

ক্রোম, আইই 9 এবং ফায়ারফক্স 3.1+ সমস্ত জাভাস্ক্রিপ্ট দেশীয় বাইনারিগুলিতে সংকলন করে এবং জাভাস্ক্রিপ্ট গতিশীলভাবে টাইপ করা হয়।

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

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


1

পাইথন সাধারণত সংকলিত হয়। স্বীকৃতভাবে বাইট কোডে সংকলিত হয়েছে যা এর পরে ব্যাখ্যা করা হয়।

পার্ল একই রকম ফ্যাশনে কাজ করে।

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


-5

হ্যাঁ. সমস্ত গতিশীল ভাষাগুলি বর্ণিত ভাষা হয় (তবে একটি অনুবাদিত ভাষা অ-গতিশীল হতে পারে)।

কারণটি সহজ: এটি গতিশীল হলে, বাইনারি সংকলনের স্তরে গতিশীলতা সম্পাদনের জন্য এটি একজন দোভাষীর প্রয়োজন।

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


2
ভুল। গতিশীল ভাষাগুলি সংকলন করা যায় (এবং কখনও কখনও খুব দক্ষতার সাথে, যেমন জেআইটি এবং অভিযোজনমূলক সংকলনের কৌশলগুলি ব্যবহার করে)
বেসাইল স্টারিনকিভিচ

"মোটামুটি, জেআইটি সংকলন ব্যাখ্যার ওভারহেডের সাথে ব্যাখ্যাের নমনীয়তার সাথে সংকলিত কোডের গতি একত্রিত করে ..." এন.ইউইউইকিপিডিয়া / উইকি / জাস্ট- ইন- টাইম_কম্পিলেশন আপনার প্রোগ্রামটি সংকলন করে না: এটি সংকলিত দ্বারা সংকলিত আপনার জন্য দোভাষী
ClearMind

পড়ুন এর সাথে সম্পর্কিত কাগজপত্র আত্ম
বাসিল Starynkevitch

অবশ্যই। আপনার লিঙ্কটিতে উল্লেখ করা হয়েছে: "স্বের একটি বৈশিষ্ট্য হ'ল এটি একই ধরণের ভার্চুয়াল মেশিন সিস্টেমের উপর ভিত্তি করে নির্মিত হয়েছিল যা আগে স্মলটাল্ক সিস্টেমগুলি ব্যবহৃত হত That অর্থাৎ প্রোগ্রামগুলি সি-র মতো ভাষাতে স্ট্যান্ড-একল সত্তা নয়, তবে তাদের প্রয়োজন চালানোর জন্য পুরো মেমরির পরিবেশ "। একা একা না = বাইনারি সংকলিত ভার্চুয়াল মেশিনটি বাইনারি সংকলন সম্পাদন করার জন্য প্রয়োজন
ClearMind

1
আপনার সংকলক সংজ্ঞা খুব সীমাবদ্ধ। প্রতিটি সংকলক একটি বাইনারি এক্সিকিউটেবল ফাইল তৈরি করে না। সাম্প্রতিক একটি কাউন্টারেরেক্সামালের জন্য, এসবিসিএল বাস্তবায়ন অধ্যয়ন করুন । ছোট ছোট টুকরোগুলিতে সর্বশেষতম ড্রাগন বুক এবং লিসপ
বেসাইল স্টারিঙ্কেভিচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.