برمجة الريفت
مقدمة
الكمبيوتر هو واحد من أكثر الهدايا الرائعة من العلم. وقد تم تطوير هذا الجهاز في الأصل من قبل تشارلز باباج. وقد نهضدة معظم البلدان سريعا بسبب الحوسبة. سنتحث فى هذا العدد عن تاريخ الكمبيوتر و البرمجة بصورة مختصرة و ذلك لتدعيم المعنى ل Revit API.
ما هو تاريخ البرمجة
نقلا عن عدة مصادر
ﺗﺎرﻳﺦ اﻟـ . NET ﻣﻨﺬ ﺑﺪاﻳﺔ ﺻﻨﺎﻋﺔ اﻟﺤﺎﺳﻮب :
فى بدايه مرحلة صناعة الحاسوب قام العلماء ﺑﺘـﺼﻤﻴﻢ ً ﻣﻦ اﻟﻨﻮع اﻟﻜﺒﻴﺮ و كانت نتيجة التصميم ﺟﻬﺎز ﺿﺨﻢ إﺣﺘﻮى ﻋﻠﻰ ٥ طوابق تقريبا. و كاﻧﺖ ﻓﻜﺮة إﻧﺸﺎء ﺟﻬﺎز ﺣﺎﺳﺐ ﺁﻟﻲ ﻗﺪ ﻧﺘﺠﺖ إﺛﺮ ﺿﺨﺎﻣﺔ اﻟﻤﻌﻠﻮﻣﺎت و للتطوير من ﻃﺮﻳﻘﺔ اﻟﻜﺘﺎﺑﺔ ﻋﻠﻰ اﻟﻮرق ومن ثم توفير اﻟﻮﻗﺖ اﻟﻜﺒﻴﺮ ﻟﻠﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ اﻷرﺑﻌﺔ. فكاﻧﺖ اﻟﻌﻤﻠﻴﺎت اﻷﺳﺎﺳﻴﺔ ﻟﻠﺤﺎﺳﻮب ﺗﺒﺮﻣﺞ ﻋﻦ ﻃﺮﻳﻖ اﻟﻠﻐﺔ اﻟﺜﻨﺎﺋﻴﺔ 0,1 (Binary) ﻷن ﺟﻬـﺎز اﻟﺤﺎﺳـﻮب ﻟـﻢ ﻳﻜﻦ ﻳﻔﻬﻢ ﺳﻮى هﺬﻩ اﻟﻠﻐﺔ . ﺛﻢ ﻇﻬﺮت ﻟﻐﺔ اﻟﺘﺠﻤﻴﻊ اﻟﻤﻌﺮوﻓﺔ ﺑـﺎﻷﺳﻤﺒﻠﻲ . Assembly وكاﻧﺖ IBM ﻣﻦ اﻟﺸﺮكات الرائدة ﻓﻲ هﺬا اﻟﻤﺠﺎل ﺑﺤﻴﺚ كاﻧﺖ ﺗﺼﻤﻢ ﺟﻬﺎز ﺣﺎﺳﺐ ﺁﻟﻲ و ﺗـﻀﻊ ﻓﻴـﻪ ﻧﻈﺎم ﺗﺸﻐﻴﻞ ﺻﻐﻴﺮ Operating System (OS) واﻟﺘﻲ أدت ﻓﻴﻤﺎ ﺑﻌﺪ إﻟـﻰ ﺗﻄـﻮر ﻣـﺼﻄﻠﺢ ﻧﻈـﺎم اﻟﺘﺸﻐﻴﻞ O.S واﻟﺤﺎﺟﺔ إﻟﻰ ﺗﻄﻮﻳﺮﻩ . وﻣﻌﻨﻰ ﻧﻈﺎم اﻟﺘﺸﻐﻴﻞ : هﻮ اﻟﻨﻈﺎم اﻟـﺬي ﻳـﺴﺘﺨﺪم أﺟﻬـﺰة (Hardware) اﻟﻤﻮﺟـﻮدة ﻟـﺪى اﻟﺤﺎﺳـﻮب وﻳﺘﺤﻜﻢ ﺑﻬﺎ ﺑﺤﻴﺚ ﻳﻘﻮم ﺑﺈﺳﺘﻐﻼﻟﻬﺎ ﻟﻠﺤﺼﻮل ﻋﻠﻰ أكبر ﻗﺪر ﻣﻤﻜﻦ ﻣﻦ اﻟﻜﻔﺎءة .
و ﻓﻲ تلك الفترة الزمنية ﻇﻬﺮالعالم Tim Paterson حيث تمكن ﻣﻦ ﺗﻄﻮﻳﺮ وﺗـﺼﻤﻴﻢ ﻧﻈـﺎم ﺗـﺸﻐﻴﻞ ﺧـﺎص ﺑه ﻋﺮف ﺑﺈﺳﻢ DOS. مما ادى الى تبنى شركة IBM ﻧﻈﺎﻣه ﺑﺎﻟﻜﺎﻣﻞ وﻋﻤﻠﺖ ﻋﻠﻰ ﺗﺸﺠﻴﻌه. كان اﻟﻨﻈﺎم ﻳﺪﻋﻰ DOS ﻣﻦ اﻟﺠﻤﻠـﺔ اﻟﻤﺨﺘـﺼﺮة Disk Operating System وﻣﻌﻨﺎهﺎ ﻗﺮص ﻧﻈﺎم اﻟﺘﺸﻐﻴﻞ .
ً وكاﻧﺖ اﻟﺠﻤﻞ و ﻋـﺪد ﺳـﻄﻮر اي برنامج ﻃﻮﻳل جدا و كان اﻟﻌﻤﻞ ﺻﻌﺒﺎ حيث ان اﻟﻤﺒﺮﻣﺞ كان ﻳﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺬاكرة ﻣﺒﺎﺷﺮة ﻣـﻦ ﺧـﻼل وﺿـﻊ وﺟﻤـﻊ وﺣـﺬف ..اﻟـﺦ على سبيل المثال ﻟﻄﺒﺎﻋﺔ كلمة على المبرمج ان يكتب ما بين 15الى 20 ﺳﻄﺮ ﻟﺘﻨﻔﻴﺬ ذﻟﻚ فكان ﻳﺘﻮﺟﺐ ﻋﻠﻰ اﻟﻤﺒﺮﻣﺞ ﻣﻦ إﻳﺠﺎد ﻃﺮﻳﻘﺔ ﺟﺪﻳﺪة ﻟﺘﻮﻓﻴﺮ اﻟﻮﻗﺖ واﻟﺘﻘﻠﻴﻞ ﻣﻦ ﺣﺠﻢ اﻟﺒﺮﻧﺎﻣﺞ. ﻓﻘﺎﻣ العلماء ﺑﺈﺑﺘﻜﺎر ﻃﺮﻳﻘﺔ ﺟﺪﻳﺪة وهﻲ ﻃﺮﻳﻘﺔ اﻟﺪوال Procedure ﺣﻴﺚ ﻗﺎﻣﻮا ﺑﻮﺿﻊ أكثر ﻣﻦ Instruction ﺑﻤﻜﺎن واﺣﺪ ﻓﻘﻂ، وﻣﻦ هﻨﺎ ﻧﺸﺄ ﻣﻔﻬﻮم اﻟﻤﻜﺘﺒﺎت اﻟﺘﻲ ﺗﻀﻢ أكثر ﻣﻦ داﻟﺔ وﺗﻄﻮرت اﻟﺒﺮﻣﺠﺔ ﻓﻌﺮﻓـﺖ ﺑﺈﺳـﻢ Structured Programing وﻣﻌﻨﺎهﺎ اﻟﺒﺮﻣﺠﺔ اﻟﺘﺮكيبية. ومنها ﻃُﻮرت ﻋﺪة ﻟﻐـﺎت ﻣﺜـﻞ COBOL وﻟﻐـﺔ C اﻟﺸﻬﻴﺮة و FORTRON واﻟﺘﻲ ﻋﺮﻓﺖ ﺑﺎﻟﺠﻴﻞ اﻟﺜﺎﻟﺚ ﻟﻠﻐﺎت اﻟﺒﺮﻣﺠﺔ .
كانت ﺷﺮكة أﺑﻴﻞ ﻣﺎكنتوش ﻗﺪ ﻋﻤﻠﺖ ﻋﻠﻰ ﺗﻄﻮﻳﺮ ﻧﻈﺎم ﻓﺮﻳﺪ ﻣﻦ ﻧﻮﻋﻪ ﻓﻘﺪ كـﺎن ﻳـﺴﺘﺨﺪم اﻟـﺼﻮر ﻟﻠﺪﻻﻟﺔ ﻋﻠﻰ اﻷﻋﻤﺎل او مه يعرف ب (GUI – Graphical User Interface) ، ﻓﻘﺎﻣﺖ ﺑﺒﺮﻣﺠﺔ ﺷﻜﻞ اﻟﻤﻠﻒ وﺷﻜﻞ اﻟﻤﺠﻠﺪ …إﻟـﺦ ، وذﻟـﻚ ﺑـﺪل اﻟـﺸﺎﺷﺔ اﻟﺴﻮداء اﻟﺘﻲ كاﻧﺖ ﻣﻌﺮوﻓﺔ ﻓﻲ ذﻟﻚ اﻟﻮﻗﺖ واﻟﻤـﺴﻤﺎة Command Prompt. و من هذا اﻟﻨﻈـﺎم ﺗـﻢ التعرف على تقنية ال Interface و هو يعنى ان يتعامل المستخدم بشكل مباشر مع الكمبيوتر من خلال رسومات.
و فى تلك الاثناء من التفاعل العلمى لتطوير الحاسوب ظهرت شركة SUN و انتجت نظام تشغيل جديد يدعى Linux، و كانت تعتمد على النظان المفتوح Open Source و هو ما يُمكْن المبرمجين من تطوير نظام التشغيل تبعا لمتطلباتهم و دون التقيد بنظام ثابت. و من هنا بدء اﻟﺘﺴﺎﺑﻖ ﻹﻧﺘﺎج النظام التشغيل الكاﻣﻞ بواﺳـﻄﺔ كبرﻳـﺎت اﻟـﺸﺮكات ﻣﺜـﻞ Microsoft وﺷﺮكة Sun و ﺷﺮكة Apple Macintosh و ﺸﺮكات ﻜﺒﺮى اخرى .
شعرت شركة ميكروسوفت بعجزها و بتنحيها عن السوق فإبتكرت فكرة التطبيقات Application و هو تحويل الواجه السوداء التى كانت فى نظام DOS الى اشكال و رسومات و كانت اول بداية لظهور برنامج Windows 3.1 و كانت وقتها تطبيق و ليس نظام بمعنى مشابه برنامج ريفيت هو تطبيق على نظام Windows
مما ادى الى اﻟﺤﺎﺟﺔ ﻟﺘﻮﺣﻴﺪ ﻃﺮﻳﻘﺔ اﻟﺒﺮﻣﺠﺔ ﻟﺪى اﻟﻤﺒﺮﻣﺠﻴﻦ ﻟﻜﻲ ﻳﻜﻮن اﻟﻜـﻮد دﻳﻨـﺎﻣﻴﻜﻲ وﺳـﻠﺲ وﻟـﻪ ﻗﻮاﻋﺪ وﺷﺮوط، وﻟﻜﻲ ﻻ ﻳﺨﺮج كل ﻣﺼﻤﻢ ﺑﺄﻓﻜـﺎر ﺑﻌﻴـﺪة ﻋـﻦ اﻟﻬـﺪف اﻟﻤﻘـﺼﻮد ﻓﻈﻬـﺮ ﻣﻔﻬـﻮم OPP – Object Oriented Programming و هو بمعنى مشابه- تعددت اللغات و النحو ثابت.
إذن فما هى العلاقة بين برمجة الريفت و لغة البرمجة:
API هى إختصار Application Programming Interface. اي البرمجية التطبيقية بمعنى انك يمكنك ان تصدر بعض الاوامر لتطبيق ما ليقوم بعمل شيء معين و لذا فهى تتيح للآخرين التواصل مع التطبيق “Revit” من خلال أيّ آلية أخرى. على سبيل المثال حينما تقوم برسم ٤ حوائط متصلة يتطلب من المستخدم خلق غرفة عن طريق “Rooms” و لكن ممكن ب API ان تأمر الريفت ان يخلق غرفة بشكل تلقائى بعد الانتهاء من تكوين فراغ…
و لكى تأمر الريفت بالقيام بتلك الوظيفة يتطلب التخاطب مع الريفت بلغة ما… و ذكرت لغة ما لأن كما ذكرت سابقا نظام ال OOP يتيح التخاطب للأله بأي لغة. فى الحقيقة فإن تلك اللغات هى ترجمة لل Binary Code لكى يكون من السهل على المبرمج فهم ما يكتبه و ما ستقوم به الالة.
و بعد كتابة البرنامج يتم تحويل تلك الغة الى لغة وسيطة (CIL – Common Intermediate Language) و هذا التحويل يسمى Compiling. وهناك برامج عديدة تقوم بتلك الوظيفة و أشهرها برنامج Visual Studio و NetBeans و Eclips حيث يكون المنتج فى صورة DLL او EXE و بعد ذلك يتم تحويلها للغة Binary و تسمى تلك المرحلة (CLR – Common Language RunTime) و هى لغة الاله الاساسية يتم تكونها داخل ال Revit اثناء تشغيل البرنامج.
ولكن لكى تستطيع ان تكتب برنامج يفهمه ال Revit اتاحة شركة Autodesk امكانية التدخل فى إطار محدد لبرنامج Revit و تدعيمة بتطبيقات من قبل مستخدميها. و بدون ذلك لكان من المستحيل كتابة اي برنامج تطبيقى للريفيت. و اقصد بإطار برنامج محدد لبرنامج Revit انه متاح لك بعمل وظائف تطبيقية معينة على سبيل المثال لا يمكن عن طريق API تخليق Ceiling و لكن ممكن تخليق حوائط. بإختصار شديد Revit API هو واجهة برمجية للجوهر الرئيسى لبرنامج Revit
أتمنى اكون قد أفدتكم بتلك النبذة الخفيفة عن Revit API
لتعلم لغة ال C#
http://www.microsoftvirtualacademy.com/training-topics/c-app-development#?fbid=Q3dsLtYd9BS
http://www.dotnetperls.com/
لتعلم RevitAPI
http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=16777469
http://boostyourbim.wordpress.com/
http://thebuildingcoder.typepad.com/blog/2013/04/getting-started-with-the-revit-api.html
تحياتى
م/مصطفى خليل
http://moustafakh.wordpress.com