مشكلة سنة 2038
[[ملف:Year_2038_problem.gif|تصغير| صورة متحركة توضح المعضلة أثناء حدوثها. [[طفح عدد صحيح|تجاوز السعة]] يحدث عند الساعة 03:14:08.|329x329بك]]
'''معضلة عام 2038''' (المعروفة أيضًا باسم '''Y2038''' ، <ref name=":0">{{استشهاد بخبر
| مسار = https://www.theguardian.com/technology/2014/dec/17/is-the-year-2038-problem-the-new-y2k-bug
| عنوان = Is the Year 2038 problem the new Y2K bug?
| عمل = The Guardian
| تاريخ = 17 December 2014
| تاريخ الوصول = 11 October 2018
| مسار أرشيف = https://web.archive.org/web/20220125075051/https://www.theguardian.com/technology/2014/dec/17/is-the-year-2038-problem-the-new-y2k-bug | تاريخ أرشيف = 25 يناير 2022 }}</ref> '''Y2K38''' ، أو '''ايبوكلابيس'''<ref>{{استشهاد بويب
| مسار = https://www.linaro.org/blog/the-end-of-an-era/
| عنوان = The end of an Era
| تاريخ = February 6, 2020
| ناشر = Linaro
| الأخير = Bergmann
| الأول = Arnd
| مسار أرشيف = https://web.archive.org/web/20210418090427/https://www.linaro.org/blog/the-end-of-an-era/ | تاريخ أرشيف = 18 أبريل 2021 }}</ref><ref>{{استشهاد بخبر
| مسار = https://www.tomsguide.com/us/2038-bug-bh2017,news-25551.html
| عنوان = Digital 'Epochalypse' Could Bring World to Grinding Halt
| الأول = Paul
| الأخير = Wagenseil
| تاريخ = July 28, 2017
| عمل = Tom's Guide
| مسار أرشيف = https://web.archive.org/web/20211129222317/https://www.tomsguide.com/us/2038-bug-bh2017,news-25551.html | تاريخ أرشيف = 29 نوفمبر 2021 }}</ref>) هو خطأ برمجي في تنسيق الوقت في أنظمة [[حاسوب|الكمبيوتر]] ذات [[معمارية 32 بت]] عند محاولتها تمثيل الوقت بعد الساعة 03:14:07 [[توقيت عالمي منسق|بالتوقيت العالمي المنسق]] في الـ<nowiki/>[[19 يناير]] 2038.

== السبب ==
تقيس العديد من أنظمة الكمبيوتر الوقت والتاريخ على أنه [[توقيت يونكس|وقت يونكس]]، وهو معيار دولي لعرض الوقت رقميًا في الأنظمة الحاسوبية. يُعَرَّف وقت يونكس على أنه عدد الثواني المنقضية منذ منتصف الليل (00:00:00) [[توقيت عالمي منسق|بالتوقيت العالمي المنسق]] منذ 1 يناير 1970 (أُخْتِير هذا الوقت عشوائيًا من قبل المبرمجين)، وأطلق على هذا الوقت اسم ''عصر يونكس''.

تم ترميز وقت يونكس تاريخيًا باعتباره [[عدد صحيح (علوم حاسوب)|عددًا صحيحًا بإشارة ذو حجم 32 بت]] (اسم آخر: ''عدد صحيح بإشارة 32 بت'' )، وهو نوع بيانات يتكون من 32 [[بت|رقمًا ثنائيًا]] ([[بت]]) والتي تمثل قيمة عدد صحيح، حيث تعني كلمة «بإشارة» أن هناك بت واحدة محجوزة لإشارة الموجب أو السالب (+/-). وبالتالي، يمكن أن يُمثَّل قيمًا صحيحة فقط من سالب 2<sup>31</sup> إلى موجب 1 -2<sup>31</sup> ضمناً. وبالتالي، إذا اُسْتُخْدِم عدد صحيح 32 بت بإشارة لتخزين وقت يونكس، فإن آخر وقت يمكن تخزينه هو 1 -2<sup>31</sup> الذي يساوي 2,147,483,647 ثانية بعد عصر يونكس، والذي يكون الساعة 03:14:07 [[توقيت عالمي منسق|UTC]] في الـ19 يناير 2038.<ref name="spinellis">{{استشهاد بكتاب
| عنوان = Code quality: the open source perspective
| مؤلف1 = Diomidis Spinellis
| ناشر = [[Adobe Press]]
| سنة = 2006
| isbn = 978-0-321-16607-4
| إصدار = illustrated
| صفحة = 49
| مسار = https://books.google.com/books?id=vEN-ckcdtCwC&q=292%2C277%2C026%2C596&pg=PA49
| سلسلة = Effective software development series in [[أوريلي ميديا]]
| مسار أرشيف = https://web.archive.org/web/20210518153434/https://books.google.com/books?id=vEN-ckcdtCwC | تاريخ أرشيف = 18 مايو 2021 }}</ref> الأنظمة التي تحاول زيادة هذه القيمة بمقدار ثانية واحدة لتصل إلى 2<sup>31</sup> ثانية بعد عصر يونكس (03:14:08) ستعاني من [[طفح عدد صحيح|تجاوز عدد صحيح]]، مما يؤدي عن غير قصد إلى قلب بت الإشارة إلى سالب. يؤدي هذا إلى تغيير قيمة العدد الصحيح إلى سالب 2<sup>31</sup> ، أي 2<sup>31</sup> ثانية ''قبل'' عصر يونكس وليس ''بعده'' ، والتي ستفسرها الأنظمة على أنها الساعة 20:45:52 يوم الجمعة، 13 ديسمبر 1901. من هنا، ستستمر الأنظمة في العد التصاعدي، باتجاه الصفر (أي باتجاه عصر يونكس)، ثم لأعلى خلال الأعداد الصحيحة الموجبة مرة أخرى. نظرًا لأن العديد من أنظمة الكمبيوتر تستخدم حسابات الوقت لعمل وظائف مهمة، فقد تؤدي المعضلة إلى حدوث أخطاء فادحة.

== التبعيات ==
قد تواجه أنظمة الكمبيوتر التي تستخدم نظام توقيت يونكس في العمليات الهامة أخطاء فادحة إذا لم يتم حل معضلة Y2038 مبكرًا. وقد حدث أن واجهت بعض الأنظمة التي تستخدم التواريخ اللاحقة الأخطاء بالفعل. أكثر الأنظمة عرضة للأخطاء هي تلك التي نادرًا ما يتم تحديثها أو لا يتم تحديثها أبدًا، مثل الأنظمة [[النظام القديم (حاسوب)|القديمة]] [[نظام مضمن|أو المدمجة]]. لا يوجد حل شامل لهذه المشكلة، و لكن تم بالفعل تحديث العديد من الأنظمة الحديثة لقياس وقت يونكس بأعداد صحيحة حسب [[معمارية 64 بت]] والتي لن يحدث بها [[طفح عدد صحيح|تجاوز للسعة]] حتى 292 مليار سنة

== انظر أيضًا ==

* [[مشكلة سنة 2000|معضلة عام 2000]]

== مراجع ==
{{مراجع}}
{{مشكلات مرتبطة بالسنة}}
{{واجهة التطبيق الثنائية}}
{{شريط بوابات|تقانة المعلومات|علم الحاسوب|لينكس}}

[[تصنيف:2038]]
[[تصنيف:أخطاء البرمجة]]
[[تصنيف:تقنيات نظم التشغيل]]
[[تصنيف:لينكس]]
[[تصنيف:مشاكل مستقبلية]]
[[تصنيف:يونكس]]
[[تصنيف:أحداث يناير 2038]]
معضلة عام 2038 (المعروفة أيضًا باسم Y2038 ،  Y2K38 ، أو ايبوكلابيس) هو خطأ برمجي في تنسيق الوقت في أنظمة الكمبيوتر ذات معمارية 32 بت عند محاولتها تمثيل الوقت بعد الساعة 03:14:07 بالتوقيت العالمي المنسق في الـ19 يناير 2038.

 السبب 
تقيس العديد من أنظمة الكمبيوتر الوقت والتاريخ على أنه وقت يونكس، وهو معيار دولي لعرض الوقت رقميًا في الأنظمة الحاسوبية. يُعَرَّف وقت يونكس على أنه عدد الثواني المنقضية منذ منتصف الليل (00:00:00) بالتوقيت العالمي المنسق منذ 1 يناير 1970 (أُخْتِير هذا الوقت عشوائيًا من قبل المبرمجين)، وأطلق على هذا الوقت اسم عصر يونكس.

تم ترميز وقت يونكس تاريخيًا باعتباره عددًا صحيحًا بإشارة ذو حجم 32 بت (اسم آخر: عدد صحيح بإشارة 32 بت )، وهو نوع بيانات يتكون من 32 رقمًا ثنائيًا (بت) والتي تمثل قيمة عدد صحيح، حيث تعني كلمة «بإشارة» أن هناك بت واحدة محجوزة لإشارة الموجب أو السالب (+/-). وبالتالي، يمكن أن يُمثَّل قيمًا صحيحة فقط من سالب 231 إلى موجب 1 -231 ضمناً. وبالتالي، إذا اُسْتُخْدِم عدد صحيح 32 بت بإشارة لتخزين وقت يونكس، فإن آخر وقت يمكن تخزينه هو 1 -231 الذي يساوي 2,147,483,647 ثانية بعد عصر يونكس، والذي يكون الساعة 03:14:07 UTC في الـ19 يناير 2038. الأنظمة التي تحاول زيادة هذه القيمة بمقدار ثانية واحدة لتصل إلى 231 ثانية بعد عصر يونكس (03:14:08) ستعاني من تجاوز عدد صحيح، مما يؤدي عن غير قصد إلى قلب بت الإشارة إلى سالب. يؤدي هذا إلى تغيير قيمة العدد الصحيح إلى سالب 231 ، أي 231 ثانية قبل عصر يونكس وليس بعده ، والتي ستفسرها الأنظمة على أنها الساعة 20:45:52 يوم الجمعة، 13 ديسمبر 1901. من هنا، ستستمر الأنظمة في العد التصاعدي، باتجاه الصفر (أي باتجاه عصر يونكس)، ثم لأعلى خلال الأعداد الصحيحة الموجبة مرة أخرى. نظرًا لأن العديد من أنظمة الكمبيوتر تستخدم حسابات الوقت لعمل وظائف مهمة، فقد تؤدي المعضلة إلى حدوث أخطاء فادحة.

 التبعيات 
قد تواجه أنظمة الكمبيوتر التي تستخدم نظام توقيت يونكس في العمليات الهامة أخطاء فادحة إذا لم يتم حل معضلة Y2038 مبكرًا. وقد حدث أن واجهت بعض الأنظمة التي تستخدم التواريخ اللاحقة الأخطاء بالفعل. أكثر الأنظمة عرضة للأخطاء هي تلك التي نادرًا ما يتم تحديثها أو لا يتم تحديثها أبدًا، مثل الأنظمة القديمة أو المدمجة. لا يوجد حل شامل لهذه المشكلة، و لكن تم بالفعل تحديث العديد من الأنظمة الحديثة لقياس وقت يونكس بأعداد صحيحة حسب معمارية 64 بت والتي لن يحدث بها تجاوز للسعة حتى 292 مليار سنة

 انظر أيضًا 

 معضلة عام 2000

 مراجع 

تصنيف:2038
تصنيف:أخطاء البرمجة
تصنيف:تقنيات نظم التشغيل
تصنيف:لينكس
تصنيف:مشاكل مستقبلية
تصنيف:يونكس
تصنيف:أحداث يناير 2038