ข้อแตกต่างของ Static กับ Dynamic Typed Programming Languages

25-ต.ค.-18

คัมภีร์เทพ IT

Static type และ Dynamic type เป็นคำที่มักพบเจอในโลกของ Programming หากคุณต้องทำงาน Coding แล้ว สักวันหนึ่งคุณจะต้องเลือกระหว่าง 2 Types ดังกล่าว การรู้ความแตกต่างระหว่างพวกมัน จะช่วยให้คุณสามารถเลือกได้อย่างถูกต้องเมื่อต้องการสร้าง Advanced system แต่คุณคงอาจรู้สึกยุ่งยากเมื่อรู้ความหมายของพวกมันหรือเมื่อไรที่ควรใช้มัน ซึ่งในบทความนี้จะบอกถึง ข้อแตกต่างของ Static กับ Dynamic Typed Programming Languages ให้คุณได้รู้

ความหมายของ "Typed"

Type ในโลกของ Programming หมายถึงประเภทข้อมูลและความสามารถในการจัดการของในแต่ละภาษา Programming มันอธิบาย Structure ของข้อมูล (Data Types) และวิธีจัดเก็บข้อมูลใน Memory ทั้ง Strings, integers, Boolean และ Float ก็ถือเป็น Type ทั้งหมด ในแง่ของ Programming Languages เราสามารถจัดประเภทของ Type ได้เป็น statically typed และ dynamic typed

Static Typed คืออะไร?

Static typed เป็น Programming language ที่ Programmer ต้อง declare ตัวแปรอย่างชัดเจนก่อนที่จะใช้งาน ในฐานะที่เป็น Programmer คุณไม่จำเป็นต้องกำหนดตัวแปรก่อนที่จะนำมาใช้งาน Static typed Programming language ที่เป็นที่นิยมมากที่สุดคือ C, C++ และ Java

มีสิ่งหนึ่งที่คุณต้องทราบคือ ตัวแปรไม่สามารถถูก convert ไปเป็น Type ชนิดอื่นได้ แต่มันจะถูก read ได้ในลักษณะอื่นๆ ใน Programming language เหล่านี้ การเรื่องการใช้ตัวแปรถ้าคุณยังไม่ได้ declare มัน ก็อาจทำให้เกิดข้อผิดพลาดได้

Dynamic Typed คืออะไร?

Dynamic typed มีความตรงกันข้ามกับ Static typed Programming language อย่างชัดเจน ใน Dynamic typed ตัวแปรทั้งหมดจะต้องถูกกำหนดก่อนที่จะใช้งานพวกมัน ข้อดีของ Dynamic typed คือคุณไม่จำเป็นต้อง declare ตัวแปรเหล่านี้ นอกจากนี้ ตัวแปรไม่จำเป็นต้องระบุ type ให้อยู่ type ใด type หนึ่ง

ตัวอย่างเช่น ถ้าคุณต้องการใช้ตัวแปร x คุณจะต้อง assign ค่าให้มันก่อนที่คุณจะใช้งาน ตัวอย่าง Dynamic typed Programming languages ที่เป็นที่นิยม ได้แก่ Python, JavaScript, Perl, Ruby และ Lua

Compiled Vs Interpreted

ข้อแตกต่างที่สำคัญระหว่าง Static และ Dynamic Programming languages คือ ตัวหนึ่งใช้การ Compiled ขณะที่อีกตัวหนึ่งใช้การ Interpreted โดย Statically typed Programming languages จะถูก Compiled เมื่อทำการ Execute ซึ่ง Code แต่ละบรรทัดจะถูก Translate ก่อน Run-time ในทางกลับกัน Dynamic typed Programming languages จะถูก Interpret เมื่อทำการ Execute

Type Checking

ข้อแตกต่างอีกอย่าง คือ ขึ้นอยู่กับเวลาที่ Types (specific variables) ถูกตรวจสอบ โดยใน Statically typed Programming languages นั้น Types จะถูกตรวจสอบก่อนช่วง Run-time ถ้ามีการตรวจพบว่าใน Code มี Type ที่ไม่เหมาะสม จะแสดง Error ก่อนช่วง Run-time ส่วนใน Dynamic typed Programming languages นั้น Types จะถูกตรวจสอบในระหว่างการ Execution Code แม้ว่าจะมีข้อผิดพลาดบางอย่างใน Code แต่จะไม่มีการแสดง Error ออกมา

Performance

ความแตกต่างระหว่าง Programming languages ทั้ง 2 Types คือเรื่องของ Performance โดย Static typed Programming language ดูจะมี Performance ที่ดีกว่า Dynamic เนื่องจากภาษาเหล่านี้มีองค์ความรู้ครบถ้วนเกี่ยวกับ Types ต่างๆ ซึ่งมันช่วยให้Machine สามารถ Focus ไปที่เรื่องการ Optimize Code

Performance ของ Static typed Languages ยังคงดีอยู่ในช่วงของ Run-time เนื่องจากไม่จำเป็นต้องมีการตรวจสอบ Types ซึ่งมันตรงกันข้ามกับ Dynamic Languages ที่จะต้องมีการตรวจสอบ Types ใน Code ในช่วงของ Run-time

Error Checking

ใน Static typed Programming Languages จะมีการดักจับ Error ในระหว่างช่วงเริ่มต้อนของการเขียน Program นั่นหมายถึง มันจะไม่ปล่อยให้เกิด Type Errors ในช่วงที่คุณกำลัง Coding เลย ใน Static Programming จะช่วยป้องกันการเปลี่ยนแปลงของตัวแปรใน Program ได้ ซึ่ง Feature นี้ช่วยให้ Program มีความผิดพลาดน้อยที่สุด ในทางตรงกันข้าม Dynamic programming จะมีการดักจับ Error ในระหว่างการ Execution ซึ่งด้วยเหตุนี้อาจทำให้ขั้นตอนการเขียน Program มีความช้าลงบ้าง

Flexibility

แน่นอนว่า Dynamic typing จะมีความยืดหยุ่นมากกว่า Static Programming เนื่องจากมันช่วยให้ตัวแปรสามารถเปลี่ยนแปลง Type ได้นั่นเอง แต่ในทางกลับกัน Static Programming languages จะไม่อนุญาตให้มีการเปลี่ยนแปลง Type ของตัวแปรเด็ดขาด

จากความแตกต่างเหล่านี้ คุณจะเห็นว่าไม่มี Type ไหน ที่ดีไปกว่ากันในทุกๆ เรื่อง ทั้ง Static และ Dynamic typed Programming languages ต่างก็มีจุดแข็งและจุดอ่อนที่ไม่เหมือนกัน ดังนั้นอยู่ที่คุณว่าจะเลือกตัดสินใจใช้แบบใดก็ขึ้นอยู่กับ ความพอใจ เหมาะกับภาษา หรืองานที่คุณจะต้องทำ

ที่มา:  https://www.technotification.com/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความที่เกี่ยวข้อง