← C++ Course – Advanced Topics

מפגש 1 — ניהול זיכרון מתקדם: smart pointers ו-RAII

טוען נגן…

תמלול

## רקע על הקורס והקהילה

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

ונתחיל ככה, על מה הקהילה, למה היא נוצרה? יש פה כמה חבר'ה שהם פרצופים מוכרים. אנחנו התחלנו מלפני בערך, נגיד, שנה וחצי, קהילה סביב Arduino JS, שזה היה להתעסק במיקרו-בקרים בעזרת JavaScript. פתחנו סביב הדבר הזה אקדמיה, שהתחלנו כתוצאה מזה שאנשים רצו ללמוד את הטכנולוגיה שמאפשרת לשלוט בארדואינו בעזרת JavaScript, איזה שהוא קורס. Long story short, האקדמיה מאוד גדלה, והקהילה היא כבר למעלה מ-2,000 חבר'ה.

האקדמיה שלנו היא בעיקר לנשמה ולעודד סקרנות. אנחנו מאוד אוהבים מדע וטכנולוגיה. השותף שלי הוא מהנדס חשמל ומחשבים, ex-Intel בימים שעוד היה קפה. אני, יש לי תואר שני במכונות ועשיתי לימודי פיתוח תוכנה בטכניון. אנחנו מאוד אוהבים חומרה, מאוד אוהבים embedded.

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

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

אני אציין שבנוסף לקורס המבוא הזה שהיה לנו, ולקורס עכשיו של C++ מתקדם, הקורס הבא בסדרה עם מיכאל יהיה מה שאנחנו מגדירים אותו "פיתוח מערכות embedded", שזה כבר יהיה לגמרי לא עם ESP32, לא עם Arduino ולא עם Raspberry Pi Pico, אלא ממש עם ST ו-STM32Cube וסביבת הפיתוח של מה שנקרא העולם האמיתי. שזה יהיה קורס שהוא לגמרי מקצועי ויעזור גם במקומות העבודה, וידרוש עליו רקע, כי אנחנו לא רוצים שיהיו פערים מאוד מאוד גדולים בין הסטודנט שלא יודע C ו-C++ לבין הסטודנט שיודע קצת embedded. ולכן אנחנו עשינו את זה במדרגות: קורס מבוא, קורס מתקדם, ואז פיתוח מערכות embedded מלא.

## הצגת המרצה - מיכאל

ניתן ככה בריף על מיכאל. למיכאל יש תואר ראשון במדמ"ח מהאוניברסיטה הפתוחה. למעלה... שניכרתי אותו זה היה 17 שנות ניסיון, אני חושב שכבר האינדקס עלה ב-++, אז יש לנו כבר למעלה מ-18 שנות ניסיון כמפתח embedded. יש לו קילומטראז' של הרצאות של סטודנטים גלובליים, שהוא לימד גם כן פיתוח מערכות embedded, פיתוח ב-ST. הוא מומחה בשפת C, C++, גם במהלך הדרך למדתי להכיר שהוא גם מאוד בקי בשפות חדשות כמו Rust ודברים נוספים. ככה שידע מאוד נרחב מעבר לתאורטי, גם תעשייה, תעשייה פרקטית של איך עובדים בעולם האמיתי ב-embedded, איך מדברים עם חומרה, איך בכלל שפות כמו C ו-C++ נכתבות בצורה חכמה, כל הניהול זיכרון וכל הבאגים שהיה דיון בקהילה שלנו לגבי אם בטוח או לא בטוח לפתח איתם, אז איך אנחנו מפתחים בעזרת שפות שהן באמת low level בצורה נכונה כדי לא לגרום לדליפות זיכרון ודברים שהם בעייתיים.

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

אז מיכאל, תודה רבה שהצטרפת, והבמה שלך.

## סקירת סילבוס הקורס

יופי, תודה רבה שחף.

כן, כמו ששחף אמר, יש לי המון ניסיון בטכנולוגיות שונות, בפיתוח תוכנה. זה גם embedded, גם desktop, גם web, גם בקרת תנועה, גם industrial control.

ובעצם לקורס הזה אני מביא לא רק את הידע בשפה, שכמו שבקורס הראשון אמרתי, C++ באמת יודעים רק אלוהים ומי שכתב את ה-C++, אחרים סתם מכירים את השפה. בנוסף אני מביא גם את הניסיון - איך בעצם להתייחס נכון למשימה, איך בעצם נכון לכתוב את התוכנה, good practice, ולדעתי יהיה מעניין.

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

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

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

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

אוקיי, אז בוא נעבור על הנושאים של השיעורים.

### שיעור 1: ניהול זיכרון מתקדם (Advanced Memory Management)

