শূন্য-ভিত্তিক মাসের নম্বর [বন্ধ]


98

কিছু জনপ্রিয় প্রোগ্রামিং ল্যাঙ্গুয়েজে মাসের সংখ্যায়ন ব্যবহার করা হয় যা 1 দ্বারা বন্ধ থাকে - জাভাস্ক্রিপ্ট মাথায় আসে, জাভা হিসাবেও, এবং যদি মেমরিটি পরিবেশন করে তবে সিটি অন্যটি। আমার কিছু প্রশ্ন আছে:

  • আপনি যদি লাইপোপলগুলি দ্বারা ব্যবহৃত মাসের নম্বরগুলি উপেক্ষা করতে চলেছেন, তবে কেন ধারাবাহিকতার জন্য ল্যাপাইপলগুলি দ্বারা ব্যবহৃত দিনের সংখ্যা এবং 0 থেকে শুরু করে প্রতি মাসের দিনগুলি উপেক্ষা করবেন না কেন ?
  • কেন এত সাধারণ?
  • কার ধারণাটি এই প্রথম ছিল?

অ্যারে, 0 থেকে শুরু হয়, এবং লোক সংখ্যা দ্বারা দিনগুলি উল্লেখ করে?
21:55

13
@TomatoSandwich: বেশ ঘন ঘন লোকেরা পড়ুন মাস সংখ্যা দ্বারা, এবং তারা থেকে শুরু তাদের সংখ্যা 1
রবার্ট এল

4
API প্রোগ্রামাররা উপায় দ্বারা দেবতা নয়; কখনও কখনও ভুল বাস্তবায়নের মধ্যে পেতে; শুধু এটি মোকাবেলা। এটি হুবহু কেস নয় (আপনি কোন ভাষাটিও বলবেন না), তবে সবকিছু নিখুঁত হওয়ার আশা করবেন না। আমি যদিও কারণ জানতে চান প্রশংসা।
দুপুর সিল্ক

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

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

উত্তর:


53

গণনা শুরু করতে শূন্যের ব্যবহারটি আসলে এসেম্বলি প্রোগ্রামারদের একটি অপ্টিমাইজেশন ট্রিক। কাউন্ট রেজিস্টারে 1 নিয়োগের পরিবর্তে, তারা নিজের সাথে নিবন্ধটি XOR'ed করে, যা সিপিইউ চক্রগুলিতে কিছুটা দ্রুত ছিল। এর অর্থ হ'ল গণনা 0 দিয়ে শুরু হবে এবং সর্বশেষটি বাদ দিয়ে সবসময় উপাদানগুলির দৈর্ঘ্য অবধি থাকবে।

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

এবং শূন্য-ভিত্তিক মাসের সংখ্যা? প্রায়শই অনেক প্রোগ্রামিং এনভায়রনমেন্টাল কিছু ডিফল্ট ডেটা থেকে ডেটা গণনা করে দিন হিসাবে গণনা করে। 31 শে ডিসেম্বর, 1899 একটি জনপ্রিয় তারিখ, যদিও সেখানে বেসের তারিখ হিসাবে প্রচুর অন্যান্য তারিখ ব্যবহৃত হয়েছিল। অন্যান্য সমস্ত তারিখগুলি এই বেস থেকে অফসেট করা হয়েছে, এবং কেবলমাত্র একটি একক সংখ্যা হিসাবে সংরক্ষণ করা হবে। ভগ্নাংশগুলি ঘন্টা, মিনিট এবং সেকেন্ড নির্দেশ করতে ব্যবহৃত হত, যেখানে 0.25 হবে 24/4 = 6 ঘন্টা। সুতরাং, একটি তারিখকে আসল তারিখে রূপান্তরিত করতে, সমস্ত পরিবেশকেই এই সংখ্যাটি একটি আসল তারিখে রূপান্তরিত করতে হয়।

তবে শূন্য-ভিত্তিক অ্যারে এবং 1-ভিত্তিক মাসের মানগুলির সংমিশ্রণটি একটি সমস্যা নিয়ে আসে bring 9 মাসের মাসের নাম পেতে, আপনাকে মাসের অ্যারে থেকে আইটেম 8 পেতে হবে। কিছু বিকাশকারী নামটি পাওয়ার আগে মাসের সংখ্যা হ্রাস করে খুশি হবে। অন্যরা মাসটিকে শূন্য-ভিত্তিক কিছুতে পরিবর্তন করা পছন্দ করে যেহেতু লোকেরা কেবল নামটি নয়, নামটি জানতে চায়। এটি ব্যক্তিগত দৃষ্টিভঙ্গি।


92
জাভাস্ক্রিপ্ট এবং এএস 3 তারিখের নির্মাতারা মাসটি "ব্যতীত" সমস্ত কিছুর জন্য প্রকৃত মান গ্রহণ করে, যা অজানা কারণে শূন্য-ভিত্তিক হিসাবে নির্দিষ্ট করা আবশ্যক। এটি নিঃসন্দেহে একটি ভয়ানক এপিআই নকশা।
ট্রায়ঙ্কো

