مقدمه ای بر f#
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
Try F# Online
• http://www.tryfsharp.org/
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#