زبان های اسکریپت نویسی، یک خانواده محبوب از زبان های برنامه نویسی هستند که اجازه می دهند کارهای مکرر به سرعت انجام شوند. زبان های اولیه اسکریپت نویسی معمولاً برای کاربردهای خاص و به عنوان «زبان های برچسب» برای ترکیب سیستم های موجود استفاده می شدند. با ظهور شبکه جهانی اینترنت، طیف وسیعی از زبان های اسکریپت نویسی برای استفاده در سرورهای وب ظاهر شدند. از آنجا که زبان های اسکریپت نویسی پردازش متن را ساده می کنند، به طور ایدهآل برای صفحات HTML مناسب هستند.
امروزه، مطابق با شاخص TIOBE، زبان های اسکریپت نویسی تقریباً یک سوم زبان های برنامه نویسی متداول جهان را تشکیل می دهند. جاوا اسکریپت، عملاً تنها زبان اسکریپت نویسی سمت مشتری است که در مرورگر اجرا می شود. اما زبان های سمت سرور Ruby، Python، PHP و Perl همگی جزء زبان های اسکریپت نویسی هستند.
زبان برنامه نویسی و اسکریپت نویسی چه تفاوتی دارند؟
آشنایی با زبان های برنامه نویسی C، C++ و جاوا به شما کمک می کند تا درک کنید که چه چیزی یک زبان برنامه نویسی را ایجاد می کند. در این زبان ها، متن اصلی توسط برنامه نویس نوشته و در مرحله بعد به کد باینری تبدیل می شود. در این فرایند از دو فایل استفاده می شود: فایل متن اصلی که برنامه نویس روی آن کار می کند و یک فایل باینری که می تواند مستقیماً روی کامپیوتر اجرا شود. کامپایلر، برنامه خاصی است که به عنوان مترجم بین دو فایل عمل می کند.
فرایند تبدیل منبع به کد باینری «کامپایل» نامیده می شود.
در حین کامپایل ، متن مبدا از نظر قابل قبول بودن بررسی می شود: آیا وقعاً همه متغیرها تعریف شدهاند؟ آیا انواع پارامترهای عملکردی با تعاریف عملکردی مطابقت دارد؟ آیا برنامه نویس در جایی کاراکتری را فراموش کرده است؟ این بررسی ها در کل متن منبع انجام می شود که ممکن است زمانبر باشد. کد باینری که پس از کامپایل تولید می شود به حدی بهینه شده است که ممکن است سریع و بدون خطا اجرا شود. به همین دلیل، زبان های کامپایل شده برای کارهای محاسباتی و سیستم های بزرگتر مناسب هستند.
برنامه هایی که با زبان اسکریپتنویسی نوشته شده باشند برای اجرا نیازی به کامپایل ندارند. بنابراین، هیچ فایل باینری از متن منبعی که توسط برنامه نویس نوشته شده باشد، تولید نمی شود. در نتیجه، برنامه هایی که به زبان اسکریپت نویسی نوشته شده باشند کارایی کمتری دارند. با این حال، این کاهش کارایی صرفاً بد نیست. این معاملهای کاملاً در نظر گرفته شده است: زبان های اسکریپت نویسی با انتقال بار بیشتر به پردازنده خیال برنامه نویس را راحت می کنند. به همین دلیل، زبان های اسکریپت نویسی برای برنامه های کوچک تا متوسط بسیار مفید هستند.
ایده اصلی کاهش حجم کار برای برنامه نویس را می توان به عنوان یک موضوع در حال اجرا در سراسر معماری بسیاری از زبان های اسکریپتنویسی مشاهده کرد. به عنوان مثال، آنها نیازی به مدیریت ذخیره سازی دستی ندارند که یک روش کارآمد و در عین حال مستعد خطا است. علاوه بر این، در بیشتر زبان های اسکریپت نویسی نیازی به وارد کردن نوع متغیر نیست. از آنجا که برنامه های نوشته شده به زبان های اسکریپت نویسی، کامپایل نمی شوند دیگر نیازی به تابع اصلی() نیست. نرم افزار را می توان مستقیماً با استفاده از زبان های اسکریپتنویسی، با متن منبع کمتر نوشت. مانند مثال زیر:
1 // “Hello World” example in Java
2 class HelloWorld {
3 static public void main( String args[] ) {
4 System.out.println( “Hello World!” );
5 }
6 }
1 # “Hello World” example in Python
2 print “Hello World!”
ویژگی های زبان اسکریپت نویسی:
همانطور که قبلاً ذکر شد، برنامه هایی که با زبان اسکریپتنویسی نوشته شدهاند قبل از اجرا توسط کامپایلر به کد باینری تبدیل نمی شوند. به جای کامپایلر از برنامهای به نام مفسر استفاده می شود. از نظر مفهومی، می توانید تصور کنید که مفسر، متن مبدأ را از بالا به پایین میخواند و کد باینری را به صورت قطعه قطعه تولید و اجرا می کند.
اما اگر هنوز در مورد اصطلاحات «متن مبدأ»، «کد باینری» و «مفسر» مطمئن نیستید،به مثال آنالوگ زیر دقت کنید: متن مبدا را به عنوان نمره موسیقی یک ارکستر در نظر بگیرید. در این مثال، کد باینری تولید نهایی قطعه موسیقی کامل است که در CD ذخیره شده است. موسیقی روی CD را می توان در هر دستگاهی پخش کرد، اما دیگر نمی توان به گذشته آن نگاه کرد. مفسر، ارکستری است که قطعه موسیقی را به صورت زنده پخش می کند.
برنامه نویسی تعاملی با زبان اسکریپت نویسی با استفاده از REPL
در بسیاری از زبان های اسکریپتنویسی، ممکن است مفسر را به صورت تعاملی اجرا کنید. این حالت REPL نامیده می شود که مخفف “Read-Eval-Print-Loop” می باشد. برنامه نویس، متن مبدأ را به مفسر تحویل می دهد سپس مفسر، متن را می خواند و ارزیابی می کند، در آخر نیز مفسر، نتیجه را بازگردانی می کند(Print) و منتظر ورودی بعد(Loop) می ماند.
اگر خطایی در حالت REPL چاپ شود، برنامه نویس می تواند محتوای متغیرها را برای تعیین خطا مشاهده کند. علاوه بر این، ممکن است مقدار یک متغیر را دوباره بنویسید و متن منبع را با یک مقدار جدید تست کنید. این کار اجازه می دهد تا یک برنامه از قطعات کوچکتر و جداگانه که آزمایش شده، ایجاد شود. توسعه و رفع اشکال، یکی می شود. این کار، نوشتن سریع یک برنامه را آسان می کند.
تعریف ساختارهای پیچیده به عنوان کلمات واقعی در زبان های اسکریپت نویسی
هدف زبان های اسکریپت نویسی کمتر کردن کار برنامه نویس است. برای انجام این کار، این زبان ها طیف وسیعی از ابزارها را در اختیار برنامه نویس قرار می دهند. آنها شامل ساختارهای داده پیچیدهای مانند رشته ها، لیست ها، فیلدها و اشیا هستند. آنها می توانند به عنوان “literals” در زبان های اسکریپت نویسی نوشته شوند. این مسئله اجازه می دهد که ساختارهای پیچیده داده به جای اینکه با چندین دستور جمع شوند، مستقیماً ایجاد شوند.
// Example of an object literal in JavaScript
customer = {
‘first name’: “Bob”,
‘surname’: “Jones”,
‘age’: 40,
‘active’: true,
‘addresses’: {
‘personal’: {},
‘company’: {},
},
}
# Example of HTML generation using template literal in JavaScript
page_title = ‘What Are Scripting Languages?’
h1 = ‘<h1>${page_title} </h1>’
# returns “<h1>What Are Scripting Languages? </h1>”
تایپ پویا در زبان های اسکریپت نویسی
در مثال بالا، ممکن است متوجه شده باشید که اصلاً هیچ نوع “int”، “string” یا “bool” وجود ندارد. با این حال، برنامه به نوع اطلاعات برای اجرا نیاز دارد، پس این اطلاعات از کجا آمده است؟
زبان های اسکریپتی معمولاً از “تایپ پویا” استفاده می کنند. مفسر بر اساس زمینه نوع متغیر را تعیین می کند. در زبان های اسکریپتنویسی، نوع متغیر ثابت نیست و با توجه به زمینه می تواند تغییر کند. مثلاً:
# Example of dynamic typing in Python
# A name displayed as a list of first name, surname
name = [‘Alice’, ‘Smith’]
# The type of the variable “name” is “list”
type(name)
# We only need the first name in the following
name = name[0]
# The type of the variable “name” is now “str”
type(name)
استفاده از زبان های اسکریپت نویسی
زبان های اسکریپتنویسی بر اساس استفاده و نوع کاربرد دسته بندی می شوند. برخی از زبان های اسکریپت نویسی در خط فرمان برای متراکم کردن توالی دستورات استفاده می شوند. آنها از این طریق به اتوماسیون روند کمک می کنند. این زبان ها شامل Bash و PowerShell می شوند.
VBA و AppleScript نیز عملکرد مشابهی را انجام می دهند. فرایندها را می توان در سطح برنامه با این زبان ها به صورت خودکار اجرا کرد.
از Python، Ruby،PHP، Perl و جاوا اسکریپت در سرورهای وب برای پیاده سازی وب سایت های پویا و برنامه های وب استفاده می شود. همچنین، جاوا اسکریپت تنها زبان برنامه نویسی است که در مرورگر وب اجرا می شود. اگرچه در ابتدا فقط برای برنامه نویسی عناصر تعاملی در نظر گرفته شده بود، اما امروزه کل برنامه های وب با جاوا اسکریپت نوشته شده است.
استفاده از زبان های اسکریپت نویسی در آمار و تحقیقات نیز بسیار رایج است. مرسوم ترین زبان ها در این مورد، R و Python هستند.