قید و اتصال زبان

در برنامه‌نویسی و طراحی نرم‌افزار، binding یک رابط برنامه‌نویسی برنامه (API) است که کد چسب یا glue code ای را به‌طور خاص تهیه می‌کند برای اینکه به یک زبان برنامه‌نویسی اجازه دهد تا از یک کتابخانه خارجی یا سرویس سیستم عامل (که به آن زبان آشنایی کامل ندارد) استفاده کند.

مشخصات 
binding به‌طور کلی به نقشه‌برداری یک چیز به چیز دیگر اشاره دارد. در زمینه کتابخانه‌های نرم‌افزار، bindingها کتابخانه‌های پیچشی (wrapper libraries) هستند که بین دو زبان برنامه‌نویسی پل می‌شوند تا کتابخانه ای که برای یک زبان نوشته شده‌است بتواند برای زبان دیگری استفاده شود. بسیاری از کتابخانه‌های نرم‌افزار به زبان‌های برنامه‌نویسی سیستم مانند C یا C ++ نوشته شده‌اند. برای استفاده از چنین کتابخانه‌هایی از زبان دیگر، معمولاً از سطح بالاتر، مانند جاوا، Common Lisp به، طرح، پایتون، یا لوا، یک اتصال یا binding به کتابخانه باید در آن زبان ایجاد شود، که احتمالاً بسته به مقدار تغییرات مورد نیاز کامپایل مجدد کد زبان نیاز است با این حال، بسیاری از زبان‌ها رابط تابع خارجی (foreign function interface) ارائه می‌دهند، مانند ctypes در پایتون و اوکامی و cffi و uffi در Embeddable Common Lisp

به عنوان مثال، از binding پایتون زمانی استفاده می‌شود که لازم است از یک کتابخانه خارجی C که برای برخی از اهداف نوشته شده‌است برای پایتون استفاده شود. مثال دیگر libsvn است که به زبان C نوشته شده‌است تا یک API برای دسترسی به مخزن نرم‌افزار Subversion فراهم کند. برای دسترسی به Subversion از داخل کد جاوا، می‌توان از libsvnjavahl استفاده کرد، که به نصب libsvn بستگی دارد و به عنوان پلی بین زبان جاوا و libsvn عمل می‌کند؛ بنابراین یک API فراهم می‌کند که توابع را از libsvn فراخوانی می‌کند.

انگیزه‌های اصلی ایجاد اتصالات کتابخانه شامل استفاده مجدد از نرم‌افزار، کم شدن نیاز پیاده‌سازی مجدد کتابخانه‌ها به چندین زبان و دشواری پیاده‌سازی کارآمد برخی الگوریتم‌ها در برخی از زبان‌های سطح بالا است.

محیط زمان اجرا 

مدل‌های شی 
 معماری کارگزار درخواست مشترک اشیا ((CORBA) - مدل زبان از نوع کراس پلت فرم
 مدل شیon کامپوننت (COM) - فقط مدل کراس زبان Microsoft Windows
 مدل شی توزیع شده (DCOM) - پسوند COM را قادر می‌سازد تا از طریق شبکه کار کند
 Cross Object Model Component Object (XPCOM) - برنامه‌های چند پلتفرمی برنامه‌های Mozilla
 زیرساخت زبان مشترک - . NET Framework - مدل زبانی بین پلتفرمی
 Freedesktop.org D-Bus - مدل زبان -کراس پلت فرم باز

ماشین‌های مجازی 
 مقایسه ماشین‌های مجازی کاربردی یا Comparison of application virtual machines

انتقال 
 شی قابل حمل - تعریف مدل شی object زبانی از طریق پلت فرم

منابع

پیوند به بیرون 
 JTC1 / SC22 / WG11 - تکنیک‌های اتصال، یک استاندارد ISO برای اتصال زبان
 زبان الزام‌آور چیست؟

کامپایلرها
کتابخانه‌های رایانه