אבני היסוד של כתיבת קוד למתחילים: וגם - קורס פיתוח ו-AI חינמי!

מאת Yuval Avidani
זמן קריאה: 1 דק'

תוכן עניינים

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

ההוכחה החיה לכך שהגבינה של עולם הפיתוח זזה היא הקורס האחרון של אנדרו אינג, מייסד Coursera ו-DeepLearning: קורס פייתון ו-AI למתחילים שבו הוא מלמד על כתיבת קוד, מאפס, תוך שימוש ב-ChatGPT כחלק בלתי נפרד מההתנעה של כתיבת קוד.

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

התמונה מאתר: https://favtutor.com/articles/claude-3-5-sonnets-artifacts-feature/

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

יסודות התכנות

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

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

    איזה ערכים אפשר לשמור במשתנים? בגדול - הכל. בניגוד למתמטיקה, בה ראינו מספרים שנשמרים ב-X ו-Y, בעולם הקוד אנחנו יכולים לשמור במשתנים גם מספרים אך גם טקסט (String). זאת אומרת, משתנה X יכול להיות:
    X = 770
    וגם
    X = "Yuval"
    וגם
    X = 7.77032890849032

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

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

    מונח חשוב הוא ״מבנה נתונים״. יש משתנים מסוגים שונים. יש כאלה שיכולים להכיל טקסט, מספרים, כאלה שיכולים להכיל רשימות או מילונים. כל זה זה תוכן כבר מתקדם יותר אבל שתדעו שיש סוגים שונים של מבני נתונים: זאת אומרת, סוגים שונים של דרכים לשמור מידע במשתנים.
  2. לולאות - אנו יכולים לכתוב פקודות שמריצות פעולות מסוימות שוב ושוב כל עוד לא התקיים תנאי מסוים. למשל: כל עוד משתמש לא הזין את כתובת המייל שלו בטופס שבאתר, אל תתן לו לשלוח את הטופס. או: כל עוד הסיסמא היא לא הסיסמא הסודית, אל תאפשר למשתמש להתחבר. כל הדברים האלה הם תנאים: אם מתקיים תנאי מסוים - אז תבצע פעולה מסוימת, אחרת - תבצע פעולות אחרות.
    יש סוגים שונים של לולאות:
    אם-אז (if-else): אם הגיל שלי הוא 10 אז תזמין לי עוגיה. אם הגיל שלי הוא 70 אז תזמין לי חופשה בבורה בורה...
    כל עוד (while): כל עוד תנאי מסוים מתקיים תבצע פעולה מסוימת. למשל, כל עוד 1 ועוד 1 זה 2 (מה שאומר שמשהו נכון לתמיד) אז תאפשר למשתמש לשחק במשחק (שזו בעצם דרך תכנותית לגרום לתוכנה לרוץ כל הזמן)
  3. פונקציות - המחשב מריץ קוד מלמעלה למטה. זה כמו שקוראים ספר, מתחילים מלמעלה וממשיכים לקרוא מטה. כך המחשב. מתחיל מלמעלה, מראש הקובץ שמכיל את שורות הקוד שלנו, ומתחיל לבצע את הפעולות.
    אנו יכולים לכתוב קוד בצורה שמבצעת פעולות מלמעלה למטה, למשל: אם אנחנו רוצים לפתח אתר שמאפשר לייצר תמונות עם בינה מלאכותית. אנחנו יכולים ליצור עמוד ולכתוב קוד שמבצע את זה. אך מה אם נרצה לאחר מכן לפתח עמוד נוסף וגם בו לאפשר את אותה הלוגיקה? האם נכתוב הכל מחדש?
    דרך יעילה יותר תהיה להגדיר פונקציה, שהיא סך הכל כמו לתת תפקיד למישהו. פונקציה מקבלת ערך מסוים, מבצעת פעולה ומחזירה ערך אחר. למשל, אם יש לנו צורך לחשב את ה-BMI, המדד שמשקלל משקל וגובה, נוכל לחשב זאת ידנית עבור כל אחד ואחת בכל פעם מחדש. או שנוכל ליצור פונקציה, שמקבלת מידע כמו גובה ומשקל, מבצע את החישוב הנדרש ומחזירה את ערך ה-BMI. פונקציה זו דרך יעילה ומקובלת בעולם הקוד. לרוב נעבוד עם פונקציות.
  4. מחלקות - יש תכנות שנקרא תכנות ״מונחה עצמים״, OOP = Object Oriented Programming, מה זה אומר? שבמקום לכתוב פונקציה אחת ולהשתמש בה בכל פעם, אנו יכולים לייצר ממש ״יישות״. תחשבו על זה כמו ליצור בן אדם ולתת לו סט של כלים שהוא מסוגל להשתמש בהם. בעולם התכנות אנחנו יכולים ליצור ״בן אדם״ באמצעות הגדרת ״מחלקה״ של ״בן אדם״. במחלקה הזו, שקרויה גם Class, אנו יכולים להגדיר סט כלים, מה שנקרא מתודות, Methods / Functions, שיהיו בעצם היכולות של אותו ״בן אדם״. והאמת היא שבעולם הקוד, ״בן אדם״ קרוי ״אובייקט״. יש לנו אובייקט, שנולד במחלקה (כמו להיוולד במחלקת יולדות!), ויש לו יכולות משלו, מתודות משלו שהוא יכול לבצע (למשל, מתודה שמסוגלת להכפיל מספרים, מתודה שמסוגלת להצפין מידע, מתודה שמסוגלת לחשב תוצאה של רשת נוירונים וכדומה).
  5. שפות תכנות עיליות ושפות תכנות low-level - הכלל הוא, ככל שאנחנו רוצים לדבר יותר ויותר בשפה שהמחשב מבין, אנחנו מתרחקים מהמעבד ומהחומרה של המחשב. שפות low-level הן שפות כמו C, או Assembly, בהן אנו מדברים יותר ויותר בשפת מכונה. מנגד, השימוש בשפות תכנות ״עיליות״ הרבה יותר קל לנו. שפת תכנות כמו Python (פייתון) מאפשר לנו לכתוב קוד כמעט בשפת בני אדם לחלוטין. כמו סיפור. אנחנו מתרחקים משפה של מכונה ועוברים לכתוב באנגלית. לכן זו שפה עילית. כאילו אנחנו עליונים, מתרחקים משפת המכונה. עילאים ומתנשאים!
  6. קוד שהמחשב מפרש בזמן אמת אל מול קוד שצריך להפוך לקובץ ייעודי - שפת תכנות low-level שמאפשרת לנו לדבר עם המחשב בשפת מכונה, לא ניתן להריץ סתם כך. אחרי שכותבים את הקוד, צריך להמיר אותו לסוג קובץ שהמחשב יכול להריץ. זה נקרא לבצע פעולת קומפילציה, Compile. אז אנחנו הופכים את הקובץ שלנו, שלצורך העניין היה בסיומת C, לקובץ שכולו אפסים ואחדות (כמו במטריקס, שאותו המחשב יכול להריץ).
    מנגד, קוד שיכול לרוץ בזמן אמת על ידי המפרש של המחשב, שקורא את הקוד, מפרש אותו ומבצע את הפקודות בלייב, נתמך בשפות כמו פייתון. זה נקרא Interpreter ואולי זה סופסוף עושה שכל למי ששמע שב-GPT יש את Code Interpreter בזמנו. המשמעות היא היכולת להריץ קוד פייתון, לפרש קוד ולהריץ אותו בזמן אמת.
  7. קוד צד לקוח וקוד צד שרת - באתרי אינטרנט יש את העמודים ואת הממשקים שחשופים למשתמשי הקצה. כל זה הוא קוד צד לקוח. הלקוח הוא משתמש הקצה שגולש לאתר. מנגד, יש גם קוד צד שרת, שמכיל את כל הלוגיקה של מאחורי הקלעים. ברגע שמשתמש רוצה לבצע פעולה שכרוכה בלוגיקה מורכבת, לשלוח טפסים, לקבל מידע על הזמנות, כל זה מתבצע בצד האחורי. זה צד השרת. המחשב שמשרת אותנו.

האמת שיש עוד המון

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

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

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

ואיפה הקורס החינמי שהבטחת?

ואם סיקרנתי אתכם אתם מוזמנים לקורס הפייתון וה-AI החדש למתחילים של אנדרו אינג האגדי (בחינם) ממש פה:

AI Python for Beginners - DeepLearning.AI
Enroll in ‘AI Python for Beginners’ by DeepLearning.AI and learn Python programming with AI assistance. Gain skills in writing, testing, and debugging code efficiently, and create real-world AI applications.

מקווה שקיבלתם ערך.

בשורות טובות בתפילה לשובם.

יובל

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

קורס האוטומציות וה-AI שלי באוויר!! 🎉🎉🎉
עכשיו במבצע השקה: קורס האוטומציות וה-AI שלי באוויר!! 🎉🎉🎉

עדכון אחרון אוגוסט 12, 2024

אודות המחבר