بستگی زبانی (رایانش)
یک بستگی یا قید (به انگلیسی: binding) در برنامهنویسی یا طراحی نرمافزار، یک واسط برنامهنویسی کاربردی (API) است که یک «کد چسب» را فراهم میبیند. این واسط مخصوصاً برای یک زبان برنامهنویسی ساخته شده است تا به کمک آن استفاده از یک کتابخانه خارجی یا یک سرویس سیستمعامل را امکانپذیر کند (یعنی کتابخانه یا سرویسی که محلی آن زبان نیست).[۱]
در دانش رایانه و برنامهنویسی، یک قید از یک زبان به یک کتابخانه یا سرویس سیستمعامل، یک رابط برنامهنویسی نرمافزار است که امکان استفاده از آن کتابخانه یا سرویس سیستمعامل را در آن زبان فراهم میکند. برای مثال برای استفاده از کتابخانهای که به زبان سی یا سی++ نوشته شده است، در زبانی دیگر مثلاً جاوا، باید یک قید جاوا به آن کتابخانه نوشت. به این ترتیب دیگر لازم نیست آن کتابخانه را به زبان جاوا بازنویسی کنید.[۲]
مشخصات
[ویرایش]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 زبانی از طریق پلت فرم
منابع
[ویرایش]- ↑ "Appendix A. Creating a language binding for cairo". Cairographics.org. Retrieved 2014-04-02.
- ↑ "Subversion JavaHL FAQ". Subclipse.tigris.org. 2013-06-18. Archived from the original on 27 December 2014. Retrieved 2014-04-02.
- ↑ "Appendix A. Creating a language binding for cairo". Cairographics.org. Retrieved 2014-04-02.
- ↑ "Standards, APIs, Interfaces and Bindings". Acm.org. Archived from the original on 2015-01-16. Retrieved 2014-04-02.
- ↑ "ctypes – A foreign function library for Python". Python v3.8.3 documentation. Docs.python.org. Retrieved 2020-06-04.
- ↑ 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.
- ↑ "Introduction – CFFI User Manual". Common-lisp.net. Retrieved 2014-04-02.
- ↑ "Subversion JavaHL FAQ". Subclipse.tigris.org. 2013-06-18. Archived from the original on 27 December 2014. Retrieved 2014-04-02.
پیوند به بیرون
[ویرایش]- قید بین سی و پیتون
- JTC1 / SC22 / WG11 - تکنیکهای اتصال، یک استاندارد ISO برای اتصال زبان
- زبان الزامآور چیست؟