آنچه در این صفحه می خوانید:
- زبان برنامه نویسی اف شارپ (#F) چیست؟
- دلایل ایجاد زبان برنامه نویسی اف شارپ (#F)
- کاربرد زبان برنامه نویسی اف شارپ (#F)
- مزایای اف شارپ (#F)
- مقایسه اف شارپ (#F) و سی شارپ (#C)
- مثال های زبان برنامه نویسی اف شارپ (#F)
زبان برنامه نویسی اف شارپ (#F) چیست؟
اف شارپ (#F) یک زبان برنامه نویسی چند الگویی و همه منظوره با تایپ قوی است که شامل روش های برنامه نویسی تابعی، دستوری و برنامه نویسی شی گرا است. #F اغلب به عنوان زبان زیرساخت (CLI) استفاده می شود، اما همچنین می توان از آن برای تولید کدهای جاوااسکریپت و کار با پردازش گرافیک (GPU) استفاده کرد.
#F توسط بنیاد نرم افزار #F، تیم تحقیقاتی مایکروسافت و مشارکت کنندگان باز توسعه یافته است. کامپایلر کراس پلتفرم اوپن سورس، برای اف شارپ از بنیاد نرم افزار #F در دسترس است. #F همچنین در ویژوال استودیو و زامارین کاملاً پشتیبانی می شود. #F عضو خانواده زبان ML است و برای پلتفرم دات نت از هسته اصلی زبان برنامه نویسی OCaml سرچشمه گرفته است. همچنین تحت تأثیر سی شارپ، پایتون، هسکل (Haskell)، اسکالا (Scala) و ارلنگ (Erlang) بوده است. از منظر تجارت، نقش اصلی #F کاهش مدت زمان استقرار برای مؤلفه های نرم افزاری تحلیلی در شرکت های مدرن است. قابلیت همکاری آن با همه زبان ها و کتابخانه های دات نت و توانایی آن در مقابله با پیچیدگی مؤلفه هایی مانند موتورهای محاسبه و خدمات تحلیلی غنی از داده ها، داستان قانع کننده ای را برای مشاغل فراهم می کند.
این زبان توانایی کاربران و سازمان ها را برای مقابله با مشکلات کامپیوتری پیچیده به وسیله کد نویسی ساده اش بالا می برد. #F در لینوکس، Mac OS X، اندروید، آی او اس (iOS)، ویندوز، GPU ها و مرورگرها اجرا می شود. #F در طیف گسترده ای از زمینه های کاربردی مورد استفاده قرار می گیرد و توسط جامعه فعال و شرکت های پیشرو صنعت پشتیبانی می شود که ابزار های حرفه ای را ارائه می دهند. این پروژه با عنوان پروژه تحقیقاتی علمی آغاز شد و طی چندین سال به زبان آماده تولید تبدیل شد که توسط بسیاری از شرکت های تجاری به ویژه در بخش مالی مورد استفاده قرار می گیرد.
برنامه نویسی مدرن در فضاهای غنی از داده ها، اطلاعات و خدمات رونق می گیرد. جدیدترین نسخه های #F تا حد زیادی برنامه نویسی غنی از داده ها را از طریق افزودن مکانیسم ارائه دهنده نوع #F، پرس و جوهای #F و تعداد زیادی ارائه نوع برای استانداردهای داده و سازمانی ساده می کند.
دلایل ایجاد زبان برنامه نویسی اف شارپ (#F)
- تغییر از شی گرا به پارادایم کارکردی که برای محاسبات و تغییر داده ها مناسب تر است.
- استفاده از مفاهیم برنامه نویسی که در #C به دلیل ایدئولوژی های مختلف گنجانده نشده بود.
- اجتناب از مشکلات قابلیت وراثت در #C
از لحاظ ویژگی های زبان، #F زیرمجموعه #C است، بنابراین همه چیزهایی که #C می تواند انجام دهد را #F نیز می تواند انجام دهند. اما عکس این امر ممکن نیست، زیرا #F دارای ویژگی هایی است که در #C موجود نیست. قابلیت همکاری بین #F و دیگر زبان های دات نت وجود دارد. هنگامی که کد #F در Assembly کامپایل می شود، می تواند با هر زبان خانواده دات نت مانند #C یا VB.NET مورد استفاده قرار گیرد. به عبارت دیگر، کد #F می تواند با سایر قسمت های سیستم نوشته شده به زبان #C هماهنگ باشد.
کاربرد زبان برنامه نویسی اف شارپ (#F)
علم داده (Data Science)
علم داده ها کاربرد تجزیه و تحلیل آماری، یادگیری ماشینی، ویژوال سازی داده ها و برنامه نویسی در منابع داده دنیای واقعی است تا درک و بینش در حوزه های مسئله داده محور را فراهم کند. #F یک راه حل عالی برای علوم داده های برنامه نویسی است زیرا ترکیبی از اجرای کارآمد، برنامه نویسی REPL، کتابخانه های قدرتمند و ادغام داده های مقیاس پذیر است.
برنامه نویسی وب
#F در ساخت راه حل های وب کارآمد، مقیاس پذیر و نیرومند برتر است. برنامه نویسی وب مبتنی بر دریافت درخواست HTTP واحد و پاسخ دادن نتیجه است، که بسیار خوب به رویکرد بدون تابع می پردازد.
برنامه نویسی موبایل و ساخت بازی
#F در طیف گسترده ای از سیستم عامل ها و پلتفرم های بازی مانند Android،iOS،Mac OS X،Windows، جاوااسکریپت، ری اکت (React)، ری اکت نیتیو (ReactNative) و اچ تی ام ال (HTML) و اجرا می کند. سینتکس ساده آن، قابلیت همکاری با كتابخانه های NET. و توانایی آن در مدیریت پیچیدگی مؤلفه هایی از قبیل ماشین های حالت، موتورهای محاسبه و غیره آن را به یك ابزار ایده آل برای بسیاری از جنبه های ساخت بازی تبدیل كرده است.
یادگیری ماشین
#F به دلیل اجرای کارآمد، سبک مختصر، قابلیت دسترسی به داده ها و قابلیت مقیاس پذیری، در یادگیری ماشین بسیار مناسب است. #F با موفقیت توسط برخی از پیشرفته ترین تیم های یادگیری ماشین در جهان، از جمله چندین گروه در تحقیقات مایکروسافت مورد استفاده قرار گرفته است.
دسترسی به داده ها
#F از کلیه روش های ورودی و دسترسی داده رایج پشتیبانی می کند. علاوه بر این، ویژگی ارائه دهنده نوع #F سادگی و انعطاف پذیری برای دسترسی به داده ها، از جمله پایگاه داده، داده های مقیاس وب و الگو های متن ساختاری مانند جی سان (JSON) و اکس ام ال (XML) را به ارمغان می آورد.
مزایای اف شارپ (#F)
مزایای #F برای توسعه عبارتند از:
سازگاری
#F کاملاً با بستر .NET یکپارچه شده است و کاملاً مؤثر از ویژوال استودیو و استودیوی زامارین است. می توانید همچنان از کتابخانه های مورد علاقه #C خود استفاده کرده و فرآیندهای توسعه موجود خود را حفظ کنید.
زمان توسعه سریعتر
کد #F به طور کلی سه برابر کوتاهتر از کد #C است. و #F امکانات بسیار کمی دارد که باعث صرفه جویی در زمان برنامه نویسی، مانند تعاریف نوع بسیار موجز، با تغییر ناپذیری و برابری بصورت پیش فرض می شود.
دسترسی آسان به داده ها
#F شامل "ارائه دهنده های نوع" می باشد که دسترسی بی خطر از انواع داده ها (SQL، CSV، JSON، XML) را فراهم می کند. خطاهای کمتر، نگهداری کمتر - بسیاری از خطاهای رایج مانند تهی یا مجموعه های خالی به راحتی در #F جلوگیری می شود. کلاس های #F قابل تهی نیستند، تطبیق الگوی جامع به این معنی است که موارد حاشیه ای مورد غفلت واقع نمی شوند و می توان از واحدهای اندازه گیری برای جلوگیری از اختلاط تصادفی اعداد ناسازگار استفاده کرد.
کد #F برای تست مهندسی شده است.
برنامه نویسی تابعی از حالت استفاده نمی کند و منطق به صورت خطی گرایش پیدا می کند، بنابراین تست زیر سیستم ها به راحتی در ایزوله (با استفاده از NUnit یا فریمورک تست مورد علاقه شما) بسیار آسان است و هیچ شبکه ای از وابستگی درهم نیست. بعلاوه، #F از تست مبتنی بر ویژگی با FsCheck پشتیبانی می کند.
مدل سازی دامنه بهتر
#F دارای سیستم قدرتمند نوع است که می تواند برای مدل سازی دقیق دامنه ها مورد استفاده قرار گیرد. انواع "انتخاب" می توانند موارد بیزینس را راحت تر از وراثت الگوبرداری کنند، و قوانین تجاری را می توان در سیستم نوع طراحی کرد تا بتوانید "تست واحد زمان کامپایل" را بدست آورید، نیاز بسیاری از تست هایی که در غیر این صورت باید با دست نوشته شود را از بین می برد.
مقایسه اف شارپ (#F) و سی شارپ (#C)
سی شارپ (#C)
#C یک زبان برنامه نویسی چند پارادایم همه منظوره است که شامل تایپ قوی، اعلامی، کاربردی، عمومی، شی گرا و از نظر لغوی محدود شده و همچنین از رشته های برنامه نویسی مبتنی بر کلاس و مؤلفه ها است. سی شارپ یکی از زبان های برنامه نویسی است که برای زیرساخت زبان مشترک (CLI) طراحی شده است. سی شارپ زبانی همه کاره است که توسط آن می توانید برنامه نویسی برنامه های ویندوز، برنامه های گوشی های هوشمند، برنامه نویسی سمت سرور، بازی سازی و غیره را انجام دهید.
هر دو #C و #F بر روی دات نت CLR (زمان اجرای زبان مشترک) اجرا می شوند. #C و #F نحو متفاوتی دارند.
#C را می توان با C یا Java مقایسه کرد. این ها زبان های رویه ای همه منظوره برنامه نویسی تابعی هستند. #C توابع و متغیرهای گلوبال را ارائه می دهد. تابع می تواند به متغیر گلوبال دسترسی پیدا کند و آن را تغییر دهد. عمل اصلاح متغیر گلوبال به عنوان "اثر جانبی" شناخته شده است و می تواند منبع اشکالات باشد.
#F زبان برنامه نویسی کاربردی است. ساختار اصلی زبان تابع است. توابع می توانند توابع دیگر را فراخوانی کنند. یک تابع می تواند توابع را بازگرداند یا توابع را به عنوان پارامتر بگیرد. زبان های کاربردی مانند #F گاهی اوقات "خالص" خوانده می شوند زیرا هیچ متغیر گلوبال وجود ندارد که مانع از "عوارض جانبی" شود. همه چیز در چارچوب تابع اتفاق می افتد.
از جمله مزیت های اف شارپ بر سی شارپ موارد زیر است:
- وجود گزینه ها یا آپشن ها به جای منابع NULL
- پشتیبانی کامل از انواع داده های جبری
- شی را تغییر نمی دهد و حالت آن را عوض نمی کند و به طور دست نخورده باقی می ماند و در عوض شی جدیدی ایجاد می کند.
- نگه داشتن داده ها به صورت جداگانه
- ابزار استاندارد برای تولید Parser
- دارای مکانیسم منحصر به فرد type providers
- تمرکز بر حل مشکلات عمومی به جای تمرکز بر مشکلات خاص
- قابلیت مدولار بهتر
- قابلیت تست وراثت و طراحی خوب
#F زبان کاربردی مدرن است که به عنوان جایگزینی برای #C و VB طراحی شده است که به پارادایم شی گرا احترام می گذارد. #F بهترین ویژگی ها را از آنها قرض گرفته است. به همین دلیل کد نوشته شده در #F ایمن تر و راحت تر است. توانایی F# برای توصیف مشکلات کسب و کار با دقت بیشتری نسبت به #C صورت می گیرد، که آن را تبدیل به کاندیدای ایده آل برای برنامه های جانبی سرور می کند.
مثال های زبان برنامه نویسی اف شارپ (#F)
چند نمونه کوچک از مثال های اف شارپ به شرح زیر است:
// This is a comment for a sample hello world program.
open System
Console.WriteLine("Hello World!")
کلاس شخص با یک سازنده که نام و سن و دو خاصیت تغییرناپذیر را در اختیار دارد.
/// This is a documentation comment for a type definition.
type Person(name : string, age : int) =
member x.Name = name
member x.Age = age
/// class instantiation
let mrSmith = Person("Smith", 42)
یک مثال ساده که اغلب برای نشان دادن نحو زبان های کاربردی مورد استفاده قرار می گیرد، تابع فاکتوریل برای اعداد صحیح 32 بیتی غیر منفی است، در #F نشان داده شده است:
/// Using pattern matching expression
let rec factorial n =
match n with
| 0 -> 1
| _ -> n * factorial (n - 1)
/// For a single-argument functions there is syntactic sugar (pattern matching function):
let rec factorial = function
| 0 -> 1
| n -> n * factorial (n - 1)
/// Using fold and range operator
let factorial n = [1..n] |> Seq.fold (*) 1