לוגו פייסבוק

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

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

בעיה של 750 מיליון דולר

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

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

מודל שאומן על מידע מ-GitHub

הפיתוח של פייסבוק, TransCoder AI, עושה שימוש במה שהם מכנים טרנס-קומפיילר נוירוני המסוגל להמיר בין שפות התכנות הפופולריות ג'אווה, ++C ופייתון. ה-TransCoder מורכב מתהליך הכולל מספר מודלים שונים. תחילה, עם מודל שהם אימנו על קטעי קוד בעלי משמעות זהה בכל שפות התכנות שהזכרנו, כמו for, if, while, פעולות מתמטיות ומחרוזות (Strings), מה שאמור לאפשר סינון רעש והמרה מדוייקת יותר בחלקים הברורים.

מודל נוסף בו עשו שימוש, וזה גם החלק הסקסי יותר במחקר, אומן באופן לא מושגח (Unsupervised, עם מעורבות מינימלית של בני אדם וללא תיוגים של מידע) על 2.8 מיליון ריפוזיטוריז מפלטפורמת שיתוף הקוד GitHub. המטרה פה הייתה להבין איך בנויות פונקציות בקוד, שזה החלק הארי בתהליך הפיתוח. לאחר אימון המודלים בדקו את TransCoder AI על 852 פונקציות הכתובות בג'אווה, ++C ופייתון, על מנת לאמוד את רמת הדיוק של הפתרון.

קטעי קוד מקבילים בשפות שונות (מקור: מחקר פייסבוק)

לפי תוצאות החוקרים, TransCoder AI לא הצליח להגיע לדיוק של 100% – דרישה שמראש לא הגיונית מפתרונות מבוססי AI, אמנם הם כן הצליחו להגיע לתוצאות יפות. ההמרה המוצלחת ביותר הייתה במערב בין Java ל- ++C עם דיוק של 91.6%, בעוד ההמרה ההפוכה זכתה לדיוק של 74.8%. ההמרה המאתגרת ביותר כרגע לפי התוצאות היא בין פייתון לג'אווה (שפות שכתיבת הקוד בהן באמת שונה יחסית לשתיים האחרות), עם דיוק של 56.1%.

במאגר הקופונים שלנו כבר ביקרתם?
סמארטפונים וגאדג'טים במחירים נוחים ובמשלוח ישיר עד הבית
לחצו כאן
תגובות לכתבה
גאדג'טי | Gadgety
ניווט באתר
קטגוריות
גאדג'טי
חיפוש כתבות