কেন অনেকগুলি সংখ্যার সংখ্যা 0 থেকে শুরু করে অষ্টাল হিসাবে আচরণ করে?


21

আমি পড়েছি অষ্টালগুলি কোথায় দরকারী? এবং দেখে মনে হয় অষ্টালগুলি এমন এক জিনিস যা এককালে দরকারী।

অনেকগুলি ভাষা 0 এর পূর্বে সংখ্যাকে অষ্টাল হিসাবে গণ্য করে, তাই আক্ষরিক 010অর্থে 8 হয় এর মধ্যে কয়েকটি জাভাস্ক্রিপ্ট, পাইথন (২.7) এবং রুবি y

তবে আমি সত্যিই দেখতে পাই না যে এই ভাষাগুলির কেন অষ্টাল প্রয়োজন, বিশেষত যখন স্বরলিপিটির বেশি সম্ভাবনা ব্যবহার করা হয় একটি অতিমাত্রায় 0 দিয়ে দশমিক সংখ্যা বোঝায়।

জাভাস্ক্রিপ্ট একটি ক্লায়েন্ট-পাশের ভাষা, অষ্টালটি বেশ অকেজো বলে মনে হচ্ছে। তিনটিই অন্য অর্থে বেশ আধুনিক, এবং আমি মনে করি না যে অষ্টাল স্বরলিপি ব্যবহার করে এমন অনেক কোড থাকবে যা এই "বৈশিষ্ট্যটি" সরিয়ে ভেঙে যাবে।

সুতরাং, আমার প্রশ্নগুলি হ'ল:

  • এই ভাষার কোনও বক্তব্য কি অক্টাল আক্ষরিক সমর্থন করে?
  • যদি অক্টাল আক্ষরিক প্রয়োজন হয় তবে কেন এমন কিছু ব্যবহার করবেন না 0o10? কেন একটি পুরানো স্বরলিপি অনুলিপি করে যা আরও কার্যকর ব্যবহারের ক্ষেত্রে ওভাররাইড করে?

24
আপনি কি একটি উত্তর হিসাবে "একটি তরুণদের বিভ্রান্ত করতে" গ্রহণ করবেন?
ইয়ানিস

11
সি সিনট্যাক্স + অন্ধ অনুলিপি অনুসারে
রাচেট ফ্রিক

1
@ মনীশারথ সি এটিকে পূর্বপুরুষদের কাছ থেকে উত্তরাধিকার সূত্রে পেয়েছে। জাভা আছে, কারণ সি আছে। বেশিরভাগের কাছে এটি রয়েছে, কারণ সি এবং জাভা রয়েছে।
ইনগো

2
কেউ এখনও অষ্টাল ইউনিক্স ফাইলের সঠিক পরিবর্তনগুলি দেখতে পাবে: chmodব্যবহারকারীর, গোষ্ঠী এবং অন্যদের জন্য 3 বিটের গ্রুপের জন্য 0666 বা 0777 সহ: পড়া, লেখার, সম্পাদনযোগ্য।
জোপ এগজেন

3
@ লিপ্প্রাইড পুরানো ব্রাউজারগুলিতে parseInt('010')8 টি ফিরে এসেছিল , তাই সর্বদা ব্যবহারের জন্য সমস্ত পরামর্শ parseInt(foo, 10)(এবং এটি এখনও আমার অভ্যাস)
ইজকাটা

উত্তর:


34

সি এর অন্ধ অনুলিপি, ঠিক যেমন র‌্যাচেট ফ্রিক তার মন্তব্যে বলেছিল

"ভাষা ডিজাইনারদের" বিস্তৃত সংখ্যা এই দিনগুলিতে সি এবং এর অনুলিপিগুলি (সি ++, জাভা, জাভাস্ক্রিপ্ট, পিএইচপি, এবং সম্ভবত কয়েক ডজন অন্য আমি শুনে নি) ছাড়া আর কিছুই দেখেনি। তারা ফোরট্রান, কবল, এলআইএসপি, পাস্কাল, ওবেরন, ফোর্থ, এপিএল, বিলিএস, এসএনওবিএলকে স্পর্শ করেনি কয়েকজনের নাম।

