19
Introduction in Microsoft F# By Shahriar Yazdipour

مقدمه ای بر F#

Embed Size (px)

Citation preview

Page 1: مقدمه ای بر F#

Introduction in Microsoft F#

By Shahriar Yazdipour

Page 2: مقدمه ای بر F#

Fمعرفی #

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

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

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

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

Page 3: مقدمه ای بر F#

LISPISWIM

APLFP

ML

19581966

1962

1977

1973

Haskell1988

Scala2003 Oca

ml1996

F#2005

Clojure2007

1930

Erlang1986

Lambda

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

Page 4: مقدمه ای بر F#

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

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

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

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

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

Page 5: مقدمه ای بر F#

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

WORLD!

؟Fچرا #

Page 6: مقدمه ای بر F#

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

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

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

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

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

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

Page 7: مقدمه ای بر F#

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

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

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

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

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

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

Page 8: مقدمه ای بر F#

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

Clojure

F#

Erlang

Page 9: مقدمه ای بر F#

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

iOS WindowsPhone Android

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

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

Page 10: مقدمه ای بر F#

IDE

Visual Studio)Since 2010(

XamarinStudio

MonoDevelop Emacs

Page 11: مقدمه ای بر F#

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

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

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

Page 12: مقدمه ای بر F#

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

باره می گوید:

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

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

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

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

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

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

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

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

Page 13: مقدمه ای بر F#

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

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

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

Page 14: مقدمه ای بر F#

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

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

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

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

Page 15: مقدمه ای بر F#

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

Page 16: مقدمه ای بر F#

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

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

Page 18: مقدمه ای بر F#

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

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

Page 19: مقدمه ای بر F#

مقایسه• 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#