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

המערכת, שפיתחו אנשי אינטל ו-MIT, יכולה לחלץ את משמעותה של פיסת קוד באותה דרך שבה מערכות NLP יכולות לקרוא טקסט

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

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

המערכת שתמליץ על דרכים טובות יותר לכתוב את הקוד

חוקרים מאינטל, MIT (המכון הטכנולוגי של מסצ’וסטס) ומהמכון הטכנולוגי של ג’ורג’יה באטלנטה מפתחים מערכת Machine Programming חדשה. המערכת סורקת את הקוד שהמתכנתים כותבים, “מבינה” מה הם תכננו שהתוכנה תעשה, ומציעה להם דרכים אחרות שבהן ניתן לכתוב את הקוד, כדי שיהיה מהיר או יעיל יותר.

המערכת פועלת באותה דרך שבה מערכות עיבוד שפה טבעיות (NLP) יכולות לקרוא פסקת טקסט ולהבין מהמילים את הכוונה, וזכתה לשם Machine Inferred Code Similarity (או MISIM). בפועל, המערכת משווה קטעי קוד עם מיליוני פיסות קוד אחרות שהמערכת כבר “ראתה” בעבר ושנלקחו ממספר גדול של מאגרים מקוונים. MISIM מתרגמת תחילה את הקוד לצורה שמייצגת את מה שהוא עושה, אך מתעלמת מהאופן שבו שהוא כתוב.

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

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

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

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

בשיחה עם גיקטיים מספר אמיתי ערמון, Chief Data Scientist, באינטל ישראל, שבפני החוקרים עומדים עוד לא מעט אתגרים: “כרגע המערכת נבחנה על מאגר אחד של תוכניות, שבו התוכניות מיועדות לבצע כ-100 משימות שונות. צריך להמשיך לבחון אותה על עוד מאגרי תוכנה, וגם לבחון את היכולת שלה לזהות הבדלים קטנים בין משימות שתוכניות מבצעות”. עם זאת, באינטל מתכננים להשתמש בעתיד המערכת כדי לסייע למהנדסים של החברה לכתוב קוד מהיר ויעיל יותר.

גם פרופסור ערן יהב, ה-CTO של הסטארטאפ הישראלי Codota, שמפתח תוסף השלמה אוטומטית לקוד, מאמין שבפני מערכת כזו עומדים לא מעט אתגרים: “אם מדברים על Machine Programming הרי שזו בעיה רחבה מאוד עם המון אתגרים; אחד המרכזיים שבהם הוא הבנת הכוונה (intent) של המפתחים, כלומר איך לתקשר למכונה מה הפעולה הרצויה”.

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

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

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

אושרי אלקסלסי

Your Friendly Neighborhood Geek. יש לכם סיפור טכנולוגי? דברו איתי: Oshry@geektime.co.il

הגב

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

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

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

סידור לפי:   חדש | ישן | הכי מדורגים
המניע
Guest

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

עם הארץ
Guest

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

עם הארץ
Guest

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

סתם עשיתם תואר
Guest
סתם עשיתם תואר

בקיצור,מתכנתים חפשו לכם מקצוע אחר חחחחחחחחחח

אור
Guest

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

ASD
Guest

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

ש.
Guest

מדהים :
https://code2vec.org/

101
Guest

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

מישהו
Guest

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

קרקר
Guest

דברים מסובכים או רק להחליף ג’וניורים ואוקראינים? מה אם זה תלוי פריימוורק

xXX
Guest

לפני 20 שנה רשמתי open COM2 בשביל להגיע לפקס בVB . שורה אחת. היום צריך 4 דפים בשביל לעשות את אותה הפעולה בדיוק

wpDiscuz

תגיות לכתבה: