যদি কিছু উত্পন্ন করা যায়, তবে সেই জিনিসটি কোড নয়, তথ্য is
যতক্ষণ না আপনি পরে সেই কোডটি ডেটা হ'ল আপনার প্রস্তাবটি হ্রাস পেয়েছে "যদি কোনও কিছু উত্পন্ন করা যায়, তবে সেই জিনিসটি কোড নয়।" আপনি কি বলবেন, তাহলে কোনও সি সংকলক দ্বারা উত্পন্ন যে সমাবেশ কোডটি কোড নয়? আমি যদি হাতের মুঠোয় লিখেছি যে সমাবেশ কোডটি ঠিক তার সাথে মিলে যায়? আপনি যদি চান তবে সেখানে যেতে আপনাকে স্বাগতম, তবে আমি আপনার সাথে আসব না।
এর পরিবর্তে "কোড" এর সংজ্ঞা দিয়ে শুরু করা যাক। খুব বেশি প্রযুক্তিগত না হয়ে, এই আলোচনার উদ্দেশ্যগুলির জন্য খুব ভাল সংজ্ঞাটি হ'ল "গণনা সম্পাদনের জন্য মেশিন-ক্রিয়াযোগ্য নির্দেশাবলী।"
দেওয়া হয়েছে, সোর্স কোড জেনারেশনের এই পুরো ধারণাটি কি ভুল বোঝাবুঝি নয়?
আচ্ছা হ্যাঁ, আপনার প্রারম্ভিক প্রস্তাবটি হ'ল কোডটি উত্পন্ন করা যায় না, তবে আমি সেই প্রস্তাবটিকে প্রত্যাখ্যান করি। আপনি যদি আমার "কোড" এর সংজ্ঞাটি গ্রহণ করেন তবে সাধারণভাবে কোড জেনারেশনে কোনও ধারণামূলক সমস্যা হওয়া উচিত নয়।
এটি হ'ল যদি কোনও কিছুর জন্য একটি কোড জেনারেটর থাকে, তবে কেন সেটিকে কোনও উপযুক্ত ফাংশন হিসাবে তৈরি করবেন না যা প্রয়োজনীয় প্যারামিটারগুলি গ্রহণ করতে পারে এবং "উত্পন্ন" কোডটি করে যে সঠিক ক্রিয়া করতে পারে?
ওয়েল এটি একটি সম্পূর্ণ আলাদা প্রশ্ন, কোড তৈরির কারণ সম্পর্কে তার প্রকৃতি সম্পর্কে নয় about আপনি বিকল্প প্রস্তাব করছেন যে কোড জেনারেটর লেখার বা ব্যবহার করার পরিবর্তে, কেউ একটি ফাংশন লিখেছেন যা ফলাফলকে সরাসরি গণনা করে। তবে কোন ভাষায়? সেই দিনগুলি হয়ে গেল যখন কেউ সরাসরি মেশিন কোডে লিখেছিলেন এবং আপনি যদি নিজের কোডটি অন্য কোনও ভাষায় লিখে থাকেন তবে আপনি কোনও প্রোগ্রাম তৈরি করতে কোনও সংকলক এবং / অথবা এসেম্বলারের আকারে কোনও কোড জেনারেটরের উপর নির্ভরশীল যা আসলে চলমান।
তবে কেন আপনি জাভা বা সি বা লিস্প বা যে কোনও কিছুতে লিখতে পছন্দ করেন? এমনকি এসেম্বলারেরও? আমি দৃ that়ভাবে বলছি যে এটি অন্তত অংশে আছে কারণ সেই ভাষাগুলি ডেটা এবং ক্রিয়াকলাপগুলির জন্য বিমূর্ততা সরবরাহ করে যা আপনার সম্পাদন করতে চান এমন গণনার বিবরণ প্রকাশ করা আরও সহজ করে তোলে।
বেশিরভাগ উচ্চ-স্তরের কোড জেনারেটরগুলির ক্ষেত্রেও এটি একই। প্রোটোটাইপিকাল কেসগুলি সম্ভবত স্ক্যানার এবং পার্সার জেনারেটর যেমন lex
এবং yacc
। হ্যাঁ, আপনি সরাসরি স্ক্যানার বা পার্সার লিখতে পারেন সি বা আপনার পছন্দের কোনও প্রোগ্রামিং ভাষায় (এমনকি কাঁচা মেশিন কোড), এবং কখনও কখনও এটি লিখতেও পারে। তবে যে কোনও উল্লেখযোগ্য জটিলতার সমস্যার জন্য, উচ্চ-স্তরের, বিশেষ-উদ্দেশ্যমূলক ভাষা যেমন লেক্স বা ইয়্যাকস ব্যবহার করে হাতের লিখিত কোডটি লিখতে, পড়তে এবং বজায় রাখা সহজ করে তোলে। সাধারণত খুব ছোট।
"কোড জেনারেটর" বলতে আপনাকে কী বোঝায় তাও আপনার বিবেচনা করা উচিত। আমি সি প্রিপ্রোসেসিং এবং সি ++ টেম্পলেটগুলির ইনস্ট্যান্টেশনকে কোড উত্পন্নকরণের অনুশীলন হিসাবে বিবেচনা করব; আপনি এই আপত্তি না? যদি তা না হয় তবে আমি মনে করি যে এগুলি গ্রহণ করার ক্ষেত্রে কিন্তু কোড জেনারেশনের অন্যান্য স্বাদগুলি প্রত্যাখ্যান করে যুক্তিযুক্ত করার জন্য আপনাকে কিছু মানসিক জিমন্যাস্টিক সম্পাদন করতে হবে।
এটি যদি পারফরম্যান্সের কারণে করা হয়, তবে এটি সংকলকটির অভাব বলে মনে হচ্ছে।
কেন? আপনি মূলত পোস্ট করছেন যে কারও কাছে একটি সর্বজনীন প্রোগ্রাম থাকা উচিত যাতে ব্যবহারকারী ডেটা ফিড করে, কিছুকে "নির্দেশনা" হিসাবে শ্রেণিবদ্ধ করা হয় এবং অন্যরা "ইনপুট" হিসাবে শ্রেণিবদ্ধ করে, এবং যা গণনা সম্পাদন করতে এগিয়ে যায় এবং আরও ডেটা নির্গত হয় যা আমরা "আউটপুট" বলি। (একটি নির্দিষ্ট দৃষ্টিকোণ থেকে, এই জাতীয় সার্বজনীন প্রোগ্রামটিকে কেউ "অপারেটিং সিস্টেম" হিসাবে অভিহিত করতে পারে)) তবে আপনি কেন মনে করেন যে কোনও সংকলক যেমন একটি সাধারণ-উদ্দেশ্য প্রোগ্রামকে অনুকূলকরণের ক্ষেত্রে তত কার্যকর হতে হবে কারণ এটি আরও বিশেষতাকে অনুকূলিত করার ক্ষেত্রে রয়েছে কার্যক্রম? দুটি প্রোগ্রামের বিভিন্ন বৈশিষ্ট্য এবং বিভিন্ন ক্ষমতা রয়েছে।
যদি এটি দুটি ভাষা সেতু করার জন্য করা হয়, তবে এটি ইন্টারফেস লাইব্রেরির অভাব বলে মনে হচ্ছে।
আপনি বলেছিলেন যে একটি সর্বজনীন-থেকে-কিছু-ডিগ্রি ইন্টারফেস লাইব্রেরিটি অগত্যা একটি ভাল জিনিস হবে। সম্ভবত এটি হবে, তবে অনেক ক্ষেত্রে এই ধরনের একটি লাইব্রেরি লিখতে এবং রক্ষণাবেক্ষণ করা বড় এবং কঠিন হতে পারে এবং এমনকি ধীর হতে পারে। এবং যদি প্রকৃতপক্ষে এ জাতীয় প্রাণীটি নির্দিষ্ট সমস্যাটি হাতে পাওয়ার জন্য উপস্থিত না থাকে, তবে আপনি কোড তৈরির জন্য যখন একটি কোড প্রজন্মের দৃষ্টিভঙ্গি আরও দ্রুত এবং সহজেই সমাধান করতে পারে তবে আপনি কে?
আমি কি এখানে কিছু মিস করছি?
বেশ কিছু জিনিস, আমি মনে করি।
আমি জানি যে কোডটিও ডেটা। আমি যা বুঝতে পারি না তা হ'ল সোর্স কোড কেন উত্পন্ন? কেন এটি এমন কোনও ফাংশন হিসাবে তৈরি করবেন না যা পরামিতিগুলি গ্রহণ করতে পারে এবং সেগুলিতে কাজ করতে পারে?
কোড জেনারেটর একটি ভাষায় লিখিত কোডকে ভিন্ন, সাধারণত নিম্ন-স্তরের ভাষায় কোড রূপান্তর করে। তাহলে আপনি জিজ্ঞাসা করছেন, লোকেরা কেন একাধিক ভাষা ব্যবহার করে প্রোগ্রাম লিখতে চায় এবং বিশেষত কেন তারা বিষয়কভাবে বিভিন্ন স্তরের ভাষাগুলি মিশতে চায় want
তবে আমি এটি ইতিমধ্যে স্পর্শ করেছি। সেই কাজের জন্য তার স্পষ্টতা এবং ভাব প্রকাশের অংশের ভিত্তিতে একটি নির্দিষ্ট কাজের জন্য একটি ভাষা বেছে নেয়। ছোট ছোট কোডটিতে গড়ে কম ত্রুটি রয়েছে এবং এটি বজায় রাখা সহজ, কমপক্ষে বৃহত্তর কাজের জন্য উচ্চ-স্তরের ভাষার প্রতিও পক্ষপাত রয়েছে। তবে একটি জটিল প্রোগ্রামের মধ্যে অনেকগুলি কাজ জড়িত থাকে এবং প্রায়শই তাদের কয়েকটিকে একটি ভাষায় আরও কার্যকরভাবে সম্বোধন করা যেতে পারে, অন্যদিকে অন্যরা আরও কার্যকরভাবে বা আরও সংক্ষিপ্তভাবে অন্য ভাষায় সম্বোধন করা হয়। কাজের জন্য সঠিক সরঞ্জামটি ব্যবহার করার অর্থ কখনও কখনও কোড জেনারেশন নিয়োগ করা।