טכני ופשוט על מה מבוססות שפות תכנות סטטיות ודינאמיות, ובאופן פרטני C# ופייתון.
פייתון או C#?
מה זה שפה סטטית? הגדרת סוג משתנה לפני הצבת תוכן ע"מ לאכוף את סוג התוכן.
בC# זה נראה ככה "string s = "hello.
מה זה שפה דינאמית? הצבת תוכן למשתנה ללא אכיפה לסוג, ולכן ללא הגדרה מראש.
בפייתון "s = "hello.
זה העיקר, האם אני חייב להגדיר את הTYPE של התכנים שלי, או לא.
דברים לא 100% נכונים:
יש שפות סטטיות שהם interperter ויש דינאמיות שהם compiles כגון JS. כן JS עובר קומפילציה יהיו הפרשים בשגיאות אם הוצהר משתנה או לא כמו שהסברתי פה:
http://bresleveloper.blogspot.co.il/2017/08/javascript.html
אבל בד"כ שפות סטטיות מקומפלות, ובעיקר נבדק היטב כל פרמטר, שINT הולך רק לINT ובכל המהלך של התכנית יתכן רק שיגיע אליו INT אחרת יש שגיאת קומפילציה.
לעומת זאת, בדינאמיות, שהן בד"כ INTERPERTER, שזה אומר הרצה של שורה אחר שורה, לא בודקים כלום בתכנים, והשגיאה אולי תגיע כשננסה לחבר בין נתונים לא מתאימים, או, יותר פעמים, בזה שפשוט נראה תוצאה לא נכונה.
אז מה המשמעות? ומעכשיו נגיד C# ופייתון במקום סטטי ודינאמי.
-ראשית, בC# צריך לקחת זמן לחשוב ולכתוב את כך הTYPES שאנחנו רוצים, ומה שפספסנו שם הלך, אי אפשר להוסיף אותו בשום שלב. (אא"כ מקמפלים מחדש). זה גם לוקח זמן.
וגם זה פותח צהר לבעיות dependency למיניהן. וקומפילציה לוקחת זמן.
בפייתון אתה פשוט כותב. זה אומר כתיבה יותר מהירה, ולמידה יותר מהירה. ובלי בעיות dependency . אתה פשוט תריץ וזה לא יעבוד. ואין קומפילציה. שיטת סע.
-שנית, שגיאות בC# הרבה פעמים מבוססות על בעיית TYPE פה או שם.
בפייתון אין כאלו שגיאות. זה אומר שאתה יכול מאוד מאוד בקלות לעשות שגיאות כאלה ולא תדע מהם. מצד שני יותר מהר תגלה את השגיאות הלוגיות שלך. וזה כבר נקודה רצינית. זה אמור להיות הסיבה העיקרית לבחירת שפה דינאמית.
-ובעקבות כך, בC# הTDD, test drivern development לא מפותח. ולא בשום שפה סטטית.
אך בפייתון ושאר הדינאמיות הוא מפותח מאוד. ומ2 סיבות:
(א) כי בגלל שזה דינאמי קל לקחת חתיכה אחת של קוד ולבדוק אותה בפני עצמה
(ב) בגלל שזה interperter יש SHELL שאפשר פשוט מיד להריץ קוד ולראות מה קורה, בלי תכנית. כך גם לקחת איזה DLL ולראות מה יש בתוכו ומה הוא עושה.
בתחקיר ראשוני על פייתון אתם תשמעו מלא על התכנות המהיר והקוד הקצר, אבל זה הכל לא טכני ותוצאה של הנ"ל.
עוד יתרונות פרטיים לפייתון:
שפה שבנויה להיות גם LOW LEVEL יחסית, ובנויה לסקריפטים, ולכן אפשר לעשות איתה כמעט הכל, ולכן היא נפוצה בעולם הHACKING.
גם בנויה מראש להיות קריאה מאוד ובקלות - SYNTAX
זה בגדול הדברים העיקריים.
אם נתרגם את זה לשפה שלנו, C# זה לכתוב עם אפוד מגן, או אפילו בתוך טנק. פייתון זה לקחת את המקוצרר שלך ולרוץ פנימה. ואם רוצים לבחור אחת חייבים לדעת למה.
ולהלן המקרים בהם אני אישית הייתי בוחר כך או כך.
לימוד מהיר של תכנות - פייתון.
העסקה של ג'וניורים - C#.
POC - פייתון.
פרוייקט שדורש תקשורת נוקשה וברורה מראש בין המודולים (interface קרי) - C#
פרוייקט שעשוי להיות דינאמי ופתוח לשינויים - פייתון.
פרוייקט שמה שמעניין זה זמן הפיתוח - פייתון.
פרוייקט בעל לוגיקה מאוד מסובכת - פייתון.
פרוייקט הדורש אכיפה הישויות (עסקי או לא) - C#.
נ.ב. C# 4 ומעלה כבר מאפשר עבודה דינאמית.
האמת? אני יותר ויותר משתכנע שתכנת טוב חייב לשלוט טוב בשתיהם, ולא ממקום של תחרות ביניהם, אלא ממקום של הבנה ביתרונות של כ"א, בדיוק כמו ההבנה שלשטח לוקחים ג'יפ, ולנסיעה מהירה לוקחים רכב ספורט, ואין באמת תחרות ביניהם כי זה פשוט דברים שונים.
המאמר נכתב ע"י אריאל רובינשטיין בניית אתרים