به چه زبانهایی اسکریپتی گفته میشود؟
سلام و درود به میکرولرنیهای عزیز
گاهی یک سوال در ذهن کسانی که دارند به تازگی برنامه نویسی یاد میگیرن شکل میگیره. “به چه زبانهایی اسکریپتی گفته میشود؟” این سوال از اونجا شکل گرفته که فرد با مفهوم اسکریپت ارتباط برقرار نمیکنه و نمیتونه خوب درک کنه که دقیقا به چه چیزی داره اشاره میکنه.
این فرد اول باید بدونه که زبانهای اسکریپتی اصلا چرا و برای رفع چه نیازی به وجود اومدن. اگه شما هم چنین سوالی در ذهنتون شکل گرفته بهتره با این مقاله همراه بشید تا ببینیم که داستان اسکریپت چیه؟
فهرست مطالب
علت شکل گیری زبانهای اسکریپتی
مدتها قبل، برنامه نویسان برای نوشتن یک برنامه مثل مرورگر اینترنت، پخش کننده ویدیو یا … باید ابتدا حجم زیادی از کد را مینوشتند و سپس با کامپایل کردن کدها یک فایل خروجی نهایی (مثل exe. در ویندوز) توید میکردند. این فایل به مشتری نهایی تحویل داده میشد. معمولا بعد از مدتی، نیاز به ایجاد تغییر یا به روزرسانی باعث میشد تا برنامه نویس تصمیم بگیرد تغییراتی در برنامه ایجاد کند.
در چنین شرایطی، برنامه نویس باید سراغ کدها میرفت و بعد از ایجاد تغییرات، فایل خروجی نهایی را تولید میکرد. اما اگر کاربر آن نرم افزار میخواست تغییری را ایجاد کند، عملا هیچ راهکاری پیش پای او وجود نداشت، چرا که کدهای نرم افزار فقط در اختیار برنامهنویس یا شرکت سازنده بود.
حال اگر کاربر یا برنامه نویس میتوانستند کمی راحتتر و بدون درگیر شد با کدهای پیچیده و کامپایل کردن، تغییراتی در برنامه ایجاد کنند؛ امکان توسعه نرم افزارها با سرعت بیشتری فراهم میشد. فرض کنید با استفاده از یک ویرایشگر متن امکان اصلاح کدها و دریافت خروجی نهایی وجود داشت. ایده ی به وجود آمدن زبان های اسکریپتی همین بوده است. به آن فایل متنی «اسکریپت» می گویند و آن زبان ساده و نزدیک به زبان انسان هم «زبان اسکریپتی» نام دارد.
تفاوت کامپایلر و مفسر چیست؟
زبان های اسکریپتی نوعی از زبان های برنامه نویسی هستند که نیاز به مرحله ی کامپایل شدن ندارند بلکه باید تفسیر شوند. به عبارتی زبان های اسکریپتی برای اجرا نیاز به مفسر (interpreter) دارند در حالی که دیگر زبان های برنامه نویسی به کامپایلر نیاز دارند. اگر بخواهیم فرق بین مفسر با کامپایلر را بدانیم، ابتدا باید بدانیم که کامپایلر چیست؟
کامپیوترها فهمی از زبانهای برنامه نویسی ندارند وفقط زبان ماشین (تشکیل شده از صفر و یک) را اجرا می کنند. کامپایلر زبان های سطح بالا (مانند Java و #C) را به زبان ماشین تبدیل می کند. مفسر هم دقیقا مانند کامپایلر زبان های اسکریپتی را به زبان ماشین تبدیل کرده و اجرا می کند.
البته مفسر کل برنامه را یک جا به کد ماشین تبدیل نمی کند بلکه خط به خط این کار را انجام می دهد. به عبارت دیگر، مفسر اسکریپت نوشته شده را را تحویل گرفته و خطوط کد را به ترتیب و یکی پس از دیگری خوانده، به زبان ماشین ترجمه نموده و سپس اجرا می کند. هنگامی که یک خط از کد اجرا شد، همین روند تا رسیدن به انتهای اسکریپت ادامه پیدا میکند.
تفاوت بین زبان های برنامه نویسی و اسکریپت نویسی
زبان های اسکریپتی و برنامه نویسی با یکدیگر تفاوت هایی دارند که در این نوشته فقط به مهم ترین موارد اشاره می کنیم. البته به یاد داشته باشید که تفاوت بین آن ها رو به محو شدن است و روز به روز از اهمیت آن کم می شود.
دلیل این امر هم پیشرفت سریع سخت افزار و افزایش شدید سرعت پردازش است. دلیل دیگر آن است که ابزارهای نرم افزاری امروزی مانند کتابخانه ها، کامپایلرها و مفسرها نیز بسیار پیشرفته تر شده اند.
فایل خروجی
در زبان های برنامه نویسی پس از کامپایل شدن برنامه، در مرحله ی ساختن (build) یک فایل خروجی اجرایی تولید می شود. این فایل عملا یک پکیج فشرده شده شامل کدهای ماشین است. فرمت این فایل خروجی به پلتفرم هدف ربط دارد. مثلا اگر قرار باشد برنامه در سیستم عامل ویندوز اجرا شود فرمت فایل خروجی exe. خواهد بود.
در مورد زبانهای اسکریپتی این فایل اجرایی وجود ندارد. تمام خطوط کد درون یک فایل متنی تحت عنوان اسکریپت نوشته می شوند. مثلا درمورد جاوا اسکریپت این فایل دارای فرمت js. و در پایتون درای فرمت py. است. وقتی یک وب سایت را در مرورگر باز می کنید فایل js. توسط مرورگر دانلود می شود و سپس مفسر موجود در مرورگر آن را تفسیر کرده و اجرا می کند.
سرعت اجرا
به طور کلی زبان های برنامه نویسی سریع تر هستند چون از قبل کامپایل شده اند و خطاهای موجود در برنامه رفع شده اند. هم چنین خطوط برنامه از قبل تبدیل به کدهای ماشین شده است و مستقیما توسط پردازش گر اجرا می شوند.
در مورد زبان های اسکریپت نویسی، هر بار که مفسر اسکریپت را می خواند کدها را خط به خط و از ابتدا بررسی می کند، سپس کامپایل کرده و در نهایت اجرا می نماید. همچنین هنگامی که در اجرای یکی از خطوط خطایی رخ دهد، برنامه متوقف می شود.
نحوه ی اجرا
در زبان های برنامه نویسی فایل اجرایی خروجی برای اجرا شدن نیاز به نرم افزار خاصی ندارد و به طور مستقل اجرا می شود. در زبان های اسکریپت نویسی، اسکریپت برای اجرا شدن نیاز به نرم افزارهای دیگری دارد. مثلا اسکریپت های php برای اجرا نیاز به وب سرور یا مرورگر دارند.
ویژگی های برجسته زبانهای اسکریپتی
- یادگیری زبانهای اسکریپتی نسبتاً آسان تر است و مدت زمان کمتری نیاز دارد.
- کدنویسی و توسعه ی نرم افزار با این زبان ها ساده تر است و زمان کمتری را می طلبد.
- انتقال و اجرای اسکریپت در سیستم عامل های مختلف به راحتی انجام می شود.
- تغییر دادن و اصلاح کد راحت تر صورت می گیرد.
- برای اهداف متن باز (open source) بسیار مناسب است
برخی از کاربردهای زبان های اسکریپت نویسی
- یکی از کاربردهای گسترده زبانهای اسکریپتی در اپلیکیشن های وب است. این زبان ها هم در سمت سرور و هم در سمت کلاینت کاربرد فراونی دارند. در سمت سرور از زبان های جاوااسکریپت، php ، پایتون ، perl و … استفاده می شود. زبان پرکاربرد سمت کلاینت نیز جاوااسکریپت است.
- یکی دیگر از کاربردهای این زبان ها در زمینه ی مدیریت سیستم و سرور است. در این زمینه از زبان های shell، perl، پایتون و … استفاده می شود.
- این زبان ها در نوشتن پلاگین و افزونه برای نرم افزارهای موجود نیز به کار برده می شوند.
- بازی سازی، مالتی مدیا و استخراج داده از دیتاست ها از دیگر زمینه هایی هستند که زبان های اسکریپت نویسی در آن ها به کار گرفته می شوند.
تعدادی از زبانهای اسکریپتی
این که آیا یک زبان اسکریپتی است یا خیر، کاملا بستگی به شیوه ی پیاده سازی آن زبان و محیط اجرای کدها در آن زبان دارد. ما می توانیم برای هر زبانی که بخواهیم یک کامپایلر و یا یک مفسر طراحی کنیم. اگر آن زبان از طریق مفسر اجرا شود و فایل اجرایی نیز نداشته باشد اسکریپتی است و اصطلاحاً به آن «مفسری» نیز می گویند.
اگر همان زبان از طریق کامپایلر کامپایل شود و یک فایل اجرایی به ما تحویل داده شود، دیگر اسکریپتی نیست و اصطلاحاً به آن زبان «کامپایلری» می گویند. در ادامه با چند مورد از زبانهای اسکریپتی پرکاربرد را مرور میکنیم.
جاوااسکریپت
این زبان را می توان یکی از جزءهای اصلی حوزه ی توسعه ی وب دانست. ابتدا از این زبان برای پویاتر کردن صفحات وب استفاده می شد ولی اکنون بسیار فراتر از گذشته است. این روزها تقریباً تمامی قسمت های فرانت اند بر اساس این زبان نوشته می شود. همچنین از زبان جاوااسکریپت می توان در قسمت بک اند و سمت سرور نیز استفاده کرد. از دیگر کاربردهای این زبان می توان به حوزه های اپلیکیشن موبایل، اپلیکیشن دسکتاپ، توسعه ی بازی و اینترنت اشیاء نیز اشاره کرد.
البته اخیراً در رابطه با اسکریپتی بودن زبان جاوا اسکریپت اختلافاتی وجود دارد. دلیل این اختلاف نظرها نیز وجود موتورهایی مانند V8 است که به همراه مرورگرها ارائه شده اند. نحوه ی اجرای کدهای جاوااسکریپت در این موتورها گاهاً شبیه به زبان های کامپایلری است. ولی هنوز هم در اکثر جاها جاوااسکریپت یک زبان اسکریپتی نامیده می شود و اکثر برنامه نویسان نیز این حرف را قبول دارند.
پایتون
زبان پایتون با استفاده از مفسر بر روی تمامی پلتفرم ها مانند ویندوز، لینوکس، مک او اس و … قابل اجراست. پایتون زبانی سطح بالا و دارای کدهایی خوانا و آسان است. این زبان در کنار سادگی در استفاده و اجرا، از قدرت بالایی نیز برخوردار است. از زبان پایتون می توان در حوزه های مختلف مانند حوزه ی توسعه ی وب، یادگیری ماشین، هوش مصنوعی، تحقیقات علمی، توسعه ی بازی و اپلیکیشن های دسکتاپ استفاده کرد.
PHP
زبان برنامه نویسیPHP یک زبان بک اند است که در سمت سرور اجرا می شود. هم اکنون حدود ۸۰ درصد از وب سایت های دنیا از زبان PHP استفاده کرده اند. سیستم های مدیریت محتوای معروفی مانند وردپرس، جوملا و دروپال با این زبان نوشته شده اند.
Perl
زبانِ نسبتاً معروف Perl یک زبان اسکریپتی و دارای ویژگی هایی خلاقانه است. در سرورها از این زبان برای کاربردی هایی مثل پردازش متون، گزارش گیری و … استفاده می شود. وبسایت های پر ترافیکی مانند IMDB از زبان Perl نیز استفاده کرده اند.
اینم از یک مقاله تقریبا مفصل دیگه. امروز سعی کردیم شما رو با مفهوم اسکریپت بیشتر آشنا کنیم. بعید میدونم دیگه مشکلی در درک مفهوم اسکریپت داشته باشید. اما اگه سوالی یا نظری دارید همین پایین کامنت کنید. یادتون نره که این نظرات شماست که باعث میشه ما هر روز بهتر از قبل براتون محتوا تولید کنیم. خوش و خرم باشید. 🙂
درباره احسان عبداللهی
مدیر و موسس میکرولرن | برنامه نویسی پاسخی ظریف به یک نیاز در دنیای واقعی هست.
نوشته های بیشتر از احسان عبداللهیمطالب زیر را حتما مطالعه کنید
دوره های آموزشی مرتبط
آموزش جنگو
آموزش پایتون
آموزش الگوریتم و فلوچارت – تفکر برنامه نویسی
آموزش برنامه نویسی C برای میکروکنترلر
آموزش الکترونیک دیجیتال
14 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
خیلی واضح توضیح داده بودید. جاهای دیگه درموردش خونده بودم اما درست متوجه نشده بودم. بسیار متشکرم
خیلی خوشحالیم که براتون مفید بوده دوست عزیز 🙂
سلام خیلی عالی بود ممنون
درود بر شما
سلام ایا دستورات تعریف متغیر تاثیری تو خوانایی برنامه داره؟
سوال دیگه ایم ک دارم ایا شیوه تفسیر محض امروزه مورد استفاده قرار میگیرد؟ چرا
سلام
بله اگر شما متغیری را که تعریف می کنید با نام مناسب به کار نبرید برنامتون خوانایی کمتری داره. برای خوانایی بهتر باید نام مناسب و به شیوه استاندارد به کار ببرید.
در مورد سوال دوم اطلاع ندارم.
سلام ،
بسیار عالی بود دوست من !
کاملا صریح و خوانا!
سلام مجتبی جان
ممنون از نظر خوب شما.
خیلی با مقالتون حال کردم دمتون گرم عالی بود!!!
خوشحالم که براتون مفید بوده.
جامع و کامل ممنون بابت زحمتی که کشیدید (:
خیلی مفید بود ممنون
عالی! خوشحالم که بازم فعالیت رو از سر گرفتید
خواهش میکنم. منتظر باشید که امسال با کلی مقاله جدید بر میگردیم پیشتون.