ما الفرق بين بناء الجملة البرمجية ودلالتها Syntax Vs Semantics

اقرأ في هذا المقال


تعتبر بناء الجملة (Syntax) والدلالات (Semantics) من المصطلحات المهمة جدًا المتعلقة بأي لغة برمجة، يتضمن بناء الجملة (Syntax) في لغة البرمجة مجموعة العبارات المسموح بها في للغة، بينما تُعبر الدلالات (Semantics) عن المعنى المرتبط بهذه العبارات، هناك بعض العلاقات بين بناء الجملة والدلالات، حيث يرتبط كل عنصر دلالي بترجمة نحوية واحدة على الأقل.

ما هو بناء الجملة في البرمجة Syntax؟

نشير إلى بناء الجملة (Syntax) في برمجة الكمبيوتر، بأنهم مجموعة من القواعد التي تحدد ما تعنيه مجموعات من الرموز، والتي تخبر الكمبيوترات بكيفية قراءة الكود، حتى يفعلوا ما نريدهم أن يفعلوه، وتشير بناء الجملة (Syntax) إلى مفهوم في كتابة الكود والذي يتعامل مع مجموعة محددة جدًا من الكلمات، وترتيبًا محددًا جدًا لتلك الكلمات، عندما نعطي تعليمات للكمبيوتر، هذا الترتيب وهذا الهيكل الصارم هما ما يمكننا من التواصل بشكل فعال مع الكمبيوتر.

بناء الجملة هي قواعد مثل قواعد اللغة الإنجليزية أو أي لغة أخرى، على الرغم من الاختلاف الكبير، فإن أجهزة الكمبيوتر شديدة الدقة في كيفية هيكلة تلك القواعد أو بناء الجملة التي لدينا، وبناء الجملة (Syntax) هو السبب في أننا نسمي البرمجة بالترميز (coding)، حتى من بين جميع اللغات المختلفة الموجودة، فإن كل لغة برمجة تستخدم كلمات مختلفة في بناء جملة مختلف في كيفية إعطائها المعلومات لجعل الكمبيوتر يتبع تعليماتنا، ولكن، بغض النظر عن لغة البرمجة، فإن أجهزة الكمبيوتر شديدة الدقة في الكيفية التي نقوم بها بهيكلة بناء الجملة.

يمثل بناء الجملة القواعد الأساسية للغة البرمجة، بدون هذه القواعد، من المستحيل كتابة كود فعال، وكل لغة لها مجموعة قواعد الخاصة بها التي تشكل بنائها الأساسي، فعلى سبيل المثال، في لغة (++c)، يتم تعريف المتغير “s” على أنه عدد صحيح بالشكل التالي “;int s”، ولإسناد قيمة للمتغير “s”، يجب استخدام قيمة عدد صحيح، فإذا قمنا بإسناد كلمة “Seven”، هذا الإسناد والتهيئة صحيحان من الناحية التركيبية ولكنهما غير صحيحين من حيث المعنى؛ لأن “Seven” لا يمثل شكل “integer” في اللغة.

 اصطلاحات التسمية هي مكون أساسي من اصطلاحات بناء الجملة وتختلف حسب اللغة، من حيث:

  • الحساسية لحالة الحرف (Case Sensitivity): تعد (Java و ++C و Python)، أمثلة على اللغات الحساسة لحالة الأحرف، فالمعرفات (وهي أسماء المتغيرات والثوابت والدوال) لها معاني مختلفة في هذه اللغات، مثل (world) و (World)، ولغات أخرى مثل، (Basic و SQL) غير حساسة لحالة الحرف، مما يعني أن (world) و (World) لهما نفس المعنى.
  • أسماء الـ (Class): تتطلب (Java) أن يكون الحرف الأول من كل كلمة في أسماء الـ (Class) كبيرًا، على سبيل المثال، الكلاس (FirstClass)، تستخدم لغات مثل (C أو ++C) شرطة سفلية لفصل الكلمات، فمثلا في لغة (C)، سيكون اسم الكلاس (first_class).
  • أسماء ملفات البرنامج: يجب أن يتطابق اسم ملف برنامج (Java) مع اسم الكلاس مع الامتداد “*.java” المضاف إلى الاسم، على سبيل المثال، سيكون (FirstClass.java) هو اسم ملف البرنامج لكلاس (FirstJavaClass)، تتطلب ملفات (C و ++C) امتداد “* .c” أو “* .cpp”، وليس لها شروط أخرى.

ما هي دلالات الجملة في البرمجة Semantics؟

يستخدم مصطلح الدلالي (Semantics) في لغة البرمجة لمعرفة العلاقة بين بناء الجملة ونموذج الحساب، ويؤكد على تفسير البرنامج حتى يتمكن المبرمج من فهمه بطريقة سهلة، أو التنبؤ بنتيجة تنفيذ البرنامج، وتتعامل الدلالات مع الجزء المنطقي من الجملة، ويمكن وصف دلالات لغة البرمجة من خلال التقنيات المختلفة:

  • الدلالات الجبرية: تفسر  البرنامج بتعريف الجبر.
  • دلالات البديهية: تحدد معنى البرنامج من خلال بناء تأكيدات حول الأرتباطات، ويتم تحديده في كل نقطة من تنفيذ البرنامج (أي ضمنيًا).
  • دلالات التشغيل: تقارن اللغات بالآلة المجردة، ثم يتم تقييم البرنامج كسلسلة من انتقالات الحالة.
  • الدلالات الدلالية: تعبر عن معنى البرنامج في شكل مجموعة من الوظائف التي تعمل في حالة البرنامج.
  • دلالات الترجمة: تركز  على الأساليب المستخدمة لترجمة برنامج إلى لغة أخرى.

الاختلافات الرئيسية بين بناء الجملة والدلالات:

1- بناء الجملة (Syntax) يشير إلى قواعد الجمل المكتوبة بلغة برمجة، من ناحية أخرى، تصف الدلالات (Semantics) العلاقة بين معنى المرتبط بأي عبارة في لغة البرمجة.

2- يتم التعامل مع أخطاء بناء الجملة في وقت الترجمة (compile time)، في مقابل ذلك، يصعب العثور على الأخطاء الدلالية في وقت التشغيل (runtime).

3- تحدث أخطاء بناء الجملة عندما تكون عبارة غير صالحة وفقًا لقواعد لغة البرمجة، مثل عدم الفاصلة المنقوطة نهاية الجمل في (++C)، أو استخدام متغيرات غير معرّفة في (Java)، بينما تحدث الأخطاء الدلالية عندما تكون العبارة صحيحة نحويًا ولكنها لا تفعل ما قصده المبرمج، هذا النوع من الخطأ يصعب اكتشافه.


شارك المقالة: