لغة البرمجة APL
لغة APL (المسماة نسبةً إلى كتاب "لغة برمجة ") [ 3 ] هي لغة برمجة طُوِّرت في ستينيات القرن العشرين على يد كينيث إي. إيفرسون . نوع البيانات الأساسي فيها هو المصفوفة متعددة الأبعاد . تستخدم APL مجموعة واسعة من الرموز الرسومية الخاصة [ 4 ] لتمثيل معظم الدوال والمعاملات، مما يُتيح كتابة شفرة برمجية موجزة للغاية. كان لها تأثير كبير على تطوير نمذجة المفاهيم، والجداول الإلكترونية ، والبرمجة الوظيفية [ 5 ] ، وحزم العمليات الحسابية الحاسوبية [ 6 ] . كما ألهمت العديد من لغات البرمجة الأخرى [ 7 ] [ 8 ] .
تاريخ
الترميز الرياضي
طوّر كينيث إي. إيفرسون تدوينًا رياضيًا لمعالجة المصفوفات ، بدءًا من عام 1957 في جامعة هارفارد . وفي عام 1960، بدأ العمل لدى شركة IBM حيث طوّر هذا التدوين مع أدين فالكوف ونشره في كتابه "لغة برمجة" عام 1962. [ 3 ] وتوضح مقدمة الكتاب فرضيته:
يهتم علم الرياضيات التطبيقية بشكل أساسي بتصميم وتحليل الإجراءات الصريحة لحساب القيم الدقيقة أو التقريبية لمختلف الدوال. تُسمى هذه الإجراءات الصريحة بالخوارزميات أو البرامج . ولأن الترميز الفعال لوصف البرامج يتميز ببنية نحوية واضحة، يُطلق عليه لغة برمجة .
تم استخدام هذا الترميز داخل شركة IBM لتقارير بحثية قصيرة حول أنظمة الكمبيوتر، مثل Burroughs B5000 وآلية المكدس الخاصة به عندما كانت شركة IBM تقوم بتقييم آلات المكدس مقابل آلات التسجيل لأجهزة الكمبيوتر القادمة.
استخدم إيفرسون أيضًا تدوينه في مسودة الفصل "لغة البرمجة" ، الذي كتبه لكتاب كان يؤلفه مع فريد بروكس بعنوان " معالجة البيانات الآلية" ، والذي نُشر في عام 1963. [ 9 ] [ 10 ]
في عام 1979، حصل إيفرسون على جائزة تورينج لعمله على لغة البرمجة APL. [ 11 ]
التطوير إلى لغة برمجة حاسوبية
في وقت مبكر من عام 1962، حدثت المحاولة الأولى لاستخدام الترميز لوصف نظام كمبيوتر كامل بعد أن ناقش فالكوف مع ويليام سي كارتر عمله لتوحيد مجموعة التعليمات للآلات التي أصبحت فيما بعد عائلة IBM System/360 .
في عام 1963، قام هربرت هيلرمان، الذي كان يعمل في معهد أبحاث أنظمة IBM، بتطبيق جزء من الترميز على حاسوب IBM 1620 ، واستخدمه الطلاب في دورة خاصة في المدرسة الثانوية حول حساب الدوال المتسامية باستخدام مجموع المتسلسلات. اختبر الطلاب برنامجهم في مختبر هيلرمان. سُمّي هذا التطبيق لجزء من الترميز "مترجم المصفوفات الشخصي" (PAT). [ 12 ]
في عام 1963، استخدم فالكوف وإيفرسون وإدوارد هـ. سوسينغوث الابن ، وجميعهم يعملون في شركة آي بي إم، هذه الصيغة لوصفٍ رسمي لبنية ووظائف سلسلة أجهزة آي بي إم سيستم/360 ، مما أسفر عن نشر ورقة بحثية في مجلة أنظمة آي بي إم عام 1964. بعد نشرها، وجّه الفريق اهتمامه إلى تطبيق هذه الصيغة على نظام حاسوبي. كان أحد دوافع هذا التركيز على التطبيق هو اهتمام جون ل. لورانس، الذي تولى مهامًا جديدة في شركة ساينس ريسيرش أسوشيتس ، وهي شركة تعليمية استحوذت عليها آي بي إم عام 1964. طلب لورانس من إيفرسون وفريقه المساعدة في استخدام هذه اللغة كأداة لتطوير واستخدام الحواسيب في التعليم. [ 13 ]
بعد انضمام لورانس إم. بريد وفيليب إس. أبرامز من جامعة ستانفورد إلى فريق أبحاث آي بي إم، واصلوا عملهم السابق على تطبيق مُبرمج بلغة فورتران 4 لجزء من الترميز الذي أُنجز لجهاز كمبيوتر آي بي إم 7090 الذي يعمل بنظام التشغيل IBSYS . أُنجز هذا العمل في أواخر عام 1965، وسُمي لاحقًا IVSYS (اختصارًا لنظام إيفرسون). وصف أبرامز أساس هذا التطبيق بالتفصيل في تقرير فني لجامعة ستانفورد بعنوان "مترجم لترميز إيفرسون" عام 1966. أشرف نيكلاوس ويرث رسميًا على الجانب الأكاديمي من هذا العمل . [ 14 ] وكما هو الحال في نظام PAT الخاص بهيلرمان سابقًا، استغنى هذا التطبيق عن مجموعة أحرف APL، ولكنه استخدم كلمات إنجليزية محجوزة خاصة للدوال والمعاملات. تم تعديل النظام لاحقًا لنظام المشاركة الزمنية ، وبحلول نوفمبر 1966، تمت إعادة برمجته لجهاز الكمبيوتر IBM System/360 Model 50 الذي يعمل في وضع المشاركة الزمنية، وتم استخدامه داخليًا في شركة IBM. [ 15 ]
الأجهزة


