ChatGPT טוב בצורה מפחידה בכתיבת קוד.
כולם שמעו על ChatGPT בשלב זה. זהו צ'אט בוט המופעל על ידי AI שעושה שימוש במודלים של עיבוד שפה טבעית כדי לייצר תשובות לשאלות מסובכות. התשובות הללו לא בהכרח תמיד מדויקות, אבל הן נוטות להיות מפורטות מספיק כדי שתוכל לבדוק עובדות את התשובות שהיא נותנת לך די בקלות. מה אם היית לוקח ChatGPT ומנסה לכתוב איתו קוד?
כפי שמתברר, זה משהו שאתה יכול לעשות בדרגות שונות של הצלחה, בהתאם לשפות שבהן אתה רוצה להשתמש ומה אתה רוצה להשיג איתן. העמדתי אותו במבחן כדי לראות עד כמה זה יצליח בשפות תכנות שונות כדי להשלים משימות שונות. אני גם לא אבצע שינויים בקוד ש-ChatGPT מייצר, אני אדריך אותו ליצור קוד עובד רק אם הקוד שהוא יוצר לא עובד.
השתמשתי בשלוש שפות שאני כבר מכיר כדי להעמיד את ChatGPT למבחן: Python, C ו-Java. התוצאות היו מפתיעות במיוחד מכיוון שהוא נאבק מעט עם Python בגלל האופי המופשט של מה שביקשתי ממנו לעשות, אבל הוא טיפל ב-C וב-Java בסיסי בקלות. יש לי גם יצר מאגר GitHub עם כל הקוד כאן נגיש כך שתוכל לנסות את זה בעצמך.
בדיקת דפים אוטומטית ב- Python
Python היא שפת התכנות האהובה עלי לעבוד בה, וזה הודות לכוח שיש לה ולפשטות השימוש שלה. כתבתי כלים רבים ב-Python בעבר כדי להפוך חלקים מזרימת העבודה שלי לאוטומטית, והתזה שלי לתואר ראשון במדעי המחשב נעשתה אפילו כולה דרך פייתון. ביקשתי מ-ChatGPT לכתוב תוכנית שיכולה לסרוק דף אינטרנט לשינויים על בסיס קבוע בזמן, וזה בעיקר עשה את העבודה.
הבעיה עם הקוד לעיל שהוא נותן לי היא שהוא לא מדמה דפדפן אמיתי. אתרי אינטרנט בודקים פרמטר בדפדפן שלך שנקרא "סוכן משתמש", וזה מגדיר באיזה סוג דפדפן אתה משתמש או אם אתה בוט. אתרים רבים לא יקבלו חיבורים שאינם מגדירים סוכן משתמש, ונתקלתי בזה כשהפניתי את זה ל-XDA. ביקשתי ממנו להוסיף כותרות מותאמות אישית לבקשה לדמות דפדפן אמיתי, וזה נענה.
הקוד שניתן לעיל עובד עבור אתרים סטטיים, אבל הבעיה היא שחלק גדול מהתוכן שאתה קורא באינטרנט הוא דינמי. אם עמוד מחזיר את השעה הנוכחית, למשל, במקום כלשהו בדף, אז הקוד שלמעלה תמיד יגיד שהדף השתנה בכל פעם שהוא מתרענן. כשציינתי זאת בפני ChatGPT, זה התבלבל ונתן לי פתרון שגוי לחלוטין לבעיה.
האמור לעיל הוא הסבר שגוי של אופן פעולת הגיבובים. הנקודה ב-hash היא ששינוי מינורי בקלט יגרום להבדל גדול ב-hash, בכך ששני גיבובים הם בעצם בלתי ניתנים להשוואה. כשאמרתי לו שזו טענה שגויה להציע ש-hash הם הדרך הטובה ביותר להשוות ולסרוק שינויים, הוא השיב בהתנצלות ונתן לי משהו עשה עֲבוֹדָה.
הבעיה היחידה שגיליתי עם הקוד לעיל היא שעבור אתרים גדולים יותר, זה יקר מבחינה חישובית מכיוון שהוא משתמש בעיבוד שפה טבעית כדי להשוות ולחשב את ההבדל ביניהם. ובכל זאת, סף של 5% בתוכן שהשתנה הוא מספיק טוב עבור רוב האתרים אם אתה מעוניין לבדוק עדכונים, ותוכל להתאים את הסף במידת הצורך. זה לקח זמן, אבל זה הגיע בסוף.
יש הרבה סיבות שאולי תרצה מגרד אינטרנט כמו אחד כזה, ולמרות שיש כלים שיכולים לעשות את זה, זה מגניב לבנות משלך. אתה יכול להשתמש בהם למעקב אחר חבילות או, במקרה שלי, סריקה לאיתור נכסים חדשים שעולים להשכרה באתרי נכסים מקומיים.
מחולל סיסמאות ב-C
מכיוון שהאבטחה הייתה בולטת לאחרונה, חשוב שתשתמש בסיסמאות מאובטחות וגם תשתמש באימות דו-שלבי. אם אתה נאבק בחלק הסיסמה המאובטחת, זה די קל לכתוב מחולל סיסמאות ב-C. ChatGPT טיפל בזה די בקלות, והבעיה היחידה שגיליתי היא שכשביקשתי ממנו ליצור מחולל סיסמאות, הוא לא ייבא את ספריית String C. אמרתי לו את זה, וזה הוסיף את זה ליבוא בהתחלה.
הגדלתי את המשתנה הגלובלי MAX_LENGTH ל-32 תווים במקום 16, והוא יצר עבורי את הסיסמה הבאה: aW3H0E(&FPQvG8B@4*()+4yRKTKB#U0O. בטוח לומר שזה עובד!
מחשבון ב-Java
תוכנית די בסיסית שלאנשים רבים יש ניסיון איתה בג'אווה היא יצירת מחשבון. זהו אחד האתגרים המוקדמים ביותר שעמם יתמודדו מדעני מחשב בקריירת התכנות שלהם, לא משנה באיזו שפה הם יפנו קודם. ביקשתי מ-ChatGPT לכתוב מחשבון ב-Java שעשה שימוש בשתי מחלקות לפחות, וזה עבד בצורה מושלמת בניסיון הראשון.
זה מחלקת המחשבון:
זה המחלקה העיקרית:
יצירת שתי המחלקות הללו ב-IDE שלי, IntelliJ, והפעלת המחלקה הראשית מביאה לעבודה מושלמת תוכנית מחשבון שמקבלת שני מספרים ואופרטור לחיבור, חיסור, כפל או חֲלוּקָה.
ChatGPT הגון בתכנות
אמנם לא הייתי סומך על ChatGPT שיעשה הכל בשבילך, אבל ברור שהוא יכול לעשות עבודה די טובה ביצירת תוכניות ולקחת בחשבון ביקורות כאשר יש בעיות. הופתעתי לראות שהוא מציע אלגוריתם גיבוב כדרך להבחין בין שינויים קלים בדף אינטרנט, אבל מלבד זאת, הוא לא נאבק במשימות הבסיסיות יותר. אפילו במקרה של תוכנית Python, היה לה רעיון נכון מההתחלה, ובעמודים סטטיים יותר, היה עובד בצורה מושלמת.
כמובן, ChatGPT לא בדיוק הולך להחליף מתכנתים בקרוב, אבל הוא בדרך להיות כלי טוב מאוד בכוח העבודה. Copilot של GitHub, למשל, עושה שימוש ב GPT טכנולוגיה שתעזור לאנשים לכתוב קוד, והיא רק תלך ותתקדם ככל שהזמן יעבור. גם אם אתה מתכנת מתחיל, כלי מסוג זה עשוי לעזור לך ללמוד אם אתה יכול לסמוך עליו במלואו, אבל לפעמים הוא עושה טעויות מוזרות, כפי שראינו.
כמובן, הדוגמאות שניתנו כאן הן בסיסיות מאוד, ורוב המתכנתים יוכלו לכתוב אותן די בקלות, אבל זה לא העניין. הוא טוב להחריד בבניית פתרונות למשימות פשוטות ונראה שהוא מתמודד היטב גם עם משימות מורכבות יותר. אנו נרגשים לראות לאן כלים כאלה הולכים בעתיד ולעזור לאנשים לשפר את כישוריהם.