סוף עידן המתכנתים? מאחורי עלייתם של המודלים מחוללי קוד

כתיבת קוד. תכנות | צילום: Shutterstock
האם מחוללי קוד יחליפו מתכנתים אנושיים? | צילום: Shutterstock
חלומו של כל מתכנת הוא משלים קוד אוטומטי שיעשה את רוב העבודה הקשה וישאיר לאדם את החלק היצירתי והמאתגר. נראה כי המציאות הזו קרובה להתממש - אך בעלי המקצוע צריכים להיזהר ממשאלותיהם כדי שלא יוחלפו לחלוטין

Contributors

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

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

כתיבת קוד | צילום: Shutterstock
אוטומציה? המתכנתים צריכים להיזהר במשאלותיהם | צילום: Shutterstock

המודל החדש של חברת OpenAI, מגרש משחקי ה-AI של אילון מאסק, הנקרא CODEX מראה תוצאות מהממות. המודל יכול לכתוב קטעי קוד חוקיים למהדרין, שרצים ומבצעים את שנדרש מהם. הוא יכול להשלים כתיבת פונקציה רק לפי שמה וחתימת הפרמטרים שלה. והוא יעשה כל זאת ביותר מ-12 שפות תכנות! במהירות הבזק, בלי להתלונן שאין סודה ללא סוכר במקרר ובלי לבקש העלאה בשכר.

ההכרזה על CODEX באה רק כמה שבועות אחרי יציאתו של השירות משלים-הקוד של GITHUB, ה-COPILOT, המשלים פונקציות לפי התיעוד ומשווק בתור ה-PAIR PROGRAMMER של כל מתכנת, המתבסס על CODEX. המודל הראה דמואים חזקים ביותר של כתיבת קוד חוקי, מתקמפל ורץ, בעיקר בסביבות פרונט-אנד למשל ריאקט.

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

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

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

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

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

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

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

למעשה, ככל הנראה מודלים מחוללי קוד כרגע רק "מקיאים" קטעי קוד שראו בעבר ולאחר מכן עושים ביניהם הכלאות ומפעילים עליהם חוקים שגורמים לקוד התוצאה להיות בר-הרצה. בנוסף, המודלים האלה כרגע לא יודעים להתייעץ באדם היושב מול המחשב ורואה את הקוד נכתב כבמטה קסם. אין מדובר ב-PAIR PROGRMMING, מדובר בעצלנות.

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

מתכנתים | צילום: Shutterstock
הפיתוחים בתחום התכנות מתקדמים בצורה מהירה באופן מסחרר | צילום: Shutterstock

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

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

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


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

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

הרשמה לניוזלטר

באותו נושא

הרשמה לניוזלטר

מעוניינים להישאר מעודכנים? הרשמו לרשימת הדיוור שלנו.

דילוג לתוכן