أجهزة الكمبيوتر شبابيك إنترنت

الكتابة الإحصائية. برنامج تعليمي عن الكتابة بلغات البرمجة. تعرف على "الكتابة القوية" في القواميس الأخرى

عندما تتعلم لغات البرمجة، غالبًا ما تسمع عبارات مثل "مكتوب بشكل ثابت" أو "مكتوب ديناميكيًا" في المحادثات. تصف هذه المفاهيم عملية التحقق من النوع، ويشير كل من فحص النوع الثابت والديناميكي إلى أنظمة كتابة مختلفة. نظام الكتابة هو مجموعة من القواعد التي تقوم بتعيين خاصية، تسمى "النوع"، إلى كيانات مختلفة في البرنامج - المتغيرات أو التعبيرات أو الوظائف أو الوحدات النمطية - مع الهدف النهائي المتمثل في تقليل الأخطاء من خلال ضمان عرض البيانات بشكل صحيح.

لا تقلق، أعلم أن هذا قد يبدو مربكًا، لذا سنبدأ بالأساسيات. ما هو "مطابقة النوع" وما هو النوع على أي حال؟

يكتب

التعليمات البرمجية التي خضعت لفحص النوع الديناميكي تكون أقل تحسينًا بشكل عام؛ بالإضافة إلى ذلك، هناك احتمال حدوث أخطاء في وقت التشغيل، ونتيجة لذلك، الحاجة إلى التحقق قبل كل إطلاق. ومع ذلك، فإن الكتابة الديناميكية تفتح الباب أمام تقنيات برمجة قوية أخرى، مثل البرمجة الوصفية.

المفاهيم الخاطئة الشائعة

الخرافة الأولى: الكتابة الثابتة/الديناميكية == الكتابة القوية/الضعيفة

من المفاهيم الخاطئة الشائعة أن جميع اللغات المكتوبة بشكل ثابت تتم كتابتها بقوة وأن جميع اللغات المكتوبة ديناميكيًا تتم كتابتها بشكل ضعيف. هذا ليس صحيحا، وهنا السبب.

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

س = 1 + "2"

غالبًا ما نربط اللغات المكتوبة بشكل ثابت مثل Java وC# بالكتابة القوية (وهي كذلك) نظرًا لأنه يتم تعيين نوع البيانات بشكل صريح عند تهيئة متغير - كما في مثال Java هذا:

String foo = new String("hello World");

ومع ذلك، فإن Ruby وPython وJavaScript (جميعها مكتوبة ديناميكيًا) يتم كتابتها أيضًا بقوة، على الرغم من أن المطور لا يحتاج إلى تحديد نوع المتغير عند الإعلان عنه. لننظر إلى نفس المثال، ولكن مكتوبًا بلغة روبي:

فو = "مرحبا بالعالم"

كلتا اللغتين مكتوبتان بقوة ولكنهما تستخدمان تقنيات مختلفة للتحقق من الكتابة. لا تتطلب لغات مثل Ruby وPython وJavaScript تعريفات صريحة للنوع بسبب استنتاج النوع - القدرة على استنتاج النوع المطلوب للمتغير برمجيًا اعتمادًا على قيمته. يعد استنتاج الكتابة خاصية منفصلة للغة وليس جزءًا من أنظمة الكتابة.

اللغة المكتوبة بشكل ضعيف هي لغة لا ترتبط فيها المتغيرات بنوع بيانات محدد؛ لا يزال لديهم نوع ما، لكن قيود سلامة النوع أضعف بكثير. خذ بعين الاعتبار مثال كود PHP التالي:

$foo = "x"; $foo = $foo + 2; // ليس خطأ echo $foo; // 2

نظرًا لأن لغة PHP مكتوبة بشكل ضعيف، فلا يوجد خطأ في هذا الرمز. على غرار الافتراض السابق، ليست كل اللغات المكتوبة بشكل ضعيف تتم كتابتها ديناميكيًا: PHP هي لغة مكتوبة ديناميكيًا، ولكن C، وهي أيضًا لغة مكتوبة بشكل ضعيف، يتم كتابتها بشكل ثابت حقًا.

لقد تم تدمير الأسطورة.

