שלום,
נראה שכבר הכרתם את אאוריקה. בטח כבר גיליתם כאן דברים מדהימים, אולי כבר שאלתם שאלות וקיבלתם תשובות טובות.
נשמח לראות משהו מכם בספר האורחים שלנו: איזו מילה טובה, חוות דעת, עצה חכמה לשיפור או כל מה שיש לכם לספר לנו על אאוריקה, כפי שאתם חווים אותה.
»
«
מה זה תיכנות וקידוד?
אם שאלתם את עצמכם פעם מה זה תִּכְנוּת (Programming או Coding) הרי שאתם לא לבד.
תכנות הוא סדרת הוראות שמגדירות התנהגות. על תוכנית מחשב להיות טובה, אלגנטית, יעילה ונוחה לתחזוקה.
אבל התייחסות כזו היא בעיקר לכתיבת הקוד ונוטה להיות כללית מדי. אנו רואים בתכנות ביטוי של לוגיקה. בכלל, לצורך תכנות, הליך שכולל גם תכנון והבנה מעמיקה ומגוונת בתחום הפיתוח, נדרשת מומחיות בלא מעט נושאים, כולל בתחום היישום, באלגוריתמיקה וכמובן וככל הנראה בראש ובראשונה - בעולם של הלוגיקה.
התחום הזה דומה למתמטיקה ולכן לא מעט אנשים אומרים שתכנות הוא מתמטיקה יישומית. כי אם עולם הלוגיקה כולל את המתמטיקה והתכנות, המתמטיקה היא הצד התיאורטי שלו, בעוד שהתכנות הוא הצד המעשי, הפרקטי של הלוגיקה.
חברות גם מניחות שמתמטיקאים טובים יהיו מתכנתים ומהנדסי תוכנה מצוינים וגם אם מתמטיקה ברמה גבוהה לא הכרחית לתכנות, זה אכן בדרך כלל כך.
כבר שנים שמתנהל ויכוח על מהות התכנות - האם כתיבה של תכניות מחשב טובות היא יותר הנדסה, יותר אומנות, או אמנות של ממש. כנראה שפיתוח כולל את שלושת העולמות הללו ושמתכנת מצוין הוא גם בעל מקצוע טוב, גם בעל יכולת הנדסית משמעותית וגם אמן של קוד.
ואכן, בעולם של המתכנתים יש אבחנה מסוימת בין programming, בעברית תִּכְנוּת, שזו דרך החשיבה לפתרון בעיות ברמה היותר מופשטת וייתכן אף בלי ידע בשפת תוכנה ספציפית, לבין coding שזה קִידּוּד והוא יותר החלק הטכני יותר של כתיבת הקוד ומחייב ללמוד את התחביר, ה-Syntax של השפה שבה ייכתב הקוד שלך.
רבים בתחום אומרים שאם למדת "פרוגרמינג", כלומר תכנות, יהיה לך קל מאוד ללמוד "קודינג", שזה קידוד. זו הסיבה שלמתכנתים אמיתיים כל כך קל ללמוד שפות תכנות חדשות וזו כנראה גם הסיבה שמנהיגי העולם החדשים הם מי שהיו מתכנתים מצוינים. התכנות ברמה הגבוהה שלו מסייע לבנות יכולת מנטלית גבוהה שדרושה להנהיג ולפרוץ למקומות חדשים.
להיכרות עם עולם התיכנות היכנסו לתגית "תכנות".
הנה העולם של המתכנתים (מתורגם):
https://youtu.be/tSysNQFUf2g
בעולם הפיתוח יש לא מעט שמבחינים בין מתכנת programmer למקודד coder:
https://youtu.be/CIRGjwYgdT4
אפילו בסמארטפון אפשר לקודד:
https://youtu.be/Cmq3TrS3ccU
סרט יותר ארוך על עולם התיכנות:
https://youtu.be/dU1xS07N-FA?long=yes
וראיון עם איש מחשבים על תכנות בעולם ההייטק (עברית):
https://youtu.be/MWuPuu2c1Y8?long=yes
מה עושים כלי מחקר ועיון מבוססי AI?
כלי מחקר מבוססי בינה מלאכותית ג'נרטיבית הם סוג של סוכני AI משוכללים (AI agents) המיועדים לחקר וארגון המידע שאנו צוברים בתהליך המחקרי.
מבין מודלי השפה הגדולים (LLMs) בולטים קלוד ו-Chatgpt שפותחו לכלים מולטי-מודאליים. ככאלה הם מתאפיינים ביכולת ללמוד דברים מטקסטים, תמונות, צילומי מסך ועוד ולשפר את הביצועים עם תוצאות בפלט הכולל טקסטים, קוד, אודיו, וידאו, תמונות והבנה מרחבית.
לצידם יש מודל שפה שהוא יותר מחקרי באופיו וכולל מנוע חיפוש. מדובר ב-Perplexity, כלי שהחל בהתבססות על דאטה מחקרי, בעיקר מ-Google Research. כשהפך להיות הצ'טבוט המחפש הראשון, הוא מתבסס על תוכן עדכני ורלוונטי שהוא מאתר באינטרנט בזמן אמת, עם עדיפות לתמציתיות ולנתוני אמת. בנוסף, פרפלקסיטי שומר על כללי הציטוט המדעי, נותן ציטוטים עם ציוני מקור, מנמק ומקשר את טיעוניו למקורות שעליהם התבסס ומהם שאב את המובאות והתשובות.
יש גם את NotebookLM של גוגל, מעין מחברת חכמה בצירוף שותף ללמידה, שמבין אתכם ועוזר להפיק את המרב מהחומר המחקרי או הלימודי. במקום לבזבז זמן על עבודה טכנית ומשעממת, מעלים אליו עשרות חומרים, כולל טקסטים בהעתק-הדבק, מאמרים, לינקים, כתבות וספרים ועד סרטוני יוטיוב והקלטות קוליות. הכלי, שמתבסס על Gemini 2.0, קורא, מבין ומנתח את כל המידע במהירות ובמקום שתבזבזו שעות על קריאת חומר וכתיבת סיכומים, הוא מייצר לכם בקלות סיכומים חכמים, תובנות, מדריכי למידה, צירי זמן ותשובות לכל שאלה. ניתן לצ'טט או ממש לשוחח עם המחברת כאילו היא עוזר אישי וקולי, לשאול שאלות שתרצו על החומר ולקבל תשובות מדויקות ומובנות.
מרשימה גם היכולת של NotebookLM, להפוך את הידע שטענתם אליו לפודקאסט וגם לשאול שאלות עם מיקרופון ולהיות שותפים מלאים לשיחה עם "המגישים". תארו לעצמכם שתוכלו לקחת את הסיכום שיהפוך להרצאה מוקלטת בקול אנושי לחלוטין, או לסרטון לימודי או מקצועי. זו למידה חווייתית, שיתופית ומעניינת הרבה יותר.
עוד כלי מחקר טובים הם עזרי כתיבת פרומפטים ומאגרי פרומפטים המסייעים לתקשורת יעילה עם מודלים גדולים של שפה. כלים כאלה הם חיוניים למגוון עצום של שימושים, כולל שלל אפשרויות מחקר, כתיבה והפקת תובנות מתוכן גולמי וממקורות בינתיים.
ברמה המדעית יש גם יש כלי בינתי, מעין מודל שפה גדול (LLM) בשם Consensus שהוא בעצם מנוע חיפוש אקדמי מבוסס בינה מלאכותית. הוא עצמו משתמש במודלי שפה גדולים (LLMs) כדי לאסוף, לנתח ולהנגיש מידע מדעי בצורה פשוטה ומדויקת. המנוע של "קונצנזוס" מנתח יותר מ-200 מיליון מאמרים מדעיים, מסכם אותם באופן תמציתי ומציג את הקונצנזוס המדעי, מה הדעה הכללית ביחס לשאלות מדעיות בנושאים שונים. לשם כך הוא משתמש בכלים כמו "Consensus Meter", בו רואים את התפלגות הדעות בשאלה המסוימת ולומדים על "מה חושב המדע" לגביה.
עוד שיטה שהוא נוקט היא "Pro Analysis". שימושיה העיקריים בחינוך ובמחקר הם בסיוע לסטודנטים ולמורים במציאת מאמרים רלוונטיים, יצירת סיכומים מותאמים לשואל, ניתוחים מהירים של ספרות מדעית, סינון מאמרים שלא עומדים בדרישות מדעיות מוגדרות (כמו מתודולוגיה, גודל מדגם או מובהקות סטטיסטית) והפקה של ציטוטים אוטומטיים ודוחות מותאמים.
הנה NotebookLM, כלי המחקר לטעינת חומרים מגוונים ומשימות עליהם (עברית):
https://youtu.be/_vML22ACIRs
הוא יכול לייצר אפילו פודקסט:
https://youtu.be/1jgpsGDUXW4
הצ'טבוט שמצטיין במחקר ובחיפוש - Perplexity (עברית):
https://youtu.be/1MkBWfurQL4
כלי AI מקצועי למחקר מדעי בסקירת ספרות ולמידה ממאמרים:
https://youtu.be/LBzrVEG5qsk
מארינר - סוכן AI והעוזר הגלובלי של גוגל:
https://youtu.be/WJnUWldjJQA?long=yes
הבן של גוגל וקלוד - הנה פרפלקסיטי ששילב את שני העולמות (עברית):
https://youtu.be/33nBpKRWMms?long=yes
כמה כלי מחקר מבוססי AI:
https://youtu.be/Rc9R7T8S1c8?long=yes
ומדריך לעבודה עם NotebookLM:
https://youtu.be/UG0DP6nVnrc?long=yes
איך התכנות יורד לעם בעזרת בינה מלאכותית יוצרת?
בימי AI אלה, של פברואר 2025, נראה שאנו רואים את השינוי בכתיבת קוד בכלל ובתכנות של אפליקציות לסוגיהן בפרט.
וזה לא ממש תכנות, עם כתיבת קוד וחלוקה למסמכים שיוצרים תוכנה, אלא יותר תהליך של חשיבה וחלוקת הוראות. כולנו יכולים לחשוב על רעיון, לנסח אותו כפרומפט, אולי גם לדמיין ולצייר מסכים, להציגם ל-AI, לראות קוד ואת התוצאה, לאשר או להציע תיקונים, לשפר את המודל ולראות את התוצאה משתפרת.
גם אם זה נשמע בלתי אפשרי, זה בדיוק מה שהבינה היוצרת מאפשרת כיום, כמעט לכל אחד, כולל מי שלא למדו מעולם לקודד ולתכנת. אחד מגאוני ה-AI של הדור החדש, אנדריי קרפאטי (Andrej Karpathy), מסביר שכלי ה-GenAI משנים את אופן פיתוח התוכנה מהיסוד וקורא לזה “תכנות וייב” (Vibe Coding).
תכנות הווייב פירושו תכנות שלא בקוד אלא של מפתחים שמתרכזים ברעיונות הגדולים ונותנים ל-AI לטפל בשאר - מהקוד והאיטרציות (שפירושן שיפור וניסוי שוב ושוב), דרך הפרטים הטכניים, הטיפול בבסיס הנתונים (Database), ב-API ובהעלאת הכלי לאונליין (Deployment).
ומדובר בשינוי של כל החוקים שהכרנו. המעבר הזה מכתיבת הקוד לפתרון בעיות באמצעות חשיבה מדויקת ככל האפשר, הנחיות ל-AI, עיצוב מסכים והעלאתם כטיוטות עיצוב לבינה, כל אלו הם חלום שמתממש. משמעותם הפשוטה היא דמוקרטיזציה של עולם פיתוח התוכנה.
והאפשרויות החדשות הללו מאפשרות עכשיו גם לאנשים ללא רקע תכנותי או היכרות והבנה בקוד, להגשים את רעיונותיהם - על ידי יצירה של תוכנות מקוונות, אפליקציות או כלים שונים, באמצעות כלים בינתיים וטכנולוגיים, המופעלים על ידי אדם ולידו בינה מלאכותית, שמקבלת ומבצעת הוראות.
אז המרחק, שבעבר היה גדול מאוד, בין הרעיון למימושו, תלוי עכשיו במשתמש ורק בו. כלים רבים לקידוד מבוסס פרומפטים יש כיום והם משתכללים מיום ליום. המוח האנושי יידע להנפיק מהם גם שיפורים אישיים ומרהיבים לחיים המודרניים וגם כלים חדשים ומעולים לשימוש בעתיד.
הנה הארטיפקט של קלוד, שאחרי קידוד ניתן לשתף את יצירתכם ב-Publish לאחרים:
https://youtu.be/vUdNaAAc4FY
שיעור תכנות ללא תכנות בכלי Lovable:
https://youtu.be/gqsZGxuymTk?long=yes
Websim.ai הוא כלי קוד שמשלב את העיצוב בקידוד וניתן לתכנת בו ללא תכנות:
https://youtu.be/HCw4jCbLgMY
Replit הוא כלי שבו ניתן לקודד גם בסמארטפון:
https://youtu.be/Cmq3TrS3ccU
כלי קוד מבוססי אינטליגנציה מלאכותית:
https://youtu.be/3cVJxRka4yM
השוואה של 3 מודלי שפה LLMs במהירות יצירת קוד למטלה זהה:
https://youtu.be/_JS-LkBrsk8
יישום של תוכנה שפותחה כך, ללא כתיבת קוד:
https://youtu.be/lkom9ufvxD4
איך ChatGPT בניתוח קוד? (עברית)
https://youtu.be/Z46pqHFuKHs
רפליט הוא כלי קוד בינתי מתקדם יותר:
https://youtu.be/FrMy3Bq7TZA
מדריך מתחילים לתכנות עם Cursor AI:
https://youtu.be/ocMOZpuAMw4?long=yes
ומדריך לעבודה עם Windsurf:
https://youtu.be/4nCMdQadE08?long=yes
מהם GIT וניהול גרסאות ומה חשוב בזה?
מערכת גיט (Git) היא מערכת ניהול גרסאות מבוססת תוכנה. השימוש בה מאפשר למתכנתים שונים ואף רבים לעבוד בצוות על פרויקט משותף, לצפות בשינויים שבו ולנהל את הגרסאות שלו באופן חכם.
יתרונה הגדול הוא באחסון, מעקב, ברירה וגיבוי של גרסאות, בדרך הארוכה לפיתוח גרסת תוכנה שלמה וסגורה. על אף שהיא משמשת כיום בעיקר אנשי תכנות, גיט יודעת לנהל לא רק קבצי תוכנה, אלא גרסאות של כל סוג אפשרי של קבצים ומסמכים.
גיט הייתה עם השנים לכלי חובה למפתחי תוכנה. בשנת 2018 מצא סקר שכמעט 90% מהמתכנתים השתמשו בגיט. כיום משתמשים בכלי הזה מפתחים באינספור סטארטאפים, תאגידים וחברות ענק בינלאומיות. בין המשתמשים ניתן למצוא מחברות הזנק בתחילת דרכן ועד מפלצות תוכנה כמו גוגל, מיקרוסופט, טוויטר ועוד.
בכל החברות הללו השימוש העיקרי בגיט הוא לצורך שמירה על קוד המקור של פיתוחי התוכנה.
ההצלחה של גיט נבעה מכך שהיא אפשרה ואפילו עודדה לחבר למאגר מרכזי ענפים נפרדים רבים, שיכולים לפעול באופן שהוא לגמרי בלתי תלוי. היא מאפשרת חיבור מהיר, יעיל ופשוט להפליא ביניהם. ועדיין, החידוש בגיט הוא שבניגוד למערכות ניהול גרסאות אחרות, היא שומרת את התכנים המלאים של הקבצים.
עם השנים הוקמו חברות רבות סביב אירוח מקוון של גיט. כיום השליטה בעולם הגיט היא בידיהם של ממשקי גיט מבוססי אתרים, עם אירוח וניהול קוד מקוון, כשהמרכזית שבהן היא חברת האירוח המסחרית והמובילה GitHub.
#מקור המערכת
Git פותחה לראשונה בשנת 2005, כשמפתח מערכת ההפעלה Linux, לינוס טורבאלדס, החליט לפתח במהירות מערכת ניהול גרסאות חדשה. מטרתו הייתה לשמור על פיתוח ליבת מערכת לינוקס.
לפיכך נעלם האיש לשבוע, הקדיש עצמו לפיתוח מאפס של GIT, מערכת חדשה ומהפכנית לניהול גרסאות. בעשורים שאחרי כן הפכה גיט למובילת עולם ניהול הגרסאות בעולם הפיתוח.
#איך גיט עובדת?
גיט הוא מאגר שכל שינוי המבוצע בפרויקט מעודכן אליו. למאגר הזה נקרא "ריפוזיטורי" (Repository).
הריפוזיטורי, אותו מאגר מרכזי, עוקב אחרי השינויים בקבצי הקוד של פרויקט הפיתוח. כל שינוי בקוד יוצר "שיגור" (Commit), המעודכן מיידית אל הריפוזיטורי. ביחד עם כל שינוי כזה, שעשו מפתחים ותורמים בפרויקט, מופיע תיאור קצר שמפרט את השינוי ומי המפתח שאחראי לו.
כך מאפשרת לנו גיט לעבוד בצוות. כל אחד מהמפתחים תורם את חלקו ויש לו רפוזיטורי משלו. כלומר, לכל אחד מהתורמים לפרויקט יש מאגר משלו ומעליהם יש מאגר מרכזי, שכל המאגרים האישיים יסתנכרנו מולו.
כשאחד המפתחים או המפתחות משלימים או מממשים תכונה (Feature), אופרציה מסוימת, יום עבודה או שלב בפיתוח, הם מבצעים שיגור של השינויים שהצטברו במאגר האישי שלהם, אל המאגר המרכזי, בו מתרכזים בסופו של דבר כל השינויים של כולם.
#יתרונותיה
את יתרונות הגיט אנו מזהים כשמתרחש המקרה הלא נעים שפרויקט משתבש ויש צורך לשוב אל גרסאות ישנות יותר. החזרה לשם בזכותה היא מהירה ופשוטה מאוד ואז מבינים כמה חשוב היה כל שיגור, או Commit שנעשה במהלך הפיתוח.
לפני הכל וגם למתכנת בודד, גיט מאפשרת לעקוב אחרי ההיסטוריה של הפיתוח ולזהות את הנקודה והבעיה בקוד, שבה הפסיק פיצ'ר מסוים לעבוד. באותה צורה ניתן למצוא היכן נולד באג מסוים שפספסנו ולתקנו במהירות יחסית.
היכולת הזו של מפתח לעבוד מול המאגר שלו ולאחר התקדמות לשלוח את התיקונים למאגר המשותף, היא שמאפשרת לשתף קוד אחד עם השני, תוך כדי עבודה עצמאית באזור שלהם.
נוצרת כאן כפילות מסוימת, שנותנת יתרון לניהול באמצעות גיט. המאגר המשותף מאפשר שיתוף מצוין. אך הוא נותן גם בקרת כניסה של כל פיתוח, כך שהפיתוחים הטובים של כל ענף בפיתוח עולים למאגר העיקרי ורק הם. כל אחד יכול לראות את השינויים של כל אחד אחר ולהשתתף בתהליך הבקרה על הביצועים וברירה של הפיתוחים המוצלחים יותר.
בעזרת גיט מתכנתים בצוות יכולים לתקשר ביניהם על הפרויקט, בצורה א-סינכרונית, כלומר לא בשיחה רגילה אלא במסרים שכל אחד מגיב עליהם בזמן המתאים לו. בדרך זו ניתן להחליף רעיונות ודברים על התכונות והפיצ'רים שעליהם עובד כל אחד, מבלי שנדרש לתהליך הפיתוח מנהל מרכזי.
כך ניתן לסנכרן, ללא צורך בתכנון ושליטה מראש, את העבודה בין אלפי מתכנתים שמצויים בכל פינות העולם. כך עובדים כולם בהרמוניה פונקציונלית, על פרויקט אחד ומרכזי - מבלי שמישהו יצטרך לפקד על כל צבא המתכנתים והמפתחים העצמאיים הזה.
הנה הסבר של git (עברית):
https://youtu.be/ep5JBalCD_g
וכך מתחילים לעבוד עם גיט (עברית):
https://youtu.be/oZWUOv6uoo4
למה כדאי ללמוד תכנות?
תכנות (Programming) הוא כתיבת קוד לתוכנה, או למה שאנו מכנים "תוכנות". בתכנות בונה המתכנת את התוכנה. לתכנות משתמש המתכנת בשפות תוכנה שונות.
לימוד תכנות הוא סוג מעולה של ספורט מנטלי ולוגי. הוא יכול לסייע ללומדים לשפר את ההיגיון שלהם ולהעצים את הכישורים שלהם ובכך הוא נותן כלים מעולים לחיים - גם למי שלא יהפכו למתכנתים.
לימוד התכנות משפר את החשיבה, היצירתיות, יכולת התכנון, הגילוי והסקרנות של המתכנת ולומד התכנות. יש יתרון אדיר לכל ילד וילדה שלומדים לתכנת וליצור באמצעות הטכנולוגיה והמחשבים. אבל הראשון שבהם אינו קשור אפילו במחשבים, אלא בכלי החשיבה, התכנון, הלוגיקה והסקת המסקנות (ואלה רק חלק), שהתכנות מלמד.
רבים ממייסדי החברות המצליחות והטובות בעולם למדו בילדותם תכנות, מה שפילס להם דרך לאחד התחומים המדהימים ביותר ביכולת ההשפעה שלו על העולם. מתכנת בודד יכול כיום לשנות את העולם. תשאלו את מארק צוקרברג, מייסד פייסבוק...
כיום, גם בתור ילדים, תוכלו להצטרף ולהתנסות בכתיבת קוד. זאת, אגב, גם אם אינכם מתכוונים ללמוד תכנות לעומק. תוכלו לעשות זאת באמצעות הצטרפות ל"שעת הקוד" - סוג של אירוע עולמי המאפשר לילדים להתנסות בשעה של תכנות וכתיבת קוד. כך תוכלו לחוות משהו מעולם ההייטק והחדשנות הטכנולוגית, אבל בלי להסתבך ובדרך של הנאה וחוויה. מארגני שעת הקוד מספרים שמעל 100 מיליון תלמידים מרחבי העולם השתתפו באירוע, מאז החלו אירועי שעת הקוד בעולם.
הנה ילד בן 12 שלמד לתכנת מספר על הדרך בה למד והפך למתכנת מקצועי (מתורגם):
מה שבתי הספר, וזה חמור - לא מלמדים ילדים (מתורגם):
https://youtu.be/nKIu9yen5nc
התכנות משנה את העולם (עברית):
https://youtu.be/6_RFZr9mWvc
הסברים לטוב שבתכנות (בעברית):
https://youtu.be/hyCqL_lLDOQ
מה היתרון של כלי פיתוח קוד מבוססי AI?
מחשב מתכנת לבדו? - באופן מסוים כן. כי כלי קוד מבוססי בינה מלאכותית (AI-based code tools) מאפשרים לשלב את הרעיון או המומחיות האנושית עם היכולות של הבינה המלאכותית, כדי לפתח תוכנה ולעשות זאת ללא קידוד של המשתמש או באמצעות שיתוף פעולה בין המשתמש ל-AI.
קידוד מבוסס AI מתבסס על בינה מלאכותית ככותבת הקוד. כתיבת הקוד מתבססת על מודל שפה שאומן על נתוני דאטה עצומים ולמד קידוד.
המשתמש מאפיין את המוצר, אם זה אתר אינטרנט, תוכנה או אפליקציה לטלפון ומתאר אותו באמצעות פרומפט, הנחייה שהוא כותב לבינה היוצרת בלשון טבעית, כלומר שפה רגילה, שפת יום יום וללא צורך בידע בתכנות.
החיבור בין הרעיון והשכל האנושי ובין האינטליגנציה המלאכותית מאפשרים ניהול וביצוע משימות פיתוח, בשיתוף פעולה ועצמאות גם יחד.
באמצעות תכונות של AI מקודד ניתן לתאר ל-AI את המטרה, לקבל קוד, להנחות אותה כיצד להתקדם בפתרון בעיות או באגים בקוד ולהוביל ביחד לקוד איכותי ולמימוש הרעיון.
ה-AI המקודד מודע לפעולות המשתמש בזמן אמת ומציע יתרונות אדירים. הוא מסוגל לערוך קבצים מרובים במהירות אדירה, להציע פקודות, לזהות בעיות ולנפות באגים.
כלי הקוד המשובח "Windsurf AI", למשל, מפעיל סוכני AI מובנים, יחד עם מעין "טייסי משנה" מונעי בינה מלאכותית, שמטרתם להטעין את הקוד ולהפוך את הקידוד למהיר ואינטואיטיבי יותר.
בעצם, Windsurf ודומיו, דוגמת Cursor AI שהיה חלוץ הכלים הללו, הם מעין סביבת פיתוח (IDE) מהדור החדש, המשפרות את הפיתוח בעזרת אוטומציה חכמה ומציעות עריכת קוד בסביבה מרובת קבצים. וינדסרף עושה זאת, בין השאר, בעזרת כלי שנקרא Cascade ומצטיין במודעות עמוקה לקונטקסט, ההקשר הכל כך בסיסי ומרכזי בבינה המלאכותית היוצרת (Generative AI).
כלי נוסף וקל הרבה יותר הוא Websim AI, המאפשר לתאר אתר או אפליקציה, או סתם לתת שם דומיין מדומה, והיא יוצרת אותם. מכאן אפשר להנחות אותה בצעדים, איטרציות, מה שמאפשר לדייק אותה, לשפר, לשדרג ולבנות הלאה.
הנה כלי קוד מבוססי אינטליגנציה מלאכותית:
https://youtu.be/3cVJxRka4yM
AnyChat מצויד בדיפסיק וסמבה נובה לקידוד פשוט:
https://youtu.be/7BIVWQnAOLk?t=2m54s
השוואה של 3 מודלי שפה LLMs במהירות יצירת קוד למטלה זהה:
https://youtu.be/_JS-LkBrsk8
השוואת 5 כלי קוד מובילים והמנצח המפתיע:
https://youtu.be/WVhJSUtGbYM
יישום של תוכנה שפותחה כך, ללא כתיבת קוד:
https://youtu.be/lkom9ufvxD4
Websim.ai הוא כלי קוד קל מאוד וקסם ללא תכנות:
https://youtu.be/HCw4jCbLgMY
איך ChatGPT בניתוח קוד? (עברית)
https://youtu.be/Z46pqHFuKHs
רפליט הוא כלי קוד בינתי מתקדם יותר:
https://youtu.be/FrMy3Bq7TZA
לקודד אפשר גם בסמארטפון:
https://youtu.be/Cmq3TrS3ccU
מדריך מתחילים לתכנות עם Cursor AI:
https://youtu.be/ocMOZpuAMw4?long=yes
ומדריך לעבודה עם Windsurf:
https://youtu.be/4nCMdQadE08?long=yes
מהם פרמטרים וארגומנטים בקוד התוכנה?
נהוג לומר שהשם הנרדף של "ארגומנטים" הוא "משתנים" או גם "פרמטרים".
אז באמת מתכנתים מבלבלים לא פעם בין פרמטרים וארגומנטים וזה בסדר, כי ההבדל ביניהם הוא בעיקרו סמנטי, עניין של הגדרה ולא של מהות שיכולה לפגוע בעבודה.
אבל בכל זאת... כשאנו מגדירים פונקציה, נרצה להגדיר לה את הנתונים שהיא תצפה לקבל בעת קריאה וזימון שלה.
#דוגמה
למשל כאן, ניתן לראות ש-x הוא פרמטר, בעוד ש-y הוא ארגומנט.
int f(struct S *x);
return f(&y);
#אז בהגדרה אלה יהיו פרמטרים.
כלומר, פרמטרים (משתנים) מתקבלים על ידי הפונקציה כשמגדירים אותה. כל ארגומנט מופיע בצורה של סוג (type) ואז שם. כך יהיו למשל ארגומנטים מסוג int שבהם יופיעו מספרים שלמים, מסוג double שיהיה בו מספר עשרוני, או String עם מחרוזת טקסט.
#בקריאה לפונקציה אלה ארגומנטים
כשאנו מריצים פונקציה, היא מבצעת פעולה מסוימת. אלא שלא תמיד נרצה שהיא תעשה בדיוק את אותה פעולה בדיוק, או עם אותם נתונים. כך למשל, אם נרצה להשתמש בפונקציה כמו printInBold, כדי להדגיש מחרוזת טקסט בכתב Bold, נרצה לספק בכל פעם מחרוזת טקסט אחרת. זה בדיוק מה שהארגומנט (Argument) מאפשר לנו. כשנקרא לפונקציה, נכניס באמצעותו משתנה לתוך הסוגריים שלה וכך היא תבצע את הפעולה על המשתנה הזה.
כמובן שלא רק מחרוזות יכולות להיכנס כארגומנטים. לארגומנטים ניתן להכניס גם משתנים, ספרות וכדומה.
ארגומנטים, אם כן, הם פרמטרים שפונקציה מצפה לקבל דה פקטו. באמצעות הקוד שתוכנת בה לביצוע היא תייצר את ה-return שלה ממנו, או תדפיס אותו בפקודת print לטרמינל.
#לכן תיאורטית...
ה"פרמטרים" שההגדרנו בפונקציה עצמה, אלה "פרמטרים פורמליים" (Formal Parameters). לעומתם, ה"פרמטרים" שנשלחים לפונקציה הקיימת, נקראים "פרמטרים אקטואליים" (Actual Parameters) והם הארגומנטים.
#ומעשית...
המונח "פרמטרים" יכול לשמש למעשה בכדי לתאר, גם את ה"פרמטרים" וגם את ה"ארגומנטים".
הנה ארגומנטים בפייתון:
https://youtu.be/tQ7it_vlptA
ופרמטרים וארגומנטים בשפת Javascript:
https://youtu.be/G4lZSWssoqA
מהי פונקציה בתכנות?
מכירים את זה שאתם עושים שוב ושוב, כל יום או כל כמה שעות את אותה פעולה וזה נראה לכם לא הגיוני?
גם מתכנתים לא אוהבים לעשות שוב ושוב את אותה פעולה. לכן הם למשל משתמשים בלולאות (Loops). אבל יש מרכיב שחוסך עוד יותר עבודה וכתיבת קוד מיותר. כי מתכנתים אוהבים לשמור את הקוד שלהם DRY, קיצור של "don’t repeat yourself".
לרכיב מקצר העבודה הזה קוראים פונקציה (Function). הפונקציה היא פלא של ייעול. כל מטרתה היא "לקודד פעם אחת, להשתמש הרבה פעמים".
#אבל מהי פונקציה?
פונקציה היא קוד שמבצע פעולה. הרעיון בכתיבת פונקציה הוא לכתוב פעם אחת קוד והוא יחליף את הצורך לכתוב פעולות דומות שוב ושוב, במקומות שונים בתוכנה.
דמייני שאת מתכנתת פעם אחת קטע של קוד ואחרי כן קוראת לו בתוכנה, בכל פעם שצריך שהוא יבצע את תפקידו.
מדהים לא?
ואכן, פונקציה בתכנות היא מרכיב פשוט אבל משמעותי מאוד, המקל את הקידוד ואת הארגון הנכון של תכנית מחשב. כך הוא מקצר את הקוד, חוסך זמן ומקטין את האפשרויות לשגיאות.
כמו במכשיר מיקרוגל או במכונית, בפונקציה משתמשים בכל פעם שרוצים לבצע את הפעולה שהיא יודעת ותוכנתה לעשות. מכונית תסיע אותנו ומיקרו יחמם לנו או יפשיר את האוכל. כל אחד יודע כמה הם שיפרו את חיינו לעומת העולם שלפני המכונית או המיקרוגל.
במילים פשוטות, הפונקציה היא קטע קוד המבצע פעולה, Action כלשהי. המתכנתים כותבים את הפונקציה פעם אחת ויכולים לקרוא לה בקוד מתי שרק ירצו.
#שיטת התכנות של פונקציות
אז השיטה היא פשוטה - מגדירים ומשתמשים. כלומר, מתכנתים פונקציה ונותנים לה שם. מעתה נוכל להשתמש בה בקוד, כלומר לקרוא לה בכל פעם שנצטרך שהיא תבצע את תפקידה.
#איך פונקציה פועלת?
בקריאה לפונקציה, לעתים נצטרך לתת לה נתונים. בשביל זה לפונקציה יש סוגריים. בתוכן נצרף לה לעתים פרמטרים, כלומר נתונים מסויימים שבהם היא תשתמש כדי לחשב ולבצע את מה שהיא תוכנתה לעשות.
כשהפונקציה תסיים "לעבוד" (וזה יהיה מאוד מהיר כמובן) היא תחזיר את הפלט להמשך התכנית, או תבצע פעולה כמו הדפסה או הפעלה של פונקציות אחרות.
#דוגמה לפונקציות בחיים
נסביר את זה רגע בדימוי מהחיים: דמיינו שאתם בפסטיבל עם המון אנשים ואיבדתם את החברה שלכם. אתם ניגשים לבמה ומבקשים להכריז שאתם ממתינים לה. אומרים לכם לדבר עם שמעון, הכרוז של הפסטיבל. הוא בחור נחמד וענייני ומבקש מכם מידע, דאטה. במילים פשוטות - הוא שואל איך קוראים לה ומה שמכם. כשאתם נותנים את הפרטים הללו, שמעון ממהר להכריז במיקרופון "ברכה לוי, בואי ליד הבמה! יוסי ושרון ממתינים לך". דקות אחר כך ברכה מגיעה אליכם ליד הבמה.
סוף טוב הכל טוב!
כלומר, שמעון הוא פונקציה שיודעת להכריז על אבדות. הוא צריך פרמטרים, דאטה הכרחי שבדוגמה הזו הוא שם הגברת ושמות הממתינים לה. כשהוא מבצע את הפעולה שלו, המשימה מתבצעת. אם הוא היה מחזיר תשובה, כמו" ברכה כבר בבית" זה כנראה היה ארגומנט.
#יתרונות הפונקציה
פונקציה מקצרת את הקוד, חוסכת מאוד בזמן פיתוח ומונעת באגים. במילים פשוטות, הרעיון בפונקציה "קודד פעם אחת, השתמש הרבה פעמים!"
איך זה עובד?
דמיינו שהייתם צריכים גם לתקן בעצמכם את המכונית, גם להכין אוכל, גם לבנות את הבית שלכם, לטפל וללמד את הילדים, לתקן את החשמל, את הביוב וכל הדברים שצריך לעשות. אולי זה אפשרי אבל זה לא חכם, נכון?
קוד ללא פונקציות הוא כמו עולם בלי בעלי תפקידים שיודעים היטב כיצד למלא משימות מוגדרות, בלי אנשי מקצוע שהם מומחים בתפקידם ובלי מכשירים שעושים לנו את החיים קלים ונוחים.
זה עולם מסובך ומבולגן. המתכנתים קוראים לקוד כזה "קוד ספגטי". מרוב שהוא עמוס ומנוהל לא נכון, לא מוצאים בו את הידיים והרגליים...
חישבו על הפונקציה כסוג של מכונה, מתקן או חלק בקוד. כשנותנים להם סוג של אינפוט, מידע, הם יודעים לבצע במידע הזה משימה שהוגדרה להם מראש בתכנות.
פעולה כזו של פונקציה יכולה לפעמים לתת לנו משהו בחזרה, ערך או ערכים מוגדרים. ערך כזה בדוגמה שלנו הוא כמו תשובה ששמעון יכול לתת לנו, שברכה נמצאה וממתינה לנו במקום כלשהו.
לעתים פונקציה יכולה לשנות את הדאטה שנתנו לה ולפעמים לקבל החלטה על בסיס הדאטה הזה. בשפות מונחות עצמים יש בדרך כלל סוגריים אחרי שם הפונקציה. כשמכריזים על הפונקציה, כלומר כשמהמתכנתים מציגים אותה לראשונה, הם מגדירים שבסוגריים האלה יוכנס הדאטה לצורך הביצוע. בכך הם מגדירים באמצעות "פרמטרים" מה יהיה הדאטה המצופה, כדי שהפונקציה תעשה את תפקידה.
כשקוראים לפונקציה, זה כמו למלא טופס. לתוך הסוגריים, מכניסים את הפרמטרים, האינפוט, את המידע שהפונקציה רוצה (כמו ששמעון שואל "איך קוראים לילדה שנעלמה לכם?")
אחרי ביצוע הפעולה, הפונקציה תחזיר את הארגומנט. כלומר, את התוצאה או המידע שביקשנו ממנה לייצר מהפרמטרים שסיפקנו לה בקריאה.
בשפות תכנות נהוג שהסוגריים נכללות בפונקציה בכל מקרה, גם אם אין מידע, כלומר פרמטרים שהפונקציה דורשת כדי למלא את תפקידה, יהיו שם סוגריים ריקות.
ואגב, בשפות התכנות השונות יש פונקציות מובנות, שנכתבו מראש, ברמת השפה כולה. ניתן להשתמש בהן מראש, מבלי שהמתכנת יצטרך לפתח בעצמו או בעצמה פונקציות לדברים שמתכנתים צריכים הרבה. יש גם ספריות שלמות, שאותן תוכלו לייבא לקוד שלכם ולחסוך זמן פיתוח. הן כוללות פונקציות שימושיות, בתחום בו הספריה שימושית.
הנה סרטון שמסביר את הפונקציה בפשטות:
https://youtu.be/3JIZ40yuZL0?end=2m40s
הפונקציה לתלמידי תכנות שפת פייתון (עברית):
https://youtu.be/o0wyYsNbJeY
והסבר הפונקציות ב-javascript (עברית):
https://youtu.be/c7mqY6QtdQQ
מה זה האקתון?
האקתון (Hackathon) הוא סוג מיוחד של אירוע בהייטק, בו מתכנסים יחד אנשי טכנולוגיה, מתכנתים ואנשי מוצר ותוכן, לעבודה משותפת על פרויקטים טכנולוגיים מכווני נושא ספציפי.
בהרבה המקרים מטרת ההאקתון תניה לפיתוח של תוכנה חדשה או בשביל לרכז מאמץ ולהשלים או לשפר תוכנה, רעיון או טכנולוגיה קיימת.
בהאקאתון, בשונה מכנס למשל, לא יהיו בדרך כלל הרצאות או שיחות רבות. השיטה תהיה של צוותים קטנים שמתרכזים בעבודה, כשכל צוות שוקד על פתרון לבעיה המהווה חלק מהפיתוח הכללי שלשמו נועד ההאקאתון כולו.
האקאתון טיפוסי נמשך יום עד כמה ימים ספורים. התוכנות או הפיתוחים שמפותחים בהאקאתונים הם פעמים רבות "תוכנה חופשית" או קוד פתוח.
בהאקאתון שותפים בדרך כלל מתכנתים, מעצבי UX, מומחי תוכן, אנשי נתונים ובק-אנד ואנשים העוסקים בתחומים בהם עוסק הפיתוח.
המילה "האקתון" באנגלית היא הלחם של המילים "האק", סוג של תכנות יצירתי ו"מרתון", כלומר משמעותה "מרוץ תכנות יצירתי".
הנה האקתון אופייני לטכנולוגיית בינה מלאכותית וצ'יפים (עברית):
https://youtu.be/NlDryEJLT9k
מהו בעצם האקתון? (עברית):
https://youtu.be/lGlBmk2jXkY
האקתון לקידום מטרות סביבתיות אנרגטיות (עברית):
https://youtu.be/kGiskvG45q4
האקתון של בני נוער בתל אביב (עברית):
https://youtu.be/34aeWiQh0N8
האקתון לפתרון בעיות המים (עברית):
https://youtu.be/nnBa4rE-biE
ובחיוך - האקתון צרות להייטק (עברית):
https://youtu.be/n04feEZV8S8

