كيف أعادت Microsoft كتابة مترجم C # إلى C # وجعلته مفتوحًا

تم النشر بواسطة Mads Torgersen ، Lead C # Architect في Microsoft

مشروع روزلين

Roslyn هو اسم الرمز الذي تم تعيينه إلى برنامج التحويل البرمجي مفتوح المصدر لـ C # و Visual Basic.NET. بدأ المشروع في أعمق ظلام في العقد الأخير من حياة شركة Microsoft - وانتهى كمشروع مفتوح المصدر ومحرك عالمي متعدد المنصات لـ C # (و VB ، والذي سأعتبره أمرا مفروغا منه في بقية هذه المقالة).

كان الحديث الأول عن المشروع ، الذي أصبح يعرف فيما بعد باسم Roslyn ، جارياً بالفعل عندما انضممت إلى Microsoft في 2005 - قبل إصدار .NET 2.0 بوقت قصير. كان هناك حديث عن إعادة كتابة C # إلى C #. هذه ممارسة عادية للغات البرمجة - دليل على نضج اللغة. ولكن كان هناك دافع أكثر عملية وأهمية: نحن ، مبدعي C # ، لم نبرمج في C # بأنفسنا ، نحن مبرمجون في C ++! إذا كنت تبرمج في C # يوميًا ، فإنك تغير رأيك: القوة العظيمة للعمل على الأداة التي تقوم بتطويرها (تجربة طعام).

يعتمد المستخدمون على سلوك المترجم الجديد مثل القديم. إن كتابة مترجم جديد لـ C # هو محاولة للعثور على مراسلات من الأخطاء إلى الأخطاء.

صعوبة إعادة كتابة المحول البرمجي ، التي تم استخدامها بنشاط لعدة سنوات ، هي أن المستخدمين يعتمدون على سلوك المترجم الجديد تمامًا مثل المترجم القديم. إن كتابة مترجم جديد لـ C # هو محاولة للعثور على مراسلات من الأخطاء إلى الأخطاء. وأنا لا أتحدث فقط عن الأخطاء المعروفة ، ولكن أيضًا عن الأخطاء غير المعروفة والأشكال غير المرغوب فيها من السلوك التي اكتشفها المطورون واستخدموها ، غالبًا دون علم.

لسنوات عديدة ، لم يسمح لنا حجم هذه المشكلة ببدء المشروع.

على الرغم من أن مطوري مجموعة اللغات في Microsoft قد حصلوا على العديد من المزايا من المترجم C # الجديد المكتوب في C # ، إلا أن القيمة للمستخدمين النهائيين لم تكن واضحة: كيف سيفيدهم المترجم الجديد؟ ربما الأشخاص الوحيدون الذين يهتمون بكتابة مترجم C # في C # هم مطورو المترجم أنفسهم.

في الوقت نفسه ، ظهرت مشكلة أخرى أكثر فأكثر: ازدواجية الجهود بين الأدوات المختلفة التي تعمل على كود C #. بالإضافة إلى المترجم ، عمل فريق آخر على دعم IDE لـ C # في Visual Studio ، وكان عليهم أيضًا كتابة الكثير من التعليمات البرمجية (في ذلك الوقت أيضًا في C ++) من أجل فهم بناء الجملة ودلالات C #.

في الوقت نفسه ، كان عدد الأدوات من Microsoft والشركات الأخرى ، مثل StyleCop و CodeRush ، وما إلى ذلك ، في تزايد: يجب أن تنفذ جميعها معالجة ذات معنى لرمز C #. لكل من هذه البرامج أخطاءه المختلفة قليلاً ، ومستويات مختلفة من الفهم ، والتنازلات المختلفة والامتيازات. وكل منهم سيبذل الكثير من الجهد للتوصل إلى فهم مشترك للكود.

وقررنا اقتراحًا مهمًا: للتأكد من وجود قاعدة رمز واحدة فقط في العالم - قاعدة واحدة لجميع الأدوات التي تعمل مع رمز C #!

تنبع قيمة هذا الاقتراح من زيادة عدد الأدوات المتاحة ، وخاصة من تحسن في جودة الأدوات الموجودة. يتم تعيين جميع متطلبات صحة وأداء اللغة لقاعدة رمز واحدة. ما يكفي من جهد واحد لجعل قاعدة من نوعية ممتازة وتنوع كبير. سنقوم بإنشاء محرك حقيقي للغة! موحدة ، افتح API لرمز C #. سنقدم تعريفًا جديدًا لمفهوم "المترجم".

بالطبع ، بمجرد إنشاء واجهة برمجة تطبيقات لمجتمع C # الأوسع ، من نافلة القول أنه يجب أن تكون واجهة برمجة تطبيقات .NET مطبقة في C #. لذلك ، يأتي حلم كتابة C # في C # تقريبًا مثل التأثير الجانبي العشوائي.

وهكذا ، ولدت روزلين من عقلية منفتحة: مشاركة الأعمال الداخلية لـ C # للاستخدام الآلي من قبل العالم. كان هذا في حد ذاته اقتراحًا جريئًا لثقافة Microsoft التي لا تزال مغلقة إلى حد ما.

هل سنشارك الملكية الفكرية مجانًا؟ هل سنمكّن الأدوات التي تنافسنا؟

في مناقشة الشركات ، تمت مساعدتنا على كسب الحجج حول تعزيز النظام البيئي وخلق لغة باستخدام أفضل الأدوات على هذا الكوكب. كان الأمر يتعلق بالنمو طويل المدى لـ C # و .NET مقارنةً بتحويل أصول Microsoft وحمايتها على المدى القصير. وبالتالي ، دون ذكر رمز المصدر المفتوح ، كانت المراهنة على Roslyn خطوة كبيرة وجريئة لشركة Microsoft.

بالطبع ، تطوير شيء كهذا لا يمكن أن يكون سهلاً. كانت التوقعات بالنسبة لروسلين طموحة للغاية ومليئة بالمشكلات التقنية ، وقد استغرقنا 50 عامًا للتعامل مع كل شيء. لكن هذه قصة أخرى.

بالنسبة لمعظم التطور الأولي ، ظلت Roslyn مشروعًا مغلق المصدر.

منذ بداية العمل الجاد في المشروع في عام 2009 ، كانت لدينا أفكار لجعل المترجمين مفتوحين ، لكن Microsoft لم تكن جاهزة بعد.

تتمتع Microsoft بثقافة التنمية المغلقة وحماية براءات الاختراع لشفرة المصدر منذ السبعينيات. على الرغم من أن التغييرات كانت في الهواء ، إلا أنها كانت أبطأ مما كان يأمله فريقنا.

في الواقع ، بدا لبعض الوقت أن الشركة كانت تسير في الاتجاه المعاكس تمامًا.

أثر مشروع Windows 8 بشكل كبير على الشركة بأكملها. بفضل نموذج البرمجة الجديد ، تغلغل مخالبه عميقًا في فرق تطوير الأدوات واللغات ، وتم تغطية كل شيء بسرية بالغة ، ليس فقط من الخارج ، ولكن حتى داخل الشركة. كمثال ، تم تنسيق وظيفة عدم المزامنة التي كنا نطورها في ذلك الوقت واختلطت مع نموذج برمجة Windows 8 ، ولن أجرؤ على نشر ملاحظات حول تصميمه حتى داخل الشركة ، خوفًا من تسريب معلومات عن طريق الخطأ حول Windows 8 ومشكلات في رأسي ! خلق هذا مناخًا رهيبًا للابتكار ، وبالطبع لم يسمح لنا بالاعتماد على مترجم C # مفتوح المصدر.

ومع ذلك ، في النهاية ، عندما سار Windows 8 بطريقته الخاصة ، بدأت الشركة في التحول ووجدت اتجاهًا جديدًا وقيادة جديدة وفلسفة مختلفة تمامًا - Microsoft التي نعرفها اليوم. ينتشر المصدر المفتوح الآن بسرعة داخل Microsoft.

