قید و اتصال زبان
این مقاله شامل فهرستی از منابع، کتب مرتبط یا پیوندهای بیرونی است، اما بهدلیل فقدان یادکردهای درونخطی، منابع آن همچنان مبهم هستند. (دسامبر ۲۰۲۰) |
در برنامهنویسی و طراحی نرمافزار، 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 زبانی از طریق پلت فرم
منابع[ویرایش]
- ↑ "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 برای اتصال زبان
- زبان الزامآور چیست؟