بليتز بيسك

لغة Blitz BASIC هي لهجة من لغة البرمجة المستخدمة في مُجمِّعات Blitz الأولى [ 1 ] ، والتي ابتكرها المطور النيوزيلندي مارك سيبل. ونظرًا لاشتقاقها من لغة BASIC ، فقد صُممت بنية Blitz لتكون سهلة التعلم للمبتدئين في البرمجة. تُركز هذه اللغات على برمجة الألعاب، ولكنها غالبًا ما تكون عامة بما يكفي لاستخدامها في معظم أنواع التطبيقات. تطورت لغة Blitz مع إصدار منتجات جديدة، حيث قدمت الإصدارات الحديثة دعمًا لتقنيات برمجة أكثر تقدمًا مثل البرمجة الكائنية والبرمجة متعددة الخيوط . وقد أدى ذلك إلى فقدان اللغات لاسم BASIC في السنوات اللاحقة. [ 2 ]

تاريخ

أُنشئت النسخة الأولى من لغة Blitz لمنصة Amiga ونُشرت بواسطة شركة Memory and Storage Technology الأسترالية . بعد عودتها إلى نيوزيلندا ، نُشرت Blitz BASIC 2 بعد عدة سنوات (حوالي عام 1993 وفقًا لهذا البيان الصحفي [ 3 ] ) بواسطة Acid Software، وهي شركة نشر ألعاب Amiga محلية. ومنذ ذلك الحين، صدرت مُجمّعات Blitz على العديد من المنصات . بعد توقف Amiga عن كونها منصة تجارية ناجحة، أُتيحت شفرة المصدر لـ Blitz BASIC 2 لمجتمع Amiga. ويستمر تطويرها حتى يومنا هذا تحت اسم AmiBlitz. [ 4 ]

بليتز بيسك

نشرت شركة Idigicon لغة BlitzBasic لنظام التشغيل Microsoft Windows في أكتوبر 2000. تضمنت اللغة واجهة برمجة تطبيقات مدمجة لإجراء عمليات أساسية على الرسومات ثنائية الأبعاد والصوت. بعد إصدار Blitz3D، أصبح يُشار إلى BlitzBasic غالبًا باسم Blitz2D.

ازدادت شهرة لغة BlitzBasic عندما تم توزيع مجموعة محدودة من النسخ "المجانية" في مجلات الكمبيوتر البريطانية الشهيرة مثل PC Format . وقد أدى ذلك إلى نزاع قانوني بين المطور والناشر، والذي تم حله في النهاية ودياً.

بليتز بلس

في فبراير 2003، أصدرت شركة Blitz Research Ltd. برنامج BlitzPlus لنظام التشغيل Windows أيضًا. افتقر البرنامج إلى محرك الرسومات ثلاثية الأبعاد الموجود في Blitz3D، ولكنه أضاف ميزات جديدة إلى جانب الرسومات ثنائية الأبعاد من خلال دعم محدود لعناصر تحكم Windows لإنشاء واجهات مستخدم رسومية أصلية . كما تم توسيع نطاق التوافق مع الإصدارات السابقة لمحرك الرسومات ثنائية الأبعاد، مما يسمح بتشغيل ألعاب وتطبيقات BlitzPlus المُجمّعة على أنظمة قد لا تدعم سوى DirectX 1.

بليتز ماكس

صدر أول مُجمِّع BlitzMax في ديسمبر 2004 لنظام التشغيل Mac OS X ، مما جعله أول لهجة من لغة Blitz قابلة للتجميع على منصات *nix. ثم صدرت مُجمِّعات لأنظمة Microsoft Windows و Linux في مايو 2005. أحدث BlitzMax أكبر تغيير في بنية لغة Blitz الحديثة، وذلك بتوسيع نظام الأنواع ليشمل مفاهيم البرمجة الكائنية، وتعديل واجهة برمجة التطبيقات الرسومية لتتوافق بشكل أفضل مع OpenGL . كما كان BlitzMax أول لغة من لغات Blitz تُمثِّل السلاسل النصية داخليًا باستخدام UCS-2 ، مما أتاح دعمًا أصليًا للسلاسل النصية المكونة من أحرف غير ASCII .

تتيح مجموعة أوامر BlitzMax، المستقلة عن المنصة، للمطورين تجميع وتشغيل شفرة المصدر على منصات متعددة. مع ذلك، فإن المُجمِّع الرسمي وسلسلة البناء لا يُنتجان إلا ملفات تنفيذية للمنصة التي يُنفَّذ عليها. وبشكل غير رسمي، تمكن المستخدمون من جعل أنظمة Linux وMac OS X تُجمِّع الشفرة المصدرية لمنصة Windows.

