تبلیغات
Pro4 programming - چرا برنامه نویسی تابعی مهم است ؟

نویسنده :Pourya Alinezhad
تاریخ:1388/01/25-10:44

چرا برنامه نویسی تابعی مهم است ؟

وقتی افرا به برنامه نویسی تابعی فکر میکنند آنها بی دستور بودن را بعنوان ضعف در نظر میگیرند و فایده های آن را در نظر نمیگیرند. فرد ممکن است بگوید که با توجه به این که زبانهای دستوری 90% زبانهای بازار را تشکیل میدهد و به دلیل اینکه برنامه نویسی تابعی به این صورت نیست و همچنین با توجه به اینکه تعاریفی در ابتدای برنامه نویسی تابعی به صورت معمول نمیاید پس این نوع از برنامه کاملا کوتاه تر میباشد. افراد با توجه به این گفته ها جذب این نوع زبان بازگشتی بدون دستور که دنیای کاملا متفاوتی دارد نمیشوند. جان هیوز در مقاله کلاسه خود به نام "چرا زبانهاب برنامه نویسی تابعی مهم هستند" میگوید :
"
زبانهای برنامه نویسی تابعی شبیه کشیشان قرون وسطی میباشند
آنها لذت زندگی را از خود میگیرند تا به صورت خوب و پرهیزکار
جلوه کنند"

 

برای فهمیدن برتری های این نوع زبان باید بینید که اجازه استفاده از چه چیزهایی را خواهید داشت. برای مثال برنامه نویسی تابعی به شما اجازه برخورد با تبع را به صورت جداگانه داده و مقادیر توابع را به توابع دیگر ارجاع میدهد.در نگاه اول ممکن است این قابلیت مهم جلوه نکند اما روش برخورد این زبانها با این مسئله بسیار قابل توجه است و تفاوت بین داده و توابعی را که خیلی مسایل وابسته به آنها میباشند را از میان بر میدارد.
برنامه نویسی تابعی کوتاه تر و دسته بندی شده تر از سایر انواع است همچنین اندازه این برنامه ها و قابلیت خوانایی آنها حتی از زبانهای شی گرا نیز بیشتر است.
علاوه بر برخورد با تابع از طریق مقادیر آنها زبانهای تابعی ویژگیهای دیگری دارند که از ریاضیات گرفته شده و علی الخصوص در زبانهای دستوری مشاهده نمیشوند. برای مثال معمولا زبانهای برنامه نویسی تابعی توابع کولیر را ارائه میکنند که در هنگاه ارسال آرگومانها به توابع اگر تمام آرگومانها ارسال نشوند تابع برای دریافت دیگر مولف ها منتظر میماند. همچنین برای زبانهای برنامه نویسی تابعی این امکان وجود دارد که از انواع سیستمها در سطوح مختلف(قدرت یا وزن) استفاده کند یعنی سیستمهایی که در آنها قدرت نوع بر وزن آن برتری دارد که این مسئله باعث بهبود عملکرد تصحیح برنامه بدون تلاش زیاد میگردد.علاوه بر این یک تابع ممکن است چندین مقدار را برگرداند که صدازنی توابع به راحتی انجام میگیرید.

F#
چیست ؟

