লিটল এন্ডিয়ান জিতেছে?


34

বিগ ভার্সেস লিটল এন্ডিয়ান যুদ্ধ সম্পর্কে সম্প্রতি পাঠদানের সময়, এক ছাত্র জিজ্ঞাসা করেছিল যে এটি নিষ্পত্তি হয়েছে কিনা, এবং আমি বুঝতে পেরেছিলাম যে আমি জানি না। এ খুঁজছি Wikipedia নিবন্ধটি , মনে হয় যে সবচেয়ে জনপ্রিয় বর্তমান অপারেটিং সিস্টেম / আর্কিটেকচার জোড়া লিটল endian ব্যবহার করতে পারে তবে যে প্যাকেট হেডার সাংখ্যিক মানগুলি ট্রান্সফারের জন্য ইন্টারনেট প্রটোকল নির্দিষ্ট করে বড় endian। এটি কি বর্তমান অবস্থার একটি ভাল সংক্ষিপ্তসার হবে? বর্তমান নেটওয়ার্ক কার্ড বা সিপিইউগুলি বাইট ক্রমে স্যুইচ করার জন্য হার্ডওয়্যার সমর্থন সরবরাহ করে?

উত্তর:


25

আমি তর্ক করব যে বিষয়টি এতটা জিতেনি যে বিষয়টি বন্ধ হয়ে গেছে। এআরএম যা মূলত সমস্ত মোবাইল বাজার তৈরি করে তা দ্বি-এন্ডিয়ান (ওহ, ধর্মবিরোধী!)। এই অর্থে যে x86 মূলত ডেস্কটপ বাজারকে "জিতেছে" আমি মনে করি আপনি বলতে পারেন যে সামান্য এন্ডিয়ান জিতেছে তবে আমি মনে করি আজকের অ্যাপ্লিকেশনগুলির সামগ্রিক কোড গভীরতা (অগভীর) এবং বিমূর্ততা (প্রচুর) দেওয়া হয়েছে, এটি কোনও ইস্যুর চেয়ে অনেক কম এটা ছিল। আমার কম্পিউটার আর্কিটেকচার ক্লাসে সত্যই আগমন ঘটে বলে আমি মনে করি না।

আমি সন্দেহ করি যে অনেক বিকাশকারী এমনকি পরিণতি বা কেন এটি গুরুত্বপূর্ণ তা সম্পর্কে সচেতন নয়। কারণ সুবিশাল জন্য (এবং আমি বলতে চাচ্ছি সুবিশাল ) সংখ্যাগরিষ্ঠ এটা একদম তাদের দৈনন্দিন কাজের পরিবেশ অপ্রাসঙ্গিক নয়। এটি 30 বছর আগে আলাদা ছিল যখন সবাই অভিনব এবং নাটকীয় উপায়ে কোনও স্ক্রিনে টেক্সট ফাইলগুলি পরিচালনা করার বিপরীতে ধাতবটির আরও কাছাকাছি কোডিং করছিল।

আমার সাধারণ সন্দেহ হ'ল অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এন্ডিয়েন্সি সম্পর্কে যত্নশীলতার শুরু থেকেই যেহেতু একটি ভাল ওও সিস্টেমের অ্যাক্সেস এবং অ্যাবস্ট্রাকশন স্তরগুলি ব্যবহারকারীর কাছ থেকে বাস্তবায়ন বিবরণ গোপন করে। যেহেতু বাস্তবায়নে অন্তর্নিহিততা অন্তর্ভুক্ত থাকে, তাই লোকেদের এটি স্পষ্ট কারণ হিসাবে না অভ্যস্ত হয়ে পড়ে।

সংযোজন: zxcdw উল্লেখযোগ্যভাবে বহনযোগ্যতার উল্লেখ করেছে। যাইহোক, গত 20 বছরে প্রতিশোধ নিয়ে কী উত্থাপিত হয়েছে? ভার্চুয়াল মেশিনে নির্মিত প্রোগ্রামিং ভাষা। নিশ্চিতভাবে ভার্চুয়াল মেশিনের শেষের বিষয়টি বিবেচনা করতে পারে তবে এটি মূলত একটি অ-ইস্যুতে সেই এক ভাষার জন্য এটি বেশ সামঞ্জস্যপূর্ণ হতে পারে। কেবল ভিএম বাস্তবায়নকারীদের এমনকি বহনযোগ্যতার দিক থেকে শেষের বিষয়ে চিন্তা করতে হবে।


