ภาษาโปรแกรมมิ่งเป็นเครื่องมือสำคัญที่นักพัฒนาใช้เพื่อสื่อสารกับคอมพิวเตอร์ และหนึ่งในภาษาที่มีประวัติยาวนานและการใช้งานที่กว้างขวางคือ Fortran ซึ่งเป็นภาษาที่ถูกออกแบบมาสำหรับงานวิทยาศาสตร์และวิศวกรรม ในบทความนี้ เราจะมาเจาะลึกถึงความสามารถของ dynamic typing ใน Fortran พร้อมทั้งยกตัวอย่างการใช้งานจริงและโอกาสที่คุณจะได้เรียนรู้เกี่ยวกับมันที่ EPT
Dynamic typing หมายถึงความสามารถของภาษาโปรแกรมมิ่งที่สามารถกำหนดประเภทของตัวแปรได้โดยอัตโนมัติขณะที่โปรแกรมกำลังทำงาน (runtime) ซึ่งต่างจาก static typing ที่ต้องกำหนดประเภทของตัวแปรไว้ตั้งแต่เขียนโค้ด แต่ในความเป็นจริง Fortran เป็นภาษาที่ใช้ static typing มากกว่า dynamic typing อย่างไรก็ตาม การใช้งาน Fortran รุ่นใหม่ๆ ได้เพิ่มความยืดหยุ่นที่สามารถใช้งานลักษณะที่คล้ายกับ dynamic typing เข้ามาบ้างผ่านการใช้ polymorphism และ type-bound procedures ในโมดูล type
ก่อนที่จะไปดูตัวอย่างการใช้ dynamic typing ใน Fortran เราต้องเข้าใจว่า Fortran ไม่ได้มีฟีเจอร์ dynamic typing แบบที่ภาษาอย่าง Python หรือ JavaScript มี แต่เราสามารถทำให้โค้ดของเรามีความยืดหยุ่นมากขึ้นได้ด้วยการใช้ interfaces และ polymorphism
ตัวอย่างที่ 1: การใช้ generic interfaces
module my_module
implicit none
private
public :: my_func
interface my_func
module procedure my_func_int, my_func_real
end interface
contains
function my_func_int(arg) result(res)
integer, intent(in) :: arg
integer :: res
res = arg * 2
end function my_func_int
function my_func_real(arg) result(res)
real, intent(in) :: arg
real :: res
res = arg * 2.0
end function my_func_real
end module my_module
program test
use my_module
print *, my_func(10) ! เรียกใช้ my_func_int
print *, my_func(10.0) ! เรียกใช้ my_func_real
end program test
ในตัวอย่างนี้ `my_func` เป็น generic interface ที่สามารถรับทั้ง integer และ real ผ่านการโอเวอร์โหลดฟังก์ชันภายในโมดูล `my_module`
ตัวอย่างที่ 2: การใช้ polymorphism
module shapes_mod
implicit none
type, abstract :: shape
contains
procedure(shape_area), deferred :: area
end type shape
abstract interface
function shape_area(this) result(area)
import :: shape
class(shape), intent(in) :: this
real :: area
end function shape_area
end interface
end module shapes_mod
ในโมดูลนี้ `shape` เป็น abstract type ที่มี deferred procedure `area` ที่ต้องการให้แต่ละ subclass ทำการ implement
ตัวอย่างที่ 3: การใช้งาน class
module circle_mod
use shapes_mod
implicit none
type, extends(shape) :: circle
real :: radius
contains
procedure :: area => circle_area
end type circle
contains
function circle_area(this) result(area)
class(circle), intent(in) :: this
real :: area
area = 3.14159 * this%radius**2
end function circle_area
end module circle_mod
ใน `circle_mod`, `circle` คือ subclass ของ `shape` ที่ implement ฟังก์ชัน `area` ซึ่งเป็นการคำนวณพื้นที่ของวงกลม
Dynamic typing ผ่านการใช้ polymorphism มีประโยชน์มากในการเขียนโค้ดที่สามารถนำกลับมาใช้ใหม่ได้ (reusable code) และโค้ดที่เป็น modular ดังนั้นเราจึงสามารถสร้างโค้ดที่สามารถนำไปใช้ได้อย่างลงตัวในโปรแกรมวิจัยต่างๆ เช่น โปรแกรมการจำลองสภาพอากาศ หรือการคำนวณในงานวิศวกรรม
ที่ EPT หรือ Expert-Programming-Tutor เรามีหลักสูตรที่จะช่วยให้คุณเรียนรู้การใช้งาน Fortran อย่างมีประสิทธิภาพในการแก้ไขปัญหาในโลกจริง ไม่เพียงแต่ความรู้เชิงลึกเท่านั้น แต่ยังรวมถึงการฝึกปฏิบัติโดยตรงกับโค้ดหลากหลายแบบ เพื่อให้คุณพัฒนาฝีมือการเขียนโปรแกรม และปรับใช้ความรู้ได้อย่างมั่นใจ ทำให้คุณพร้อมที่จะเป็นมืออาชีพในวงการ IT และการวิเคราะห์ข้อมูล (data analysis) ร่วมกับเราสิ, การเรียนรู้ที่ไม่มีสิ้นสุดรอคุณอยู่ที่ EPT!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM