زبان اسکریپتنویسی
یک زبان اسکریپتنویسی (به انگلیسی: script language یا scripting language) یک زبان برنامهنویسی است که اجرای وظایف را خودکارسازی میکند. اسکریپتها برای محیطهای زمان اجرای خاص طراحی شدهاند. [1] اگر از زبان اسکریپتنویسی استفاده نشود، وظایف باید تک به تک توسط عامل انسانی اجرا گردد. زبانهای اسکریپتنویسی اکثراً تفسیر میشوند (به جای آنکه کامپایل شوند). [2]
چند مثال از وظایفی که توسط اسکریپت خودکارسازی میشوند
این محیطها میتوانند توسط اسکریپتها خودکارسازی شوند:
- برنامه کاربردی نرمافزاری
- صفحات وب در یک مرورگر
- استفاده از پوستههای سیستمعامل (OS)
- سیستمهای توکار
- و همچنین انواع بازیها.
اسکریپتها به آغازینها که معمولاً یا وظایف ابتدایی یا فراخوانی رابط برنامهنویسی کاربردی هستند، اجازه میدهد تا به برنامههای دیگر ترکیب گردند.[2]
ویژگیهای اسکریپتها
- زبانهای اسکریپتنویسی معمول، بسیار سریع یادگرفته و نوشته میشوند.[3]
- یعنی فایلهای کدمنبع آنها کوچک است، یا کد آنها تنها یک حلقه بخوان-ارزیابی کن-چاپ کن تعاملی دارد (Read–eval–print loop) (پوسته زبانی REPL).
- زبانهای اسکریپتنویسی معمولاً نحو و معناشناسی سادهای دارند.[2]
- معمولاً یک اسکریپت (کد نوشته شده در زبان اسکریپتنویسی) از ابتدا به انتها اجرا میشود، و نقطه ورودی صریح دیگری ندارد.[2]
- تفسیری اند: یک زبان اسکریپتنویسی معمولاً از طرف کد منبع یا بایتکد «تفسیر» میشود.[3]
- در مقابل محیط نرمافزاری که اسکریپت برای آن نوشته میشود معمولاً در یک زبان کامپایل شونده نوشته شدهاست، و در یک کد ماشین توزیع میشود.
- اسکریپتها معمولاً از انتزاع استفاده میکنند، که نوعی پنهان سازی اطلاعات است. تا لازم نباشد کاربران جزییات نوع متغیر درونی، ذخیره داده، و مدیریت حافظه را بیاورند.[2]
- اسکریپتها معمولاً توسط فردی که آنها را اجرا میکند ساخته و دستکاری میشوند، اما آنها معمولاً توزیع میشوند، مثل موقعی که بخشهای بزرگ بازیها در یک زبان اسکریپتنویسی نوشته میشود.[2]
نامهای دیگر زبان اسکریپتنویسی
- یک زبان اسکریپت نویسی میتواند به عنوان یک زبان خاص دامنه برای محیط خاص دیده شود. در مورد اسکریپتهای یک برنامه کاربردی، به آنها زبان توسعه (به انگلیسی: extension language) هم میگویند.[2]
- گاهی به اسکریپتها زبان برنامهنویسی بسیار سطح بالا (Very high-level programming language) میگویند. زیرا در بالاترین سطح انتزاع عمل میکنند.[2]
- در بزرگرایانهها به آنها زبان کنترل (به انگلیسی: control languages) میگویند، زیرا برای کنترل وظیفه استفاده میشود.[2]
یک مثال از اسکریپت و برنامه عادی غیر اسکریپتنویسی
مثال غیر اسکریپتی
برای مثال، معمول نیست که جاوا را یک زبان اسکریپتنویسی بدانیم، زیرا کلاسهای موجود در فایلها دارای نحو پیچیده و قواعد زیادی میباشد و به صورت تعاملی، امکان اجرای مستقیم جاوا نیست، زیرا فایلهای منبع میتوانند فقط شامل تعاریف باشند، که این تعاریف باید از «خارج» توسط برنامه کاربردی میزبان یا راهانداز برنامهکاربردی فراخوانی شوند.[2]
public class HelloWorld {
public void printHelloWorld() {
System.out.println("Hello World");
}
}
این قطعه کد میخواهد "Hello World" را چاپ کند، و کاری نمیکند زیرا main در کلاس HelloWorld تعریف نشدهاست.[2]
مثال اسکریپت
در نقطه مقابل پایتون امکان تعریف بعضی از توابع را در یک فایل منفرد میدهد، و روی هم رفته جلو تعریف مجزای تابع را میگیرد، و از سبک برنامهنویسی دستوری استفاده میکند. یا به صورت تعاملی از آن استفاده میکند.[2]
print("Hello World")
این یک خط کد است که "Hello World" را چاپ میکند، و هیچ عبارت اعلانی مثل main() در اینجا نیاز نیست.[2]
در زبانهای برنامهنویسی
خیلی از زبانهای همهکاره گویشهایی دارند که به صورت زبان اسکریپتنویسی استفاده میشود.
عبارت «زبان اسکریپتنویسی» همچنین برای ارجاع به
- زبانهای سطح بالا و همه منظوره پویا، مثل Perl، PoweShell، Python، و Tcl به کار میرود. در این زبانها اسکریپت برای برنامههای کوچک به کار میرود (کمتر از چند هزار خط کد).
- یا در زبانهای خاص دامنه مثل زبانهای پردازش متن sed و AWK.
- بعضی از این زبانها از ابتدا برای استفاده در یک محیط خاص توسعه یافتهاند، و سپس در یک زبان خاص دامنه یا همهکاره توسعه گرفتهاند.
- زبانهای اسکریپتنویسی میتوانند برای استفاده توسط کاربر نهایی یک برنامه طراحی شده باشند، (توسعه کاربر نهایی)
- یا ممکن است برای استفاده درونی توسط توسعه دهندگان طراحی شده باشند، بنابراین آنها بخشهای یک برنامه را در زبان اسکریپتنویسی بنویسند.
مثالهایی از این دسته عبارت است از: جاوا اسکریپت، پرل و پایتون.
انواع اسکریپتها
زبانهای اسکریپتنویسی برای اجرا نیاز به مفسر دارند تا در ابتدا تبدیل و دستور به دستور ترجمه شده و سپس اجرا شوند اما زبانهای برنامه نویسی قبل از اجرا توسط کامپایلر تبدیل به کد ماشین شده و برای اجرا از کامپایلر استفاده مینمایند.
به دلیل استفاده از مفسر برای اجرای اسکریپتها، دستورها یکی پس از دیگری و سطر به سطر ترجمه میشوند بنابراین زمان بیشتری برای اجرا گرفته و هر زمان که با اروری مواجه شوند، متوقف میشوند این در حالی است که کامپایلر قبل از اجرا ابتدا تمام کد را بررسی کرده و در صورت مشاهده خطا، گزارش میدهد.
زبانهای اسکریپتنویسی نیاز به کدنویسی کمتری داشته و زمان کمتری از برنامهنویسی میگیرند اما در برنامهنویسی با سایر زبانها، برنامهنویس مجبور است تا تمامی دستورها را به صورت دستی وارد نماید.
در برخی از موارد زبانهای برنامهنویسی محدودیت بیشتری نسبت به زبانهای اسکریپتنویسی دارند. بطور مثال شما قادر به ایجاد و طراحی یک برنامه دسکتاپ یا تلفن همراه به وسیله زبانهای برنامه نویسی نخواهید بود چرا که هیچگونه محیطی برای اجرای آنها وجود ندارد. برای درک بهتر میتوان PHP را مثال زد که از فریمورکهای آن نظیر وردپرس برای وبسایتها یا برنامههای تحت وب استفاده میگردد.
زبانهای چسبی
اسکریپتها در مقابل برنامهنویسی سیستمی قرار دارند. از این نظر، اسکریپتها مخصوصاً کد چسبیاند، و مولفههای نرمافزاری را متصل میکنند (زبانی که برای این هدف اختصاص یافتهاست یک زبان چسبی است).[2]
زبان کنترل وظیفه و پوسته سیستم عامل
یک کلاس عمده از زبانهای اسکریپتنویسی برای خودکارسازی کنترل وظیفه پدید آمدند، که با شروع و کنترل رفتار برنامههای سیستمی مرتبط است.[2]
اسکریپت GUI
با پدید آمدن واسط کاربری گرافیکی، یک نوع بخصوص از زبان اسکریپتنویسی برای کنترل یک رایانه پدید آمد. این زبانها با گرافیکهای مشابه با پنجره، منو، دکمه و غیره که انسانها با آن کار میکنند، تعامل داشتند.[2]
زبانهای برنامه کاربردی
زبانهای برنامه کاربردی خاص میتوانند به ردههای بسیار متفاوتی شکسته شوند (اجراشوندهها)، زبان برنامه کاربردی مبتنی مجزا، زبانهای درونی برنامه کاربردی خاص (مثل postscript) و از بین آنها زبانهای اسکریپتنویسی اصطلاحی وجود دارد که برای نیازهای کاربر برنامه کاربردی متناسبسازی شدهاند.[2]
زبانهای تعمیم یافته/توکار
تعدادی از زبانها برای هدف جایگزینی با زبانهای اسکریپتنویسی کاربردی خاص طراحی شدهاند، این کار از طریق قرار گرفتن در برنامه کاربردی انجام میشود.[2]
تاریخچه
در دهه ۱۹۶۰ اولین پوستههای فرمان ساخته شدند. کاربران این پوستهها گاه مجبور بودند برای انجام امور خود، سلسلهای از دستورهای تکراری یا مشابه را در پوسته وارد کنند. کمکم به پوستهها قابلیتهایی اضافه شد که کاربر با آن میتوانست الگوی دستور 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).