» «
באג
מהו באג במחשבים?



באג הוא השם לתקלה במחשב או בתוכנה. הכל התחיל באחד מראשוני המחשבים בעולם - מחשב "הרווארד סימן 2". כשהתגלה במחשב סוג של עש (באנגלית BUG), מעין חרק שנתקע במחשב וגרם לתקלה הוחלט לקרוא לו "באג".

העש הוסר מהמחשב והודבק לדף ההתקלות 9 בשנת 1947. בעקבות אותו באג ראשון נהוג להתייחס לתקלות במחשב ובתוכנה כבאגים ומכאן המושג "באג". יש הטוענים שהמושג הומצא כבר במאה ה-19 אבל יש על כך ויכוחים רבים וספקות רבים.


הנה הבאגים במחשבים, דרך באג המחשבים הראשון:

http://youtu.be/NUnEoouyvGY
לולאה
מה ניתן לעשות עם לולאה בתכנות?



מתכנתים לא אוהבים לעשות שוב ושוב את אותה פעולה. לכן הם משתמשים בפטנטים כמו לולאה (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
משתנה
מהם משתנים בתכנות מחשבים?



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

נחזור למשתנה הבקבוק. נוכל לאחסן בו משקה כלשהו. סוג המשקה הזה הוא "ערך" המשתנה. הערך של המשתנה יכול להשתנות, כלומר תמיד ניתן לשתות או לשפוך את תוכן הבקבוק ואז למזוג אליו משקה אחר. זו הסיבה בתוכנת מחשב שהוא נקרא "משתנה" ולא "קבוע".


#בתוכנה
אז משתנה (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
ניפוי שגיאות באמצעות ברווז גומי
איך מנפים שגיאות באמצעות ברווז גומי?



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

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

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

מקור השם של השיטה הוא בסיפור שהוצג בספר "המתכנת המעשי" (The Pragmatic Programmer). בסיפור תואר מתכנת שמצליח לנפות שגיאות קוד שלו, בכך שהוא מכריח את עצמו להסביר את הקוד שלו לברווז הגומי הסתמי שלו.

השיטה נקראת גם "מבחן ברווז הגומי" או "בִּירווּז", על משקל תכנות. היא יעילה ותורמת גם לתיעוד יעיל של התוכנה או המכשיר, לצורך כתיבת חוברת למשתמש או להוראתה. בדיקת שגיאות תוך היעזרות בברווז גומי מקבילה לבדיקה של הקוד על ידי עמיתים (שיטה שנקראת "Code Review") ולשיטה שבה מסביר המתכנת את הקוד למתכנת עמית (Software Walkthrough).


הנה סרטון על הבירווז - ניפוי השגיאות בעזרת ברווז גומי:

https://youtu.be/SJC5DAfCrHY


סיפור הניפוי של השגיאות באמצעות ברווז הגומי:

https://youtu.be/huOPVqztPdc


כך מנפים את השגיאות בעזרת ברווז גומי:

https://youtu.be/m4_depGYVkM

באג

קובול
מהי שפת התכנות COBOL ומה העתיד שלה?



שפת קובול (COBOL), קיצור של Common Business-Oriented Language, היא שפת תכנות עתיקה ופורצת דרך, שנוצרה במיוחד לצרכי ניהול ועיבוד נתונים ואם תרצו, אפשר לראות בה את שפת המורשת של הטכנולוגיה.

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

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

פתאום מתכנתים החלו לכתוב קוד עם משפטים שיש בהם היגיון. החל מתנאים של if-than כמו "IF AGE IS GREATER THAN 70" ועד פקודת הצבה דוגמת "MOVE TOTAL TO FINAL-AMOUNT" - הכתיבה הזו הקלה על הכתיבה והזכירה של כתיבת קוד או איתור שגיאות בקוד קיים, דברים שאפשרו אפילו לאנשי מנהלה, פיננסים ועסקים להבין מה עושה הקוד שלפניהם.

קובול הייתה אז כמו גשר בין העולם העסקי או הארגוני לעולם הטכנולוגי, של התכנות והקוד.

הייתה זו המתכנתת האמריקאית הגאונה גרייס הופר (Grace Hopper) שהכינה את טכנולוגיית התכנות של זמנה לשפת קובול. היא עבדה על מהדרים (Compilers), תוכנות שתפקידן לתרגם קוד מחשב בשפת תכנות לשפת מכונה. הופר האמינה שניתן יהיה ליצור שפת תכנות שתהיה קרובה לשפה הטבעית, שפת בני אנוש, רעיון שנתפס אז כדימיוני ואולי בלתי אפשרי. ההצלחה הייתה כשפותחו לבסוף שפות עילית כמו COBOL והפכו להצלחה מסחררת.


#כיום
בימינו, קובול נחשבת לשפה ישנה, לפחות בסטנדרטים של עולם התכנות המודרני והמתקדם בקצב מסחרר. ובכל זאת, כעדות לחוזק ולאמינות של השפה הזו, שנוצרה לפני מעל חצי מאה, העובדות קובעות שחלק ניכר מהמערכות הבנקאיות והממשלתיות בעולם עדיין מנוהלות על ידה וכ-95% מהעסקאות בכספומטים ו-80% מהעסקאות הפיננסיות מבוצעות גם בימינו באמצעות מערכות קובול.

מומחים מעריכים שכ-3 טריליון דולר עוברים כל יום במערכות מחשוב מבוססות שפת COBOL.

המדהים הוא שהקוד שנכתב בקובול בשנות ה-60 וה-70 עדיין רץ בשרתים של לא מעט מוסדות גדולים, דוגמת בנקים, משרדי ממשלה, מוסדות ממשלתיים, בורסות (כמו זו של וול סטריט) ובמדינות מסוימות גם מערכות ביטחון וארגונים מפעם.

ובכל זאת, מספר מתכנתי הקובול בעולם הוא נמוך להפליא. המתכנתים הוותיקים שעוד נותרו ויודעים לעבוד עם קוד הקובול זכו לכינוי המחמיא "COBOL Cowboys".

דיווח של וול סטריט ג'ורנל ב-2025 סיפר שה"קובול קאובויז" של בנק מורגן סטנלי העולמי החליטו לא להמתין לתעשייה שתייצר כלי לשדרוג תשתית הקוד שלהם ובנו אחד כזה בעצמם.

כדי לייעל את עבודתם ולהוריד עומס עבודה שחורה, הם בנו את DevGen.AI. זהו כלי מבוסס מנוע ChatGPT שתוכנן כדי לסייע להם לעדכן ולכתוב מחדש את קוד הלגאסי, הקוד הישן של הבנק ולהתאימו לגרסאות הקובול המעודכנות.

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

עכשיו משמש DevGen.AI את אלפי המתכנתים של מורגן סטנלי ברחבי העולם. הם מעבירים באמצעותו קטעים של קוד לגאסי לשפות מודרניות ומקל את עבודת התכנות הידנית שלהם בהמשך.


הנה הסיפור של שפת התכנות COBOL:

https://youtu.be/LSc3Rffj-CM


הכל על COBOL ובקצרה:

https://youtu.be/7d7-etf-wNI


רק הקובול קאובויז COBOL Cowboys מחזיקים מערכות כאלה:

https://youtu.be/rrAd4RWJVg8


הסיבה ש-COBOL עדיין מצליחה כל כך:

https://youtu.be/l4tjTulHaOY


למה שווה ללמוד היום תכנות קובול?

https://youtu.be/I88KiLIPSg8


השיר של אנשי ונשות הקיוביקלס:

https://youtu.be/uKG0IEyeZb0


על שפת התכנות הקשישה שמניעה 3 טריליון דולר כל יום:

https://youtu.be/LWYmGhIFy-A?long=yes


ומדוע קובול רלוונטית היום מתמיד?

https://youtu.be/oxUzDPNDRQE?long=yes


אֵאוּרִיקַה - האנציקלופדיה של הסקרנות!

העולם הוא צבעוני ומופלא, אאוריקה כאן בשביל שתגלו אותו...

אלפי נושאים, תמונות וסרטונים, מפתיעים, מסקרנים וממוקדים.

ניתן לנווט בין הפריטים במגע, בעכבר, בגלגלת, או במקשי המקלדת

בואו לגלות, לחקור, ולקבל השראה!

אֵאוּרִיקַה - האנציקלופדיה של הסקרנות!

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