كان من أهم التطورات التي ساهمت في استخدام لغة APL بفعالية، قبل الانتشار الواسع لشاشات أنبوب أشعة الكاثود (CRT)، تطوير عنصر كتابة خاص قابل للتبديل لآلة كاتبة IBM Selectric، يحمل جميع أحرف APL الخاصة. استُخدم هذا العنصر في محطات عمل الطباعة الورقية التي تعتمد على آلة كاتبة Selectric وآلية الكتابة الخاصة بها، مثل محطة IBM 1050 ومحطة IBM 2741. ويمكن وضع أغطية المفاتيح فوق المفاتيح العادية لتوضيح أحرف APL التي سيتم إدخالها وكتابتها عند الضغط على كل مفتاح. ولأول مرة، أصبح بإمكان المبرمج كتابة أحرف APL ورؤيتها بشكل صحيح كما وردت في تدوين إيفرسون، دون الحاجة إلى استخدام تمثيلات الكلمات المفتاحية الإنجليزية المعقدة. وقد صمم فالكوف وإيفرسون عنصري الكتابة الخاصين بلغة APL Selectric، 987 و988، في أواخر عام 1964، على الرغم من عدم توفر أي نظام حاسوبي يدعم APL لاستخدامهما. [ 16 ] أشار إيفرسون إلى فالكوف كمصدر إلهام لفكرة استخدام عنصر الكتابة IBM Selectric لمجموعة أحرف APL. [ 17 ]
كان لا يزال يتعين كتابة العديد من رموز لغة APL، حتى مع وجود أحرف APL على عنصر الكتابة Selectric، عن طريق الضغط فوق حرفين موجودين على العنصر. ومن الأمثلة على ذلك حرف التدرج لأعلى ، الذي كان يجب تكوينه من دلتا (Shift-H) وضربة شيفر (Shift-M). كان هذا ضروريًا لأن مجموعة أحرف APL كانت أكبر بكثير من الأحرف الـ 88 المسموح بها على عنصر الكتابة، حتى عندما كانت الأحرف مقتصرة على الأحرف الكبيرة.
شاشة العرض الحاسوبية Tektronix 4013 هي نسخة من Tektronix 4010 تدعم مجموعتي الأحرف APL وASCII. [ 18 ] يوجد مفتاح تبديل أعلى المفاتيح لاختيار مجموعة الأحرف. [ 19 ]
التوافر التجاري
كان أول تسجيل دخول تفاعلي وإنشاء مساحة عمل APL في عام 1966 بواسطة لاري بريد باستخدام محطة طرفية IBM 1050 في مختبرات IBM Mohansic بالقرب من مركز أبحاث توماس جيه واتسون ، مقر APL، في يوركتاون هايتس ، نيويورك. [ 16 ]
كانت شركة IBM مسؤولة بشكل رئيسي عن طرح لغة APL في السوق. صدرت أول نسخة متاحة للجمهور من APL عام 1968 لجهاز IBM 1130. وفرت IBM برنامج APL/1130 مجانًا دون أي مسؤولية أو دعم. [ 20 ] [ 21 ] كان البرنامج يعمل بذاكرة لا تتجاوز 8 كيلوبايت (كلمات 16 بت)، ويستخدم قرصًا صلبًا مخصصًا بسعة 1 ميجابايت.
اكتسبت لغة APL مكانتها في أنظمة المشاركة الزمنية للحواسيب المركزية من أواخر الستينيات وحتى أوائل الثمانينيات، ويعود ذلك جزئيًا إلى قدرتها على دعم عدة مستخدمين على أنظمة ذات مواصفات منخفضة تفتقر إلى أجهزة ترجمة العناوين الديناميكية . [ 22 ] وشملت التحسينات الإضافية في أداء أنظمة IBM System/370 المركزية المختارة برنامج APL Assist Microcode الذي تضمن بعض دعم تنفيذ APL في البرامج الثابتة للمعالج ، بدلاً من تنفيذه بالكامل بواسطة برامج عالية المستوى. وفي وقت لاحق، مع توفر أجهزة ذات أداء مناسب في منتصف إلى أواخر الثمانينيات، قام العديد من المستخدمين بنقل تطبيقاتهم إلى بيئة الحواسيب الشخصية.
طبّقت مُفسّرات لغة APL الأولى من IBM لأجهزة IBM 360 وIBM 370 نظام إدارة متعدد المستخدمين خاص بها بدلاً من الاعتماد على خدمات النظام المضيف، وبالتالي كانت أنظمة مشاركة زمنية مستقلة. طُرح نظام APL/360 [ 23 ] [ 24 ] [ 25 ] لأول مرة للاستخدام في IBM عام 1966، وكان مُفسّرًا متعدد المستخدمين. تمت القدرة على التواصل برمجيًا مع نظام التشغيل للحصول على المعلومات وتعيين متغيرات نظام المُفسّر من خلال وظائف "I-beam" خاصة ذات امتيازات، باستخدام عمليات أحادية وثنائية . [ 26 ]
في عام 1973، أصدرت شركة IBM برنامج APL.SV ، الذي كان امتدادًا للمنتج نفسه، ولكنه وفّر متغيرات مشتركة كوسيلة للوصول إلى وظائف خارج نظام APL، مثل ملفات نظام التشغيل. وفي منتصف سبعينيات القرن الماضي، تمّ تكييف مترجم لغة APL الخاص بأجهزة IBM المركزية للاستخدام على جهاز IBM 5100 المكتبي، الذي كان مزودًا بشاشة CRT صغيرة ولوحة مفاتيح APL، في حين أن معظم أجهزة الكمبيوتر الصغيرة الأخرى في ذلك الوقت كانت تدعم لغة BASIC فقط . وفي ثمانينيات القرن الماضي، حظي برنامج VSAPL بانتشار واسع بين مستخدمي أنظمة Conversational Monitor System (CMS) و Time Sharing Option (TSO) و VSPC و MUSIC/SP و CICS .
في الفترة 1973-1974، أشرف باتريك إي. هاجرتي على تنفيذ مترجم لغة APL الخاص بجامعة ميريلاند لأجهزة الحاسوب المركزية من سلسلة Sperry UNIVAC 1100/2200 . [ 27 ] وفي عام 1974، كُلِّف الطالب آلان ستيبنز بمهمة تنفيذ وظيفة داخلية. [ 28 ] أُتيحت لغة Xerox APL ابتداءً من يونيو 1975 لأجهزة الحاسوب المركزية Xerox 560 وSigma 6 و7 و9 التي تعمل بنظام CP-V ، ولأجهزة Honeywell CP-6 . [ 29 ]
في ستينيات وسبعينيات القرن العشرين، ظهرت عدة شركات لتقاسم الوقت، باعت خدمات لغة APL باستخدام نسخ معدلة من مترجم IBM APL360 [ 25 ] . في أمريكا الشمالية، كانت أبرز هذه الشركات: IP Sharp Associates ، و Scientific Time Sharing Corporation (STSC)، وTime Sharing Resources (TSR)، و The Computer Company (TCC). كما دخلت CompuServe السوق عام 1978 بمترجم APL مبني على نسخة معدلة من مترجم Digital Equipment Corp وجامعة كارنيجي ميلون، والذي كان يعمل على أجهزة KI وKL ذات 36 بت من إنتاج DEC. كانت لغة APL الخاصة بـ CompuServe متاحة لكل من السوق التجارية وخدمة معلومات المستهلك. مع ظهور الحواسيب المركزية الأقل تكلفة، مثل IBM 4300 ، ثم الحواسيب الشخصية لاحقًا، بحلول منتصف ثمانينيات القرن العشرين، اختفت صناعة تقاسم الوقت تقريبًا.
كانت لغة Sharp APL متاحة من شركة IP Sharp Associates، أولاً كخدمة مشاركة الوقت في الستينيات، ولاحقًا كمنتج برمجي بدءًا من حوالي عام 1979. كانت Sharp APL تطبيقًا متقدمًا للغة APL مع العديد من امتدادات اللغة، مثل الحزم (القدرة على وضع كائن واحد أو أكثر في متغير واحد)، ونظام الملفات، والمصفوفات المتداخلة، والمتغيرات المشتركة .
كانت مترجمات لغة APL متاحة أيضًا من مصنعي الحواسيب المركزية والحواسيب الصغيرة الآخرين، ولا سيما Burroughs و Control Data Corporation (CDC) و Data General و Digital Equipment Corporation (DEC) و Harris و Hewlett-Packard (HP) و Siemens و Xerox وغيرها.
رعى غارث فوستر من جامعة سيراكيوز اجتماعات دورية لمجتمع مطوري لغة APL في مركز مينوبروك للمؤتمرات التابع لجامعة سيراكيوز في بلو ماونتن ليك، نيويورك . وفي السنوات اللاحقة، نظم يوجين ماكدونيل اجتماعات مماثلة في أرض مؤتمرات أسيلومار بالقرب من مونتيري ، كاليفورنيا ، وفي كثبان باجارو الرملية بالقرب من واتسونفيل ، كاليفورنيا. ولا تزال مجموعة SIGAPL ذات الاهتمام الخاص التابعة لرابطة آلات الحوسبة تدعم مجتمع APL. [ 30 ]
الحواسيب الصغيرة
في الحواسيب الصغيرة، التي أصبحت متاحة منذ منتصف سبعينيات القرن العشرين، أصبحت لغة BASIC لغة البرمجة السائدة. [ 31 ] ومع ذلك، وفرت بعض الحواسيب الصغيرة لغة APL بدلاً منها، وكان أولها جهاز MCM/70 الذي يعمل بمعالج Intel 8008، والذي صدر عام 1974 [ 32 ] [ 33 ] ، والذي استُخدم بشكل أساسي في التعليم. [ 34 ] ومن الأجهزة الأخرى في ذلك الوقت جهاز VideoBrain Family Computer ، الذي صدر عام 1977، والذي زُوّد بلهجة خاصة به من لغة APL تُسمى APL/S. [ 35 ]
تضمن جهاز كومودور سوبربيت ، الذي تم طرحه في عام 1981، مترجم لغة APL تم تطويره بواسطة جامعة واترلو . [ 36 ]
في عام 1976، ادعى بيل غيتس في رسالته المفتوحة إلى الهواة أن شركة مايكروسوفت كانت تعمل على تطبيق لغة APL لمعالجات إنتل 8080 وموتورولا 6800 ، لكن لم يكن لديها "حافز كبير لإتاحتها للهواة" بسبب قرصنة البرامج . [ 37 ] ولم يتم إصدارها قط.
APL2
ابتداءً من أوائل ثمانينيات القرن العشرين، قام فريق تطوير لغة APL في شركة IBM، بقيادة جيم براون ، بتطبيق نسخة جديدة من لغة APL تضمنت، كتحسين رئيسي، مفهوم المصفوفات المتداخلة ، حيث يمكن للمصفوفة أن تحتوي على مصفوفات أخرى، بالإضافة إلى ميزات لغوية جديدة سهّلت دمج المصفوفات المتداخلة في سير عمل البرنامج. غادر كين إيفرسون، الذي لم يعد مسؤولاً عن تطوير لغة APL، شركة IBM وانضم إلى شركة IP Sharp Associates ، حيث كان من أبرز إسهاماته توجيه تطوير لغة Sharp APL لتكون أكثر انسجامًا مع رؤيته. [ 38 ] [ 39 ] [ 40 ] صدرت النسخة الأولى من APL2 لأنظمة CMS و TSO في عام 1984. [ 41 ] تبع ذلك إصدار APL2 Workstation (لأنظمة Windows و OS/2 و AIX و Linux و Solaris ) لاحقًا. [ 42 ] [ 43 ]
بينما انشغل موردون آخرون بتطوير مترجمات لغة APL للأجهزة الجديدة، ولا سيما الحواسيب الصغيرة القائمة على نظام يونكس ، كانت لغة APL2 هي المعيار المُختار في أغلب الأحيان لتطوير مترجمات APL الجديدة. وحتى اليوم، يُشير معظم موردي APL أو مستخدميهم إلى توافقها مع APL2 كنقطة بيع رئيسية لتلك المنتجات. [ 44 ] [ 45 ] وتُشير شركة IBM إلى استخدامها في حل المشكلات، وتصميم الأنظمة، وبناء النماذج الأولية، والحسابات الهندسية والعلمية، وأنظمة الخبراء، [ 46 ] وتدريس الرياضيات وغيرها من المواد، والتصور، والوصول إلى قواعد البيانات. [ 47 ]
التطبيقات الحديثة
تتضمن تطبيقات لغة APL المختلفة، مثل APLX وDyalog وغيرها، إضافاتٍ للبرمجة كائنية التوجه ، ودعمًا لبيئة .NET ، ووظائف تحويل مصفوفات XML، ورسومًا بيانية، وواجهات لأنظمة التشغيل، وتعبيرات حساب لامدا . وتشمل الإصدارات المجانية GNU APL لنظام Linux وNARS2000 لنظام Windows (الذي يعمل أيضًا على Linux باستخدام Wine). ويُعدّ كلا الإصدارين نسختين كاملتين تقريبًا من APL2 مع إضافات لغوية متنوعة.
اللغات المشتقة
شكلت لغة APL الأساس للغات التالية أو أثرت فيها:
- A و A+ ، وهي لغة برمجة بديلة من نوع APL، والأخيرة مزودة بامتدادات رسومية.
- FP ، لغة برمجة وظيفية.
- Ivy، وهو مترجم للغة تشبه لغة APL قام بتطويرها روب بايك ، والتي تستخدم ASCII كمدخل. [ 48 ]
- J ، الذي صممه إيفرسون أيضاً، والذي يستخدم ASCII مع الرسوم البيانية المزدوجة بدلاً من الرموز الخاصة. [ 7 ]
- K ، وهو نسخة خاصة من لغة APL طورها آرثر ويتني. [ 8 ]
- MATLAB ، أداة حسابية عددية. [ 6 ]
- Nial ، لغة برمجة مصفوفات عالية المستوى مع تدوين برمجة وظيفية.
- لغة البرمجة متعددة الأشكال ، وهي لغة تفاعلية قابلة للتوسيع ذات لغة أساسية مماثلة.
- S ، وهي لغة برمجة إحصائية (عادة ما تُرى الآن في الإصدار مفتوح المصدر المعروف باسم R ).
- Snap !، لغة برمجة تعتمد على الكتل البرمجية منخفضة التعليمات البرمجية، نشأت كتطبيق موسع لـ Scratch
- سبيك إيزي ، بيئة تفاعلية للحوسبة العددية.
- لغة وولفرام ، لغة البرمجة الخاصة ببرنامج ماثيماتيكا . [ 49 ]
خصائص اللغة
مجموعة الأحرف
تعرضت لغة APL لانتقادات وإشادات لاختيارها مجموعة أحرف فريدة. في ستينيات وسبعينيات القرن الماضي، كان عدد قليل من أجهزة الطرفية، أو حتى شاشات العرض، قادرًا على إعادة إنتاج مجموعة أحرف APL. وكانت الأجهزة الأكثر شيوعًا تستخدم آلية الطباعة IBM Selectric مع عنصر نوع APL خاص. ومن أوائل أجهزة طرفية APL الخطية (التي تعمل في وضع الخط فقط، وليس ملء الشاشة) جهاز Texas Instruments TI Model 745 ( حوالي عام 1977 ) الذي يدعم مجموعة أحرف APL الكاملة [ 50 ] ، والذي يتميز بأوضاع اتصالات ثنائية الاتجاه (نصف وكاملة ) ، للتفاعل مع خدمة مشاركة الوقت APL أو مع حاسوب مركزي بعيد لتشغيل مهمة حاسوبية عن بُعد، أو ما يُعرف بإدخال المهمة عن بُعد (RJE).
بمرور الوقت، ومع الاستخدام الواسع النطاق لشاشات العرض الرسومية عالية الجودة، وأجهزة الطباعة، ودعم نظام يونيكود ، تم التغلب إلى حد كبير على مشكلة خطوط أحرف لغة APL. ومع ذلك، يتطلب إدخال أحرف APL استخدام برامج تحرير طرق الإدخال ، وتعيينات لوحة المفاتيح، ومجموعات رموز APL الافتراضية/المعروضة على الشاشة، [ 51 ] [ 52 ] أو بطاقات لوحة مفاتيح مطبوعة سهلة الرجوع إليها، الأمر الذي قد يُحبط المبتدئين المعتادين على لغات برمجة أخرى. [ 53 ] [ 54 ] [ 55 ] وفي دراسة أُجريت على طلاب المرحلة الثانوية، وُجد أن كتابة واستخدام أحرف APL لم يُشكل عائقًا يُذكر أمام المبتدئين الذين ليس لديهم خبرة سابقة بلغات برمجة أخرى. [ 56 ]
دفاعًا عن لغة APL، فهي تتطلب عددًا أقل من الأحرف للكتابة، كما أن تخطيطات لوحة المفاتيح تُحفظ مع مرور الوقت. وتُصنع لوحات مفاتيح خاصة بلغة APL وتُستخدم حتى اليوم، بالإضافة إلى خطوط قابلة للتنزيل مجانًا لأنظمة التشغيل مثل مايكروسوفت ويندوز. [ 51 ] وتفترض مكاسب الإنتاجية المذكورة أن المستخدم يقضي وقتًا كافيًا في العمل باللغة بحيث يكون من المجدي حفظ الرموز ودلالاتها وتخطيطات لوحة المفاتيح والعديد من المصطلحات المستخدمة في المهام الشائعة.
تصميم
على عكس لغات البرمجة التقليدية ذات البنية المهيكلة، يُبنى كود APL عادةً على شكل سلاسل من الدوال الأحادية أو الثنائية ، والمعاملات [ 57 ] التي تعمل على المصفوفات . [ 58 ] تحتوي APL على العديد من العناصر الأولية غير القياسية (الدوال والمعاملات) التي يُشار إليها برمز واحد أو مجموعة من الرموز. تُعرَّف جميع العناصر الأولية بنفس الأسبقية ، وترتبط دائمًا باليمين. لذا، يُقرأ كود APL أو يُفهم على نحو أفضل من اليمين إلى اليسار .
لم تتضمن تطبيقات لغة APL المبكرة ( حوالي عام 1970 ) هياكل تحكم في تدفق البرنامج ، مثل حلقات التكرار أو doالبنى البرمجية. بدلاً من ذلك، استخدمت عمليات المصفوفات، وغالبًا ما كان استخدام بنى البرمجة المهيكلة غير ضروري، حيث يمكن إجراء عملية على مصفوفة كاملة في عبارة واحدة. على سبيل المثال، يمكن للدالة ( ) أن تحل محل تكرار حلقة for : عند تطبيقها على عدد صحيح موجب، ينتج عنها مصفوفة أحادية البعد (متجه)، 1 2 3 ... N. تتضمن تطبيقات APL اللاحقة عمومًا هياكل تحكم شاملة، بحيث يمكن فصل بنية البيانات وتدفق التحكم في البرنامج بوضوح ودقة.whileif-then-elseiotaι
تُسمى بيئة لغة APL بمساحة العمل . في مساحة العمل، يستطيع المستخدم تعريف البرامج والبيانات، أي أن قيم البيانات موجودة أيضًا خارج البرامج، ويمكن للمستخدم معالجة البيانات دون الحاجة إلى تعريف برنامج. [ 59 ] في الأمثلة أدناه، يقوم مُفسِّر لغة APL أولًا بكتابة ستة مسافات قبل انتظار إدخال المستخدم. ويبدأ إخراجه من العمود الأول.
ن ← 4 5 6 7 | يُسند متجه القيم {4 5 6 7} إلى متغير n، وهي عملية إنشاء مصفوفة. ويمكن استخدام تعبير APL مكافئ وأكثر اختصارًا . يتم تخزين قيم متعددة في المصفوفة ، وتُنفذ هذه العملية دون استخدام حلقات تكرار رسمية أو لغة تحكم في التدفق .n←3+⍳4n |
ن 4 5 6 7 | اعرض محتويات n، وهي حاليًا عبارة عن مصفوفة أو متجه. |
ن + 4 8 9 10 11 | تمت إضافة 4 الآن إلى جميع عناصر المتجه n، مما أدى إلى إنشاء متجه مكون من 4 عناصر {8 9 10 11}. وكما هو موضح أعلاه، يعرض مترجم لغة APL النتيجة لأن قيمة التعبير لم يتم تعيينها لمتغير (مع فاصلة ←). |
+ / ن 22 | يعرض APL مجموع مكونات المتجه n، أي 22 (= 4 + 5 + 6 + 7)باستخدام تدوين مختصر للغاية: اقرأ +/ على أنه "جمع، على ..." وتغيير طفيف سيكون "ضرب، على ..." |
م ← + / 3 +⍳ 4 م 22 | يمكن دمج هذه العمليات في عبارة واحدة، مع الأخذ في الاعتبار أن لغة APL تُقيّم التعبيرات من اليمين إلى اليسار: أولًا، تُنشئ مصفوفة ، ثم يُضاف 3 إلى كل عنصر من عناصرها، وتُجمع هذه العناصر معًا، ويُخزن الناتج في متغير ، ثم يُعرض. وبالتدوين الرياضي المعتاد، يُعادل ذلك ما يلي:⍳4[1,2,3,4]mتذكر أن التعبيرات الرياضية لا تُقرأ أو تُقيّم من اليمين إلى اليسار. |
يمكن للمستخدم حفظ مساحة العمل مع جميع القيم والبرامج وحالة التنفيذ.
تستخدم لغة APL مجموعة من الرموز غير ASCII ، وهي امتداد للترميز الحسابي والجبري التقليدي. يُعدّ استخدام أسماء مكونة من حرف واحد لوظائف متجهات SIMD (تعليمات واحدة، بيانات متعددة ) إحدى الطرق التي تُمكّن بها APL من صياغة خوارزميات تحويل البيانات بشكل مُختصر، مثل حساب لعبة كونواي للحياة في سطر واحد من التعليمات البرمجية. [ 60 ] في جميع إصدارات APL تقريبًا، من الممكن نظريًا التعبير عن أي دالة قابلة للحساب في تعبير واحد، أي في سطر واحد من التعليمات البرمجية.
نظرًا لمجموعة الأحرف غير المألوفة ، يستخدم العديد من المبرمجين لوحات مفاتيح خاصة مزودة بأغطية مفاتيح APL لكتابة أكواد APL. [ 61 ] على الرغم من وجود طرق متنوعة لكتابة أكواد APL باستخدام أحرف ASCII فقط، [ 62 ] إلا أن ذلك نادرًا ما يحدث عمليًا. (قد يُفسر هذا على أنه يدعم فرضية إيفرسون حول استخدام الترميز كأداة فكرية . [ 63 ] ) تستخدم معظم التطبيقات الحديثة، إن لم تكن جميعها، تخطيطات لوحات مفاتيح قياسية، مع تعيينات خاصة أو محررات لطرق الإدخال للوصول إلى الأحرف غير ASCII. تاريخيًا، تميز خط APL بأحرفه الأبجدية الكبيرة المائلة وأرقامه ورموزه العمودية. ولا يزال معظم الموردين يعرضون مجموعة أحرف APL بخط مخصص.
يزعم مؤيدو لغة APL أن أمثلة ما يُسمى بالبرمجيات التي تُكتب فقط (برمجيات رديئة الكتابة وغير مفهومة تقريبًا) هي في الغالب أمثلة على ممارسات برمجة سيئة أو أخطاء مبتدئين، وهي أخطاء قد تحدث في أي لغة برمجة. كما يزعمون أنهم أكثر إنتاجية باستخدام APL مقارنةً بلغات البرمجة التقليدية، وأن البرمجيات العاملة يُمكن تنفيذها في وقت أقل بكثير وبعدد أقل بكثير من المبرمجين مقارنةً باستخدام تقنيات أخرى.
قد يزعمون أيضًا أن لغة APL، نظرًا لاختصارها وبساطتها، تُناسب تطوير البرمجيات واسعة النطاق والمعقدة، إذ يُمكن تقليل عدد أسطر التعليمات البرمجية بشكل كبير. كما يرى العديد من مؤيدي وممارسي APL أن لغات البرمجة القياسية مثل COBOL و Java أكثر تعقيدًا. غالبًا ما تُستخدم APL في التطبيقات التي يُعد فيها عامل الوقت حاسمًا، كما هو الحال في أنظمة التداول. [ 64 ] [ 65 ] [ 66 ] [ 67 ]
مصطلحات
تُفرّق لغة APL بوضوح بين الدوال والمعاملات . [ 57 ] [ 68 ] تأخذ الدوال مصفوفات (متغيرات أو ثوابت أو تعابير) كوسائط، وتُرجع مصفوفات كنتائج. أما المعاملات (المشابهة للدوال من الرتبة العليا ) فتأخذ دوالًا أو مصفوفات كوسائط، وتستنتج دوالًا ذات صلة. على سبيل المثال، تُستنتج دالة الجمع بتطبيق معامل الاختزال على دالة الجمع . وبتطبيق معامل الاختزال نفسه على دالة القيمة القصوى (التي تُرجع أكبر عدد من عددين)، تُستنتج دالة تُرجع أكبر عدد في مجموعة (متجه) من الأعداد. في لغة J، استبدل إيفرسون مصطلح " فعل" بمصطلح " دالة " ومصطلح "ظرف" أو "حرف عطف" بمصطلح "معامل " .
تُعرّف لغة APL أيضًا الميزات المُدمجة فيها، والمُمثلة برمز أو مجموعة ثابتة من الرموز، بأنها عناصر أساسية . معظم هذه العناصر إما دوال أو مُعاملات. تُعتبر برمجة APL في جوهرها عملية كتابة دوال غير أساسية، ومُعاملات (في بعض إصدارات APL). مع ذلك، تُعتبر بعض العناصر الأساسية ليست دوالًا ولا مُعاملات، وأبرزها عملية الإسناد.
بعض الكلمات المستخدمة في أدبيات لغة APL لها معانٍ تختلف عن تلك الموجودة في كل من الرياضيات وعموم علوم الحاسوب.
| شرط | وصف |
|---|---|
| وظيفة | عملية أو دالة تأخذ صفرًا أو وسيطًا واحدًا (يمينًا) أو وسيطين (يسارًا ويمينًا)، وقد تكون هذه الوسائط قيمًا عددية أو مصفوفات أو هياكل أكثر تعقيدًا، وقد تُرجع نتيجة معقدة مماثلة. يمكن أن تكون الدالة كالتالي: |
| مصفوفة | كائن بيانات ذو أبعاد متعامدة صفرية أو أكثر بترتيب الصفوف، حيث يكون كل عنصر عبارة عن بيانات عددية أولية أو مصفوفة أخرى. [ 70 ] |
| نيلاديك | عدم أخذ أو اشتراط أي حجج، باطل [ 71 ] |
| أحادي | يتطلب وسيطًا واحدًا فقط؛ على اليمين للدالة، وعلى اليسار للمُعامل، أحادي [ 71 ] |
| ثنائي | يتطلب وسيطًا يساريًا وآخر يمينيًا، ثنائي [ 71 ] |
| متناقض أو أحادي | قابلة للاستخدام في سياق أحادي أو ثنائي، مما يسمح بحذف وسيطها الأيسر [ 69 ] |
| مشغل | عملية أو عملية ربط تأخذ وسيطًا واحدًا (يسارًا) أو وسيطين (يسارًا ويمينًا) من نوع دالة أو مصفوفة، وتستنتج دالة. قد يكون المعامل: |
بناء الجملة
تتميز لغة APL بتمثيلات صريحة للوظائف والمعاملات والبنية، مما يوفر أساسًا للتصريح الواضح والصريح بالقدرات الموسعة في اللغة، وأدوات للتجربة عليها. [ 72 ]
أمثلة
مرحبا بالعالم
هذا يعرض عبارة " مرحباً بالعالم ":
'مرحبا بالعالم'يتمثل أحد سمات التصميم في لغة APL في تحديد الإجراءات الافتراضية في بعض الحالات التي قد تؤدي إلى أخطاء في بناء الجملة في معظم لغات البرمجة الأخرى.
يتم عرض الثابت النصي 'Hello, world' أعلاه، لأن العرض هو الإجراء الافتراضي على أي تعبير لم يتم تحديد إجراء له بشكل صريح (مثل التعيين، معلمات الدالة).
الأس
مثال آخر على هذا النمط هو أن عملية الأسس في لغة APL تُكتب على النحو التالي 2*3: √2، مما يعني رفع 2 إلى القوة 3 (يُكتب هذا على النحو التالي: √2 2^3أو 2**3√3 في بعض اللغات، أو يُستدعى بواسطة دالة مثل √3 pow(2, 3);في لغات أخرى). تستخدم العديد من اللغات √2 *للدلالة على الضرب، كما في √2 2*3، لكن APL تستخدم √3 2×3. مع ذلك، إذا لم يُحدد أساس (كما هو الحال مع عبارة √2 *3في APL، أو ^3في لغات أخرى)، فإن معظم لغات البرمجة تعتبر هذا خطأً في بناء الجملة. لكن APL تفترض أن الأساس المفقود هو ثابت اللوغاريتم الطبيعي e ، وتُفسر √2 *3على أنه √3 2.71828*3.
إحصائيات بسيطة
لنفترض أن Xلدينا مصفوفة من الأرقام. إذن، (+/X)÷⍴Xيُعطي متوسطها. بقراءة المتوسط من اليمين إلى اليسار ، ⍴Xيُعطي عدد عناصر X، وبما ÷أن عامل ثنائي، فإن الحد الموجود على يساره مطلوب أيضًا. يُحاط هذا الحد بأقواس لأنه لولا ذلك لكانت X تُحسب (وبالتالي سيكون المجموع هو مجموع X÷⍴Xكل عنصر من عناصر X مقسومًا على عدد عناصر X)، ويُعطي +/Xمجموع عناصر X. بناءً على ذلك، تُحسب الانحراف المعياري بالصيغة التالية :
(( + / (( X - ( + / X ) ÷⍴ X ) * 2 )) ÷⍴ X ) * 0.5بطبيعة الحال، يُعرّف هذا التعبير كدالة للاستخدام المتكرر بدلاً من إعادة كتابته في كل مرة. علاوة على ذلك، بما أن الإسناد عامل، فإنه يمكن أن يظهر داخل التعبير، لذا فإن ما يلي سيضع قيمًا مناسبة في T وAV وSD:
SD ← (( + / (( X - AV ← ( T ← + / X ) ÷⍴ X ) * 2 )) ÷⍴ X ) * 0.5اختر 6 أرقام يانصيب
يُنتج التعبير التالي في الوضع الفوري مجموعة نموذجية من أرقام اليانصيب Pick 6 : ستة أعداد صحيحة شبه عشوائية تتراوح من 1 إلى 40، مضمونة عدم التكرار ، ويعرضها مرتبة بترتيب تصاعدي:
x [ ⍋ x ← 6 ? 40 ]يُنجز ما سبق الكثير بإيجاز، على الرغم من أنه قد يبدو معقدًا لمبرمج APL جديد. فهو يجمع بين وظائف APL التالية (وتُسمى أيضًا بالعناصر الأولية [ 73 ] والرموز [ 74 ] ):
- أول ما يتم تنفيذه (تنفذ لغة APL من اليمين إلى اليسار) هو دالة ثنائية
?(تسمىdealعند كونها ثنائية) تُرجع متجهًا يتكون من عدد محدد (الوسيط الأيسر: 6 في هذه الحالة) من الأعداد الصحيحة العشوائية التي تتراوح من 1 إلى قيمة قصوى محددة (الوسيط الأيمن: 40 في هذه الحالة)، والتي، إذا كانت هذه القيمة القصوى ≥ طول المتجه، مضمونة بأنها غير متكررة؛ وبالتالي، يتم إنشاء 6 أعداد صحيحة عشوائية تتراوح من 1 إلى 40. [ 75 ] - ثم يتم تعيين هذا المتجه (
←) إلى المتغيرx، لأنه مطلوب لاحقًا. - ثم يُرتب هذا المتجه ترتيبًا تصاعديًا باستخدام
⍋دالة أحادية، تأخذ كمعامل أيمن كل ما يقع على يمينها حتى القوس غير المتوازن التالي . وتكون نتيجة هذه الدالة⍋هي المؤشرات التي سترتب وسيطها ترتيبًا تصاعديًا. - ثم يتم استخدام مخرجات البرنامج
⍋لفهرسة المتغيرx، الذي قمنا بحفظه سابقًا لهذا الغرض، وبالتالي تحديد عناصره بترتيب تصاعدي .
بما أنه لا توجد دالة على يسار x الموجودة في أقصى اليسار لإخبار APL بما يجب فعله بالنتيجة، فإنها ببساطة تقوم بإخراجها إلى الشاشة (على سطر واحد، مفصولة بمسافات) دون الحاجة إلى أي تعليمات صريحة للقيام بذلك.
?يوجد أيضًا مكافئ أحادي يُسمى roll، والذي يُعيد ببساطة عددًا صحيحًا عشوائيًا واحدًا بين 1 ومعامله الوحيد [على يمينه]، شاملًا. وبالتالي، قد يستخدم برنامج لعبة تقمص الأدوار هذا التعبير ?20لرمي نرد ذي عشرين وجهًا.
الأعداد الأولية
يُحدد التعبير التالي جميع الأعداد الأولية من 1 إلى R. وتُعتبر التعقيدية الحسابية من حيث الوقت والمساحة هي(في تدوين Big O ).
( ~ R ∊ R ∘. × R ) / R ← 1 ↓⍳ Rوهذا يعني عند تنفيذه من اليمين إلى اليسار:
- يقوم برنامج Iota
⍳بإنشاء متجه يحتوي على أعداد صحيحة من1إلىR(إذا كانتR= 6في بداية البرنامج⍳R)1 2 3 4 5 6. - احذف العنصر الأول من هذا المتجه (
↓الدالة)، أي1. لذا1↓⍳Rفهو2 3 4 5 6 - قم
Rبتعيين المتجه الجديد (←، عملية التعيين الأولية)، أي،2 3 4 5 6 - عامل
/النسخ ثنائي (ثنائي) ويقوم المفسر أولاً بتقييم وسيطه الأيسر (بالكامل بين قوسين): - قم بإنشاء حاصل الضرب الخارجي
Rلـ R مضروبًا فيR، أي مصفوفة تمثل جدول ضرب R في R (°.×المُعامل)، أي
| 4 | 6 | 8 | 10 | 12 |
| 6 | 9 | 12 | 15 | 18 |
| 8 | 12 | 16 | 20 | 24 |
| 10 | 15 | 20 | 25 | 30 |
| 12 | 18 | 24 | 30 | 36 |
- قم بإنشاء متجه بنفس طول المتجه
Rالموجود1في كل مكان يكون فيه الرقم المقابلRفي مصفوفة الضرب الخارجي (∈أو مجموعة تضمين أو عنصر من أو عامل إبسيلون )، أي0 0 1 0 1 - انفي القيم في المتجه منطقيًا (باستخدام عامل النفي
∼المنطقي أو عامل التلدة )، أي1 1 0 1 0 - حدد العناصر التي يكون
Rالعنصر المقابل لها هو1( عامل/النسخ )، أي2 3 5
(يفترض هذا أن أصل APL هو 1، أي أن الفهارس تبدأ من 1. يمكن ضبط APL لاستخدام 0 كأصل، وبالتالي ι6يكون 0 1 2 3 4 5، وهو أمر ملائم لبعض العمليات الحسابية.)
فرز
يقوم التعبير التالي بترتيب قائمة الكلمات المخزنة في المصفوفة X وفقًا لطول الكلمة:
X [ ⍋ X + . ≠ ' ' ;]لعبة الحياة
تأخذ الدالة التالية "life"، المكتوبة بلغة Dyalog APL، [ 76 ] [ 77 ] مصفوفة منطقية وتحسب الجيل الجديد وفقًا للعبة الحياة لكونواي . تُظهر هذه الدالة قدرة لغة APL على تنفيذ خوارزمية معقدة باستخدام كمية قليلة جدًا من التعليمات البرمجية، ولكن فهمها يتطلب معرفة متقدمة بلغة APL (كما هو الحال في العديد من اللغات الأخرى).
الحياة ← { ⊃ 1 ⍵ ∨ . ∧ 3 4 = + / + ⌿ ¯1 0 1 ∘. ⊖ ¯1 0 1 ⌽ ¨ ⊂ ⍵ }إزالة علامات HTML
في المثال التالي، وهو أيضاً باستخدام لغة Dyalog، يقوم السطر الأول بتعيين بعض أكواد HTML إلى متغير txtثم يستخدم تعبير APL لإزالة جميع علامات HTML:
txt ← '<html><body><p>هذا نص <em>مؤكد</em>.</p></body></html>' { ⍵ / ⍨ ~ { ⍵ ∨≠ \ ⍵ } ⍵ ∊ '<>' } txt هذا نص مؤكد .تسمية
يستمد اسم لغة APL من الأحرف الأولى لكتاب إيفرسون "لغة برمجة" [ 3 ]، على الرغم من أن الكتاب يصف الترميز الرياضي لإيفرسون ، وليس لغة البرمجة المُطبقة الموصوفة في هذه المقالة. ويُستخدم هذا الاسم فقط للتطبيقات الفعلية، بدءًا من APL\360 .
ابتكر أدين فالكوف هذا الاسم في عام 1966 أثناء تطبيق لغة APL/360 في شركة IBM :
بينما كنتُ أمرّ بجوار المكتب الذي يتشاركه الطلاب الثلاثة، سمعتُ أصوات جدالٍ يدور. أطللتُ برأسي من الباب، فسألني إريك: "أليس صحيحًا أن الجميع يعرف أن الترميز الذي نستخدمه يُسمى APL؟" شعرتُ بالأسف لخيبة أمله بالاعتراف بأنني لم أسمع به يُسمى بهذا الاسم من قبل. من أين أتاه بفكرة أنه معروفٌ على نطاق واسع؟ ومن قرر تسميته بهذا الاسم؟ في الواقع، لماذا كان لا بد من تسميته أصلًا؟ بعد فترة طويلة، عرفتُ كيف سُمّي. عندما بدأ العمل على تنفيذه في يونيو 1966، بدأ العمل على توثيقه أيضًا. أظن أنه عندما اضطر فالكوف وإيفرسون إلى الكتابة عنه، أدركا أنهما سيضطران إلى إعطائه اسمًا. ربما قُدّمت اقتراحات كثيرة في ذلك الوقت، لكنني لم أسمع إلا باقتراحين. كانت مجموعة في SRA في شيكاغو، والتي كانت تُطوّر مواد تعليمية باستخدام الترميز، تُفضّل اسم "Mathlab". لم يلقَ هذا الاسم رواجًا. واقترح آخرون تسميته "رياضيات إيفرسون الأفضل" ثم ترك الأمر للناس ليختاروا الاختصار المناسب. واعتُبر هذا الاقتراح ساخراً.
ثم في أحد الأيام، دخل أدين فالكوف مكتب كين وكتب "لغة برمجة" على السبورة، وتحتها اختصار "APL". وهكذا وُلدت. بعد أسبوع تقريبًا من ذلك، طرح عليّ إريك إيفرسون سؤاله، في وقت لم يكن فيه الاسم قد وصل بعد إلى مسافة ثلاثة عشر ميلاً على طول طريق تاكونيك باركواي من مركز أبحاث آي بي إم إلى مقر آي بي إم موهانسيك.
— يوجين ماكدونيل ، [ 78 ]
يتم أحيانًا إعادة تفسير APL على أنها لغة برمجة المصفوفات أو لغة معالجة المصفوفات ، [ 79 ] مما يجعل APL اختصارًا عكسيًا .
الشعار

لطالما كان هناك تعاون بين موردي لغة APL، وعُقدت مؤتمرات مشتركة بانتظام من عام 1969 حتى عام 2010. [ 80 ] في هذه المؤتمرات، كان يتم توزيع منتجات تحمل شعارات APL أو مجموعة من شعارات الموردين. ومن بين المنتجات الشائعة التفاح (تورية على تشابه نطق كلمتي apple و APL ) ومقتطف الشفرة الذي يمثل الرموز التي ينتجها تخطيط لوحة مفاتيح APL الكلاسيكي عند الضغط على مفتاح تعديل APL وكتابة "APL".⍺*⎕
على الرغم من كل هذه الجهود المجتمعية، لم يظهر شعار موحد للغة البرمجة، لا يرتبط ببائع محدد. ومع تزايد استخدام لغات البرمجة الشائعة لشعارات مميزة، مثل فورتران التي حصلت على شعار في عام 2020، [ 81 ] أطلقت الجمعية البريطانية للغة APL حملة في النصف الثاني من عام 2021، لإنشاء شعار مماثل للغة APL، وبعد انتخابات مجتمعية وجولات متعددة من التعليقات، تم اختيار شعار في مايو 2022. [ 82 ]
يستخدم
تُستخدم لغة APL لأغراض عديدة، منها التطبيقات المالية والتأمينية ، [ 83 ] والذكاء الاصطناعي ، [ 84 ] [ 85 ] والشبكات العصبية، [ 86 ] والروبوتات . [ 87 ] وقد قيل إن APL أداة حسابية وليست لغة برمجة؛ [ 88 ] وقد جعلتها طبيعتها الرمزية وقدراتها على التعامل مع المصفوفات شائعة بين خبراء المجال وعلماء البيانات ، [ 89 ] الذين لا يمتلكون مهارات مبرمج الحاسوب أو لا يحتاجون إليها .
تُعدّ لغة APL مناسبةً تمامًا لمعالجة الصور والرسوم المتحركة الحاسوبية ، حيث يمكن ترميز التحويلات الرسومية كعمليات ضرب المصفوفات. وقد أنتجت شركة Digital Effects ، إحدى أوائل شركات الرسوميات الحاسوبية التجارية، منتجًا رسوميًا بلغة APL يُدعى Visions ، والذي استُخدم لإنشاء إعلانات تلفزيونية ورسوم متحركة لفيلم Tron عام 1982. [ 90 ] وفي الآونة الأخيرة، يستخدم محاكي Stormwind للقوارب لغة APL لتنفيذ منطقه الأساسي، وواجهة وسيطة لخط أنابيب العرض، وجزءًا رئيسيًا من محرك الفيزياء الخاص به . [ 91 ]
لا تزال تقنية APL مستخدمة اليوم في مجموعة واسعة من التطبيقات التجارية والعلمية، [ 83 ] وإدارة الأصول ، [ 92 ] والرعاية الصحية ، [ 93 ] وتحليل الحمض النووي . [ 94 ] [ 95 ]
تطبيقات بارزة
APL\360
كان أول تطبيق للغة APL باستخدام رموز APL المعروفة هو APL\360، الذي تم تشغيله على نظام IBM System/360 ، واكتمل في نوفمبر 1966 [ 1 ] ، مع أنه ظل آنذاك مقتصراً على شركة IBM. [ 41 ] في عام 1973، مُنح مطورو هذه اللغة، لاري بريد وديك لاثويل وروجر مور ، جائزة غريس موراي هوبر من جمعية آلات الحوسبة (ACM). وقد مُنحت الجائزة "لعملهم في تصميم وتنفيذ APL\360، ووضع معايير جديدة في البساطة والكفاءة والموثوقية وسرعة الاستجابة للأنظمة التفاعلية". [ 96 ] [ 97 ] [ 98 ]
في عام 1975، قدم الحاسوب الصغير IBM 5100 لغة APL\360 [ 99 ] كإحدى لغتين تفسيريتين مدمجتين تعتمدان على ذاكرة القراءة فقط (ROM) للحاسوب، مع لوحة مفاتيح وشاشة تدعم جميع الرموز الخاصة المستخدمة في اللغة. [ 100 ]
شملت التطورات الهامة في لغة APL/360 نظام إدارة المحتوى CMS/APL، الذي استفاد من إمكانيات التخزين الافتراضي لنظام إدارة المحتوى ، ولغة APLSV، التي قدمت المتغيرات المشتركة ومتغيرات النظام ووظائف النظام. ثم نُقلت لاحقًا إلى منصتي IBM System/370 و VSPC حتى إصدارها النهائي عام 1983، وبعدها استُبدلت بلغة APL2. [ 41 ]
APL\1130
في عام 1968، أصبح نظام APL\1130 أول نظام APL متاح للجمهور، وقد أنشأته شركة IBM لجهاز IBM 1130. [ 101 ] وأصبح البرنامج الأكثر شيوعًا من بين برامج مكتبة IBM من النوع الثالث التي أصدرتها الشركة. [ 20 ]
APL*Plus و Sharp APL
يُعدّ كلٌّ من APL*Plus وSharp APL إصدارين من APL\360 مع إضافات موجهة للأعمال، مثل تنسيق البيانات وإمكانية تخزين مصفوفات APL في ملفات خارجية. وقد طُوِّرا بشكل مشترك من قِبَل شركتين، بمشاركة أعضاء من فريق تطوير IBM APL\360 الأصلي. [ 102 ]
كانت الشركتان هما IP Sharp Associates (IPSA)، وهي شركة خدمات APL/360 تأسست عام 1964 على يد إيان شارب وروجر مور وآخرين، و STSC ، وهي شركة خدمات استشارية وتقاسم الوقت تأسست عام 1969 على يد لورانس بريد وآخرين. طورت الشركتان معًا برنامج APL*Plus، واستمرتا في العمل معًا بعد ذلك، لكنهما طورتا APL بشكل منفصل تحت اسمي APL*Plus وSharp APL. قامت STSC بنقل APL*Plus إلى العديد من المنصات، حيث تم إصدار نسخ منها لأجهزة VAX 11 و PC و UNIX ، بينما اتبعت IPSA نهجًا مختلفًا مع ظهور الحاسوب الشخصي ، حيث أتاحت Sharp APL على هذه المنصة باستخدام أجهزة PC-XT/360 إضافية . في عام 1993، تأسست شركة Soliton Incorporated لدعم Sharp APL، وقامت بتطوير Sharp APL إلى SAX (Sharp APL لنظام Unix). اعتبارًا من عام 2018، يستمر APL*Plus باسم APL2000 APL+Win.
في عام 1985، حصل إيان شارب ودان داير من شركة STSC بشكل مشترك على جائزة كينيث إي. إيفرسون للمساهمة المتميزة في APL . [ 104 ]
APL2
كانت لغة APL2 إعادة تنفيذ مهمة للغة APL من قِبل شركة IBM، والتي طُوّرت بدءًا من عام 1971 وأُصدرت لأول مرة عام 1984. وقد أضافت العديد من الميزات إلى اللغة، أبرزها دعم المصفوفات المتداخلة (غير المستطيلة). [ 41 ] حاز فريق منتجات وخدمات APL2 بأكمله على جائزة إيفرسون عام 2007. [ 104 ]
في عام 2021، باعت شركة IBM برنامج APL2 إلى شركة Log-On Software، التي تقوم بتطوير وبيع المنتج تحت اسم Log-On APL2 . [ 105 ]
أبليجول
في عام 1972، صدرت لغة APLGOL كنسخة تجريبية من لغة APL، أضافت إليها بنيات لغات البرمجة المهيكلة. أُضيفت عبارات جديدة للتحكم بين العبارات، وتنفيذ العبارات الشرطية، وهيكلة العبارات، بالإضافة إلى عبارات لتوضيح الغرض من الخوارزمية. [ 106 ] تم تطبيقها لصالح شركة هيوليت-باكارد في عام 1977. [ 107 ]
لغة برمجة التطبيقات APL من Dyalog
تم إصدار Dyalog APL لأول مرة من قبل الشركة البريطانية Dyalog Ltd. [ 108 ] في عام 1983 [ 109 ] ، واعتبارًا من عام 2018يتوفر هذا البرنامج لأنظمة AIX و Linux (بما في ذلك Raspberry Pi ) و macOS و Microsoft Windows . وهو مبني على لغة APL2، مع إضافات لدعم البرمجة الكائنية [ 110 ] والبرمجة الوظيفية [ 111 ] والبرمجة الضمنية [ 112 ] . الترخيص مجاني للاستخدام الشخصي/غير التجاري [ 113 ] .
في عام 1995، مُنح اثنان من فريق التطوير - جون سكولز وبيتر دونيلي - جائزة إيفرسون لعملهما على برنامج الترجمة الفورية. [ 104 ] وفي عام 2016، حصلت جيت كريستنسن ومورتن كرومبرغ على جائزة إيفرسون مناصفةً. [ 114 ]
NARS2000
NARS2000 هو مترجم لغة APL مفتوح المصدر، كتبه بوب سميث، وهو مطور ومنفذ بارز للغة APL من شركة STSC في سبعينيات وثمانينيات القرن الماضي. يحتوي NARS2000 على ميزات متقدمة وأنواع بيانات جديدة، ويعمل بشكل أصلي على نظام التشغيل مايكروسوفت ويندوز ، ومنصات أخرى باستخدام Wine . وقد سُمي تيمناً بأداة تطوير من ثمانينيات القرن الماضي، وهي NARS (نظام أبحاث المصفوفات المتداخلة). [ 115 ]
APLX
APLX هي لهجة متعددة المنصات من لغة APL، مبنية على APL2 مع العديد من الإضافات، وقد تم إصدارها لأول مرة من قبل الشركة البريطانية MicroAPL في عام 2002. على الرغم من أنها لم تعد قيد التطوير أو البيع التجاري، إلا أنها متاحة الآن مجانًا من Dyalog. [ 116 ]
يورك إيه بي إل
طُوِّرت لغة برمجة يورك APL [ 117 ] في جامعة يورك ، أونتاريو، حوالي عام 1968، وكانت تعمل على أجهزة IBM 360 الرئيسية. ومن أبرز الاختلافات بينها وبين لغة APL/360 أنها عرّفت "شكل" (ρ) الكمية العددية على أنه 1، بينما عرّفتها APL/360 على أنها 0، وهو الأكثر دقة من الناحية الرياضية - مما سهّل كتابة الدوال التي تعمل بنفس الطريقة مع الكميات العددية والمتجهات.
GNU APL
GNU APL هو تطبيق مجاني للغة Extended APL كما هو محدد في معيار ISO/IEC 13751:2001، وبالتالي فهو تطبيق للغة APL2. يعمل على أنظمة Linux و macOS والعديد من لهجات BSD، وعلى نظام Windows (إما باستخدام Cygwin للدعم الكامل لجميع وظائف النظام، أو كملف تنفيذي أصلي لنظام Windows 64 بت مع بعض وظائف النظام المفقودة). يستخدم GNU APL ترميز Unicode داخليًا، ويمكن برمجته. كتبه يورغن ساورمان. [ 118 ]
كان ريتشارد ستالمان ، مؤسس مشروع جنو ، من أوائل من تبنوا لغة APL، حيث استخدمها لكتابة محرر نصوص عندما كان طالبًا في المدرسة الثانوية في صيف عام 1969. [ 119 ]
تفسير وتجميع لغة البرمجة APL
تُعتبر لغة APL تقليديًا لغةً مُفسَّرة ، وتتميز بخصائص لغوية مثل ضعف تحديد أنواع المتغيرات، مما يجعلها غير مناسبة تمامًا للترجمة . [ 120 ] ومع ذلك، وبفضل اعتمادها على المصفوفات كبنية بيانات أساسية ، [ 121 ] فإنها تُتيح فرصًا لتحسين الأداء من خلال التوازي ، [ 122 ] والحوسبة المتوازية ، [ 123 ] [ 124 ] والتطبيقات المتوازية الضخمة ، [ 125 ] [ 126 ] والتكامل واسع النطاق جدًا (VLSI)، [ 127 ] [ 128 ] ومنذ البداية، اعتُبرت APL لغةً عالية الأداء ، [ 129 ] فعلى سبيل المثال، لُوحظت سرعتها في تنفيذ عمليات المصفوفات المعقدة "لأنها تعمل على المصفوفات وتُجري عمليات مثل عكس المصفوفة داخليًا". [ 130 ]
ومع ذلك، نادراً ما يتم تفسير لغة APL بشكل كامل، وتشمل تقنيات التجميع أو التجميع الجزئي التي يتم استخدامها أو تم استخدامها ما يلي:
التعرف على المصطلحات
تدعم معظم مترجمات لغة APL خاصية التعرف على المصطلحات [ 131 ] ، وتُقيّم المصطلحات الشائعة كعمليات منفردة. [ 132 ] [ 133 ] على سبيل المثال، من خلال تقييم المصطلح BV/⍳⍴Aكعملية منفردة (حيث BVيمثل متجهًا منطقيًا و Aيمثل مصفوفة)، يتم تجنب إنشاء مصفوفتين وسيطتين. [ 134 ]
بايت كود مُحسَّن
يعني التحديد الضعيف للأنواع في لغة APL أن الاسم قد يشير إلى مصفوفة (من أي نوع بيانات)، أو دالة، أو عامل. عمومًا، لا يستطيع المفسر معرفة الشكل الذي سيشير إليه الاسم مسبقًا، ولذلك يجب عليه إجراء التحليل، والتحقق من بناء الجملة، وما إلى ذلك، أثناء التشغيل. [ 135 ] مع ذلك، في ظروف معينة، من الممكن استنتاج نوع البيانات المتوقع أن يشير إليه الاسم مسبقًا، ثم توليد رمز وسيط يمكن تنفيذه مع تقليل الحمل الزائد أثناء التشغيل. يمكن أيضًا تحسين هذا الرمز الوسيط باستخدام تقنيات الترجمة مثل طي الثوابت أو حذف التعبيرات الفرعية المشتركة . [ 136 ] سينفذ المفسر الرمز الوسيط عند وجوده وعند استيفاء أي افتراضات تم وضعها. تتضمن لغة Dyalog APL دعمًا للرمز الوسيط المُحسَّن. [ 136 ]
تجميع
كان تجميع لغة APL موضوعًا للبحث والتجريب منذ ظهورها لأول مرة؛ ويُعتبر مُجمِّع Burroughs APL-700 [ 137 ] ، الذي صدر حوالي عام 1971، أول مُجمِّع لها. [ 138 ] ولتتمكن من تجميع لغة APL، لا بد من فرض قيود لغوية. [ 137 ] [ 139 ] يُعد APEX مُجمِّعًا بحثيًا للغة APL، كتبه روبرت بيرنيكي ، وهو مُتاح بموجب رخصة جنو العمومية العامة . [ 140 ]
يُعد مُجمِّع STSC APL مزيجًا بين مُحسِّن الشفرة البايتية والمُجمِّع - فهو يُتيح ترجمة الدوال إلى شفرة الآلة شريطة تعريف الدوال الفرعية والمتغيرات العامة ، ولكن لا يزال يُستخدم المُفسِّر كمكتبة وقت التشغيل ولتنفيذ الدوال التي لا تستوفي متطلبات الترجمة. [ 141 ]
المعايير
تم توحيد لغة APL من قبل المعهد الوطني الأمريكي للمعايير (ANSI) مجموعة العمل X3J10 والمنظمة الدولية للمعايير (ISO) واللجنة الكهروتقنية الدولية (IEC)، اللجنة الفنية المشتركة 1 اللجنة الفرعية 22 مجموعة العمل 3. تم تحديد لغة APL الأساسية في ISO 8485:1989، وتم تحديد لغة APL الموسعة في ISO/IEC 13751:2001.
انظر أيضاً
مراجع
- 1 2 "اقتباسات وحكايات من شركة APL" . jsoftware.com . تم الاطلاع عليه بتاريخ 14 أبريل 2018 .
- ↑ "std::iota" . cppreference.com .
- 1 2 3 كينيث إي. إيفرسون (1962). لغة برمجة (ملف PDF) . وايلي . ISBN 978-0-471-43014-8. إل سي سي إن 62015180 . رأ 26792153 م . ويكي بيانات Q133329895 . تم الاسترجاع بتاريخ 2023-08-06 .
{{cite book}}عدم توافق رقم ISBN / التاريخ ( مساعدة ) - ↑ ماكنتاير، دونالد ب. (1991). "اللغة كأداة فكرية: من الهيروغليفية إلى لغة البرمجة APL" . مجلة أنظمة IBM . 30 (4): 554-581 . doi : 10.1147/sj.304.0554 . مؤرشف من الأصل في 4 مارس 2016. تم الاطلاع عليه في 9 يناير 2015 .
- ↑ "شهادة تقدير جائزة ACM - جون باكوس" . Awards.acm.org. 1977. مؤرشف من الأصل في 12 فبراير 2008. تم الاطلاع عليه في 3 فبراير 2010 .
- 1 2 مولر، كليف. "نمو برنامج MATLAB" (ملف PDF) . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 11 أبريل 2009. تم الاطلاع عليه بتاريخ 3 فبراير 2010 .
- 1 2 هوي، روجر. "ببليوغرافيا لغة APL و J" . jsoftware.com/jwiki . تم الاطلاع عليه في 2 مارس 2010 .
- 1 2 "مقابلة مع آرثر ويتني" . كي إكس سيستمز. 4 يناير 2004. مؤرشف من الأصل في 4 أبريل 2009. تم الاطلاع عليه في 2 مارس 2010 .
- ↑ إيفرسون، كينيث إي، "معالجة البيانات الآلية: الفصل 6: لغة برمجة" مؤرشف في 4 يونيو 2009، في Wayback Machine ، 1960، نسخة مسودة لكتاب بروكس وإيفرسون 1963، معالجة البيانات الآلية .
- ↑ بروكس، فريد ؛ إيفرسون، كينيث، (1963)، معالجة البيانات الآلية ، جون وايلي وأولاده.
- ↑ "بيان جائزة تورينج 1979" . Awards.acm.org. مؤرشف من الأصل بتاريخ 23 ديسمبر 2009. تم الاطلاع عليه بتاريخ 3 فبراير 2010 .
- ↑ هيلرمان، هـ. (يوليو 1964). "نظام ترجمة المصفوفات الشخصية التجريبي" . اتصالات رابطة آلات الحوسبة . 7 (7): 433-438 . doi : 10.1145/364520.364573 . S2CID 2181070 .
- ↑ فالكوف، أدين د .؛ إيفرسون، كينيث إي. (أغسطس 1978). "تطور لغة APL" . إشعارات ACM SIGPLAN . 13 (8): 47-57 . doi : 10.1145/960118.808372 .
- ↑ Abrams, Philip S., مترجم لـ "تدوين إيفرسون" ، تقرير فني: CS-TR-66-47، قسم علوم الحاسوب، جامعة ستانفورد، أغسطس 1966؛
- ↑ هايغ، توماس (2005). "سير ذاتية: كينيث إي. إيفرسون". حوليات معهد مهندسي الكهرباء والإلكترونيات لتاريخ الحوسبة . doi : 10.1109/MAHC.2005.4 .
- 1 2 بريد، لاري، "أول جلسة طرفية APL" ، APL Quote Quad ، جمعية آلات الحوسبة، المجلد 22، العدد 1، سبتمبر 1991، ص 2-4.
- ↑ 19، 2009 أدين فالكوف – متحف تاريخ الحاسوب. "نسب إيفرسون إليه الفضل في اختيار اسم APL وتقديم آلة الكتابة IBM ذات رأس الكتابة البديل، والتي وفرت مجموعة الأحرف الشهيرة لتمثيل البرامج."
- ↑ منتجات تيكترونيكس 1973 (ملف PDF) . صفحة 276. تم الاطلاع عليه بتاريخ 18 مارس 2026 .
- ↑ شاشة عرض الكمبيوتر Tektronix 4013 (ملف PDF) . الصفحات 3-5 . تاريخ الاطلاع: 18 مارس 2026 .
- 1 2 بريد، لاري (أغسطس 2006). "كيف وصلنا إلى APL\130" . فيكتور (الرابطة البريطانية لـ APL) . 22 (3). ISSN 0955-1433 . مؤرشف من الأصل في 12 مايو 2008. تم الاسترجاع في 2 أبريل 2007 .
- ↑ دليل APL\1130 مؤرشف بتاريخ 21 فبراير 2011 في أرشيف الإنترنت (Wayback Machine) ، مايو 1969
- ↑ "تخليد ذكرى APL" . Quadibloc.com . تم الاطلاع عليه بتاريخ 17 يونيو 2013 .
- ↑ فالكوف، أدين؛ إيفرسون، كينيث إي، "دليل مستخدمي APL\360" مؤرشف في 2012-02-29 في Wayback Machine ، أبحاث IBM، مركز أبحاث توماس جيه واتسون، يوركتاون هايتس، نيويورك، أغسطس 1968.
- ↑ "نظام طرفي APL\360" مؤرشف في 2010-07-11 في Wayback Machine ، أبحاث IBM، مركز أبحاث توماس ج. واتسون، مارس 1967.
- 1 2 باكين، ساندرا (1968). دليل مرجعي APL\360 . شركة ساينس ريسيرش أسوشيتس. ISBN 978-0-574-16135-2.
- ↑ فالكوف، أدين د.؛ إيفرسون، كينيث إي.، تصميم لغة APL ، مجلة IBM للبحوث والتطوير ، المجلد 17، العدد 4، يوليو 1973. "استندت هذه الدوال المُعرَّفة بيئيًا إلى استخدام فئة أخرى من الدوال - تُسمى "الأعمدة I" نسبةً إلى شكل الرمز المستخدم لها - والتي تُوفر وسيلةً أكثر عموميةً للتواصل بين برامج APL والأجزاء الأقل تجريدًا من النظام. وقد قدّم مبرمجو النظام دوال الأعمدة I لأول مرة لتمكينهم من تنفيذ تعليمات System/360 من داخل برامج APL، وبالتالي استخدام APL كأداة مساعدة مباشرة في نشاطهم البرمجي. وقد أدّت سهولة استخدام هذا النوع من الدوال، التي بدت وكأنها جزء من اللغة، إلى تقديم دالة الأعمدة I الأحادية للاستخدام المباشر من قِبل أي شخص. وقد أسفرت وسائط مختلفة لهذه الدالة عن معلومات حول البيئة، مثل المساحة المتاحة ووقت اليوم."
- ↑ مينكر، جاك (يناير 2004). "2.3.4 تطورات برمجيات الحاسوب في مركز علوم الحاسوب، 1962-1973". بداية الحوسبة وعلوم الحاسوب في جامعة ميريلاند (ملف PDF) (تقرير). جامعة ميريلاند. ص 38. مؤرشف من الأصل (ملف PDF) في 10 يونيو 2011. تم الاطلاع عليه في 23 مايو 2011 .
- ↑ ستيبنز، آلان. "كيف بدأ كل شيء" . مؤرشف من الأصل بتاريخ 4 مارس 2016. تم الاطلاع عليه بتاريخ 22 مايو 2011 .
- ↑ "دليل مرجعي للغة وعمليات APL من زيروكس" (ملف PDF) . مؤرشف من الأصل بتاريخ 12 أبريل 2026. تم الاطلاع عليه بتاريخ 17 مارس 2026 .
{{cite web}}: CS1 maint: bot: حالة عنوان URL الأصلي غير معروفة ( رابط ) - ↑ "SIGAPL" . Sigapl.org . تم الاطلاع عليه في 17 يونيو 2013 .
- ↑ "خمسون عامًا من لغة البرمجة BASIC، التي جعلت الحواسيب شخصية" . مجلة تايم . 29 أبريل 2014. مؤرشف من الأصل في 2 يونيو 2023. تم الاطلاع عليه في 29 أبريل 2018 .
- ↑ "MCM Computers M70/M700" . old-computers.com . مؤرشف من الأصل في 3 أبريل 2018. تم الاطلاع عليه في 8 أبريل 2018 .
- ↑ ستاشنيك، ستاشنيك (2011). اختراع الحاسوب الشخصي: قصة MCM/70 . مطبعة جامعة ماكجيل كوينز. ISBN 978-0-7735-3852-8.
- ↑ ميلر، مايكل (17 ديسمبر 2014). "أجهزة الكمبيوتر الشخصية التي مهدت الطريق لجهاز ألتاير" . مجلة الكمبيوتر الشخصي . زيف ديفيس . تم الاطلاع عليه في 29 أبريل 2018 .
- ↑ "كمبيوتر عائلة فيديو برين" ، مجلة العلوم الشعبية ، نوفمبر 1978، إعلان.
- ↑ "نظرة على سوبر بيت" . مجلة الحوسبة!، شركة خدمات الأنظمة الصغيرة، ديسمبر 1981. تم الاطلاع عليه بتاريخ 29 أبريل 2018 .
- ↑ غيتس، بيل (31 يناير 1976). "رسالة مفتوحة إلى الهواة" . نشرة نادي هومبرو للحاسوب . مؤرشفة من الأصل في 22 ديسمبر 2019. تم الاطلاع عليها في 29 أبريل 2018 .
- ↑ هوي، روجر. "تخليد ذكرى كين إيفرسون" . keiapl.org . KEIAPL . تم الاطلاع عليه بتاريخ 10 يناير 2015 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ "كينيث إي. إيفرسون" . جائزة تورينج من جمعية آلات الحوسبة . جمعية آلات الحوسبة . تم الاطلاع عليه في 10 يناير 2015 .
- ↑ "APL2: السنوات الأولى: هل يمكنك، وهل ينبغي عليك، التنازل بشأن المسائل التقنية؟" . فصل SIGPLAN حول لغات برمجة المصفوفات . ACM . تم الاطلاع عليه في 10 يناير 2015 .
- 1 2 3 4 فالكوف، أدين د. (1991). "عائلة أنظمة APL من IBM". مجلة أنظمة IBM . 30 (4): 416-432 . doi : 10.1147/sj.304.0416 . S2CID 19030940 .
- ↑ "IBM APL2" . EDM2 . 9 أكتوبر 2019. مؤرشف من الأصل في 17 نوفمبر 2021. تم الاطلاع عليه في 17 نوفمبر 2021 .
- ↑ "APL2: ما الجديد" . ibm.com . IBM . تم الاطلاع عليه بتاريخ 22 أبريل 2018 .
- ↑ مايكرو إيه بي إل. "نظرة عامة على نظام إيه بي إل" . microapl.com . مايكرو إيه بي إل . تم الاطلاع عليه بتاريخ 10 يناير 2015 .
- ↑ روبرتسون، غرايم. "نظرة شخصية على مؤتمر APL2010" . archive.vector.org.uk . فيكتور - مجلة الجمعية البريطانية لمطوري البرمجيات التطبيقية. مؤرشف من الأصل في 2 أبريل 2015. تم الاطلاع عليه في 10 يناير 2015 .
- ↑ رودريغيز، ب.؛ روخاس، ج.؛ ألفونسيكا، م.؛ بورغوس، ج.إ. (1989). "نظام خبير في التخليق الكيميائي مكتوب بلغة APL2/PC". ACM SIGAPL APL Quote Quad . 19 (4): 299–303 . doi : 10.1145/75144.75185 . S2CID 16876053 .
- ↑ "APL2: لغة برمجة لحل المشكلات، والتصور، والوصول إلى قواعد البيانات" . www-03.ibm.com . شركة IBM. مؤرشف من الأصل بتاريخ 22 نوفمبر 2013. تم الاطلاع عليه بتاريخ 10 يناير 2015 .
- ↑ بايك، روب (25-03-2018). "اللبلاب" . غودوك . مؤرشف من الأصل في 13-08-2019.
- ↑ "أسئلة وأجوبة حول لغة وولفرام" . وولفرام . تم الاطلاع عليه في 20 فبراير 2020.
كانت لغتا LISP وAPL من أوائل المؤثرات
. - ↑ شركة تكساس إنسترومنتس (1977). "إعلان صفحة كاملة عن TI 745: تقديم مجموعة جديدة من الأحرف" . مجلة كمبيوتر وورلد . 11 (27): 32. تم الاطلاع عليه بتاريخ 20 يناير 2015 .
- 1 2 "خطوط ولوحات مفاتيح APL" . شركة Dyalog المحدودة . 2004-2024 . تم الاطلاع عليه في 1 نوفمبر 2024 .
- ↑ سميث، بوب. "لوحة مفاتيح NARS2000" . www.sudleyplace.com . بوب سميث؛ NARS2000 . تم الاطلاع عليه بتاريخ 19 يناير 2015 .
- ↑ "مقدمة إلى لغة APL - رموز APL" . www.microapl.co.uk . شركة MicroAPL المحدودة . تم الاطلاع عليه بتاريخ 8 يناير 2015 .
- ↑ براون، جيمس أ.؛ هوكس، برنت؛ تريمبل، راي (1993). "توسيع مجموعة أحرف لغة APL". ACM SIGAPL APL Quote Quad . 24 (1): 41–46 . doi : 10.1145/166198.166203 .
- ↑ كرومبرغ، مورتن. "دعم يونيكود للغة APL" . archive.vector.org.uk . مجلة Vector، مجلة الجمعية البريطانية للغة APL. مؤرشف من الأصل في 20 يناير 2015. تم الاطلاع عليه في 8 يناير 2015 .
- ↑ هسو، آرون. "التوعية والتعليم في علوم الحاسوب باستخدام لغة APL" . شركة Dyalog المحدودة. مؤرشف من الأصل في 17 أغسطس 2016. تم الاطلاع عليه في 15 يوليو 2016 .
- 1 2 مايكرو إيه بي إل. "المشغلون" . www.microapl.co.uk . مايكرو إيه بي إل . تم الاطلاع عليه في 12 يناير 2015 .
- ↑ الدوال الأولية. "الدوال الأولية" . www.microapl.co.uk/ . تم الاطلاع عليه في 1 يناير 2015 .
- ↑ مساحة العمل. "مساحة العمل" . www.microapl.co.uk . تم الاطلاع عليه في 1 يناير 2015 .
- ↑ "مثال" . Catpad.net. مؤرشف من الأصل في 8 يوليو 2013. تم الاطلاع عليه في 17 يونيو 2013 .
- ↑ "إدخال رموز APL" . www.microapl.co.uk . تم الاطلاع عليه في 1 يناير 2015 .
- ↑ ديكي، لي (1993). "قائمة بمخططات الترجمة الصوتية للغة APL" . مؤرشف من الأصل في 29-09-2006.
- ↑ إيفرسون، ك. إي. (أغسطس 1980). "التدوين كأداة للفكر" . مجلة اتصالات رابطة مكائن الحوسبة . 23 (8): 444-465 . doi : 10.1145/358896.358899 . مؤرشف من الأصل في 20 سبتمبر 2013.
- ^ باتنبرج. "كفاءة APL" . www.ekevanbatenburg.nl . تم الاسترجاع 1 يناير، 2015 .
- ↑ فاكسمان. "برمجة APL الرائعة" (ملف PDF) . www.vaxman.de . مؤرشف (ملف PDF) من الأصل بتاريخ 9 أكتوبر 2022. تم الاطلاع عليه بتاريخ 1 يناير 2015 .
- ↑ جانكو، وولفغانغ (مايو 1987). "دراسة كفاءة استخدام لغة APL لبرمجة آلة استدلال". ACM SIGAPL APL Quote Quad . 17 (4): 450–456 . doi : 10.1145/384282.28372 .
- ↑ بوراليس. "لماذا APL؟" . www.aplborealis.com . تم الاطلاع عليه في 1 يناير 2015 .
- ↑ إيفرسون، كينيث إي. (1987). "قاموس لغة APL" . www.jsoftware.com . تم الاطلاع عليه بتاريخ 20 يناير 2015 .
- 1 2 3 4 5 6 "مفاهيم APL" . Microapl.co.uk . تم الاطلاع عليه في 3 فبراير 2010 .
- ↑ "نظرية المصفوفات المتداخلة" . Nial.com. مؤرشف من الأصل بتاريخ 9 يوليو 2011. تم الاطلاع عليه بتاريخ 3 فبراير 2010 .
- 1 2 3 "Programmera i APL"، بوهمان، فروبيرج، Studentlitteratur ، ISBN 91-44-13162-3
- ↑ إيفرسون، كينيث إي. (1983). "صياغة ودلالات لغة APL" . www.jsoftware.com . شركة آي بي شارب أسوشيتس . تم الاطلاع عليه بتاريخ 11 يناير 2015 .
- ↑ مايكرو إيه بي إل. "مبادئ لغة البرمجة APL" . www.microapl.co.uk . مايكرو إيه بي إل . تم الاطلاع عليه بتاريخ 11 يناير 2015 .
- ↑ "خط APL - رموز APL إضافية" . wiki.nars2000.org . NARS2000 . تم الاطلاع عليه بتاريخ 11 يناير 2015 .
- ↑ فوكس، رالف ل. "الأرقام العشوائية المنهجية" . www.sigapl.org . SIGAPL . تم الاطلاع عليه في 11 يناير 2015 .
- ↑ سكولز، جون (26 يناير 2009). لعبة كونواي للحياة في لغة APL (فيديو). يوتيوب . تم الاطلاع عليه في 20 نوفمبر 2021 .
- ↑ لمزيد من التفاصيل التقنية، راجع مقالة "لعبة كونواي للحياة" على موقع APL Wiki . تم الاطلاع عليها بتاريخ 20 نوفمبر 2021.
- ↑ ماكدونيل، إي إي. مقدمة كتاب المصادر في لغة برمجة التطبيقات (APL )، مطبعة APL، 1981. ( مسح ضوئي كامل للكتاب )
- ↑ أشاريا، ر؛ بيريرا، (904567457) لغة برمجة NE APL مؤرشفة في 2021-11-03 على موقع Wayback Machine . ورقة بحثية لمقرر CS5314 (مفاهيم لغات البرمجة) في جامعة فرجينيا للتكنولوجيا.
- ↑ ويكي APL. مؤتمر APL . تم الاطلاع عليه بتاريخ 13 أكتوبر 2021.
- ↑ جاكوب ويليامز. ديجينيريت كونيك: دماء جديدة . تم الاطلاع عليه بتاريخ 13 أكتوبر 2021.
- ↑ ويكي APL. شعار APL . تم الاطلاع عليه بتاريخ 20 مايو 2022.
- ١ ٢ "التقرير السنوي لعام ٢٠١٧" (ملف PDF) . سيمكورب. ١ فبراير ٢٠١٨. مؤرشف (ملف PDF) من الأصل بتاريخ ٩ أكتوبر ٢٠٢٢. تم الاطلاع عليه بتاريخ ٣ أبريل ٢٠١٨.
صوفيا هي منصة لإدارة الاستثمارات شاملة، مثل سيمكورب دايمنشن.
...تعتمد صوفيا على لغة برمجة APL، تمامًا مثل بعض أجزاء سيمكورب دايمنشن.
- ↑ لي، جورج؛ ليلوش، رودي؛ ميسونييه، فنسنت؛ زاري، جيان بييرو (1 سبتمبر 1982). "استخدام لغة APL في بيئة الذكاء الاصطناعي" . ACM SIGAPL APL Quote Quad . 13 (1): 183–191 . doi : 10.1145/390006.802242 . تاريخ الاسترجاع: 3 أبريل 2018 .
- ↑ فوردس، ك.؛ سوليفان، ج. (1985). "أدوات تطوير الذكاء الاصطناعي" . APL Quote Quad . APL 85 Conf. Proc. (15): 106–113 . doi : 10.1145/255315.255347 .
- ↑ ألفونسيكا، مانويل (يوليو 1990). "الشبكات العصبية في لغة APL" . مجلة ACM SIGAPL APL Quote Quad . 20 (4): 2–6 . doi : 10.1145/97811.97816 . تاريخ الاسترجاع: 3 أبريل 2018 .
- ^ كرومبرج، مورتن. "برمجة الروبوت في APL" . www.dyalog.com/ . تم الاسترجاع 6 يناير، 2015 .
- ↑ هولمز، دبليو إن (مايو 1978). "هل لغة APL لغة برمجة؟" . مجلة الكمبيوتر . 21 (2): 128-131 . doi : 10.1093/comjnl/21.2.128 .
- ↑ هسو، آرون (18 نوفمبر 2017). "أنماط التصميم مقابل الأنماط المضادة في لغة APL" . functionalconf.com . مؤرشف من الأصل في 23 مارس 2018. تم الاطلاع عليه بتاريخ 7 أبريل 2018 .
- ^ ماجنينات تالمان، نادية؛ تالمان ، دانيال (1985). نظرية الرسوم المتحركة بالكمبيوتر والتطبيق . سبرينغر-فيرلاغ . ص. 38. ردمك 9784431684336تم الاطلاع عليه بتاريخ 3 أبريل 2018. تُعدّ
شركة Digital Effects
إحدى شركات الإنتاج التي عملت على فيلم Tron .وقد استخدمت نظام المسح الليزري لرقمنة الصور وتخزينها وإعادة إنتاجها. جودسون روزبوش، رئيس شركة Digital Effects، هو المصمم الرئيسي لبرنامجي APL VISION وFORTRAN VISION، وهما برنامجان للرسوم المتحركة الحاسوبية يُستخدمان حاليًا.
- ↑ غوتسيل، سام (17 أكتوبر 2017). "محاكي ستورمويند في مؤتمر دايالوج 2016" . www.optima-systems.co.uk . أوبتيما سيستمز . تم الاطلاع عليه في 3 أبريل 2018.
ستورمويند هو [محاكي ثلاثي الأبعاد للإبحار] حظي باهتمام كبير في مجتمع APL
. - ↑ "OP-Pohjola ja Tieto hoitivat sovelluksen muutostyöt sujuvalla yhteistyöllä" [ تعاون سلس بين OP-Pohjola وTieto لتعديل التطبيق ] (PDF) . www.tieto.com (باللغة الفنلندية). تيتو . مؤرشفة من الأصلي (PDF) بتاريخ 2022-10-09 . تم الاسترجاع في 3 أبريل 2018 .
- ↑ "Vi idag" [ نحن اليوم ] . profdoccare.se (باللغة السويدية). مؤرشف من الأصل في 7 أبريل 2018. تم الاطلاع عليه في 3 أبريل 2018.
من خلال اختيار لغة APL كمنصة تقنية، من السهل نسبيًا بناء حل بسرعة يمكن تسميته نموذجًا أوليًا قابلًا للتنفيذ (مترجم من الأصل).
- ↑ برينر، تشارلز. "تقنية تحديد الحمض النووي وAPL" . dna-view.com . عرض تقديمي في مؤتمر مستخدمي APL لعام 2005. تم الاطلاع عليه في 9 يناير 2015 .
- ↑ برينر، تشارلز (17 أكتوبر 2014). "الحمض النووي موجود في كل مكان - فرصة لـ APL" . www.youtube.com . يوتيوب. مؤرشف من الأصل في 14 نوفمبر 2021. تم الاطلاع عليه في 9 يناير 2015 .
- ↑ "الجوائز – 1973 – لورانس بريد" . جمعية آلات الحوسبة. مؤرشف من الأصل في 2 أبريل 2012.
- ↑ "الجوائز – 1973 – ريتشارد لاثويل" . جمعية آلات الحوسبة. مؤرشف من الأصل في 2 أبريل 2012.
- ↑ "الجوائز – 1973 – روجر مور" . جمعية آلات الحوسبة. مؤرشف من الأصل في 2 أبريل 2012.
- ↑ "IBM 5100" . old-computers.com . مؤرشف من الأصل في 30 أبريل 2018. تم الاطلاع عليه في 8 أبريل 2018 .
- ↑ "مرحباً بكِ يا شركة IBM في عالم الحوسبة الشخصية" . بايت . ديسمبر 1975. ص 90. تم الاطلاع عليه بتاريخ 29 أبريل 2018 .
- ↑ "التسلسل الزمني للغة APL وتأثيراتها على تطوير لغات البرمجة" . www.sigapl.org . ACM . تم الاطلاع عليه بتاريخ 29 أبريل 2018 .
- ↑ روجر مور (2005). "تاريخ مشاركة الوقت والشبكة لشركة آي بي شارب أسوشيتس" . Rogerdmoore.ca . روجر مور. مؤرشف من الأصل في 4 أبريل 2019. تم الاطلاع عليه في 7 مارس 2018 .
- ↑ بلومنتال، مارسيا (18 مايو 1981). "أجهزة VAX-11 تحصل على معالج APL" . مجلة Computerworld . تم الاطلاع عليه في 22 أبريل 2018 .
- ١ ٢ ٣ "جائزة كينيث إي. إيفرسون للإسهام المتميز في لغة برمجة المصفوفات" . فرع SIGPLAN للغات برمجة المصفوفات (SIGAPL). مؤرشف من الأصل بتاريخ ٢٦ فبراير ٢٠١٢.
- ↑ مارك شورا (26 يناير 2021). "شركة Log-On Software تعلن عن Log-On APL2" . شركة Log-On Software . مؤرشف من الأصل بتاريخ 17 نوفمبر 2021. تم الاطلاع عليه بتاريخ 17 نوفمبر 2021 .
- ↑ كيلي، ر. أ. (1973). "APLGOL، لغة برمجة هيكلية تجريبية" . مجلة IBM للبحوث والتطوير . 17 : 69-73 . doi : 10.1147/rd.171.0069 .
- ↑ جونستون، رونالد ل. (يوليو 1977). "APLGOL: مرافق البرمجة المهيكلة للغة APL" . مجلة هيوليت-باكارد.
- ↑ "موقع شركة دايالوغ المحدودة" . تم الاطلاع عليه بتاريخ 6 يونيو 2018 .
- ↑ "حوار في عامه الخامس والعشرين" (ملف PDF) . مجلة فيكتور . الجمعية البريطانية لـ APL. سبتمبر 2008. تم الاطلاع عليه في 14 أبريل 2018 .
- ^ كرومبيرج ، مورتن (22 أكتوبر 2007). "مصفوفات الكائنات" (PDF) . وقائع ندوة عام 2007 حول اللغات الديناميكية . ص. 20. دوي : 10.1145/1297081.1297087 . رقم ISBN 9781595938688S2CID 18484472. مؤرشف (PDF) من الأصل بتاريخ 9 أكتوبر 2022. تم الاطلاع عليه بتاريخ 27 أغسطس 2018 .
- ↑ سكولز، جون. "D: مجموعة فرعية وظيفية من Dyalog APL" . جمعية APL البريطانية.
- ↑ سكولز، جون. "ترجمة الدوال D إلى صيغة ضمنية" . شركة دايالوج المحدودة.
- ↑ "Dyalog – الأسعار والتراخيص" .
- ↑ "جائزة إيفرسون لعام 2016 تُكرّم الرئيس التنفيذي والمدير التنفيذي لشركة دايالوغ" . تم الاطلاع عليها بتاريخ 6 يونيو 2018 .
- ↑ "نظام أبحاث المصفوفات المتداخلة – NARS2000: مترجم تجريبي للغة APL" . NARS2000 . شركة سودلي بليس للبرمجيات . تم الاطلاع عليه بتاريخ 10 يوليو 2015 .
- ↑ «تم سحب برنامج APLX من البيع التجاري، ولكن يمكن تنزيله مجانًا» . Microapl.com . تم الاطلاع عليه بتاريخ 14 أبريل 2018 .
- ↑ "York APL" (PDF) .
- ↑ "GNU APL" . directory.fsf.org . دليل البرمجيات الحرة . تم الاطلاع عليه بتاريخ 28 سبتمبر 2013 .
- ↑ ستالمان، ريتشارد م. "آر إم إس بيراتار" . مؤرشف من الأصل في 26 نوفمبر 2018. تم الاطلاع عليه في 22 أبريل 2018 .
- ↑ بود، تيموثي (1988). مُجمِّع لغة APL . سبرينغر-فيرلاغ. ISBN 978-0-387-96643-4.
- ↑ "ما هي لغة APL؟" . www.sigapl.org . SIGAPL . تم الاطلاع عليه بتاريخ 20 يناير 2015 .
- ↑ جو، دز-تشينغ؛ تشينغ، واي-مي (1991). "استغلال التوازي في بيانات لغة APL على جهاز MIMD ذي ذاكرة مشتركة". وقائع ندوة ACM SIGPLAN الثالثة حول مبادئ وممارسات البرمجة المتوازية . المجلد 26. الصفحات 61-72 . doi : 10.1145/109625.109633 . ISBN 0-89791-390-6. S2CID 8584353 .
- ↑ هسو، آرون دبليو؛ بومان، ويليام جيه. "إعادة النظر في لغة برمجة التطبيقات المتقدمة في العصر الحديث" (ملف PDF) . www.cs.princeton.edu . مؤرشف (ملف PDF) من الأصل بتاريخ 9 أكتوبر 2022. تم الاطلاع عليه بتاريخ 20 يناير 2015 .
- ↑ تشينغ، و.م.؛ جو، د. (1991). "تنفيذ برامج APL المتوازية تلقائيًا على RP3" . مجلة IBM للبحوث والتطوير . 35 (5/6): 767-777 . doi : 10.1147/rd.355.0767 . مؤرشف من الأصل في 3 مارس 2016. تم الاسترجاع في 20 يناير 2015 .
- ↑ بليلوخ، جاي إي؛ سابوت، غاري دبليو (1990). "ترجمة لغات البرمجة الموجهة نحو المجموعات إلى حواسيب متوازية ضخمة". مجلة الحوسبة المتوازية والموزعة . 8 (2): 119-134 . CiteSeerX 10.1.1.51.5088 . doi : 10.1016/0743-7315(90)90087-6 .
تشمل لغات البرمجة الموجهة نحو المجموعات APL وAPL2.
- ↑ جيندرزوك، يوهانس؛ هوفمان، رولف؛ إديجر، باتريك؛ كيلر، يورغ. "تنفيذ وظائف معالجة البيانات المتوازية الشبيهة بلغة APL على جهاز GCA" (ملف PDF) . www.fernuni-hagen.de . الصفحات 1-6 . مؤرشف من النسخة الأصلية (PDF) بتاريخ 22 يناير 2015. تم الاطلاع عليه بتاريخ 22 يناير 2015. GCA - الأتمتة الخلوية العالمية .
تتميز بطبيعتها بالتوازي الهائل. تم اختيار لغة APL لقدرتها على التعبير عن هياكل المصفوفات والمتجهات.
- ↑ برينر، نورمان (1984). "تصميم دوائر VLSI باستخدام لغة APL مع إجراءات فرعية مكتوبة بلغة فورتران". وقائع المؤتمر الدولي حول لغة APL - APL '84 . المجلد 14. الصفحات 77-79 . doi : 10.1145/800058.801079 . ISBN 0-89791-137-7S2CID 30863491. لغة برمجة
APL للتفاعلية وسهولة البرمجة
• برينر، نورمان (1984). "تصميم دوائر VLSI باستخدام لغة APL مع إجراءات فرعية بلغة فورتران". وقائع المؤتمر الدولي حول لغة APL - APL '84 . ACM SIGAPL. ISBN 978-0897911375. - ↑ غامبل، دي جيه؛ هوبسون، آر إف (1989). "نحو بيئة رسومية/إجرائية لإنشاء مولدات وحدات VLSI". وقائع مؤتمر IEEE لمنطقة المحيط الهادئ للاتصالات والحواسيب ومعالجة الإشارات . الصفحات 606-611 . doi : 10.1109/PACRIM.1989.48437 . S2CID 7921438. يصف هذا البحث مولدات وحدات VLSI .
ويمكن ربط لغتي APL وC، كمثالين على اللغات المفسرة والمترجمة، بشاشة عرض رسومية متقدمة.
- ↑ لي، روبرت س. (1983). "تطبيقان للغة APL" . مجلة PC . 2 (5): 379. تم الاطلاع عليه في 20 يناير 2015 .
- ↑ "لغة برمجة APL" . مارثا ولاما . مؤرشف من الأصل في 13 فبراير 2015. تم الاطلاع عليه في 20 يناير 2015 .
- ↑ ميتزجر، روبرت؛ وين، تشاوفانغ (2000). التعرف التلقائي على الخوارزميات واستبدالها: منهج جديد لتحسين البرامج . مطبعة معهد ماساتشوستس للتكنولوجيا. ISBN 9780262133685تم الاطلاع عليه بتاريخ 6 مايو 2018 .
- ↑ سنايدر، لورانس (1982). "التعرف على المصطلحات واختيارها لتحسين الكود". مجلة أكتا إنفورماتيكا . 17 (3). doi : 10.1007/BF00264357 . S2CID 8369972 .
- ↑ تشنغ، فينغ شنغ (1981). مطابقة المصطلحات: تقنية تحسين لمترجم لغة APL (أطروحة). جامعة ولاية آيوا . تم الاطلاع عليه في 6 مايو 2018 .
- ↑ "التعرف على المصطلحات" . dyalog.com . تم الاطلاع عليه في 6 مايو 2018 .
- ↑ ستراون، جورج أو. (مارس 1977). "هل تحتاج لغة APL حقًا إلى تحليل وقت التشغيل؟". البرمجيات: الممارسة والخبرة . 7 (2): 193-200 . doi : 10.1002/spe.4380070207 . S2CID 1463012 .
- 1 2 "دليل مستخدم المُترجم" (ملف PDF) . www.dyalog.com . شركة Dyalog المحدودة. مؤرشف (ملف PDF) من الأصل بتاريخ 9 أكتوبر 2022. تم الاطلاع عليه بتاريخ 7 مايو 2018 .
- 1 2 دريسكول، غراهام سي. الابن؛ أورث، دونالد إل. (نوفمبر 1986). "تجميع لغة APL: مترجم يوركتاون APL". مجلة IBM للبحوث والتطوير . 30 (6): 583-593 . doi : 10.1147/rd.306.0583 . S2CID 2299699 .
- ↑ "التسلسل الزمني لـ APL" . www.sigapl.org . ACM . تم الاطلاع عليه في 7 مايو 2018 .
- ↑ واي-مي، تشينغ (نوفمبر 1986). "تحليل البرامج وتوليد الشفرة في مُصرّف APL/370". مجلة IBM للبحوث والتطوير . 30 (6): 594-602 . doi : 10.1147/rd.306.0594 . S2CID 17306407 .
- ↑ "مشروع أبيكس" .
- ↑ "مترجم لغة APL (رسالة من جيم ويغانغ إلى مجموعة أخبار comp.lang.apl)" . 5 أبريل 1994.
للمزيد من القراءة
- آلة APL مؤرشفة بتاريخ 27-01-2024 في Wayback Machine (أطروحة دكتوراه من جامعة ستانفورد عام 1970 بقلم فيليب أبرامز)
- تاريخ شخصي لـ APL مؤرشف بتاريخ 2023-11-07 في Wayback Machine (مقال من عام 1982 بقلم مايكل س. مونتالبانو )
- ماكنتاير، دونالد ب. (1991). "اللغة كأداة فكرية: من الهيروغليفية إلى لغة APL" (ملف PDF) . مجلة أنظمة IBM . 30 (4): 554-581 . doi : 10.1147/sj.304.0554 . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 4 مايو 2006.
- إيفرسون، كينيث إي. (1991). "نظرة شخصية على لغة APL" (ملف PDF) . مجلة أنظمة IBM . 30 (4): 582-593 . doi : 10.1147/sj.304.0582 . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 27 فبراير 2008.
- لغة برمجة من تأليف كينيث إي. إيفرسون
- معرض APL بقلم كينيث إي. إيفرسون
- بروكس، فريدريك ب.؛ كينيث إيفرسون (1965). معالجة البيانات الآلية، إصدار System/360 . ISBN 0-471-10605-4.
- أسكولوم، أجاي (أغسطس 2006). بناء الأنظمة باستخدام لغة APL + ويندوز . وايلي. ISBN 978-0-470-03020-2.
- فالكوف، أدين د.؛ إيفرسون، كينيث إي .؛ سوسينغوث، إدوارد هـ. (1964). "وصف رسمي لنظام System/360" (ملف PDF) . مجلة أنظمة IBM . 3 (2): 198-261 . doi : 10.1147/sj.32.0198 . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 27 فبراير 2008.
- ويكسلبلات، ريتشارد ل. (محرر). (1981). "الرابع عشر". تاريخ لغات البرمجة: وقائع مؤتمر تاريخ لغات البرمجة، لوس أنجلوس، كاليفورنيا، 1-3 يونيو 1978. دار النشر الأكاديمية. ISBN 978-0127450407.
- بانون، جيرالد جان فرانسيس (1989). أسس الرسم البياني للكمبيوتر . ريو دي جانيرو: الحرم الجامعي. ص. 141.
- ليباج، ويلبر ر. (1978). برمجة APL التطبيقية . برنتيس هول.
- موجين، فيليب؛ دوكاس، ستيفان (نوفمبر 2003). "OOPAL: دمج برمجة المصفوفات في البرمجة الكائنية التوجه" (ملف PDF) . ACM SIGPLAN Notices . 38 (11): 65–77 . doi : 10.1145/949343.949312 . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 14 نوفمبر 2006.
- مقدمة في البرمجة الكائنية لمبرمجي لغة APL (ملف PDF) . شركة Dyalog المحدودة. سبتمبر 2006. مؤرشف من النسخة الأصلية (ملف PDF) في 4 أكتوبر 2007.
- شوستيك، لين (10 أكتوبر 2012). "شفرة المصدر للغة برمجة APL" . متحف تاريخ الحاسوب (CHM). مؤرشف من الأصل في 6 سبتمبر 2017. تم الاطلاع عليه في 6 سبتمبر 2017 .
- سفوبودا، أنتونين ؛ وايت، دونامي إي. (2016) [2012، 1985، 1979-08-01]. تقنيات تصميم الدوائر المنطقية المتقدمة (ملف PDF) (طبعة إلكترونية معاد طباعتها ). دار نشر جارلاند STPM (الطبعة الأصلية) / شركة WhitePubs Enterprises (إعادة إصدار). ISBN 978-0-8240-7014-4LCCN 78-31384 . مؤرشف (PDF) من الأصل بتاريخ 14 أبريل 2017. تم الاطلاع عليه بتاريخ 15 أبريل 2017 .
فيديو
- أصول لغة APL على يوتيوب – مقابلة على غرار برنامج حواري من عام 1974 مع المطورين الأصليين للغة APL
- عرض توضيحي لتقنية APL على موقع يوتيوب – عرض توضيحي مباشر لتقنية APL قدمه البروفيسور بوب سبنس ، إمبريال كوليدج لندن ، عام 1975
- لعبة كونواي للحياة بلغة APL على يوتيوب – درس تعليمي من عام 2009 من إعداد جون سكولز من شركة Dyalog Ltd.، يشرح كيفية تطبيق لعبة كونواي للحياة في سطر واحد من لغة APL
- خمسون عاماً من APL على يوتيوب – مقدمة عن APL من تأليف غرايم روبرتسون عام 2009
روابط خارجية
- TryAPL.org ، دليل تمهيدي عبر الإنترنت لتقنية APL
- APL2C ، روابط إلى مترجمات لغة APL
- لغات برمجة .NET
- عائلة لغات البرمجة APL
- لغات برمجة المصفوفات
- واجهات الأوامر
- لغات البرمجة الديناميكية
- لغات البرمجة ذات الكتابة الديناميكية
- اللغات الوظيفية
- برنامج IBM
- لغات البرمجة التي تم ابتكارها عام 1964
- لغات البرمجة ذات معيار ISO
- لغات البرمجة
- لغات البرمجة المتجانسة
