زبان‌های اسکریپتی در دات نت

در شماره‌های پیشین با زبان‌هایی مثل روبی(Ruby) و پایتون (Python) آشنا شدیم. همان‌طور که قبلا بحث کردیم، این زبان‌ها به زبان‌های اسکریپتی (Script) معروف هستند. منظور از اسکریپت کدهایی است که با این زبان‌ها نوشته می‌شود و کامپایل نمی‌شود بلکه تفسیر می‌شود و هر زمانی که درخواستی برای اجرا شدن آنها صادر می‌شود، یک مفسر کد را تفسیر و آن را اجرا می‌کند. این زبان‌ها با این نوع اجرا، بهتر از بقیه زبان‌هایی که کامپایل می‌شوند، بهتر هستند در بحث ما نمی‌گنجد، اما خطایابی(Debug) این که کد‌هایی نوشته شده با این زبان‌ها به مراتب سخت‌تر از زبان‌های دیگر است.
کد خبر: ۵۵۷۹۱۱

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

بیایید زبانی را تصور کنیم که با گرامر(Syntax) پایتون نوشته شود و از امکانات دات‌نت استفاده کرده و در محیط ویندوزی کامپایل شود. این تصور دور از ذهن نیست، زیرا مایکروسافت، دات نت و# C خود را روز به روز بهتر کرد تا امکاناتی فراهم کند و برنامه‌نویسانی که به زبان‌های دیگر برنامه‌نویسی می‌کنند بتوانند براحتی از کد‌هایی که قبلا نوشته‌اند، در محیط ویندوز استفاده کنند.

مایکروسافت در C#4 و همین‌طور.Net4 یک ویژگی به نام (Dynamic Language Runtime) DLR را معرفی کرد. این ویژگی به زبان #C امکان می‌دهد تا براحتی کد‌های Python و Ruby را اجرا کند و از توابع و کلاس‌هایی که در این کدها نوشته شده‌اند به‌صورت کاملا محلی استفاده کند. به این شکل که شما می‌توانید توابع و کلاس‌های این کدها را به همان صورتی که از کلاس‌ها و توابعی که در سی شارپ نوشته‌اید، استفاده کنید. برای شفاف شدن موضع به کد زیر دقت کنید:

string[] lines =

{

@"def DoIt1(logObj):",

@" logObj.AddInfo

('Executed in a function call using log object input.')",

@"",

};

code = String.Join(" ", lines);

pyEngine = Python.CreateEngine();

pyScope = pyEngine.CreateScope();

ScriptSource source = pyEngine.CreateScriptSourceFromString(code, SourceCodeKind.Statements);

CompiledCode compiled = source.Compile();

compiled.Execute(pyScope);

همان‌طور که در کد بالا مشاهده می‌کنید؛ یک قطعه کد نوشته شده با زبان Python کامپایل شده و اجرا می‌شود و شما می‌توانید از خروجی این کد در برنامه خود استفاده کنید.

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

اما بر مبنای همین ویژگی، برنامه‌نویسان در مایکروسافت زبان‌های ابداعی را به‌وجود آوردند که کارها را راحت‌تر می‌کرد، از جمله این زبان‌ها می‌توان به IronPython که برمبنای زبان پایتون بنا شده و به شما امکان استفاده از کد‌های دات نت را در Python می‌دهد، اشاره کرد. شما می‌توانید خروجی خود را به‌صورت یک فایل اجرایی یا یک کتابخانه با پسوند dll‌ کامپایل کنید، یعنی دیگر نیازی به نصب پایتون و... ندارید. این زبان امکانات جالبی را برای برنامه‌نویسان ویندوزی فراهم می‌کند؛ به عنوان مثال می‌توان از توانایی‌های برنامه‌نویسان پایتون در تیم‌هایی که اپلیکیشن‌های تحت دات نت را توسعه می‌دهند، استفاده کرد، کد زیر:

import clr

clr.AddReference("System.Windows.Forms")

from System.Windows.Forms import MessageBox

MessageBox.Show("Hello World")

اما IronPython تنها زبانی نبود که پا به دنیای دات نت گذاشت، همان‌طور که تیم توسعه‌دهنده IronPython گفته‌اند، این زبان را می‌توانIronRuby نامید، زبان IronRuby هم دقیقا مانند IronPython است و شما می‌توانید از تمامی امکانات Ruby‌در دات نت و برعکس استفاده کنید.

اما سوال بزرگ این است که آیا این زبان‌ها در دنیای وب هم قدرتمند ظاهر خواهند شد یا می‌توانند در بستر دات نت و وب نیز مانند برنامه‌های ویندوزی موثر و مفید باشند؟

newsQrCode
ارسال نظرات در انتظار بررسی: ۰ انتشار یافته: ۰

نیازمندی ها