هذا على الاقل جزء من النص الذي باكتبه في الكتاب الجديد لبناء التطبيقات بواسطة سي شارب، قد يتغير قليلا لاحقا
--------------
تاريخ تطور لغة سي شارب C#
لغة سي شارب هي لغة حديثة نسبياً، فلقد سجلتها مايكروسوفت و شركات أخرى بصورة رسمية كأحد المواصفات العامة في ECMA في نهاية عام 2001، و لكن مع ذلك هي لغة برمجة ورثت لغات عريقة أخرى مثل سي و سي++.
ظهرت لغة سي C لأول مرة في عام 1978، و منذ أول ظهورها الأول جذبت إليها الكثير من المبرمجين، فالأفكار التي تضمنتها و الطريقة التي عرضت بها برمجة الكومبيوتر ساعدت كثيرا في علمية تطور البرمجيات.
لغة سي التي نعرفها اليوم تختلف طبعا عن أول إصدار لها عام 1978، فلقد أدخلت تغيرات كثيرة عليها منذ ذلك الوقت، اعتمده هذه اللغة من الكثير من الشركات، و تلك الشركات غيرت بها قليلا لتتماشى مع أنظمتها.
في عام 1983 قامت ANSI، اختصار ل American National Standards Institute بتشكيل هيئة لوضع أول مواصفات موحدة لهذه اللغة، و في عام 1988 أنهت اللجنة المواصفات الموحدة و التي يستخدم جزء كبير منها في مترجمات السي اليوم.
لغة سي هي لغة معتمدة على تقسيم الكود في قطاعات منفصلة تسمى أوامر أو إجراءات، و من هناك يأتي لقبها كلغة إجرائية، أي كل قطعة من الكود يمكنها الاتصال بالقطعة الأخرى و تمرير القيم إليها، و لكن لا أكثر من ذلك.
في منتصف الثمانينات ظهرت فكرة تطبيق الكائنات في لغة سي، البرمجة بواسطة الكائنات هي فكرة قديمة و وجدت في بعض لغات البرمجة في ذلك الوقت، و فكرتها أن يقسم الكود في إجراءات، و تلك الإجراءات تجمع معا في كائنات، و بالفعل طبقت لأول مرة في يناير 1989 و ظهرت يومها لغة سي++.
اشتهرت في تلك الفترة لغة سي و سي++ كأفضل لغات البرمجة، الكثير من الطلاب في الجامعات يتعلمونها، الكثير من النظم بنيت بواسطتها، و هناك العديد من المبرمجين الذين اتجهوا لبناء تطبيقاتهم بواسطتها.
طوال الثمانينات و حتى النصف الأول من التسعينات كانت سي و سي++ اللغات الأساسية لبناء التطبيقات، حيث معظم التطبيقات كان يتم بنائها في نظام التشغيل DOS و Unix و نظم التشغيل المشابهة الأخرى، البرمجة لنظم التشغيل هذه لم تكن بالمعقدة مثلما هي البرمجة لنظام Windows ب سي المجردة اليوم، بالطبع ليس من السهل أن تصبح مبرمج سي++ و لكن عندما تصبح كذلك فأنت قادر على بناء مختلف البرامج.
مع ظهور Microsoft Windows و اللغات الأسهل مثل Visual Basic و Borland Delphi و غيرها، و مع صعوبة بناء البرامج ل Windows بواسطة سي++، اتجه الكثير من المبرمجين إلى لغات البرمجة الجديدة لبناء تطبيقاتهم، أعداد المبرمجين المتجهين إلى تلك اللغات ازدادت لاحقا خصوصا مع تطور النظم الموجودة و تطور نظم قواعد البيانات، و ظهور البرمجة لانترنت لاحقا.
معظم لغات البرمجة السابقة و مع شدة تطورها لم تتمكن من الوصول إلى الإمكانيات التي تقدمها لغة سي++، لذلك بقيت عملية بناء نظم التشغيل، محركات قواعد البيانات، و البرامج الكبيرة مقتصرة على سي++، أما باقي البرامج فتم بنائها باللغات الجديدة التي ظهرت.
عام 1995 و 1996 اشتهرت كثيرا تكنولوجيا أخرى عبر انترنت، و هي Sun Java، جافا هي لغة مبنية بشكل يشبه كثيرا لغة سي، مع أنها تختلف كثيرا في كل الأمور الأخرى، و لكن بعض الأوامر الأساسية مشابهة جدا ل سي، إضافة إلى سهولة استخدامها و الذي جذب إليها مجموعة هائلة من المبرمجين.
معظم من كان غير قادر على تعلم سي++ و استخدامها اتجه إلى جافا، محاولا الحصول إلى بعض من القوة التي توفرها سي++، للأسف جافا تشبه سي في الأوامر الأساسية فقط، حتى ليس جميعها، و لكن من الداخل تلك التكنولوجيا مختلفة جدا، مع انه بعض القراء قد لا يوافقوني في ذلك.
سي و سي++ قد تظهر كلغة برمجة للكثير من المبرمجين المبتدئين، مع بعض الغموض في بعض الأوامر بالداخل، و لكن لمن تعمق بها سوف يجد أنها ليس سوى لغة آلة مركبة، هي مجموعة بسيط جدا من الأوامر، التي تستبدل بكود لغة آلة لحظة التنفيذ، معتمدة على مكتبات أوامر مبنية بلغة الآلة، و أوامر أخرى توجه للمترجم لحظة ترجمة البرنامج.
الطريقة التي تعمل بها سي تختلف عن كل اللغات الأخرى، أما جافا فلم تكن كذلك، فهي بيئة تشغيل تطبيقات على منصات مختلفة تستخدم أوامر شبيهة في البنية من تلك الأوامر المستخدمة في لغة سي و سي++.
مايكروسوفت راءت في جافا لغة ممكن استخدامها لتطوير التطبيقات بصورة أسهل لنظام Windows، و انضمت إلى الشركات التي رخصت تلك اللغة و اعتمدتها في نظم تشغيلها و إضافات أمور جديدة إليها مثل مترجم JIT اختصار ل Just in-Time Compiler و الذي استخدمت فكرته Sun لاحقا.
في عام 1997 و عام 1998 أصدرت مايكروسوفت نسخ محسنة من جافا مخصصة لبرمجة النظام Windows تلك النسخ سميت Microsoft Visual J++ و آخر إصدار منها كان الإصدار السادس، Visual J++ هي لغة برمجة تستخدم كود جافا و تنتج تطبيقات تعمل في بيئة Windows مستفيدة من كل إمكانياتها، و تحول أجزاء كثيرة من الكود إلى أوامر API مباشرة إلى Windows لتعمل هذه اللغة بصورة أسرع بكثير من نسخ جافا الأخرى.
من ناحية أخرى التعديل في جافا بهذه الطريقة أدى إلى عدم عمل البرامج الناتجة من مايكروسوفت جافا في منصات تشغيل جافا الأخرى، و الذي انتهى بمحكمة بين Sun Microsystems و مايكروسوفت، و منع مايكروسوفت من إضافة تطويرات إضافية إلى لغة جافا و دفع تعويضات هائلة إلى شركة Sun.
اهتمت فرق التطوير في مايكروسوفت لاحقا في تحسين Microsoft Windows و النظم الأخرى المبنية عليه، و بدئت بدراسات مكثفة حول بناء نظام برمجة جديد يمكنه إيجاد طريقة موحدة للبرمجة على هذا النظام، و الاستفادة منه بقدر المستطاع، كما حاولت الدراسات بناء نظام يمكنه الاستفادة من لغة سي الحالية و لا يختلف عنها كثيرا، إضافة إلى دعمه للغات مايكروسوفت الأخرى مثل Visual Basic.
في عام 1999 بدئت فرق التطوير ببناء نواة تكنولوجيا جديدة سميت لاحقاً ب Microsoft .NET، تكنولوجيا تجمع بداخلها نظام Microsoft Windows في مجموعة هائلة من الكائنات، و تنظمها بحيث يسهل بناء التطبيقات لهذا النظام، كما تسهل عملية بناء التطبيقات لانترنت أيضا.
المشكلة الأساسية التي واجهت فريق التطوير كانت كيفية إيجاد لغة برمجة تشبه لغة سي++ من ناحية، و يمكن استخدامها في بيئة تطوير التطبيقات المرئية Visual Studio .NET بدون مشاكل من ناحية أخرى، لغة سي++ الحالية و مع أنها موجودة ضمن حزمة Visual Studio إلا أن مايكروسوفت غير قادرة بحسب هيكلية اللغة الحالية أن تصنع نظام لبناء البرامج يشبه بعمله النظام الذي يستخدمه Visual Basic مثلا، بالطبع العملية ليست غير ممكنة و لكنها صعبة جدا و لن تحل الكثير من المشاكل الأخرى.
من ناحية أخرى بناء لغة برمجة جديدة تعمل على غرار لغة سي الأصلية (كما أحب تسميتها لغة الآلة المركبة) يتطلب بوجود لغة آلة أكثر تطورا، و بكلمات أخرى على شركات صناعة المعالجات بناء معالجات أكثر تقدما، و هذا أيضا غير ممكن في الوقت الحالي، ربما الشركات سوف تحتاج إلى 10 أو 15 عاما للوصول إلى لغة آلة بالتطور التي ترغب به مايكروسوفت.
في نفس الوقت أظهرت دراسات إضافية بان المعالج Intel Pentium و معالجات AMD أيضا العاملة بتقنية 32 بت لن تتمكن من العمل مع أجهزة الكومبيوتر الأكثر تقدما، و اقصد هنا بالضبط مسألة معالجة الذاكرة، فتلك المعالجات صممت على أساس تكنولوجيا ابتكرت عام 1985 و اقتربت من الحد النهائي لإمكانياتها.
عملية تحديث المعالجات بمعالجات أخرى بتقنية 64 بت قد تعني بان البرامج يجب أن يتم بنائها مرتين، مرة للمعالجات العاملة بتقنية 32 بت و مر أخرى لتلك العاملة بتقنية 64 بت، هذا غير الاختلافات في نفس المعالج ما بين Intel و AMD و التي بدئت تظهر بوضوح و التي سوف تؤدي إلى الحاجة لبناء البرامج نفسها مرات عديدة لكل نوع من المعالجات.
لذلك قررت مايكروسوفت ببناء طبقة بسيطة ثالثة سميت بلغة الآلة الافتراضية، أو MSIL اختصار ل Microsoft Intermediate Language و التي سوف تقف ما بين لغة الآلة الخاصة بالمعالج و بين اللغات الحديثة لبناء البرامج و البرامج نفسها لاحقا.
بهذه الطبقة الثالثة تحررت أيدي مايكروسوفت في تطوير لغة سي مرة أخرى، على غرار سي++ و لغة الآلة الفعلية، أنتجت مايكروسوفت سي شارب، و التي لو انتبهتم أكثر لها فهي ليست إلا لغة آلة مركبة تنتج تعليمات MSIL بدلا من تعليمات للمعالج مباشرة، و من ثم الطبقة الوسطى تترجم تلك التعليمات إلى تعليمات مخصصة للمعالج في الجهاز.
الكثير يعتقد مخطئا بان سي شارب و MSIL هي شيء مشابه للغة جافا و أل Java Byte Codes التي تترجم لها، و لكن لمن سوف يتعمق في لغة سي شارب سوف يجد بأنه لا إمكانية حتى للمقارنة، فلغة سي شارب و MSIL و نواة .نت هي تكنولوجيا متقدمة متطورة، و منصة رائعة لبناء و تشغيل التطبيقات.
في عام 2001 أنهت مايكروسوفت دعمها للغة جافا في Windows، و الذي أدى إلى مشاكل بينها و بين Sun Microsystems، و لكنها لم تقم بمنع Sun من بناء جافا ل Windows كما اعتقد البعض، بل هي لا ترغب بان تنفق أموال أكثر من اجل جافا، لذلك تركت بناء جافا على شركة Sun لوحدها، و هناك الآن نسخ من جافا من شركة Sun ل Microsoft Windows يمكنها الاتصال بالمتصفح الخاص بمايكروسوفت أيضا.
اليوم مايكروسوفت سي شارب تربع على قمة عرش بناء البرامج، كلغة برمجة متقدمة قوية كثيرة الإمكانيات، قادرة على المناورة بشكل لا يتوفر للغات الأخرى بداخل بيئة Microsoft .NET، كما يمكنها الوصول إلى موارد الجهاز الأولية عبر نواة نظام التشغيل نفسه متخطية بذلك نواة .نت، لغة سوف تستخدم لبناء برامج المستقبل.