זה פשוט שינוי ברמת האבסטרקציה ../images/Emo13.gif
באיזשהוא שלב, כשאתה חוקר נושא מסוים - אם יש מספיק עומק לתחום הזה, הוא פשוט יהפוך להיות תחום משלו. כשחושבים על זה, כימיה זה פשוט פיזיקה שימושית, ביולוגיה זה פשוט כימיה שימושית, פסיכולוגיה זה פשוט ביולוגיה שימושית, וסוציולוגיה זה פסיכולוגיה שימושית (וכמובן שיש XKCD על הכל:
http://xkcd.com/435/). בעצם, כשאתה עובד על נושאים מסויימים, לפעמים אתה צריך 'להעלים' מושגים המרמה שמתחת כדי שתוכל לעבוד יותר ביעילות ובמהירות. למשל - אני בטוח שאת לא מתעסקת בכלל עם פונקציות החשמל של השערים הלוגיים, ואיך שהן מגיבות למתח, והמתח שהן פולטות, וכו'... גם אם את עובדת עם שערים לוגיים (שנשמע לי מוזר!), אז את פשוט מתכננת מעגל, ומתבססת על המון הנחות שהמציאו החשמליסטים הראשונים, שנותנות לך להסתכל על זה מבחוץ מבלי להסתכל על הפרטים. תוכנה זה אותו דבר, אנחנו כותבים תוכנות, בלי להסתכל על הפרטים של החומרה. לא מעניין אותנו אם אנחנו קוראים מהארד דיסק, או מטייפ, או זכרון RAM, או CD... אנחנו יודעים שאנחנו קוראים מידע, ואנחנו מטפלים בו, וממשיכים הלאה. גם בתוך תוכנה יש רמות אבסטרקציה. תכנתי C וC++ מתעסקים כמו שאמרת בניהול זכרון, לשחרר מצביעים, להקצות זכרון, וכו'... תכנתי C# וJava לא יודעים מה זה פוינטר בכלל, הודות לGarbage Collection
כן חשוב להבין מאיפה כל זה בא, ואני כן מבין ברמה כללית איך אפשר באמצעות מעגלים חשמליים, להגיע לשורות קוד שהופכות להיות תוכנה. אבל אני לא רוצה להתעסק עם זה כל פעם שאני מתכנת... בכלל - כיום המגמה היא לעשות את שפת התכנות פחות ממוקדת על יעילות ופדנטיות, ויותר 'רופפת', כשהדגש הוא על לעשות תוכנות שלוקח מעט זמן לכתוב, ושקל לשנות ולתחזק אותן לאורך זמן. וואי, יצאה לי הרצאה על הנדסת תוכנה פה
אופס?