אוהבים לדבר על כתיבת קוד באמצעות מערכות AI. לדעתי אפשר לשכוח מקוד.

תכנות בשפת מכונה, כלומר, נתינת הוראות למחשב בצורה ישירה – איזה ביטים צריכים להיות דלוקים ואיזה כבויים, היא אירוע מורכב מאוד.
לכל ביט יש שני מצבים אפשריים בלבד: כבוי (0) ודלוק (1).
למשל, ההוראה להדפיס את המילים Hello world על המסך, בקוד בינארי תראה ככה:
10111000 00000100 00000000 00000000
10111011 00000001 00000000 00000000
10111001 00000000 00000000 01100000
10111010 00001100 00000000 00000000
11001101 10000000 10111000 00000001
00000000 00000000 00000000 00000000
11001101 10000000 10111000 00000001
00000000 00000000 00000000 00000000
וזה – במערכת Linux על מעבד בארכיטקטורת x86-32bit.
שמתם לב לסיבוך? “טקסט” לא מובן בכלל, ומוגבל לפי חומרה ומערכת הפעלה.
(אגב, גם זה שדרוג - הקלדה למחשב ולא כרטיסים מנוקבים…)
כדי לפתור את הבעיה הראשונה, נוצרה שפת אסמבלי (Assembly). עכשיו זה יראה כך:
section .data
hello db 'Hello World',0
section .text
global _start
_start:
mov eax, 4
mov ebx, 1
mov ecx, hello
mov edx, 12
int 0x80
mov eax, 1
xor ebx, ebx
int 0x80
אנחנו עדיין מוגבלים לפי חומרה ומערכת הפעלה, אבל זה כבר קוד קריא יחסית.
בשלב הבא, הגיעו השפות מהדור הבא – כגון C, שכבר קריאות ונוחות בהרבה, אך עדיין יש קשר ישיר לחומרה וכדו’.
#include <unistd.h>
int main() {
write(1, "Hello World", 12);
return 0;
}
בשלב הבא, הגיעו שפות כגון Python, Java, וכדומה.
הנה דוגמא לקוד שמבצע את אותו הדבר – והפעם בPython.
print("Hello World")
אין מה להשוות…
שפות נוחות, קריאות, גמישות, ובגדול יכולות לרוץ על כל מערכת הפעלה או חומרה. יש ביניהם הבדלים כמובן, אבל זה לא נושא הפוסט הזה.
לפני שנים נחשפתי לפרוייקט Scratch. תכנות באמצעות גרירת קוביות צבעוניות למיקום הנכון במסך. למעשה, זה לא ממש נועד לתכנות אלא לאימון ילדים לחשיבה בסגנון תכנותי. להבין מה זה מערכים, משתנים, לולאות, וכדומה.
אבל חשבתי שגם אם היום זה לא בשל לפיתוח תוכנות של ממש, העתיד נמצא שם. בכל זאת, תראו כמה זה קל ואינטואיטיבי.

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

בלי לכתוב מילת קוד אחת, קיבלתי קוד שעושה הרבה יותר מאשר כל שאר מה שהיה עד עכשיו.
זה עדיין ירוץ בCLI, ולא בממשק גרפי חמוד כמו בScratch, אבל גם ממשק גרפי אפשר לפתח עם ChatGPT.
בשבועות האחרונים פיתחתי 3 תוכנות עם ChatGPT.
לא אפרט עליהם כאן כי זה לא המקום…
כמובן, זה דורש ידע, כמו שאפשר אפילו לראות בהתכתבות שצרפתי – עבדתי בסגנון של מתכנת – הצגתי שאני מתכוון שהקלט יוגדר כמשתנה. זה לפעמים מתסכל, כי מערכת הAI ממציאה דברים, משבשת את הקוד, או פשוט מחליטה לא להקשיב להוראות. בתוכנת ההורדה מיוטיוב, ביקשתי פעמיים שלחצני ההגדרות והמידע יהיו בצד ימין. נאדה.
בקוד מוגדר left, וChatGPT בסיכום השינויים שלו בקוד הדגיש שהלחצנים נמצאים בצד שמאל, “כמו שביקשת”, למרות שביקשתי בימין, ואחרי שטעה ניסיתי לתקן אותו. אבל, אחרי הכל, קיבלתי תוכנות שעובדות היטב (גם אם הקוד לא כתוב ביעילות הגבוהה ביותר), במינימום מאמץ, ללא כתיבת קוד (כמעט, חוץ מתיקונים פה ושם) והעיקר – בשפה שאני לא יודע!
למדתי בעבר קצת Python, ואני רוצה עוד ללמוד, ובאופן כללי זו שפה מאוד קלה להבנה, אז אני מבין מה הקוד עושה – אבל ליצור קוד בPython – לא, תודה. לא בשבילי.
יש לטכנולוגיה הזו עוד הרבה הרבה לאן להתקדם, וכיום עוד צריך אותנו, המתכנתים, אבל בעיני – זה מדהים.
האם למתכנתים יהיה מה לעשות בעולם של תכנות באמצעות AI? כנראה שלא.
בשנים הקרובות עוד כן, כנראה, בהתחלה בתור טייס ראשי שמשתמש במחשבי עזר, ובהמשך בתור טייס משני שרק מפקח ומתקן על הטייס האוטומטי.
הייתי חושב אולי לעצור כאן,
ושכמו בדברים רבים שעברו את המהפכה התעשייתית, יוקמו “מפעלי תוכנות” עם פסי ייצור אוטומטיים ויחסית מעט עובדים שיפקחו על המפעל ויתכננו את המוצרים.
אבל מי יודע?
אולי המערכות האלו כל כך יתקדמו, שרק נכתוב במשפט שניים מה אנחנו רוצים ונקבל קוד אפוי לחלוטין?
ו…
אולי נתפרע עוד יותר. אולי אפשר לשכוח מעצם המושג “קוד”. אולי לכל אחד, אי אז בעתיד (הרחוק? מי אמר שרחוק?) יהיה כבר מוטמע במערכת ההפעלה מערכת GenAI שתג’נרט לו תוכנות מותאמות אישית לפי בקשתו, ישירות לתוך מערכת ההפעלה?