مقدمه ای بر f#

Post on 08-Apr-2017

45 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Introduction in Microsoft F#

By Shahriar Yazdipour

Fمعرفی #

معروف به یک زبان برنامه نویسی تابع گرا است •

و چند پارادایمی )پشتیبانی از برنامه نویسی تابعی ، امری قوی)سریع( تایپزبان •(و شیءگرایی

)متن بازبودن و کامپایلر کراس پلتفرم این امکان را و متن بازبودن یک زبان کراس پلت فرم • ها و ... مورد استفاد قرار بگیرد.(kernel# میدهد تا از آن برای تولید نر>م افزار های بنیادی ، اصلی و انواع Fبه

,OCaml, C#, Haskell و تحت تاثیر زبان های MLالهام گرفته شده از زبان •Scala and Erlang

LISPISWIM

APLFP

ML

19581966

1962

1977

1973

Haskell1988

Scala2003 Oca

ml1996

F#2005

Clojure2007

1930

Erlang1986

Lambda

خط سیر زبان های تابع گرا

تاریخچه گرفته و سپس با OCAML مدل خود را از روی زبان برنامه نویسی •

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

تحقیقات شرکت مایکروسافت می باشد. با توجه به اینکه زبان تابع گرای دیگر به ندرت در دات نت توسعه •

به عنوان استاندارد در این مقوله در آمده است.Fپیدا کرده است # بسیار VisualStudioو Netاز نظر کیفیت و سازگار بودن با .•

وضعیت بهتری نسبت به رقبای خود دارد و این خود دلیلی دیگری است برای انتخاب این زبان.

Functional + OO + .NET + Open Source =>The Most Powerful Language In The

WORLD!

؟Fچرا #

؟Fچرا # یکی از قدرتمند ترین زبان های برنامه نویسی است. چرا؟Fدر حال حاضر #

•#F مثال برای تعریف متغیر نیاز به ذکر نوع آن نیست. . استزبان استنباطی یک(کامپایلر با توجه به مقدار اولیه تصمیم می گیرد که متغیر از چه نوعی است.(

کتابخانه قدرتمند دات نتدسترسی راحت می توان به •تابعی، موازی، شی گرا پیشتیبانی از انواع روش های برنامه نویسی نظیر •

و دستوری و WPFوب و ویندوز و حتی امکان تهیه و توسعه پروژه های •

Silverlight .هم وجود دارد به برنامه نویسان این اجازه را میدهد F زبان #syntaxنوع کدنویسی و •

)از که الگوریتم های پیچیده مورد نظر خود را بسیار راحت تر پیاده سازی کنند. این رو آنرا با پایتون مقایسه میکنند(

؟Fچرا #•#F# به راحتی با زبان C و VB تعامل دارد. یعنی می تونیم در طی روند تولید

پروژه از قدرت های هر سه زبان بهره بگیریم.  به دلیل پشتیبانی از نوع داده ای Fطبق آمار گرفته شده از برنامه نویسان، #•

،Unit Measureقوی و مبحث های نرم افزار را کاهش می دهد.Bug خطا ها و

به دلیل پشتیبانی و وجود ابزار قدرتمند برای توسعه نرم افزار به کمک این • و ..(این زبان تبدیل به قدرت های debuging و ابزارهای unitTestingزبان )

دنیای برنامه نویسی شده است.•#F یک زبان بسیار مناسب برای پیاده سازی الگوریتم های data-mining

است. در تعریف شناسه ها پشتیبانی می کندimmutability از •

فرست شغلی در انگلستانScala

Clojure

F#

Erlang

کراس پلت فرمMac OS X  Linux Windows

iOS WindowsPhone Android

از این زبان می توان برای تولید کد های جاوا اسکریپت و کار با •GPUاستفاده کرد

را داشته باشد می تواند از برنامه JSپس هر دستگاهی که توانایی اجرای کد های # استفاده کندFهای

IDE

Visual Studio)Since 2010(

XamarinStudio

MonoDevelop Emacs

#F  هایاستفاده

قوی ترین پلتفرم پردازش ابری•۲۰۱۰راه اندازی شده سال • برنامه و بسته ی الهایی رایگان و اپن سورس۳۵۰۰نزدیک •پشتیبانی از زبان های مختلف برنامه نویسی : •

F# C# C++ Java Android WinRT WindowsPhone iOS Python PHP Ruby NodeJS

#F های استفادهرالف هربریش که یکی از مدیران دوگانه گروه بازی های مایکروسافت در این •

باره می گوید:

11000 گیگا بایت از طریق 110اولین برنامه کاربردی برای انتقال دایرکتوری و وارد کردن آن ها در دیتابیس بود. کل 300فایل متنی در بیش از

ساعت توانست اطالعات مربوطه را در 18 خط بود و در کمتر از 90برنامه SQL ذخیره کند. یعنی ده هزار خط برنامه متنی در هر ثانیه مورد پردازش

قرار گرفت.همچنین توجه کنید که من برنامه را بهینه نکردم بلکه به صورت کامال عادی نوشتم. این جواب بسیار قابل توجه بود زیرا من انتظار داشتم

حداقل یک هفته زمان ببرد.

مشتریان بود. ما Feekbackدومین برنامه، برنامه پردازش میلیون ها قرار دادم و Fروابط مدلی زیادی را توسعه دادیم و من این روابط را در #

را در آن فراخوانی کردم و نتایج را در فایل داده ای SQLداده های مربوط به MATLAB .قرار دادم و کل پروژه در حد صد خط بود به همراه توضیحات

زمان اجرای پروژه برای دریافت خروجی ده دقیقه بود در حالی که  همین کار قبال توسعه داده بودیم که بیش از هزار خط بود و نزدیک Cرا توسط برنامه #

به دو روز زمان می برد.

#F  های دیگراستفاده

Halo بازی : •( ImagineCup(برنده ی جایزه ی Eyenaemiaبرنامه : • AutoCatبسته الحاقی برای پردازش سه بعدی در •

http://goo.gl/Glu2mX  Derivative Oneشبیه ساز مالی •

نه ؟Fچرا # برای برنامه نویسان دات بیگانه و البته F زبان #syntaxنوع کدنویسی و •

کمی آزار دهنده پشتیبانی Visual به صورت VS.Net در حال حاضر توسط  Fزبان #•

نمی شود. البته برای حل این مشکل نیز افزونه هایی وجود دارد که در جای مناسب

بحث خواهیم کرد.WinRTپشتیبانی نکردن از •

C# vs F#

type Vector)x : float, y : float( =    member this.X = x    member this.Y = y    new)v : Vector, s( = Vector)v.X * s, v.Y * s( // Usage:let v = Vector)10., 10.(let w = new Vector)v, 0.5(

Ex: Multiple constructors

public class Vector{    double x;    double y;    public Vector)double x, double y(    {        this.x = x;        this.y = y;    }    public Vector)Vector v, doubles( :        this)v.x * s, v.y * s(    {    }} // Usage:Vector v = new Vector)10, 10(;Vector w = new Vector)v, 0.5(;

F#

C#

Ref:http://goo.gl/lgjrjc

تست سرعتو تعداد خط

Test C#   F#   IronPython    Lines Time (Sec) Lines Time (Sec) Lines Time (Sec)

binarytrees 81 2.146667 43 3.881333 44 31.90967

Nbody 169 0.282 115 0.572667 132 32.909

Nsieve 40 0.527667 39 1.164667 30 15.93933

Pidigits   [1] 59 15.419 39 11.02267

recursive 46 7.595333 34 6.377 38 [2]

fannkuch 76 14.60233 49 12.42067 49 829.6697

partialsums 42 3.191 30 3.481333 46 586.463

Ref           http://goo.gl/1aPwWt

The versions of each compiler used where:C# 4 //6  RCF# 1.9.1.18  //3.1IronPython 1.1  //2.7

Demo• Variables & Arrays• Recursive functions• Recursive + Thread + Do While• RecordDataType,Array ,Form

Avalaible on : https://github.com/yazdipour/An-Introduction-to-F-Sharp-Demos

مقایسه• F# vs. C# vs. Python• F# vs. Go vs. Scala• F# vs C# )details(

• F# vs C# )num code line(

منابع#F با زبان برنامه نویسی شناییآ•

زندگی روشن••fsharp.net

•An Introduction to Microsoft F#

top related