أوبجكت باسكال

Object Pascal هو امتداد للغة البرمجة Pascal يوفر ميزات البرمجة الموجهة للكائنات ( OOP ) مثل الفئات والأساليب .

طُوّرت لغة البرمجة في الأصل من قِبل شركة أبل باسم كلاسكال لنظام تطوير البرمجيات ليزا وركشوب . ومع تحوّل ليزا إلى ماكنتوش ، تعاونت أبل مع نيكلاوس ويرث ، مؤلف لغة باسكال، لتطوير نسخة موحدة رسميًا من كلاسكال، والتي أُعيد تسميتها إلى أوبجكت باسكال. وحتى منتصف ثمانينيات القرن الماضي، كانت أوبجكت باسكال لغة البرمجة الرئيسية للإصدارات الأولى من إطار عمل تطبيقات ماك آب . إلا أن اللغة فقدت مكانتها كلغة التطوير الرئيسية على نظام ماك في عام ١٩٩١ مع إصدار ماك آب ٣.٠ المبني على لغة سي++ . وانتهى الدعم الرسمي لها في عام ١٩٩٦.

طوّرت شركة سيمانتك أيضًا مُترجمًا للغة أوبجكت باسكال لمنتجها ثينك باسكال، والذي كان قادرًا على ترجمة البرامج بسرعة أكبر بكثير من ورشة عمل مبرمجي ماكنتوش (MPW) التابعة لشركة آبل. ثم طوّرت سيمانتك مكتبة فئات ثينك (TCL)، استنادًا إلى مفاهيم ماك آب، والتي يمكن استدعاؤها من كلٍّ من أوبجكت باسكال وثينك سي . وقد حلّت مجموعة ثينك محلّ MPW إلى حدٍّ كبير كمنصة التطوير الرئيسية على نظام ماك في أواخر ثمانينيات القرن الماضي.

قامت شركة سيمانتك بنقل لغة أوبجكت باسكال إلى أجهزة الكمبيوتر الشخصية، وطورت إطار عمل مشابهًا للكائنات على تلك المنصة. وعلى عكس لغة TCL، التي انتقلت لاحقًا إلى لغة C++، ظلت مكتبات الكمبيوتر الشخصي تعتمد بشكل أساسي على لغة باسكال.

أضافت بورلاند دعمًا للبرمجة كائنية التوجه إلى Turbo Pascal 5.5، والذي أصبح فيما بعد أساسًا للغة Object Pascal المستخدمة في Delphi التي ابتكرها أندرس هيلسبرغ . وظلت Delphi لغةً سائدةً لتطبيقات الأعمال على أجهزة الكمبيوتر الشخصية حتى أوائل العقد الأول من القرن الحادي والعشرين، ثم تراجعت شعبيتها جزئيًا في العقد نفسه مع ظهور إطار عمل .NET الذي تضمن لغة C# الخاصة بهيلسبرغ .

تاريخ

أبل باسكال

أصبحت لغة باسكال لغة برمجة رئيسية في عالم البرمجة خلال سبعينيات القرن العشرين، حيث توفرت لها تطبيقات عالية الجودة على معظم منصات الحواسيب الصغيرة والحواسيب الشخصية . ومن بين هذه الأخيرة، كان نظام باسكال التابع لجامعة كاليفورنيا في سان دييغو (UCSD) ، والذي كان يُترجم إلى صيغة وسيطة تُعرف باسم p-System ، والتي يمكن تشغيلها بعد ذلك على منصات متعددة. حصلت شركة آبل على ترخيص من جامعة كاليفورنيا في سان دييغو واستخدمته كأساس لنظام باسكال الخاص بها لأجهزة آبل 2 وآبل 3 .

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

لغة كلاسكال ولغة أوبجكت باسكال من آبل

لغة أوبجكت باسكال هي امتداد للغة باسكال، وقد طُوّرت في شركة أبل للحواسيب بواسطة فريق بقيادة لاري تيسلر بالتشاور مع نيكلاوس ويرث ، مخترع باسكال. [ 2 ] [ 3 ] وهي مشتقة من نسخة سابقة من باسكال موجهة للكائنات تُسمى كلاسكال ، والتي كانت متاحة على حاسوب ليزا .

كانت لغة Object Pascal ضرورية لدعم MacApp ، وهو إطار عمل تطبيقات ماكنتوش قابل للتوسيع، والذي يُعرف الآن باسم مكتبة الفئات . طُوّرت امتدادات Object Pascal وMacApp بواسطة باري هاينز، وكين دويل، ولاري روزنشتاين، واختُبرت بواسطة دان ألين. أشرف لاري تيسلر على المشروع، الذي بدأ في أوائل عام 1985 وأصبح منتجًا في عام 1986.

تم أيضًا تطبيق امتداد Object Pascal في بيئة التطوير المتكاملة Think Pascal . تتضمن هذه البيئة مُصرّفًا ومحررًا مع تمييز وتدقيق بناء الجملة ، ومصحح أخطاء قوي ، ومكتبة فئات. [ 4 ] فضّل العديد من المطورين Think Pascal على تطبيق Apple لـ Object Pascal نظرًا لأن Think Pascal يوفر دورة تجميع- ربط -تصحيح أخطاء أسرع بكثير، وتكاملًا مُحكمًا لأدواته. كان آخر إصدار رسمي من Think Pascal هو الإصدار 4.01، في عام 1992. أصدرت Symantec لاحقًا إصدارًا غير رسمي 4.5d4 مجانًا.

أسقطت شركة أبل دعمها لـ Object Pascal عندما انتقلت من رقائق سلسلة Motorola 68000 إلى بنية PowerPC من IBM في عام 1994. وقد تمت إعادة كتابة MacApp 3.0 بالفعل بلغة C++ ونقلها إلى هذه المنصة.

قامت شركة Metrowerks بتضمين مُصرّف لغة Object Pascal مع برنامج CodeWarrior، والذي كان يستهدف معالجات 68k و PowerPC ، سواءً في بيئة التطوير المتكاملة (IDE) أو كأدوات MPW. كان بإمكان مطوري Macintosh الذين يستخدمون Object Pascal نقل برامجهم إلى معالجات PowerPC ، حتى بعد توقف كل من Apple وSymantec عن دعمها. تم نقل MacApp 2.0، المكتوب بلغة Object Pascal، إلى معالجات PowerPC باستخدام CodeWarrior . [ 5 ] [ 6 ]

سنوات بورلاند، إنبرايز، كود جير، وإمباركاديرو

في عام 1986، قدمت بورلاند امتدادات مماثلة، تحمل أيضًا اسم أوبجكت باسكال، لمنتج توربو باسكال لنظام ماكنتوش، وفي عام 1989 لتوربو باسكال 5.5 لنظام دوس. عندما حولت بورلاند تركيزها من دوس إلى ويندوز في عام 1994، أنشأت خليفة لتوربو باسكال، أطلقت عليها اسم دلفي ، وقدمت مجموعة جديدة من الامتدادات لإنشاء ما يُعرف الآن بلغة دلفي.

بدأ تطوير لغة دلفي عام ١٩٩٣، وصدرت النسخة ١.٠ منها رسميًا في الولايات المتحدة في ١٤ فبراير ١٩٩٥. مع أن الشيفرة البرمجية التي تستخدم نموذج كائنات Turbo Pascal كانت لا تزال قابلة للتجميع، إلا أن دلفي تميزت ببنية جديدة تستخدم الكلمة المفتاحية ` create` classبدلًا من object`create`، بالإضافة إلى مُنشئ `create` ومُدمر `destroy` افتراضي (مما يُغني عن استدعاء الإجراءات `create` Newو` Disposedestroy`)، والخصائص، ومؤشرات الدوال، وبعض الميزات الأخرى. استُلهمت هذه الميزات من مسودة عمل ISO الخاصة بامتدادات البرمجة الكائنية، ولكن تم تجاهل العديد من الاختلافات عن لهجة Turbo Pascal (مثل اشتراط المسودة أن تكون جميع الدوال افتراضية ).

استمرت لغة دلفي في التطور على مر السنين لدعم بنيات مثل المصفوفات الديناميكية ، والأنواع العامة ، والأساليب المجهولة . ولا يزال بناء جملة الكائنات القديم الذي قدمته شركة آبل ("أنواع الكائنات القديمة") مدعومًا. [ 7 ]