2
এখনও অনেক অনেক প্রাসঙ্গিক ডোমেন রয়েছে যার মধ্যে এটি গুরুত্বপূর্ণ, উদাহরণস্বরূপ পোর্টেবল কোডের কোনও ফর্ম লেখার সময় । বাস্তবে, যেখানে পোর্টেবল নন যা প্ল্যাটফর্মের সাথে আবদ্ধ থাকে তা লেখার ক্ষেত্রে এটি সম্ভবত গুরুত্বপূর্ণ নয় ।
zxcdw

@Zxcdw যা আমাদের সরাসরি ভার্চুয়াল মেশিনের ভাষাগুলির সেনাবাহিনীর দিকে নিয়ে যায় ... আমি এটি ভাবিনি।
বিশ্ব প্রকৌশলী

আপনার সংযোজন সম্পূর্ণ সত্য নয় (এবং আমি @zxcdw এর সাথেও একমত নই): মাল্টবাইট পূর্ণসংখ্যা এবং বাইট স্ট্রিমের মধ্যে অনুবাদ করার সময়ই এন্ডিয়েনেসিটি গুরুত্বপূর্ণ, এবং যখন এটি স্পষ্টভাবে সম্পন্ন হয় এবং প্ল্যাটফর্মের মধ্যে পরিবর্তিত হয় তখন একটি সমস্যা হয়ে দাঁড়ায়। বেশিরভাগ আধুনিক ভাষাগুলি (ভিএম-ভিত্তিক হোক বা না হোক) আপনি খুব কমই এটি করে (একটি অস্বচ্ছ ডেটাটাইপ হিসাবে পূর্ণসংখ্যার সাহায্যে) বহনযোগ্যতা অর্জন করেন এবং তারপরে অন্তর্নিহিততা হয় প্ল্যাটফর্মের স্বতন্ত্র নির্ধারিত থাকে, বা প্রোগ্রামার দ্বারা স্পষ্টতই বেছে নেওয়া হয়।
মাইকেল বর্গওয়ার্ট


2
@zxcdw - এমনকি এসেম্বলারের মধ্যেও আপনাকে সর্বদা এন্ডিয়ান ক্রমটি জানতে হবে না। উদাহরণস্বরূপ, ধ্রুবকগুলিকে একবারে বাইট নির্দিষ্ট করার দরকার নেই। সিটিতে সিরিয়ালাইজেশনের নির্দিষ্ট স্টাইলের মতো পরিস্থিতি কিছুটা অনুরূপ - x & 0xFFসর্বদা আপনাকে এন্ডিয়ান অর্ডার নির্বিশেষে সর্বনিম্ন তাৎপর্যময় বাইট দেয় (আপনার বাইটগুলি 8 টি বিট হিসাবে ধরে নেওয়া হয়) কারণ আপনি যে বিটগুলি তাদের মান দ্বারা আগ্রহী তা নির্দিষ্ট করেছেন, স্মৃতিতে তাদের আপেক্ষিক অবস্থান নয়।
স্টিভ 314

4

আপনি বাইনারি ডেটা সিস্টেমগুলি স্থানান্তর করার সময় এন্ডিয়ানস কেবল সত্যই গুরুত্বপূর্ণ।

প্রসেসরের গতির অগ্রগতির সাথে (এবং স্টোরেজের তুলনায় অনেক কম খরচে) বাইনারি ডেটা ইন্টারফেসগুলি বিরল হয়ে উঠছে যাতে আপনি এটিকে অ্যাপ্লিকেশন স্তরে লক্ষ্য করেন না। আপনি হয় একটি পাঠ্য ট্রান্সফার ফর্ম্যাট (এক্সএমএল / জেএসএন) ব্যবহার করছেন বা আপনি ডেটা লেয়ার অ্যাবস্ট্রাকশন ব্যবহার করছেন যা আপনার জন্য অনুবাদটির যত্ন নেয় (যাতে আপনি অনুবাদটি লক্ষ্য করেন না)।

