آیا PHP یک زبان Scripting است یا Programming؟


به منظور درک بهتر تفاوت مابین زبان‌های Scripting با Programming، ابتدا می‌بایست ببینیم که دلیل ابداع زبان‌های اسکریپتینگ چه بوده، سپس به بررسی این موضوع بپردازیم که چنین تقسیم‌بندی اساساً کار درستی است یا نیاز به نوع دیگری از تقسیم‌بندی مابین زبان‌ها داریم.

زبان‌هایی همچون زبان ++C یا Java، برای کدنویسی پروژه‌های نرم‌افزارهای مختلفی مورد استفاده قرار می‌گیرند و این در حالی است که این زبان‌ها جزو اصطلاحاً Compiled Programming Languages (زبان‌های برنامه‌نویسی کامپایل شونده) محسوب می‌شوند چرا که سورس‌کد نوشته شده با این زبان‌ها ابتدا می‌بایست Compile شده -به عبارت دیگر، به زبان قابل‌فهم برای ماشین یا همان 0 و 1 تبدیل شوند- سپس قابل استفاده خواهند بود.

درآمدی بر زبان‌های Scripting
در طول زمان، برنامه‌های مختلفی که با زبان‌های برنامه‌نویسی کامپایل شونده نوشته می‌شدند نیاز به ساز و کاری داشتند تا سایر دولوپرها بتوانند Functionality (عملکرد) جدیدی برای آنها تعریف کنند و این شد که زبان‌های اسکریپتینگ ابداع شدند (در گذشته این‌‌گونه بود که برنامه‌نویسان برای چنین کاری، ابتدا شروع به نوشتن یکسری اسکریپت -یا بهتر بگوییم کامند یا دستور- می‌کردند تا کار خاصی را انجام دهند و همین شد که اصطلاح زبان‌های اسکریپتینگ باب شد).

به طور مثال، بسیاری از بازی‌های کامپیوتری با زبان ++C نوشته می‌شوند اما زبانی تحت عنوان Lua که یک زبان اسکریپتینگ است در این بازی‌ها به کار گرفته می‌شود که دیگر دولوپرها با استفاده از این زبان می‌توانند عملکردهای جدیدی در بازی تعریف کرده و به نوعی محیط بازی را برای خود کاستومایز (شخصی‌سازی) کنند.

به خاطر داشته باشید
یک زبان اسکریپتینگ هرگز کامپایل نمی‌شود و به محض آنکه شما کدی را بنویسید که از لحاظ سینتکسی و منطقی درست باشد، آن کد اجرا خواهد شد. 

به هر حال، اگر مرزی هم مابین زبان‌های اسکریپتینگ و برنامه‌نویسی قائل شویم، به خاطر تکنیک‌های کامپایل شدن سریع‌تر در فناوری‌های نوین، روز به روز این تفاوت و مرز کم‌رنگ‌تر می‌شود و شاهد این ادعا هم مثالی است که در ادامه خواهیم آورد. 

به طور مثال، موتور جاوا اسکریپت V8 در مرورگر گوگل کروم، به نوعی کدهای جاوااسکریپت را در لحظه به زبان ماشین کامپایل می‌کند تا سرعت اجرای کدها افزایش یابد اما این در حالی است که زبان جاوااسکریپت در دید بسیاری از برنامه‌نویسان، یک زبان اسکریپتینگ است. با توجه به اینکه گفته می‌شود که زبان‌های اسکریپتینگ از سرعت کمتری نسبت به زبان‌های برنامه‌نویسی کامپایل شونده برخوردارند، به نظر می‌رسد که با این فناوری به کار گرفته شده در مرورگر گوگل کروم، این مشکل سرعت پایین هم حل شده باشد.

نکتهٔ دیگری که در مورد زبان‌های به اصطلاح اسکریپتینگ وجود دارد این است که این دست زبان‌ها معمولاً از دسترسی کمتری به زیرساخت های سیستمی نسبت به زبان‌های برنامه‌نویسی برخوردارند. به طور مثال، زبان جاوااسکریپت هرگز این امکان را ندارد تا به فایل‌های سیستمی دسترسی پیدا کند. به هر حال، با اینکه زبان‌های اسکریپتینگ از سرعت کمتری برخورداند و همچنین به فایل‌های سیستمی دسترسی ندارند، اما این دست زبان‌ها از اقبال خوبی برخوردار شده‌اند چرا که برنامه‌های نوشته شده با این زبان‌ها، به سادگی آپدیت شده و توسعه می‌یابند.

یک زبان اسکریپتینگ صرفاً در پاسخ به یک Event (ایونت یا رویداد) کاری را انجام خواهد داد؛ به عبارت دیگر، چنانچه هیچ درخواست یا رویدادی وجود نداشته باشد، هیچ کاری هم صورت نخواهد گرفت اما این در حالی است که یک زبان برنامه‌نویسی بدون توجه به درخواست‌ها و یا رویدادها، باز هم قادر به انجام دستوراتی است که از پیش تعریف شده‌اند (از جمله زبان‌های برنامه‌نویسی معروف می‌توان به زبان‌های #C ،C++ ،Java ،C و ... اشاره نمود).

تفاوت‌ زبان‌های Compiled و Interpreted
با توجه به اینکه زبان‌های اسکریپتینگ خود نوعی از زبان‌های برنامه‌نویسی هستند، به نظر می‌رسد درست این باشد که به جای تقسیم‌بندی زبان‌ها به دو دستهٔ Scripting و Programming، آنها را به دو گروه زبان‌های برنامه‌نویسی Compiled و Interpreted تقسیم‌بندی کنیم. به عبارت دیگر، در زبان‌های برنامه‌نویسی اصطلاحاً Compiled (کامپایل شده)، سورس‌کد برنامه ابتدا کامپایل شده و به کدی فشرده، سریع، تست شده و از همه مهم‌تر قابل‌فهم برای سیستم تبدیل شده و اجرا می‌گردد و این دست زبان‌های برنامه‌نویسی هرگز به رویدادها برای انجام کاری وابسته نیستند.

واژهٔ Interprete (به معنای تفسیر کردن) زمانی که یک ed به انتهایش اضافه شود، صفتی می‌شود به معنای «تفسیر شونده» و به طور کلی منظور از زبان‌های برنامه‌نویسی تفسیر شونده‌یی مثل زبان جاوااسکریپت یا پی‌اچ‌پی، زبان‌هایی است که سورس‌کد آنها کامپایل نشده بلکه در لحظه توسط برنامه‌یی که Interpreter (مفسر) نام دارد، خط به خط تفسیر و بالتبع اجرا می‌گردد.

زبان PHP به کدام گروه تعلق دارد؟
به طور کلی، زبان PHP یک زبان برنامه‌نویسی تفسیرشونده از یک سو و سمت سرور از سوی دیگر است. اگر بخواهیم زبان دیگری از این نوع را یادآور شویم، می‌توانیم به زبان جاوااسکریپت اشاره کنیم اما این در حالی است که زبان‌های PHP با JS با یکدیگر دارای تفاوت‌هایی هم می‌باشند (توجه داشته باشیم که زبان جاوااسکریپت با زبان جاوا فرق می‌کند). در واقع، زبان پی‌اچ‌پی زبانی است Server-side (سمت سرور) اما این در حالی است که زبان جاوااسکریپت زبانی است Client-side (سمت کاربر).

آشنایی با تفاوت مابین زبان‌های Server-side و Client-side
چنانچه بخواهیم تفاوت مابین زبان‌های سمت سرور با سمت کاربر را توضیح دهیم، بایستی بگوییم که زبان جاوااسکریپت در مرورگر کاربر اجرا می‌گردد؛ پس یک زبان سمت کاربر محسوب می‌شود اما زبان پی‌اچ‌پی در سروری که از دید کاربر مخفی است اجرا گشته بنابراین یک زبان سمت سرور می‌باشد (سرور کامپیوتری است که یک وب‌سایت یا وب اپلیکیشن روی آن میزبانی می‌شود).

حال از آنجا که پی‌اچ‌پی در سمت سرور اجرا می‌گردد، از این‌ رو نیاز به یک نرم‌افزاری داریم تحت عنوان وب سرور تا ارتباط مابین کاربر و سرور را برقرار سازد که در آموزش‌های آتی بیشتر با مفهوم وب سرور آشنا خواهید شد.

نکته
همچنین در نظر داشته باشید که سرور با وب سرور فرق می‌کند. در واقع، سرور به یک سخت‌افزار اشاره دارد در حالی که وب سرور یک نرم‌افزار است.

در پایان هم بد نیست اشاره‌یی به زبان‌های Markup داشته باشیم. این دست زبان‌ها صرفاً به منظور نمایش دیتا مورد استفاده قرار می‌گیرد و هرگز این توانایی را ندارند تا در منطق نرم‌افزار دخالت کنند. از جمله زبان‌های Markup (نشانه‌گذاری)، می‌توان به زبان‌های HTML و XML اشاره کرد.

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
محسن
محسن
در تعریف رسمی ارایه شده php رو یک زبان اسکریپتینگ معرفی می کنن که بیشتر در پروژه های تحت وب ازش استفاده می شه

PHP: Hypertext Preprocessor (or simply PHP) is a server-side scripting language

https://en.wikipedia.org/wiki/PHP
Insight
Insight
معمولا برای بیان تفاوت میان زبان‌های برنامه‌نویسی و اسکریپت‌نویسی میگن که با زبان اسکریپت‌نویسی میشه برنامه‌ای نوشت که داخل یک برنامه‌ی دیگه اجرا میشه و ساخت یک برنامه‌ی کامپیوتری مستقل کار یک زبان برنامه‌نویسی هست.
البته امروزه با وجود فریمورک‌های مختلفی که برای زبان‌های گوناگون عرضه شده، عملا این مرز کمرنگ شده و تفاوت خاصی بین این دو نوع حس نمیشه.
کاربر میهمان
محمد مهدی رفیعیمن یک کاربر مهمان هستم
مطلب جالبی بود ...

تو سایت stackoverflow هم یکی اینطوری نوشته بود در جواب اینکه بالاخره اسکریپتی یا برنامه نویسی :

بطور معمول به یک زبان وقتی میگن اسکریپتی که کامپایل نشده است که تا جایی که من میدونم php اینطوریه ! ولی این روزا فرق زیادی نمیکنه . احتمالا یک برنامه نویس PHP کارهای بیشتری انجام میده ! و در کل این مهمه که تو با این زبان چی کار میکنی . حتی افرادی که در زبانی که داخله اسمش اسکریپت نامبرده شده که جاوا اسکریپت هست وقتی شروع به کار با چیزهای پیچیده تری نسبت به دستکاری DOM ساده با jquery و چیزای عادی میکنند خیلی زود بهشون برنامه نویس گفته میشه !

این هم جواب خوبیه !