الإصدارات

المترجمون

تتوفر مترجمات لغة أوبجكت باسكال لمجموعة واسعة من أنظمة التشغيل والهياكل.

منتجات التراث

  • كان بورلاند كيليكس نسخةً من دلفي تعمل على نظام لينكس ، وتستهدف فقط أنظمة لينكس ذات 32 بت من إنتل باستخدام مكتبة كيو تي . ولا تعمل مباشرةً مع معظم توزيعات لينكس الحديثة.
  • كان برنامج Virtual Pascal مُترجمًا مجانيًا متوافقًا مع لغة Turbo Pascal وDelphi، يعمل بنظام 32 بت، وكان مُخصصًا بشكل أساسي لأنظمة التشغيل OS/2 وMicrosoft Windows. لاحقًا، حصل البرنامج أيضًا على مُوسِّع DOS+ ومُترجم تجريبي مُتقاطع لنظام Linux. توقف تطوير المُترجم عند مستوى Delphi 2 تقريبًا. في عام 2007، توقف موقعه الرسمي عن العمل، وتوقف تطويره نهائيًا.

مترجمون فوريون

باسكال سكريبت (المعروف سابقًا باسم إنرفيوز ) و DWScript (سكريبت دلفي للويب) هما مترجمان مفتوحا المصدر للغة أوبجكت باسكال ومحركات برمجة نصية مكتوبة بلغة دلفي. يدعمان مجموعات فرعية من أوبجكت باسكال. كما يمكن لـDWScript ترجمة كود أوبجكت باسكال إلى كود جافا سكريبت (باسكال الذكي)، ويدعم الترجمة الفورية (JIT). توفر باسكال الحديثة ثلاثة مترجمات مختلفة: واجهة سطر الأوامر (CLI)، ووحدة أباتشي (سيليريتي)، وكود رانر (حل مشابه لـnode.js قادر على التعامل مع نصوص برمجية مختلفة لكل منفذ)، بالإضافة إلى القدرة على ترجمة وحماية الكود المصدري للنص البرمجي . [ 16 ]

نماذج لبرامج "مرحباً بالعالم"

إليكم العديد من برامج "Hello World" بإصدارات مختلفة من لغة Object Pascal.

إصدار أبل

برنامج ObjectPascalExample ؛نوع THelloWorld = كائن الإجراء Put ; نهاية ;var HelloWorld : THelloWorld ;الإجراء THelloWorld.Put ؛ ابدأ عرض الرسالة ( 'مرحباً بالعالم! ' ) ؛ انتهى ؛ابدأ بإنشاء كائن جديد ( HelloWorld ) ؛ ثم قم بوضع كائن جديد في كائن HelloWorld ؛ ثم تخلص من كائن HelloWorld ؛ انتهى .

إصدار Turbo Pascal

لا يزال مدعومًا في دلفي وفري باسكال. كما يوفر فري باسكال بدائل خاصة به للمكتبات/الوحدات، على عكس دلفي. تُعد سلسلة فري باسكال 1.0 وبيئة التطوير المتكاملة النصية الخاصة بفري باسكال أكبر قواعد البيانات مفتوحة المصدر في هذه اللغة. أُعيدت كتابة فري باسكال 2.0 بلغة أقرب إلى دلفي، وتُعد بيئة التطوير المتكاملة النصية والأطر ذات الصلة (فري فيجن) الأجزاء الوحيدة في إصدار TP من أوبجكت باسكال.

تخصيص قائم على المكدس

برنامج ObjectPascalExample ؛نوع THelloWorld = كائن الإجراء Put ; نهاية ;الإجراء THelloWorld.Put ؛ ابدأ WriteLn ( 'Hello, World ! ' ) ؛ انتهى ؛var HelloWorld : THelloWorld ; { مُخصصة على المكدس ويمكن استخدامها دون تخصيص صريح. } begin HelloWorld . Put ; end .

تخصيص الذاكرة القائم على الكومة

برنامج ObjectPascalExample ؛type PHelloWorld = ^ THelloWorld ; THelloWorld = object procedure Put ; end ;الإجراء THelloWorld.Put ؛ ابدأ WriteLn ( 'Hello, World ! ' ) ؛ انتهى ؛var HelloWorld : PHelloWorld ; { this is a typed pointer to a THelloWorld }ابدأ بإنشاء كائن جديد ( HelloWorld ) ؛ ثم أنشئ كائن HelloWorld باستخدام الأمر التالي : ضع كائن HelloWorld في المتغير `HelloWorld`؛ ثم تخلص من كائن HelloWorld باستخدام الأمر التالي : تخلص من كائن HelloWorld باستخدام الأمر التالي : انتهى .

مثال آخر:

برنامج ObjectPascalExample ؛type PHelloWorld = ^ THelloWorld ; THelloWorld = object procedure Put ; end ;الإجراء THelloWorld.Put ؛ ابدأ WriteLn ( 'Hello, World ! ' ) ؛ انتهى ؛var HelloWorld : PHelloWorld ; { هذا مؤشر من نوع THelloWorld } HelloWorld2 : ^ THelloWorld ; { هذا هو نفسه تمامًا ولكن بصيغة مختلفة } HelloWorld3 : ^ THelloWorld ; HelloWorld4 : PHelloWorld ; begin { يعمل هذا بطريقة مشابهة للكود أعلاه، لاحظ عملية تخصيص الذاكرة وتحريرها، مع ذلك،  يقع الكثير من الناس في حيرة من أمرهم. في الماضي، كان هناك مثال خاطئ مع تعليقات خاطئة هنا... }جديد ( HelloWorld ) ؛ { نسخة واحدة } HelloWorld4 := HelloWorld ؛ { هذا صحيح - نسخة مؤشر } HelloWorld2 := HelloWorld ؛ { هذا صحيح - نسخة مؤشر } جديد ( HelloWorld3 ) ؛ { نسخة ثانية } HelloWorld4 := HelloWorld3 ؛ { هذا صحيح - نسخة مؤشر } HelloWorld2 := HelloWorld3 ؛ { هذا صحيح - نسخة مؤشر } التخلص ( HelloWorld ) ؛ { يتم تخصيص نسختين فقط } التخلص ( HelloWorld3 ) ؛ { لذلك يجب تحرير نسختين فقط } نهاية .

يعمل هذا على أساس نسخ المؤشر، إلا إذا كان هناك تخصيص محدد لنسخة أعمق.

إصدار دلفي وفري باسكال

برنامج ObjectPascalExample ؛type THelloWorld = class procedure Put ; end ;الإجراء THelloWorld.Put ؛ ابدأ Writeln ( ' Hello, World !' ) ؛ انتهى ؛var HelloWorld : THelloWorld ; { this is an implicit pointer }begin HelloWorld := THelloWorld.Create ; { يُعيد المُنشئ مؤشرًا إلى كائن من النوع THelloWorld } HelloWorld.Put ; HelloWorld.Free ; { يُحرر هذا السطر كائن THelloWorld الذي يُشير إليه HelloWorld } end .

لاحظ أن بنية الكائن لا تزال متاحة في دلفي وفري باسكال.

نسخة الأكسجين

namespace ObjectPascalExample ;واجهة المستخدمtype ConsoleApp = class class method Main ; end ;THelloWorld = class method Put ; end ;تطبيقmethod THelloWorld.Put ; begin Console.WriteLine ( 'Hello , World ! ' ) ; end ;دالة الفئة ConsoleApp.Main ؛ بداية المتغير HelloWorld : = new THelloWorld ؛ HelloWorld.Put ؛ نهاية ؛نهاية .

إصدار DWScript (Smart Pascal)

type THelloWorld = class procedure Put ; begin PrintLn ( 'Hello, World!' ) ; end end ;var HelloWorld : = THelloWorld.Create ; HelloWorld.Put ;

يمكن أيضًا تنفيذ الطريقة في موقع منفصل كما هو الحال في لهجات Object Pascal الأخرى.

تطوير

