שמתי לב שהרבה פעמים אנשים (כולל אני) משתמשים במושג Strongly typed/Weakly typed בשביל לתאר גישה בטוחה לאובייקטים בזמן קימפול.
זה שגוי להשתמש במושגים האלה, והנה הסבר מעמיק ל4 סוגים של שפות תכנות:
- Statically typed language – שפה בה הטיפוסים ידועים מראש בזמן קימפול. רוב השפות מסוג זה אוכפות את התנאי הזה ע”י כך שנצטרך לציין את הטיפוס של המשתנים שלנו לפני שנוכל להשתמש בהם בפעם הראשונה. C#, Java, C ועוד שפות הן שפות שהן Statically typed.
- Dynamically typed language – שפה שבה הטיפוסים מפוענחים בזמן ריצה. ההפך מStatically typed. למשל Python, Ruby וjs הן שפות שהן Dynamically typed, מאחר ומפוענח הטיפוס של המשתנה בפעם הראשונה שנכנס אליו ערך.
- Strongly typed language – שפה שבה הטיפוסים נאכפים. למשל, אם יש לנו משתנה מסוג int, לא נוכל להתייחס אליו כString (כלומר להכניס אותו למשתנה של string או לקרוא לפונקציות של string) בלי לבצע איזושהי הסבה. Python, C#, Ruby, Java וכו’ הן שפות שהן Strongly typed!
- Weakly typed language – שפה ניתן להתעלם מהטיפוסים. ההפך משפות Strongly typed. למשל, VBScript היא Weakly typed – בVbScript למשל ניתן לשרשר את המחרוזת ‘12’ ואת הInteger 3 כדי לקבל את המחרוזת ‘123’. לאחר מכן ניתן להתייחס למחרוזת כמספר 123 ללא הסבה מפורשת.
למשל, C# היא שפה שהיא Statically typed וStrongly typed. (החל מC# 4.0 היא גם Dynamically typed)
Python היא שפה שהיא Dynamically typed וStrongly typed.
שבוע חזק.