אם שאלתם את עצמכם פעם מה זה תִּכְנוּת (Programming או Coding) הרי שאתם לא לבד.
תכנות הוא סדרת הוראות שמגדירות התנהגות. על תוכנית מחשב להיות טובה, אלגנטית, יעילה ונוחה לתחזוקה.
אבל התייחסות כזו היא בעיקר לכתיבת הקוד ונוטה להיות כללית מדי. אנו רואים בתכנות ביטוי של לוגיקה. בכלל, לצורך תכנות, הליך שכולל גם תכנון והבנה מעמיקה ומגוונת בתחום הפיתוח, נדרשת מומחיות בלא מעט נושאים, כולל בתחום היישום, באלגוריתמיקה וכמובן וככל הנראה בראש ובראשונה - בעולם של הלוגיקה.
התחום הזה דומה למתמטיקה ולכן לא מעט אנשים אומרים שתכנות הוא מתמטיקה יישומית. כי אם עולם הלוגיקה כולל את המתמטיקה והתכנות, המתמטיקה היא הצד התיאורטי שלו, בעוד שהתכנות הוא הצד המעשי, הפרקטי של הלוגיקה.
חברות גם מניחות שמתמטיקאים טובים יהיו מתכנתים ומהנדסי תוכנה מצוינים וגם אם מתמטיקה ברמה גבוהה לא הכרחית לתכנות, זה אכן בדרך כלל כך.
כבר שנים שמתנהל ויכוח על מהות התכנות - האם כתיבה של תכניות מחשב טובות היא יותר הנדסה, יותר אומנות, או אמנות של ממש. כנראה שפיתוח כולל את שלושת העולמות הללו ושמתכנת מצוין הוא גם בעל מקצוע טוב, גם בעל יכולת הנדסית משמעותית וגם אמן של קוד.
ואכן, בעולם של המתכנתים יש אבחנה מסוימת בין programming, בעברית תִּכְנוּת, שזו דרך החשיבה לפתרון בעיות ברמה היותר מופשטת וייתכן אף בלי ידע בשפת תוכנה ספציפית, לבין coding שזה קִידּוּד והוא יותר החלק הטכני יותר של כתיבת הקוד ומחייב ללמוד את התחביר, ה-Syntax של השפה שבה ייכתב הקוד שלך.
רבים בתחום אומרים שאם למדת "פרוגרמינג", כלומר תכנות, יהיה לך קל מאוד ללמוד "קודינג", שזה קידוד. זו הסיבה שלמתכנתים אמיתיים כל כך קל ללמוד שפות תכנות חדשות וזו כנראה גם הסיבה שמנהיגי העולם החדשים הם מי שהיו מתכנתים מצוינים. התכנות ברמה הגבוהה שלו מסייע לבנות יכולת מנטלית גבוהה שדרושה להנהיג ולפרוץ למקומות חדשים.
להיכרות עם עולם התיכנות היכנסו לתגית "תכנות".
הנה העולם של המתכנתים (מתורגם):
https://youtu.be/tSysNQFUf2g
בעולם הפיתוח יש לא מעט שמבחינים בין מתכנת programmer למקודד coder:
https://youtu.be/CIRGjwYgdT4
אפילו בסמארטפון אפשר לקודד:
https://youtu.be/Cmq3TrS3ccU
סרט יותר ארוך על עולם התיכנות:
https://youtu.be/dU1xS07N-FA?long=yes
וראיון עם איש מחשבים על תכנות בעולם ההייטק (עברית):
https://youtu.be/MWuPuu2c1Y8?long=yes

