تایپ ایستا و پویا
تایپ ایستا انواع را قبل از اجرای برنامه بررسی میکند، در حالی که تایپ پویا آنها را در حین اجرا بررسی میکند؛ تایپ تدریجی به دنبال ترکیب این دو در یک زبان است.
Definition
تایپ ایستا محدودیتهای نوع را در زمان کامپایل تأیید میکند تا برنامههای با نوع صحیح قبل از اجرا پذیرفته شوند؛ تایپ پویا بررسیهای نوع را به زمان اجرا موکول میکند و زمانی که عملیات بر روی مقادیر با نوع نامناسب اعمال میشوند، خطاها را مطرح میکند.
Scope
این موضوع طیف زمانی و چگونگی وقوع بررسی نوع را پوشش میدهد: بررسی ایستایی که برنامههای با نوع نادرست را در زمان کامپایل رد میکند، بررسی پویایی که خطاهای نوع را در زمان اجرا شناسایی میکند، و تایپ تدریجی یا اختیاری که امکان همزیستی این دو را فراهم میآورد. این موضوع به تضمینها، انعطافپذیری و پیامدهای عملکردی هر یک، همراه با صحت انضباط بررسی نوع میپردازد.
Core questions
- چه دستههایی از خطاها را بررسی ایستا از پیشگیری میکند که بررسی پویا نمیتواند از پیشگیری کند؟
- تایپ پویا چه انعطافپذیری را ارائه میدهد و با چه هزینهای؟
- چگونه تایپ تدریجی میتواند کد تایپ شده و بدون تایپ را به طور صحیح ترکیب کند؟
- صحت یک انضباط نوع ایستای چگونه برقرار میشود؟
Key theories
- تایپ تدریجی
- Siek و Taha یک سیستم نوع را تعریف کردند که به بخشهایی از یک برنامه اجازه میدهد به صورت ایستا و بخشهای دیگر به صورت پویا تایپ شوند، با یک رابطه سازگاری که تعامل ایمن در مرز را کنترل میکند.
- صحت نوع ایستا
- روش پیشرفت و حفظ Wright و Felleisen نشان میدهد که یک سیستم نوع ایستای صحیح تضمین میکند که برنامههای با نوع صحیح هرگز به حالتهای گیر کرده نمیرسند، و ایمنی بررسی ایستا را رسمی میکند.
Clinical relevance
انتخاب بین ایستا و پویا، جریان کاری توسعهدهنده، ابزارها و قابلیت اطمینان را شکل میدهد. سیستمهای تایپ تدریجی و اختیاری، مانند آنهایی که بر روی زبانهای پویا لایهبندی شدهاند، به تیمها اجازه میدهند تا تضمینهای ایستا را به تدریج به پایگاههای کد بزرگ موجود اضافه کنند.
History
زبانهای اولیه به دو دسته تایپ ایستا (Algol, Pascal, ML) و تایپ پویا (Lisp, Smalltalk) تقسیم شدند. با افزایش محبوبیت زبانهای پویا برای بهرهوری، محققان به دنبال آشتی دادن این رویکردها بودند؛ تایپ تدریجی Siek و Taha در سال ۲۰۰۶ و کارهای همزمان بر روی انواع اختیاری منجر به سیستمهای تایپ تدریجی پرکاربرد شد که بر روی زبانهای پویا ساخته شدهاند.
Debates
- هزینه و صحت تایپ تدریجی
- محققان بحث میکنند که آیا تایپ تدریجی صحیح میتواند از هزینههای بالای بررسی زمان اجرا در مرزهای تایپ شده/بدون تایپ جلوگیری کند، و آیا تایپ 'اختیاری' ناسالم یک معاوضه عملی بهتر است یا خیر.
Key figures
- Benjamin Pierce
- Jeremy Siek
- Walid Taha
- Matthias Felleisen
Related topics
Seminal works
- pierce2002
- siek2006
- wright1994
Frequently asked questions
- آیا تایپ ایستا همیشه بهتر از تایپ پویا است؟
- هیچکدام به طور کلی بهتر نیستند؛ تایپ ایستا خطاهای بیشتری را زودتر شناسایی میکند و به ابزارها کمک میکند، در حالی که تایپ پویا انعطافپذیری و نمونهسازی سریعتر را ارائه میدهد، بنابراین انتخاب صحیح به نیازهای قابلیت اطمینان و چابکی پروژه بستگی دارد.
- تایپ تدریجی چیست؟
- تایپ تدریجی به یک برنامه واحد اجازه میدهد تا بخشهای تایپ شده ایستا و پویا را با هم ترکیب کند، و بررسیهای زمان اجرا را در مرزها وارد میکند تا کد تایپ شده تضمینهای خود را حفظ کند در حالی که کد بدون تایپ انعطافپذیر باقی میماند.