חזור לתיקייה: 02340124 - מבוא לתכנות מערכות

0 - הקדמה

חיפוש בתיקיה
Ctrl K
לחץ כאן או הקש Ctrl K כדי לחפש בכל התיקיה

    0 - הקדמה

    02340124

    מבוא לתכנות מערכות

    רשימות הרצאה לקריאה בשבת

    הקדמה

    הופק מתוך תקיית התואר של שקד

    uni-folder.vercel.app

    בקורס הזה נלמד איך כותבים תוכנה. במבוא למדנו איך לכתוב תוכניות אך לא תוכנה רצינית וגדולה. אמנם הקורס קצר ולכן לא נוכל לכתוב תוכנה גדולה אמיתית אבל ננסה לדמות את התהליך הזה.

    מידע לגבי הסמסטר הנוכחי: ד"ר גל ללוש לא עובד בטכניון ממש ולכן אין לו באמת שעת קבלה - בדרך כלל הוא ישאר אחרי ההרצאה לענות על שאלות ובנוסף ניתן לשלוח לו מייל ולקבוע איתו שעת קבלה (כרגע בזום כמובן)

    מה נלמד בקורס:

    • 2 שפות תכנות. בהרצאות: C++C++C++ ובתרגולים לקראת סוף הקורס PythonPythonPython.
    • תכנות מונחה עצמים(OOPOOPOOP)
    • איך כותבים תוכנה

    למה C++C++C++?

    • כל מה שאפשר לעשות עם מחשב ניתן לעשות עם C++C++C++ (נוכיח את זה בתורת החישוביות עוד שנתיים)
    • ב-CCC אין אובייקיטים ממש מובנים לתוך השפה ולכן צריך לבנות אותם שם בעצמנו שזה קשה ו-C++C++C++ היא שפה שבנויה על CCC ומתנהגת דומה(זה לא אומר שאם יודעים CCC או C++C++C++ יודעים את השני) ובה יש את הפ'יצרים שאנו צריכים לפיתוח OOPOOPOOP.
    • משומש המון בתעשייה.
    • היא התחילה בתור הרחבה של CCC (לפי גל היא כבר לא כזאת)
    הערה

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

    למה OOPOOPOOP?

    • הסטנדרט כיום בתעשיה
    • אינטואיטיבי לרוב
    • מאפשר מודולריות (מאפשר לחלק את העולם לאובייקטים - נראה בהמשך)

    אנחנו הולכים להשתמש ב-C++11\LARGE C++11C++11 שיצאה בשנת 201120112011.

    מה ההבדל בין תוכנה לתוכנית?

    תוכניתתוכנההמשמעות
    10-1000 שורות קוד בממוצעלפחות 10,000 שורות קודלרוב תוכנה נבנת על ידי קבוצה של אנשים(לפעמים בן אדם אחד בזמן רב)
    תוכנית ניתן לכתוב ופשוט להשתמש בניגוד תוכנה שבה יש שלב שבו אנו מנסים להבין מה בכלל אנו בונים ואיך לבנות אותן(designdesigndesign)
    בתוכנית יכול להיות שיהיו באגים שאותם אפשר לתקן בקלות - תוכנה, לעומת זאת, צריכה לעבוד 99%99\%99% מהפעמים.
    תוכנית לרוב כותבים פעם אחת וזהו בעוד שתוכנה דורשת תיקון ושיפוץ למשך זמן רב

    לסיכום:
    תוכנית זה קל\color{green}\R{\text{קל}}קל ותוכנה זה קשה\color{red}\R{\text{קשה}}קשה.
    דוגמה: תוכנית מיוןדוגמה: וורד, אובסיסידן, האתר שאתם קוראים את הסיכום הזה בו
    מהי תוכנה טובה? זוהי תוכנה שהיא קלה לתחוקה - קל לתקן אותה אם היא נשברת, אפשר להוסיף פיצרים חדשים בקלות, היא עובדת בכל מערכות ההפעלה השונות.
    אנחנו כמובן רוצים שהקוד יהיה נכון ועובד בנוסף לקל לתחזוקה - אבל העיקר זה קל לתחזוקה.

    מה הופך קוד לטוב?

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

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

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