আপনি যখন বাইনারি ডেটা লেয়ারে কোডিং করছেন তখন আপনি লক্ষ্য করবেন এবং এটি অত্যন্ত গুরুত্বপূর্ণ। উদাহরণস্বরূপ যখন আমি ভারিটাসে কাজ করেছি (সিমেন্টেক এখন) আমি এমন সফ্টওয়্যার তৈরি করছিলাম যা 25 টি বিভিন্ন হার্ডওয়্যার প্ল্যাটফর্মের উপর নির্মিত হয়েছিল (কেবল বড় / ছোট এডিয়ানই নয় অন্য ধরণের রয়েছে)।


আমার শিক্ষার্থীরা মোবাইল ফোনগুলির জন্যও বিকাশ করেছে এবং ক্লাউড কম্পিউটিং ব্যবহার করেছে, তাই তারা জানে যে বিশ্ব পিসি এবং ম্যাক নয়।
এলেন স্পারটাস

@ লোকি - মেশিনের এন্ডিয়ানটি না জেনে সিরিয়ালায়ন এবং ডি-সিরিয়ালাইজ করা সম্ভব। আপনাকে কেবল ফাইল / স্ট্রিম / যে কোনও কিছুতে ডেটার বাইট-অর্ডারিং জানতে হবে। উদাহরণস্বরূপ, (char) (x & 0xFF)সি এন্ডিয়ান সমস্যাগুলি নির্বিশেষে আপনাকে সর্বনিম্ন তাৎপর্যপূর্ণ বাইট দেয়, কেবলমাত্র ধরে নেওয়া যে একটি বাইট 8 বিট। সফ্টওয়্যারটি চালিত হবে এমন মেশিনগুলি না জেনে আমি বাইনারি ফাইল ফর্ম্যাটগুলি তৈরি করেছি - আমি হার্ডওয়্যারটির যত্ন না নিয়েই মূলত ফাইল ফরম্যাটের জন্য একটি এন্ডিয়ান অর্ডারিং বেছে নিয়েছি।
স্টিভ 314

@ এস্পার্টাস: অবশ্যই সম্ভব।
মার্টিন ইয়র্ক

