מפת הקורס
המטרה היא להבין לא רק "איך מתכנתים", אלא איך כל שכבות המחשב מתחברות זו לזו.
1. חשמל ואלקטרוניקה
אלקטרוניקה עוסקת בשליטה בתנועה של מטענים חשמליים. במערכות מחשב אנחנו משתמשים במתח, זרם ורכיבים אלקטרוניים כדי ליצור אותות שניתן למדוד, לשנות ולשלב.
הפרש פוטנציאלים חשמלי.
קצב זרימת מטען חשמלי.
שינוי פיזיקלי שאפשר להשתמש בו לייצוג מידע.
מסלול המאפשר התנהגות חשמלית מבוקרת.
מחשב דיגיטלי אינו צריך להבחין בכל ערך אפשרי של מתח. במקום זאת הוא מגדיר תחומים: למשל מצב נמוך ומצב גבוה. כך נוצרת הבחנה אמינה בין שני מצבים.
2. הטרנזיסטור
הטרנזיסטור הוא אחד מאבני הבניין המרכזיות של האלקטרוניקה הדיגיטלית. בצורה מופשטת אפשר לחשוב עליו כעל מתג שניתן לשלוט בו חשמלית.
הטרנזיסטור עצמו אינו "יודע" מהו מספר, אות או תמונה. הוא פשוט מגיב לתנאים חשמליים. אבל כאשר מחברים טרנזיסטורים בצורה מתוכננת, אפשר ליצור פונקציות לוגיות.
3. לוגיקה — הגשר בין חשמל לחישוב
שער לוגי הוא מעגל שמקבל ביט אחד או יותר ומחזיר ביט.
| A | B | AND | OR | XOR |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
NOT
| קלט | NOT |
|---|---|
| 0 | 1 |
| 1 | 0 |
Half Adder
כדי לחבר שני ביטים צריך לדעת גם את תוצאת הסכום וגם האם נוצר Carry.
לדוגמה:
מכאן אפשר לבנות Full Adder, ולאחר מכן מעגלים לחיבור מספרים גדולים.
4. בינארי וייצוג מידע
מחשב דיגיטלי עובד עם ביטים. ביט הוא יחידת מידע בעלת שני מצבים. בדרך כלל מייצגים אותם כ־0 ו־1.
ערך בינארי
בבסיס 10 יש חזקות של 10. בבסיס 2 יש חזקות של 2.
Hexadecimal
הקסדצימלי הוא בסיס 16. הוא שימושי משום שכל ספרה הקסדצימלית מייצגת בדיוק ארבעה ביטים.
טקסט
גם טקסט צריך ייצוג מספרי. תקני קידוד כמו Unicode מגדירים כיצד תווים מיוצגים באמצעות מספרים וביטים.
תמונה
תמונה דיגיטלית יכולה להיות מיוצגת כרשת של פיקסלים. כל פיקסל מכיל מידע על צבע ובהירות, ובמקרים רבים גם ערוץ שקיפות.
קול
קול אנלוגי ניתן לדגום בזמן. כל דגימה מקבלת ערך מספרי, ולכן ניתן לשמור ולהעביר קול באמצעות מידע דיגיטלי.
5. מלוגיקה לחישובים
שערים לוגיים לבדם פשוטים מאוד. כוחם נובע מהאפשרות לחבר אותם.
חיבור מספרים.
השוואת ערכים.
בחירה בין מקורות מידע.
פענוח קוד לבחירה או שליטה.
לדוגמה, Full Adder יכול לקבל:
מחברים Full Adders זה לזה, ומקבלים יחידת חיבור למספרים בעלי ביטים רבים. כך "חיבור" ברמת התוכנה הופך בסופו של דבר למעגלים פיזיים.
6. איך CPU עובד
CPU הוא מערכת גדולה של מעגלים שמבצעת פקודות. בצורה מפושטת, ניתן לחשוב על מחזור הפעולה כך:
Fetch
המעבד מביא את הפקודה מהזיכרון.
Decode
הוא מפענח מה הפקודה דורשת.
Execute
המעבד מפעיל את היחידות המתאימות: חישוב, גישה לזיכרון, השוואה ועוד.
Registers
אוגרים הם מקומות אחסון קטנים ומהירים מאוד בתוך המעבד. הם משמשים לאחזקת נתונים וכתובות בזמן ביצוע פקודות.
ALU
Arithmetic Logic Unit מבצעת פעולות חשבוניות ולוגיות.
7. זיכרון
המחשב זקוק למקומות שבהם אפשר לשמור מידע ופקודות. לא כל סוג זיכרון מהיר, גדול וזול באותה מידה.
| רכיב | תפקיד כללי | מאפיין |
|---|---|---|
| Registers | נתונים מיידיים ל־CPU | מהירים מאוד |
| Cache | נתונים בשימוש תכוף | מהיר מאוד |
| RAM | זיכרון עבודה | מהיר יחסית, נדיף |
| SSD | אחסון קבוע | לא נדיף |
היררכיית הזיכרון נובעת מפשרה בין מהירות, עלות, נפח וצריכת אנרגיה.
8. שפת מכונה ו־Assembly
CPU אינו מריץ ישירות Python או JavaScript. הוא מבצע קבוצת פקודות מוגדרת — Instruction Set Architecture.
לדוגמה, באופן רעיוני אפשר לראות פקודות כמו:
LOAD R1, 5 LOAD R2, 7 ADD R1, R2 STORE R1, result
הפקודות האלה הן עדיין שכבה גבוהה יותר מהטרנזיסטורים, אבל נמוכה מאוד ביחס לשפות תכנות מודרניות.
9. תכנות
שפות תכנות מאפשרות לבני אדם לתאר אלגוריתמים בצורה נוחה יותר.
משתנים
age = 30 name = "Dana"
תנאים
if age >= 18:
print("adult")
else:
print("minor")
לולאות
for i in range(5):
print(i)
פונקציות
def add(a, b):
return a + b
print(add(5, 7))
השפה מסתירה מאיתנו חלק גדול מהחומרה. אבל בסופו של דבר הקוד צריך להפוך לפקודות שהמחשב מסוגל לבצע.
10. אלגוריתמים
אלגוריתם הוא שיטה סדורה לביצוע משימה או פתרון בעיה.
חיפוש לינארי
for x in items:
if x == target:
return True
return False
אם יש N איברים, במקרה הגרוע צריך לבדוק עד N איברים: O(N).
חיפוש בינארי
כאשר הנתונים ממוינים, אפשר לחצות את מרחב החיפוש בכל שלב. המורכבות היא בערך:
Big O
Big O מתאר כיצד כמות המשאבים הדרושה לאלגוריתם גדלה כאשר גודל הקלט גדל.
| מורכבות | אינטואיציה |
|---|---|
| O(1) | קבוע |
| O(log N) | גדל לאט |
| O(N) | יחסי לגודל הקלט |
| O(N log N) | נפוץ באלגוריתמי מיון יעילים |
| O(N²) | יכול להיות יקר בקלט גדול |
11. מבני נתונים
מבנה נתונים הוא דרך לארגן מידע כך שניתן יהיה לבצע עליו פעולות ביעילות.
רצף של איברים בגישה לפי אינדקס.
LIFO — האחרון שנכנס יוצא ראשון.
FIFO — הראשון שנכנס יוצא ראשון.
גישה מהירה לפי מפתח במקרים מתאימים.
מבנה היררכי.
קשרים בין צמתים.
בחירת מבנה הנתונים משפיעה ישירות על הביצועים והפשטות של תוכנה.
12. מערכות הפעלה
מערכת הפעלה היא שכבת תוכנה שמתווכת בין תוכניות לבין החומרה.
תפקידים מרכזיים
- ניהול תהליכים
- ניהול זיכרון
- מערכת קבצים
- ניהול התקנים
- הרשאות ואבטחה
- תקשורת בין תהליכים
Process ו־Thread
Process הוא מופע ריצה בעל מרחב משאבים משלו. Thread הוא מסלול ביצוע בתוך תהליך. מערכות מודרניות יכולות להריץ משימות רבות באופן מקבילי או מדומה־מקבילי.
13. רשתות ואינטרנט
אינטרנט הוא רשת של רשתות. מחשבים מעבירים מידע באמצעות פרוטוקולים מוסכמים.
כתובת IP
מזהה כתובת רשתית של ממשק או יעד ברשת.
DNS
מערכת שמתרגמת שמות כמו example.com לכתובות רשת.
HTTP
פרוטוקול נפוץ להעברת בקשות ותשובות בין לקוח לשרת.
מה קורה כשפותחים אתר?
- הדפדפן מקבל כתובת.
- DNS מסייע למצוא את היעד.
- נוצר חיבור רשת מתאים.
- נשלחת בקשת HTTP/HTTPS.
- השרת מעבד את הבקשה.
- השרת מחזיר נתונים.
- הדפדפן מפרש HTML, CSS ו־JavaScript.
- המשתמש רואה את התוצאה.
14. בסיסי נתונים
מערכות רבות צריכות לשמור כמויות גדולות של מידע באופן מסודר.
מודל רלציוני
| id | name | age |
|---|---|---|
| 1 | Yael | 28 |
| 2 | Dan | 34 |
SQL
SELECT name FROM users WHERE age >= 30;
Database Engine מטפל באחסון, אינדקסים, חיפוש, עדכונים, עקביות ומאפיינים נוספים הנדרשים ממערכת נתונים.
15. בינה מלאכותית
AI אינו שכבה שמנותקת ממדעי המחשב. הוא נשען על כל השכבות הקודמות.
Machine Learning
במקום לכתוב במפורש כל כלל, נותנים למערכת נתונים ומשתמשים באלגוריתם אימון כדי להתאים פרמטרים של מודל.
Neural Network
רשת עצבית מורכבת משכבות של יחידות חישוב מתמטיות. היא מקבלת קלט, מבצעת סדרת טרנספורמציות ומפיקה פלט.
מודלי שפה
מודל שפה מודרני מקבל ייצוג מספרי של טקסט, ומחשב התפלגות של המשך אפשרי בהתאם להקשר. במודלים גדולים נעשה שימוש בכמויות עצומות של פרמטרים, חישובים ונתונים.
16. התמונה הגדולה
עכשיו אפשר לחבר את כל הקורס לשרשרת אחת.
זו למעשה היררכיית ההפשטה של המחשב. כל שכבה מאפשרת לנו לחשוב במושגים נוחים יותר, בלי להתעסק בכל הפרטים של השכבה שמתחתיה.
תרגול מסכם
מה הערך העשרוני של 1101?
פתרון
מה התוצאה של 1 AND 0?
פתרון
חשב: 101 + 011
פתרון
1000.
יש מערך של מיליון איברים. איזה אלגוריתם יכול להיות מתאים לחיפוש כאשר המערך כבר ממוין?
פתרון
איך חיבור של טרנזיסטורים יכול בסופו של דבר להפעיל תוכנית Python?
חשיבה
מילון מושגים
יחידת מידע בעלת שני מצבים.
8 ביטים.
רכיב אלקטרוני הניתן לשליטה.
מעגל המבצע פעולה לוגית.
יחידת עיבוד מרכזית.
יחידה חשבונית ולוגית.
זיכרון עבודה נדיף.
שיטה סדורה לפתרון בעיה.
מבנה לארגון מידע.
שכבת תוכנה שמנהלת את המחשב.
כללים מוסכמים לתקשורת.
מערכת לאחסון וניהול מידע.
שיטות ללמידת דפוסים מנתונים.
מודל חישובי בעל שכבות ופרמטרים.
מערכת פרמטרים וחישובים המייצגת קשרים שנלמדו.