زبان برنامه نويسي F#‎ چيست؟

شنبه 9 شهریور 1392

زبان برنامه نويسي F#‎ چيست؟ <br/> زبان برنامه نويسي تابعي بهترين روش حل مسايل كامپيوتريست اما زبان برنامه نويسي تابعي خالص براي برنامه نويسي همه منظوره مناسب نميباشد بنابراين به تدريج زبانهاي برنامه نويسي تابعي در كنار زبانهاي شي گرا و دستوري باقي مانده و استفاده عمومي نيافتند.

زبان برنامه نويسي F#‎ چيست؟

زبان برنامه نويسي 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#‎

    در سال 2003 دنبال راهي براي پردازش IL كه زبان مياني مورد نياز براي كامپايل تمام زبانهاي .Net ميشد ميگشتم. در آن زمان .Net تقريبا جديد بود و گزينه هاي زيادي براي اين عمل وجود نداشت. من به سرعت دريافتم كه بهترين گزينه در آن زمان يا حتي امروزه API به نام ABSIL است كه به زباني ه نام F#‎ نوشته شده بود و من تصميم گرفتم از اين زبان براي نوشتن برنامه اي براي دسته بندي ABSIL استفاده كنم. بنابراين من از اين طريق ميتوانستم اطلاعات مورد نياز را از DLL ها به شكل مورد استفاده تراز C#‎‎ استفاده كنم. اما چيز جالبي در زمان نوشتن اين دسته بندي اتفاق افتاد. با وجو اينكه در آن زمانها برنامه نويسي به زبان F#‎ به دليل نبودن كامپايلر مناسب مشكل بود فهميدم كه از برنامه نويسي به اين زبان آنقدر لذت ميبرم كه وقتي نوشتن برنامه ام را تام كردم نميخواستم به C#‎‎ برگردم. يعني در حقيقت عاشق اين زبان شده بودم. زماني كه من به عنوان مشاور كار ميكردم نياز به چك كردن مدام تكنولوژي هاي جديد و API هاي آنها داشتم بنابرين تمام تجربياتم را با F#‎ انجام ميدادم. درهمان زمان افرادي در باره راه جديدي براي ارتباط با وب بحث ميكردند و لغت جديدي كه وارد زبان انگليسي شده بود Blog بود. من تصميم گرفتم كه يك وبلاگ داشته باشم چون هركسي كه در مقوله فن آوري درگير بود يكي از آنها را داشت بنابراين من وبلاگ خودم را راه اندازي كردم كه امروزه هم هنوز فعال است. آنگاه يك دايره المعارف درباره F#‎ به وبلاگم افزودم كه در حال حاضربسيار محبوب است و از شيوه wiki در آن استفاده كرده ام. كار من لزوما با مسافرت هاي زيادي همراه بود بذا زمان زيادي را در اطاقهاي هتل يا ترنها يا هواپيماها داشتم. در اين زمانها ميتوانستم به راحتي به مسايلي مانند F#‎ بپردازم. من به مبادله ايميلهايي با دون سيم(ابداعگر F#‎) پرداختم و سپس به تدريج با هم ملاقاتهايي داشتيم. ابتدا به جايي براي صرف نوشيدني رفتيم و اولين بخش ساختار DNA را با هم وجود آورديم يعني در حقيقت كار خود را با يكديگر آغاز كرديم. آيا سالها بعد افرادي درباره باري(Bar) كه اولين بار سيم و پيكرينگ(نويسندگان كتاب) با هم ملاقات كردند چيزي خواهند گفت ؟شايد نه! در هر حال تمام اين مسائل مرا به نقطه اي هدايت كرد كه من ميتوانم آنرادريافت اطلاعات جديد زبان F#‎ و برنامه نويسي تابعي بدانم. در اين زمان فردي به نام جيم هادلستون يك ليست پستي F#‎ به راه انداخت و پرسيد كه آيا كسي ميتواند كتابي درباره اين زبان بنويسد يا نه ؟. و من نتوانستم جلوي خودم را بگيرم و اين كار به نظرم موقعيت شغلي خوبي آمد بنابراين با كمكها و تشويقهاي دون سيم نوشتن اين كتاب را آغاز كردم. قسمتي از اين كتاب در پاريس نوشته شد و برخي از آنها در بروكسل ولي بيشتر آن زماني نوشته شد كه بين اين دو شهر رفت و آمد ميكردم.


    چه كساني از F#‎ استفاده ميكنند ؟

    F#‎ در شركت مايكروسافت به وفور مورد استفاده است هم در MSR و هم در كل شركت. رالف هربريش كه يكي از مديران دوگانه گروه بازي هاي مايكروافت و متخصص آموزش ماشينيست به استفاده فزاينده از F#‎ اشاره ميكند :
    "اولين برنامه كاربردي براي فرستادن 110 گيگابايت از طريق 11.000 فايل
    متني در بيش از 300 دايركتوري و وارد كردن آنها در بانك داده اي بود. كل
    برنامه 90 خط بود كه شامل توضيحات نيز ميشد و در كمتر از 18 ساعت
    توانست اطلاعات مربوطه را در محيط SQL بگنجاند يعني 10.000 خط
    برنامه متني در هر ثانيه مورد پردازش قرار گرفت. همچنين توجه كنيد كه من
    كد را بهينه نكردم بلكه برنامه را بصورت كاملا عادي نوشتم. اين جواب بسيار
    قابل توجه بود زيرا من انتظار داشتم نوشتن و اجراي برنامه حداقل يك هفته
    كار ببرد. دومين برنامه ، برنامه پردازش ميليونها Feedback مشتريان بود،
    ما روابط مدلي زيادي را توسعه داديم ومن آنها را داخل برنامه F#‎ تايپ كردم
    همچنين داده هاي مربوط به پايگاه داده اي SQL را داخل آن فراخواني كردم و
    نتايج را در فايل داده اي MatLab ذخيره كردم. مقدار اين برنامه در F#‎ صد
    خط بود كه توضيحات را نيز شامل ميشد. باز هم با اجراي اين برنامه من تحت
    تاثير قرار گرفتم زيرا پردازش ميليونها مورد دادها 10 دقيقه و در يك كامپيوتر
    عادي زمان برد.اين برنامه را با C#‎‎از فعاليتهاي قبلي ام داشتم كه حدود 1000
    خط طول داشت واصلا سريعتر ازاين برنامه نبود.كل كار از توسعه مدل روابط
    با اجرا و ديدن نتايج دو روز زمان برد."

    استفده از F#‎ تنها در مايكروسافت رايج نيست و در خارج از آن نيز كاربردهايي دارد و يه سرعت در حال افزايش است. جود او كلي ، برنامه نويس شركت Derivative One كه يك شركت توليد نرم افزارهاي شبيه ساز مالي ميباشد در جواب به اين سوال كه چرا اين شركت از F#‎ در محصولاتش استفاده ميكند ؟ ميگويد :

    "ما مدلهاي مالي خود را در C#‎‎ و F#‎ مورد مقايسه قرار داديم و مشاهده كرديم
    كه عملكرد يكسان است اما از F#‎ بيشتر خوشمان آمد زيرا روش خلاصه تري
    دارد. يكي از مشكلات ما با F#‎ نبود اطلاعات در مورد اين زبان بود وبه نظر
    ما كتابي كه هم اكنون توسط دون سيم براي آموزش F#‎ ارائه شده ميتواند كمك
    خوبي در اين مورد باشد."

    تنها كتاب موجود

    هدف اين كتاببه صورت عمده برنامه نويسان حرفه اي IT هستند كه ميخواهند سريعا با F#‎ آشنا شوند. هرگونه تجربه اي كه شما در زمينه برنامه نويسي به هر زباني داشته باشيد ميتواند در يادگيري اين زبان به شما كمك كند حتي در صورتيكه بطور كلي تازه كار باشيد و هيچ زبان برنامه نويسي را قبل از F#‎ كار نكرده باشيد ميتوانيد F#‎ را به عنوان اولين تجربه خود انتخاب كنيد و اين كتاب در اين زمينه هم كمك خواهد بود. البته با وجود اينكه اين كتاب سعي ندارد برنامه نويسي را به صورت پله پله آموزش دهد تمام حوزه هاي مهم F#‎ را مورد اشاره قرار داده.

MohammadJavad

نویسنده 86 مقاله در برنامه نویسان
  • C#.net
  • 5k بازدید
  • 3 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید