بعد أطروحتنا الخاصة بإمكانية الوصول القصوى للتعلم ، سنحاول دمج جميع العناصر الأساسية للغة منطقيًا من العناصر المستخدمة على نطاق واسع للغات الخوارزمية الأخرى. نتبع هنا المنطق الداخلي الوارد في المقالة الأولى والافتراض القائل بأن تكوين الكيانات للعديد من اللغات الشائعة سيجعل من السهل استيعاب محتوى جديد بجهد أقل ، نظرًا لأن الناس لديهم آلة دمج مدمجة تعتمد على الشبكات العصبية التي تقدم تلقائيًا انتهاكات جزئية للدلالات. soobscheni.
فكرة إنشاء لغات جديدة من عناصر معروفة لها تاريخ طويل. منذ أكثر من 140 عامًا ، ابتكر الدكتور زامنهوف لغة الإسبرانتو الاصطناعية من الأجزاء المكونة للغات طبيعية أخرى. اتضح أن اللغة منطقية وسهلة التعلم لدرجة أنها اتضح أنها قابلة للتطبيق واستمرت حتى يومنا هذا. على سبيل المثال ، يتوفر في مترجم جوجل. سالوتون هبر! Bonvenon sub la kat!
دعونا في محاولة لتصميم اللغة التي هي مريحة للبرمجة سريعة من الألعاب الفكرية والألغاز، وسوف استعمالها إرضاء مع المنطق والتفكير.
تعليقات
للحصول على تعليق من سطر واحد ، استخدم الرمز # (Python ، R ، Ruby). يمكن استخدام التركيبة // (C والعديد من اللغات الأخرى) كعامل تقسيم صحيح للحصول على نتيجة العملية كرقم حقيقي ، حتى لا تستخدم في هذه الحالة تعبير تحويل مرهق بعض الشيء مثل CGFloat (int) ، كما في Swift.
PRINT “Hi world\n” # Hi world
لإبراز التعليقات متعددة الأسطر ، استخدم مجموعة ## .
## . , Python ##
يعد اختيار الرمز # مناسبًا أيضًا لأنه سيتم استخدامه في المستقبل بواسطة مترجم اللغة Hi لمعالجة العلامات الوصفية في نص البرنامج ، والتي يمكن توليفها من نص التعليق. هذا يشبه إلى حد ما المعالج المسبق في C / C ++ ، والذي ، بالمناسبة ، يستخدم أيضًا الرمز #.
أنواع البيانات الأولية
تستخدم لغة Hi في الإصدار الأساسي ثلاثة أنواع من البيانات الأولية:
ثنائي: BOOL
العمليات الممكنة: & (و) ، | (أو) ، ~ (لا)
LET true = TRUE LET false = FALSE PRINT true & true # TRUE PRINT true | false # TRUE PRINT ~true # FALSE
الأعداد الصحيحة: INT
العمليات الممكنة: + ، - ، * ، / (تقسيم عدد صحيح) ، ٪ (باقي) ، // (تقسيم مع تحويل تلقائي للنتيجة إلى النوع الحقيقي)
VAR i = 0 PRINT (i + 6 – 2) * 3 / 5 # 2
الأرقام الحقيقية :
العمليات الحقيقية الممكنة: + ، - ، * ، /
VAR pi = 3.1415926535
سلاسل
السلاسل هي نوع مركب لأنه يتم التعامل معها كسلسلة من أحرف Unicode
LET the_force = “flow through you”
لا نستخدم علامات اقتباس مفردة للسلسلة الحرفية ، نظرًا لأن الأحرف ، خاصة تلك الموجودة على لوحة المفاتيح القياسية ، تعد موردًا قيمًا للمستقبل.
عمليات السلسلة القياسية:
# VAR language = “C” LET statement = “ – the best language ever” LET proposition = language + statement language = “Python”
في الوقت الحالي ، لا نحتاج إلى تقديم نوع بيانات من النوع Character ؛ لحل المشاكل العملية ، يمكنك استخدام ...
# LET secondSym = language[2]
تكون نتيجة التخصيص في الحالة التي يكون فيها مرجع الفهرس خارج السلسلة "" ولا يؤدي إلى خطأ وقت التشغيل.
الثوابت والمتغيرات
كما رأينا في الأمثلة أعلاه ، فإن Hi هي لغة مكتوبة بشكل ثابت لتقليل احتمالية حدوث أخطاء في استخدام المعرفات وفهم أفضل للغرض منها. يجب التصريح عن الثوابت ( LET ) والمتغيرات ( VAR ) قبل الاستخدام الأول للكائن. من المريح إعلان الأنواع دون تحديد نوع معين بشكل صريح عن طريق تعيين القيم الأولية ؛ في هذه الحالة ، يصبح الاستدلال النوعي واضحًا.
## LET one: INT = 1 : ## LET one = 1 VAR boolean = TRUE
يتم استعارة مفهوم إعلان الثوابت والمتغيرات let و var من Swift ، ولكن في Hi ، من الممكن عمل تصريحات متعددة بإسناد قيمة واحدة:
VAR i, j, k = 0
المدخلات والمخرجات القياسية
يتم إدخال البيانات من لوحة المفاتيح بواسطة الأمر INPUT :
VAR startFrom: INT PRINT "Start from: "; INPUT startFrom
لا تحتاج إلى كتابة صواب أو خطأ لإدخال قيمة BOOL. يعد تطبيق الهاتف المحمول للبرمجة ، الذي نستعد لإصداره في AppStore ، ذكيًا بما يكفي لعرض زرين فقط مع خيار ثنائي في هذه الحالة. وبالمثل ، سيتم عرض لوحة مفاتيح رقمية بدون فترة لإدخال عدد صحيح ولوحة مفاتيح عادية لإدخال قيمة نصية.
يقوم الأمر PRINT بطباعة الأسطر إلى شاشة نوع عرض وحدة التحكم. الافتراضي هو 20 سطرًا من 40 حرفًا. يمكنك تحديد الوضع بأحرف كبيرة 10 × 20 أو صغير: 40 × 80.
PRINT " Hi language"
مرحبا لغة الآلة الحاسبة
الآن لدينا كل شيء لتكوين قواعد نحوية لآلة حاسبة مع مدخلات ومخرجات تفاعلية في شكل EBNF من حيث لغة Hi.
1. The Syntax of HI Programming Language digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9". capital = "A" | ... | "Z". small = "a" | ... | "z". character = [Unicode_character]. addOperator = "+" | "-" | "|". mulOperator = "*" | "/" | "//" | "%" | "&". relation = "==" | "~=" | "<" | "<=" | ">" | ">=". integer = digit {digit}. real = digit {digit} "." {digit}. string = """ {character} """. number = integer | real. letter = capital | small. keyword = capital capital {capital}. ident = letter {letter | digit}. type = keyword. factor = number | string | TRUE | FALSE | ident | "(" expression ")" | "~" factor. term = factor {mulOperator factor}. simpleExpression = ["-"] term {addOperator term}. expression = simpleExpression [relation simpleExpression]. assignment = ident "=" expression. identList = ident {"," ident}. expList = expression {"," expression}. constDeclaration = LET identList [":" type] "=" expression. varDeclaration = VAR identList [":" type] ["=" expression]. funcCall = keyword [expList ]. statement = assignment | funcCall | constDeclaration | varDeclaration statementSequence = statement {("\n" | ";") statement}. 2. Standard Data Types BOOL INT REAL STRING 3. Standard Procedures and Functions INPUT PRINT 4. Other Keywords LET VAR
على عكس القواعد النحوية للعديد من اللغات ، حيث يتم تضمين الكلمات الرئيسية في قائمة الاستثناءات من فئة أكثر عمومية من المعرفات ، فإننا نقدم نوعًا خاصًا من الرموز المميزة - الكلمات الأساسية ، والتي يتم التعرف عليها بالفعل على مستوى ماسح مترجم اللغة Hi.
في المقالة التالية ، سنقدم أنواع البيانات المركبة في Hi بالإضافة إلى STRING. بالنسبة إلى لغتنا البسيطة ، فهي قوية بما يكفي للتعبير بسهولة عن فكرة العمل على مجموعات من الكائنات والمصفوفات والقواميس.