האם תכנות בשפות דינאמיות מוריד את יכולות התכנות שלך ?

source code illustrationבזמן האחרון חזרתי לתכנת בצורה ממש רצינית בשפה סטטית, אחרי מספר שנים שאני בעיקר מתכנת בשפות דינאמיות. העניין הוא שמגלה כי יכולות התכנות שלי ירדו פלאים.

אז התחלתי לשאול מספר חברים אשר גם הם מתכנתים כיום בעיקר בשפות דינאמיות, והפלא ופלא, הם מרגישים את אותו הדבר (ולרגע הייתי בטוח שזה רק מדגיש את מה שתמיד היה אצלי ;)).

ללמוד לתכנת בשפת תכנות, זו לא משימה של לימוד תחביר, כי זה הדבר הפשוט והקל ביותר ללימוד, אלא לימוד של חשיבה בהלך הרוח של השפה, כאשר שפה דינאמית שונה בחשיבה שלה משפה סטטית. השוני הזה מגיע בנוסף לדרישות של השפה הספציפית עצמה.

הבעיה היא, שכל שפות סטטיות (אשר אני לפחות מכיר) מכילות הגבלות אשר לרוב אינן קיימות בשפות דינאמיות, ולכן הגישה והחשיבה בעבודה עם שפות סטטיות שונה לגמרי, וכמובן שגם כאן אנחנו מדברים עוד לפני העבודה עם השפה הספציפית עצמה והלך החשיבה שלה.

הכלים והגישה של שפות דינאמיות גורמות להרבה מתכנתים להיות עצלנים, בראש ובראשונה (כי עצלן בקוד זה בד"כ טוב, אם זה לא פוגע באיכות). וכאן מגיעה הבעיה האמיתית.

למשל אם אני רוצה לחלק מחרוזת למערך. בשפה דינאמית זו בדרך כלל משימה מאוד פשוטה וקלה, ובמקרה הרע ביותר לוקחת יותר משורת קוד אחת, אבל לא יותר מחמש שורות במקרה הכי נורא שאי פעם תתקלו בו, אלא אם אתם לא מבינים את השפה כמובן, או ריווחתם את ההוראות בצורה ממש נדיבה.

בשפה סטטית, בה הטיפוסים הם לא כאלו פשוטים, וכתיבת קוד חלוקה למערך הוא לא דבר של מה בכך, קוד שכזה דורש הרבה חשיבה ותכנון. אל תבינו לא נכון. מאוד קל ליצור מפרשים לטקסט (לרוב). הבעיה היא שיש המון דברים שחייבים לקחת אותם בחשבון, כדוגמת: יעילות, מהירות, גמישות ושימושיות (בהתאם להרבה גורמים כמובן ולאן הקוד מיועד ללכת בסופו של דבר). ואם אתם כמוני, אז גם קריאות חייבת לקחת מקום מאוד חשוב בתכנון.

הבעיה היא שכאשר מתרגלים לגישה של שפה דינאמית. זה הופך לדבר שהוא הרבה יותר בעייתי. אם פעם כאשר הייתי מתכנת הרבה בשפה סטטית, היה לוקח לי במקרה הרע ביותר יום בודד ליצור פעולה כזו. היום אני מגלה שזה לוקח לי מעל לשבוע לחשוב ולממש בדיוק את אותם הדברים שפעם הייתי משקיע בהם פחות אנרגיה ומאמץ.

בכלל כאשר אני בא ליצור את הקוד, הדבר הראשון שעולה לי לראש הוא איך אני עושה את זה ברובי או פרל, לא איך אני עושה את זה בשפה סטטית כזו או אחרת.

האם זה קורה גם לכם ?

3 מחשבות על “האם תכנות בשפות דינאמיות מוריד את יכולות התכנות שלך ?

  1. Guy Rutenberg

    אני הרגשתי גם ככה. אחרי די הרבה זמן שתכנתתי בעיקר python חזרתי ל-C++ והרגשתי כמו דג מחוץ למים, למרות שבזמן הזה יצא לי לקרוא לא מעט קוד C ו-C++. כנראה היכולת לכתוב קוד סטטי טוב מחלידה אם אתה לא באמת כותב בעצמך.

    זה בדיוק הפוך ממה שקרה (בדיעבד אני רואה את זה) שעברתי לשפות דינמיות. לקח לי זמן ללמוד לכתוב קוד שהוא לא תרגום של דרך החשיבה של תכנות סטטי לתכנות דינמי.

  2. Tom Bigelajzen

    שאלה מעניינת. אבל השאלה היא איך אתה מודד יכולת תכנות?
    אני מפתח פרונט אנד ויצא לי עד היום לפתח כמעט רק בשפות דינמיות (אם אתה לא מחשיב אסמבלר בבגרות מחשבים לפני 15 שנה…)
    יוצא לי לראות הרבה מתכנתים שנכנסים לעולם הפיתוח לווב ובאים מעולם של שפות סטאטיות.
    מנקודת המבט שלי יכולות החשיבה שלהם מאד מוגבלות כשזה נוגע לתחום שבו חייבים שפה דינמית, כמות הקוד שיוצא לי לעבור עליו ולכתוב מחדש היא מיאשת לפעמים.

    מצד שני, החשיבה המערכתית של האנשים האלה והיכולת שלהם לפתח בתחומים שהם יותר בעומק המערכת עוקפת את שלי בסדרי גודל.

    אני חושב שבסופו של דבר הכל קשור לסביבה אליה אתה צריך לפתח, אני בטוח שהאנשים שפיתחו עם כרטיסי ניקוב חשבו אותו דבר כשהם היו צריכים לעבוד לשפות שצריך לכתוב בהן אשכרה באנגלית🙂

    1. ik_5 מאת

      אני לא מפתח ווב. אם כי אני מוצא את עצמי עושה גם את החרה הזה. אלא מתעסק בפיתוח תשתיות שונות, ואפליקציות מבוססות טלפוניה.

      לדעתי האישית כל מתכנת חייב לדעת ולהכיר את הלכי החשיבה של שפות סטטיות, דינאמיות ופונקציונאליות.
      דבר ראשון זה מפתח מאוד את המחשבה. דבר שני, זה פותח לך פתח לפתור דברים לא תמיד בעזרת אותו כלי, אלא ממש למצוא פתרון הולם. ודבר שלישי, אתה לומד תפיסות עולם שונות לגמרי, שזה נותן לך פרספקטיבה למה שאתה עושה.

כתיבת תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s