উত্তর:
পিএইচপি হ'ল ব্যাখ্যাযুক্ত ভাষা। বাইনারি যা আপনাকে পিএইচপি ব্যাখ্যা করতে দেয় তা সংকলিত হয় তবে আপনি যা লিখেন তা ব্যাখ্যা করা হয়।
আপনি অনুবাদিত ভাষার জন্য উইকিপিডিয়া পৃষ্ঠায় আরও দেখতে পারেন
উভয়। পিএইচপি একটি মধ্যবর্তী বাইটকোডে সংকলিত হয় যা রানটাইম ইঞ্জিন দ্বারা ব্যাখ্যা করা হয়।
পিএইচপি সংকলকের কাজটি হল আপনার পিএইচপি কোডটি পার্স করা এবং এটিকে রানটাইম ইঞ্জিনের জন্য উপযুক্ত আকারে রূপান্তর করা। এর কাজগুলির মধ্যে রয়েছে:
আপনার পিএইচপি সেটআপের উপর নির্ভর করে, এই পদক্ষেপটি সাধারণত একবারে করা হয়, প্রথমবার স্ক্রিপ্টটি ডাকা হয়। সংকলক আউটপুট পরবর্তী ব্যবহারগুলিতে অ্যাক্সেস গতিতে ক্যাশে করা হয়। যদি স্ক্রিপ্টটি পরিবর্তন করা হয় তবে সংকলনের পদক্ষেপটি আবার করা হবে।
রানটাইম ইঞ্জিনটি এএসটি এবং বাইকোডে চলে যখন স্ক্রিপ্টটি ডাকা হবে। প্রতীক টেবিলটি ভেরিয়েবলের মানগুলি সংরক্ষণ করতে এবং ফাংশনের জন্য বাইকোড ঠিকানাগুলি সরবরাহ করতে ব্যবহৃত হয়।
রানটাইমতে বাইটকোড সংকলন এবং ব্যাখ্যা করার এই প্রক্রিয়াটি পার্ল, জাভা, রুবি, স্মলটালক এবং অন্যদের সহ কিছু ধরণের ভার্চুয়াল রানটাইম মেশিনে চালিত ভাষার জন্য বিশেষ।
পিএইচপি হ'ল ব্যাখ্যাযুক্ত ভাষা। যদিও এটি তৃতীয় পক্ষের সরঞ্জাম দ্বারা বাইটোকোডে সংকলন করা যেতে পারে।
একটি সংকলিত কোড সরাসরি কম্পিউটারের সিপিইউ দ্বারা কার্যকর করা যায়। অর্থাৎ এক্সিকিউটেবল কোড CPU- এর উল্লেখ করা হয় নেটিভ ভাষা
বর্ণিত ভাষার কোডটি রান-টাইমে কোনও ফর্ম্যাট থেকে সিপিইউ মেশিনের নির্দেশিকায় অনুবাদ করা উচিত। এই অনুবাদ একজন দোভাষী দ্বারা করা হয়েছে।
এটি বলা ঠিক হবে না যে কোনও ভাষার ব্যাখ্যা করা বা সংকলন করা হয় কারণ ব্যাখ্যা এবং সংকলন উভয়ই সেই বিশেষ ভাষার প্রয়োগের বৈশিষ্ট্য, এবং নিজেই ভাষার কোনও সম্পত্তি নয়। সুতরাং, যে কোনও ভাষা সংকলন বা ব্যাখ্যা করা যেতে পারে - আপনি যে বিশেষ প্রয়োগটি ব্যবহার করছেন সেটি কী করে তা নির্ভর করে।
বহুল ব্যবহৃত পিএইচপি বাস্তবায়ন দ্বারা চালিত হয় পার্সি-জাতির প্রাচীন শাস্ত্রগ্রন্থ ইঞ্জিন কেবল পরিচিত PHP.The পার্সি-জাতির প্রাচীন শাস্ত্রগ্রন্থ ইঞ্জিন একটি বিন্যাসে এটি নির্বাহ করতে পারেন, এইভাবে মধ্যে পিএইচপি সোর্স প্রনয়ন যেমন Zend ইঞ্জিন একটি হিসাবে কাজ করে ব্যাখ্যাকারী ।
এটি অর্থহীন প্রশ্ন। পিএইচপি, জিসিসির মতো ইয়্যাক (বাইসন) ব্যবহার করে। ইয়্যাক একটি "সংকলক সংকলক"। ইয়াকের আউটপুট একটি সংকলক। একটি সংকলকের আউটপুট "সংকলিত" হয়। পিএইচপি ইয়্যাকের আউটপুট দ্বারা পার্স করা হয়। সুতরাং এটি সংজ্ঞা দ্বারা সংকলিত।
যদি এটি সন্তুষ্ট না হয় তবে নিম্নলিখিতগুলি বিবেচনা করুন। পিএইচপি (বাইনারি) এবং জিসিসি উভয়ই আপনার উত্স কোডটি পড়ে এবং একটি বিমূর্ত সিনট্যাক্স ট্রি উত্পাদন করে। সংস্করণ 4 এবং 5 এর অধীনে, পিএইচপি তারপরে প্রোগ্রামটিকে বাইটকোডে (সংকলনের পদক্ষেপ) অনুবাদ করতে গাছের পদচারণা করে। ভ্যালকান লজিক ডাম্পারটি ব্যবহার করে আপনি বাইকোডটি অপকডগুলিতে অনুবাদ করেছেন (যা সমাবেশের সাথে সমান) । শেষ অবধি, পিএইচপি (বিশেষত জেন্ড ইঞ্জিন) বাইকোডকে ব্যাখ্যা করে। জিসিসি, তুলনায়, গাছটি হাঁটা এবং সমাবেশ আউটপুট; প্রক্রিয়াটি শেষ করতে এটি এসেম্বলার এবং লিকারগুলি চালাতে পারে। একটি দ্বারা পরিচালিত একটি প্রোগ্রাম কল করা "ব্যাখ্যা করা" এবং অন্য প্রোগ্রাম দ্বারা পরিচালিত অন্য "সংকলিত" অর্থহীন। সর্বোপরি, উভয়ই প্রোগ্রাম দুটি "সংকলক" এর মাধ্যমে পরিচালিত হয়।
পরিবর্তে আপনি যে প্রশ্নটি করতে চান তা আপনার জিজ্ঞাসা করা উচিত। ("পিএইচপি প্রতিটি অনুরোধের জন্য আমার উত্স কোডটি পুনরায় সংশোধন করায় আমি কি পারফরম্যান্স জরিমানা প্রদান করব?" ইত্যাদি)
আমি জানি এই প্রশ্নটি পুরানো তবে এটি সমস্ত জায়গার সাথে সংযুক্ত এবং আমি মনে করি যে এখানে সমস্ত উত্তর ভুল (সম্ভবত তারা পুরানো বলে)।
নেই কোন একটি ব্যাখ্যা ভাষা বা একটি কম্পাইল ভাষা যেমন জিনিস। যে কোনও প্রোগ্রামিং ভাষার ব্যাখ্যা এবং / বা সংকলন করা যায়।
প্রথমত কোনও ভাষা হ'ল নিয়মের একটি সেট, সুতরাং আমরা যখন সংকলনের কথা বলি তখন আমরা সেই ভাষার নির্দিষ্ট প্রয়োগগুলি উল্লেখ করি।
উদাহরণস্বরূপ, এইচএইচভিএম হ'ল পিএইচপি বাস্তবায়ন। কোডটি ইন্টারমিডিয়েট হিপহপ বাইটকোডে রূপান্তর করতে এবং তারপরে মেশিন কোডে অনুবাদ করার জন্য এটি জেআইটি সংকলন ব্যবহার করে। এটি কি সংকলিত বলা যথেষ্ট? কিছু জাভা বাস্তবায়ন (সমস্ত নয়) এছাড়াও জেআইটি ব্যবহার করে। গুগলের ভি 8 এছাড়াও জেআইটি ব্যবহার করে।
সংকলিত বনাম ব্যাখ্যার পুরানো সংজ্ঞাটি ব্যবহার করা আজকাল বোঝা যায় না।
"পিএইচপি সংকলিত হয়?" সংবেদনশীল প্রশ্ন হ'ল যে কোনও সংকলিত ভাষা বনাম একটি অনুবাদিত ভাষার মধ্যে কোন স্পষ্ট এবং সম্মত ডিলিমিটর নেই।
এগুলিকে সীমিত করার একটি সম্ভাব্য উপায় হ'ল (আমি এই দ্বিবিজ্ঞানের কোনও অর্থ পাই না):
সংকলিত ভাষাগুলি পূর্বে সময় সংকলন (সি, সি ++) ব্যবহার করে;
দোহিত ভাষাগুলি জাস্ট ইন টাইম সংকলন বা মোটেও কোনও সংকলন (পাইথন, রুবি, পিএইচপি, জাভা) ব্যবহার করে।
in most cases, হ্যাঁ সব ক্ষেত্রে, না। সুতরাং আপনি এমন একটি লাইন আঁকতে পারবেন না যা শব্দার্থগতভাবে তাৎপর্যপূর্ণ এবং সম্মত।
কমপক্ষে কোডটি যতটা সম্ভব এটি সংকলন করতে পারে না (বা আমার উচিত অপ্টিমাইজ করা উচিত)।
এই কোড ...
for($i=0;$i<100000000;$i++);
echo $i;
... প্রতিটি সময় প্রোগ্রামটি চালানোর সময় সমানভাবে বিলম্বিত করে।
এটি সনাক্ত করতে পারত যে এটি এমন একটি গণনা যা কেবলমাত্র প্রথমবার করা দরকার।