برنامه نويسي كودكان
زبان هاي سطح پايين – برنامه نويسي كودكان معمولاً C و C++ – به برنامه نويسان نياز دارند كه حافظه را مستقيماً مديريت كنند. اين زبان ها به توسعه دهندگان دستوراتي براي تخصيص، تخصيص مجدد و آزاد كردن تكه هاي حافظه و همچنين راه هايي براي ارجاع به مكان هاي خاص در حافظه ماشين، بدون توجه به محتواي آن، ارائه مي دهند. اين زبان ها به خوبي براي برنامه نويسي سيستم ها مناسب هستند و دستورالعمل هايي را مستقيماً به دستگاه گوارش مي دهند تا برنامه هايي با عملكرد بسيار سريع توليد كنند. اين آزادي همچنين خطر ايجاد ميكند و به انواع باگها مانند سرريز بافر، نشت حافظه، نشانگرهاي آويزان و غيره اجازه ميدهد.
اين مسائل، كه خطاهاي ايمني حافظه ناميده ميشوند، ميتوانند ناشي از اشتباهات تايپي ساده و خطوط كد فراموش شده يا ساختارهاي حافظه پيچيده و تعاملات پيشبيني نشده باشد. . گوگل و مايكروسافت هر دو دريافتند كه حدود 70 درصد از باگ هاي كشف شده آنها ناشي از مشكلات ايمني حافظه است. دو زبان ناامن از نظر حافظه، C و C++ كه بيشترين ارجاع را دارند، در رتبهبندي پركاربردترين زبانهاي برنامهنويسي قرار دارند و در بقيه زبانها برجسته هستند.
عوامل متعددي در محبوبيت اين برنامه نويسي كودكان زبان هاي پرخطر نقش دارند. اولين مورد سابقه است: C در سال 1972 توسعه يافت و C++ در سال 1983 به عنوان اصلاحي از C كه چندين قابليت از جمله برنامه نويسي شي گرا را اضافه كرد. سيستم عامل هاي مدرن بر روي C ساخته شده اند و بسياري از زبان هاي برنامه نويسي سطح بالا و كامپايلرهاي آنها نيز به زبان C نوشته شده اند. علاوه بر اين، عدم ايمني حافظه آنها به همان اندازه كه يك خطر است يك ويژگي است. C و C++ به سرعت از آنچه برنامه نويس مي نويسد به آنچه دستگاه مي خواند ترجمه مي كنند. سيستم عاملها زبانهاي C را دقيقاً به دليل سرعت و دسترسي مستقيم به حافظه براي گزينههاي طراحي قدرتمند تركيب ميكنند، ايرانيان سايبر اما اين فقدان حفاظ به همان اندازه امكان خطاي خطرناك را فراهم ميكند.
راه حل هاي فني
ايمني حافظه فرصت قابل توجهي را براي جلوگيري از ايجاد آسيبپذيريهاي جديد و محدود كردن بيشتر آسيبپذيريهاي موجود با راهحلهاي نسبتاً منحصربفرد ارائه ميكند. چندين حفاظت براي ايمني حافظه وجود دارد. براي زبانهاي ناامن از نظر حافظه مانند C و C++، ابزارهايي براي كامپايل و برنامه نويسي كودكان اجراي برنامهها با بررسي حافظه پويا وجود دارد. مجموعه منبع باز Valgrind يكي از رايج ترين ها است. با اين حال، پيچيدگي مديريت حافظه باعث مي شود Valgrind هم برخي از انواع خطاها را از دست بدهد و هم اقداماتي را كه واقعاً ايمن هستند، علامت گذاري كند و دقت را كاهش دهد.
علاوه بر اين، برخي از زبان هاي برنامه نويسي به صراحت طراحي شده اند تا مسائل مربوط به ايمني حافظه را غيرممكن كنند و در عين حال از عملكرد كندتر براي اجازه برنامه نويسي سيستم ها جلوگيري كنند. يكي از برجستهترين آنها Rust است كه توسط موزيلا توسعه داده شده است، و ساير زبانهاي ايمن براي حافظه با كاربردهاي خاص - Swift، C# و F# - اگرچه صراحتاً براي جايگزيني زبانهاي ناامن طراحي نشدهاند. Rust كه بر اساس قوانيني ساخته شده است كه برنامه نويسان براي كامپايل كردن برنامه خود بايد از آنها پيروي كنند، از وجود برنامه نويسي كودكان مشكلات ايمني حافظه به هيچ وجه جلوگيري مي كند. Rust همچنين حالتهاي ناامن را فراهم ميكند و امكان مديريت دستي حافظه را در صورت نياز به صراحت در زير بخشهاي كد فراهم ميكند.
وضعيت فرزندخواندگي
بسياري از مؤسسات و شركتها ايمني حافظه را بهعنوان عاملي حياتي در امنيت اكوسيستم تقويت كردهاند، و بسياري بر پذيرش و بهبود Rust به عنوان بخشي از يك راهحل تمركز كردهاند، از جمله مايكروسافت، خدمات وب آمازون (AWS)، فيسبوك و گوگل. برخي از پروژه ها شامل افزودن اجزاي جديد يا بازنويسي مولفه هاي قديمي براي لينوكس و سيستم عامل اندرويد در Rust مي باشد. عليرغم پيشرفتهاي اخير و محبوبيت مستمر كاربر Rust، C و C++ در همه جا حاضر هستند و پذيرش Rust تا حدودي كند است. چند عامل به تأخير پذيرش Rust كمك مي كند و از چالش هاي انتقال زبان ناشي مي شود.
اول، بديهيات Rust كه ايمني حافظه را تضمين برنامه نويسي كودكان ميكنند، يك منحني يادگيري بسيار شيبدار ايجاد ميكنند. اگرچه اين زبان داراي ابزار، كتابخانهها، اسناد و مشاركتكنندگان در حال بهبود است، اين قوانين سختگيرانه ميتوانند براي پيادهسازي ويژگيهاي رايج و آشنا نياز به طراحي مجدد اساسي داشته باشند. هنگامي كه كتابخانه هاي Rust موجود وجود ندارند، طراحي مجدد سطح كد مورد نياز باعث مي شود برخي از برنامه نويسان احساس كنند كه در حال اختراع مجدد چرخ هستند در حالي كه هنوز به بسياري از
برچسب: برنامه نويسي كودكان،