დღევანდელი შეკითხვისა და პასუხების სესიაზე მოდის ჩვენთან თავაზიანობა SuperUser — ქვედანაყოფის Stack Exchange, Q&A საიტების თემებზე ორიენტირებული ჯგუფების მიერ.

კითხვა

SuperUser მკითხველს DragonLord აინტერესებს, რატომ ითვლება ოპერაციული სისტემების უმეტესობა და პროგრამირების ენები ნულიდან. Ის წერს:

კომპიუტერები ტრადიციულად აღნიშნავენ რიცხობრივ მნიშვნელობებს ნულიდან. მაგალითად, C– ზე დაფუძნებული პროგრამირების ენებზე მასივები იწყება ინდექსის ნულიდან. რა ისტორიული მიზეზები არსებობს ამისათვის და რა პრაქტიკული უპირატესობა აქვს ნულის დათვლას ერთთან შედარებით?

რატომ მართლა? როგორც ფართოდ გავრცელებულია ეს პრაქტიკა, ნამდვილად არსებობს მისი განხორციელების პრაქტიკული მიზეზები.

Პასუხი

სუპერ სერვისის შემსრულებელი Matteo გთავაზობთ შემდეგ წარმოდგენებს:

0-დან მასების დათვლა ამარტივებს თითოეული ელემენტის მეხსიერების მისამართის გამოთვლას. თუ მასივი ინახება მოცემულ პოზიციაზე მეხსიერებაში (მას უწოდებენ მისამართს) თითოეული ელემენტის პოზიცია შეიძლება გამოითვალოს როგორც ელემენტი (n) = მისამართი + n * ზომა_ოფ_თევზატორი თუ პირველ ელემენტს პირველს განიხილავთ, გამოთვლა ხდება ელემენტი ( n) = მისამართი + (n-1) * size_of_the_element არ არის უზარმაზარი განსხვავება, მაგრამ ის დამატებით გამოკლებას უმატებს თითოეულ წვდომას. რედაქტირება დასამატებლად: მასივის ინდექსის, როგორც ოფსეტური გამოყენება, არ არის მოთხოვნა, არამედ მხოლოდ ჩვევა. პირველი ელემენტის კომპენსაცია შეიძლება დამალული იყოს სისტემის მიერ და მხედველობაში იქნას მიღებული ელემენტის გამოყოფისა და მითითებისას. დიჯკსტრამ გამოაქვეყნა ნაშრომი „რატომ უნდა დაიწყოთ ნუმერაცია ნულიდან“ (pdf), სადაც იგი განმარტავს, თუ რატომ იწყება 0 – ით დაწყება უკეთესი არჩევანია. ნულიდან დაწყება დიაპაზონის უკეთეს წარმოდგენას საშუალებას იძლევა.

თუ ეძებთ პასუხის გაღრმავებას, დიჯკრას ფურცელი ინფორმაციული წაკითხვაა.

რამეს დაამატეთ ახსნა? ისმის კომენტარებში. გსურთ მეტი პასუხის წაკითხვა სხვა Stack Exchange მომხმარებლების ტექნიკური და საზრიანი მომხმარებლებისგან? იხილეთ სრული განხილვის თემა აქ.