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

از ویکی‌پدیا، دانشنامهٔ آزاد

در برنامه‌نویسی و طراحی نرم‌افزار، 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 فراخوانی می‌کند.[۶]

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

محیط زمان اجرا[ویرایش]

مدل‌های شی
ماشین‌های مجازی

انتقال[ویرایش]

منابع[ویرایش]

  1. "Appendix A. Creating a language binding for cairo". Cairographics.org. Retrieved 2014-04-02.
  2. "Standards, APIs, Interfaces and Bindings". Acm.org. Archived from the original on 2015-01-16. Retrieved 2014-04-02.
  3. "ctypes – A foreign function library for Python". Python v3.8.3 documentation. Docs.python.org. Retrieved 2020-06-04.
  4. Hickey, Jason; Madhavapeddy, Anil; Minsky, Yaron (2013). "Real Worl OCaml, Chapter 19. Foreign Function Interface". realworldocaml.org. Archived from the original on 18 July 2015. Retrieved 2015-07-19.
  5. "Introduction – CFFI User Manual". Common-lisp.net. Retrieved 2014-04-02.
  6. "Subversion JavaHL FAQ". Subclipse.tigris.org. 2013-06-18. Archived from the original on 27 December 2014. Retrieved 2014-04-02.

پیوند به بیرون[ویرایش]