661
0

מה באמת צריך לדעת כדי להיות מתכנת טוב?

661
זמן קריאה: 3 דקות

“בכמה שפות אתה יודע לתכנת?”

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

למה?

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

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

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

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

הפרדיגמות העיקריות בתעשיה כיום הן:

– תכנות מונחה עצמים OOP- Object Oriented Programming

– פרוצדורלי Procedural

– פונקציונלי Functional

– קוד מכונה Machine Code

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

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

נכון, כל שפה עובדת בצורה מעט שונה, יכול להיות לה תהליך קומפילציה ייחודי וגם פונקציות וספריות מגוונות שאין בשפות אחרות. ונכון, יש גם תחומים שדורשים התמקצעות רבה וידע מעבר לשפה עצמה. לדוגמה, מהנדס מכונות-לומדות צריך הבנה רבה באלגברה לינארית, דאטה סיינס וסטטיסטיקה, מפתח דרייברים שצריך ידע מעמיק ב low level וחומרה כו׳. אבל מי שמתחיל את דרכו בעולם התכנות, צריך לתעדף הבנה טובה של הפרדיגמות כבסיס חשוב להמשך הדרך, במיוחד אם יידרש לעבור לכתוב בשפה חדשה (והסיכוי שזה יקרה במהלך הקריירה של מתכנת הוא כנראה 100%).

לסיכום

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

אבי לואיס
WRITEN BY

אבי לואיס

מהנדס תוכנה שעובד בחברת פייסבוק בתל אביב

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *