ইন অ্যান্ড্রু Tanenbaum সঙ্গে বিতর্কে বনাম একশিলা অপারেটিং সিস্টেম আর্কিটেকচার microkernel ধরে লিনাস টোরভাল্ডস বললেন,
বহনযোগ্যতা এমন লোকদের জন্য যারা নতুন প্রোগ্রাম লিখতে পারেন না।
তার মানে কী?
ইন অ্যান্ড্রু Tanenbaum সঙ্গে বিতর্কে বনাম একশিলা অপারেটিং সিস্টেম আর্কিটেকচার microkernel ধরে লিনাস টোরভাল্ডস বললেন,
বহনযোগ্যতা এমন লোকদের জন্য যারা নতুন প্রোগ্রাম লিখতে পারেন না।
তার মানে কী?
উত্তর:
বিতর্কে যেমন লিনাস লিখেছেন, এটি গালে জিহ্বা সহ (যেমন খুব বেশি গুরুত্ব সহকারে নেওয়া হবে না)।
তারপরে, তিনি ব্যাখ্যা করে যান যে বহনযোগ্যতা ভাল জিনিস হ'ল এটি একটি বাণিজ্য-বন্ধও; অপরিবর্তনীয় কোড অনেক সহজ হতে পারে। এটি হ'ল, কোডটি পুরোপুরি পোর্টেবল করার পরিবর্তে, কেবল এটি সহজ এবং পোর্টেবল যথেষ্ট করুন ("একটি পোর্টেবল এপিআই মেনে চলেন") এবং তারপরে যদি এটি পোর্ট করা প্রয়োজন হয় তবে এটি প্রয়োজনীয় হিসাবে পুনরায় লিখুন। কোডকে পুরোপুরি পোর্টেবল বানানো অকাল অপ্টিমাইজেশনের একটি রূপ হিসাবেও দেখা যায় - প্রায়শই ভালের চেয়ে বেশি ক্ষতি harm
আপনি যদি নতুন প্রোগ্রাম লিখতে না পারেন এবং মূলটির সাথে তাল মিলাতেই পারেন তা অবশ্যই সম্ভব নয় :)
আমি মনে করি এর অর্থ হ'ল প্রতিটি প্রোগ্রামটি বিশেষভাবে লেখা হার্ডওয়্যার এবং অপারেটিং সিস্টেমের জন্য লেখা উচিত।
আমি মনে করি তিনি যে ড্রাইভিং করছেন তা হ'ল যে সাধারণ উদ্দেশ্য কোডটি যা বেশ কয়েকটি প্ল্যাটফর্মে চালানো যায় সেগুলি নির্দিষ্টভাবে লেখা এবং একটি প্ল্যাটফর্মের জন্য উপযুক্ত কোডের চেয়ে কম দক্ষ বা বেশি ত্রুটির প্রবণ। তবে এর অর্থ এই নয় যে আপনি যখন এই জাতীয় বিকাশ করেন তখন আপনাকে বেশ কয়েকটি ভিন্ন কোড লাইন বজায় রাখতে হয়।
লিনাক্স প্রথম লেখা হয়েছিল যখন, এটি শুধুমাত্র i386 সিপিইউতে উপলব্ধ বৈশিষ্ট্যগুলি ব্যবহার করেছিল যা সে সময় মোটামুটি নতুন এবং ব্যয়বহুল ছিল।
লিনাক্স ঠিক এটিই করে: এটি অন্যান্য কার্নেলগুলির মতো মনে হচ্ছে 386 বৈশিষ্ট্যের একটি বৃহত উপসেট ব্যবহার করে। অবশ্যই এটি কার্নেলটিকে যথাযথভাবে অপ্রয়োজনীয় করে তোলে, তবে এটি একটি / অনেক / সহজ নকশা তৈরি করে। একটি গ্রহণযোগ্য বাণিজ্য বন্ধ, এবং এমন একটি যা লিনাক্সকে প্রথম স্থানে সম্ভব করেছিল।
একবিংশ শতাব্দীতে যাওয়ার পরে, i386 অনন্য করে তোলে এমন বৈশিষ্ট্যগুলি সম্পূর্ণ মূলধারায় পরিণত হয়েছিল, যার ফলে লিনাক্সটি খুব বহনযোগ্য হয়ে উঠতে পারে।
যিনি প্রচুর জাভা করেছেন, এবং "একবার লিখুন, সর্বত্রই ডিবাগ করুন" ঘটনাটি অভিজ্ঞ হিসাবে বহু বছর ধরে সাপ্তাহিক ভিত্তিতে আমি সম্পূর্ণরূপে এর সাথে সম্পর্কিত হতে পারি।
এবং জাভা সম্ভবত একটি হালকা উদাহরণ। এমনকি এমন কোনও ভাষা / টুলকিটের পোর্টেবল কোড বেস যা এমনকি নিজের এবং বহনযোগ্য হিসাবে নকশাকৃত হয়নি এমন সময়ে লোকেরা কী চেষ্টা করে তা আমি কল্পনাও করতে পারি না।
এই মুহুর্তে কর্মক্ষেত্রে, আমরা মোবাইল ডিভাইসের জন্য আমাদের পণ্যগুলির একটির একটি হালকা সংস্করণ লেখার ধারণাটি তদন্ত করছি। J2ME এবং অ্যান্ড্রয়েড উভয়ের জন্য কীভাবে এর বহনযোগ্য সংস্করণটি করা যায় সে সম্পর্কে আমি কিছু গবেষণা করেছি - যা যতটা সম্ভব কোডবেসকে ভাগ করে নেওয়ার চেষ্টা করে (স্পষ্টতই সে পুরোপুরি পুরোপুরি "পোর্টেবল" হতে পারে না, তবে এটি একটি অনুরূপ দর্শন) )। এটা দুঃস্বপ্ন।
হ্যাঁ, কখনও কখনও প্রদত্ত কাজের জন্য প্রদত্ত সরঞ্জামগুলি ব্যবহারের ক্ষেত্রে বিবেচনা করতে (এবং করতে) সক্ষম হওয়া সত্যিই ভাল। অর্থাত্ এক, একক, একঘেয়েমি প্ল্যাটফর্ম / পরিবেশের বিরুদ্ধে অবাধে বিকাশ। এবং প্রতিটি জন্য পৃথক, পরিষ্কার সংস্করণ লিখছি।
যদিও কিছু লোক বহনযোগ্যতা, আচরণের মানগুলি, ইত্যাদিকে নৈতিকভাবে উচ্চতর হিসাবে দেখেন বা চিকিত্সা করেন, বা সেই আদেশে কিছু, এটি আসলে কী উত্সাহিত হয় তা অর্থনীতি।
পোর্টেবল কোড লেখার কোডকে পোর্টেবল করার চেষ্টা করার শর্তে একটি ব্যয় রয়েছে এবং (প্রায়শই) পূর্ববর্তী কিছু বৈশিষ্ট্য যা সমস্ত লক্ষ্যবস্তুতে পাওয়া যায় না।
নন-পোর্টেবল কোডের কোডটি পোর্ট করার প্রচেষ্টার ক্ষেত্রে যখন / আপনি কোনও নতুন স্থাপত্যের বিষয়ে যত্নশীল হন এবং (প্রায়শই) পূর্ববর্তী কিছু বৈশিষ্ট্য যা মূল টার্গেটে পাওয়া যায় না (বা না ছিল) পূর্বেই বহন করে।
সেখানে বড় বাছাইকারীটি "যখন / আপনি কোনও নতুন স্থাপত্যের বিষয়ে যত্নশীল হন"। পোর্টেবল কোড রচনার জন্য সামান্য বা কোনও প্রয়াস ছাড়াই নতুন / বিভিন্ন আর্কিটেকচারে সেই কোডটি ব্যবহার করতে সক্ষম হওয়ার একটি শেষ পয়সের আশায় প্রচেষ্টা আপ-ফ্রন্টের প্রয়োজন । অ-বহনযোগ্য কোড আপনাকে পোর্টিংয়ে সেই বিনিয়োগটি বিলম্ব করতে দেয় যতক্ষণ না আপনি (অন্তত যুক্তিসঙ্গতভাবে) নিশ্চিত হন যে আপনাকে কোনও নির্দিষ্ট লক্ষ্যে সত্যই পোর্ট করা দরকার।
আপনি যদি নিশ্চিত হয়ে থাকেন যে আপনি প্রচুর লক্ষ্যবস্তুতে বন্দরে যাচ্ছেন, তবে দীর্ঘমেয়াদী পোর্টিং ব্যয় হ্রাস করতে সাধারণত ফ্রন্ট বিনিয়োগ করা সার্থক। কোডটি আপনাকে কতটা পোর্ট করতে হবে (বা তা সত্ত্বেও) সে সম্পর্কে আপনি যদি কম সুনিশ্চিত হন তবে নন-পোর্টেবল কোড লেখার ফলে আপ-ফ্রন্ট ব্যয় হ্রাস করা যায়, বিলম্বিত হতে পারে বা এমনকি কোডটি বহনযোগ্য করার ব্যয়কে সম্পূর্ণভাবে এড়ানো যায়।
আমি মনে করি এটিও লক্ষণীয় যে আমি "পোর্টেবল" এবং "নন-পোর্টেবল" কথা বলেছি যেন উভয়ের মধ্যে স্পষ্ট-কাট বিভাজন রয়েছে। বাস্তবে, এটি সত্য নয় - বহনযোগ্যতা একটি ধারাবাহিকতা, পুরোপুরি নন-পোর্টেবল (উদাহরণস্বরূপ, অ্যাসেম্বলি কোড) থেকে অত্যন্ত পোর্টেবল (উদাহরণস্বরূপ, ইনফো-জিপ) এবং এর মধ্যে যে কোনও জায়গায় running
তেনেনবাউম এই বিন্দুটি তৈরি করেছেন যে, লিনাক্সের অনেকাংশ সিপিইউ ইন্টারেক্টেশনকে একটি উপাদান হিসাবে তৈরি করার পরিবর্তে 386 সিপিইউ, সেই সময়কার শিল্পের অবস্থা লাভ করার জন্য একটি নন-মডুলার উপায়ে লেখা হয়েছিল, এবং খুব সহজেই অদলবদল হয়ে যায়। তেনেনবাউম মূলত বিশ্বাস করে যে কার্নেলটি এত একঘেয়ে এবং 386 সিপিইউতে আবদ্ধ, এটি করা খুব কঠিন করে তোলে,
লিনাক্স শিবিরটি কয়েকটি পয়েন্ট দেয়, যার মধ্যে:
আপনি যদি পোর্টেবল কোড লিখতে চান তবে আপনাকে পোর্টেবল কোডটি লিখতে হবে।
আমি এর অর্থ কি?
নকশা অবশ্যই উদ্দেশ্য প্রতিফলিত করা উচিত। উদাহরণস্বরূপ, ভাষাটি যদি সি হয় তবে এটির নকশা তৈরি করুন যাতে নূন্যতম সংখ্যার কোডের লাইনের কাজ করার জন্য এটি পরিবর্তন করতে হয়। এর অর্থ প্রায়শই গণনা থেকে প্রদর্শনকে আলাদা করা হবে, এটি যাইহোক একটি ভাল নকশার দর্শন (এমভিসি)। বেশিরভাগ সি কোড যে কোনও জায়গায় সংকলন করা যায়, আপনি যদি কোনও ভাল সংকলকের অ্যাক্সেস পান। যেটি উত্সাহিত করুন এবং জেনেরিক হওয়ার জন্য যতটা লিখুন।
বিটিডাব্লু, এই উত্তরটি কেবলমাত্র অ্যাপ্লিকেশনের জন্য প্রযোজ্য। ওএস এবং এম্বেড করা সম্পূর্ণরূপে অন্য একটি প্রাণী।
এই বিবৃতিটি "আক্ষরিকভাবে" এর মতোভাবে ব্যাখ্যা করুন।
লিনাসের অন্য একটি উদ্ধৃতিতে তিনি বলেছিলেন: "সি ++ সমস্ত ভুল সমস্যা সমাধানের চেষ্টা করছে। সি ++ যে বিষয়গুলি সমাধান করে তা সত্যিকারের গভীর সমস্যা সমাধানের পরিবর্তে সিটিতে প্রায় বিশুদ্ধভাবে সিনট্যাকটিক এক্সটেনশন" "
এছাড়াও তার জীবনীতে, "জাস্ট ফর ফান" লিনাস মাইক্রোকার্নেলগুলির কথা উদ্ধৃত করে বলেছিল যে জটিলতার সাথে 'এন' সমস্যাটির জন্য যদি আপনি সমস্যাটিকে '1 / n' অনন্য অংশে বিভক্ত করেন .. তবে এ জাতীয় সিস্টেমের বিকাশের মোট জটিলতা হবে 'এন!' এটি নিজেই এই জাতীয় জিনিসটির চেষ্টা না করার জন্য যথেষ্ট কারণ এবং এই জাতীয় জটিল সিস্টেম থেকে দক্ষতা আহরণ করা খুব কঠিন হবে।
আপনাকে এই বিষয়টি বিবেচনায় নিতে হবে যে এই বিতর্কগুলির সময়, লিনাক্স খুব নতুন ছিল এবং মূলত কেবলমাত্র একটি 386 ওএস ছিল। আমি মনে করি আপনি যদি আজ লিনাসকে জিজ্ঞাসা করেন তবে তার আলাদা মতামত থাকবে। ট্যানেনবাউমসের মতো চূড়ান্ত নাও হতে পারে, তবে তিনি সম্ভবত হিমকে সম্মতি দেবেন এবং বলবেন যে তিনি কিছু বিষয়ে সঠিক ছিলেন।
লিনাস এবং অন্যান্য কার্নেল বিকাশকারীরা লিনাক্সকে বহনযোগ্য করে তোলার জন্য প্রচুর ব্যথা পেয়েছিল, তবে লিনাসকে আরম্ভ করার জন্য পোর্টেবল তৈরি করতে হলে লিনাক্সের অস্তিত্ব কখনও থাকতে পারে না।