Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

בסיס מדעי המחשב

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

כמה דוגמאות לתוכניות:

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

חומרה, תוכנה ושפות תכנות

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

  1. חומרה (hardware), ההתקנים הפיזיים עליהם שקוראים את התוכנה ומבצעים אותה.
  2. תוכנה (software), רצף פקודות שמכונה מבצעת על מנת להשלים משימה כלשהי.

הגדרה: שפת תכנות היא דרך מוסכמת לכתוב תוכנה שלאחר מכן החומרה תבצע.

איך זה מתבצע בפועל?

  1. במחשב, בטלפון ובמכשירים אחרים שאנחו משתמשים בהם קיימת יחידה חומרתית בשם מעבד (CPU - Core Processing Unit).
  2. תפקיד המעבד הוא לבצע את תוכניות המחשב שהמשתמש מורה לו לבצע.
  3. המעבד עובד עם יחידה חומרתית נוספת הנקראת זכרון, בו נשמר המידע בו המעבד משתמש.
  4. תוכניות מחשב כתובות בשפה הבינארית - רצף של 0 ו-1 אותן הוא מפורש בדרך מוסכמת.
  5. הדרך המוסכמת לפרש את השפה הבינארית נקראת שפת מכונה. לסוגי מחשבים שונים (למשל, מחשבי אפל לעומת ווינדוס) יש בדרך כלל שפת מכונה שונה.
  6. קשה מאוד לכתוב תוכניות מורכבות בשפת מכונה, ולכן המתכנתים הראשונים המציאו את שפות התכנות - טקסט קריא יותר לכתיבת תוכניות, שבהמשך יתורגם לשפת מכונה אותה המעבד מבין.

Note

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

חומרה

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

נפרוט את החלקים השונים:

  1. המעבד (CPU - Central Processing Unit) מכיל יחידה לוגית שמבצעת חישובים שונים, ויחידת בקרה שמורה ליחידה הלוגית איזה חישובים לבצע.
  2. המעבד מתקשר עם יחידת הזכרון, בה נשמר המידע בה משתמש המעבד. הזכרון לרוב מחולק ליחידה בשם RAM (Random Access Memory) שמכילה זכרון נדיף, ויחידה בשם דיסק שמכילה זכרון שאינו נדיף.
  3. במכשירים רבים קיימות יחידות פריפריאליות שמזינות קלט למכשיר (למשל - מקלדת) או מוציאות פלט ממנו (למשל - מסך).

Note

לארכיטקטורה זו קוראים Von Neumann Architecture, על שם מתמטיקאי ומהנדס הונגרי בשם ג׳ון פון נוימן, שפרסם מודל ראשון שלה ב-1945!

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

שפות נמוכות וגבוהות

יש המון שפות תכנות שונות, ונהוג לסווג אותן על סקאלה שבין שפות תכנות נמוכות לגבוהות (high level language & low level language). שפת תכנות נמוכה היא שפה שקרובה יותר לשפת מכונה – כל פעולה שנכתבת בשפה נמוכה לרוב הופכת (לאחר התרגום) למספר מצומצם של פעולות בשפת מכונה.

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

Important

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