উত্তর:
সংকলন সময় এবং রান সময়ের মধ্যে পার্থক্য হ'ল নীতিবিহীন তাত্ত্বিকদের এই পর্বকে পার্থক্য বলে । বিশেষত প্রোগ্রামিং ভাষাগুলিতে খুব বেশি পটভূমি না থাকা ব্যক্তিদের জন্য এটি শেখার অন্যতম কঠিন ধারণা। এই সমস্যাটির কাছে যেতে আমি জিজ্ঞাসা করতে সহায়ক মনে করি
রান টাইম ত্রুটিগুলি যা ভুল হতে পারে তা হ'ল :
এছাড়াও প্রোগ্রামের দ্বারা সনাক্ত হওয়া ত্রুটি থাকতে পারে:
আমি এটিকে ত্রুটিগুলির সাথে বিবেচনা করি এবং কখন তারা ধরা পড়তে পারে।
সংকলন সময়:
string my_value = Console.ReadLine();
int i = my_value;
একটি স্ট্রিং মান টাইপ int এর একটি ভেরিয়েবল বরাদ্দ করা যায় না, সুতরাং সংকলকটি সংকলনের সময় এই কোডটিতে একটি সমস্যা রয়েছে তা নিশ্চিতভাবেই জানে
রান সময়:
string my_value = Console.ReadLine();
int i = int.Parse(my_value);
এখানে ফলাফলটি রিডলাইন () দ্বারা কী স্ট্রিং ফিরিয়েছিল তার উপর নির্ভর করে। কিছু মান একটি ইন্টিতে পার্স করা যায়, অন্যেরা তা করতে পারে না। এটি কেবল রান টাইমে নির্ধারণ করা যেতে পারে
.app
এক্সটেনশনে সংকলন করার সময় কি সংকলন করা হয়েছিল ? বা এটি প্রতিবার চালু হওয়ার পরে কি অ্যাপটি শুরু হয়?
সংকলন -সময়: আপনি, বিকাশকারী, আপনার কোডটি সংকলন করছেন এমন সময়কাল।
রান-টাইম: সেই সময়কাল যা কোনও ব্যবহারকারী আপনার সফ্টওয়্যারটির অংশটি চালাচ্ছে।
আপনার কোনও পরিষ্কার সংজ্ঞা দরকার?
int x = 3/0
তবে আপনি এই ভেরিয়েবলটি দিয়ে কিছুই করেন না। আমরা এটি বা কিছু মুদ্রণ করতে পারি না। এটি কি এখনও রানটাইম ত্রুটি হিসাবে বিবেচিত হবে?
( সম্পাদনা করুন : নিম্নলিখিতটি সি # এবং অনুরূপ, প্রবলভাবে টাইপ করা প্রোগ্রামিং ভাষার ক্ষেত্রে প্রযোজ্য this এটি আপনাকে সহায়তা করে কিনা আমি নিশ্চিত নই)।
উদাহরণস্বরূপ, আপনি কোনও প্রোগ্রাম চালানোর আগে নিম্নলিখিত সংকলনটি সংকলক ( সংকলনের সময় ) দ্বারা সনাক্ত করা হবে এবং সংকলনের ত্রুটির ফলস্বরূপ:
int i = "string"; --> error at compile-time
অন্যদিকে, নিম্নলিখিতগুলির মতো একটি ত্রুটি সংকলক দ্বারা সনাক্ত করা যায় না। আপনি রান-টাইমে একটি ত্রুটি / ব্যতিক্রম পাবেন (যখন প্রোগ্রামটি চালিত হবে)।
Hashtable ht = new Hashtable();
ht.Add("key", "string");
// the compiler does not know what is stored in the hashtable
// under the key "key"
int i = (int)ht["key"]; // --> exception at run-time
সূত্রের কোডটি স্টাফ-ঘটনামুলকভাবে [স্ক্রিন | ডিস্ক | নেটওয়ার্ক] তে দুটি পদ্ধতিতে ঘটতে পারে; তাদের সংকলন এবং ব্যাখ্যা বলুন।
একটি কম্পাইল করা প্রোগ্রাম (উদাহরণ সি এবং ফোরট্রান হয়):
প্রথম ধাপে ঘটে যাওয়া জিনিসগুলি "সংকলনের সময়" ঘটানোর কথা বলা হয়, দ্বিতীয় ধাপে ঘটে যাওয়া জিনিসগুলি "রান টাইম" এ ঘটে বলে জানা যায়।
একটি ব্যাখ্যা করা প্রোগ্রামে (উদাহরণস্বরূপ মাইক্রোসফ্ট বেসিক (ডসগুলিতে) এবং পাইথন (আমার মনে হয়)):
এই ক্ষেত্রে সংকলন সময় এবং রান সময়ের মধ্যে পার্থক্য পিন ডাউন করা বরং কঠিন, এবং প্রোগ্রামার বা ব্যবহারকারীর সাথে অনেক কম প্রাসঙ্গিক।
জাভা হল এক ধরণের হাইব্রিড, যেখানে কোডটি বাইটকোডে সংকলিত হয়, যা তখন ভার্চুয়াল মেশিনে চলে যা সাধারণত বাইকোডের জন্য দোভাষী হয়।
একটি মধ্যবর্তী কেসও রয়েছে যাতে প্রোগ্রামটি বাইকোডে সংকলিত হয়ে সঙ্গে সঙ্গে চালানো হয় (অ্যাজক বা পার্লের মতো)।
মূলত যদি আপনার সংকলকটি আপনার অর্থটি কী বোঝায় বা "সংকলন সময়ে" একটি মান কী তা এটি রানটাইম কোডে হার্ডকোড করতে পারে। স্পষ্টতই যদি আপনার রানটাইম কোডটি প্রতিবার কোনও গণনা করতে হয় তবে এটি ধীরে চলবে, তাই আপনি সংকলনের সময় কোনও কিছু নির্ধারণ করতে পারলে এটি আরও ভাল।
যেমন।
অবিচ্ছিন্ন ভাঁজ:
আমি যদি লিখি:
int i = 2;
i += MY_CONSTANT;
সংকলক সংকলনের সময় এই ক্যালুলেশন সম্পাদন করতে পারে কারণ এটি 2 টি কী এবং এমওয়াই_সন্ট্যান্ট কী তা জানে। যেমন এটি প্রতিটি একক সম্পাদন গণনা করা থেকে নিজেকে বাঁচায়।
সংকলনের সময় যেগুলি করা হয় ফলাফলগুলি প্রায়শই চালিত হয় তখন প্রায় কোনও খরচ হয় না তবে আপনি যখন প্রোগ্রামটি তৈরি করেন তখন প্রচুর ব্যয় হতে পারে।
কম-বেশি সঠিক বিপরীতে। আপনি তৈরি করার সময় অল্প ব্যয়, প্রোগ্রামটি চালানোর সময় আরও বেশি ব্যয়।
অপর প্রান্ত থেকে; সংকলনের সময় যদি কিছু করা হয় তবে এটি কেবল আপনার মেশিনে চলে এবং যদি কিছু রান-টাইম হয় তবে এটি আপনার ব্যবহারকারীদের মেশিনে চলে।
এটি গুরুত্বপূর্ণ যেখানে একটি উদাহরণ একটি ইউনিট বহন টাইপ হবে। একটি সংকলন টাইম সংস্করণ (যেমন বুস্ট.উনাইটস বা ডি তে আমার সংস্করণ ) শেষ হয় দেশীয় ভাসমান পয়েন্ট কোডের সাথে সমস্যার সমাধান করার মতো দ্রুততর হয়ে যখন রান-টাইম সংস্করণটি সমাপ্ত হয় যেগুলি ইউনিটগুলির সম্পর্কে তথ্য প্যাক করে রাখে ends প্রতিটি অপারেশন পাশাপাশি এবং তাদের মধ্যে চেক সঞ্চালন। অন্যদিকে, সংকলনের সময় সংস্করণগুলির জন্য প্রয়োজনীয়রূপটি রয়েছে যে মানগুলির ইউনিটগুলি সংকলন সময়ে জানা যায় এবং রান-টাইম ইনপুট থেকে আসে সেই ক্ষেত্রে মোকাবেলা করতে পারে না।
পূর্ববর্তী অনুরূপ প্রশ্নের উত্তর অনুসরণ করে রান-টাইম ত্রুটি এবং সংকলক ত্রুটির মধ্যে পার্থক্য কী?
সংকলন / সংকলন সময় / সিনট্যাক্স / শব্দার্থগত ত্রুটি: টাইপিং ভুলের কারণে সংকলন বা সংকলনের সময় ত্রুটি ত্রুটি ঘটে, আমরা যদি কোনও প্রোগ্রামিং ভাষার যথাযথ বাক্য গঠন এবং শব্দার্থতত্ত্ব অনুসরণ না করি তবে সংকলক দ্বারা সংকলিত সময় ত্রুটিগুলি নিক্ষেপ করা হয়। আপনি সমস্ত সিনট্যাক্স ত্রুটি অপসারণ না করা বা আপনি সংকলনের সময় ত্রুটিগুলি ডিবাগ না করা পর্যন্ত তারা আপনার প্রোগ্রামটিকে একটি একক লাইন কার্যকর করতে দেয় না।
উদাহরণ: সি তে একটি সেমিকোলন অনুপস্থিত বা এর মতো ভুল টাইপ int
করা Int
।
রানটাইম ত্রুটি: রানটাইম ত্রুটি হ'ল প্রোগ্রামটি চলমান অবস্থায় থাকা ত্রুটিগুলি। এই ধরণের ত্রুটিগুলি আপনার প্রোগ্রামকে অপ্রত্যাশিতভাবে আচরণ করবে বা এমনকি আপনার প্রোগ্রামটিকে মেরে ফেলবে। এগুলি প্রায়শই ব্যতিক্রম হিসাবে উল্লেখ করা হয়।
উদাহরণ: ধরুন আপনি কোনও ফাইল পড়ছেন যা অস্তিত্বহীন, এর ফলে রানটাইম ত্রুটি হবে।
সমস্ত প্রোগ্রামিং ত্রুটি সম্পর্কে এখানে আরও পড়ুন
অন্যান্য উত্তরের অ্যাড-অন হিসাবে, আমি এটি কোনও সাধারণ ব্যক্তিকে কীভাবে ব্যাখ্যা করব:
আপনার উত্স কোডটি একটি জাহাজের ব্লুপ্রিন্টের মতো। এটি জাহাজটি কীভাবে তৈরি করা উচিত তা নির্ধারণ করে।
যদি আপনি আপনার নীলনকশাটি শিপইয়ার্ডের কাছে ছেড়ে দেন এবং জাহাজটি তৈরি করার সময় তারা কোনও ত্রুটি দেখতে পান তবে জাহাজটি কোনও শুকনো ডাব বা জল স্পর্শ করার আগেই তারা আপনার বিল্ডিং বন্ধ করে তা অবিলম্বে আপনাকে তা জানিয়ে দেবে। এটি একটি সংকলন-সময় ত্রুটি। জাহাজটি এমনকি প্রকৃতপক্ষে ভাসমান বা এর ইঞ্জিনগুলি ব্যবহার করে না। ত্রুটিটি পাওয়া গেছে কারণ এটি জাহাজটিকে এমনকি তৈরি করা আটকাচ্ছিল।
যখন আপনার কোডটি কম্পাইল করে, জাহাজটি সম্পূর্ণ হওয়ার মতো। নির্মিত এবং যেতে প্রস্তুত। আপনি যখন আপনার কোডটি কার্যকর করেন, এটি জাহাজে যাত্রা শুরু করার মতো। যাত্রীরা আরোহী, ইঞ্জিনগুলি চলছে এবং হলের জলের উপরে রয়েছে, তাই এটি রানটাইম is যদি আপনার জাহাজটির মারাত্মক ত্রুটি থাকে যা এটি তার প্রথম ভ্রমণে ডুবে থাকে (বা অতিরিক্ত মাথা ব্যথার জন্য কিছুটা ভ্রমণে যেতে পারে) তবে এটি রানটাইম ত্রুটির মুখোমুখি হয়েছিল।
উদাহরণস্বরূপ: একটি দৃ strongly়ভাবে টাইপ করা ভাষায়, টাইপটি সংকলনের সময় বা রানটাইম সময়ে পরীক্ষা করা যেতে পারে। সংকলনের সময় এর অর্থ হ'ল, প্রকারগুলি সুসংগত না হলে সংকলকটি অভিযোগ করে। রানটাইমের মানে হল, আপনি আপনার প্রোগ্রামটি ঠিক সূক্ষ্ম কিন্তু রানটাইমে সংকলন করতে পারেন, এটি একটি ব্যতিক্রম ছোঁড়ে।
সংকলনের সময়: বিকাশকারী প্রোগ্রামটি জাভা ফর্ম্যাটে লেখেন এবং বাইটকোডে রূপান্তর করেন যা একটি শ্রেণি ফাইল, এই সংকলনের সময় যে কোনও ত্রুটি ঘটলে তা সংকলনের সময় ত্রুটি হিসাবে সংজ্ঞায়িত করা যায়।
রান সময়: উত্পন্ন। ক্লাস ফাইলটি অতিরিক্ত ক্রিয়াকলাপের জন্য অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হয় এবং যুক্তিটি ভুল হয়ে যায় এবং একটি ত্রুটি ছুড়ে দেয় যা রান টাইম ত্রুটি is
সংকলনের বিষয়ে 'জাভা প্রোগ্রামিংয়ের পরিচিতি' র লেখক ড্যানিয়েল লিয়াংয়ের একটি উদ্ধৃতি এখানে দেওয়া হয়েছে:
"একটি উচ্চ-স্তরের ভাষায় রচিত একটি প্রোগ্রামকে উত্স প্রোগ্রাম বা উত্স কোড বলা হয় Because কারণ কম্পিউটার কোনও উত্স প্রোগ্রাম চালায় না, উত্স প্রোগ্রামটি অনুবাদ করা উচিত Because মধ্যে মেশিন কোড জন্য মৃত্যুদন্ড । অনুবাদ নামক আরেকটি প্রোগ্রামিং টুল ব্যবহার করে কাজ করা যেতে পারে একটি দোভাষী বা সংকলক । " (ড্যানিয়েল লিয়াং, "জাভা প্রোগ্রামিংয়ের পরিচিতি" , পি 8)।
...তিনি আরো বলেছেন...
"একটি সংকলক পুরো উত্স কোডটিকে একটি মেশিন-কোড ফাইলে অনুবাদ করে এবং মেশিন-কোড ফাইলটি পরে কার্যকর করা হয়"
যখন আমরা উচ্চ-স্তরের / মানব-পঠনযোগ্য কোডে পাঞ্চ করি এটি প্রথমে, অকেজো! এটি আপনার ক্ষুদ্র সামান্য সিপিইউতে অবশ্যই 'বৈদ্যুতিন ঘটনার ক্রম' অনুবাদ করা উচিত! এর দিকে প্রথম পদক্ষেপটি সংকলন।
সোজা কথায়: একটি সংকলন-সময় ত্রুটি এই পর্যায়ে ঘটে যখন রান-টাইম ত্রুটি পরে ঘটে occurs
মনে রাখবেন: কেবল কোনও প্রোগ্রাম ত্রুটি ছাড়াই সংকলিত হওয়ার অর্থ এই নয় যে এটি ত্রুটি ছাড়াই চলবে।
একটি জীবন-চক্রের প্রস্তুত, চলমান বা অপেক্ষমান অংশে একটি রান-টাইম ত্রুটি ঘটবে যখন জীবনচক্রের 'নতুন' পর্যায়ে একটি সংকলন-সময় ত্রুটি ঘটবে।
একটি সংকলন-সময় ত্রুটির উদাহরণ:
একটি সিনট্যাক্স ত্রুটি - আপনার কোডটি যদি দ্ব্যর্থহীন হয় তবে কীভাবে আপনার মেশিন স্তরের নির্দেশিকায় সংকলন করা যেতে পারে ?? আপনার কোডটির ভাষার সিনট্যাকটিকাল নিয়মে 100% অনুসরন করা দরকার অন্যথায় এটি ওয়ার্কিং মেশিন কোডে সংকলন করা যায় না ।
রান-টাইম ত্রুটির উদাহরণ:
স্মৃতিশক্তি ফুরিয়েছে - উদাহরণস্বরূপ একটি পুনরাবৃত্ত ফাংশনে একটি কল একটি নির্দিষ্ট ডিগ্রির ভেরিয়েবলের ফলে স্ট্যাক ওভারফ্লোতে ডেকে আনতে পারে! কম্পাইলার দ্বারা এটি কীভাবে অনুমান করা যায় !? এটা হতে পারে না.
এবং এটি একটি সংকলন-সময় ত্রুটি এবং একটি রান-টাইম ত্রুটির মধ্যে পার্থক্য
সংকলন সময়:
সংকলনের সময় যেগুলি করা হয় ফলাফলগুলি প্রায়শই চালিত হয় তখন প্রায় কোনও খরচ হয় না তবে আপনি যখন প্রোগ্রামটি তৈরি করেন তখন প্রচুর ব্যয় হতে পারে। রান টাইম:
কম-বেশি সঠিক বিপরীতে। আপনি তৈরি করার সময় অল্প ব্যয়, প্রোগ্রামটি চালানোর সময় আরও বেশি ব্যয়।
অপর প্রান্ত থেকে; সংকলনের সময় যদি কিছু করা হয় তবে এটি কেবল আপনার মেশিনে চলে এবং যদি কিছু রান-টাইম হয় তবে এটি আপনার ব্যবহারকারীদের মেশিনে চলে।
সংকলনের সময়: উত্স কোডটিকে একটি মেশিন কোডে রূপান্তর করতে সময় নেওয়া হয় যাতে এটি নির্বাহযোগ্য হয়ে যায় তাকে সংকলন সময় বলে।
রান সময়: যখন কোনও অ্যাপ্লিকেশন চলমান থাকে, তখন তাকে রানটাইম বলা হয়।
সংকলনের সময় ত্রুটিগুলি হ'ল সেই সিনট্যাক্স ত্রুটিগুলি, ফাইলের রেফারেন্স ত্রুটি অনুপস্থিত। উত্স কোডটি এক্সিকিউটেবল প্রোগ্রামে সংকলিত হওয়ার পরে এবং প্রোগ্রামটি চলাকালীন রানটাইম ত্রুটিগুলি ঘটে। উদাহরণস্বরূপ প্রোগ্রাম ক্রাশ, অপ্রত্যাশিত প্রোগ্রামের আচরণ বা বৈশিষ্ট্যগুলি কাজ করে না।
কল্পনা করুন যে আপনি একজন বস এবং আপনার একজন সহকারী এবং একজন গৃহপরিচারিকা রয়েছেন এবং আপনি তাদের কার্য সম্পাদনের জন্য একটি তালিকা প্রদান করবেন, সহকারী (সংকলনের সময়) এই তালিকাটি গ্রহণ করবে এবং কার্যগুলি বোধগম্য কিনা তা পরীক্ষা করে নেবে এবং আপনি যে কোনও অদ্ভুত ভাষা বা বাক্য বিন্যাসে লিখেনি, সুতরাং সে বুঝতে পারে যে আপনি কাউকে কাজের জন্য বরাদ্দ করতে চান তাই তিনি তাকে আপনার জন্য নিয়োগ করেছেন এবং তিনি বুঝতে পেরেছেন যে আপনি কিছু কফি চান, সুতরাং তার ভূমিকা শেষ এবং দাসী (রান সময়) সেগুলি এই কাজগুলি চালাতে শুরু করে যাতে সে আপনাকে কিছু কফি তৈরি করতে যায় তবে হঠাৎ করে সে কোনও কফি তৈরি করতে পেল না যাতে সে এটি তৈরি করা বন্ধ করে দেয় বা সে ভিন্নভাবে কাজ করে এবং আপনাকে কিছু চা বানায় (যখন প্রোগ্রামটি অন্যরকমভাবে কাজ করে কারণ সে একটি ত্রুটি খুঁজে পেয়েছিল found )।
"রান-টাইম এবং সংকলন-সময়ের মধ্যে পার্থক্য?" এই প্রশ্নের উত্তরের একটি বর্ধন এখানে? - রান-টাইম এবং সংকলন-সময়ের সাথে সম্পর্কিত ওভারহেডে পার্থক্য ?
পণ্যের রান-টাইম পারফরম্যান্স দ্রুত ফলাফল সরবরাহ করে এর গুণমানকে অবদান রাখে। পণ্যের সংকলন-সময় পারফরম্যান্স সম্পাদনা-সংকলন-ডিবাগ চক্রকে সংক্ষিপ্ত করে এর সময়োপযোগীতে অবদান রাখে। যাইহোক, রান-টাইম পারফরম্যান্স এবং সংকলন-সময় পারফরম্যান্স উভয়ই সময়োপযোগী মান অর্জনের জন্য গৌণ কারণ। সুতরাং, সামগ্রিক পণ্যের গুণমান এবং সময়োপযোগীতার উন্নতি দ্বারা ন্যায়সঙ্গত হলেই রান-টাইম এবং সংকলন-সময়ের পারফরম্যান্সের উন্নতিগুলি বিবেচনা করা উচিত।
এখানে আরও পড়ার দুর্দান্ত উত্স :
আমি সবসময় এটিকে প্রোগ্রাম প্রসেসিং ওভারহেডের তুলনায় ভেবে দেখেছি এবং এটি পূর্বে যেমনটি বলা হয়েছে তেমন পারফরম্যান্সকে কীভাবে প্রভাবিত করে। একটি সাধারণ উদাহরণ হ'ল হয় কোডে আমার অবজেক্টের জন্য প্রয়োজনীয় নিরঙ্কুশ মেমরির সংজ্ঞা দেওয়া বা না।
একটি সংজ্ঞায়িত বুলিয়ান এক্স মেমরি নেয় যা এটি তখন সংকলিত প্রোগ্রামে থাকে এবং পরিবর্তন করা যায় না। প্রোগ্রামটি যখন চালায় তখন x টির জন্য ঠিক কত মেমরি বরাদ্দ করতে হবে তা জানে।
অন্যদিকে আমি যদি জেনেরিক অবজেক্টের ধরণটি সংজ্ঞায়িত করি (উদাহরণস্বরূপ একটি নির্ধারিত স্থানধারীর ধরণ বা কিছু দৈত্য ব্লকের কাছে পয়েন্টার) তবে প্রোগ্রামটি সঞ্চালিত না হওয়া পর্যন্ত আমার অবজেক্টের জন্য প্রয়োজনীয় আসল মেমরিটি জানা যায় না এবং আমি এটিতে কিছু বরাদ্দ করি , সুতরাং এটির পরে অবশ্যই মূল্যায়ন করা হবে এবং মেমরি বরাদ্দকরণ ইত্যাদির পরে রান সময় (আরও বেশি সময় চালানোর সময় ওভারহেড) গতিশীলভাবে পরিচালনা করা হবে।
এটি কীভাবে ডায়নামিকভাবে পরিচালিত হয় তা তখন ভাষা, সংকলক, ওএস, আপনার কোড ইত্যাদির উপর নির্ভর করে would
এই নোটটিতে তবে এটি নির্ভর করে আপনি যে সময়টিতে রান টাইম বনাম সংকলন সময় ব্যবহার করছেন তার উপর।
আমরা এগুলিকে পৃথক দুটি বিস্তৃত গ্রুপ স্ট্যাটিক বাঁধাই এবং গতিশীল বাঁধাইয়ের অধীনে শ্রেণিবদ্ধ করতে পারি। এটি যখন সংশ্লিষ্ট মানগুলির সাথে বাইন্ডিং করা হয় তার উপর ভিত্তি করে। সংকলনের সময়ে যদি রেফারেন্সগুলি সমাধান করা হয়, তবে এটি স্থির বাধ্যবাধকতা এবং যদি রেফারেন্সগুলি রানটাইম এ সমাধান করা হয় তবে এটি গতিশীল বাঁধাই হয়। স্ট্যাটিক বাইন্ডিং এবং ডায়নামিক বাইন্ডিংকে প্রারম্ভিক বাঁধাই এবং দেরী বাঁধন হিসাবেও ডাকা হয়। কখনও কখনও এগুলিকে স্ট্যাটিক পলিমারফিজম এবং ডায়নামিক পলিমারফিজম হিসাবেও চিহ্নিত করা হয়।
জোসেফ কুলন্দাই।
রান-টাইম এবং কম্পাইল সময়ের মধ্যে প্রধান পার্থক্য হ'ল:
int a = 1
int b = a/0;
এখানে প্রথম লাইনের শেষে একটি অর্ধ-কোলন নেই ---> অপারেশন করার সময় প্রোগ্রামটি সম্পাদন করার পরে সংকলন করার সময় ত্রুটি, ফলাফল অসীম ---> রানটাইম ত্রুটি।
এখানে একটি খুব সহজ উত্তর:
রানটাইম এবং কম্পাইল সময় হ'ল প্রোগ্রামিং শর্ত যা সফ্টওয়্যার প্রোগ্রাম বিকাশের বিভিন্ন স্তরের উল্লেখ করে। একটি প্রোগ্রাম তৈরি করার জন্য, একজন বিকাশকারী প্রথমে সোর্স কোড লেখেন, যা প্রোগ্রামটি কীভাবে কাজ করবে তা নির্ধারণ করে। ছোট প্রোগ্রামগুলিতে কেবলমাত্র কয়েকশ লাইনের উত্স কোড থাকতে পারে, তবে বড় প্রোগ্রামগুলিতে কয়েক হাজার লাইনের উত্স কোড থাকতে পারে। এক্সিকিউটেবল প্রোগ্রামে পরিণত হওয়ার জন্য উত্স কোডটি অবশ্যই মেশিন কোডে সংকলন করতে হবে। এই সংকলন প্রক্রিয়াটি সংকলন সময় হিসাবে উল্লেখ করা হয় ((অনুবাদক হিসাবে একটি সংকলক ভাবেন)
একটি সংকলিত প্রোগ্রামটি একটি ব্যবহারকারী দ্বারা খোলা এবং চালানো যেতে পারে। যখন কোনও অ্যাপ্লিকেশন চলমান থাকে তখন এটিকে রানটাইম বলে।
"রানটাইম" এবং "সংকলন সময়" শব্দটি প্রায়শই বিভিন্ন ধরণের ত্রুটির কথা উল্লেখ করার জন্য প্রোগ্রামাররা ব্যবহার করে। একটি সংকলন সময়ের ত্রুটি একটি সিনট্যাক্স ত্রুটি বা ফাইলের রেফারেন্স হারিয়ে যাওয়ার মতো সমস্যা যা প্রোগ্রামটিকে সফলভাবে সংকলন থেকে বাধা দেয়। সংকলক সংকলন সময় ত্রুটি উত্পাদন করে এবং সাধারণত উত্স কোডের কোন লাইন সমস্যা সৃষ্টি করছে তা নির্দেশ করে।
যদি কোনও প্রোগ্রামের সোর্স কোডটি ইতিমধ্যে একটি এক্সিকিউটেবল প্রোগ্রামে সংকলন করা হয়েছে, প্রোগ্রাম চলাকালীন এটিতে বাগগুলি থাকতে পারে। উদাহরণগুলিতে এমন বৈশিষ্ট্য অন্তর্ভুক্ত রয়েছে যা কাজ করে না, অপ্রত্যাশিত প্রোগ্রাম আচরণ বা প্রোগ্রাম ক্রাশ হয়। এই ধরণের সমস্যাগুলি রানটাইম ত্রুটি বলা হয় যেহেতু রানটাইম সময়ে ঘটে।
আইএমএইচও আপনাকে রানটাইম বনাম কমপাইল সময়ের মধ্যে পার্থক্য সম্পর্কে ধারণা করতে অনেকগুলি লিঙ্ক, সংস্থান পড়তে হবে কারণ এটি একটি খুব জটিল বিষয়। আমি প্রস্তাবিত এই ছবি / লিঙ্কগুলির কয়েকটি নীচে আমার আছে।
উপরে যা বলা হয় তা বাদ দিয়ে আমি মাঝে মাঝে এটি যুক্ত করতে চাই যে 1000 শব্দের মূল্যবান ছবি:
সিএলআর_ডায়াগ সংকলন সময় এবং তারপরে রানটাইম 2
from Wiki
https://en.wikedia.org/wiki/Run_time https://en.wikedia.org/wiki/Run_time_(program_lifecycle_p चरण)
রান টাইম, রান-টাইম, বা রানটাইম উল্লেখ করতে পারে:
কম্পিউটিং
রান সময় (প্রোগ্রাম লাইফসাইकल পর্ব) , একটি সময়কালে একটি কম্পিউটার প্রোগ্রাম চালিত হয়
রানটাইম লাইব্রেরি , প্রোগ্রামিং ভাষায় নির্মিত ফাংশনগুলি বাস্তবায়নের জন্য ডিজাইন করা একটি প্রোগ্রাম লাইব্রেরি
রানটাইম সিস্টেম , কম্পিউটার প্রোগ্রামগুলির কার্য সম্পাদনের জন্য ডিজাইন করা সফ্টওয়্যার
সফটওয়্যার এক্সিকিউশন, রান সময় পর্যায়ে একের পর এক নির্দেশনা সম্পাদনের প্রক্রিয়া
সংকলকগুলির তালিকা
https://en.wikedia.org/wiki/List_of_compilers
;
3.2 এই 3 টির মধ্যে পার্থক্য: বনাম বনাম বনাম রানটাইম সংকলন করুন
https://www.quora.com/What-is-the-differences-between-build-run-and-compile ফার্নান্দো প্যাডোয়ান, ভাষার বিকাশের জন্য কিছুটা কৌতূহল বিকাশকারী একটি বিকাশকারী উত্তর দিয়েছেন 23 ফেব্রুয়ারি আমি সম্পর্কের পিছনে যাচ্ছি অন্যান্য উত্তরে:
চলমান কিছু বাইনারি এক্সিকিউটেবল (বা একটি স্ক্রিপ্ট, অনুবাদ করা ভাষাগুলির জন্য) হতে চলেছে, ভাল ... কম্পিউটারে একটি নতুন প্রক্রিয়া হিসাবে কার্যকর করা হয়েছে; সংকলন হ'ল কিছু উচ্চ স্তরের ভাষায় (মেশিনের কোডের সাথে তুলনা করে উচ্চতর) একটি প্রোগ্রাম পার্স করার প্রক্রিয়া, এটি সিনট্যাক্স, শব্দার্থবিজ্ঞান, লাইব্রেরি সংযোগকারী পরীক্ষা করা, সম্ভবত কিছু অপ্টিমাইজেশন করা, তারপরে আউটপুট হিসাবে বাইনারি এক্সিকিউটেবল প্রোগ্রাম তৈরি করা। এই নির্বাহযোগ্যটি মেশিন কোড, বা কোনও ধরণের বাইট কোড আকারে হতে পারে - এটি হ'ল নির্দেশ যা কোনও ধরণের ভার্চুয়াল মেশিনকে লক্ষ্য করে; বিল্ডিংয়ের মধ্যে সাধারণত পরীক্ষা করা এবং নির্ভরতা সরবরাহ করা, কোড পরিদর্শন করা, কোডটিকে বাইনারিতে সংকলন করা, স্বয়ংক্রিয় পরীক্ষা চালানো এবং ফলস্বরূপ বাইনারি [ies] এবং অন্যান্য সম্পদ (চিত্র, কনফিগারেশন ফাইল, গ্রন্থাগার, ইত্যাদি) মোতায়েনযোগ্য ফাইলের নির্দিষ্ট বিন্যাসে প্যাকেজিং অন্তর্ভুক্ত থাকে। মনে রাখবেন যে বেশিরভাগ প্রক্রিয়াগুলি alচ্ছিক এবং কিছু আপনার জন্য নির্মিত প্ল্যাটফর্মের উপর নির্ভর করে। উদাহরণস্বরূপ, টমক্যাটের জন্য একটি জাভা অ্যাপ্লিকেশন প্যাকেজিং একটি .war ফাইল আউটপুট দেবে। সি ++ কোডের বাইরে একটি উইন 32 এক্সিকিউটেবল তৈরি করা কেবলমাত্র .exe প্রোগ্রাম আউটপুট করতে পারে বা এটি এমএসআই ইনস্টলারের মধ্যেও প্যাকেজ করতে পারে।
এই উদাহরণটি দেখুন:
public class Test {
public static void main(String[] args) {
int[] x=new int[-5];//compile time no error
System.out.println(x.length);
}}
উপরের কোডটি সফলভাবে সংকলিত হয়েছে, কোনও সিনট্যাক্স ত্রুটি নেই, এটি পুরোপুরি বৈধ। তবে রান সময়ে, এটি নিম্নলিখিত ত্রুটি ছুড়ে ফেলে।
Exception in thread "main" java.lang.NegativeArraySizeException
at Test.main(Test.java:5)
সংকলনের সময় যখন নির্দিষ্ট কেসগুলি চেক করা হয়েছিল, যেমন রান টাইমের পরে প্রোগ্রামগুলি সমস্ত শর্ত পূরণ করলে আপনি একটি আউটপুট পাবেন তা সুনির্দিষ্টভাবে একবার কেস করা হয়েছে। অন্যথায়, আপনি সংকলন সময় বা রান সময় ত্রুটি পাবেন।
সার্বজনীন বর্গ রানটাইমভিউস কম্পাইলটাইম {
public static void main(String[] args) {
//test(new D()); COMPILETIME ERROR
/**
* Compiler knows that B is not an instance of A
*/
test(new B());
}
/**
* compiler has no hint whether the actual type is A, B or C
* C c = (C)a; will be checked during runtime
* @param a
*/
public static void test(A a) {
C c = (C)a;//RUNTIME ERROR
}
}
class A{
}
class B extends A{
}
class C extends A{
}
class D{
}
এটি এসও এর পক্ষে ভাল প্রশ্ন নয় (এটি কোনও নির্দিষ্ট প্রোগ্রামিং প্রশ্ন নয়) তবে এটি সাধারণভাবে কোনও খারাপ প্রশ্ন নয়।
আপনি যদি মনে করেন এটি তুচ্ছ: পঠন-সময় বনাম সংকলন-সময় সম্পর্কে কী হবে এবং এটি কখন একটি কার্যকর পার্থক্য করা যায়? সংকলক রানটাইম এ উপলব্ধ যেখানে ভাষা সম্পর্কে কি? গাই স্টিল (কোনও ডামি নয়, তিনি) সিএলটিএল 2 এ ইভাল-WHEN সম্পর্কে 7 টি পৃষ্ঠা লিখেছিলেন, যা সিএল প্রোগ্রামাররা এটি নিয়ন্ত্রণ করতে ব্যবহার করতে পারে। 2 টি বাক্য একটি সংজ্ঞা জন্য সবে যথেষ্ট , যা নিজেই একটি ব্যাখ্যা খুব কম ।
সাধারণভাবে, এটি একটি কঠিন সমস্যা যা ভাষা ডিজাইনাররা এড়ানো চেষ্টা করেছেন বলে মনে হয়েছে। তারা প্রায়শই বলে যে "এখানে একটি সংকলক রয়েছে, এটি সংকলন-কালীন জিনিসগুলি করে; তার পরে সবকিছু রান-টাইম হয়, মজা করুন"। সি বাস্তবায়নের জন্য সহজ ডিজাইন করা হয়েছে, গণনার পক্ষে সবচেয়ে নমনীয় পরিবেশ নয়। রানটাইমের সময় যখন আপনার কাছে সংকলক উপলব্ধ নেই বা কোনও এক্সপ্রেশন মূল্যায়ন করা হয় তখন সহজেই নিয়ন্ত্রণ করার ক্ষমতা রাখেন, আপনি ভাষায় হ্যাকগুলি ম্যাক্রোগুলির নকল সাধারণ ব্যবহারগুলিতে শেষ করেন বা ব্যবহারকারীরা নকশার প্যাটার্নগুলি অনুকরণ করার জন্য আসে আরও শক্তিশালী নির্মাণ। একটি সহজ-বাস্তবায়িত ভাষা অবশ্যই একটি উপযুক্ত লক্ষ্য হতে পারে, তবে এর অর্থ এই নয় যে এটি প্রোগ্রামিং ভাষার ডিজাইনের সর্বশেষে। (আমি EVAL-WHEN বেশি ব্যবহার করি না, তবে আমি এটি ছাড়া জীবন কল্পনাও করতে পারি না))
এবং সংকলন-সময় এবং রান-টাইমের চারপাশের সমস্যাগুলি বিশাল এবং এখনও মূলত অনাবিষ্কৃত। এটি বলার অপেক্ষা রাখে না যে আলোচনার জন্য এসও সঠিক জায়গা, তবে আমি লোকদের এই অঞ্চলটি আরও ঘুরে দেখার জন্য উত্সাহিত করি, বিশেষত যারা তাদের কী হবে সে সম্পর্কে কোনও পূর্ব ধারণা নেই। প্রশ্নটি সহজ বা বোকাও নয় এবং আমরা কমপক্ষে অনুসন্ধানকারীকে সঠিক দিকে নির্দেশ করতে পারি।
দুর্ভাগ্যক্রমে, আমি এ সম্পর্কে কোনও ভাল রেফারেন্স জানি না। সিএলটিএল 2 এটি সম্পর্কে কিছুটা কথা বলে তবে এটি সম্পর্কে শেখার পক্ষে এটি দুর্দান্ত নয়।