4
আমি রাজী. আমার তারিখটি কেন এক মাস কেটে গেল কেন তা বের করার চেষ্টা করতে আমার এক ঘন্টা ব্যয় হয়েছিল। মাস ব্যতীত 1 টি ভিত্তিক 1 হওয়ার জন্য এটি আসলে খুব বেশি বোঝায় না। দুর্ভাগ্যক্রমে, এটি সম্ভবত অনুচিত নয়, অন্যথায় আমরা অন্য Y2K সমস্যাটি শেষ করব :-)।
মাইক সোনার

4
TL; ড: অ্যারের লুকআপ কারণে monthName[monthNumber]বা mon_name[tm_mon]সঙ্গে time.h স্বরলিপি
পার্সেড

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

6

এটি হ'ল এটিই, এবং সেই অনুমানের ভিত্তিতে তৈরি সফ্টওয়্যারটির বিশাল ওজনটির অর্থ এটি কিছুটা সময়ের জন্য প্রায় হতে চলেছে।

আমার মতে এটি সি এর দোষ ছিল, এবং অন্যান্য সমস্ত জনি-আগত ভাষাগুলি কেবল এটির সাথে মিলিত হয়েছিল।

আপনি আরও মজাদার লোকদের কাছ থেকে কিছু মজার পরিস্থিতি পান। আমাদের দল যে কয়েকটি ওয়াই টু কে খুঁজে পেয়েছিল তার মধ্যে একটি হ'ল একটি ওয়েবসাইট যা গর্বের সাথে বছরটি ১৯১০ ঘোষণা করেছিল কারণ তারা struct tmবছরটিকে আক্ষরিক "19" দিয়ে উপস্থাপন করেছিল।


কমপক্ষে একজন ব্যক্তি (আমি না) তার স্ক্রিপ্টগুলিতে ব্যবহারের জন্য "getRealMonth" এবং "setRealMonth" ফাংশন সংজ্ঞায়িত করেছিলেন। আমি তাকে কিছুটা দোষ দিই না।
রবার্ট এল

4
Y2K বাগ বাগের রেফারেন্সের জন্য আপভোট করুন।
জাস্টাস রোমিজন

4

হ্যাঁ, রোমানদেরও শূন্য সমস্যা ছিল।

এই মাত্র একটি [অ স্বজ্ঞাত] গণিতের ফল (প্রোগ্রামিং এর একটি শক্তিশালী উপাদান হচ্ছে বিশেষ করে প্রথম দিকে প্রোগ্রামিং) প্রথম (সমস্যাযুক্ত মেয়াদ যে এক) হিসাবে শূন্য সংজ্ঞায়িত বাস্তব, ইতিবাচক * প্রাকৃতিক সংখ্যা, এবং একটি অ্যারের যেহেতু বাস্তব সঙ্গে সূচীবদ্ধ করা হয় , প্রাকৃতিক সংখ্যাগুলি "প্রথম" উপাদানটি সূচক 0 হয়।

মাসগুলি সত্যই অ্যারেতে মানগুলির নামকরণ করা হয়, যেখানে দিন এবং বছরগুলি গণ্য করা মান - "1", "2", "3",। এর মতো দেখতে অ্যারেতে থাকায় দিনগুলি / বছরগুলি ভাবা আরও কার্যকর হবে। .. } নিজেদের.

কেন এটি এত সাধারণ (গাণিতিকভাবে সঠিক হওয়া বাদে) ভাল আপনি তালিকাভুক্ত সমস্ত ভাষাগুলি একটি জিনিসের জন্য একটি সাধারণ উত্স থেকে অবতরণ করছে ...

সম্পাদনা করুন:

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

আপনার মতামতের উপর নির্ভর করে প্রচলিত মতামতটি হয় "historicalতিহাসিক দুর্ঘটনা" বা "কারণ মাসগুলি সংখ্যা নয় তাই দিন / বছর স্টোরেজের সাথে তুলনা করা যায় না" বলে মনে হচ্ছে।

* দুঃখিত, দুঃখিত, পদার্থবিজ্ঞান! = গণিত ফিরে আসছেন আমাকে সেখানে কামড়ানোর জন্য। আমার হাত এখন লোহা বন্ধ।


4
শূন্য কোনও ধনাত্মক সংখ্যা নয়। এটি নেতিবাচক সংখ্যাও নয়।
রবার্ট এল

ভাল কথা, সম্ভবত আপনার এটি "প্রাকৃতিক সংখ্যা" এ পরিবর্তন করা উচিত।
paxdiablo

4
আকর্ষণীয়, আমি সবসময় ভেবেছিলাম যে সি অ্যারেগুলি 0 থেকে শুরু করে পয়েন্টার গাণিতিকটি সহজ করতে: a[0]== *(a + 0)
খুব বেশি পিএইচপি

4
প্রকৃতপক্ষে, কম্পিউটিংয়ে আপনি যদি অনেসের পরিপূরক সিস্টেমটি ব্যবহার করেন তবে আপনার ইতিবাচক এবং নেতিবাচক শূন্য হতে পারে। ভাগ্যক্রমে, সেই সিস্টেমটি আবার কখনও ব্যবহৃত হয় না। দেখুন en.wikipedia.org/wiki/Ones'_complement#Ones.27_complement
Wim দশ কিনারা

মাস আমাদের সংস্কৃতিতে যেমন দিন ঠিক তেমন একটি সংখ্যাও। বছরের প্রথম মাসটিকে সত্যই "1 (st) মাস" বলা হয়, এবং
মাইকেল স্যাং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.