زبان برنامه نویسی تابعی بهترین روش حل مسایل کامپیوتریست اما زبان برنامه نویسی تابعی خالص برای برنامه نویسی همه منظوره مناسب نمیباشد بنابراین به تدریج زبانهای برنامه نویسی تابعی در کنار زبانهای شی گرا و دستوری باقی مانده و استفاده عمومی نیافتند. مچنین در این مدل ویژگیهای افزوده شده را به راحتی میتوان در هر برنامه ای نوشت و به راحتی به آن افزود. F# یک زبان طبیعی به وجود آمده بر این مبناست بعلاوه بسیار بیشتر از یک زبان برنامه نویسی تابعی میباشد. برخی از زبانهای برنامه نویسی تابعی معروف بطور کلی (OCAML , Haskel , Lisp) با دستورات زمان اجرای سفارشی کار میکند و این مسئله باعث نبود روش برنامه نویسی چند فعالیته میشود.
F#
یک زبان همه منظوره برای محیط .Net است که برای حالت اجرا بصورت همه منظوره به کار میرود و به راحتیهر سه مدل برنامه نویسی را شامل میشود. برای حل مسایل مختلف در موثرترین روش میتوانید محیط خاص آنرا در برنامه انتخاب کنید. شما میتوانیداز برنامه نویسی توصیفی استفاده کنید و یا توابع را به راحتی با هم ترکیب کنید و یا روشهای شی گرا و دستوری را در همان برنامه استفاده کنید و از قابلیتهای مختلف هر کدام در برنامه سود ببرید. مثل دیگر برنامه های تابعی F# نوع قوی دارد اما از نوع استنتاجی هم سود میبرد بنابراین برنامه نویسان نیاز ندارند زمان زیادی برای توضیح انواع توابع هدر دهند مگر اینکه در موارد خاص ابهاماتی دربرنامه پیش بیاید که لزوم داشته باشد به وضوح بیان شود.علاوه بر این F# بصورت کاملی با چهارچوب .Net و کتابخانه کلاس اصلی آن یعنی BCL ترکیب شده و به راحتی میتوان از آن در F# استفاده کرد و این مسئله مانند C# و VB میباشد و حتی در مواردی استفاده از BCL در F# از دیگر زبانهای تحت .Net راحت تر است.

F#
مدل خود را از روی OCAML انتخاب کد که زبان برنامه نویسی تابعی شی گرای موفقی بود سپس با گسترش قابلیتها خوب این برنامه آنها را از نظر فنی و فلسفه کار داخل غالب .Net گنجاند. این زبان کاملا از غالب .Net پشتیبانی کرده و به کاربران این امکان را میدهد که هر چیزی که در محیط .Net ارائه شده است با F# استفاده کنند. کامپایلر F# میتواند تمام پیاده سازیهای زیر ساختار زبانهای معمول را بپذیرد و از روشهای معمول .Net بدون تغییر کد استفاده کند. همچنین میتواند برای کد نویسی IL به صورت برچسب دار استفاده شود.

F#
محدود به محیط ویندوز نبوده و میتوان آنرا در لینوکس ، مکینتاش و... استفاده کرد که بخشی از کتاب مورد ترجمه به نحوه عملکرد روی لینوکس میپردازد.کامپایلر F# را میتوان داخل محیط Virtual Studio افزود و با عیب یاب آن به چک کردن دستورات به صورت اتوماتیک پرداخت. همچنین این کامپالر راهنمایی هایی برای استفاده از تمامی توابع عرضه میکند که در نوع خود بینظیر است و برنامه نویسان اشاره میکنند که این مسئله بسیار برای شبیه کردن برنامه به زندگی واقعی موثر است.
F#
توسط دکتر دون سیم ابداع شد. در حال حاضرمحصولیست وابسته به تیمی کوچک اما کاملا پیشرفته واقع در مرکز تحقیقات مایکروسافت - کمبریج - لندن - انگلستان با این حال F# در حد یک زبان آکادمیک یا تحقیقاتی نیست و برای خیلی از برنامه های دنیای واقعی (که تعداد آنها به شدت در حال افزایش است) به کار میرود. با توجه به اینکه زبان تابعی دیگری به ندرت در محیط .Net اجرا میشوند F# بعنوان استاندارد این نوع زبانها در آمده است. زبانهای برنامه نویسی تابعی در این میان از F# تبعیت میکنند زیرا این زبان کیفیت پیاده سازی و اشتراک با .Net و Virtual Studio را بسیار بهتر در خود دارد. هیچ برنامه برنامه نویسی .Net دیگری از لحاظ کارکرد ، استفاده و انعطاف پذیری به پای F# نمیرسد.



نوع مطلب : F#,Delphi