שיעור ראשון, כמובן, ניהול זיכרון. כמו שאמר שחף, בעצם היה דיון לגבי זה אם כדאי לפתח בשפות נמוכות, נגיד ככה, או לא כדאי. לא מזמן ממשלת ארצות הברית גם הוציאה איזשהו מסמך כזה שממליצה לחברות, בינתיים ממליצה, כן? אבל בכוונה לא להשתמש ב-C וב-C++ בגלל כל הבעיות. אבל יש מצב שאת המסמך הזה הוציאו חבר'ה שלא ממש מבינים על מה מדובר. הם ממליצים להשתמש בשפות יותר מודרניות, איפה שכל הניהול של הזיכרון בעצם מתבצע על ידי איזשהו garbage collector או טכנולוגיות דומות, שפות כמו Rust לדוגמה וכולי.

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

אז אנחנו נלמד על Advanced Memory Management, אנחנו נלמד איך נכון להשתמש בזה, אנחנו נלמד גם טכנולוגיות חדשות, טכניקות חדשות ב-C++11 ומעלה, על איך בעצם להוריד את הסיכון ב-memory management, ונעשה כמה תרגילים על זה.

### שיעור 2: תבניות מתקדמות (Advanced Templates)

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

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

### שיעור 3: ריבוי תהליכונים ומקביליות (Multithreading and Concurrency)

Multithreading. multithreading, כן, עבודה עם כמה threads, processes. בדרך כלל משתמשים ב-threads ו-processes כמו אותו דבר, תכלס זה דברים שונים לגמרי.

בעצם זה נותן לנו לפתח תוכנה שחלק מהקוד בעצם מתבצע ב-thread שונה, נגיד, בגרשַיים, להבנה יותר פשוטה, ב-process אחר, אוקיי? ושואף להסתים. בעצם אנחנו יודעים שהוא הסתיים, אנחנו יכולים ל-processes המקבילים להכניס כל מיני עבודות עמוסות כמו כתיבה לקובץ, הורדה של דף אינטרנט וכולי. משתמשים בזה המון.

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

### שיעור 4: מקביליות מתקדמת (Advanced Concurrency)

שיעור רביעי, אנחנו נתקדם עם זה ונגיע יותר עמוק.

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

אז שיעור רביעי יכול להיות אני אחליף.

### שיעור 5: תקשורת רשת וסוקטים (Networking and Sockets)

שיעור חמישי: Networking and Sockets. זה בעצם תקשורת ברשת, תקשורת Ethernet, יכולה להיות מבוססת על כבל Ethernet או Wi-Fi או על פרוטוקול אחר. בסופו של דבר אנחנו נלמד איך לייצר את התקשורת, איך להעביר מידע. אולי נעשה איזשהו client-server כזה שאנחנו יכולים להעביר קובץ ממקום למקום. נראה.

### שיעור 6: תבניות עיצוב ב-C++ (Design Patterns in C++)

שיעור שש, הוא יהיה קצת משעמם, כי אנחנו נדבר על Design Patterns ב-C++. שוב, כמו שאמרתי קודם, זה לא רק ב-C++, יש בעוד הרבה שפות. בעצם משתמשים באותם פטרנים, כמו Factory, כמו Singleton וכולי. נלמד למה בעצם משתמשים בכל הפטרנס אלה, מה הוא נותן, היתרונות והחסרונות שלו.

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

### שיעור 7: תכונות C++ מודרניות (Modern C++ Features)

שיעור שביעי: C++ מתקדם, מ-11 ומעלה. אנחנו נלמד, לפחות ננסה ללמוד, את כל הדברים החדשים שיצאו מ-C++11, כי בעצם אפשר להגיד שזאת גרסה שממש קפצה בהתקדמות שלה מ-C++ של שנות 98', 99'.

יש מצב, שוב, אנחנו נראה איך אנחנו מתקדמים, יש מצב שאני גם אחליף את הנושא של השיעור השביעי. למה? כי רוב הדברים אנחנו נלמד במשך כל השיעורים הקודמים, אז נראה.

### שיעור 8: פיתוח ממשק משתמש רב-פלטפורמי (Cross-Platform GUI Development)

שיעור שמיני: Cross-Platform GUI Development. הכוונה שאנחנו נעשה ממשק משתמש שיעבוד בעצם גם ב-Windows, גם ב-Linux, גם במחשבי Apple. הספציפיות שלהם, כן, של מערכות ההפעלה. ניסה לפחות להשתמש בזה. אני אשתמש ב-framework שנקרא Qt, אוקיי? ובעצם נעשה איזושהי אפליקציה. יכול להיות אפליקציה גראפית שאנחנו מעבירים קבצים ממקום למקום, או שנעשה דברים נוספים, אולי איזושהי אפליקציה שמצפינה את הקבצים ואחר כך שוב מוציאה את המידע שהסתרנו. נראה, נראה מה יהיה אפשר לעשות.

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

שוב, לדעתי יהיה ממש מעניין. תצטרפו, בשמחה.

## סיכום ושאלות

תודה רבה, מיכאל.

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

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

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

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

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

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

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

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

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

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

אז מי שאין לו בעיה לדבר on the record, מוזמן לדבר.