تم إصدار F # في عام 2010 بترخيص مفتوح ومنظمتها الخاصة - F # Software Foundation . تم تشكيل مجتمع متميز حوله ، والذي سرعان ما أصبح موضع حسد منا جميعًا. أصر فريقنا بعناد على الحصول على ترخيص مجاني لـ Roslyn - وأخيرًا ، سمحت البنية التحتية للشركات بذلك.

بحلول عام 2012 ، أنشأت Microsoft مؤسسة Microsoft Open Tech ، والتي تركز بشكل خاص على المشاريع مفتوحة المصدر. دخلت روسلين تحت جناحها وأصبحت رسميًا مشروعًا مفتوح المصدر. كان روسلين ناضجًا جدًا لهذا: كانت جميع موارد التنمية داخلية ومعروفة جيدًا ، ولم يعاني المشروع نفسه من عدد كبير من التبعيات التي يمكن أن تؤدي إلى تضارب في التراخيص.

في أبريل 2014 ، في مؤتمر Build Developers Conference في سان فرانسيسكو ، قدم Anders Halesberg Roslyn كمشروع مفتوح المصدر ، وتم نشر رمز المصدر نفسه في 3 أبريل على CodePlex (منصة Microsoft السابقة للمستودعات) بموجب ترخيص Apache 2.0.



في الوقت نفسه ، تم الإعلان عن أن .NET Foundation هي الأساس لمشاريع .NET ، بما في ذلك Roslyn.

أصبح هذا الإصدار نفسا حقيقيا للهواء النقي! بدأنا في جني فوائد الانفتاح بالفعل في CodePlex ، ثم تمت إزالة العوائق الإجرائية المتبقية أمام المصادر المفتوحة في Microsoft ، لذلك تعد المصادر المفتوحة اليوم جزءًا طبيعيًا ومتكاملاً لكيفية عملنا في العديد من فرقنا.

لم نعد نرى GitHub كمكان لنشر شفرة المصدر - إنه فقط المكان الذي نعمل فيه.

على جبهات أخرى ، أدركت الشركة أيضًا أنه ليس من الضروري السعي للسيطرة على كل شيء. أصبح من الواضح أنه لم يكن هناك سبب وجيه لوجود CodePlex - ورحل روسلين ، إلى جانب المشاريع الأخرى ، إلى GitHub ، بحلول ذلك الوقت الموقع الرئيسي الفعلي لمشاريع مفتوحة المصدر. ليس فقط الكود نفسه ، ولكن يتم أيضًا إجراء عملية إنشائه في GitHub: لم نعد نعتبر GitHub كمكان لنشر أكواد المصدر - هذا هو مكان عملنا فقط.



إن تصميم لغة C # وتنفيذ المترجم هي الآن عمليات مفتوحة تمامًا ، بمشاركة كبيرة من طرف ثالث. يخلقون بما في ذلك وظائف اللغة بأكملها. تتدحرج قيمة C # ببساطة ليس فقط بسبب توسيع نطاق الجهود في كتابة الوظائف وإصلاح الأخطاء ، ولكن أيضًا بسبب فهم وتصحيح الدورة التدريبية التي ننتجها بفضل حلقة التغذية الراجعة اليومية الفورية مع المجتمع.

لقد كانت رحلة طويلة ومجنونة ، وبالنسبة لي ترمز إلى التغييرات الهائلة التي مرت بها Microsoft في العقد الماضي. وُلدت Roslyn Nugget في الظلام ، لكنها نشأت على أفكار الانفتاح - وانفجرت اليوم في مليون استخدامات مختلفة بفضل قوة المصادر المفتوحة.

تعلم Roslyn و C # تصميم اللغة:

روزلين على جيثب
C # على جيثب

Source: https://habr.com/ru/post/ar426961/


All Articles