ข้ามไปเนื้อหา

ภาษาเอฟชาร์ป

จากวิกิพีเดีย สารานุกรมเสรี
F#
F# logomark
กระบวนทัศน์Multi-paradigm: functional, imperative, object-oriented, agent-oriented, metaprogramming, reflective, concurrent
ตระกูลML
ผู้ออกแบบDon Syme, Microsoft Research
ผู้พัฒนาMicrosoft, The F# Software Foundation
เริ่มเมื่อ2005; 19 ปีที่แล้ว (2005), version 1.0
รุ่นเสถียร
9[1] แก้ไขบนวิกิสนเทศ / 12 พฤศจิกายน 2024; 7 วันก่อน (12 พฤศจิกายน 2024)
ระบบชนิดตัวแปรStatic, strong, inferred
ระบบปฏิบัติการCross-platform: .NET, .NET Framework, Mono
สัญญาอนุญาตMIT License[2][3]
นามสกุลของไฟล์.fs, .fsi, .fsx, .fsscript
เว็บไซต์fsharp.org
ได้รับอิทธิพลจาก
C#, Erlang, Haskell,[4] ML, OCaml,[5][6] Python, Scala
ส่งอิทธิพลต่อ
C#,[7] Elm, F*, LiveScript

ภาษาเอฟชาร์ป (F#) เป็นภาษาสำหรับเขียนโปรแกรมคอมพิวเตอร์แบบ strongly typed บนดอตเน็ตเฟรมเวิร์กและ Mono ที่สนับสนุนโมเดลการเขียนโปรแกรมหลายแบบรวมทั้ง การเขียนโปรแกรมเชิงฟังก์ชัน การเขียนโปรแกรมเชิงวัตถุ และการเขียนโปรแกรมเชิงคำสั่ง F# เป็นภาษาดอตเน็ต สามารถเรียกใช้เอพีไอของดอตเน็ต และถูกเรียกจากภาษาดอตเน็ตอื่นๆ นอกจากนั้น F# ยังสามารถถูกใช้กับโปรแกรมประยุกต์บนเว็บ[8] เขียนโปรแกรมสำหรับหน่วยประมวลผลกราฟิกส์ หรือ GPU [9] และใช้เขียนโปรแกรมสำหรับแมคโอเอสเท็น[10] ไอโอเอส[11] และ แอนดรอยด์[12] โดยใช้ Programming tool สร้างโดยบริษัท Xamarin

ประวัติ

[แก้]

F# ถูกเริ่มสร้างโดย Don Syme และทีม[13] ที่ Microsoft Research[14] โดยมีพื้นฐานมาจากภาษา OCaml (ซึ่งเป็นภาษาในตระกูลภาษา ML)

ปัจจุบันภาษาเอฟชาร์ปได้ถูกโอเพนซอร์ส[15] และพัฒนาโดย F# Software Foundation, Microsoft, และผู้พัฒนาทั่วๆไป

ภาพรวม

[แก้]

F# เป็นภาษาแบบ strongly typed ที่สนับสนุนโมเดลการเขียนโปรแกรมหลายแบบ รวมทั้งการเขียนโปรแกรมเชิงฟังก์ชัน การเขียนโปรแกรมเชิงวัตถุ และการเขียนโปรแกรมเชิงคำสั่ง โดยที่ทุกอย่างในเช่นฟังก์ชัน control flows ใน F# เป็น expression ที่มี type หรือ โครงสร้างข้อมูล ที่สามารถถูกประกอบเข้ากันได้

โครงสร้างข้อมูลที่สำคัญที่มีใน F# ได้แก่:

  • Unit ซึ่งคล้ายกับ Void ในภาษาตระกูลภาษาC
  • Tuple
  • Record
  • Discriminated unions
  • List
  • Option

โปรแกรมตัวอย่าง

[แก้]

โปรแกรมหา Factorial

[แก้]
> let rec fact = function
    | 0 -> 1
    | n -> n * fact(n-1);;

val fact : int -> int

ผลลัพธ์

> fact 12;;
val it : int = 479001600

วินโดวส์ฟอร์ม

[แก้]
open System.Windows.Forms

let form = new Form()
do form.Visible <- true
do form.TopMost <- true
do form.Text <- "Welcome to F#"

let x = 3 + (4 * 5)
do form.Text <- (if x = 23 then "Correct!" else "incorrect")

อ้างอิง

[แก้]
  1. ผิดพลาด: ไม่สามารถแสดงข้อมูลอ้างอิงได้อย่างถูกต้อง ดูคู่มือการใช้งานสำหรับรายละเอียด
  2. "F# Software Foundation's License". GitHub. 14 October 2021.
  3. "Microsoft's F# License". GitHub. 16 October 2021.
  4. Syme, Granicz & Cisternino (2007:2)
  5. อ้างอิงผิดพลาด: ป้ายระบุ <ref> ไม่ถูกต้อง ไม่มีการกำหนดข้อความสำหรับอ้างอิงชื่อ historyMSR
  6. Syme, Don (2006). "Leveraging .NET Meta-programming Components from F#". [F#] is rooted in the Core ML design, and in particular has a core language largely compatible with that of OCaml
  7. for async
  8. The F# Software Foundation. "Using F# with HTML5 Web Applications". คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2014-06-25. สืบค้นเมื่อ 2014-06-07.
  9. The F# Software Foundation. "Using F# for GPU Programming". คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2016-12-18. สืบค้นเมื่อ 2014-06-07.
  10. The F# Software Foundation. "Use F# on Mac OSX". สืบค้นเมื่อ 2014-06-07.
  11. The F# Software Foundation. "Use F# for iOS App Development". สืบค้นเมื่อ 2014-06-07.
  12. The F# Software Foundation. "Use F# for Android Development". สืบค้นเมื่อ 2014-06-07.
  13. ผู้ร่วมสร้าง F#
  14. F# ที่ Microsoft Research
  15. "Contributing to the F# Language, Library and Tools". คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2014-04-08. สืบค้นเมื่อ 2014-04-16.

ดูเพิ่ม

[แก้]

แหล่งข้อมูลอื่น

[แก้]