একসময়, কম্পিউটার বিজ্ঞানের পাঠ্যক্রমে একাধিক প্রোগ্রামিং ভাষার সংস্পর্শে আবশ্যক ছিল এবং এর মধ্যে সি, সি ++ এবং জাভা তিনটি পৃথক ভাষা হিসাবে গণনা অন্তর্ভুক্ত ছিল না।

আগের দিনগুলিতে অক্টাল ব্যবহৃত হত কারণ এটি বাইনারি নির্দেশকের মানগুলি সহজ করে তোলে। পিডিপি -11, উদাহরণস্বরূপ, বেসিক্যালটিতে একটি 4-বিট অপকোড, 2 3-বিট রেজিস্টার নম্বর এবং 2 3-বিট অ্যাক্সেস মেকানিজম ক্ষেত্র ছিল। অষ্টালে শব্দটি প্রকাশ করা সমস্ত কিছু স্পষ্ট করে তুলেছিল।

সিডির পিডিপি -11 এর সাথে প্রাথমিকের যোগসূত্রের কারণে, অষ্টাল স্বরলিপি অন্তর্ভুক্ত করা হয়েছিল, যেহেতু সে সময় এটি পিডিপি -11 এ খুব সাধারণ ছিল।

অন্যান্য মেশিনে এমন নির্দেশিকা সেট ছিল যা হেক্সে ভাল মানচিত্র দেয় না। সিডিসি 6600 একটি 60 বিট শব্দ ছিল, প্রতিটি শব্দ সাধারণত 2 থেকে 4 নির্দেশাবলী সহ। প্রতিটি নির্দেশ 15 বা 30 বিট ছিল।

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

এছাড়াও নোট করুন: যদি আপনার I / O সিস্টেমটি ডিফল্ট 0 টি অর্থ অষ্টালকে ডিফল্ট করে, আপনাকে হেক্সাডেসিমাল মানগুলি বোঝাতে আপনার আউটপুটটিতে কিছু অন্যান্য কনভেনশন ব্যবহার করতে হবে। এটি অগত্যা একটি জয় নয়।

আমার ব্যক্তিগত মতে, অ্যাডা এটি সর্বোত্তমভাবে করেছে: 2 # 10010010 #, 8 # 222 #, 16 # 92 # এবং 146 সমস্তই একই মান উপস্থাপন করে। (এটি সম্ভবত আমাকে কমপক্ষে তিনটি ডাউনভোট পাবেন, কেবলমাত্র আদার উল্লেখ করার জন্য))


11
অ্যাডা উল্লেখ করার জন্য আপনাকে অবহেলা করেছে ... খালি মজা করছে
কুফি

12
আমি জানতে আগ্রহী যে আপনি কীভাবে "ভাষা ডিজাইনার" এর 50% এরও বেশি এই চিত্রটি দিয়ে এসেছেন - কেন ভীতি প্রদর্শন? - সি বংশধর ব্যতীত অন্য কোনও কিছুর অভিজ্ঞতা নেই। আমি প্রতিদিন পেশাদার ভাষা ডিজাইনারদের সাথে কথা বলে আমার জীবনের একটি ভাল ষোল বছর কাটিয়েছি এবং এর মধ্যে একটিও আপনার বর্ণনার সাথে মেলে না।
এরিক লিপার্ট

জাভাস্ক্রিপ্টটিকে বর্ণিত হয়েছিল "আমরা ব্রাউজারে লিস্প করতে চাই" এর ডিজাইনারকে আগ্রহী করতে, যদি আমি সেই সাক্ষাত্কারটি সঠিকভাবে মনে করি ...
ইজকাটা

2
@ ইজকাটা: প্রকৃতপক্ষে, ওয়াল্ডেমার হরওয়াত একবার আমাকে বলেছিলেন যে তিনি জাভাস্ক্রিপ্টকে মূলত একটি সি-এর মতো সিনট্যাক্স সহ সাধারণ কমন লিস্প হিসাবে দেখেন। বাস্তবে ওয়াল্ডেমার একটি ধাতবভাষাকে সংজ্ঞায়িত করেছিলেন, কমন লিস্পে তাঁর ধাতবভাষার জন্য একজন দোভাষী লিখেছিলেন এবং তারপরে তাঁর ধাতবভাষায় জাভাস্ক্রিপ্ট স্পেস লিখেছিলেন, যার ফলে তাকে স্পেসিফিকেশনটি চালিত করতে সক্ষম করে । এটি একটি চতুর কৌশল ছিল।
এরিক লিপার্ট

