ערכתי לאחרונה בתאריך 21.01.08 בשעה 20:28 בברכה, Phinox
בס"דשפת מכונה ושפת סף הם שמות די נרדפים לאותו המושג. זאת בעצם השפה הנמוכה ביותר (ועוד מעט אני אסביר גם איך ה"גובה" שלה בא לידי ביטוי) בה ניתן לכתוב תכניות בעבור מעבד מסוים.
אנחנו הרי יודעים שמעבדים עובדים (וכאן הדגש החשוב) _אך ורק_ עם הספרות 1 ו-0 (הנקראות גם, בין השאר, סיביות). כשאנו אומרים שמעבדים עובדים אך ורק עם הספרות האלו, ז"א שהם יודעים לעבד אך ורק נתונים שמגיעים אליהם כרצף של סיביות כאלו, הם יודעים להנפיק תוצאות אך ורק כרצף של סיביות כאלו, והם יודעים לקבל פקודות שבנויות אך ורק כרצף של סיביות כאלו.
מה זה בעצם אומר? זה אומר שהמעבד לא מבין את הפקודה "printf", אלא הוא מבין את הפקודה (כדוגמה) 1001010101001001. בעבר, אך ורק מתמטיקאים ואלקטרונאים בחירים ידעו לכתוב תכניות במחשב, מכיוון שאז כתבו את התכניות אך ורק כרצף של סיביות כאלו -- בלי שום מלל כמו זה שאתה רגיל לקרוא היום בתכניות. (אגב, על אדם שכותב תכנית בצורה כזאת, כקבוצה של פקודות שבנויות מרצף של סיביות, נאמר שהוא כותב תכנית ב"שפת מכונה", כי זו השפה שהמכונה מבין.)
עם הזמן, כמו כל דבר שהאדם משתמש בו, השיטה הזו של כתיבת תכניות החלה להציק (נסה לקרוא תכנית שלימה שכתובה מצירופים של הספרות 0 ו-1 ולהבין אותה, או, לא פחות גרוע, נסה לכתוב אחת כזאת ;)) ואנשים אמרו לעצמם "אוקיי, רגע... צריך פה למצוא איזה פטנט למה העסק הזה לא תופס מים..." -- ישבו וחשבו, וחשבו וישבו, ואז הגיעו למסקנה שלכתוב תכניות במלל שהם יבינו, יביא להם כמה יתרונות (העיקריים שביניהם היו שהתכניות יהיו קצרות יותר , ושהפקודות תהיינה קלות לזכירה ולהבנה).
אז הם באו והחליטו שלכל פקודה בשפת מכונה תהיינה קבוצת מילים (שאנשים יבינו) שתהווה פקודה בשפה מעט יותר "גבוהה", שתקרא "שפת סף". שפות סף נבנות בדר"כ באנאלוגיה של אחד לאחד, ז"א שבדיוק לכל פקודה בשפת מכונה תהיה _אך ורק_ פקודה אחת מקבילה בשפת סף.
מה זה אומר לגבי התכניתן? זה אומר שבמקום, נניח, לכתוב את רצף הסיביות שהצגנו לעיל, הוא יוכל לכתוב את המילה: "MOV", ובעצם גם להבין מה הפקודה עושה (מזיזה משהו ממקום למקום) וגם לחסוך בזמן כתיבת הפקודה (מה שיביא, בסופו של דבר, לכתיבת תכנית קצרה יותר ביתר מהירות.)
עם הזמן, אנשים החליטו שגם שפות סף לא מתאימות להן, אז הגיעו שפות גבוהות יותר (כדוגמת שפת C) שבעצם מביאות עמן עוד שיפורים (כגון פקודה אחת שמבצעת בשבילך סדרה של פקודות בשפת סף, האופציה להשתמש בקוד שכבר כתבת בכמה מקומות בתכנית וכו'...). שפות גבוהות יותר משפת סף, אגב, בדר"כ נמנעות מהאנאלוגיה הזאת של אחד לאחד, ופונות יותר לכיוון של אחד לשתיים, או אחד לשלוש -- וכל זאת ע"מ לעשות כמה שיותר בעבור התכניתן, כדי שזה יוכל לכתוב תכניות כמה שיותר מהר.
מה אפשר לעשות עם שפת סי שאי אפשר לעשות בשפת מכונה/סף? כלום. כמעט עם כל שפה תוכל לעשות כל דבר. אז מה ההבדל בעצם? ההבדל העיקרי הוא במהירות בה תסיים לכתוב את התוכנה, וזה בעצם ההבדל (כמעט) בין כל שפה אחת לאחרת. (כדוגמה, נסה לכתוב משחק כמו Gears of War בשפת מכונה... כשאני כבר אהיה עם נינים אתה עדיין לא תסיים לבנות את התפריט הראשי... ;) לעומת זאת, בשפת C++ עם הכלים המתאימים ועם כוח-האדם הנדרש, יקח לך בסביבות השלוש שנים..! קולט את ההבדל?! נצח לעומת שלוש שנים... ;))
ההבדל העיקרי פחות (וזאת נאמר מפאת כוח העיבוד הרב שמציעה לנו היום הטכנולוגיה) הוא השליטה שמעניקה לך כל שפה. בשפת מכונה אומנם יקח לך המון זמן לכתוב תכנית מסויימת (בהשוואה לשפת C, כדוגמה), אבל מכיוון שאתה כותב ישירות למעבד וכותב לו בפקודות הבסיסיות ביותר אותן הוא מבין, אתה בעצם מקבל עליו יותר שליטה. ככל שאתה עולה בגובה השפה (היינו, ככל שיותר דברים נעשים בעבורך) אתה בעצם מפסיד שליטה מסויימת על המעבד עצמו ועל שאר רכיבי המערכת.
עשה את ההשוואה בעצמך, שליטה מליאה במעבד וברכיבי המחשב לעומת מהירות כתיבת וסיום התכנית... ;)
אוה! שאלה יפה!
כן, יש עמק השווה... איך קוראים לו? "כתיבת תכנית מעורבת". מה זה אומר? זה אומר שאתה ניהנה כאן משתי העולמות -- כשאתה לא זקוק ממש לשלוט על כל פין של המעבד, אתה יכול להשתמש בשפה גבוהה כמו שפת C, אולם כשאתה מרגיש שאתה צריך טיפה יותר שליטה, אתה יכול לכתוב בשפת סף...
מה השימושים העיקריים של כל שפה? הרוב היום משתמשים בשפת C כמעט לכל דבר. בדר"כ ע"מ לתעל (Optimize) תכנית גדולות שמשתמשות בהמון זיכרון ומבצעות המון חישובים משתמשים בשפת סף ע"מ לכתוב פונקציות בצורה יותר יעילה וע"מ לגשת ולשחק ישירות עם זיכרון המחשב וכו'... שימוש נוסף של שפת סף (למרות שלאחרונה שפת C גם משתלטת על הנישה הזאת) הוא במיקרובקרים ובכל התכנות הזה של מוצרים אלקטרוניים...
זהו, זה על רגל אחת כל ההסיטוריה וכל הסיפור... ;)
מקווה שעזרתי..! 
בברכת כל טוב והצלחה רבה (!) בכל, אריה. 
נ.ב: אם יש לך שאלות נוספות, מיותר לציין שת'לא צריך להתבייש... שאל חופשי, על הכסף כבר נסתדר אח"כ... ;)