1
@ স্টিভ 314: হ্যাঁ অবশ্যই আপনি পারেন। আপনি যখন "বাইনারি ডেটা লেয়ার" এ কাজ করছেন আপনি আপনার ডেটা ক্রমিকভাবে তৈরি করতে চান এমন যেকোন পরিকল্পনা তৈরি করতে পারেন এবং যেগুলি স্ক্রিনেবলযোগ্য সেগুলি তৈরি করা শক্ত নয়। যদিও ব্যক্তিগতভাবে আমি 60 এর দশক থেকে নির্মিত এবং ভাল পরীক্ষা করা একটি চাকা পুনরায় উদ্ভাবন করতে বিরক্ত করব না। `দেখুন h2nl ও পরিবার। এই ফাংশনগুলির পরিবার আপনার প্ল্যাটফর্মের জন্য অনুকূল এমন কাজ করার পোর্টেবল (মানক) উপায় সরবরাহ করে।
মার্টিন ইয়র্ক

4

না, কেউ জিতেনি। আমরা একটি প্রজাতি হিসাবে আমরা যে নির্দেশে আমাদের বাইটগুলি সঞ্চয় করি সেদিকে আমরা যে দিকটি লিখি এবং যে রাস্তায় আমরা চালিত করি তার পাশাপাশি মানটি করতে আমরা ব্যর্থ হয়েছি।

ফলস্বরূপ, যে কেউ নেটওয়ার্ক বা একটি ফাইলের মধ্যে দুটি ভিন্ন সিস্টেমের মধ্যে ডেটা স্থানান্তর করতে চায়, তার পরিবেশে সঠিকভাবে ড্যাম্পিং কোডের যুক্তিসঙ্গত প্রাথমিক সংস্করণের প্রায় 50% সম্ভাবনা রয়েছে এবং এমনকি এটি কার্যকর হলেও , তাদের গ্রাহকের কাজ করার একটি 50% সুযোগ রয়েছে।

এটি মোকাবেলা করার জন্য আপনাকে "htonl" এর মতো নামগুলির সাথে স্পষ্টতই 70 এর দশকের "আরপা / ইনট এইচ" এর মতো ডেটের সাথে নির্দিষ্ট প্ল্যাটফর্মের সুনির্দিষ্ট ফাংশনগুলি সন্ধান করতে হবে, কারণ তখন থেকেই পরিস্থিতির উন্নতি হয়নি এবং সম্ভবত কখনই হবে না ।


10
দেখা যাচ্ছে যে আমরা স্ট্যান্ডার্ডাইজড করেছি - একটি পূর্ণসংখ্যার প্রতিনিধিত্ব করার জন্য 4 বাইট প্রেরণের পরিবর্তে আমরা বিশেষ হেডার পাঠ্য, অ্যাঙ্গেল বন্ধনী, কীওয়ার্ড এবং সেই 4 বাইটের একটি ASCII উপস্থাপনা সহ ফর্ম্যাট পাঠ্যের একটি ব্লক প্রেরণ করি। প্রাপ্তির শেষেটি পূর্ণসংখ্যার পাঠ্য পেতে ফর্ম্যাটটিকে পার্স করে এবং এটিকে আবার 4 বাইটে রূপান্তর করে। একে বলা হয় অগ্রগতি, আমাকে বলা হয়েছে :-)
gbjbaanb

pt প্রবণতা অনুসন্ধান এক্সএমএল | ডাব্লুসিএল-ল 677
অ্যান্ড্রু ওয়াগনার

1

এখনও কোন sensক্যমত্য নেই:

  • বৃহত্তর কম্পিউটার সিস্টেমের বেশিরভাগ (সার্ভার / ডেস্কটপ / ল্যাপটপ) বর্তমানে স্বল্প-এন্ডিয়ান আর্কিটেকচার ব্যবহার করে
  • বেশিরভাগ ছোট কম্পিউটার (ট্যাবলেট / ফোন) একটি এন্ডিয়নেস-ইন্ডিপেন্ডেন্ট প্রসেসরের আর্কিটেকচার ব্যবহার করে, তবে অপারেটিং সিস্টেমগুলি চালায় যা অল্প-বিস্তৃত ক্রম ব্যবহার করে

সুতরাং হার্ডওয়্যার স্তরে, এলই অনেক বেশি সাধারণ। কিন্তু:

  • বেশিরভাগ আন্ত-কম্পিউটার যোগাযোগ প্রোটোকল ব্যবহার করে পরিচালিত হয় যা বড়-এন্ডিয়ান ক্রম নির্দিষ্ট করে
  • বিশ্বের সফ্টওয়্যারগুলির একটি খুব বড় অংশ ভার্চুয়াল প্ল্যাটফর্মে চলমান যা যখনই বাইরের স্টোরেজে ডেটা লিখিত থাকে তখন বিগ-এন্ডিয়ান অর্ডারে ডিফল্ট হয়।

উভয় আদেশই অদূর ভবিষ্যতের জন্য আমাদের সাথে থাকবে।


বৃহত্তম সিস্টেমে সিংহভাগ (যেমন, "বড় লোহা") সাধারণত বিগ-এন্ডিয়ান। যে তথাকথিত ক্ষুদ্র বা মেইনফ্রেম সিস্টেম, হয় (যা আমাদের অধিকাংশ প্রক্রিয়াকরণের যত্ন সম্পর্কে না ব্যাকএন্ড বিপুল পরিমাণ আপ করতে।)

@jdv তবে বেশিরভাগ বৃহত্তম কম্পিউটিং সিস্টেমগুলি হ'ল সামান্য এন্ডিয়ান x86-64 মেশিন এবং সেখানে কার্য সম্পাদনের বিষয়টি গুরুত্বপূর্ণ matters
ব্যবহারকারীর 877329

আমি মনে করি না যে কেউ আর্কিটেকচার ডিজাইনারদের (তারা যা অর্জন করতে চায় তার পক্ষে) সুবিধার চেয়ে আরও কিছু যে কোনও দৃ strong় বক্তব্য করতে পারে make আমি সেই প্রাচীন মন্তব্যটি করার সময়, বড় আয়রনটি ছিল বিইআর। তবে এটি এটি হ'ল নয়, কারণ আর্কিটেকচারটি সেভাবেই ঘটে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.