נראה לי כולם בהלם. כולם בהלם קרב.

"אפשר לשלוח קישור לקבוצת WhatsApp?"

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

מי שרוצה תמיכה בקבוצות יותר גדולות ולא מכיר את הקהילה הגדולה שלנו, אז אני אשלח את הקישור לקבוצת WhatsApp הגדולה שלנו, מי שלא מכיר את הקהילות שלנו הוא יכול להצטרף אליה. רגע.

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

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

מי מכיר בכלל את כל הנושאים, אחד הנושאים שהצגתי?

אה, אוקיי. יפה.

"כן, אני ברמה כזו... מה התוכן ספציפית של מה שאתה אומר, אבל אם אני כותב ב-C++ הרבה זמן, אז אני מכיר."

אה, יפה. אוקיי.

מי זה היה? מאיר?

מאיר.

בהחלט. בהחלט. אני יכול להגיד לכם מניסיון אישי, כ-mechanical שלמד SolidWorks והתעסק הרבה בתכנון מכני, חשבתי שאני יודע הכל וכבר עבדתי בזה כמה שנים ופרנסתי מזה והכל טוב, ואז התחברתי עם בחור ב-Systematics, החבר'ה של הרישיונות של התוכנה הזאתי, עשיתי להם איזה סרטון שהם מאוד התלהבו ממנו, והוא החליט לפנק אותי ב-advanced topic, בקורס מתקדם. אמרתי לו: "מה אני צריך את זה? אני מלמד SolidWorks!" אמר לי: "בוא, הכל בסדר", והוא שכנע אותי כי הם נותנים 10bit בצהריים.

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

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

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

אני טיפה למדתי באוניברסיטה.

בסדר, מי ששוב רוצה לחזק את הידע הבסיסי, יש את ההקלטות של הקורס מבוא, אנחנו נותנים אותם בממש זול, אנחנו נותנים אותם עם... מי שנרשם לקורס הזה ב-150 ש"ח את ההקלטות של הקורס הקודם, שזה נזיד עדשים, זה מחיר ממש זול עבור מה שתקבלו שם.

עוד שאלות?

טוב, אני אעצור את ההקלטה.

C++11, כי בעצם אפשר להגיד שזאת גרסה שממש קפצה בהתקדמות שלה מ-C++ של שנות 98, 99.

יש מצב, שוב, אנחנו נראה איך אנחנו מתקדמים, יש מצב שאני גם אחליף את הנושא של השיעור השביעי. למה? כי רוב הדברים אנחנו נלמד במשך כל השיעורים הקודמים. אז נראה.

## Cross-Platform GUI Development

שיעור שמיני: Cross-Platform GUI Development with Windows and Linux. הכוונה שאנחנו נעשה ממשק משתמש שיעבוד בעצם גם ב-Windows, גם ב-Linux, גם במחשבי Apple, אין ספציפיות שלהם, כן? של מערכות הפעלה. ננסה לפחות להשתמש בזה. אני אשתמש ב-framework שנקרא Qt, אוקיי? ובעצם נעשה איזושהי אפליקציה, יכול להיות אפליקציה גרפית שאנחנו נעביר קבצים ממקום למקום, או שנעשה דברים נוספים. אולי איזושהי אפליקציה שמצפינה את הקבצים ואחר כך שוב מוציאה את המידע שאנחנו הסתרנו. נראה מה יהיה אפשר לעשות.

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

תודה רבה, מיכאל.

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

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

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

## דרישות קדם וצפייה בהקלטות

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

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

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

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

## שאלות ותשובות

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

נראה לי כולם בהלם.

כולם בהלם קרב.

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

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

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

מי מכיר בכלל את כל הנושאים, אחד הנושאים שהצגתי?

הנה, צצה יד.

אה, אוקיי. יפה.

כן, אני ברמה כזאת... מה מה התוכן ספציפית של מה שאתה אומר, אבל אני כותב ב-C++ כבר הרבה זמן, אז אני מכיר.

יפה. אוקיי.

מי זה היה?

מאיר.

מאיר. ב-C++, תמיד יש מה ללמוד.

בהחלט.

בהחלט. אני יכול להגיד לכם מניסיון אישי שכמכניקל שלמד SolidWorks והתעסק הרבה בתכן מכני, חשבתי שאני יודע הכול וכבר עבדתי בזה כמה שנים וכבר התפרנסתי מזה והכול טוב. ואז התחברתי עם בחור ב-Systematics, החבר'ה של הרישיונות של התוכנה הזאתי. עשיתי להם איזה סרטון שמאוד התלהבו ממנו והוא החליט לפנק אותי ב-advanced topic, בקורס מתקדם. אמרתי לו "מה אני צריך את זה? אני מלמד SolidWorks". אמר לי "בוא, הכול בסדר". הוא שכנע אותי, כי הם נותנים תןביס בצהריים.

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

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

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

עוד שאלות?

טוב, אני אעצור את ההקלטה.