جيه (لغة برمجة): الفرق بين النسختين

[مراجعة غير مفحوصة][مراجعة غير مفحوصة]
تم حذف المحتوى تمت إضافة المحتوى
CipherBot (نقاش | مساهمات)
روبوت: قوالب الصيانة؛ +{{يتيمة}}; تغييرات تجميلية
CipherBot (نقاش | مساهمات)
ط تدقيق إملائي وتنسيق
سطر 1:
{{يتيمة|تاريخ=مايو_2011}}
لغة البرمجة '''جيه''' J، التي طورها [[كينيث إي إيفرسون]] و [[روجر هوي]] في التسعينات هي تركيبة من اللغات APL( التي طورها إيفرسون ايضاأيضا) و FP و FL Function- level اللذان صممهما [[جون باكوس]].
 
ولتجنب تكرار مشكلة الحروف والأشكال المتأصلة باللغة APL، تتطلب لغة جيه مجموعة أحرف وأشكال [[أسكي]] ASCII الرئيسية واللجوء إلى استخدام الأشكال الثنائية التي تتكون باستخدام النقطة أو الفاصلة للتوسع في معنى الأشكال أو الأحرف الرئيسية المتاحة. علاوة على ذلك، حتى تظل اللغة بسيطة وللحفاظ على تحليلها، وللتعويض عن عدم نقص الاختلافات بين الأحرف في لغة ASCII، تقوم لغة جيه بمعالجة معظم الأشكال التي ربما تكون في حاجة إلى موازنتها باللغات الأخرى (مثل [] {} "" ``<>) ) على أنها رموز مستقلة بذاتها أو (مع الأشكال الثنائية) كجزء من الرموز متعددة الأشكال.
 
ولغة جي هي لغة برمجة منظمة وموجزة وتلاءم البرمجيات الإحصائية والرياضية بصورة أفضل خاصة عند آداء عمليات حساب [[مصفوفة|المصفوفات]]. كما تم استخدامها أيضا في البرمجة القصوى وتحليل أداء الشبكة.
سطر 28:
exit <nowiki>''</nowiki>
 
على مر التاريخ كانت لغة APL تستخدم الرمز / للإشارة إلى مطوية ما، لذلك فإن +/1 2 3 كانت تكافئ 1+2+3. في نفس الوقت، كان يتم تمثيل الأقسام برموز التقسيم الرياضية (الأوبيلوس obelus، ÷) والذي كانت تنفذ بالضرب على علامة الناقص و النقطتانوالنقطتان معا ( في كلا النهايتين الورقيتين EBCDIC و ASCII). نظرا لأن ASCII بوجه عام لا تدعم الضربات المزدوجة بطريقة تعتمد على الأداة، ولا تتضمن رمز تقسيم في حد ذاته، ولغة جيه تستعين بعلامة % لتشير على هذا التقسيم، كصورة تقريبية مرئية اوأو تذكرة. (وهذا يفسر شيئا من الصفات الخاصة بالذاكرة لرموز جيه، وشيئا من المآزق التي تظهر بواسطة استخدام ASCII).
 
وفيما يلي نوضح برنامجا لحساب متوسط قائمة من الأرقام:
سطر 36:
<span style="color:sienna;">2.5</span>
 
تشير # إلى عدد العناصر في المصفوفة. +/ تلخص عناصر المصفوفة. %تقسم المجموع على عدد العناصر. ملحوظة: avg معرفة سابقا باستخدام سلسلة من ثلاث أفعال ("+/" ,، "%"و "#" ) والتي تعرف باسم الشوكة forkز خاصة أن (V0 V1 V2) Ny هي نفسها مثل (V0 Ny) V1 (V2 Ny) والتي توضح بعض نقاط القوة لدى لغة جيه.
(V0 V1 V2 هنا تشير إلى الأفعال و Ny تشير إلى الأسماء)
 
(V0 V1 V2 هنا تشير إلى الأفعال و Ny تشير إلى الأسماء)
بعض الأمثلة على استخدام avg :
 
 
v=: ?. 20 $ 100 <span style="color:gray;">ملاحظة: متجه عشوائي</span>
السطر 61 ⟵ 59:
<span style="color:sienna;">17.2 22 21.2 26.4</span>
 
المرتبة rank: هي مفهوم حتمي في لغة الجيه. دلالته في لغة الجيه شبيهة بالاختيار "select" في لغة SQL و "while" في لغة السي.
 
فيما يلي تطبيق لquicksort، من قاموس لغة جيه:
السطر 72 ⟵ 70:
(quicksort y <sel e),(y =sel e),quicksort y >sel e=.y(~?#y
end.
)
 
وفيما يلي مثالا على الكويكسورت quicksort يظهر البرمجة الضمنية tacit programming. تتضمن البرمجة الضمنية تركيبة من بعض الوظائف معا ولا تشير بشكل صريح إلى أي من لمتغيرات. دعم لغة الجيه لforks و hooks يشير إلى القواعد بشأن كيف أن المناقشات التي تطبق على هذه الوظيفة ستطبق على وظائف محتواها.
 