على الرغم من اختلاف أنظمة النوع الثابت/الديناميكي والقوية/الضعيفة، إلا أن كلاهما يتعامل مع سلامة النوع. أسهل طريقة لصياغة الأمر هي أن النظام الأول يتحدث عن وقت التحقق من سلامة النوع، والثاني يخبرنا كيف.

الخرافة الثانية: الكتابة الثابتة/الديناميكية == اللغات المترجمة/المترجمة

من الصحيح أن نقول إن معظم اللغات المكتوبة بشكل ثابت عادة ما يتم تجميعها وتفسير اللغات المكتوبة ديناميكيًا، لكن لا يمكن تعميم هذا البيان، وهناك مثال بسيط على ذلك.

عندما نتحدث عن كتابة اللغة، فإننا نتحدث عن اللغة ككل. على سبيل المثال، لا يهم إصدار Java الذي تستخدمه، حيث سيتم كتابته دائمًا بشكل ثابت. وهذا يختلف عن الحالة التي يتم فيها تجميع اللغة أو تفسيرها، لأننا في هذه الحالة نتحدث عن تطبيق محدد للغة. من الناحية النظرية، يمكن تجميع أي لغة أو تفسيرها. يستخدم التطبيق الأكثر شيوعًا للغة Java التحويل البرمجي إلى الكود الثانوي، والذي يتم تفسيره بواسطة JVM - ولكن هناك تطبيقات أخرى للغة يتم تجميعها مباشرة إلى كود الآلة أو يتم تفسيرها كما هي.

إذا كان هذا لا يزال غير واضح، أنصحك بقراءة هذه السلسلة.

خاتمة

أعلم أنه كان هناك الكثير من المعلومات في هذه المقالة - ولكن أعتقد أنك قد أنجزتها. أود تضمين معلومات حول الكتابة القوية/الضعيفة في مقالة منفصلة، ​​لكن هذا ليس موضوعًا مهمًا؛ بالإضافة إلى ذلك، كان من الضروري توضيح أن هذا النوع من الكتابة لا يرتبط بفحص النوع.

لا توجد إجابة واضحة على السؤال "أي الكتابة أفضل؟" - لكل منها مزاياه وعيوبه. تسمح لك بعض اللغات - مثل Perl وC# - بالاختيار بين أنظمة التحقق من النوع الثابتة والديناميكية. إن فهم هذه الأنظمة سيسمح لك بفهم طبيعة الأخطاء التي تحدث بشكل أفضل وتسهيل التعامل معها أيضًا.

لشرح تقنيتين مختلفتين تمامًا قدر الإمكان، فلنبدأ من البداية. أول ما يواجهه المبرمج عند كتابة التعليمات البرمجية هو الإعلان عن المتغيرات. قد تلاحظ أنه، على سبيل المثال، في لغة البرمجة C++، تحتاج إلى تحديد نوع المتغير. أي، إذا قمت بتعريف متغير x، فيجب عليك إضافة int - لتخزين بيانات الأعداد الصحيحة، وfloat - لتخزين بيانات الفاصلة العائمة، وchar - لبيانات الأحرف، والأنواع الأخرى المتاحة. ونتيجة لذلك، يستخدم C++ الكتابة الثابتة، تمامًا مثل سابقتها C.

كيف تعمل الكتابة الثابتة؟

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

دعونا نلقي نظرة على مثال صغير. عند تهيئة المتغير x (int x;) نحدد المعرف int - وهو اختصار يخزن فيه الأعداد الصحيحة فقط في النطاق من - 2,147,483,648 إلى 2,147,483,647. وبهذه الطريقة، يعرف المترجم أنه يمكنه إجراء قيم رياضية على هذا المتغير - الجمع والفرق والضرب والقسمة. ولكن، على سبيل المثال، لا يمكن تطبيق الدالة strcat()، التي تربط قيمتين من char، على x. بعد كل شيء، إذا قمت بإزالة القيود وحاولت توصيل قيمتين صحيحتين باستخدام الطريقة الرمزية، فسيحدث خطأ.

لماذا كانت هناك حاجة إلى اللغات المكتوبة ديناميكيًا؟

على الرغم من بعض القيود، تتمتع الكتابة الثابتة بعدد من المزايا ولا تسبب الكثير من الانزعاج في خوارزميات الكتابة. ومع ذلك، قد تتطلب الأغراض المختلفة المزيد من "القواعد الفضفاضة" فيما يتعلق بأنواع البيانات.

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

