زبان اجرانامهنویسی
یک زبان اجرانامهنویسی (به انگلیسی: script language یا scripting language) یک زبان برنامهنویسی است که اجرای وظایف را خودکارسازی میکند. اجرانامهها برای محیطهای زمان اجرای خاص طراحی شدهاند.[۱] اگر از زبان اجرانامهنویسی استفاده نشود، وظایف باید تک به تک توسط عامل انسانی اجرا گردد. زبانهای اجرانامهنویسی اکثراً تفسیر میشوند (به جای آنکه کامپایل شوند).[۲]
چند مثال از وظایفی که توسط اجرانامه خودکارسازی میشوند[ویرایش]
این محیطها میتوانند توسط اجرانامهها خودکارسازی شوند:
- برنامه کاربردی نرمافزاری
- صفحات وب در یک مرورگر
- استفاده از پوستههای سیستمعامل (OS)
- سیستمهای توکار
- و همچنین انواع بازیها.
اجرانامهها به آغازینها که معمولاً یا وظایف ابتدایی یا فراخوانی رابط برنامهنویسی کاربردی هستند، اجازه میدهد تا به برنامههای دیگر ترکیب گردند.[۲]
ویژگیهای اجرانامهها[ویرایش]
- زبانهای اجرانامه معمول، بسیار سریع یادگرفته و نوشته میشوند.[۳]
- یعنی فایلهای کدمنبع آنها کوچک است، یا کد آنها تنها یک حلقه بخوان-ارزیابی کن-چاپ کن (Read–eval–print loop) تعاملی دارد (پوسته زبانی REPL).[۴]
- زبانهای اجرانامه معمولاً نحو و معناشناسی سادهای دارند.[۲]
- معمولاً یک اجرانامه (کد نوشته شده در زبان اجرانامه) از ابتدا به انتها اجرا میشود، و نقطه ورودی صریح دیگری ندارد.[۲]
- تفسیری اند: یک زبان اجرانامه معمولاً از طرف کد منبع یا بایتکد «تفسیر» میشود.[۳]
- در مقابل محیط نرمافزاری که اجرانامه برای آن نوشته میشود معمولاً در یک زبان کامپایل شونده نوشته شدهاست، و در یک کد ماشین توزیع میشود.
- اجرانامهها معمولاً از انتزاع استفاده میکنند، که نوعی پنهان سازی اطلاعات است. تا لازم نباشد کاربران جزییات نوع متغیر درونی، ذخیره داده، و مدیریت حافظه را بیاورند.[۲]
- اجرانامهها معمولاً توسط فردی که آنها را اجرا میکند ساخته و دستکاری میشوند، اما آنها معمولاً توزیع میشوند، مثل موقعی که بخشهای بزرگ بازیها در یک زبان اجرانامه نوشته میشود.[۲]
نامهای دیگر زبان اجرانامهنویسی (scripting language)[ویرایش]
- یک زبان اجرانامه نویسی میتواند به عنوان یک زبان خاص دامنه برای محیط خاص دیده شود. در مورد اجرانامههای یک برنامه کاربردی، به آنها زبان تعمیم (به انگلیسی: extension language) هم میگویند.[۲]
- گاهی به اجرانامهها زبان برنامهنویسی بسیار سطح بالا (Very high-level programming language) میگویند. زیرا در بالاترین سطح انتزاع عمل میکنند.[۲]
- در بزرگرایانهها به آنها زبان کنترل (به انگلیسی: control languages) میگویند، زیرا برای کنترل وظیفه استفاده میشود.[۲]
یک مثال از اجرانامه و برنامه عادی غیر اجرانامه[ویرایش]
مثال غیر اجرانامه[ویرایش]
برای مثال، معمول نیست که جاوا را یک زبان اجرانامه بدانیم، زیرا کلاسهای موجود در فایلها دارای نحو پیچیده و قواعد زیادی میباشد و به صورت تعاملی، امکان اجرای مستقیم جاوا نیست، زیرا فایلهای منبع میتوانند فقط شامل تعاریف باشند، که این تعاریف باید از «خارج» توسط برنامه کاربردی میزبان یا راهانداز برنامهکاربردی فراخوانی شوند.[۲]
public class HelloWorld {
public void printHelloWorld() {
System.out.println("Hello World");
}
}
این قطعه کد میخواهد "Hello World" را چاپ کند، و کاری نمیکند زیرا main در کلاس HelloWorld تعریف نشدهاست.[۲]
مثال اجرانامه[ویرایش]
در نقطه مقابل پایتون امکان تعریف بعضی از توابع را در یک فایل منفرد میدهد، و روی هم رفته جلو تعریف مجزای تابع را میگیرد، و از سبک برنامهنویسی دستوری استفاده میکند. یا به صورت تعاملی از آن استفاده میکند.[۲]
print("Hello World")
این یک خط کد است که "Hello World" را چاپ میکند، و هیچ عبارت اعلانی مثل main() در اینجا نیاز نیست.[۲]
در زبانهای برنامهنویسی[ویرایش]
خیلی از زبانهای همهکاره گویشهایی دارند که به صورت زبان اجرانامه استفاده میشود.
عبارت «زبان اجرانامه» همچنین برای ارجاع به
- زبانهای سطح بالا و همه منظوره پویا، مثل Perl، PoweShell، Python، و Tcl به کار میرود. در این زبانها اجرانامه برای برنامههای کوچک به کار میرود (کمتر از چند هزار خط کد).
- یا در زبانهای خاص دامنه مثل زبانهای پردازش متن sed و AWK.
- بعضی از این زبانها از ابتدا برای استفاده در یک محیط خاص توسعه یافتهاند، و سپس در یک زبان خاص دامنه یا همهکاره توسعه گرفتهاند.
- زبانهای اجرانامه میتوانند برای استفاده توسط کاربر نهایی یک برنامه طراحی شده باشند، (توسعه کاربر نهایی)
- یا ممکن است برای استفاده درونی توسط توسعه دهندگان طراحی شده باشند، بنابراین آنها بخشهای یک برنامه را در زبان اجرانامه بنویسند.
مثالهایی از این دسته عبارت است از: جاوا اسکریپت، پرل و پایتون.
انواع اجرانامهها[ویرایش]
زبان های اجرانامه برای اجرا نیاز به مفسر دارند تا در ابتدا تبدیل و دستور به دستور ترجمه شده و سپس اجرا شوند اما زبان های برنامه نویسی قبل از اجرا توسط کامپایلر تبدیل به کد ماشین شده و برای اجرا از کامپایلر استفاده می نمایند.
به دلیل استفاده از مفسر برای اجرای اجرانامه ها، دستورها یکی پس از دیگری و سطر به سطر ترجمه می شوند بنابراین زمان بیشتری برای اجرا گرفته و هر زمان که با اروری مواجه شوند، متوقف می شوند این در حالی است که کامپایلر قبل از اجرا ابتدا تمام کد را بررسی کرده و در صورت مشاهده خطا، گزارش می دهد.
زبان های اجرانامه نیاز به کدنویسی کمتری داشته و زمان کمتری از برنامه نویسی می گیرند اما در برنامه نویسی با سایر زبان ها، برنامه نویس مجبور است تا تمامی دستورها را به صورت دستی وارد نماید.
در برخی از موارد زبان های برنامه نویسی محدودیت بیشتری نسبت به زبان های اجرانامه دارند. بطور مثال شما قادر به ایجاد و طراحی یک برنامه دسکتاپ یا تلفن همراه به وسیله زبان های برنامه نویسی نخواهید بود چرا که هیچگونه محیطی برای اجرای آن ها وجود ندارد. برای درک بهتر می توان PHP را مثال زد که از فریم ورک های آن نظیر وردپرس برای وب سایت ها یا برنامه های تحت وب استفاده می گردد.
زبان های اجرانامه برای اجرا نیاز به مفسر دارند تا در ابتدا تبدیل و دستور به دستور ترجمه شده و سپس اجرا شوند اما زبان های برنامه نویسی قبل از اجرا توسط کامپایلر تبدیل به کد ماشین شده و برای اجرا از کامپایلر استفاده می نمایند.
به دلیل استفاده از مفسر برای اجرای اجرانامه ها، دستورها یکی پس از دیگری و سطر به سطر ترجمه می شوند بنابراین زمان بیشتری برای اجرا گرفته و هر زمان که با اروری مواجه شوند، متوقف می شوند این در حالی است که کامپایلر قبل از اجرا ابتدا تمام کد را بررسی کرده و در صورت مشاهده خطا، گزارش می دهد.
زبان های اجرانامه نیاز به کدنویسی کمتری داشته و زمان کمتری از برنامه نویسی می گیرند اما در برنامه نویسی با سایر زبان ها، برنامه نویس مجبور است تا تمامی دستورها را به صورت دستی وارد نماید.
در برخی از موارد زبان های برنامه نویسی محدودیت بیشتری نسبت به زبان های اجرانامه دارند. بطور مثال شما قادر به ایجاد و طراحی یک برنامه دسکتاپ یا تلفن همراه به وسیله زبان های برنامه نویسی نخواهید بود چرا که هیچگونه محیطی برای اجرای آن ها وجود ندارد. برای درک بهتر می توان PHP را مثال زد که از فریم ورک های آن نظیر وردپرس برای وب سایت ها یا برنامه های تحت وب استفاده میگردد [۱].
زبانهای چسبی[ویرایش]
اجرانامهها در مقابل برنامهنویسی سیستمی قرار دارند. از این نظر، اجرانامهها مخصوصاً کد چسبی اند، و مولفههای نرمافزاری را متصل میکنند (زبانی که برای این هدف اختصاص یافتهاست یک زبان چسبی است).[۲]
زبان کنترل وظیفه و پوسته سیستم عامل[ویرایش]
یک کلاس عمده از زبانهای اجرانامه برای خودکار سازی کنترل وظیفه پدید آمدند، که با شروع و کنترل رفتار برنامههای سیستمی مرتبط است.[۲]
اجرانامه GUI[ویرایش]
با پدید آمدن واسط کاربری گرافیکی، یک نوع بخصوص از زبان اجرانامه برای کنترل یک رایانه پدید آمد. این زبانها با گرافیکهای مشابه با پنجره، منو، دکمه، و غیره که انسانها با آن کار میکنند، تعامل داشتند.[۲]
زبانهای برنامه کاربردی[ویرایش]
زبانهای برنامه کاربردی خاص میتوانند به ردههای بسیار متفاوتی شکسته شوند، (اجراشوندهها) زبان برنامه کاربردی مبتنی مجزا، زبانهای درونی برنامه کاربردی خاص (مثل postscript) و از بین آنها زبانهای اجرانامه اصطلاحی وجود دارد که برای نیازهای کاربر برنامه کاربردی متناسب سازی شدهاند.[۲]
زبانهای تعمیم یافته/توکار[ویرایش]
تعدادی از زبانها برای هدف جایگزینی با زبانهای اجرانامه کاربردی خاص طراحی شدهاند، این کار از طریق قرار گرفتن در برنامه کاربردی انجام میشود.[۲]
تاریخچه[ویرایش]
در دهه ۱۹۶۰ اولین پوستههای فرمان ساخته شدند. کاربران این پوستهها گاه مجبور بودند برای انجام امور خود، سلسلهای از دستورهای تکراری یا مشابه را در پوسته وارد کنند. کمکم به پوستهها قابلیتهایی اضافه شد که کاربر با آن میتوانست الگوی دستور kmهای خود را به پوسته اعلام کند و پوسته بهطور خودکار دستورها را انجام میداد. این پیشرفتها منجر به ساخت اولین اسکریپتهای پوستهای شد.
در واقع اسکریپتهای اولیه برنامههای کوچکی بودند که به وسیله آنها میشد برخی وظایف تکراری و پراستفاده یا یک وظیفه طولانی را بهطور خودکار انجام داد. زبانهای اسکریپتنویسی امروزه پیشرفتهای زیادی کردهاند. آنها در زمینههایی چون کنترل وظایف و پوسته، واسطهای گرافیکی کاربر، واژهپردازی، خدمتگزاران وب و خدمتگیرندههای وب استفاده میشوند.
منابع[ویرایش]
- ↑ "ECMAScript 2019 Language Specification". www.ecma-international.org. Retrieved 2018-04-02.
- ↑ ۲٫۰۰ ۲٫۰۱ ۲٫۰۲ ۲٫۰۳ ۲٫۰۴ ۲٫۰۵ ۲٫۰۶ ۲٫۰۷ ۲٫۰۸ ۲٫۰۹ ۲٫۱۰ ۲٫۱۱ ۲٫۱۲ ۲٫۱۳ ۲٫۱۴ ۲٫۱۵ ۲٫۱۶ ۲٫۱۷ "Scripting language". Wikipedia. 2020-03-03.
- ↑ ۳٫۰ ۳٫۱ Brown, Vicki. "Scripting Languages". Retrieved 2009-07-22.
- ↑ Hey, Tony; Pápay, Gyuri (2014). The Computing Universe: A Journey through a Revolution. Cambridge University Press. p. 76. ISBN 978-1-31612322-5, "A major characteristic of modern scripting languages is their interactivity, sometimes referred to as a REPL programming environment. […] The characteristics of ease of use and immediate execution with a REPL environment are sometimes taken as the definition of a scripting language."
- Wikipedia-bijdragers, "Scripttaal," Wikipedia, de vrije encyclopedie, http://nl.wikipedia.org/w/index.php?title=Scripttaal&oldid=16834954 (accessed juni 8, 2009).
- Wikipedia contributors, "Scripting language," Wikipedia, The Free Encyclopedia, http://en.wikipedia.org/w/index.php?title=Scripting_language&oldid=295158047 (accessed June 8, 2009).