מדעי המחשב

אבני הדרך והתפתחות המדע

מדעי המחשב התהוו לענף מדע עצמאי רק באמצע המאה ה-20, אם כי התחילו להתפתח זמן רב קודם לכן. מכונות החישוב הראשונות הופיעו כבר בעת העתיקה.
בתקופות קרובות יותר לזמננו, תחום מדעי המחשב התחיל לתפוס תאוצה כשמדענים כמו קפלר, לייבניץ, פסקל (על שמו שפת התכנות פסקל) ואחרים היו צריכים לחשב חישובים מורכבים, והמציאו לשם כך מכונות חישוב מכניות מבוססות גלגלי שיניים.
באמצע המאה ה-19 תיכנן צ'ארלס בבג' מחשב מכָני ראשון מסוגו (אולם הוא מעולם לא קרם עור וגידים). המכונה של בבג' היא למעשה המכונה הראשונה שנבנתה מבלי שתכנונה יקבע מראש את יכולותיה, והיה אפשר לתכנתה למלא פקודות שונות. זוהי המכונה הראשונה מסוגה, ובשל כך, נחשב בבג' לממציא רעיון המחשב.
עדה לאבלייס, בתו של המשורר לורד ביירון, הייתה שותפה לבבג', וכתבה תוכנה למכונתו. בעקבות זאת היא נחשבת למתכנתת הראשונה. על שמה נקראת שפת התכנות Ada.
מאז אותם ימים התפתח תחום המחשבים בצעדי ענק. התרומה העיקרית נזקפת לזכותם של צִבאות העולם. הגרמנים והאמריקאים השתמשו במלחמת העולם הראשונה במכונות חישוב לירי ארטילרי, וכן להצפנה.
לקראת מלחמת העולם השנייה פיתחו הגרמנים מכונת הצפנה משוכללת, אניגמה, ובעזרתה הִצפינו את התשדורת הצבאית שלהם. פיצוח המכונה על ידי בעלות הברית ארך כעשור ואילץ את שירותי הביון של פולין, צרפת והממלכה המאוחדת לפתח כלים מתמטיים (למשל תורת החבורות). פיצוח צופן האניגמה על ידי הצוות הבריטי (הדמות המרכזית בו היה אלן טיורינג), נחשב לאחד הגורמים הבולטים לשימוש מעשי בנושאים שעד אז נחשבו לתאורטיים, והיה זרז לפיתוח תחום מדעי המחשב. טיורינג נחשב לאבי מדעי המחשב המודרניים, ועל שמו נקרא פרס טיורינג המחולק על ידי ארגון ACM, האגודה האמריקאית למחשבים, ונחשב לפרס היוּקרתי בענף.

התפתחות התאוריה של מדְעי המחשב

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

המחשב הראשון

ב-1942 פותח המחשב הראשון, Z3, על ידי קונראד צוזה. מחשב זה היה מחשב עולמי אוניברסלי: מכונה מכנית המסוגלת להריץ תוכנה כלשהי ולא תוכנה קבועה. הוא קרא תוכנה מתוך סרטים מנוקבים. באמצע שנות ה-40 של המאה ה-20 נבנה המחשב ENIAC, המחשב האלקטרוני הראשון בר-התכנות. עם המצאת הטרנזיסטור ב-1947 נפוצו מחשבים אלקטרוניים.
בשנות ה-50 בארצות הברית נפרסה רשת מחשבים צבאיים שקישרה אמצעי שיגור גרעיניים ומהותה הייתה ביזור על ידי מניעת נקודת כשל יחידה. בשנות ה-60 החלו מכוני מחקר אוניברסיטאיים לשתף מידע מדעי ביניהם באמצעות מחשבים מחוברים לרשת אינטרנט. בשנות ה-80 ארגונים כלכליים מיכנו שירותיהם על ידי מחשבים נוספים שהותקנו וחוברו לרשת.

התפתחות השפות הפורמליות והאוטומט הסופי

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

חישוביות, סיבוכיות ואלגוריתמים

בשנות השישים החל להיבחן נושא הסיבוכיות: עד כמה מהר אפשר לחשב חישובים. בשנים אלו הוגדרו מחלקות סיבוכיות שונות ונבנתה היררכיה של קושי החישוב של הבעיות השונות (כלומר, אילו בעיות "קלות" יותר, ואילו "קשות" יותר). בשנים אלו נתגלו בעיות NP קשות על ידי סטפן קוק ובד בבד על ידי לאוניד לוין. לאחר מכן נתגלו מספר רב של שפות NP שלמות, בעיקר על ידי ריצ'רד קארפ, שחקר בעיה זו לעומקה. בתקופה זו הוגדרה השאלה P=NP, וזו נותרה בעיה פתוחה מרכזית עד עצם היום הזה.
במהלך שנות ה-70 ניסו לפתור את בעיית P=NP מזוויות שונות, כגון ניתוח גודלם של מעגלי מחשוב לוגיים אשר פותרים בעיות שונות. בשנים אלו נוסח הקשר בין זמן הריצה של תוכנית לבין גודל המעגל הלוגי המממש את אותה תוכנית. מעגלי המחשוב הלוגיים הם, למעשה, עוד מודל אשר שקול למכונת טיורינג, ומאפשר לנתח את בעיית החישוביות מזוויות נוספות. בשנים אלו חלה פריחה בתחום מבני הנתונים והאלגוריתמים. דונלד קנות' פרסם את סדרת הספרים "The Art of Computer Programming", וזו הייתה אוסף כתוב ומסודר של הידע על אלגוריתמים בתחומים שונים. בנוסף פותחו ושוכללו אלגוריתמים עבור מיון, אחסון ואיחזור נתונים, אלגוריתמים בתורת הגרפים, פתרון מערכת משוואות ליניארית וכן בעיות בחישוב מקבילי.
רשימת הבעיות הפתוחות מתעדכנת באופן דינמי, ומדעי המחשב ממשיכים לצבור ידע ואסטרטגיות חישוב באופנים יעילים יותר. עבור סוגי נתונים מסוימים (כגון big data, ועיבוד ביואינפורמטי) יש לכך השלכות מרחיקות לכת, שהופכות יכולת תאורטית לחשב לאפשרות מעשית שבעזרת ייעול חישוב לוקחות זמן ריצה סביר (שעות/שנות אדם) ולא כזה שמצריך אלפי או מיליוני שנים כדי להסתיים.

1980 ואילך

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