أي نوع من الكتابة أفضل؟

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

لذلك، من الضروري تحديد قيادة تقنية معينة بناءً على معلمات الإدخال فقط. لتطوير أطر خفيفة الوزن ومرنة، تعد الكتابة الديناميكية أفضل، بينما لإنشاء بنيات ضخمة ومعقدة، من الأفضل استخدام كتابة قوية.

التقسيم إلى كتابة "قوية" و"ضعيفة".

من بين مواد البرمجة باللغتين الروسية والإنجليزية، يمكنك العثور على تعبير الكتابة "القوية". وهذا ليس مفهوما منفصلا، أو بالأحرى هذا المفهوم غير موجود في المعجم المهني على الإطلاق. على الرغم من أن الكثيرين يحاولون تفسير ذلك بشكل مختلف. في الواقع، يجب فهم الكتابة "القوية" على أنها الكتابة التي تناسبك والتي تكون أكثر راحة في العمل بها. والنظام "الضعيف" غير مريح وغير فعال بالنسبة لك.

ميزة الديناميكية

ربما لاحظت أنه في مرحلة كتابة التعليمات البرمجية، يقوم المترجم بتحليل البنيات المكتوبة وسيصدر خطأ إذا لم تتطابق أنواع البيانات. ولكن ليس جافا سكريبت. وتفرده هو أنه سيقوم بإجراء العملية في أي حال. إليك مثال سهل - نريد إضافة رمز ورقم، وهو أمر غير منطقي: "x" + 1.

في اللغات الثابتة، اعتمادًا على اللغة نفسها، يمكن أن يكون لهذه العملية عواقب مختلفة. ولكن في معظم الحالات، لن يسمح حتى بالتجميع، لأن المترجم سوف يرمي خطأ مباشرة بعد كتابة مثل هذا البناء. سوف يعتبره ببساطة غير صحيح وسيكون على حق تمامًا.

في اللغات الديناميكية، يمكن إجراء هذه العملية، ولكن في معظم الحالات، سيحدث خطأ بالفعل في مرحلة تنفيذ التعليمات البرمجية، حيث لا يقوم المترجم بتحليل أنواع البيانات في الوقت الفعلي ولا يمكنه اتخاذ قرارات بشأن الأخطاء في هذا المجال. تعد JavaScript فريدة من نوعها من حيث أنها ستقوم بهذه العملية وينتهي الأمر بمجموعة من الأحرف غير القابلة للقراءة. على عكس اللغات الأخرى التي ستقوم ببساطة بإنهاء البرنامج.

هل البنى المجاورة ممكنة؟

في الوقت الحالي، لا توجد تقنية ذات صلة يمكنها دعم الكتابة الثابتة والديناميكية في لغات البرمجة في نفس الوقت. ويمكننا أن نقول بثقة أنه لن يظهر. لأن البنى تختلف عن بعضها البعض في المفاهيم الأساسية ولا يمكن استخدامها في وقت واحد.

ولكن، مع ذلك، في بعض اللغات، يمكنك تغيير الكتابة باستخدام أطر إضافية.

  • في لغة برمجة دلفي - النظام الفرعي المتغير.
  • يوجد في لغة البرمجة AliceML حزم إضافية.
  • في لغة البرمجة هاسكل - مكتبة Data.Dynamic.

متى تكون الكتابة القوية أفضل حقًا من الكتابة الديناميكية؟

يمكنك بالتأكيد ذكر ميزة الكتابة الصارمة على الكتابة الديناميكية فقط إذا كنت مبرمجًا مبتدئًا. بالتأكيد يتفق جميع متخصصي تكنولوجيا المعلومات على هذا. عند تعلم مهارات البرمجة الأساسية والأساسية، فمن الأفضل استخدام الكتابة القوية للحصول على بعض الانضباط عند العمل مع المتغيرات. بعد ذلك، إذا لزم الأمر، يمكنك التبديل إلى الديناميكيات، لكن مهارات العمل المكتسبة بالكتابة الصارمة ستلعب دورًا مهمًا. سوف تتعلم كيفية فحص المتغيرات بعناية والنظر في أنواعها عند تصميم وكتابة التعليمات البرمجية.

فوائد الكتابة الديناميكية

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