أُضيفت العديد من الميزات باستمرار إلى لغة Object Pascal من خلال امتدادات إلى Delphi وامتدادات إلى FreePascal. واستجابةً للانتقادات، اعتمدت Free Pascal البرمجة العامة بنفس صيغة Delphi، شريطة تحديد وضع التوافق مع Delphi، كما يدعم كل من Delphi (جزئيًا) وFree Pascal (بشكل أوسع) إعادة تعريف المعاملات . وقد أضافت Delphi أيضًا العديد من الميزات الأخرى منذ الإصدار 7، [ 17 ] بما في ذلك البرمجة العامة. وبينما تسعى Free Pascal إلى التوافق مع Delphi في وضع التوافق، فإنها عادةً ما تُضيف العديد من الميزات الجديدة إلى اللغة والتي لا تتوفر دائمًا في Delphi.

انظر أيضاً

مراجع

  1. 1 2 جيبسون، ستيف (8 مايو 1989). "بورلاند ومايكروسوفت تدخلان عالم باسكال الموجه للكائنات" . إنفوورلد . المجلد  11، العدد  19. ص  28. مؤرشف من الأصل في 29 فبراير 2024. تم الاطلاع عليه في 18 سبتمبر 2021 .
  2. تيسلر، لاري (1985). "تقرير أوبجكت باسكال". عالم اللغات المهيكلة . 9 (3): 10-15 .
  3. تيسلر، لاري (4 فبراير 1985). "لغة أوبجكت باسكال لنظام ماكنتوش" (ملف PDF) . تم الاطلاع عليه في 13 مارس 2025 .
  4. سايتر، تشارلز (نوفمبر 1990). "فكر في باسكال 3" . ماكوورلد . المجلد 7، العدد 11. ص 236.   
  5. أرنولد، برايان؛ مكارثي، جاي (نوفمبر 1995). "ماك آب باسكال يعود من جديد" . ماك تك . المجلد 11، العدد 11. الصفحات 30-31 .   
  6. أرنولد، برايان (فبراير 1996). "MacApp 2 لـ PowerPC في Object Pascal" . MacTech . المجلد 12، العدد 2. الصفحات 25-32 .   
  7. ليشنر، راي (2000). دلفي باختصار: مرجع سريع لسطح المكتب ( الطبعة الأولى). سيباستوبول، كاليفورنيا: أورايلي وشركاؤه. ISBN  1565926595.
  8. رسالة من المجتمع: شركة إمباركاديرو تكنولوجيز توافق على الاستحواذ على كود جير من بورلاند. مؤرشفة بتاريخ 2018-03-02 في أرشيف الإنترنت . Edn.embarcadero.com. تم الاطلاع عليها بتاريخ 2013-07-21.
  9. "تطوير تطبيقات iPhone/iPod" . فريق تطوير Free Pascal. مؤرشف من الأصل بتاريخ 28 أبريل 2009. تم الاطلاع عليه بتاريخ 13 أبريل 2009 .
  10. آسندن، جون لينارت (18 مايو 2012). كتاب ذكي . لينبب. مؤرشف من الأصل في 25 مايو 2013. تم الاطلاع عليه في 19 يونيو 2013 .
  11. فونا، إيغور. "Turbo51: مُجمِّع لغة Turbo Pascal لوحدات التحكم الدقيقة 8051" . مؤرشف من الأصل في 25 سبتمبر 2018. تم الاطلاع عليه في 14 يوليو 2026 .
  12. دراكسلر، وولفغانغ. "WDSibyl: بيئة تطوير مرئية" . مؤرشف من الأصل في 12 فبراير 2020. تم الاطلاع عليه في 14 يوليو 2026 .
  13. "EDM/2: WDSibyl" . مؤرشف من الأصل في 24 مارس 2021. تم الاطلاع عليه في 14 يوليو 2026 .
  14. "EDM/2: قائمة الأدوات" . مؤرشف من الأصل في 21 أغسطس 2022. تم الاطلاع عليه في 14 يوليو 2026 .
  15. "eCSoft/2: موسوعة برامج نظام التشغيل OS/2 الكاملة: WDSibyl" . مؤرشف من الأصل في 17 أكتوبر 2021. تم الاطلاع عليه في 14 يوليو 2026 .
  16. "باسكال الحديث" . مؤرشف من الأصل في 11 ديسمبر 2018. تم الاطلاع عليه في 22 أكتوبر 2018 .
  17. "ميزات جديدة في لغة دلفي منذ دلفي 7" . كود جير. مؤرشف من الأصل في 2 يوليو 2008. تم الاطلاع عليه في 6 يوليو 2008 .

دلفي