כלי מחקר מבוססי בינה מלאכותית ג'נרטיבית הם סוג של סוכני AI משוכללים (AI agents) המיועדים לחקר וארגון המידע שאנו צוברים בתהליך המחקרי.
מבין מודלי השפה הגדולים (LLMs) בולטים קלוד ו-Chatgpt שפותחו לכלים מולטי-מודאליים. ככאלה הם מתאפיינים ביכולת ללמוד דברים מטקסטים, תמונות, צילומי מסך ועוד ולשפר את הביצועים עם תוצאות בפלט הכולל טקסטים, קוד, אודיו, וידאו, תמונות והבנה מרחבית.
לצידם יש מודל שפה שהוא יותר מחקרי באופיו וכולל מנוע חיפוש. מדובר ב-Perplexity, כלי שהחל בהתבססות על דאטה מחקרי, בעיקר מ-Google Research. כשהפך להיות הצ'טבוט המחפש הראשון, הוא מתבסס על תוכן עדכני ורלוונטי שהוא מאתר באינטרנט בזמן אמת, עם עדיפות לתמציתיות ולנתוני אמת. בנוסף, פרפלקסיטי שומר על כללי הציטוט המדעי, נותן ציטוטים עם ציוני מקור, מנמק ומקשר את טיעוניו למקורות שעליהם התבסס ומהם שאב את המובאות והתשובות.
יש גם את NotebookLM של גוגל, מעין מחברת חכמה בצירוף שותף ללמידה, שמבין אתכם ועוזר להפיק את המרב מהחומר המחקרי או הלימודי. במקום לבזבז זמן על עבודה טכנית ומשעממת, מעלים אליו עשרות חומרים, כולל טקסטים בהעתק-הדבק, מאמרים, לינקים, כתבות וספרים ועד סרטוני יוטיוב והקלטות קוליות. הכלי, שמתבסס על Gemini 2.0, קורא, מבין ומנתח את כל המידע במהירות ובמקום שתבזבזו שעות על קריאת חומר וכתיבת סיכומים, הוא מייצר לכם בקלות סיכומים חכמים, תובנות, מדריכי למידה, צירי זמן ותשובות לכל שאלה. ניתן לצ'טט או ממש לשוחח עם המחברת כאילו היא עוזר אישי וקולי, לשאול שאלות שתרצו על החומר ולקבל תשובות מדויקות ומובנות.
מרשימה גם היכולת של NotebookLM, להפוך את הידע שטענתם אליו לפודקאסט וגם לשאול שאלות עם מיקרופון ולהיות שותפים מלאים לשיחה עם "המגישים". תארו לעצמכם שתוכלו לקחת את הסיכום שיהפוך להרצאה מוקלטת בקול אנושי לחלוטין, או לסרטון לימודי או מקצועי. זו למידה חווייתית, שיתופית ומעניינת הרבה יותר.
עוד כלי מחקר טובים הם עזרי כתיבת פרומפטים ומאגרי פרומפטים המסייעים לתקשורת יעילה עם מודלים גדולים של שפה. כלים כאלה הם חיוניים למגוון עצום של שימושים, כולל שלל אפשרויות מחקר, כתיבה והפקת תובנות מתוכן גולמי וממקורות בינתיים.
ברמה המדעית יש גם יש כלי בינתי, מעין מודל שפה גדול (LLM) בשם Consensus שהוא בעצם מנוע חיפוש אקדמי מבוסס בינה מלאכותית. הוא עצמו משתמש במודלי שפה גדולים (LLMs) כדי לאסוף, לנתח ולהנגיש מידע מדעי בצורה פשוטה ומדויקת. המנוע של "קונצנזוס" מנתח יותר מ-200 מיליון מאמרים מדעיים, מסכם אותם באופן תמציתי ומציג את הקונצנזוס המדעי, מה הדעה הכללית ביחס לשאלות מדעיות בנושאים שונים. לשם כך הוא משתמש בכלים כמו "Consensus Meter", בו רואים את התפלגות הדעות בשאלה המסוימת ולומדים על "מה חושב המדע" לגביה.
עוד שיטה שהוא נוקט היא "Pro Analysis". שימושיה העיקריים בחינוך ובמחקר הם בסיוע לסטודנטים ולמורים במציאת מאמרים רלוונטיים, יצירת סיכומים מותאמים לשואל, ניתוחים מהירים של ספרות מדעית, סינון מאמרים שלא עומדים בדרישות מדעיות מוגדרות (כמו מתודולוגיה, גודל מדגם או מובהקות סטטיסטית) והפקה של ציטוטים אוטומטיים ודוחות מותאמים.
הנה NotebookLM, כלי המחקר לטעינת חומרים מגוונים ומשימות עליהם (עברית):
https://youtu.be/_vML22ACIRs
הוא יכול לייצר אפילו פודקסט:
https://youtu.be/1jgpsGDUXW4
הצ'טבוט שמצטיין במחקר ובחיפוש - Perplexity (עברית):
https://youtu.be/1MkBWfurQL4
כלי AI מקצועי למחקר מדעי בסקירת ספרות ולמידה ממאמרים:
https://youtu.be/LBzrVEG5qsk
מארינר - סוכן AI והעוזר הגלובלי של גוגל:
https://youtu.be/WJnUWldjJQA?long=yes
הבן של גוגל וקלוד - הנה פרפלקסיטי ששילב את שני העולמות (עברית):
https://youtu.be/33nBpKRWMms?long=yes
כמה כלי מחקר מבוססי AI:
https://youtu.be/Rc9R7T8S1c8?long=yes
ומדריך לעבודה עם NotebookLM:
https://youtu.be/UG0DP6nVnrc?long=yes

בימי AI אלה, של פברואר 2025, נראה שאנו רואים את השינוי בכתיבת קוד בכלל ובתכנות של אפליקציות לסוגיהן בפרט.
וזה לא ממש תכנות, עם כתיבת קוד וחלוקה למסמכים שיוצרים תוכנה, אלא יותר תהליך של חשיבה וחלוקת הוראות. כולנו יכולים לחשוב על רעיון, לנסח אותו כפרומפט, אולי גם לדמיין ולצייר מסכים, להציגם ל-AI, לראות קוד ואת התוצאה, לאשר או להציע תיקונים, לשפר את המודל ולראות את התוצאה משתפרת.
גם אם זה נשמע בלתי אפשרי, זה בדיוק מה שהבינה היוצרת מאפשרת כיום, כמעט לכל אחד, כולל מי שלא למדו מעולם לקודד ולתכנת. אחד מגאוני ה-AI של הדור החדש, אנדריי קרפאטי (Andrej Karpathy), מסביר שכלי ה-GenAI משנים את אופן פיתוח התוכנה מהיסוד וקורא לזה “תכנות וייב” (Vibe Coding).
תכנות הווייב פירושו תכנות שלא בקוד אלא של מפתחים שמתרכזים ברעיונות הגדולים ונותנים ל-AI לטפל בשאר - מהקוד והאיטרציות (שפירושן שיפור וניסוי שוב ושוב), דרך הפרטים הטכניים, הטיפול בבסיס הנתונים (Database), ב-API ובהעלאת הכלי לאונליין (Deployment).
ומדובר בשינוי של כל החוקים שהכרנו. המעבר הזה מכתיבת הקוד לפתרון בעיות באמצעות חשיבה מדויקת ככל האפשר, הנחיות ל-AI, עיצוב מסכים והעלאתם כטיוטות עיצוב לבינה, כל אלו הם חלום שמתממש. משמעותם הפשוטה היא דמוקרטיזציה של עולם פיתוח התוכנה.
והאפשרויות החדשות הללו מאפשרות עכשיו גם לאנשים ללא רקע תכנותי או היכרות והבנה בקוד, להגשים את רעיונותיהם - על ידי יצירה של תוכנות מקוונות, אפליקציות או כלים שונים, באמצעות כלים בינתיים וטכנולוגיים, המופעלים על ידי אדם ולידו בינה מלאכותית, שמקבלת ומבצעת הוראות.
אז המרחק, שבעבר היה גדול מאוד, בין הרעיון למימושו, תלוי עכשיו במשתמש ורק בו. כלים רבים לקידוד מבוסס פרומפטים יש כיום והם משתכללים מיום ליום. המוח האנושי יידע להנפיק מהם גם שיפורים אישיים ומרהיבים לחיים המודרניים וגם כלים חדשים ומעולים לשימוש בעתיד.
הנה הארטיפקט של קלוד, שאחרי קידוד ניתן לשתף את יצירתכם ב-Publish לאחרים:
https://youtu.be/vUdNaAAc4FY
שיעור תכנות ללא תכנות בכלי Lovable:
https://youtu.be/gqsZGxuymTk?long=yes
Websim.ai הוא כלי קוד שמשלב את העיצוב בקידוד וניתן לתכנת בו ללא תכנות:
https://youtu.be/HCw4jCbLgMY
Replit הוא כלי שבו ניתן לקודד גם בסמארטפון:
https://youtu.be/Cmq3TrS3ccU
כלי קוד מבוססי אינטליגנציה מלאכותית:
https://youtu.be/3cVJxRka4yM
השוואה של 3 מודלי שפה LLMs במהירות יצירת קוד למטלה זהה:
https://youtu.be/_JS-LkBrsk8
יישום של תוכנה שפותחה כך, ללא כתיבת קוד:
https://youtu.be/lkom9ufvxD4
איך ChatGPT בניתוח קוד? (עברית)
https://youtu.be/Z46pqHFuKHs
רפליט הוא כלי קוד בינתי מתקדם יותר:
https://youtu.be/FrMy3Bq7TZA
מדריך מתחילים לתכנות עם Cursor AI:
https://youtu.be/ocMOZpuAMw4?long=yes
ומדריך לעבודה עם Windsurf:
https://youtu.be/4nCMdQadE08?long=yes

מערכת גיט (Git) היא מערכת ניהול גרסאות מבוססת תוכנה. השימוש בה מאפשר למתכנתים שונים ואף רבים לעבוד בצוות על פרויקט משותף, לצפות בשינויים שבו ולנהל את הגרסאות שלו באופן חכם.
יתרונה הגדול הוא באחסון, מעקב, ברירה וגיבוי של גרסאות, בדרך הארוכה לפיתוח גרסת תוכנה שלמה וסגורה. על אף שהיא משמשת כיום בעיקר אנשי תכנות, גיט יודעת לנהל לא רק קבצי תוכנה, אלא גרסאות של כל סוג אפשרי של קבצים ומסמכים.
גיט הייתה עם השנים לכלי חובה למפתחי תוכנה. בשנת 2018 מצא סקר שכמעט 90% מהמתכנתים השתמשו בגיט. כיום משתמשים בכלי הזה מפתחים באינספור סטארטאפים, תאגידים וחברות ענק בינלאומיות. בין המשתמשים ניתן למצוא מחברות הזנק בתחילת דרכן ועד מפלצות תוכנה כמו גוגל, מיקרוסופט, טוויטר ועוד.
בכל החברות הללו השימוש העיקרי בגיט הוא לצורך שמירה על קוד המקור של פיתוחי התוכנה.
ההצלחה של גיט נבעה מכך שהיא אפשרה ואפילו עודדה לחבר למאגר מרכזי ענפים נפרדים רבים, שיכולים לפעול באופן שהוא לגמרי בלתי תלוי. היא מאפשרת חיבור מהיר, יעיל ופשוט להפליא ביניהם. ועדיין, החידוש בגיט הוא שבניגוד למערכות ניהול גרסאות אחרות, היא שומרת את התכנים המלאים של הקבצים.
עם השנים הוקמו חברות רבות סביב אירוח מקוון של גיט. כיום השליטה בעולם הגיט היא בידיהם של ממשקי גיט מבוססי אתרים, עם אירוח וניהול קוד מקוון, כשהמרכזית שבהן היא חברת האירוח המסחרית והמובילה GitHub.
#מקור המערכת
Git פותחה לראשונה בשנת 2005, כשמפתח מערכת ההפעלה Linux, לינוס טורבאלדס, החליט לפתח במהירות מערכת ניהול גרסאות חדשה. מטרתו הייתה לשמור על פיתוח ליבת מערכת לינוקס.
לפיכך נעלם האיש לשבוע, הקדיש עצמו לפיתוח מאפס של GIT, מערכת חדשה ומהפכנית לניהול גרסאות. בעשורים שאחרי כן הפכה גיט למובילת עולם ניהול הגרסאות בעולם הפיתוח.
#איך גיט עובדת?
גיט הוא מאגר שכל שינוי המבוצע בפרויקט מעודכן אליו. למאגר הזה נקרא "ריפוזיטורי" (Repository).
הריפוזיטורי, אותו מאגר מרכזי, עוקב אחרי השינויים בקבצי הקוד של פרויקט הפיתוח. כל שינוי בקוד יוצר "שיגור" (Commit), המעודכן מיידית אל הריפוזיטורי. ביחד עם כל שינוי כזה, שעשו מפתחים ותורמים בפרויקט, מופיע תיאור קצר שמפרט את השינוי ומי המפתח שאחראי לו.
כך מאפשרת לנו גיט לעבוד בצוות. כל אחד מהמפתחים תורם את חלקו ויש לו רפוזיטורי משלו. כלומר, לכל אחד מהתורמים לפרויקט יש מאגר משלו ומעליהם יש מאגר מרכזי, שכל המאגרים האישיים יסתנכרנו מולו.
כשאחד המפתחים או המפתחות משלימים או מממשים תכונה (Feature), אופרציה מסוימת, יום עבודה או שלב בפיתוח, הם מבצעים שיגור של השינויים שהצטברו במאגר האישי שלהם, אל המאגר המרכזי, בו מתרכזים בסופו של דבר כל השינויים של כולם.
#יתרונותיה
את יתרונות הגיט אנו מזהים כשמתרחש המקרה הלא נעים שפרויקט משתבש ויש צורך לשוב אל גרסאות ישנות יותר. החזרה לשם בזכותה היא מהירה ופשוטה מאוד ואז מבינים כמה חשוב היה כל שיגור, או Commit שנעשה במהלך הפיתוח.
לפני הכל וגם למתכנת בודד, גיט מאפשרת לעקוב אחרי ההיסטוריה של הפיתוח ולזהות את הנקודה והבעיה בקוד, שבה הפסיק פיצ'ר מסוים לעבוד. באותה צורה ניתן למצוא היכן נולד באג מסוים שפספסנו ולתקנו במהירות יחסית.
היכולת הזו של מפתח לעבוד מול המאגר שלו ולאחר התקדמות לשלוח את התיקונים למאגר המשותף, היא שמאפשרת לשתף קוד אחד עם השני, תוך כדי עבודה עצמאית באזור שלהם.
נוצרת כאן כפילות מסוימת, שנותנת יתרון לניהול באמצעות גיט. המאגר המשותף מאפשר שיתוף מצוין. אך הוא נותן גם בקרת כניסה של כל פיתוח, כך שהפיתוחים הטובים של כל ענף בפיתוח עולים למאגר העיקרי ורק הם. כל אחד יכול לראות את השינויים של כל אחד אחר ולהשתתף בתהליך הבקרה על הביצועים וברירה של הפיתוחים המוצלחים יותר.
בעזרת גיט מתכנתים בצוות יכולים לתקשר ביניהם על הפרויקט, בצורה א-סינכרונית, כלומר לא בשיחה רגילה אלא במסרים שכל אחד מגיב עליהם בזמן המתאים לו. בדרך זו ניתן להחליף רעיונות ודברים על התכונות והפיצ'רים שעליהם עובד כל אחד, מבלי שנדרש לתהליך הפיתוח מנהל מרכזי.
כך ניתן לסנכרן, ללא צורך בתכנון ושליטה מראש, את העבודה בין אלפי מתכנתים שמצויים בכל פינות העולם. כך עובדים כולם בהרמוניה פונקציונלית, על פרויקט אחד ומרכזי - מבלי שמישהו יצטרך לפקד על כל צבא המתכנתים והמפתחים העצמאיים הזה.
הנה הסבר של git (עברית):
https://youtu.be/ep5JBalCD_g
וכך מתחילים לעבוד עם גיט (עברית):
https://youtu.be/oZWUOv6uoo4
תכנות

תכנות (Programming) הוא כתיבת קוד לתוכנה, או למה שאנו מכנים "תוכנות". בתכנות בונה המתכנת את התוכנה. לתכנות משתמש המתכנת בשפות תוכנה שונות.
לימוד תכנות הוא סוג מעולה של ספורט מנטלי ולוגי. הוא יכול לסייע ללומדים לשפר את ההיגיון שלהם ולהעצים את הכישורים שלהם ובכך הוא נותן כלים מעולים לחיים - גם למי שלא יהפכו למתכנתים.
לימוד התכנות משפר את החשיבה, היצירתיות, יכולת התכנון, הגילוי והסקרנות של המתכנת ולומד התכנות. יש יתרון אדיר לכל ילד וילדה שלומדים לתכנת וליצור באמצעות הטכנולוגיה והמחשבים. אבל הראשון שבהם אינו קשור אפילו במחשבים, אלא בכלי החשיבה, התכנון, הלוגיקה והסקת המסקנות (ואלה רק חלק), שהתכנות מלמד.
רבים ממייסדי החברות המצליחות והטובות בעולם למדו בילדותם תכנות, מה שפילס להם דרך לאחד התחומים המדהימים ביותר ביכולת ההשפעה שלו על העולם. מתכנת בודד יכול כיום לשנות את העולם. תשאלו את מארק צוקרברג, מייסד פייסבוק...
כיום, גם בתור ילדים, תוכלו להצטרף ולהתנסות בכתיבת קוד. זאת, אגב, גם אם אינכם מתכוונים ללמוד תכנות לעומק. תוכלו לעשות זאת באמצעות הצטרפות ל"שעת הקוד" - סוג של אירוע עולמי המאפשר לילדים להתנסות בשעה של תכנות וכתיבת קוד. כך תוכלו לחוות משהו מעולם ההייטק והחדשנות הטכנולוגית, אבל בלי להסתבך ובדרך של הנאה וחוויה. מארגני שעת הקוד מספרים שמעל 100 מיליון תלמידים מרחבי העולם השתתפו באירוע, מאז החלו אירועי שעת הקוד בעולם.
הנה ילד בן 12 שלמד לתכנת מספר על הדרך בה למד והפך למתכנת מקצועי (מתורגם):
מה שבתי הספר, וזה חמור - לא מלמדים ילדים (מתורגם):
https://youtu.be/nKIu9yen5nc
התכנות משנה את העולם (עברית):
https://youtu.be/6_RFZr9mWvc
הסברים לטוב שבתכנות (בעברית):
https://youtu.be/hyCqL_lLDOQ

