به منظور درک بهتر تفاوت مابین زبانهای Scripting با Programming، ابتدا می بایست ببینیم که دلیل ابداع زبانهای اسکریپتینگ چه بوده است! سپس بایستی ببینیم که چنین تقسیم بندی اساسا کار درستی است یا نیاز به نوع دیگری از تقسیم بندی مابین زبان ها داریم.
زبانهایی همچون زبان سی پلاس پلاس یا جاوا، برای کدنویسی پروژه های نرم افزارهای مختلفی مورد استفاده قرار می گیرند. این زبان ها، جزو Compiled Programming Languages یا «زبانهای برنامه نویسی کامپایل شونده» محسوب میشوند چرا که سورس کد نوشته شده با این زبانها ابتدا می بایست Compile شده -به عبارت دیگر، به زبان قابل فهم برای ماشین یا همان 0 و 1 تبدیل شوند- سپس قابل استفاده خواهند بود.
در طول زمان، این برنامههای مختلف که با زبانهای برنامه نویسی کامپایل شونده نوشته می شدند نیاز به ساز و کاری داشتند تا کاربرانشان بتوانند Functionality یا «عملکرد» جدیدی برای آنها تعریف کنند و این شد که زبانهای اسکریپتینگ ابداع شدند (در گذشته این گونه بود که برنامه نویسان برای چنین کاری، ابتدا شروع به نوشتن یکسری اسکریپت -یا بهتر بگوییم کامند یا دستور- میکردند تا کار خاصی را انجام دهند و همین شد که اصطلاح زبانهای اسکریپتینگ باب شد.) به طور مثال، بسیاری از بازیهای کامپیوتری با زبان سی پلاس پلاس نوشته میشوند اما زبانی تحت عنوان Lua که یک زبان اسکریپتینگ است در این بازیها به کار گرفته میشود که کاربران با استفاده از این زبان میتوانند عملکردهای جدید در بازی تعریف کرده و به نوعی محیط بازی را برای خود Customize کنند.
به خاطر داشته باشید
یک زبان اسکریپتینگ هرگز کامپایل نمیشود و به محض آن که شما کدی را بنویسید که بامعنا بوده و از لحاظ منطقی درست باشد، آن کد اجرا خواهد شد.
به هر حال، اگر مرزی هم مابین زبان های اسکریپتینگ و برنامه نویسی قائل شویم، به خاطر تکنیک های کامپایل شدن سریعتر در فناوری های نوین، روز به روز این تفاوت و مرز کمرنگ تر می شود و شاهد این ادعا هم مثالی است که در ادامه خواهیم آورد. به طور مثال، موتور جاوا اسکریپت V8 در مرورگر گوگل کروم، به نوعی کدهای جاوا اسکریپت را در لحظه به زبان ماشین کامپایل میکند تا سرعت اجرای کدها افزایش یابد اما این در حالی است که زبان جاوا اسکریپت در دید بسیاری از برنامه نویسان یک زبان اسکریپتینگ است. با توجه به این که گفته میشود که زبان های اسکریپتینگ از سرعت کمتری نسبت به زبانهای برنامه نویسی برخوردارند، به نظر میرسد که با این فناوری به کار گرفته شده در مرورگر گوگل کروم، این مشکل سرعت پایین هم حل شده باشد.
نکته ی دیگری که در مورد زبانهای به اصطلاح اسکریپتینگ وجود دارد این است که این دست زبانها معمولاً از دسترسی کمتری به زیرساخت های سیستمی نسبت به زبانهای برنامه نویسی برخوردارند. به طور مثال، زبان جاوا اسکریپت هرگز این امکان را ندارد تا به فایل های سیستمی دسترسی پیدا کند. به هر حال با این که زبان های اسکریپتینگ از سرعت کمتری برخورداند و همچنین به فایلهای سیستمی دسترسی ندارند، این دست زبانها با اقبال خوبی برخوردار شدهاند چرا که برنامههای نوشته شده با این زبانها به سادگی آپدیت شده و توسعه می یابند.
یک زبان اسکریپتینگ صرفاً در پاسخ به یک Event (ایونت یا رویداد) کاری را انجام خواهد داد. به عبارت دیگر، چنانچه هیچ درخواست یا رویدادی وجود نداشته باشد، هیچ کاری هم صورت نخواهد گرفت اما این در حالی است که یک زبان برنامه نویسی بدون توجه به درخواست ها و یا رویدادها، باز هم قادر به انجام دستوراتی است که از پیش تعریف شده اند. از جمله زبان های برنامه نویسی معروف می توان به زبان های سی، سی پلاس پلاس، جاوا، سی شارپ و ... اشاره نمود.
با توجه به این که زبانهای اسکریپتینگ خود نوعی از زبانهای برنامه نویسی هستند، به نظر میرسد درست این باشد که به جای تقسیمبندی زبانها به دو دسته ی Scripting و Programming، آنها را به دو گروه زبان های برنامه نویسی Compiled و Interpreted تقسیمبندی کنیم. به عبارت دیگر، در زبان های برنامه نویسی Compiled، سورس کد برنامه ابتدا کامپایل شده و به کدی فشرده، سریع، تست شده و از همه مهم تر قابل فهم برای سیستم تبدیل شده و اجرا می گردد و این دست زبان های برنامه نویسی هرگز به رویدادها برای انجام کاری وابسته نیستند.
واژه ی Interprete به معنای «تفسیر کردن» است و زمانی که یک ed به انتهای این فعل اضافه می کنیم، صفتی ساخته ایم به معنای «تفسیر شونده» و به طور کلی منظور از زبان های برنامه نویسی تفسیر شونده یی مثل زبان جاوا اسکریپت، زبان هایی است که سورس کد آن ها کامپایل نشده بلکه در لحظه توسط برنامه یی که Interpreter یا «مفسر» نام دارد، خط به خط تفسیر و بالتبع اجرا می گردد.
تکلیف زبان PHP چه می شود؟
به طور کلی، زبان پی اچ پی یک زبان برنامه نویسی سمت سرور تفسیر شونده است. اگر بخواهیم زبان دیگری از این نوع را یادآور شویم، می توانیم به زبان جاوا اسکریپت اشاره کنیم اما این در حالی است که زبان های پی اچ پی با جاوا اسکریپت با هم دارای تفاوت هایی هم می باشند (توجه داشته باشیم که زبان جاوا اسکریپت با زبان جاوا فرق می کند.) در واقع، زبان پی اچ پی زبانی است Server-side یا "سمت سرور" اما این در حالی است که زبان جاوا اسکریپت زبانی است Client-side یا "سمت کاربر".
چنانچه بخواهیم تفاوت مابین زبان های سمت سرور با سمت کاربر را توضیح دهیم، بایستی بگوییم که زبان جاوا اسکریپت در مرورگر کاربر اجرا می گردد، پس یک زبان سمت کاربر است اما زبان پی اچ پی در سروری که از دید کاربر مخفی است اجرا گشته بنابراین یک زبان سمت سرور می باشد (سرور کامپیوتری است که یک وب سایت یا وب اپلیکیشن روی آن میزبانی می شود.) حال از آنجا که پی اچ پی در سمت سرور اجرا می گردد، از اینرو نیاز به یک نرم افزاری داریم تحت عنوان وب سرور تا ارتباط مابین کاربر و سرور را برقرار سازد که در آموزش های آتی بیشتر با مفهوم وب سرور آشنا خواهیم شد.
در پایان هم بد نیست اشاره یی به زبانهای Markup داشته باشیم. این دست زبانها صرفاً به منظور نمایش دیتا مورد استفاده قرار میگیرد و هرگز این توانایی را ندارند تا در منطق نرمافزار دخالت کنند. از جمله زبانهای Markup یا «نشانه گذاری»، میتوان به زبانهای HTML و XML اشاره کرد.
زبانهایی همچون زبان سی پلاس پلاس یا جاوا، برای کدنویسی پروژه های نرم افزارهای مختلفی مورد استفاده قرار می گیرند. این زبان ها، جزو Compiled Programming Languages یا «زبانهای برنامه نویسی کامپایل شونده» محسوب میشوند چرا که سورس کد نوشته شده با این زبانها ابتدا می بایست Compile شده -به عبارت دیگر، به زبان قابل فهم برای ماشین یا همان 0 و 1 تبدیل شوند- سپس قابل استفاده خواهند بود.
در طول زمان، این برنامههای مختلف که با زبانهای برنامه نویسی کامپایل شونده نوشته می شدند نیاز به ساز و کاری داشتند تا کاربرانشان بتوانند Functionality یا «عملکرد» جدیدی برای آنها تعریف کنند و این شد که زبانهای اسکریپتینگ ابداع شدند (در گذشته این گونه بود که برنامه نویسان برای چنین کاری، ابتدا شروع به نوشتن یکسری اسکریپت -یا بهتر بگوییم کامند یا دستور- میکردند تا کار خاصی را انجام دهند و همین شد که اصطلاح زبانهای اسکریپتینگ باب شد.) به طور مثال، بسیاری از بازیهای کامپیوتری با زبان سی پلاس پلاس نوشته میشوند اما زبانی تحت عنوان Lua که یک زبان اسکریپتینگ است در این بازیها به کار گرفته میشود که کاربران با استفاده از این زبان میتوانند عملکردهای جدید در بازی تعریف کرده و به نوعی محیط بازی را برای خود Customize کنند.
به خاطر داشته باشید
یک زبان اسکریپتینگ هرگز کامپایل نمیشود و به محض آن که شما کدی را بنویسید که بامعنا بوده و از لحاظ منطقی درست باشد، آن کد اجرا خواهد شد.
به هر حال، اگر مرزی هم مابین زبان های اسکریپتینگ و برنامه نویسی قائل شویم، به خاطر تکنیک های کامپایل شدن سریعتر در فناوری های نوین، روز به روز این تفاوت و مرز کمرنگ تر می شود و شاهد این ادعا هم مثالی است که در ادامه خواهیم آورد. به طور مثال، موتور جاوا اسکریپت V8 در مرورگر گوگل کروم، به نوعی کدهای جاوا اسکریپت را در لحظه به زبان ماشین کامپایل میکند تا سرعت اجرای کدها افزایش یابد اما این در حالی است که زبان جاوا اسکریپت در دید بسیاری از برنامه نویسان یک زبان اسکریپتینگ است. با توجه به این که گفته میشود که زبان های اسکریپتینگ از سرعت کمتری نسبت به زبانهای برنامه نویسی برخوردارند، به نظر میرسد که با این فناوری به کار گرفته شده در مرورگر گوگل کروم، این مشکل سرعت پایین هم حل شده باشد.
نکته ی دیگری که در مورد زبانهای به اصطلاح اسکریپتینگ وجود دارد این است که این دست زبانها معمولاً از دسترسی کمتری به زیرساخت های سیستمی نسبت به زبانهای برنامه نویسی برخوردارند. به طور مثال، زبان جاوا اسکریپت هرگز این امکان را ندارد تا به فایل های سیستمی دسترسی پیدا کند. به هر حال با این که زبان های اسکریپتینگ از سرعت کمتری برخورداند و همچنین به فایلهای سیستمی دسترسی ندارند، این دست زبانها با اقبال خوبی برخوردار شدهاند چرا که برنامههای نوشته شده با این زبانها به سادگی آپدیت شده و توسعه می یابند.
یک زبان اسکریپتینگ صرفاً در پاسخ به یک Event (ایونت یا رویداد) کاری را انجام خواهد داد. به عبارت دیگر، چنانچه هیچ درخواست یا رویدادی وجود نداشته باشد، هیچ کاری هم صورت نخواهد گرفت اما این در حالی است که یک زبان برنامه نویسی بدون توجه به درخواست ها و یا رویدادها، باز هم قادر به انجام دستوراتی است که از پیش تعریف شده اند. از جمله زبان های برنامه نویسی معروف می توان به زبان های سی، سی پلاس پلاس، جاوا، سی شارپ و ... اشاره نمود.
با توجه به این که زبانهای اسکریپتینگ خود نوعی از زبانهای برنامه نویسی هستند، به نظر میرسد درست این باشد که به جای تقسیمبندی زبانها به دو دسته ی Scripting و Programming، آنها را به دو گروه زبان های برنامه نویسی Compiled و Interpreted تقسیمبندی کنیم. به عبارت دیگر، در زبان های برنامه نویسی Compiled، سورس کد برنامه ابتدا کامپایل شده و به کدی فشرده، سریع، تست شده و از همه مهم تر قابل فهم برای سیستم تبدیل شده و اجرا می گردد و این دست زبان های برنامه نویسی هرگز به رویدادها برای انجام کاری وابسته نیستند.
واژه ی Interprete به معنای «تفسیر کردن» است و زمانی که یک ed به انتهای این فعل اضافه می کنیم، صفتی ساخته ایم به معنای «تفسیر شونده» و به طور کلی منظور از زبان های برنامه نویسی تفسیر شونده یی مثل زبان جاوا اسکریپت، زبان هایی است که سورس کد آن ها کامپایل نشده بلکه در لحظه توسط برنامه یی که Interpreter یا «مفسر» نام دارد، خط به خط تفسیر و بالتبع اجرا می گردد.
تکلیف زبان PHP چه می شود؟
به طور کلی، زبان پی اچ پی یک زبان برنامه نویسی سمت سرور تفسیر شونده است. اگر بخواهیم زبان دیگری از این نوع را یادآور شویم، می توانیم به زبان جاوا اسکریپت اشاره کنیم اما این در حالی است که زبان های پی اچ پی با جاوا اسکریپت با هم دارای تفاوت هایی هم می باشند (توجه داشته باشیم که زبان جاوا اسکریپت با زبان جاوا فرق می کند.) در واقع، زبان پی اچ پی زبانی است Server-side یا "سمت سرور" اما این در حالی است که زبان جاوا اسکریپت زبانی است Client-side یا "سمت کاربر".
چنانچه بخواهیم تفاوت مابین زبان های سمت سرور با سمت کاربر را توضیح دهیم، بایستی بگوییم که زبان جاوا اسکریپت در مرورگر کاربر اجرا می گردد، پس یک زبان سمت کاربر است اما زبان پی اچ پی در سروری که از دید کاربر مخفی است اجرا گشته بنابراین یک زبان سمت سرور می باشد (سرور کامپیوتری است که یک وب سایت یا وب اپلیکیشن روی آن میزبانی می شود.) حال از آنجا که پی اچ پی در سمت سرور اجرا می گردد، از اینرو نیاز به یک نرم افزاری داریم تحت عنوان وب سرور تا ارتباط مابین کاربر و سرور را برقرار سازد که در آموزش های آتی بیشتر با مفهوم وب سرور آشنا خواهیم شد.
در پایان هم بد نیست اشاره یی به زبانهای Markup داشته باشیم. این دست زبانها صرفاً به منظور نمایش دیتا مورد استفاده قرار میگیرد و هرگز این توانایی را ندارند تا در منطق نرمافزار دخالت کنند. از جمله زبانهای Markup یا «نشانه گذاری»، میتوان به زبانهای HTML و XML اشاره کرد.