تعرف على المزيد حول لغات البرمجة المكتوبة بشكل ثابت

  • C++ هي لغة البرمجة للأغراض العامة الأكثر استخدامًا. اليوم لديها عدة إصدارات كبيرة وجيش كبير من المستخدمين. لقد أصبح شائعًا بسبب مرونته وإمكانية التوسع غير المحدود ودعم نماذج البرمجة المختلفة.

  • Java هي لغة برمجة تستخدم أسلوبًا موجهًا للكائنات. لقد أصبح واسع الانتشار بسبب طبيعته متعددة المنصات. عند تجميعها، يتم تفسير التعليمات البرمجية إلى كود ثانوي، والذي يمكن تنفيذه على أي نظام تشغيل. Java والكتابة الديناميكية غير متوافقين لأن اللغة مكتوبة بقوة.

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

المزيد عن لغات البرمجة ذات الكتابة الديناميكية

  • بايثون هي لغة برمجة تم إنشاؤها في المقام الأول لتسهيل عمل المبرمج. يحتوي على عدد من التحسينات الوظيفية، والتي بفضلها تزيد من سهولة قراءة الكود وكتابته. تم تحقيق ذلك إلى حد كبير بفضل الكتابة الديناميكية.

  • PHP هي لغة لإنشاء البرامج النصية. يُستخدم على نطاق واسع في تطوير الويب، حيث يوفر التفاعل مع قواعد البيانات لإنشاء صفحات ويب ديناميكية تفاعلية. الكتابة الديناميكية تجعل العمل مع قواعد البيانات أسهل بكثير.

  • JavaScript هي لغة البرمجة المذكورة أعلاه، والتي وجدت تطبيقًا في تقنيات الويب لإنشاء نصوص ويب تعمل على جانب العميل. تُستخدم الكتابة الديناميكية لتسهيل كتابة التعليمات البرمجية لأنها عادةً ما تكون مقسمة إلى كتل صغيرة.

النوع الديناميكي للكتابة - العيوب

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

لخص

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

الكتابة - تعيين نوع لكيانات المعلومات.

أنواع البيانات البدائية الأكثر شيوعًا هي:

  • عددي
  • رمزي
  • منطقي

الوظائف الرئيسية لنظام نوع البيانات:

  • حماية
    يتم فحص كل عملية للتأكد من أنها تتلقى الوسائط من الأنواع المخصصة لها تمامًا؛
  • تحسين
    بناءً على النوع، يتم تحديد طريقة للتخزين الفعال وخوارزميات لمعالجته؛
  • توثيق
    يتم التأكيد على نوايا المبرمج؛
  • التجريد
    يتيح استخدام أنواع البيانات عالية المستوى للمبرمج التفكير في القيم ككيانات عالية المستوى بدلاً من مجموعة من البتات.

تصنيف

هناك العديد من التصنيفات لأنواع لغات البرمجة، ولكن هناك 3 تصنيفات رئيسية فقط:

الكتابة الثابتة/الديناميكية

ثابت - يتم إجراء التعيين والتحقق من تناسق النوع في مرحلة التجميع. ترتبط أنواع البيانات بالمتغيرات، وليس بقيم محددة. تتيح لك الكتابة الثابتة العثور على أخطاء الكتابة التي تحدث في فروع منطق البرنامج التي نادرًا ما تستخدم في مرحلة التجميع.

الكتابة الديناميكية هي عكس الكتابة الثابتة. في الكتابة الديناميكية، يتم اكتشاف جميع الأنواع أثناء تنفيذ البرنامج.

تتيح لك الكتابة الديناميكية إنشاء برامج أكثر مرونة، على الرغم من أن ذلك يكون على حساب احتمالية أكبر لحدوث أخطاء في الكتابة. يعد اختبار الوحدة مهمًا بشكل خاص عند تطوير البرامج بلغات البرمجة المكتوبة ديناميكيًا، نظرًا لأنها الطريقة الوحيدة للعثور على أخطاء الكتابة في الفروع النادرة الاستخدام لمنطق البرنامج.

الكتابة الديناميكية

فار LuckyNumber = 777؛ var siteName = "Tyapk"; // نفترض رقمًا، نكتب السلسلة var errorNumber = "999";

الكتابة الثابتة

دع LuckyNumber: number = 777؛ Let siteName: string = "Tyapk"; // سيتسبب في حدوث خطأ، دع الرقم الخاطئ: number = "999";

  • ثابت: جافا، C #، تايب سكريبت.
  • ديناميكية: بايثون، روبي، جافا سكريبت.

الكتابة الصريحة/الضمنية.

تختلف اللغات المكتوبة بشكل صريح في أنه يجب تحديد نوع المتغيرات/الوظائف/وسائطها الجديدة بشكل صريح. وفقًا لذلك، تقوم اللغات ذات الكتابة الضمنية بتحويل هذه المهمة إلى المترجم/المترجم الفوري. الكتابة الصريحة هي عكس الكتابة الضمنية.

تتطلب الكتابة الصريحة تعريفًا صريحًا للنوع لكل متغير مستخدم. هذا النوع من الكتابة هو حالة خاصة من الكتابة الثابتة، لأنه يتم تحديد نوع كل متغير في وقت الترجمة.

الكتابة الضمنية

Let stringVar = "777" + 99; // احصل على "77799"

الكتابة الصريحة (لغة خيالية مشابهة لـ JS)

Let errorStringVar = "777" + 99; // سوف يسبب خطأ Let stringVar = "777" + String(99); // احصل على "77799"

كتابة قوية/غير قوية

وتسمى أيضًا الكتابة القوية/الضعيفة. في الكتابة الصارمة، يتم تعيين الأنواع "مرة واحدة وإلى الأبد"، أما في الكتابة غير الصارمة، فيمكن تغييرها أثناء تنفيذ البرنامج.

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

كتابة قوية (لغة خيالية مشابهة لـ JS)

دع الرقم الخاطئ = 777؛ errorNumber = errorNumber + "99"; // حصلنا على خطأ بإضافة السلسلة إلى المتغير الرقمي errorNumber Let trueNumber = 777 + Number("99"); // احصل على 876

الكتابة غير الصارمة (كما هو الحال في JS)

دع الرقم الخاطئ = 777؛ errorNumber = errorNumber + "99"; // حصلت على السلسلة "77799"

  • صارمة: جافا، بايثون، هاسكل، ليسب.
  • غير صارمة: C، JavaScript، Visual Basic، PHP.

كل شيء بسيط جدا. إنه مثل الفرق بين فندق وشقة خاصة.

فقط أولئك المسجلين هناك يعيشون في الشقة. إذا كانت عائلة سيدوروف تعيش فيها، على سبيل المثال، فإن عائلة بوبكين لا تستطيع أن تعيش هناك طوال حياتنا. في الوقت نفسه، يمكن لبيتيا سيدوروف العيش في هذه الشقة، ثم يمكن لجريشا سيدوروف الانتقال إلى هناك (في بعض الأحيان يمكنهم العيش هناك في نفس الوقت - هذه مصفوفة). هذه كتابة ثابتة.

يمكن لعائلة سيدوروف العيش في الفندق في نفس الوقت. ليس عليهم دائمًا التسجيل هناك. ثم سيغادرون هناك، وسينتقل الجراء إلى هناك. ثم آل كوزنتسوف. ثم شخص آخر. هذه كتابة ديناميكية.

إذا عدنا إلى البرمجة فإن الحالة الأولى (الكتابة الثابتة) نجدها مثلا في لغات C وC++ وC# وJava وغيرها. قبل أن تقوم بتعيين قيمة لمتغير للمرة الأولى، يجب عليك معرفة ما ستخزنه هناك: الأعداد الصحيحة، وأرقام الفاصلة العائمة، والسلاسل، وما إلى ذلك ( سيعيش آل سيدوروف في هذه الشقة). الكتابة الديناميكية، من ناحية أخرى، لا تتطلب ذلك. عندما تقوم بتعيين قيمة، فإنك تقوم في نفس الوقت بتعيين نوع المتغير ( تعيش Vasya Pupkin من عائلة Pupkin الآن في غرفة الفندق هذه). يوجد هذا في لغات مثل PHP وPython وJavaScript.

كلا النهجين لهما مزايا وعيوب. أيهما أفضل أو أسوأ يعتمد على المشاكل التي يتم حلها. يمكنك قراءة المزيد من التفاصيل، على سبيل المثال، على ويكيبيديا.

