Static VS Dynamic Typing คืออะไรกันนะ

Mhai Passakun Siri
2 min readJul 12, 2018

--

Type คืออะไร มันคือการกำหนดประเภทข้อมูลให้กับตัวเเปรนั้นๆ เพื่อให้เรียกใช้ได้อย่างเหมาะสม อย่างเช่น Int: เเทนเลขจำนวนเต็ม String: เเทนตัวหนังสือ

Typing ก็คือ การตรวจสอบ type นั่นเอง ใน programming language การตรวจสอบ type เเบ่งเป็น สองประเภทหลักๆ คือ dynamic กับ static

Static typing คือ การตรวจสอบ type ก่อน Run-Time ยกตัวอย่าง ถ้าเราประกาศ ตัวเเปร a เป็น int เเละ ตัวเเปร b เป็น string เเล้วจับ a+b ถ้าเป็นprogramming language ที่ strongly typing(เดี๋ยวจะอธิบายต่อไป) โปรเเกรมจะทำการ throw error ออกมาทันที

Dynamic typing คือ การตรวจสอบ type ระหว่าง Run-Time ยกตัวอย่าง

Ruby example code

จากตัวอย่าง program จะไม่ throw error เนื่องจากโปรเเกรมจะไม่มีทาง execute เข้าไปใน else condition ที่ผิดเงื่อนไข

สรุปง่ายๆ ก็คือ static typing จะทำการ compile code ก่อน ถ้าเจอการใช้ type ที่ไม่ตรงเงื่อนไข ก็จะ throw error ออกมาทันที ส่วน dynamic จะทำการ check ระหว่างที่รันโปรเเกรมถ้ารันเเล้ว ไม่เข้า case ที่ผิด โปรเเกรมก็จะไม่ throw error ออกมา (ต้องมาลุ้นเองว่าจะมี error มั้ย ให้คุ้กกี้ทำนายกัน ~~~) นั่นเอง

ส่วนที่ติดไว้ข้างบน เมื่อเราเข้าใจว่า dynamic ต่างกับ static ยังไงเเล้ว เราก็จะมาดูอีกว่า ตัว complile หรือ translate code เรานั้น มัน strict มากน้อยเเค่ไหน โดยเเบ่งเป็น สองเเบบ หลักๆคือ strongly กับ weakly

Strongly คือ เมื่อกำหนด type ให้กับตัวเเปรใดๆ เเล้ว ตัวเเปรนั้นจะคงอยู่ type นั้นตลอดไป ไม่สามารถเปลี่ยนค่าที่เป็น type อื่นได้ ยกตัวอย่าง

Strongly

Weakly คือ โปรเเกรมไม่สนใจว่าตัวเเปรที่กำหนดตอนต้นจะเป็น type อะไร เมื่อ assign ค่าใหม่ ก็จะมองเป็นค่านั้น ยกตัวอย่าง

Weakly

เเล้วภาษาที่เพื่อนๆเขียนอยู่ เป็นเเบบไหนกัน ???

--

--