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