مع الكتابة الثابتة، أنت تعرف بالضبط نوع المتغير في وقت كتابة البرنامج وتطوير الخوارزمية وتأخذ ذلك في الاعتبار. أولئك. إذا قلت أن المتغير G هو عدد صحيح غير موقّع بأربعة بايت، فسيكون دائمًا في الخوارزمية عددًا صحيحًا غير موقّع بأربعة بايت (إذا كان هناك أي شيء، فأنت بحاجة إلى تحويله بشكل صريح أو معرفة كيفية تحويل المترجم له بطريقة معينة مجموعة من المواقف، ولكن بشكل أساسي إذا كان هناك عدم تطابق في النوع، فهذا خطأ في الخوارزمية، وسيحذرك المترجم على الأقل)، مع حالة ثابتة، لا يمكنك وضع السلسلة "Vasya the Fool" في الرقم والفحوصات الإضافية قبل استخدام المتغير لتحديد "هل يوجد رقم هناك" غير مطلوبة، حيث تقوم بإجراء جميع البيانات الصحيحة في وقت إدخالها إلى البرنامج أو حسب ما تتطلبه الخوارزمية نفسها.

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

المتطلبات الأساسية

الكتابة الصارمة تعني استيفاء الشروط الإلزامية التالية:

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

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

الكتابة بلغات البرمجة

روابط

أنظر أيضا


مؤسسة ويكيميديا. 2010.

تعرف على "الكتابة القوية" في القواميس الأخرى:

    نوع البيانات هو مفهوم أساسي في نظرية البرمجة. يحدد نوع البيانات مجموعة من القيم، ومجموعة من العمليات التي يمكن تطبيقها على تلك القيم، وربما طريقة لتنفيذ قيم التخزين وتنفيذ العمليات. أي... ... ويكيبيديا

    كتابة البيانات نوع الأمان نوع الاستدلال الكتابة الديناميكية الكتابة الثابتة الكتابة القوية الكتابة الناعمة الأنواع التابعة كتابة البطة المقال الرئيسي: الكتابة القوية الكتابة الديناميكية هي تقنية على نطاق واسع... ... ويكيبيديا

    كتابة البيانات نوع الأمان نوع الاستدلال الكتابة الديناميكية الكتابة الثابتة الكتابة القوية الكتابة الناعمة الأنواع التابعة كتابة البطة المقال الرئيسي: الكتابة القوية الكتابة الثابتة هي تقنية على نطاق واسع... ... ويكيبيديا

    الكتابة الديناميكية هي تقنية تستخدم على نطاق واسع في لغات البرمجة ولغات المواصفات، حيث يرتبط المتغير بالنوع في لحظة تعيين قيمة، وليس في لحظة الإعلان عن المتغير. وهكذا في مختلف المجالات ... ويكيبيديا

    كتابة البيانات نوع الأمان نوع الاستدلال الكتابة الديناميكية الكتابة الثابتة الكتابة القوية الكتابة الناعمة الأنواع التابعة كتابة البطة الاستدلال النوعي في البرمجة هو ميزة مترجم ... ... ويكيبيديا

    كتابة البيانات نوع الأمان نوع الاستدلال الكتابة الديناميكية الكتابة الثابتة الكتابة القوية الكتابة الناعمة الأنواع التابعة كتابة البطة النوع المعتمد، في علوم الكمبيوتر والمنطق، وهو نوع يعتمد على قيمة. المعالين... ... ويكيبيديا

    - (يوجد أيضًا مصطلح نوع البيانات) وهو مفهوم أساسي لنظرية البرمجة. يحدد نوع البيانات مجموعة من القيم، ومجموعة من العمليات التي يمكن تطبيقها على مثل هذه القيم، وربما طريقة لتنفيذ تخزين القيم و... ... ويكيبيديا

    نوع البيانات المحتويات 1 التاريخ 2 التعريف 3 الحاجة إلى استخدام أنواع البيانات ... ويكيبيديا

    ولهذا المصطلح معاني أخرى، انظر ML (المعاني). دلالات تعلم الآلة: نماذج متعددة: وظيفية، حتمية، معيارية ظهرت في: 1973 المؤلف (المؤلفون): روبن ميلنر وآخرون جامعة إدنبرة ... ويكيبيديا