מחשב מתכנת לבדו? - באופן מסוים כן. כי כלי קוד מבוססי בינה מלאכותית (AI-based code tools) מאפשרים לשלב את הרעיון או המומחיות האנושית עם היכולות של הבינה המלאכותית, כדי לפתח תוכנה ולעשות זאת ללא קידוד של המשתמש או באמצעות שיתוף פעולה בין המשתמש ל-AI.
קידוד מבוסס AI מתבסס על בינה מלאכותית ככותבת הקוד. כתיבת הקוד מתבססת על מודל שפה שאומן על נתוני דאטה עצומים ולמד קידוד.
המשתמש מאפיין את המוצר, אם זה אתר אינטרנט, תוכנה או אפליקציה לטלפון ומתאר אותו באמצעות פרומפט, הנחייה שהוא כותב לבינה היוצרת בלשון טבעית, כלומר שפה רגילה, שפת יום יום וללא צורך בידע בתכנות.
החיבור בין הרעיון והשכל האנושי ובין האינטליגנציה המלאכותית מאפשרים ניהול וביצוע משימות פיתוח, בשיתוף פעולה ועצמאות גם יחד.
באמצעות תכונות של AI מקודד ניתן לתאר ל-AI את המטרה, לקבל קוד, להנחות אותה כיצד להתקדם בפתרון בעיות או באגים בקוד ולהוביל ביחד לקוד איכותי ולמימוש הרעיון.
ה-AI המקודד מודע לפעולות המשתמש בזמן אמת ומציע יתרונות אדירים. הוא מסוגל לערוך קבצים מרובים במהירות אדירה, להציע פקודות, לזהות בעיות ולנפות באגים.
כלי הקוד המשובח "Windsurf AI", למשל, מפעיל סוכני AI מובנים, יחד עם מעין "טייסי משנה" מונעי בינה מלאכותית, שמטרתם להטעין את הקוד ולהפוך את הקידוד למהיר ואינטואיטיבי יותר.
בעצם, Windsurf ודומיו, דוגמת Cursor AI שהיה חלוץ הכלים הללו, הם מעין סביבת פיתוח (IDE) מהדור החדש, המשפרות את הפיתוח בעזרת אוטומציה חכמה ומציעות עריכת קוד בסביבה מרובת קבצים. וינדסרף עושה זאת, בין השאר, בעזרת כלי שנקרא Cascade ומצטיין במודעות עמוקה לקונטקסט, ההקשר הכל כך בסיסי ומרכזי בבינה המלאכותית היוצרת (Generative AI).
כלי נוסף וקל הרבה יותר הוא Websim AI, המאפשר לתאר אתר או אפליקציה, או סתם לתת שם דומיין מדומה, והיא יוצרת אותם. מכאן אפשר להנחות אותה בצעדים, איטרציות, מה שמאפשר לדייק אותה, לשפר, לשדרג ולבנות הלאה.
הנה כלי קוד מבוססי אינטליגנציה מלאכותית:
https://youtu.be/3cVJxRka4yM
AnyChat מצויד בדיפסיק וסמבה נובה לקידוד פשוט:
https://youtu.be/7BIVWQnAOLk?t=2m54s
השוואה של 3 מודלי שפה LLMs במהירות יצירת קוד למטלה זהה:
https://youtu.be/_JS-LkBrsk8
השוואת 5 כלי קוד מובילים והמנצח המפתיע:
https://youtu.be/WVhJSUtGbYM
יישום של תוכנה שפותחה כך, ללא כתיבת קוד:
https://youtu.be/lkom9ufvxD4
Websim.ai הוא כלי קוד קל מאוד וקסם ללא תכנות:
https://youtu.be/HCw4jCbLgMY
איך ChatGPT בניתוח קוד? (עברית)
https://youtu.be/Z46pqHFuKHs
רפליט הוא כלי קוד בינתי מתקדם יותר:
https://youtu.be/FrMy3Bq7TZA
לקודד אפשר גם בסמארטפון:
https://youtu.be/Cmq3TrS3ccU
מדריך מתחילים לתכנות עם Cursor AI:
https://youtu.be/ocMOZpuAMw4?long=yes
ומדריך לעבודה עם Windsurf:
https://youtu.be/4nCMdQadE08?long=yes

נהוג לומר שהשם הנרדף של "ארגומנטים" הוא "משתנים" או גם "פרמטרים".
אז באמת מתכנתים מבלבלים לא פעם בין פרמטרים וארגומנטים וזה בסדר, כי ההבדל ביניהם הוא בעיקרו סמנטי, עניין של הגדרה ולא של מהות שיכולה לפגוע בעבודה.
אבל בכל זאת... כשאנו מגדירים פונקציה, נרצה להגדיר לה את הנתונים שהיא תצפה לקבל בעת קריאה וזימון שלה.
#דוגמה
למשל כאן, ניתן לראות ש-x הוא פרמטר, בעוד ש-y הוא ארגומנט.
int f(struct S *x);
return f(&y);
#אז בהגדרה אלה יהיו פרמטרים.
כלומר, פרמטרים (משתנים) מתקבלים על ידי הפונקציה כשמגדירים אותה. כל ארגומנט מופיע בצורה של סוג (type) ואז שם. כך יהיו למשל ארגומנטים מסוג int שבהם יופיעו מספרים שלמים, מסוג double שיהיה בו מספר עשרוני, או String עם מחרוזת טקסט.
#בקריאה לפונקציה אלה ארגומנטים
כשאנו מריצים פונקציה, היא מבצעת פעולה מסוימת. אלא שלא תמיד נרצה שהיא תעשה בדיוק את אותה פעולה בדיוק, או עם אותם נתונים. כך למשל, אם נרצה להשתמש בפונקציה כמו printInBold, כדי להדגיש מחרוזת טקסט בכתב Bold, נרצה לספק בכל פעם מחרוזת טקסט אחרת. זה בדיוק מה שהארגומנט (Argument) מאפשר לנו. כשנקרא לפונקציה, נכניס באמצעותו משתנה לתוך הסוגריים שלה וכך היא תבצע את הפעולה על המשתנה הזה.
כמובן שלא רק מחרוזות יכולות להיכנס כארגומנטים. לארגומנטים ניתן להכניס גם משתנים, ספרות וכדומה.
ארגומנטים, אם כן, הם פרמטרים שפונקציה מצפה לקבל דה פקטו. באמצעות הקוד שתוכנת בה לביצוע היא תייצר את ה-return שלה ממנו, או תדפיס אותו בפקודת print לטרמינל.
#לכן תיאורטית...
ה"פרמטרים" שההגדרנו בפונקציה עצמה, אלה "פרמטרים פורמליים" (Formal Parameters). לעומתם, ה"פרמטרים" שנשלחים לפונקציה הקיימת, נקראים "פרמטרים אקטואליים" (Actual Parameters) והם הארגומנטים.
#ומעשית...
המונח "פרמטרים" יכול לשמש למעשה בכדי לתאר, גם את ה"פרמטרים" וגם את ה"ארגומנטים".
הנה ארגומנטים בפייתון:
https://youtu.be/tQ7it_vlptA
ופרמטרים וארגומנטים בשפת Javascript:
https://youtu.be/G4lZSWssoqA

מכירים את זה שאתם עושים שוב ושוב, כל יום או כל כמה שעות את אותה פעולה וזה נראה לכם לא הגיוני?
גם מתכנתים לא אוהבים לעשות שוב ושוב את אותה פעולה. לכן הם למשל משתמשים בלולאות (Loops). אבל יש מרכיב שחוסך עוד יותר עבודה וכתיבת קוד מיותר. כי מתכנתים אוהבים לשמור את הקוד שלהם DRY, קיצור של "don’t repeat yourself".
לרכיב מקצר העבודה הזה קוראים פונקציה (Function). הפונקציה היא פלא של ייעול. כל מטרתה היא "לקודד פעם אחת, להשתמש הרבה פעמים".
#אבל מהי פונקציה?
פונקציה היא קוד שמבצע פעולה. הרעיון בכתיבת פונקציה הוא לכתוב פעם אחת קוד והוא יחליף את הצורך לכתוב פעולות דומות שוב ושוב, במקומות שונים בתוכנה.
דמייני שאת מתכנתת פעם אחת קטע של קוד ואחרי כן קוראת לו בתוכנה, בכל פעם שצריך שהוא יבצע את תפקידו.
מדהים לא?
ואכן, פונקציה בתכנות היא מרכיב פשוט אבל משמעותי מאוד, המקל את הקידוד ואת הארגון הנכון של תכנית מחשב. כך הוא מקצר את הקוד, חוסך זמן ומקטין את האפשרויות לשגיאות.
כמו במכשיר מיקרוגל או במכונית, בפונקציה משתמשים בכל פעם שרוצים לבצע את הפעולה שהיא יודעת ותוכנתה לעשות. מכונית תסיע אותנו ומיקרו יחמם לנו או יפשיר את האוכל. כל אחד יודע כמה הם שיפרו את חיינו לעומת העולם שלפני המכונית או המיקרוגל.
במילים פשוטות, הפונקציה היא קטע קוד המבצע פעולה, Action כלשהי. המתכנתים כותבים את הפונקציה פעם אחת ויכולים לקרוא לה בקוד מתי שרק ירצו.
#שיטת התכנות של פונקציות
אז השיטה היא פשוטה - מגדירים ומשתמשים. כלומר, מתכנתים פונקציה ונותנים לה שם. מעתה נוכל להשתמש בה בקוד, כלומר לקרוא לה בכל פעם שנצטרך שהיא תבצע את תפקידה.
#איך פונקציה פועלת?
בקריאה לפונקציה, לעתים נצטרך לתת לה נתונים. בשביל זה לפונקציה יש סוגריים. בתוכן נצרף לה לעתים פרמטרים, כלומר נתונים מסויימים שבהם היא תשתמש כדי לחשב ולבצע את מה שהיא תוכנתה לעשות.
כשהפונקציה תסיים "לעבוד" (וזה יהיה מאוד מהיר כמובן) היא תחזיר את הפלט להמשך התכנית, או תבצע פעולה כמו הדפסה או הפעלה של פונקציות אחרות.
#דוגמה לפונקציות בחיים
נסביר את זה רגע בדימוי מהחיים: דמיינו שאתם בפסטיבל עם המון אנשים ואיבדתם את החברה שלכם. אתם ניגשים לבמה ומבקשים להכריז שאתם ממתינים לה. אומרים לכם לדבר עם שמעון, הכרוז של הפסטיבל. הוא בחור נחמד וענייני ומבקש מכם מידע, דאטה. במילים פשוטות - הוא שואל איך קוראים לה ומה שמכם. כשאתם נותנים את הפרטים הללו, שמעון ממהר להכריז במיקרופון "ברכה לוי, בואי ליד הבמה! יוסי ושרון ממתינים לך". דקות אחר כך ברכה מגיעה אליכם ליד הבמה.
סוף טוב הכל טוב!
כלומר, שמעון הוא פונקציה שיודעת להכריז על אבדות. הוא צריך פרמטרים, דאטה הכרחי שבדוגמה הזו הוא שם הגברת ושמות הממתינים לה. כשהוא מבצע את הפעולה שלו, המשימה מתבצעת. אם הוא היה מחזיר תשובה, כמו" ברכה כבר בבית" זה כנראה היה ארגומנט.
#יתרונות הפונקציה
פונקציה מקצרת את הקוד, חוסכת מאוד בזמן פיתוח ומונעת באגים. במילים פשוטות, הרעיון בפונקציה "קודד פעם אחת, השתמש הרבה פעמים!"
איך זה עובד?
דמיינו שהייתם צריכים גם לתקן בעצמכם את המכונית, גם להכין אוכל, גם לבנות את הבית שלכם, לטפל וללמד את הילדים, לתקן את החשמל, את הביוב וכל הדברים שצריך לעשות. אולי זה אפשרי אבל זה לא חכם, נכון?
קוד ללא פונקציות הוא כמו עולם בלי בעלי תפקידים שיודעים היטב כיצד למלא משימות מוגדרות, בלי אנשי מקצוע שהם מומחים בתפקידם ובלי מכשירים שעושים לנו את החיים קלים ונוחים.
זה עולם מסובך ומבולגן. המתכנתים קוראים לקוד כזה "קוד ספגטי". מרוב שהוא עמוס ומנוהל לא נכון, לא מוצאים בו את הידיים והרגליים...
חישבו על הפונקציה כסוג של מכונה, מתקן או חלק בקוד. כשנותנים להם סוג של אינפוט, מידע, הם יודעים לבצע במידע הזה משימה שהוגדרה להם מראש בתכנות.
פעולה כזו של פונקציה יכולה לפעמים לתת לנו משהו בחזרה, ערך או ערכים מוגדרים. ערך כזה בדוגמה שלנו הוא כמו תשובה ששמעון יכול לתת לנו, שברכה נמצאה וממתינה לנו במקום כלשהו.
לעתים פונקציה יכולה לשנות את הדאטה שנתנו לה ולפעמים לקבל החלטה על בסיס הדאטה הזה. בשפות מונחות עצמים יש בדרך כלל סוגריים אחרי שם הפונקציה. כשמכריזים על הפונקציה, כלומר כשמהמתכנתים מציגים אותה לראשונה, הם מגדירים שבסוגריים האלה יוכנס הדאטה לצורך הביצוע. בכך הם מגדירים באמצעות "פרמטרים" מה יהיה הדאטה המצופה, כדי שהפונקציה תעשה את תפקידה.
כשקוראים לפונקציה, זה כמו למלא טופס. לתוך הסוגריים, מכניסים את הפרמטרים, האינפוט, את המידע שהפונקציה רוצה (כמו ששמעון שואל "איך קוראים לילדה שנעלמה לכם?")
אחרי ביצוע הפעולה, הפונקציה תחזיר את הארגומנט. כלומר, את התוצאה או המידע שביקשנו ממנה לייצר מהפרמטרים שסיפקנו לה בקריאה.
בשפות תכנות נהוג שהסוגריים נכללות בפונקציה בכל מקרה, גם אם אין מידע, כלומר פרמטרים שהפונקציה דורשת כדי למלא את תפקידה, יהיו שם סוגריים ריקות.
ואגב, בשפות התכנות השונות יש פונקציות מובנות, שנכתבו מראש, ברמת השפה כולה. ניתן להשתמש בהן מראש, מבלי שהמתכנת יצטרך לפתח בעצמו או בעצמה פונקציות לדברים שמתכנתים צריכים הרבה. יש גם ספריות שלמות, שאותן תוכלו לייבא לקוד שלכם ולחסוך זמן פיתוח. הן כוללות פונקציות שימושיות, בתחום בו הספריה שימושית.
הנה סרטון שמסביר את הפונקציה בפשטות:
https://youtu.be/3JIZ40yuZL0?end=2m40s
הפונקציה לתלמידי תכנות שפת פייתון (עברית):
https://youtu.be/o0wyYsNbJeY
והסבר הפונקציות ב-javascript (עברית):
https://youtu.be/c7mqY6QtdQQ

