تالار گفتمان مانشت
زمانهای تقید - نسخه‌ی قابل چاپ

زمانهای تقید - Engineer - 22 شهریور ۱۳۹۱ ۰۹:۳۵ ق.ظ

سلام.پیشاپیش به خاطر راهنماییتون متشکرمSmile
لطفا زمان های تقید رو اگه ممکنه با یه مثال برام توضیح بدهید. از کتاب مرجع پرات خوندم ولی متوجه نشدم!

RE: زمانهای تقید - farhud - 22 شهریور ۱۳۹۱ ۱۲:۰۸ ب.ظ

یه خلاصه میگم تا کلیات مطلب دستتون بیاد. برای تسط به موضوع خوبه که پرات خونده بشه همراه حل تست.
بایندینگ یا تقید یا انقیاد: اختصاص یه ویژگی به یک مولفه از برنامه از بین مجموعه ای از ویژگیها که به زمان این اختصاص دادن زمان تقید یا زمان بایندینگ گفته میشه.

۴ تا زمان تقید داریم:
۱-زمان تعریف زبان یا طراحی زبان: وقتی یه طراح زبان برنامه نویسی میشینه مثلا سینتاکس زبان یا انواع داده ای زبان رو تعریف میکنه.

۲-زمان پیاده سازی زبان یا طراحی کامپایلر: طراحی اینکه عملگرها چطوری عمل کنند. مثلا عملگر + با کدوم الگوریتم عمل بکنه؟ یا نمایش داخلی ثابت ها چطوری باشه. (نکته مهم: مجموعه مقادیر ممکن برای یه متغیر از نوع صحیح تو همین مرحله تعیین میشه نه مرحله تعریف زبان. چون باید نحوه نمایش داخلی نوعها توی سخت افزار تعیین بشه تا محدوده اونها هم تعیین بشه)

۳-زمان ترجمه که خودش سه جوره: تقید توسط برنامه نویس (اسم متغیرها)، تقید توسط کامپایلر(آدرس نسبی یا همون آفست متغیرها توی حافظه)، تقید توسط لودر یا بارکننده و یا تقید در زمان پیوند(آدرس واقعی متغیرها)

۴-زمان اجرا که خودش دو جوره: موقع ورود به یه بلوک (مثل اختصاص مقدار به پارامترهای ثابت توی زبان سی) و هر جای دلخواهی از برنامه (اختصاص مقدار به متغیرها)

***

حالا بر حسب اینکه تقیدها توی زمان اجرا انجام بشن یا توی زمان کامپایل هم یه تقسیم بندی داریم:
تقید نوع ایستا یا استاتیک که بهش میگن تقید زودرس یا early binding: چرا میگن زودرس؟ چون تقیدها توی زمان کامپایل مشخص شده.
تقید نوع پویا یا داینامیک که بهش میگن تقید دیررس یا late binding: چرا میگن دیررس؟ چون تقیدها رو مفسر توی زمان اجر انجام میده.

چه تفاوتهایی دارن؟
اگه کارایی بالا (همون سرعت اجرای بالا) مد نظر باشه خب معلومه میریم سراغ زبانهایی که تقید ایستا دارن. چه زبانهایی؟ زبان سی و پاسکال و فرترن.
اگر نه برامون قابلیت انعطاف برنامه مهم باشه میریم سراغ زبانهایی که تقید نوع پویا دارن. چون دیگه از اول برنامه تعیین نشده که مثلا یه متغیر حتما باید از فلان نوع باشه. چه زبانهایی؟ لیسپ و ام ال.

اگه هم کارایی بالا هم انعطاف بالا مدنظرمون باشه چیکار کنیم؟ در این صورت یه زبانهایی هم هست که به شما این امکان رو میده که خودت تعیین کنی که زمان انقیاد کی باشه؟ زمان کامپایل یا زمان اجرا؟ مثل زبان ada.

زمانهای تقید - Payam92 - 22 شهریور ۱۳۹۱ ۰۲:۳۸ ب.ظ


مختصر و بسیار مفید.