কেন 0 ব্যবহার করা হয়েছিল? একটি অ সংখ্যাসূচক চরিত্রটি ব্যবহার করা কী বোঝায়? এএনএসআই মানকটি কি বেস টেন হওয়ার ইচ্ছায় সংখ্যার কারণে বাগগুলির দূরদর্শিতা পায় না?
ওল্ড ব্যাডম্যান গ্রে

6

তারা সি থেকে পেয়েছে কেন অনুলিপি? কারণ সমস্ত 3 এর বেস বাস্তবায়ন সিটিতে রয়েছে পাইথনের ডিফল্ট বাস্তবায়ন সিপিথন । রুবি মূলত সি- তেও নির্মিত হয়েছিল । জাভাস্ক্রিপ্ট এখানে সবচেয়ে আকর্ষণীয় কেস। এটি ব্রাউজারে চালানো হয়। অনুমান করার জন্য প্রথম ওয়েব ব্রাউজারটি কী লিখেছিল ?

তাহলে কেন এই তিনটি ভাষারই সি প্রয়োগ করা হবে? কারণ এগুলি সবগুলি ইউনিক্স সিস্টেমে উত্পন্ন। সুতরাং এটি ইকোসিস্টেম দ্বারা চালিত কনভেনশনের একটি মামলা। পার্ল এটিও করে। লুয়া সম্ভবত লুয়া দ্বিগুণের পরিবর্তে পূর্ণসংখ্যা ব্যবহার করত ।

সুতরাং এই ভাষাগুলির পরিবেশের প্রশ্ন সিটিতে লেখা হচ্ছে তাই তারা সি থেকে তাদের সম্মেলনগুলি গ্রহণ করে A একটি ভাল সমর্থনকারী বাস্তবায়ন ভিজ্যুয়াল বেসিক যা এর পরিবর্তে & ও ব্যবহার করে। যতদূর প্রয়োজন হিসাবে এটি মনে হয় যে এটি অন্য যে কোনও কিছুর চেয়ে অল্প বিস্মৃত বিমূর্ত রূপ ধারণ করে।


মোজাইক জাভাস্ক্রিপ্ট সমর্থন করেছিল? যদি তা না হয় তবে এটি কীভাবে প্রাসঙ্গিকভাবে উল্লেখ করা হচ্ছে?
সুইভ 22

2
@ এসভিক এটি নেটস্কেপ নেভিগেটরের জন্য বেসলাইন যা এটি করেছে।
বিশ্ব প্রকৌশলী

2

ধারাবাহিকতার একটি মান আছে। যদি আপনি নির্ভরযোগ্যভাবে নির্ধারণ করতে না পারেন যে কোনও সংখ্যাকে কীভাবে অনুবাদ করা হচ্ছে তবে আপনার বিভিন্ন প্রসঙ্গে একটি মান ব্যবহার করে আসল সমস্যা হবে।

এর অর্থ হ'ল আপনাকে নিজের পার্সার লিখতে হবে না। ভালভাবে পরীক্ষিত লাইব্রেরির রুটিনগুলি ব্যবহার করার ক্ষেত্রে দুর্দান্ত মূল্য রয়েছে।

এছাড়াও যদি আপনি নেতৃস্থানীয় 0 বাক্য গঠনটিকে সমর্থন না করেন তবে আপনার অষ্টাল মানগুলি লেখার সহজ উপায় নেই।

আমরা একবার যেমন অষ্টাল সংখ্যার উপর নির্ভর করি না তবুও সেগুলি এখনও মূল্যবান। একই ফলাফল হেক্সাডেসিমাল সংখ্যা সহ প্রাপ্ত করা যেতে পারে, কিছু প্রসঙ্গে অক্টোটাল বোঝা সহজ।

এখনও অবধি আমি দশমিক সংখ্যায় শীর্ষস্থানীয় শূন্যগুলির জন্য একটি ব্যবহার দেখেছি। এটি সনাক্তকরণ নম্বরগুলির মতো নির্দিষ্ট দৈর্ঘ্যের দশমিক ক্ষেত্রের প্রদর্শন এবং এন্ট্রিতে। অনেক বছর হয়ে গেছে যখন আমি এমন একটি ক্ষেত্র দেখেছি যার সাথে একটি শূন্য শূন্য রয়েছে। যদিও এটি উপলব্ধ মানগুলিকে 10% দ্বারা হ্রাস করে, ব্যবহারকারীরা তাদের প্রবেশের সময় নেতৃস্থানীয় শূন্যস্থানগুলি প্রায়শই ছেড়ে দেয় এমন সমস্যাটি সরিয়ে দেয়।


3
শীর্ষস্থানীয় শূন্যগুলি সহ ক্ষেত্রগুলি স্ট্রিং, ভিজ্যুয়াল উপস্থাপনা যার নিজস্ব অর্থ রয়েছে, সংখ্যা নয়।
পিটার বি

1
+1 chmod 438 ./myfileভয়াবহ বিবেচনা !
ইঙ্গো

2
0o10সিনট্যাক্সের অনুমতি দিচ্ছেন না কেন ? আমি বিশ্বাস করি পাইথন এটি সমর্থন করে। আপনি সর্বদা অষ্টাল মান লিখার একটি সহজ উপায় তৈরি করতে পারেন যা সংখ্যাটি আর কোনও সাধারণ সংখ্যা করে না। আমি লোকেরা প্রান্তিককরণ এবং সহজ কারসাজির জন্য
কোডটিতে অনুসরণযোগ্য

বাইনারি এবং হেক্স ছাড়াও অক্টাল মান লেখার একটি মাধ্যম থাকার ইচ্ছাটি আমি বুঝতে পারি। আমি আরও বুঝতে পারি যে সংকলককে 031ক্রিসমাসের পরিবর্তে 31 অক্টোবর (ডিসেম্বর 31) হিসাবে ব্যাখ্যা করা হবে (ডিসেম্বর 25) যদি প্রোগ্রামাররা কোনও ভাষায় লিখিত কোডটিতে অনুলিপি প্রয়োগ করে যা পরবর্তী প্রয়োগটি ব্যবহার করে। তবে আমি কোনও কারণ দেখতে পাচ্ছি না কেন কেন কোনও ভাষা উভয় বিশ্বের সেরা অর্জন করতে পারে না 0q31যখন অষ্টালটি পছন্দ হয় তখন নোটেশন হিসাবে সমর্থন করে বা 0t025বেস-টেনের জন্য শীর্ষস্থানীয় শূন্যগুলির সাথে ম্যাক্রো-পেস্টিং মানগুলিকে অনুমতি দেয় এবং কেবল ভিত্তি বর্ণনাকারী ছাড়াই শীর্ষস্থানীয় জিরোগুলিকে নিষিদ্ধ করে দেয় ।
সুপারক্যাট

@ সুপের্যাট অটল তারিখের প্রতিনিধিত্ব করতে নেতৃস্থানীয় 0 ব্যবহার করুন আপনার যুবকের পক্ষে কমপক্ষে। যে ক্ষেত্রে এটি ঘন ঘন ব্যবহৃত হয় সে ক্ষেত্রে হ'ল বিটের তাত্পর্য রয়েছে এবং দশমিক সংখ্যা হিসাবে সংখ্যার ব্যাখ্যা কেবলমাত্র 8-এর চেয়ে কম মানের জন্য সঠিক additional অতিরিক্ত অক্ষর যুক্ত করা (দশমিক সংখ্যায় শীর্ষস্থানীয় শূন্যগুলি সহ) সহায়তার চেয়ে আরও বিভ্রান্তিকর হতে পারে । আমি অবশ্যই জিজ্ঞাসা করব কেন একটি তারিখ 012 031, 010 031 বা 012 025 লেখা হয়েছিল।
বিলথোর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.