האקתון (Hackathon) הוא סוג מיוחד של אירוע בהייטק, בו מתכנסים יחד אנשי טכנולוגיה, מתכנתים ואנשי מוצר ותוכן, לעבודה משותפת על פרויקטים טכנולוגיים מכווני נושא ספציפי.
בהרבה המקרים מטרת ההאקתון תניה לפיתוח של תוכנה חדשה או בשביל לרכז מאמץ ולהשלים או לשפר תוכנה, רעיון או טכנולוגיה קיימת.
בהאקאתון, בשונה מכנס למשל, לא יהיו בדרך כלל הרצאות או שיחות רבות. השיטה תהיה של צוותים קטנים שמתרכזים בעבודה, כשכל צוות שוקד על פתרון לבעיה המהווה חלק מהפיתוח הכללי שלשמו נועד ההאקאתון כולו.
האקאתון טיפוסי נמשך יום עד כמה ימים ספורים. התוכנות או הפיתוחים שמפותחים בהאקאתונים הם פעמים רבות "תוכנה חופשית" או קוד פתוח.
בהאקאתון שותפים בדרך כלל מתכנתים, מעצבי UX, מומחי תוכן, אנשי נתונים ובק-אנד ואנשים העוסקים בתחומים בהם עוסק הפיתוח.
המילה "האקתון" באנגלית היא הלחם של המילים "האק", סוג של תכנות יצירתי ו"מרתון", כלומר משמעותה "מרוץ תכנות יצירתי".
הנה האקתון אופייני לטכנולוגיית בינה מלאכותית וצ'יפים (עברית):
https://youtu.be/NlDryEJLT9k
מהו בעצם האקתון? (עברית):
https://youtu.be/lGlBmk2jXkY
האקתון לקידום מטרות סביבתיות אנרגטיות (עברית):
https://youtu.be/kGiskvG45q4
האקתון של בני נוער בתל אביב (עברית):
https://youtu.be/34aeWiQh0N8
האקתון לפתרון בעיות המים (עברית):
https://youtu.be/nnBa4rE-biE
ובחיוך - האקתון צרות להייטק (עברית):
https://youtu.be/n04feEZV8S8
איך הפכה שפת התכנות פייתון ללוהטת?
מבין שפות התכנות הרבות נחשבת שפת התכנות פייתון (Python) לאחת משפות הפיתוח הפופולריות ביותר בעולם. זוהי שפה אינטואיטיבית, מובנת ובעלת תחביר קליט ופשוט למדי.
המקור לשם השפה איננו מנחש החנק הענקי, הפיתון. ההשראה היא דווקא סדרת המערכונים הבריטית “מונטי-פייתון”, שהמתכנת ההולנדי שפיתח את שפת התכנות כל כך העריץ.
כשפת תכנות פייתון פופולרית ומועדפת על ידי מתכנתים, מסטארט-אפים וחברות קטנות ועד מי שמפתחים בחברות ענק, כולל גוגל ואינסטגרם.
בשפת פייתון משתמשים כיום מרבית החוקרים והמפתחים בתחומי הבינה המלאכותית, לצד מדעני נתונים ומנתחי מידע, במיוחד עם צמיחת טכנולוגיות כמו למידת מכונה (Machine learning) ולמידה עמוקה (Deep learning) בעשור האחרון.
סוגי פרויקטים שנוטים לפתח בפייתון הם בתחומי תוכנה וקוד מגוונים. ביניהם בולטים יישומי WEB, כלי בינה מלאכותית, פרויקטים של אוטומציה, עיבוד נתונים, מדע נתונים (Data science), אנליזה או ניתוח נתונים (Data analysis), רשתות, אינטרנט, כלים לעיבוד תמונה ועוד.
למעשה, בשנת 2024 פייתון היא כל כך פופולרית, שלראשונה עברה את ג'אווה סקריפט (JavaScript) בתור שפת התכנות הפופולרית ביותר בעולם. בדו"ח שפרסם אתר הקוד העיקרי "גיטהאב" הוא הודיע לראשונה שפייתון עקפה את JavaScript והפכה לשפת התכנות הפופולרית ביותר בעולם.
הסיבה לצמיחה ולשינוי הזה לטובת פייתון היא הזינוק המטורף בשימוש ב-GenAI, בינה יצירתית או גנרטיבית (Generative AI). הפיתוח הגובר של כלי GenAI, על פי גיטהאב, והזינוק בפיתוחים מבוססי דאטה סיינס ודאטה אנליטיקס, הביאו לנסיקה בשימוש בפייתון, הידועה כשפה העיקרית בה משתמשים לפיתוחים אלו.
#יתרונות פייתון
כבר שנים רבות שמהנדסי תוכנה ומתכנתים ותיקים ממליצים על פייתון או ג'אווה סקריפט, בתור שפות התכנות שהכי כדאי להם להתחיל בהן. מי שמשקיעים שעתיים ביום יכולים כבר אחרי 3 חודשים לכתוב תוכנה של ממש.
לאחר מכן כדאי להתמחות באחד התחומים שהיא מאפשרת וטובה בהם, כמו פיתוח יישום ווב (web application), תוכנה רגילה למחשב (Desktop program), למידת מכונה (Machine learning) או בינה מלאכותית (Artificial intelligence).
הנה סקירה קצרה על שפת פייתון (עברית):
https://youtu.be/cKZ0miaDtkw
עוד קצת היכרות עם שפת פייתון (עברית):
https://youtu.be/A7XXmxU3o4o
תמצית בדקה של מה שלומדים בפייתון בשנה:
https://youtu.be/AfR-lJghs4w
היכרות באנגלית:
https://youtu.be/poJfwre2PIs
קורס באורך מלא של תכנות בשפת פייתון:
https://youtu.be/_uQrJ0TkZlc?long=yes
מבין שפות התכנות הרבות נחשבת שפת התכנות פייתון (Python) לאחת משפות הפיתוח הפופולריות ביותר בעולם. זוהי שפה אינטואיטיבית, מובנת ובעלת תחביר קליט ופשוט למדי.
המקור לשם השפה איננו מנחש החנק הענקי, הפיתון. ההשראה היא דווקא סדרת המערכונים הבריטית “מונטי-פייתון”, שהמתכנת ההולנדי שפיתח את שפת התכנות כל כך העריץ.
כשפת תכנות פייתון פופולרית ומועדפת על ידי מתכנתים, מסטארט-אפים וחברות קטנות ועד מי שמפתחים בחברות ענק, כולל גוגל ואינסטגרם.
בשפת פייתון משתמשים כיום מרבית החוקרים והמפתחים בתחומי הבינה המלאכותית, לצד מדעני נתונים ומנתחי מידע, במיוחד עם צמיחת טכנולוגיות כמו למידת מכונה (Machine learning) ולמידה עמוקה (Deep learning) בעשור האחרון.
סוגי פרויקטים שנוטים לפתח בפייתון הם בתחומי תוכנה וקוד מגוונים. ביניהם בולטים יישומי WEB, כלי בינה מלאכותית, פרויקטים של אוטומציה, עיבוד נתונים, מדע נתונים (Data science), אנליזה או ניתוח נתונים (Data analysis), רשתות, אינטרנט, כלים לעיבוד תמונה ועוד.
למעשה, בשנת 2024 פייתון היא כל כך פופולרית, שלראשונה עברה את ג'אווה סקריפט (JavaScript) בתור שפת התכנות הפופולרית ביותר בעולם. בדו"ח שפרסם אתר הקוד העיקרי "גיטהאב" הוא הודיע לראשונה שפייתון עקפה את JavaScript והפכה לשפת התכנות הפופולרית ביותר בעולם.
הסיבה לצמיחה ולשינוי הזה לטובת פייתון היא הזינוק המטורף בשימוש ב-GenAI, בינה יצירתית או גנרטיבית (Generative AI). הפיתוח הגובר של כלי GenAI, על פי גיטהאב, והזינוק בפיתוחים מבוססי דאטה סיינס ודאטה אנליטיקס, הביאו לנסיקה בשימוש בפייתון, הידועה כשפה העיקרית בה משתמשים לפיתוחים אלו.
#יתרונות פייתון
כבר שנים רבות שמהנדסי תוכנה ומתכנתים ותיקים ממליצים על פייתון או ג'אווה סקריפט, בתור שפות התכנות שהכי כדאי להם להתחיל בהן. מי שמשקיעים שעתיים ביום יכולים כבר אחרי 3 חודשים לכתוב תוכנה של ממש.
לאחר מכן כדאי להתמחות באחד התחומים שהיא מאפשרת וטובה בהם, כמו פיתוח יישום ווב (web application), תוכנה רגילה למחשב (Desktop program), למידת מכונה (Machine learning) או בינה מלאכותית (Artificial intelligence).
הנה סקירה קצרה על שפת פייתון (עברית):
https://youtu.be/cKZ0miaDtkw
עוד קצת היכרות עם שפת פייתון (עברית):
https://youtu.be/A7XXmxU3o4o
תמצית בדקה של מה שלומדים בפייתון בשנה:
https://youtu.be/AfR-lJghs4w
היכרות באנגלית:
https://youtu.be/poJfwre2PIs
קורס באורך מלא של תכנות בשפת פייתון:
https://youtu.be/_uQrJ0TkZlc?long=yes
מה ניתן לעשות עם לולאה בתכנות?
מתכנתים לא אוהבים לעשות שוב ושוב את אותה פעולה. לכן הם משתמשים בפטנטים כמו לולאה (Loop).
"לופ" (Loop), בעברית לולאה, היא קטע קוד שנרצה שיתבצע שוב ושוב, מספר מוגדר של פעמים או לפחות עד שהוא יסיים את תפקידו.
#יתרונות הלולאות בתכנות
אין שפת תכנות ללא לולאות. לולאה חוסכת משמעותית זמן ובאגים בתוכנה והופכת את הקוד לקצר, אלגנטי וקריא הרבה הרבה יותר.
#איך משתמשים בלולאה?
לולאה תשמש בקוד כדי לחזור על פעולה מספר מסוים של פעמים, או כל עוד או עד שתנאי מסוים יתמלא.
דוגמאות? - בתכנות מחשבים נדע לעתים כמה פעמים בדיוק נרצה שהוא יתבצע. אז נשתמש בלולאה שנקראת for.
בפעמים אחרות נרצה שהתכנית תבצע משהו פעמים רבות, אבל לא נקבע מראש כמה פעמים, אלא נרצה שהיא תתבצע כל עוד תנאי מסוים יתקיים. לעתים נראה שהיא תתבצע עד שתנאי מסוים יתקיים.
דוגמאות מהחיים? - אוקיי, נניח שהמורה לספורט מבטיח לכם שמספר סיבובי ריצה יעלו לכם את הציון ושעל כל סיבוב ריצה תקבלו 5 נקודות נוספות לציון.
#לולאת for
אתם אנשים מחושבים ולכן תרצו לרוץ עד 20 סיבובים. הרי ברור לכם שאין טעם להתאמץ אם כבר יש לכם ציון של 100. לולאת for תאפשר את זה בקלות. תשמשו ודאי בלולאה של 20 פעם סיבוב אחד ומובטח לכם ציון של 100.
למקרה הזה תתאים לולאת for. זו לולאה שתתבצע מספר פעמים מוגדר מראש. בשפות שונות הם יוצגו אחרת, אבל בעיקרון יש לה 3 מרכיבים המנוסחים בעזרת משתנה: ערך התחלה, תנאי הסיום וצעדי ההתקדמות של המשתנה.
#לולאת while
דוגמה אחרת. נניח שהמורה לספורט דורש שתרוצו, בלי ציונים ובלי עניינים. אבל הוא מבטיח לכם שאם תשברו רגל אז הוא יאשר הפסקה של הריצה. זה תנאי לוגי ולכן כשרגלכם תישבר, תוכלו להודיע לו או לצרוח מכאב והוא יאשר לכם להפסיק לרוץ. למזלנו החיים קצת פחות אלימים אבל כך פועלת לולאת תנאי... יכולנו כמובן לתת תנאי אחר, כמו לרוץ עד הצלצול.
אז לולאה זו מתנהלת כל עוד התנאי (ביטוי לוגי של Boolean expression) שבסוגריים מתקיים. נבחר בה במקרים שבהם איננו יודעים מראש כמה פעמים הלולאה תרוץ, אך יש לנו תנאי שכל עוד הוא מתקיים נרצה שהיא תרוץ. כלומר, כל עוד הביטוי הלוגי, שהוא התנאי בעצם, הוא true - הבלוק של הלופ, התכנית שלו, יתבצע. ברגע שהוא יהפוך ל-False אז היא לא תתקיים ויהיה דילוג מעליה.
יש גם לולאת do while, שהיא סוג נוסף של לולאה. היא מבצעת את מה שיש בה כמו while. אך בניגוד ל-while היא בודקת רק בפעם הראשונה את התנאי, כלומר do while בודקת בכל סיבוב מחדש האם התנאי מתקיים.
לעתים, אגב, נרצה לבדוק אם תנאי מסוים מתקיים ואם כן או לא, לפי הקוד, להפסיק את הלולאה. פקודת break בשפות תכנות שונות נועדה להפסיק כך את הלופ.
הנה סרטון שמסביר מהן לולאות:
https://youtu.be/r3Ti5Xp9W8A?end=1m53s
הלולאה לתלמידי תכנות שפת פייתון (עברית):
https://youtu.be/yBCNY__d4ic
והסבר לולאות ב-Javascript (עברית):
https://youtu.be/PaPMOL12V3g
מתכנתים לא אוהבים לעשות שוב ושוב את אותה פעולה. לכן הם משתמשים בפטנטים כמו לולאה (Loop).
"לופ" (Loop), בעברית לולאה, היא קטע קוד שנרצה שיתבצע שוב ושוב, מספר מוגדר של פעמים או לפחות עד שהוא יסיים את תפקידו.
#יתרונות הלולאות בתכנות
אין שפת תכנות ללא לולאות. לולאה חוסכת משמעותית זמן ובאגים בתוכנה והופכת את הקוד לקצר, אלגנטי וקריא הרבה הרבה יותר.
#איך משתמשים בלולאה?
לולאה תשמש בקוד כדי לחזור על פעולה מספר מסוים של פעמים, או כל עוד או עד שתנאי מסוים יתמלא.
דוגמאות? - בתכנות מחשבים נדע לעתים כמה פעמים בדיוק נרצה שהוא יתבצע. אז נשתמש בלולאה שנקראת for.
בפעמים אחרות נרצה שהתכנית תבצע משהו פעמים רבות, אבל לא נקבע מראש כמה פעמים, אלא נרצה שהיא תתבצע כל עוד תנאי מסוים יתקיים. לעתים נראה שהיא תתבצע עד שתנאי מסוים יתקיים.
דוגמאות מהחיים? - אוקיי, נניח שהמורה לספורט מבטיח לכם שמספר סיבובי ריצה יעלו לכם את הציון ושעל כל סיבוב ריצה תקבלו 5 נקודות נוספות לציון.
#לולאת for
אתם אנשים מחושבים ולכן תרצו לרוץ עד 20 סיבובים. הרי ברור לכם שאין טעם להתאמץ אם כבר יש לכם ציון של 100. לולאת for תאפשר את זה בקלות. תשמשו ודאי בלולאה של 20 פעם סיבוב אחד ומובטח לכם ציון של 100.
למקרה הזה תתאים לולאת for. זו לולאה שתתבצע מספר פעמים מוגדר מראש. בשפות שונות הם יוצגו אחרת, אבל בעיקרון יש לה 3 מרכיבים המנוסחים בעזרת משתנה: ערך התחלה, תנאי הסיום וצעדי ההתקדמות של המשתנה.
#לולאת while
דוגמה אחרת. נניח שהמורה לספורט דורש שתרוצו, בלי ציונים ובלי עניינים. אבל הוא מבטיח לכם שאם תשברו רגל אז הוא יאשר הפסקה של הריצה. זה תנאי לוגי ולכן כשרגלכם תישבר, תוכלו להודיע לו או לצרוח מכאב והוא יאשר לכם להפסיק לרוץ. למזלנו החיים קצת פחות אלימים אבל כך פועלת לולאת תנאי... יכולנו כמובן לתת תנאי אחר, כמו לרוץ עד הצלצול.
אז לולאה זו מתנהלת כל עוד התנאי (ביטוי לוגי של Boolean expression) שבסוגריים מתקיים. נבחר בה במקרים שבהם איננו יודעים מראש כמה פעמים הלולאה תרוץ, אך יש לנו תנאי שכל עוד הוא מתקיים נרצה שהיא תרוץ. כלומר, כל עוד הביטוי הלוגי, שהוא התנאי בעצם, הוא true - הבלוק של הלופ, התכנית שלו, יתבצע. ברגע שהוא יהפוך ל-False אז היא לא תתקיים ויהיה דילוג מעליה.
יש גם לולאת do while, שהיא סוג נוסף של לולאה. היא מבצעת את מה שיש בה כמו while. אך בניגוד ל-while היא בודקת רק בפעם הראשונה את התנאי, כלומר do while בודקת בכל סיבוב מחדש האם התנאי מתקיים.
לעתים, אגב, נרצה לבדוק אם תנאי מסוים מתקיים ואם כן או לא, לפי הקוד, להפסיק את הלולאה. פקודת break בשפות תכנות שונות נועדה להפסיק כך את הלופ.
הנה סרטון שמסביר מהן לולאות:
https://youtu.be/r3Ti5Xp9W8A?end=1m53s
הלולאה לתלמידי תכנות שפת פייתון (עברית):
https://youtu.be/yBCNY__d4ic
והסבר לולאות ב-Javascript (עברית):
https://youtu.be/PaPMOL12V3g
איך מייצגים אלגוריתמים?
אלגוריתם הוא שם כללי להוראות ביצוע של משימה או דרך לפתור בעיה מוגדרת. זהו, אם תרצו, מתכון כללי בו מטופלת בעיה לצורך פתרונה.
אם אתם מנסים למצוא רצף של הוראות לביצוע משימה או לפתרון של בעיה מסוימת, הרי שאתם מחפשים אלגוריתם.
כמובן שמדובר במגוון אדיר של בעיות המחייבות ייצוג ולכן גם הדרכים מגוונות ואין דרך אחת. אם בכל זאת נצטמצם לעולם הטכנולוגיה והמחשבים, הרי שבכל זאת ניתן לייצג אלגוריתמים בכמה דרכים או שיטות.
אז הנה השיטות הבולטות ביותר לייצוג אלגוריתמים:
#תרשים זרימה
תצוגה גרפית של האלגוריתם, בעזרת תרשים כמו בתמונה שלמעלה, המכיל סימנים מקובלים וחלקים שונים באלגוריתם: נקודות התחלה וסיום - אליפסה, הצגת הוראות - מלבן, הוראות קלט פלט - מקבילית וביצוע מותנה של פעולות באלגוריתם - מעוין.
#ייצוג מילולי לאלגוריתם
כאן מתוארת סדרת ההוראות בשפה רגילה. דוגמה:
1. קבל שלושה מספרים.
2. חשב את הממוצע של המספרים.
3. הדפס את הממוצע שנמצא.
#פסאודו קוד (Pseudu code)
תיאור סדרת ההוראות במילים, אבל באופן שמזכיר שפת תכנות. זו דרך מעולה להציג ומשתמשים בה יותר ויותר כיום, כולל באתרי לימוד ובספרים. דוגמה:
1. קבל כקלט שלושה מספרים שלמים a, b, c
2. רשום את תוצאת (a+b+c)/3 במשתנה avg
3. הצג בפלט את ממוצע המספרים avg
אלגוריתם הוא שם כללי להוראות ביצוע של משימה או דרך לפתור בעיה מוגדרת. זהו, אם תרצו, מתכון כללי בו מטופלת בעיה לצורך פתרונה.
אם אתם מנסים למצוא רצף של הוראות לביצוע משימה או לפתרון של בעיה מסוימת, הרי שאתם מחפשים אלגוריתם.
כמובן שמדובר במגוון אדיר של בעיות המחייבות ייצוג ולכן גם הדרכים מגוונות ואין דרך אחת. אם בכל זאת נצטמצם לעולם הטכנולוגיה והמחשבים, הרי שבכל זאת ניתן לייצג אלגוריתמים בכמה דרכים או שיטות.
אז הנה השיטות הבולטות ביותר לייצוג אלגוריתמים:
#תרשים זרימה
תצוגה גרפית של האלגוריתם, בעזרת תרשים כמו בתמונה שלמעלה, המכיל סימנים מקובלים וחלקים שונים באלגוריתם: נקודות התחלה וסיום - אליפסה, הצגת הוראות - מלבן, הוראות קלט פלט - מקבילית וביצוע מותנה של פעולות באלגוריתם - מעוין.
#ייצוג מילולי לאלגוריתם
כאן מתוארת סדרת ההוראות בשפה רגילה. דוגמה:
1. קבל שלושה מספרים.
2. חשב את הממוצע של המספרים.
3. הדפס את הממוצע שנמצא.
#פסאודו קוד (Pseudu code)
תיאור סדרת ההוראות במילים, אבל באופן שמזכיר שפת תכנות. זו דרך מעולה להציג ומשתמשים בה יותר ויותר כיום, כולל באתרי לימוד ובספרים. דוגמה:
1. קבל כקלט שלושה מספרים שלמים a, b, c
2. רשום את תוצאת (a+b+c)/3 במשתנה avg
3. הצג בפלט את ממוצע המספרים avg
מה היתרון הגדול של שפת ג'אווה סקריפט?
מבין שפות התכנות הרבות, שפת ג'אווה סקריפט (Javascript ובקיצור JS) היא אחת השפות הפופולריות ביותר וגם המבוקשות ביותר אצל מעסיקים בעולם ההייטק. לפי מדידות שנערכו באתר StackOverFlow, בשנת 2019 היא הייתה השפה הכי פופולרית בעולם.
את ג'אווה סקריפט החלו לפתח בחברת נטסקייפ. היא הייתה אז שפה מהפכנית שאפשרה למפתחי אינטרנט לראשונה להוסיף לאתרים פעולות מורכבות ואינטרנאקטיביות, שהוסיפו ממדים של קסם לאתרים. אחת מהן הייתה אפשרות של הזזת העכבר מעל תמונה, שהובילה לשינוי של התמונה שמתחת.
במקור פיתח אותה מתכנת בשם ברנדן אייך (Brendan Eich), שכתב את השפה ופיתח את הגרסה הראשונה שלה כשפת תכנות ב-10 ימים בלבד. אייך, אגב, הוא מי שהקים את פרויקט מוזילה ולימים הפך גם למנכ"ל אחד הדפדפנים השווים - דפדפן הקוד הפתוח Brave. באותם ימים, אגב, היא נקראה LiveScript. בשנים שאחרי כן היא זכתה להמון שמות, ביניהם ECMAscript, Jscript ועוד.
אם כיום קשה לדמיין את העולם ללא Javascript, בתחילה היא שימשה לבנייה של דפי אינטרנט אינטראקטיביים, שבאו לידי ביטוי בעיקר בדפדפנים. באותה תקופה רבים ראו בשפה הזו סוג של שפה "חמודה" שלא משמשת למטרות רציניות מדי, אבל השקעה אדירה, מצד אחד של קהילת המפתחים ומצד שני של ענקיות טכנולוגיה כמו גוגל ופייסבוק, שינתה את המצב מקצה אל קצה.
כיום ג'אווה סקריפט משמשת לפיתוח של אתרים מורכבים, אתרי וידאו וסרטים משוכללים, אפליקציות ווב או מובייל, רשתות חברתיות מורכבות וצ'אט בזמן אמת. כל אלה פותחו לצד כלי תוכנה שונים וכמובן גם משחקי מחשב נחמדים.
גם המהירות והביצועים של JS, שבעבר היו איטיים יחסית, השתפרו מאוד ולא מעט בזכות המחשבים המהירים של היום.
לא פלא שרבים בתעשייה ממליצים למתחילים ללמוד תכנות להתחיל באחת משתי השפות - פייתון או ג'אווה סקריפט. בעוד פייתון מיועדת לשימושים מגוונים, רבים לומדים Javascript במטרה להפוך למפתחי front-end ו/או back-end.
גם המנוע שמריץ את השפה התרחב. מדפדפנים שכוללים מנוע JS הוא הורחב ל-Node.JS, מנוע עצמאי ליישומים, שפיתח מהנדס תוכנה מוכשר. בכך הוא איפשר לתעשייה מנוע JS בתוכנה עצמאית, מה שהוביל לפיתוח back-end לאפליקציות ווב ומובייל שונות, מחוץ לדפדפן.
ואגב, אחת השאלות הכי פופולריות על JavaScript היא האם היא מבוססת על שפת Java. התשובה המתחכמת היא שהקשר בין שתיהן הוא כמו הקשר בין Car ל-Carpet... התשובה הפשוטה היא שאין ביניהן כל קשר. הסיבה לכך שהשם JavaScript כולל את המילה Java היא שבשנות ה-90 שפת Java והמילה Java בכלל, היו לוהטות. לכן יצר מי שיצר את השם JavaScript לשפת התכנות שכל כך הרבה שמות היו לה ואף אחד לא ממש תפס. התוצאה הייתה מעולה ומיידית והשם JavaScript נשאר.
אחד ההבדלים הכי גדולים בין שתי השפות הללו הוא ש-JS היא Interpreted, בעוד ש-Java היא שפה שהקוד בה עובר הידור, כלומר מתורגם באמצעות Compiler לשפת מכונה.
הנה היכרות לילדים עם שפת ג'אווה סקריפט (עברית):
https://youtu.be/w5dnqy-_MQM
קורס מלא של שפת ג'אווה סקריפט (עברית):
https://youtu.be/fplM3uWr_8Y
היכרות עם שפת ג'אווה סקריפט באנגלית:
https://youtu.be/c-I5S_zTwAc
וקורס באורך מלא של תכנות בשפת Javascript :
https://youtu.be/W6NZfCO5SIk?long=yes
מבין שפות התכנות הרבות, שפת ג'אווה סקריפט (Javascript ובקיצור JS) היא אחת השפות הפופולריות ביותר וגם המבוקשות ביותר אצל מעסיקים בעולם ההייטק. לפי מדידות שנערכו באתר StackOverFlow, בשנת 2019 היא הייתה השפה הכי פופולרית בעולם.
את ג'אווה סקריפט החלו לפתח בחברת נטסקייפ. היא הייתה אז שפה מהפכנית שאפשרה למפתחי אינטרנט לראשונה להוסיף לאתרים פעולות מורכבות ואינטרנאקטיביות, שהוסיפו ממדים של קסם לאתרים. אחת מהן הייתה אפשרות של הזזת העכבר מעל תמונה, שהובילה לשינוי של התמונה שמתחת.
במקור פיתח אותה מתכנת בשם ברנדן אייך (Brendan Eich), שכתב את השפה ופיתח את הגרסה הראשונה שלה כשפת תכנות ב-10 ימים בלבד. אייך, אגב, הוא מי שהקים את פרויקט מוזילה ולימים הפך גם למנכ"ל אחד הדפדפנים השווים - דפדפן הקוד הפתוח Brave. באותם ימים, אגב, היא נקראה LiveScript. בשנים שאחרי כן היא זכתה להמון שמות, ביניהם ECMAscript, Jscript ועוד.
אם כיום קשה לדמיין את העולם ללא Javascript, בתחילה היא שימשה לבנייה של דפי אינטרנט אינטראקטיביים, שבאו לידי ביטוי בעיקר בדפדפנים. באותה תקופה רבים ראו בשפה הזו סוג של שפה "חמודה" שלא משמשת למטרות רציניות מדי, אבל השקעה אדירה, מצד אחד של קהילת המפתחים ומצד שני של ענקיות טכנולוגיה כמו גוגל ופייסבוק, שינתה את המצב מקצה אל קצה.
כיום ג'אווה סקריפט משמשת לפיתוח של אתרים מורכבים, אתרי וידאו וסרטים משוכללים, אפליקציות ווב או מובייל, רשתות חברתיות מורכבות וצ'אט בזמן אמת. כל אלה פותחו לצד כלי תוכנה שונים וכמובן גם משחקי מחשב נחמדים.
גם המהירות והביצועים של JS, שבעבר היו איטיים יחסית, השתפרו מאוד ולא מעט בזכות המחשבים המהירים של היום.
לא פלא שרבים בתעשייה ממליצים למתחילים ללמוד תכנות להתחיל באחת משתי השפות - פייתון או ג'אווה סקריפט. בעוד פייתון מיועדת לשימושים מגוונים, רבים לומדים Javascript במטרה להפוך למפתחי front-end ו/או back-end.
גם המנוע שמריץ את השפה התרחב. מדפדפנים שכוללים מנוע JS הוא הורחב ל-Node.JS, מנוע עצמאי ליישומים, שפיתח מהנדס תוכנה מוכשר. בכך הוא איפשר לתעשייה מנוע JS בתוכנה עצמאית, מה שהוביל לפיתוח back-end לאפליקציות ווב ומובייל שונות, מחוץ לדפדפן.
ואגב, אחת השאלות הכי פופולריות על JavaScript היא האם היא מבוססת על שפת Java. התשובה המתחכמת היא שהקשר בין שתיהן הוא כמו הקשר בין Car ל-Carpet... התשובה הפשוטה היא שאין ביניהן כל קשר. הסיבה לכך שהשם JavaScript כולל את המילה Java היא שבשנות ה-90 שפת Java והמילה Java בכלל, היו לוהטות. לכן יצר מי שיצר את השם JavaScript לשפת התכנות שכל כך הרבה שמות היו לה ואף אחד לא ממש תפס. התוצאה הייתה מעולה ומיידית והשם JavaScript נשאר.
אחד ההבדלים הכי גדולים בין שתי השפות הללו הוא ש-JS היא Interpreted, בעוד ש-Java היא שפה שהקוד בה עובר הידור, כלומר מתורגם באמצעות Compiler לשפת מכונה.
הנה היכרות לילדים עם שפת ג'אווה סקריפט (עברית):
https://youtu.be/w5dnqy-_MQM
קורס מלא של שפת ג'אווה סקריפט (עברית):
https://youtu.be/fplM3uWr_8Y
היכרות עם שפת ג'אווה סקריפט באנגלית:
https://youtu.be/c-I5S_zTwAc
וקורס באורך מלא של תכנות בשפת Javascript :
https://youtu.be/W6NZfCO5SIk?long=yes
מהי מחלקה בתכנות מונחה עצמים?
אבני בניין עיקריות ומשמעותיות במיוחד לכתיבת קוד מובנה בתכנות מונחה עצמים, הן ה-Classes, בעברית "מחלקות". המחלקות מאפשרות לכתוב תכניות מודולריות, יעילות וחסכוניות מאוד בקוד.
המחלקה (class) היא סוג של מנגנון להגדרה של טיפוסים בתכנית. יש בה אוסף של נתונים ולצידם מבחר פעולות שאפשר לעשות עליהם. יש בה שני מרכיבים עיקריים. הראשון כולל את השדות, סוג של משתנים אוגרי נתונים. השני כולל מתודות או שיטות, שהן פונקציות הפועלות על המשתנים הללו.
המחלקה משפרת משמעותית את המבנה של כל תכנית מחשב. במקום לכתוב המון קוד שחוזר על עצמו, מסורבל, ארוך, בעל סיכויים גדולים לטעויות ובחלקו הגדול מיותר ולא יעיל, מהווה המחלקה שיטת תכנות שיוצרת קוד יעיל ופשוט.
#בואו נבחן את העולם לרגע
בואו נביט רגע על ציפורים. לכל הציפורים יש מאפיינים משותפים, כמו מקור, זנב וכנפיים. אבל האם לכולן יש למשל את אותן כנפיים? - התשובה היא כמובן שלא. המאפיינים אם כך, הם בעצם סוג של משתנים (Variables), שיכולים להשתנות מסוג לסוג ואפילו בין ציפורים מסוג זהה. אם נביט על העורב למשל, הרי שהוא אובייקט (Object), כלומר פרט במחלקה הזו של הציפורים. מכאן שיש לו נוצות.
הנוצות בדוגמה של הציפורים הן מאפיינים (properties). לכל החברים במחלקה יש מאפיינים משותפים, שנוצות הוא אחד מהם.
אבל האם כל המאפיינים הללו זהים אצל כולם? - התשובה היא לא. הגדרת המחלקה לא אומרת למשל את הצבע של הנוצות של חבריה.
בתכנות מונחה עצמים הצבע הוא בעצם משתנה (Variable), שיכול לקבל ערכים שונים, כמו הערך (Value) שחור (Black) אצל האובייקט עורב או ורוד אצל אובייקט הפלמינגו.
זוכרים את המאפיינים? - בתכנות מונחה עצמים המשתנה הזה של צבע הנוצה נקרא "מאפיין" (Property). אז ה-Property, כלומר משתנה צבע הנוצה, מקבל אצל העורב ערך (Value) של... שחור.
#התבלבלתם? - עוד דוגמה...
בואו נחשוב על החיים, כשאנו מתארים את המכונית שקנינו. איננו נדרשים בכל פעם לתאר מהי מכונית, איך היא בנויה, כיצד היא נוסעת, עוצרת, ננעלת וכדומה - אנחנו פשוט מספרים שקנינו מכונית פורשה מהירה וחזקה במיוחד. זה מספיק כדי שהשומעים יבינו המון. את המשמעות הכללית של מהי מכונית הם הרי מכירים מזמן. הם יודעים המון על מכוניות. מחלקה חוסכת את ה"חפירה", כלומר את אותו מידע מיותר שניתן היה לפרט בכל פעם שמדברים על מכונית.
#אז מהי מחלקה?
כמו המושג "מכונית", המחלקה היא אבטיפוס של אובייקטים. מגדירים אותה פעם אחת ואז ניתן ליצור ממנה אינסוף אובייקטים.
כל מחלקה מכילה תכונות (attributes) או מאפיינים (properties) ושיטות או מתודות (methods).
המחלקה היא התבנית שממנה בנויים האובייקטים השונים. היחס שבין מחלקה לאובייקטים שלה הוא כמו היחס שבין שרטוט של בית לבתים שנבנים ממנו. השרטוט הוא לא הבית, אבל בית נבנה על פיו.
#אז איך זה יעבוד במחלקה "מכונית"...
יש בהגדרת המחלקה את התכונות, או הפרופרטיז של האובייקט (למשל הדגם, המידה, הצבע של המכונית), אבל בלי הערכים הספציפיים (כמו פג'ו, אקסטרה לארג', צבע כחול).
יש במחלקה גם את השיטות (Methods) של האובייקט, כמו נסיעה, בלימה וכו'.
בשפת תוכנה מונחית עצמים יש המון קלאסז מוכנים, אבל גם המתכנת יכול ליצור לעצמו עצמים חדשים משל עצמו. זה הכוח של התכנות מונחה האובייקטים.
#המחלקה כבלופרינט
מחלקה (Class) בשפת תכנות מונחית עצמים היא סוג של בלופרינט (Blueprint), משהו בין תכנית אב לאבטיפוס בעולם האמיתי.
בלופרינטס הם שרטוטים המשמשים כתכניות להקמה של מבנים. כך יכולה אותה תכנית לשמש לבנייה של בניינים שונים, בעלי מאפיינים משותפים שהוגדרו באותה ארכיטקטורה בסיסית., אך גם דברים ייחודיים של כל אחד לעצמו, שאין למקביליו, שנבנו מאותו בלופרינט.
כל בית שנבנה באמצעות התכנית הזו יכלול את החדרים, אך בבית אחד הקירות יכולים להיות צבועים בצהוב ובאחר הם לבנים. כלומר הם ייחודיים מצד אחד ומצד שני הם עדיין קשורים באמצעות התוכנית. הבתים הללו הם האובייקטים של המחלקה של "מבנים" או "בתים".
#אובייקט הוא יחידה של מחלקה
אם המחלקה בשפת תכנות היא תכנית שממנה ניתן ליצור אובייקטים, אז האובייקט הוא מקרה פרטי, או יחידה של מחלקה. אם הקלאס הוא רעיון, האובייקט הוא הממשות שלו, משהו מעין פיזיקלי שנוצר מקלאס.
המשותף לכל האובייקטים שנוצרו על בסיס מחלקה כלשהי הוא שלכולם אותן תכונות (Properties) וכולם יכולים לבצע פעולות זהות (Methods). לדוגמה, לכל המכוניות יש מנוע וצבע משלהן וכולן יוכלו לנסוע ולבלום.
הגדרת הקלאס מאפשרת לפרט את מאפייני האובייקט ולציין גם את השיטות והפעולות בהן יכול האובייקט להשתמש. המחלקה, כלומר הקלאס (Class), קובעת איך כל אובייקט נראה ואיך הוא מתנהג ואחרי כן ניתן לעשות עליו מניפולציות, באמצעות ערכים (Values) ספציפיים.
#תיאורטית...
הקלאס הוא מרכיב המאחסן משתנים ופונקציות. בקלאסז נשתמש לאחסן את הדאטה ואת הפונקציונליות שרלוונטית לדאטה הזו, כלומר המרכיבים הלוגיים שלה.
הקלאס הוא, אם כן, קטע תוכנה שמגדיר את כל המידע והפונקציות שעובדות עם המידע. מחלקה מכילה אוסף המאוגד במבנה לוגי משותף, של משתנים (פרופרטיז), מאפיינים ופונקציות (מתודות) הפועלים יחד.
כדי להבדיל ביניהם לבין משתנים ופונקציות רגילים, נוהגים לקרוא למשתנה בתוך מחלקה "תכונה" (Property) ולפונקציה בתוך מחלקה קוראים "שיטה" (Method).
#דוגמה אחרונה
אם מחלקה או class היא blueprint, תכנית-אב לאובייקט חדש, אז בואו נגדיר מחלקה של "מטוס נוסעים".
אובייקט שנוצר ממנו הוא ההתממשות הספציפית של רעיון "מטוס הנוסעים". מטוס בואינג דרימליינר, בצבע לבן, עם מנוע סילון מדגם 234 הוא אובייקט, עם מאפיינים וערכים משלו.
הסבר של המאפיינים וכיצד הם משתייכים למחלקות:
https://youtu.be/tE2e9SXLyQs?end=2m14s
סרטון שמסביר את הגדרת המחלקות והשימוש בהן בשפת Java:
https://youtu.be/L5XI50A1az4
למדו על המחלקה בתכנות בשפת פייתון:
https://youtu.be/ZZCnfRmxq6s
והסבר על הגדרת מחלקות ב-Javascript, ביחד עם עוד דברים:
https://youtu.be/Q0IFtEB1RH4
אבני בניין עיקריות ומשמעותיות במיוחד לכתיבת קוד מובנה בתכנות מונחה עצמים, הן ה-Classes, בעברית "מחלקות". המחלקות מאפשרות לכתוב תכניות מודולריות, יעילות וחסכוניות מאוד בקוד.
המחלקה (class) היא סוג של מנגנון להגדרה של טיפוסים בתכנית. יש בה אוסף של נתונים ולצידם מבחר פעולות שאפשר לעשות עליהם. יש בה שני מרכיבים עיקריים. הראשון כולל את השדות, סוג של משתנים אוגרי נתונים. השני כולל מתודות או שיטות, שהן פונקציות הפועלות על המשתנים הללו.
המחלקה משפרת משמעותית את המבנה של כל תכנית מחשב. במקום לכתוב המון קוד שחוזר על עצמו, מסורבל, ארוך, בעל סיכויים גדולים לטעויות ובחלקו הגדול מיותר ולא יעיל, מהווה המחלקה שיטת תכנות שיוצרת קוד יעיל ופשוט.
#בואו נבחן את העולם לרגע
בואו נביט רגע על ציפורים. לכל הציפורים יש מאפיינים משותפים, כמו מקור, זנב וכנפיים. אבל האם לכולן יש למשל את אותן כנפיים? - התשובה היא כמובן שלא. המאפיינים אם כך, הם בעצם סוג של משתנים (Variables), שיכולים להשתנות מסוג לסוג ואפילו בין ציפורים מסוג זהה. אם נביט על העורב למשל, הרי שהוא אובייקט (Object), כלומר פרט במחלקה הזו של הציפורים. מכאן שיש לו נוצות.
הנוצות בדוגמה של הציפורים הן מאפיינים (properties). לכל החברים במחלקה יש מאפיינים משותפים, שנוצות הוא אחד מהם.
אבל האם כל המאפיינים הללו זהים אצל כולם? - התשובה היא לא. הגדרת המחלקה לא אומרת למשל את הצבע של הנוצות של חבריה.
בתכנות מונחה עצמים הצבע הוא בעצם משתנה (Variable), שיכול לקבל ערכים שונים, כמו הערך (Value) שחור (Black) אצל האובייקט עורב או ורוד אצל אובייקט הפלמינגו.
זוכרים את המאפיינים? - בתכנות מונחה עצמים המשתנה הזה של צבע הנוצה נקרא "מאפיין" (Property). אז ה-Property, כלומר משתנה צבע הנוצה, מקבל אצל העורב ערך (Value) של... שחור.
#התבלבלתם? - עוד דוגמה...
בואו נחשוב על החיים, כשאנו מתארים את המכונית שקנינו. איננו נדרשים בכל פעם לתאר מהי מכונית, איך היא בנויה, כיצד היא נוסעת, עוצרת, ננעלת וכדומה - אנחנו פשוט מספרים שקנינו מכונית פורשה מהירה וחזקה במיוחד. זה מספיק כדי שהשומעים יבינו המון. את המשמעות הכללית של מהי מכונית הם הרי מכירים מזמן. הם יודעים המון על מכוניות. מחלקה חוסכת את ה"חפירה", כלומר את אותו מידע מיותר שניתן היה לפרט בכל פעם שמדברים על מכונית.
#אז מהי מחלקה?
כמו המושג "מכונית", המחלקה היא אבטיפוס של אובייקטים. מגדירים אותה פעם אחת ואז ניתן ליצור ממנה אינסוף אובייקטים.
כל מחלקה מכילה תכונות (attributes) או מאפיינים (properties) ושיטות או מתודות (methods).
המחלקה היא התבנית שממנה בנויים האובייקטים השונים. היחס שבין מחלקה לאובייקטים שלה הוא כמו היחס שבין שרטוט של בית לבתים שנבנים ממנו. השרטוט הוא לא הבית, אבל בית נבנה על פיו.
#אז איך זה יעבוד במחלקה "מכונית"...
יש בהגדרת המחלקה את התכונות, או הפרופרטיז של האובייקט (למשל הדגם, המידה, הצבע של המכונית), אבל בלי הערכים הספציפיים (כמו פג'ו, אקסטרה לארג', צבע כחול).
יש במחלקה גם את השיטות (Methods) של האובייקט, כמו נסיעה, בלימה וכו'.
בשפת תוכנה מונחית עצמים יש המון קלאסז מוכנים, אבל גם המתכנת יכול ליצור לעצמו עצמים חדשים משל עצמו. זה הכוח של התכנות מונחה האובייקטים.
#המחלקה כבלופרינט
מחלקה (Class) בשפת תכנות מונחית עצמים היא סוג של בלופרינט (Blueprint), משהו בין תכנית אב לאבטיפוס בעולם האמיתי.
בלופרינטס הם שרטוטים המשמשים כתכניות להקמה של מבנים. כך יכולה אותה תכנית לשמש לבנייה של בניינים שונים, בעלי מאפיינים משותפים שהוגדרו באותה ארכיטקטורה בסיסית., אך גם דברים ייחודיים של כל אחד לעצמו, שאין למקביליו, שנבנו מאותו בלופרינט.
כל בית שנבנה באמצעות התכנית הזו יכלול את החדרים, אך בבית אחד הקירות יכולים להיות צבועים בצהוב ובאחר הם לבנים. כלומר הם ייחודיים מצד אחד ומצד שני הם עדיין קשורים באמצעות התוכנית. הבתים הללו הם האובייקטים של המחלקה של "מבנים" או "בתים".
#אובייקט הוא יחידה של מחלקה
אם המחלקה בשפת תכנות היא תכנית שממנה ניתן ליצור אובייקטים, אז האובייקט הוא מקרה פרטי, או יחידה של מחלקה. אם הקלאס הוא רעיון, האובייקט הוא הממשות שלו, משהו מעין פיזיקלי שנוצר מקלאס.
המשותף לכל האובייקטים שנוצרו על בסיס מחלקה כלשהי הוא שלכולם אותן תכונות (Properties) וכולם יכולים לבצע פעולות זהות (Methods). לדוגמה, לכל המכוניות יש מנוע וצבע משלהן וכולן יוכלו לנסוע ולבלום.
הגדרת הקלאס מאפשרת לפרט את מאפייני האובייקט ולציין גם את השיטות והפעולות בהן יכול האובייקט להשתמש. המחלקה, כלומר הקלאס (Class), קובעת איך כל אובייקט נראה ואיך הוא מתנהג ואחרי כן ניתן לעשות עליו מניפולציות, באמצעות ערכים (Values) ספציפיים.
#תיאורטית...
הקלאס הוא מרכיב המאחסן משתנים ופונקציות. בקלאסז נשתמש לאחסן את הדאטה ואת הפונקציונליות שרלוונטית לדאטה הזו, כלומר המרכיבים הלוגיים שלה.
הקלאס הוא, אם כן, קטע תוכנה שמגדיר את כל המידע והפונקציות שעובדות עם המידע. מחלקה מכילה אוסף המאוגד במבנה לוגי משותף, של משתנים (פרופרטיז), מאפיינים ופונקציות (מתודות) הפועלים יחד.
כדי להבדיל ביניהם לבין משתנים ופונקציות רגילים, נוהגים לקרוא למשתנה בתוך מחלקה "תכונה" (Property) ולפונקציה בתוך מחלקה קוראים "שיטה" (Method).
#דוגמה אחרונה
אם מחלקה או class היא blueprint, תכנית-אב לאובייקט חדש, אז בואו נגדיר מחלקה של "מטוס נוסעים".
אובייקט שנוצר ממנו הוא ההתממשות הספציפית של רעיון "מטוס הנוסעים". מטוס בואינג דרימליינר, בצבע לבן, עם מנוע סילון מדגם 234 הוא אובייקט, עם מאפיינים וערכים משלו.
הסבר של המאפיינים וכיצד הם משתייכים למחלקות:
https://youtu.be/tE2e9SXLyQs?end=2m14s
סרטון שמסביר את הגדרת המחלקות והשימוש בהן בשפת Java:
https://youtu.be/L5XI50A1az4
למדו על המחלקה בתכנות בשפת פייתון:
https://youtu.be/ZZCnfRmxq6s
והסבר על הגדרת מחלקות ב-Javascript, ביחד עם עוד דברים:
https://youtu.be/Q0IFtEB1RH4
מהם משתנים בתכנות מחשבים?
דמיינו בקבוק ריק. זהו המשתנה שלנו. יש לו שם משתנה, בקבוק. בתוכנה יכולים להיות משתנים אחרים, כמו ארגז, ארון וכדומה. הם יכולים להיות גם מאוד ספציפיים, כמו ארון בגדים, ארון כלים או ארון נעליים.
נחזור למשתנה הבקבוק. נוכל לאחסן בו משקה כלשהו. סוג המשקה הזה הוא "ערך" המשתנה. הערך של המשתנה יכול להשתנות, כלומר תמיד ניתן לשתות או לשפוך את תוכן הבקבוק ואז למזוג אליו משקה אחר. זו הסיבה בתוכנת מחשב שהוא נקרא "משתנה" ולא "קבוע".
#בתוכנה
אז משתנה (Variable) בתכנות הוא מרכיב מרכזי בתוכנית מחשב, שמהווה בעצם זיכרון. הוא מעין תא תכנותי, קופסת איחסון (Place holder). הנתונים שנשמור במשתנה יכולים להיות כאלה שאנו מייצרים במהלך התכנית, או כאלה שקיבלנו מהמשתמש.
המשתנה מכיל נתון, שיכול להשתנות בזמן הריצה של התכנית - על פי הפקודות הניתנות לו. בכך הוא שונה מהקבוע (const או final), בו נשאר הערך שנקבע בתחילת ההרצה של התכנית ועד סופה ללא שינוי.
#התפקיד
משתנים הם ללא ספק אבני הבניין של שפות תכנות.
המשתנה משמש בתכנית כדי לזכור, לאחסן ולשמור על נתונים להמשך התכנית. זהו מעין לוקר תכנותי, שנוכל לתת לו שם, בהתאם לנתונים שהוא יאחסן. שם המשתנה הוא כמו התווית שעל הקופסה שהוא ובפעם הראשונה שנגדיר את המשתנה יופיע לפניו סימון שמדובר במשתנה (משהו כמו var, כקיצור של variable).
הנתונים שיאוחסנו במשתנה יכולים להיות מוגבלים לסוג מסוים. סוג המשתנה אומר מה יש או יכול להיות בו (מספרים שלמים, עשרוניים, מחרוזות תווים וכו').
למשל מחרוזות טקסט (שיוגדרו כ-String), מספרים שלמים (int), מספרים עשרוניים (double או float) ועוד. את הסוג של הנתונים, ניתן לקבוע כשמגדירים משתנה, כמו שהגדרנו var למשתנה כללי המקבל כל סוג של נתון.
#מה קורה כשמחליפים נתונים?
היות וניתן להחליף את ערכי המשתנה במהלך התכנית, הערך החדש יחליף את הקודם והמשתנה יקבל אותו מרגע השינוי. הערך הקודם, אם היה ספק, יישכח ולא יהיה משהו שיזכיר אותו. כך עובדת תכנית מחשב.
משתנים הם הבסיס של שפת תכנות באשר היא. הם מאפשרים לעשות מניפולציות על הנתונים ולאחסן בהם את התוצאות של אותן פעולות שעשינו.
את שם המשתנה קובע המתכנת. השם הזה הוא ייחודי ואין שני משתנים עם אותו השם. אם נטעה וננסה לתת שוב שם שכבר נתנו - נקבל שגיאה.
הנה סרטון שמסביר מהו משתנה:
https://youtu.be/xjZDZ1TJe4o?t=48s&end=1m53s
המשתנים לתלמידי תכנות שפת פייתון (עברית):
https://youtu.be/FadkQtKw2Dc
והסבר משתנים ב-Javascript (עברית):
https://youtu.be/F6hLRLho0Lc
דמיינו בקבוק ריק. זהו המשתנה שלנו. יש לו שם משתנה, בקבוק. בתוכנה יכולים להיות משתנים אחרים, כמו ארגז, ארון וכדומה. הם יכולים להיות גם מאוד ספציפיים, כמו ארון בגדים, ארון כלים או ארון נעליים.
נחזור למשתנה הבקבוק. נוכל לאחסן בו משקה כלשהו. סוג המשקה הזה הוא "ערך" המשתנה. הערך של המשתנה יכול להשתנות, כלומר תמיד ניתן לשתות או לשפוך את תוכן הבקבוק ואז למזוג אליו משקה אחר. זו הסיבה בתוכנת מחשב שהוא נקרא "משתנה" ולא "קבוע".
#בתוכנה
אז משתנה (Variable) בתכנות הוא מרכיב מרכזי בתוכנית מחשב, שמהווה בעצם זיכרון. הוא מעין תא תכנותי, קופסת איחסון (Place holder). הנתונים שנשמור במשתנה יכולים להיות כאלה שאנו מייצרים במהלך התכנית, או כאלה שקיבלנו מהמשתמש.
המשתנה מכיל נתון, שיכול להשתנות בזמן הריצה של התכנית - על פי הפקודות הניתנות לו. בכך הוא שונה מהקבוע (const או final), בו נשאר הערך שנקבע בתחילת ההרצה של התכנית ועד סופה ללא שינוי.
#התפקיד
משתנים הם ללא ספק אבני הבניין של שפות תכנות.
המשתנה משמש בתכנית כדי לזכור, לאחסן ולשמור על נתונים להמשך התכנית. זהו מעין לוקר תכנותי, שנוכל לתת לו שם, בהתאם לנתונים שהוא יאחסן. שם המשתנה הוא כמו התווית שעל הקופסה שהוא ובפעם הראשונה שנגדיר את המשתנה יופיע לפניו סימון שמדובר במשתנה (משהו כמו var, כקיצור של variable).
הנתונים שיאוחסנו במשתנה יכולים להיות מוגבלים לסוג מסוים. סוג המשתנה אומר מה יש או יכול להיות בו (מספרים שלמים, עשרוניים, מחרוזות תווים וכו').
למשל מחרוזות טקסט (שיוגדרו כ-String), מספרים שלמים (int), מספרים עשרוניים (double או float) ועוד. את הסוג של הנתונים, ניתן לקבוע כשמגדירים משתנה, כמו שהגדרנו var למשתנה כללי המקבל כל סוג של נתון.
#מה קורה כשמחליפים נתונים?
היות וניתן להחליף את ערכי המשתנה במהלך התכנית, הערך החדש יחליף את הקודם והמשתנה יקבל אותו מרגע השינוי. הערך הקודם, אם היה ספק, יישכח ולא יהיה משהו שיזכיר אותו. כך עובדת תכנית מחשב.
משתנים הם הבסיס של שפת תכנות באשר היא. הם מאפשרים לעשות מניפולציות על הנתונים ולאחסן בהם את התוצאות של אותן פעולות שעשינו.
את שם המשתנה קובע המתכנת. השם הזה הוא ייחודי ואין שני משתנים עם אותו השם. אם נטעה וננסה לתת שוב שם שכבר נתנו - נקבל שגיאה.
הנה סרטון שמסביר מהו משתנה:
https://youtu.be/xjZDZ1TJe4o?t=48s&end=1m53s
המשתנים לתלמידי תכנות שפת פייתון (עברית):
https://youtu.be/FadkQtKw2Dc
והסבר משתנים ב-Javascript (עברית):
https://youtu.be/F6hLRLho0Lc
מה ההבדל בתכנות בין פריימוורק לספרייה?
שניים מהמושגים שתפגשו לא מעט בלימודי התכנות הם פריימוורק (Framework) וספרייה (Library). בעיקרון מרבית הספריות והפריימוורקים הם קודים לשימוש חוזר. הקודים האלה אמנם נכתבו על ידי אחרים, אבל יכולים לסייע לכם לפתור בקלות בעיות נפוצות בקוד שלכם.
אבל מהם השניים ומה ההבדל ביניהם?
#ההבדלים
ספריות ופריימוורקס (בעברית מסגרות) הן שתיהן רכיבי קוד שנכתב על ידי אחרים ומשמש לפתרון בעיות נפוצות.
מפתחים משתמשים בדרך כלל לסירוגין במונחים "ספרייה" (Library) ו"פריימוורק" (Framework), אבל יש ביניהן הבדל מהותי שכדאי להבין.
אם אתם מתכנתים ויצא לכם ליצור פונקציה, כדי שתחסוך לכם עבודה, אז ברכותינו - גם אם היא שלכם ונכתבה על ידכם, יצרתם ספרייה!
פריימוורק היא מסגרת תכנותית שאתם בוחרים והיא תקבע לכם את האופן בו תעבדו ותפתחו, בתמורה לקלות וליד מכוונת שהיא תציע לכם.
#המחשת ההבדלים
בואו נדמה את השניים לדברים שאתם מכירים מהבית שלכם:
ספרייה היא כמו לקנות רהיטים מ-Ikea. נניח שיש לכם בית (במטפורה זהו הקוד שלכם) ואתם צריכים עזרה ברהיטים שיהיו בו. במקום שתצטרכו לבנות שולחן מאפס, כלומר לכתוב הכל בעצמכם, איקאה מציעה לכם שולחנות מוכנים שרק צריך להביא ולהרכיב בבית שלכם. עם הספריות אתם בשליטה ובקוד, בניגוד לאיקאה, זה אפילו בחינם!
פריימוורק, לעומת הספרייה, היא יותר כמו לבנות מודל של בית. ניתן לדמות את הפריימוורק לסדרה של שרטוטים ולמבחר אפשרויות מוגדר של האדריכלות והעיצוב שלו. עם פריימוורק לא תוכלו לעשות כל מה שברצונכם, אבל זה גם יתרון, כי השליטה היא בידיו והוא יבקש מכם לתת את מה שהוא צריך ויבנה לכם את מה שאתם צריכים.
#ההבדל הטכני ביניהם
ההבדל הטכני בין פריימוורק לספרייה קשור ב"היפוך שליטה". אם בספרייה השליטה היא בידי המתכנת שמשתמש בה כרצונו, בפריימוורק השליטה היא בידי הפריימוורק.
בשימוש בספרייה, המתכנת הוא האחראי על זרימת היישום. הוא שבוחר מתי ואיפה להתקשר לספריה. כשמשתמשים בפריימוורק, היא שאחראית על הזרימה. כי הפריימוורק מציע למתכנת כמה מקומות לחבר את הקוד אבל זה הוא שקורא לקוד הזה לפי הצורך.
#סיכום
פריימוורק וספריות הם שניהם קוד שנכתב על ידי אחרים וניתן להסתייע בו כדי לבצע משימות נפוצות עם פחות קוד.
הפריימוורק לוקח את השליטה בתוכנית ואומר למתכנת מה הוא צריך. הוא דעתן ונותן למפתח פחות חופש, אבל בתמורה מספק לו בטחון וקלות בקידוד.
בספריה זה הפוך. המפתח מתקשר לספרייה ומשתמש בה כשהוא זקוק לה. למקודד יש כאן הרבה יותר חופש, אבל גם יותר אחריות וקידוד.
הנה המחשה מעניינת ומסבירה של ההבדלים בין הפריימוורק והספרייה:
https://youtu.be/D_MO9vIRBcA
פריימוורק:
https://youtu.be/BfhSoFARn6w
דוגמה לספריה הפופולרית ריאקט:
https://youtu.be/N3AkSS5hXMA
שניים מהמושגים שתפגשו לא מעט בלימודי התכנות הם פריימוורק (Framework) וספרייה (Library). בעיקרון מרבית הספריות והפריימוורקים הם קודים לשימוש חוזר. הקודים האלה אמנם נכתבו על ידי אחרים, אבל יכולים לסייע לכם לפתור בקלות בעיות נפוצות בקוד שלכם.
אבל מהם השניים ומה ההבדל ביניהם?
#ההבדלים
ספריות ופריימוורקס (בעברית מסגרות) הן שתיהן רכיבי קוד שנכתב על ידי אחרים ומשמש לפתרון בעיות נפוצות.
מפתחים משתמשים בדרך כלל לסירוגין במונחים "ספרייה" (Library) ו"פריימוורק" (Framework), אבל יש ביניהן הבדל מהותי שכדאי להבין.
אם אתם מתכנתים ויצא לכם ליצור פונקציה, כדי שתחסוך לכם עבודה, אז ברכותינו - גם אם היא שלכם ונכתבה על ידכם, יצרתם ספרייה!
פריימוורק היא מסגרת תכנותית שאתם בוחרים והיא תקבע לכם את האופן בו תעבדו ותפתחו, בתמורה לקלות וליד מכוונת שהיא תציע לכם.
#המחשת ההבדלים
בואו נדמה את השניים לדברים שאתם מכירים מהבית שלכם:
ספרייה היא כמו לקנות רהיטים מ-Ikea. נניח שיש לכם בית (במטפורה זהו הקוד שלכם) ואתם צריכים עזרה ברהיטים שיהיו בו. במקום שתצטרכו לבנות שולחן מאפס, כלומר לכתוב הכל בעצמכם, איקאה מציעה לכם שולחנות מוכנים שרק צריך להביא ולהרכיב בבית שלכם. עם הספריות אתם בשליטה ובקוד, בניגוד לאיקאה, זה אפילו בחינם!
פריימוורק, לעומת הספרייה, היא יותר כמו לבנות מודל של בית. ניתן לדמות את הפריימוורק לסדרה של שרטוטים ולמבחר אפשרויות מוגדר של האדריכלות והעיצוב שלו. עם פריימוורק לא תוכלו לעשות כל מה שברצונכם, אבל זה גם יתרון, כי השליטה היא בידיו והוא יבקש מכם לתת את מה שהוא צריך ויבנה לכם את מה שאתם צריכים.
#ההבדל הטכני ביניהם
ההבדל הטכני בין פריימוורק לספרייה קשור ב"היפוך שליטה". אם בספרייה השליטה היא בידי המתכנת שמשתמש בה כרצונו, בפריימוורק השליטה היא בידי הפריימוורק.
בשימוש בספרייה, המתכנת הוא האחראי על זרימת היישום. הוא שבוחר מתי ואיפה להתקשר לספריה. כשמשתמשים בפריימוורק, היא שאחראית על הזרימה. כי הפריימוורק מציע למתכנת כמה מקומות לחבר את הקוד אבל זה הוא שקורא לקוד הזה לפי הצורך.
#סיכום
פריימוורק וספריות הם שניהם קוד שנכתב על ידי אחרים וניתן להסתייע בו כדי לבצע משימות נפוצות עם פחות קוד.
הפריימוורק לוקח את השליטה בתוכנית ואומר למתכנת מה הוא צריך. הוא דעתן ונותן למפתח פחות חופש, אבל בתמורה מספק לו בטחון וקלות בקידוד.
בספריה זה הפוך. המפתח מתקשר לספרייה ומשתמש בה כשהוא זקוק לה. למקודד יש כאן הרבה יותר חופש, אבל גם יותר אחריות וקידוד.
הנה המחשה מעניינת ומסבירה של ההבדלים בין הפריימוורק והספרייה:
https://youtu.be/D_MO9vIRBcA
פריימוורק:
https://youtu.be/BfhSoFARn6w
דוגמה לספריה הפופולרית ריאקט:
https://youtu.be/N3AkSS5hXMA
מהם פרונט אנד, בק אנד ופול סטאק בתכנות?
פרונט אנד (Front-End) ובק אנד (Back-End) הם שני מושגים שמשתמשים בהם הרבה בעולם התכנות והנדסת התוכנה ויש אנשי תוכנה ומהנדסים שמתמחים בכל אחד מהם.
אבל מה המשמעות וההבדלים ביניהם?
כשמדברים על פרונט ובק אנד מדובר בשתי קטגוריות של מתכנתים ומהנדסים שאחראים לתכנות וניהול אתר אינטרנט או יישום מקוון. חלק מהם בצד המשתמש, או הלקוח (פרונט אנד), והאחרים בצד השרת, במנוע של האתר (בק אנד).
#Frontend
הפרונט אנד, צד המשתמש, כולל את כל מה שרואים באתר או באפליקציה, כל הצדדים הנראים, הוויזיאליים של הפיתוח. בין השאר הוא כולל את המסך, החלונות, הכפתורים, השדות והתפריטים. את ה-Front End רואה המשתמש ולא רק המפתח.
זהו צד הלקוח (Client), או צד המשתמש (User). הוא מפותח בטכנולוגיות האינטרנט הידועות והקלאסיות, של HTML, CSS, JavaScript ועוד. ממשקי ה-WEB כאן נועדו לאפשר תמיכה בתקשורת עם מסדי הנתונים והשרתים, תקשורת שעליה אחראי הבק אנד.
#Backend
הבק אנד, צד השרת, נמצא אכן ברקע. כאן נעשה כל הצד הלוגי וחישובי של. ב"בק אנד" מנוהלת הפעילות שמאחורי הקלעים של האתר, האפליקציה או התוכנה שבה אנו משתמשים. הבק אנד הוא שאחראי לפעולה החלקה, התקינה והיעילה של השירות. יש לו אחריות על התקשורת עם השרתים (Servers), שעליהם שמורים בסיסי הנתונים.
מתכנתי הבק אנד משתמשים בקודים ובסקריפטים בשפת התכנות המיועדת לכך, כדי לנהל את התקשורת הזו בצורה המיטבית. למעשה, הבק-אנד אחראי לניהול ולתפעול התקין של כל השרתים, בסיסי הנתונים והנתונים עצמם. זה תפקיד חיוני, כי באמצעות השרתים הללו מופעלים האתר או היישום. בלי פעילות תקינה שלהם מתחילות הצרות. אותן, במידה והן יתחילו, גם המשתמש ירגיש.
#ומה זה Fullstack?
יש קטגוריה של Full Stack (בתרגום חופשי "כל החבילה") והיא כוללת את האינטגרציה, השילוב המלא בין שתי הקודמות. אנשי פול סטאק מטפלים בכל הפעילות הזו, מקצה אל קצה. מדובר באנשים שיודעים לעשות את שני התפקידים, פרונט ובק אנד, ואת השילוב ביניהם.
למעשה, מפתחי פול סטאק יודעים לפתח בשפות השונות, הן בצד הלקוח והן בצד השרת. הם מפתחים גם את מה שנראה למבקרי האתר ונקרא ה-Frontend וגם את ה-backend, הצד שמאחורי הקלעים, זה שרובנו לא רואים וממילא לא מודעים לקיומו ולחשיבותו מספיק.
בכל מקרה, מדובר במפתחים בעלי ידע רב, השולטים בלא מעט שפות תכנות, סביבות פיתוח, פריימוורקים (Frameworks), עורכי קוד ובעיקר טכנולוגיות, שכל הזמן מתעדכנות, משתנות ומתחדשות.
היכולת של אנשי ה-Fullstack לנהל את הפרויקטים לכל אורכם הופך אותם לא פעם לבעלי יכולות ותפקידי ניהול פרויקטים בפיתוח, או לפחות פיקוח על בניית מוצרים בחברות גדולות.
בפרויקטים קטנים או בחברות סטארטאפ, מפתחים אנשי ה"פול סטאר" לא פעם לגמרי בעצמם את האתר, האפליקציה, התוכנה השלמה או הכל.
הנה הפרונט אנד, לעומת הבק אנד (עברית):
https://youtu.be/eU-C17D6hfU?t=17s
מהו פיתוח פרונט אנד? (עברית)
https://youtu.be/D7_PegGnhto
בק אנד:
https://youtu.be/XBu54nfzxAQ
והנה השניים וה"פול סטאק" שמשלב ידע בשניהם:
https://youtu.be/NMKdd1Hz06U
פרונט אנד (Front-End) ובק אנד (Back-End) הם שני מושגים שמשתמשים בהם הרבה בעולם התכנות והנדסת התוכנה ויש אנשי תוכנה ומהנדסים שמתמחים בכל אחד מהם.
אבל מה המשמעות וההבדלים ביניהם?
כשמדברים על פרונט ובק אנד מדובר בשתי קטגוריות של מתכנתים ומהנדסים שאחראים לתכנות וניהול אתר אינטרנט או יישום מקוון. חלק מהם בצד המשתמש, או הלקוח (פרונט אנד), והאחרים בצד השרת, במנוע של האתר (בק אנד).
#Frontend
הפרונט אנד, צד המשתמש, כולל את כל מה שרואים באתר או באפליקציה, כל הצדדים הנראים, הוויזיאליים של הפיתוח. בין השאר הוא כולל את המסך, החלונות, הכפתורים, השדות והתפריטים. את ה-Front End רואה המשתמש ולא רק המפתח.
זהו צד הלקוח (Client), או צד המשתמש (User). הוא מפותח בטכנולוגיות האינטרנט הידועות והקלאסיות, של HTML, CSS, JavaScript ועוד. ממשקי ה-WEB כאן נועדו לאפשר תמיכה בתקשורת עם מסדי הנתונים והשרתים, תקשורת שעליה אחראי הבק אנד.
#Backend
הבק אנד, צד השרת, נמצא אכן ברקע. כאן נעשה כל הצד הלוגי וחישובי של. ב"בק אנד" מנוהלת הפעילות שמאחורי הקלעים של האתר, האפליקציה או התוכנה שבה אנו משתמשים. הבק אנד הוא שאחראי לפעולה החלקה, התקינה והיעילה של השירות. יש לו אחריות על התקשורת עם השרתים (Servers), שעליהם שמורים בסיסי הנתונים.
מתכנתי הבק אנד משתמשים בקודים ובסקריפטים בשפת התכנות המיועדת לכך, כדי לנהל את התקשורת הזו בצורה המיטבית. למעשה, הבק-אנד אחראי לניהול ולתפעול התקין של כל השרתים, בסיסי הנתונים והנתונים עצמם. זה תפקיד חיוני, כי באמצעות השרתים הללו מופעלים האתר או היישום. בלי פעילות תקינה שלהם מתחילות הצרות. אותן, במידה והן יתחילו, גם המשתמש ירגיש.
#ומה זה Fullstack?
יש קטגוריה של Full Stack (בתרגום חופשי "כל החבילה") והיא כוללת את האינטגרציה, השילוב המלא בין שתי הקודמות. אנשי פול סטאק מטפלים בכל הפעילות הזו, מקצה אל קצה. מדובר באנשים שיודעים לעשות את שני התפקידים, פרונט ובק אנד, ואת השילוב ביניהם.
למעשה, מפתחי פול סטאק יודעים לפתח בשפות השונות, הן בצד הלקוח והן בצד השרת. הם מפתחים גם את מה שנראה למבקרי האתר ונקרא ה-Frontend וגם את ה-backend, הצד שמאחורי הקלעים, זה שרובנו לא רואים וממילא לא מודעים לקיומו ולחשיבותו מספיק.
בכל מקרה, מדובר במפתחים בעלי ידע רב, השולטים בלא מעט שפות תכנות, סביבות פיתוח, פריימוורקים (Frameworks), עורכי קוד ובעיקר טכנולוגיות, שכל הזמן מתעדכנות, משתנות ומתחדשות.
היכולת של אנשי ה-Fullstack לנהל את הפרויקטים לכל אורכם הופך אותם לא פעם לבעלי יכולות ותפקידי ניהול פרויקטים בפיתוח, או לפחות פיקוח על בניית מוצרים בחברות גדולות.
בפרויקטים קטנים או בחברות סטארטאפ, מפתחים אנשי ה"פול סטאר" לא פעם לגמרי בעצמם את האתר, האפליקציה, התוכנה השלמה או הכל.
הנה הפרונט אנד, לעומת הבק אנד (עברית):
https://youtu.be/eU-C17D6hfU?t=17s
מהו פיתוח פרונט אנד? (עברית)
https://youtu.be/D7_PegGnhto
בק אנד:
https://youtu.be/XBu54nfzxAQ
והנה השניים וה"פול סטאק" שמשלב ידע בשניהם:
https://youtu.be/NMKdd1Hz06U
מה זה API בעולם התוכנה והאינטרנט?
אחד המרכיבים החיוניים ביותר בעולם הדיגיטלי של ימינו נקרא API. זהו קיצור של "ממשק תכנות יישומים" (Application Programming Interface).
פתיחת API מאפשרת לתוכנות, אתרים ואפליקציות שונות לתקשר עם אחרות, לבקש משהו ולקבל אותו מהם. ה-API הוא הקישור בין הלקוח (תוכנה, אתר או אפליקציה), ליצרן התוכן או בעל המידע.
כדי להסביר איך API עובד נדמיין לרגע מסעדה יוקרתית, שבה כללי התקשורת בין הלקוחות למטבח מוגדרים היטב - מצד אחד יושב הסועד עם התפריט ומזמין ומצד שני המטבח מספק לו את ההזמנה. ה-API הוא המלצר שמעביר את ההזמנה של הלקוח (הסועד) לספק (המטבח) ומגיש את המבוקש, בחזרה אליו.
כמו ששום סועד לא יילך למטבח ויאמר לטבח או לשף מה להכין לו, הכללים בעולם של ה-API מגדירים את כללי התקשורת בין מערכות תוכנה.
API מהווה למעשה שער תקשורת מוסכם המאפשר לתוכנה אחת לבקש שירותים או מידע מתוכנה אחרת. כשאתם משתמשים באפליקציית מזג אוויר בטלפון שלכם, האפליקציה משתמשת ב-API כדי לפנות לשרת מרוחק, לבקש את נתוני מזג האוויר העדכניים - באמצעות פורמטים מובנים ומקובלים, כמו ג'ייסון (JSON) או איקס.אם.אל (XML) - לעבד אותם ולהציג אותם על המסך שלכם.
התפתחות האינטרנט המודרני והשירותים הדיגיטליים לא הייתה אפשרית ללא API. חברות ענק כמו גוגל (Google), פייסבוק (Facebook), מיקרוסופט (Microsoft) וטוויטר (Twitter) מספקות API שמאפשר למפתחים חיצוניים ליצור אפליקציות שמתחברות לשירותים שלהן. למשל, כשאתם נרשמים לאתר חדש באמצעות חשבון הגוגל שלכם, זה מתאפשר הודות ל-API של גוגל.
אפשר לחשוב על API כעל חוזה או הסכם בין שתי מערכות מחשב. החוזה הזה מגדיר בדיוק איך הן אמורות לתקשר זו עם זו - איזה מידע אפשר לבקש, באיזה פורמט הוא יישלח, מה יקרה במקרה של שגיאה.
כי בדיוק כמו שבני אדם זקוקים לשפה משותפת כדי לתקשר, כך גם תוכנות זקוקות ל-API כשפה משותפת.
בעולם העסקי המודרני, API הפך למנוע צמיחה משמעותי, במה שזכה לכינוי "כלכלת ה-API" ובאנגלית "API Economy". חברות רבות מציעות את השירותים שלהן דרך API, במה שמאפשר לעסקים אחרים לשלב את השירותים האלה במוצרים שלהם. למשל, כשאתם מזמינים מונית או אוכל דרך אפליקציה ומשלמים באמצעות כרטיס אשראי, מאחורי הקלעים מתרחשת תקשורת בין מספר API שונים - של שירות המוניות, של חברת האשראי ושל שירותי המפות והניווט.
עם הופעת טכנולוגיות חדשות כמו בינה מלאכותית וענן, התחום הזה ממשיך להתפתח במהירות. REST API נותר הסטנדרט הנפוץ ביותר, אך טכנולוגיות חדשות כמו גרף-קיואל (GraphQL) מציעות אלטרנטיבות מודרניות ומתקדמות.
שירותי API מודרניים נעשים חכמים, מהירים ומאובטחים יותר. הם מאפשרים יצירת שירותים חדשניים שלא היו אפשריים בעבר ומהווים את הבסיס לעולם הדיגיטלי המחובר שבו אנחנו חיים, תוך שהם משפיעים על כמעט כל היבט בחיינו המקוונים.
הנה הסבר ה-API:
https://youtu.be/OVvTv9Hy91Q
דוגמת המלצר מדויקת ומסבירה מה זה API:
https://youtu.be/s7wmiS2mSXY
הסבר נוסף ממנטורית:
https://youtu.be/bxuYDT-BWaI
והסבר פשוט ונכון (עברית):
https://youtu.be/xRGIymR8kuc?long=yes
אחד המרכיבים החיוניים ביותר בעולם הדיגיטלי של ימינו נקרא API. זהו קיצור של "ממשק תכנות יישומים" (Application Programming Interface).
פתיחת API מאפשרת לתוכנות, אתרים ואפליקציות שונות לתקשר עם אחרות, לבקש משהו ולקבל אותו מהם. ה-API הוא הקישור בין הלקוח (תוכנה, אתר או אפליקציה), ליצרן התוכן או בעל המידע.
כדי להסביר איך API עובד נדמיין לרגע מסעדה יוקרתית, שבה כללי התקשורת בין הלקוחות למטבח מוגדרים היטב - מצד אחד יושב הסועד עם התפריט ומזמין ומצד שני המטבח מספק לו את ההזמנה. ה-API הוא המלצר שמעביר את ההזמנה של הלקוח (הסועד) לספק (המטבח) ומגיש את המבוקש, בחזרה אליו.
כמו ששום סועד לא יילך למטבח ויאמר לטבח או לשף מה להכין לו, הכללים בעולם של ה-API מגדירים את כללי התקשורת בין מערכות תוכנה.
API מהווה למעשה שער תקשורת מוסכם המאפשר לתוכנה אחת לבקש שירותים או מידע מתוכנה אחרת. כשאתם משתמשים באפליקציית מזג אוויר בטלפון שלכם, האפליקציה משתמשת ב-API כדי לפנות לשרת מרוחק, לבקש את נתוני מזג האוויר העדכניים - באמצעות פורמטים מובנים ומקובלים, כמו ג'ייסון (JSON) או איקס.אם.אל (XML) - לעבד אותם ולהציג אותם על המסך שלכם.
התפתחות האינטרנט המודרני והשירותים הדיגיטליים לא הייתה אפשרית ללא API. חברות ענק כמו גוגל (Google), פייסבוק (Facebook), מיקרוסופט (Microsoft) וטוויטר (Twitter) מספקות API שמאפשר למפתחים חיצוניים ליצור אפליקציות שמתחברות לשירותים שלהן. למשל, כשאתם נרשמים לאתר חדש באמצעות חשבון הגוגל שלכם, זה מתאפשר הודות ל-API של גוגל.
אפשר לחשוב על API כעל חוזה או הסכם בין שתי מערכות מחשב. החוזה הזה מגדיר בדיוק איך הן אמורות לתקשר זו עם זו - איזה מידע אפשר לבקש, באיזה פורמט הוא יישלח, מה יקרה במקרה של שגיאה.
כי בדיוק כמו שבני אדם זקוקים לשפה משותפת כדי לתקשר, כך גם תוכנות זקוקות ל-API כשפה משותפת.
בעולם העסקי המודרני, API הפך למנוע צמיחה משמעותי, במה שזכה לכינוי "כלכלת ה-API" ובאנגלית "API Economy". חברות רבות מציעות את השירותים שלהן דרך API, במה שמאפשר לעסקים אחרים לשלב את השירותים האלה במוצרים שלהם. למשל, כשאתם מזמינים מונית או אוכל דרך אפליקציה ומשלמים באמצעות כרטיס אשראי, מאחורי הקלעים מתרחשת תקשורת בין מספר API שונים - של שירות המוניות, של חברת האשראי ושל שירותי המפות והניווט.
עם הופעת טכנולוגיות חדשות כמו בינה מלאכותית וענן, התחום הזה ממשיך להתפתח במהירות. REST API נותר הסטנדרט הנפוץ ביותר, אך טכנולוגיות חדשות כמו גרף-קיואל (GraphQL) מציעות אלטרנטיבות מודרניות ומתקדמות.
שירותי API מודרניים נעשים חכמים, מהירים ומאובטחים יותר. הם מאפשרים יצירת שירותים חדשניים שלא היו אפשריים בעבר ומהווים את הבסיס לעולם הדיגיטלי המחובר שבו אנחנו חיים, תוך שהם משפיעים על כמעט כל היבט בחיינו המקוונים.
הנה הסבר ה-API:
https://youtu.be/OVvTv9Hy91Q
דוגמת המלצר מדויקת ומסבירה מה זה API:
https://youtu.be/s7wmiS2mSXY
הסבר נוסף ממנטורית:
https://youtu.be/bxuYDT-BWaI
והסבר פשוט ונכון (עברית):
https://youtu.be/xRGIymR8kuc?long=yes
מה זה HTML ולמה משמש CSS?
HTML (קיצור של HyperText Markup Language) היא שפה או פרוטוקול שבו כתובים דפי אינטרנט ואתרי אינטרנט פשוטים. כלומר, זו שפה שבאמצעותה ניתן ליצור דפי אינטרנט ואתרים.
CSS, לעומתה, היא שפת סגנון בסיסית, שגורמת לדפי אינטרנט להיראות טוב.
להדגמת ההבדל נדמה את האתר לבית. אם HTML מציעה את חומרי הבנייה שמהם הוא ייבנה, הרי ש-CSS מציעה את הצבעים ואת חומרי ומרכיבי העיצוב והסגנון של הבית.
או המחשה נוספת - אם HTML קובע כיצד המכונית שלך תיסע, ה-CSS יקבע כיצד היא תיראה.
שתי השפות הללו הן מעין שפות תכנות פשוטות מאוד, אבל למעשה הן לא שפות תכנות של ממש. שתיהן נמנות על טכנולוגיות האינטרנט הידועות, הקלאסיות והראשונות ששימשו לכתיבת אתרי אינטרנט והן לא התפתחו מעבר לכך.
מה שקרה הוא שעם השנים וככל שנדרשו תכונות משוכללות יותר לאתרי אינטרנט, הצטרפו אליהן שפות תכנות חדשות וחזקות יותר וגם כלים רבים אחרים. בתחילה היו אלה שפות כמו asp ו-php. כיום חזקות בתחום יישומי האינטרנט שפת התכנות JavaScript והספריה שלה, הידועה ומאוד פופולרית לעיצוב ממשקים, React.
הנה ה-HTML:
https://youtu.be/akf9j0Jo0PE
ה-CSS:
https://youtu.be/1srYXgDRNak
מדריך שמסביר מצוין את עולם ה-HTML ב-12 דקות:
https://youtu.be/bWPMSSsVdPk?long=yes
ומדריך ל-CSS ב-12 דקות:
https://youtu.be/0afZj1G0BIE?long=yes
HTML (קיצור של HyperText Markup Language) היא שפה או פרוטוקול שבו כתובים דפי אינטרנט ואתרי אינטרנט פשוטים. כלומר, זו שפה שבאמצעותה ניתן ליצור דפי אינטרנט ואתרים.
CSS, לעומתה, היא שפת סגנון בסיסית, שגורמת לדפי אינטרנט להיראות טוב.
להדגמת ההבדל נדמה את האתר לבית. אם HTML מציעה את חומרי הבנייה שמהם הוא ייבנה, הרי ש-CSS מציעה את הצבעים ואת חומרי ומרכיבי העיצוב והסגנון של הבית.
או המחשה נוספת - אם HTML קובע כיצד המכונית שלך תיסע, ה-CSS יקבע כיצד היא תיראה.
שתי השפות הללו הן מעין שפות תכנות פשוטות מאוד, אבל למעשה הן לא שפות תכנות של ממש. שתיהן נמנות על טכנולוגיות האינטרנט הידועות, הקלאסיות והראשונות ששימשו לכתיבת אתרי אינטרנט והן לא התפתחו מעבר לכך.
מה שקרה הוא שעם השנים וככל שנדרשו תכונות משוכללות יותר לאתרי אינטרנט, הצטרפו אליהן שפות תכנות חדשות וחזקות יותר וגם כלים רבים אחרים. בתחילה היו אלה שפות כמו asp ו-php. כיום חזקות בתחום יישומי האינטרנט שפת התכנות JavaScript והספריה שלה, הידועה ומאוד פופולרית לעיצוב ממשקים, React.
הנה ה-HTML:
https://youtu.be/akf9j0Jo0PE
ה-CSS:
https://youtu.be/1srYXgDRNak
מדריך שמסביר מצוין את עולם ה-HTML ב-12 דקות:
https://youtu.be/bWPMSSsVdPk?long=yes
ומדריך ל-CSS ב-12 דקות:
https://youtu.be/0afZj1G0BIE?long=yes
אילו תכונות מאפיינות אלגוריתמים?
האלגוריתם הוא הדרך לפתרון בעיה אלגוריתמית. הוא הבסיס לתוכנת מחשב.
כשהוא בנוי נכון יש לאלגוריתם כמה תכונות:
#הוראות מסודרות
הוא מורכב מהוראות המוגדרות ברמת פירוט הנדרשת למבצע ההוראות. כל ההוראות חייבות להיות ברורות ואפשריות לביצוע.
#פתרון לכל נקודת מוצא
עליו לתת פתרון, או לפחות מענה, המתאימים לכל קלט חוקי שהוא מקבל בנקודת המוצא שלו.
#מספר סופי של צעדים
על האלגוריתם להיות בעל מספר סופי של צעדים מהבעיה לפתרון. בכל מקרה אחר הוא יהיה אינסופי ולפיכך לא יעיל.
הנה האלגוריתם ותכונותיו (מתורגם):
https://youtu.be/6hfOvs8pY1k
האלגוריתם הוא הדרך לפתרון בעיה אלגוריתמית. הוא הבסיס לתוכנת מחשב.
כשהוא בנוי נכון יש לאלגוריתם כמה תכונות:
#הוראות מסודרות
הוא מורכב מהוראות המוגדרות ברמת פירוט הנדרשת למבצע ההוראות. כל ההוראות חייבות להיות ברורות ואפשריות לביצוע.
#פתרון לכל נקודת מוצא
עליו לתת פתרון, או לפחות מענה, המתאימים לכל קלט חוקי שהוא מקבל בנקודת המוצא שלו.
#מספר סופי של צעדים
על האלגוריתם להיות בעל מספר סופי של צעדים מהבעיה לפתרון. בכל מקרה אחר הוא יהיה אינסופי ולפיכך לא יעיל.
הנה האלגוריתם ותכונותיו (מתורגם):
https://youtu.be/6hfOvs8pY1k
איך מנפים שגיאות באמצעות ברווז גומי?
כשמתכנתים כותבים קוד שנועד לגרום למחשבים לעבוד בצורה מסוימת ולבצע פעולות מוגדרות, יפלו פה ושם גם שגיאות תכנות. אלו מכונות "באגים". כדי לאתר ולתקן שגיאות, הם משתמשים בשיטות שונות לאתר "באגים", שגיאות קוד.
אחת השיטות היותר משעשעות לאיתור באגים בקוד תוכנה היא "ניפוי השגיאות באמצעות ברווז גומי" (Rubber Duck Debugging). מדובר בשיטה משעשעת אך אמיתית לחלוטין לניפוי שגיאות קוד, שבעזרתה מתכנתים מוצאים באגים בתוכנת מחשב או במוצרי חומרה שמתוכנתים לפעול בדרך מסוימת. זאת כדי לתקנם ולגרום להם לפעול היטב.
בשיטה הזו מסביר המתכנת כיצד פועל הקוד שכתב, לחפץ דומם, כמו ברווז גומי. הרעיון הוא שתוך כדי ההסבר המפורט לברווז הגומי, שורה אחר שורה, של מה שעושה כל חלק של הקוד, יצליח המתכנת להבחין בשגיאות שבו, בזכות ההסבר שהוא נדרש לספק לגבי כל פעולה שמבצע הקוד.
מקור השם של השיטה הוא בסיפור שהוצג בספר "המתכנת המעשי" (The Pragmatic Programmer). בסיפור תואר מתכנת שמצליח לנפות שגיאות קוד שלו, בכך שהוא מכריח את עצמו להסביר את הקוד שלו לברווז הגומי הסתמי שלו.
השיטה נקראת גם "מבחן ברווז הגומי" או "בִּירווּז", על משקל תכנות. היא יעילה ותורמת גם לתיעוד יעיל של התוכנה או המכשיר, לצורך כתיבת חוברת למשתמש או להוראתה. בדיקת שגיאות תוך היעזרות בברווז גומי מקבילה לבדיקה של הקוד על ידי עמיתים (שיטה שנקראת "Code Review") ולשיטה שבה מסביר המתכנת את הקוד למתכנת עמית (Software Walkthrough).
הנה סרטון על הבירווז - ניפוי השגיאות בעזרת ברווז גומי:
https://youtu.be/SJC5DAfCrHY
סיפור הניפוי של השגיאות באמצעות ברווז הגומי:
https://youtu.be/huOPVqztPdc
כך מנפים את השגיאות בעזרת ברווז גומי:
https://youtu.be/m4_depGYVkM
כשמתכנתים כותבים קוד שנועד לגרום למחשבים לעבוד בצורה מסוימת ולבצע פעולות מוגדרות, יפלו פה ושם גם שגיאות תכנות. אלו מכונות "באגים". כדי לאתר ולתקן שגיאות, הם משתמשים בשיטות שונות לאתר "באגים", שגיאות קוד.
אחת השיטות היותר משעשעות לאיתור באגים בקוד תוכנה היא "ניפוי השגיאות באמצעות ברווז גומי" (Rubber Duck Debugging). מדובר בשיטה משעשעת אך אמיתית לחלוטין לניפוי שגיאות קוד, שבעזרתה מתכנתים מוצאים באגים בתוכנת מחשב או במוצרי חומרה שמתוכנתים לפעול בדרך מסוימת. זאת כדי לתקנם ולגרום להם לפעול היטב.
בשיטה הזו מסביר המתכנת כיצד פועל הקוד שכתב, לחפץ דומם, כמו ברווז גומי. הרעיון הוא שתוך כדי ההסבר המפורט לברווז הגומי, שורה אחר שורה, של מה שעושה כל חלק של הקוד, יצליח המתכנת להבחין בשגיאות שבו, בזכות ההסבר שהוא נדרש לספק לגבי כל פעולה שמבצע הקוד.
מקור השם של השיטה הוא בסיפור שהוצג בספר "המתכנת המעשי" (The Pragmatic Programmer). בסיפור תואר מתכנת שמצליח לנפות שגיאות קוד שלו, בכך שהוא מכריח את עצמו להסביר את הקוד שלו לברווז הגומי הסתמי שלו.
השיטה נקראת גם "מבחן ברווז הגומי" או "בִּירווּז", על משקל תכנות. היא יעילה ותורמת גם לתיעוד יעיל של התוכנה או המכשיר, לצורך כתיבת חוברת למשתמש או להוראתה. בדיקת שגיאות תוך היעזרות בברווז גומי מקבילה לבדיקה של הקוד על ידי עמיתים (שיטה שנקראת "Code Review") ולשיטה שבה מסביר המתכנת את הקוד למתכנת עמית (Software Walkthrough).
הנה סרטון על הבירווז - ניפוי השגיאות בעזרת ברווז גומי:
https://youtu.be/SJC5DAfCrHY
סיפור הניפוי של השגיאות באמצעות ברווז הגומי:
https://youtu.be/huOPVqztPdc
כך מנפים את השגיאות בעזרת ברווז גומי:
https://youtu.be/m4_depGYVkM
