جيه (لغة برمجة)
أنواع وهياكل البيانات

تدعم لغة الجيه ثلاث أنواع بسيطة:
الرقمية numeric.
الأحرف Literal (character)
الصندوقية boxed
من بين هذه الثلاثة تتميز الرقيمة بكثرة تنوعها.
أحد الأنماط الرقمية للغة الجيه هي البايت. يوجد قيمتين للبايت وهما صفر ووواحد. إضافة إلى ذلك يمكن تصنيف البايتات في قوائم. على سبيل المثال تكون 10101100 قائمة من ثماني بايتات. ومن الناحية التركيبية/ نجد أن محلل الجيه يتعامل مع ذلك على أنه كلمة واحدة (أحرف المسافات تعرف بأنها كلمة تشكل حرفا أو كيانا حين تفصل بين اثنين يمكن اعتبارهما من ناحية أخرى كلمات رقمية). كما يدعم أيضا قوائم ذات طول اعتباطي.
علاوة على ذلك، فإن جيه تدعم كل العمليات المزدوجة المعتادة في هذه القوائم، مثل and, or, exclusive or, rotate, shift, not....الخ، على سبيل المثال.
1 0 0 1 0 0 1 0 +. 0 1 0 1 1 0 1 0 ملاحظة: أو
1 1 0 1 1 0 1 0
3 |. 1 0 1 1 0 0 1 1 1 1 1  ملاحظة: دوّر
1 0 0 1 1 1 1 1 1 0 1
وعلينا أن نعرف أن جيه أيضا تدعم مصفوفات نظامية أعلى من البايتات- ويمكن أن تتكون من مصفوفات ثنائية الأبعاد وثلاثية الأبعاد.. الخ. تلك العمليات المذكورة سابقا تؤدي عملا جيدا في هذه المصفوفات.
الأنماط الرقمية الأخرى تتضمن الأعداد الصحيحة (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
+----+
|1 0 0 1 0|
+----+
النمط الجماعي الوحيد الذي تقدمه لغة الجيه هي المصفوفة ذات الأبعاد الاعتباطية. معظم اللوغاريتمات يمكن أن يتم التعبير عنها بدقة باستخدام عمليات على هذه المصفوفات.
مصفوفات جيه ذات أنماط متجانسة، على سبيل المثال القائمة 123 هي قائمة من الأعداد الصحيحة بالرغم من أن العدد 1 هو بايت. لمعظم الأجزاء، هذه المشاكل في أنواع الأنماط شفافة بالنسبة للمبرمج. فقط بعض العمليات المتخصصة الخاصة تكشف عن اختلافات في النوع. على سبيل المثال، القائمة 1.0 0.0 1.0 0.0 يتم التعامل معها بنفس الطريقة، بواسطة معظم العمليات، مثل القائمة 1 0 1 0.
لغة الجيه أيضا تدعم المصفوفات الرقمية المحللة حيث القيم غير الصفرية يتم تخزينها بمؤشراتها. هذه هي آلية جيدة حيث تكون قيم قليلة نسبيا غير صفرية.
تدعم لغة الجيه أيضا موضوعات وطوائف، ولكن هذه مجرد أشياء من صنع الإنسان عن كيفية تسمية الأشياء، وهي ليست أنواع بيانات في حد ذاتها. عوضا عن ذلك، تستخدم الأحرف الصندوقية للإشارة إلى الأشياء (والطوائف). بيانات لغة الجيه ذات دلالات لها قيمة، ولكن الأشياء والطوائف تحتاج إلى دلالات مرجعية.
نوع زائف آخر – يرتبط بالاسم بدلا من القيمة وهو ملفات خرائط الذاكرة.