يُعدّ BlitzMax أول إصدار معياري من لغات Blitz، مما يُحسّن من قابلية توسيع مجموعة الأوامر. إضافةً إلى ذلك، فإن جميع الوحدات النمطية القياسية المُضمّنة مع المُصرّف مفتوحة المصدر، وبالتالي يُمكن للمبرمج تعديلها وإعادة تجميعها عند الحاجة. تُمكّن وحدة واجهة المستخدم الرسومية الرسمية متعددة المنصات في BlitzMax (المعروفة باسم MaxGUI) المُطوّرين من كتابة واجهات مستخدم رسومية لتطبيقاتهم على أنظمة Linux ( FLTK ) وMac ( Cocoa ) وWindows. تُوسّع العديد من الوحدات النمطية التي ساهم بها المستخدمون استخدام اللغة من خلال تغليف مكتبات مثل wxWidgets و Cairo و Fontconfig ، بالإضافة إلى مجموعة مختارة من وحدات قواعد البيانات. كما تتوفر مجموعة مختارة من وحدات ثلاثية الأبعاد من جهات خارجية، وتحديدًا MiniB3D [ 5 ] - وهو مُحرّك OpenGL مفتوح المصدر يُمكن تجميعه واستخدامه على جميع المنصات الثلاث التي يدعمها BlitzMax.

في أكتوبر 2007، صدرت النسخة 1.26 من برنامج BlitzMax، والتي تضمنت إضافة وحدة انعكاس . [ 6 ] وجاءت النسخة 1.32 من BlitzMax مزودة بوحدات جديدة للخيوط البرمجية ووحدات برمجة Lua ، كما تم تحديث معظم وظائف المكتبة القياسية لتتوافق مع ترميز Unicode . [ 7 ]

مجموعة تطوير البرامج Blitz3D

Blitz3D SDK هو محرك رسومات ثلاثية الأبعاد مبني على محرك Blitz3D. تم تسويقه للاستخدام مع C++ و C# و BlitzMax و PureBasic ، ولكن يمكن استخدامه أيضًا مع لغات أخرى تتبع اصطلاحات استدعاء متوافقة.

وحدة Max3D

في عام 2008، تم إصدار الشفرة المصدرية لمحرك Max3D - وهو محرك ثلاثي الأبعاد متعدد المنصات قائم على لغة C++ - بموجب ترخيص BSD . ركز هذا المحرك على OpenGL ولكنه كان يحتوي على واجهة خلفية مجردة لبرامج تشغيل الرسومات الأخرى (مثل DirectX) واستخدم العديد من المكتبات مفتوحة المصدر، وهي Assimp و Boost و ODE .

على الرغم من الحماس الذي ساد مجتمع مطوري Blitz تجاه Max3D باعتباره خليفة Blitz3D المنتظر بشغف، إلا أن الاهتمام والدعم تراجعا بعد فترة وجيزة من إصدار الكود المصدري، وتوقف التطوير نهائيًا. ولا توجد أي مؤشرات على أن شركة Blitz Research ستستأنف المشروع.

إصدار مفتوح المصدر

تم إصدار برنامج BlitzPlus كمصدر مفتوح في 28 أبريل 2014 بموجب ترخيص zlib على منصة GitHub . [ 8 ] [ 9 ] تبعه برنامج Blitz3D بعد ذلك بوقت قصير، وتم إصداره كمصدر مفتوح في 3 أغسطس 2014. [ 10 ] [ 11 ] ثم تم إصدار برنامج BlitzMax كمصدر مفتوح في 21 سبتمبر 2015. [ 12 ]

استقبال

حظيت لغة البرمجة Blitz Basic 2.1 باستحسان مجلات Amiga. فقد سلطت مجلة CU Amiga الضوء على قدرتها على إنشاء تطبيقات وألعاب متوافقة مع نظام AmigaOS (على عكس AMOS Basic ) [ 13 ] ، ووصفتها مجلة Amiga Shopper بأنها لغة برمجة قوية. [ 14 ]

أمثلة

برنامج "مرحباً بالعالم!" يقوم بطباعة نص على الشاشة، وينتظر حتى يتم الضغط على مفتاح، ثم يتوقف:

اطبع "مرحباً بالعالم!" ؛ يطبع على الشاشة. انتظر مفتاحًا () ؛ يوقف التنفيذ مؤقتًا حتى يتم الضغط على مفتاح. أنهِ ؛ ينهي البرنامج.

برنامج يوضح كيفية تعريف المتغيرات باستخدام أنواع البيانات الرئيسية الثلاثة ( السلاسل النصية ، والأعداد الصحيحة، والأعداد العشرية ) وطباعتها على الشاشة:

name $ = "John" ; أنشئ متغيرًا نصيًا ($) age = 36 ; أنشئ متغيرًا عدديًا (بدون لاحقة) temperature # = 27.3 ; أنشئ متغيرًا عشريًا (#)اطبع "اسمي هو " + name $ + " وعمري " + age + " سنة." اطبع "درجة الحرارة اليوم هي " + temperature # + " درجة."Waitkey () ؛ يُوقف التنفيذ مؤقتًا حتى يتم الضغط على مفتاح. End ؛ يُنهي البرنامج.

برنامج يُنشئ تطبيقًا بنافذة يعرض الوقت الحالي بالصيغة الثنائية والعشرية. انظر أدناه لإصداري BlitzMax وBlitzBasic:

إصدار BlitzBasicإصدار BlitzMax
عنوان التطبيق "ساعة ثنائية" الرسومات 150 ، 80 ، 16 ، 3أنشئ مؤقتًا بحيث يتم تنفيذ الحلقة الرئيسية مرتين في الثانية: `secondtimer = CreateTimer ( 2 )` ، ثم كرر العملية: `Hour = Left ( CurrentTime $ (), 2 )` ، ` Minute = Mid ( CurrentTime $ (), 4 , 2 )` ، ` Second = Right ( CurrentTime $ (), 2 )` .إذا كانت الساعة 12، فإن PM = 1. إذا كانت الساعة > 12 ، فإن الساعة = الساعة - 12. إذا كانت الساعة = 0 ، فإن الساعة = 12.ينبغي فعل ذلك، وإلا ستبقى علامة PM مرفوعة بعد منتصف الليل!Color ( 0 , 255 , 0 ) ; اجعل لون النص أخضر لجزء PM. If PM = 1 Then Text 5 , 5 , "PM" ; أعد لون النص إلى الأبيض لبقية النص. Color ( 255 , 255 , 255 )من أجل بت = 0 إلى يكون xpos = 20 * ( 6 - بت والقناع الثنائي = 2 ^ بتإذا كانت قيمة البت أقل من 4 ، وإذا كانت قيمة الساعة وقناعها ثنائيًا، فسيتم تنفيذ ما يلي: `text xpos , 5 , "1"` ، وإلا فسيتم تنفيذ ما يلي: `text xpos , 5 , "0"`.نفّذ الدقائق إذا ( كانت الدقيقة و binaryMask ) نص xpos ، 25 ، "1" وإلا نص xpos ، 25 ، "0" نهاية الشرطنفّذ الثواني إذا ( كانت الثانية و binaryMask ) نص xpos ، 45 ، "1" وإلا نص xpos ، 45 ، "0" نهاية الشرط التالياجعل لون النص أحمر للوقت العشري Color ( 255 , 0 , 0 ) Text 5 , 65 , "العشري: " + CurrentTime $ () ; أعد لون النص إلى الأبيض لبقية الوقت Color ( 255 , 255 , 255 )سينتظر نصف ثانية ( مؤقت الانتظار )للأبد
استيراد BRL.Timer استيراد BRL.TimerDefault AppTitle = "Binary Clock" Graphics 145 , 85أنشئ مؤقتًا بحيث يتم تنفيذ الحلقة الرئيسية مرتين في الثانية. متغير محلي : `secondtimer : TTimer = CreateTimer ( 2 )` ، متغير محلي : ` Hour : Int` ، متغير محلي: `Mine: Int`، متغير محلي : `Second: Int` ، متغير محلي : `PM : Int` ، متغير محلي : ` bit : Int` ، متغير محلي : ` xpos : Int` ، متغير محلي : ` binaryMask : Int`تكرار الساعة = الوقت الحالي ()[. .2 ] . ToInt () الدقيقة = الوقت الحالي ()[ 4 . .6 ] . ToInt () الثانية = الوقت الحالي ()[ 6 . . ] . ToInt ()IfHour>=12ThenPM=1IfHour>12ThenHour=Hour-12IfHour=0ThenHour=12'should do this otherwise the PM dot will be'Left up once the clock rolls past midnight!ClsSetColor(0,255,0)'make the text green For the PM partIfPM=1ThenDrawText"PM",5,5'set the text colour back To white For the restSetColor(255,255,255)Forbit=0Until6xpos=20*(6-bit)binaryMask=2^bit'do hoursIf(bit<4)If(hour&binaryMask)DrawText"1",xpos,5ElseDrawText"0",xpos,5EndIfEndIf'do the minutesIf(minute&binaryMask)DrawText"1",xpos,25ElseDrawText"0",xpos,25EndIf'do the secondsIf(second&binaryMask)DrawText"1",xpos,45ElseDrawText"0",xpos,45EndIfNext'make the text red For the decimal timeSetColor(255,0,0)DrawText"Decimal: "+CurrentTime(),5,65'set the text back To white For the restSetColor(255,255,255)Flipسينتظر البرنامج نصف ثانية ( مؤقت الانتظار ( secondTimer )) . إذا تم الضغط على مفتاح الهروب ( KEY_ESCAPE ) ، فسيتم الخروج نهائيًا.

برنامج مكتوب باستخدام لغة BlitzBasic

  • إيشالون: الكتاب الأول - بليتز ماكس
  • إسشالون: الكتاب الثاني – بليتزماكس
  • لعبة سوليتير فيروي - بليتز ماكس
  • حروب الشبكة - بليتز ماكس
  • TVTower (نسخة مفتوحة المصدر من MadTV) – BlitzMax
  • بلاتيبوس – بليتز2دي (نسخة ماك، بليتزماكس)
  • SCP – خرق الاحتواء – Blitz3D
  • Worms – كان عنوانها الأصلي Total Wormage وتم تطويرها بلغة Blitz Basic على جهاز Amiga قبل إصدارها التجاري [ 15 ]

إرث

في عام 2011، أصدرت شركة BRL لغة برمجة متعددة المنصات تُسمى Monkey، ووحدتها الرسمية الأولى Mojo. تتشابه Monkey في تركيبها اللغوي مع BlitzMax، ولكن بدلاً من الترجمة المباشرة إلى لغة التجميع، تُترجم ملفات Monkey المصدرية مباشرةً إلى شفرة مصدرية للغة أو إطار عمل أو منصة مختارة، مثل Windows و Mac OS X و iOS وAndroid و HTML5 و Adobe Flash .

منذ عام 2015، توقف تطوير Monkey X لصالح Monkey 2، وهي نسخة محدثة من اللغة من تطوير مارك سيبل.

توفي مارك سيبل، مطور لغة Blitz BASIC، في أوائل ديسمبر 2024. [ 16 ] [ 17 ]

مراجع

  1. كلمة " Blitz " تعني "البرق" باللغة الألمانية.
  2. "الموقع الرسمي لـ Blitz" . blitzresearch.itch.io/ . مؤرشف من الأصل في 3 يونيو 2017.
  3. "Blitz Basic 2" . AmigaReport . مؤرشف من الأصل في 31 مارس 2022. تم الاطلاع عليه في 30 أبريل 2020 .
  4. "AmiBlitz" . GitHub .
  5. "أخبار بليتز" . www.blitzbasic.com . مؤرشف من الأصل بتاريخ 26 يناير 2008. تم الاطلاع عليه بتاريخ 12 ديسمبر 2007 .
  6. "تحديث BlitzMax 1.26 متوفر الآن!" . www.blitzbasic.com . مؤرشف من الأصل بتاريخ 26 مايو 2011. تم الاطلاع عليه بتاريخ 11 يناير 2011 .
  7. برنامج BlitzMax V132 متوفر الآن لأنظمة ويندوز وماك إنتل! مؤرشف بتاريخ 26 مايو 2011 على موقع Wayback Machine على blitzbasic.com
  8. تم إصدار شفرة المصدر لبرنامج BlitzPlus، وتمت أرشفة هذا المحتوى في 16 يوليو 2016 على موقع Wayback Machine بواسطة simonh (2014-04-29)
  9. تم فتح مصدر Blitz3D! مؤرشف في 6 سبتمبر 2016 على موقع Wayback Machine في منتديات Blitz3D بواسطة (2014)
  10. برنامج Blitz3D الآن مجاني ومفتوح المصدر! مؤرشف بتاريخ 16 يوليو 2016 في Wayback Machine بواسطة simonh (2014-08-03)
  11. blitz3d على GitHub
  12. blitzmax على GitHub
  13. ^ بيتينسون مات (مارس 1996). "بليتز الأساسية 2.1". سي يو أميغا . رقم 73. صور EMAP. ص 69 – 70. ISSN 0963-0090 .   
  14. ^ أوفرا ، بول (أبريل 1996). "بليتز الأساسية 2.1". أميغا المتسوق . رقم 61. النشر المستقبلي. ص. 41. ISSN 0961-7302 .   
  15. IGN. معاينة لعبة Worms Blast مؤرشفة بتاريخ 18 فبراير 2007 على موقع Wayback Machine على ign.com
  16. GCRedditor136 (12 ديسمبر 2024). "مارك سيبل، مبتكر لغة BlitzBasic، قد توفي :(" . r/amiga . تم الاطلاع عليه في 24 مارس 2025 . {{cite web}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط )
  17. "وفاة مارك سيبل (بليتز بيسك)" . Amiga-News.de. 14 ديسمبر 2024. تم الاطلاع عليه بتاريخ 24 مارس 2025 .

للمزيد من القراءة

  • كتاب مطوري NRS للغة Blitz Basic، 1997.
كتاب مطوري NRS، المجلد الأول - صورة غلاف الكتاب
كتاب مطوري NRS، المجلد الأول - صورة غلاف الكتاب