quicksort=: (($:@(<#[) ,، (=#[) ,، $:@(>#[)) ({~ ?@#)) ^: (1<#)
 
التعبير التالي يبين pi مع أرقام n ويعرض إمكانات الدقة المتوسعة لجيه:
السطر 91 ⟵ 89:
من بين هذه الثلاثة تتميز الرقيمة بكثرة تنوعها.
 
أحد الأنماط الرقمية للغة الجيه هي البايت. يوجد قيمتين للبايت وهما صفر و وواحدووواحد. إضافة إلى ذلك يمكن تصنيف البايتات في قوائم. على سبيل المثال تكون 10101100 قائمة من ثماني بايتات. ومن الناحية التركيبية/ نجد أن محلل الجيه يتعامل مع ذلك على أنه كلمة واحدة (أحرف المسافات تعرف بأنها كلمة تشكل حرفا أو كيانا حين تفصل بين اثنين يمكن اعتبارهما من ناحية أخرى كلمات رقمية). كما يدعم ايضاأيضا قوائم ذات طول اعتباطي.
 
علاوة على ذلك، فإن جيه تدعم كل العمليات المزدوجة المعتادة في هذه القوائم، مثل and, or, exclusive or, rotate, shift, not....الخ، على سبيل المثال.
السطر 103 ⟵ 101:
وعلينا أن نعرف أن جيه أيضا تدعم مصفوفات نظامية أعلى من البايتات- ويمكن أن تتكون من مصفوفات ثنائية الأبعاد وثلاثية الأبعاد.. الخ. تلك العمليات المذكورة سابقا تؤدي عملا جيدا في هذه المصفوفات.
 
الأنماط الرقمية الأخرى تتضمن [[عدد صحيح|الأعداد الصحيحة]] (3، 42)، [[الفاصلة العائمة|النقاط العائمة]] (3.14، 8.8e22)، التركيبات (oj1, 2.5j3e88)، الأرقام الصحيحة الدقيقة المتوسعة (12345678901234567890x) ، الكسر المنطقي(الدقة المتوسعة) (1r2, 3r4). وفيما يتعلق بالبايتات، يمكن أن يتم تشكيل تلك في قوائم أو مصفوفات ذات أبعاد اعتباطية. وفيما يتعلق بالبايتات، تتم العمليات على كافة الأرقام الموجودة بالمصفوفة.
 
يمكن تحويل قوائم البايتات لأرقام صحيحة باستخدام العلامة .verb#. يمكن تحويل الأرقام الصحيحة إلى قوائم من البايتات باستخدام العلامة #:verb. (وعند التحليل تكون كل من J,. و : كيانات تكون كلمات. لا يمكن اعتبارها مطلقا كرموز في حد ذاتها إلا إذا سبقتها مسافة.)
 
تدعم لغة جيه أيضا النوع الحرفي (الرمزي الحرفي). تدرج الحروف بين علامات اقتباس 'a' أو "b". كما يتم دعم قائمة من الأحرف أيضا باستخدام تقليد وضع تلك الأحرف الرمزية المتعددة بين علامات اقتباس مثل 'abcdefg'عادة ما يكون عرض الأحرف الرمزية الفردية 8 بايت (ascii)، ولكن جيه أيضا تدعم أحرف مكتوبة أخرى وهي (Unicode). العمليات الرقمية و[[جبر بولياني|البوليانية]] غير مدعومة بالأحرف، ولكن العمليات ذات التوجه التجميعي ( مثل rotate) فهي مدعومة.
 
وفي النهاية، هناك نوع البيانات الصندوقية. عادة يتم وضع البيانات في صندوق باستخدام عملية > (بدون أي برهان اوأو معطى على اليسار- وإذا ما كان هناك أحد المعطيات على اليسار فسوف تكون تلك عملية "أقل من "). وهذا هو نظير عملية & بلغة السي (بدون أي معطيات يسارية). ومع ذلك حين تكون نتيجة & السي ذات دلالات مرجعية، فإن نتيجة عملية > للجي تكون ذات دلالات قيمة. بمعنى آخر فإن > هي وظيفة وينتج عنها نتيجة. النتيجة هي أبعاد صفرية بغض النظر عن هيكل البيانات المتضمنة. من وجهة نظر مبرمج الجيه، > "تضع البيانات في صندوق" وتدع المبرمج يعمل بمصفوفة من الصناديق (ويمكن دمجها مع صناديق أخرى، أو يمكن عمل نسخ أخرى من هذا الصندوق). البيانات الموجودة بالصندوق يمكن عرضها بلغة جيه، إلى حد ما بعد النمط، يقوم بعض مترجمي لغة SQL بتزيين الجداول الناتجة عن بيانات مختارة.
 
<1 0 0 1 0
السطر 125 ⟵ 123:
 
==التوثيق==
توثيق لغة الجيه، على عكس معظم لغات البرمجة الأخرى، يتم تنظيمها في هيئة قاموس، حيث يتم تحديد الكلمات في لغة الجيه بأسماء وأفعال وظروف و روابط،وروابط، وما إلى ذلك. يتم الإشارة إلى أجزاء لكلام باستخدام علامة. ولنلاحظ أن الأفعال لها صيغتين: monads أحادية الخلية (تعطى البراهين ناحية اليمين فقط) و dyads ثنائية(تكون البراهين على اليمين واليسار). على سبيل المثال / في "-1" رمز الواصلة monad ،monad، وفي "2-3" الواصلة dyad. تعريف الأحادية غالبا ما يكون مستقلا عن تعريف المزدوجة، بغض النظر عما إذا كان الفعل أولي أو مشتق.
 
==هياكل التحكم==
السطر 179 ⟵ 177:
 
{{DEFAULTSORT:J (Programming Language)}}
 
[[تصنيف:لغات برمجة]]