מדעי המחשב לעומת תכנות מחשבים: מה ההבדל?

אשראי תמונה

נראה ששני המונחים השתנו מעט בשנים האחרונות. כאדם שהתחיל ללמוד על תכנות בעצמי, שמעתי הרבה את המונחים "מדעי המחשב" ו"תכנות מחשבים "שהם כמעט להחלפה. הייתי צריך לדעת קצת על המשמעות של כל אחד מהם ולענות על כמה שאלות: האם הם אותו הדבר? האם הם קשורים זה בזה? האם האחד כולל את השני?

מדוע בכל זאת חשוב?

כמתחיל ללמוד כיצד לתכנת (ובעל 4 שנות לימודי תואר ראשון אך לא הוכשר באינפורמטיקה), אני יכול לומר שאני מרגיש שזה חשוב עבור סיכויי הקריירה שלי. לעתים קרובות כשאני מסתכל על הצעות עבודה הקשורות לתוכנה, אני רואה שיש צורך בתואר 4 שנים במדעי המחשב או לראות בו תוסף עיקרי. זה לעתים קרובות גורם לאדם שנמצא בעמדה שלי לשאול את עצמו: האם אני מתגעגע לספינה? האם "תכנות מחשבים" פחות אמנות ממה שחשבתי שתהיה? האם יש תואר במדעי המחשב שיש לו פרק כף היד של מהנדסי תוכנה אמיתיים?

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

תכנות מחשבים היא תהליך של תכנון ובניית תוכנת מחשב המבצעת משימת מחשוב ספציפית ... מטרת התכנות היא למצוא רצף של הוראות שתבצע אוטומציה של המשימה לעיתים קרובות במחשב.

אני משווה את זה להגדרה אינפורמטיקה:

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

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

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

השכלה תיכונית "הנדסת תוכנה VS - מה הכי טוב בשבילך?" YouTuber ומפתח Google לשעבר YK Sugi חקרו את ההבדלים בין מדעי המחשב והנדסת תוכנה באוניברסיטת ווטרלו (להלן). ודא שיש לך אחת התוכניות הטובות ביותר למדעי המחשב בצפון אמריקה. הוא גילה שלמרות דרישות ההתמחות במתמטיקה וסטטיסטיקה, "כמעט לכל אחת מאג'יות" יש אופי ייחודי:

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

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

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

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

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

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

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

המחקר אומר לנו שתכנות מחשבים זה מדעי המחשב, אך עם הבדלים משמעותיים זה התחום שלהם.

YouTuber, טק סילבסטר מורגן, מפרט את ההבדלים בין שני "פיתוח תוכנה? פיתוח תוכנה לעומת מדעי המחשב" לשנת 2017 (להלן):

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

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

בשנת 2015 העיר EdSurge במאמרו "מידע מעבר לקידוד" (להלן) כי שינה ווידיאנתן טוענת שתכנות היא חלק חשוב במדעי המחשב.

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

במאמרו בנושא חינוך בנושאים אלה טוען ווידיאנתן כי יש סיבות רבות להוראת מדעי המחשב בכלל, וכי פשוט סירוב לתכנות אינו סיבה למנוע תחומים אחרים במדעי המחשב. .

YouTuber, המפיק והסופר אהרון בטא, מכסה נושא זה בסרטון שלו משנת 2017, "מה ההבדל בין מדעי המחשב לתכנות מחשבים?"

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

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

אז איפה תאי Bootcamp נכנסים לכל זה?

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

קייל תייר, סטודנט לתואר שלישי באוניברסיטת וושינגטון, מבקש לטפל בבעיה הספציפית הזו במאמרו הבינוני משנת 2018 "קידוד מוטבעות Bootcamps: תואר במדעי המחשב: מה שמעסיקים רוצים ותפיסות אחרות" . הוא ציין כי לתואר שני של חברת bootcamp וגם 4 שנים למדעי המחשב יש את היעדים והחוזקות שלהם:

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

תאיר עצמו למעשה לומד את הבלוג הזה מהבלוג (מקושר למטה). "מה באמת חושבים מעסיקים על קידוד מגפיים?" המחקר, שנקרא מחקר, מספק דוגמאות ליותר מאלף מנהלי גיוס עובדים ושירותי אנוש. כפי שצוין במאמר, 72% אמרו שהם הופתעו מתארי ה- bootcamp "כאילו היו מבצעים מוכנים ומלאי ביצועים הרואים עצמם מועמדים לתארים במדעי המחשב," 12% נוספים "בוגרי bootcamp מוכנים ובטוחים יותר." כ -17% מהנשאלים "חושבים שבוגרי מחנה האתחול אינם משכילים היטב או שהם אינם בעלי הבכירים כמועמדים במדעי המחשב."

80% מהמנהלים שרואיינו אמרו כי הם שכרו בוגרת להקת Boot במועד מסוים ושהם יתקבלו לעבודה (99.8%).

למרות שלכולם דעות שונות, אני בקושי יכול להסיק כי יש להתייאש מהתוצאות הללו עבור מתכנתי ה- bootcamp, למעשה, כאמור, הם חרגו מהציפיות שלי. עם זאת, המחקר כולל נתונים תקפים: למרות ההשקפה החיובית של ציוני bootcamp, 41% מהנסקרים אמרו שיהיה להם יותר נוח להעסיק מישהו עם רקע במדעי המחשב. זה נובע בעיקר מהיעדר תקני אוניברסיטה מבוקרים היטב ומסגרת הרגולציה של תא האתחול הקידוד הקיים. יחד עם נושאים דומים, ציינו המשיבים כי מדעי המחשב מוערכים מאוד לפרויקטים מופשטים יותר הקשורים בידע תיאורטי אודות מחשבים, ואילו תעודות משאיות חשובות למשימות הדורשות הבנה מעשית של הבעיה.

אז מה אתה צריך?

ובכן, הנה כמה מהשאלות שהועלו בראשית דרכה:

האם מדעי המחשב ותוכנות מחשב זהות?

לא למרות שיש לזה הרבה דברים משותפים, אך הוגן לומר שתכנות מחשבים ומדעי המחשב שונים זה מזה.

האם מדעי המחשב ותוכנות מחשב קשורים?

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

האם תוכנות מחשב או תוכניות סגן כלולות במדעי המחשב?

כן, תוכנת מחשבים היא תחום מעשי של מדעי המחשב. תכנות מחשבים יכולה להיחשב כרשת משנה של מדעי המחשב, אם כי למקצועות רבים במדעי המחשב אין קשר לתכנות מחשבים.

כסטודנט חדש לתכנות מחשבים שלא הרוויח תואר שלישי במדעי המחשב כבר 4 שנים, האם התגעגעתי למאמר?

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

תכנות מחשבים, האם זו אמנות קטנה ממה שחשבתי?

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

מה הפירוש של תואר במדעי המחשב מתחת לחגורות של מהנדסי תוכנה "אמיתיים"?

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

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

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

(תמונה) https://theydiffer.com/difference-between-computer-science-and-computer-programming/

https://www.youtube.com/watch?v=R997_0r8sEI

https://www.youtube.com/watch?v=xa4oOv2JUA8

https://www.youtube.com/watch?v=cSVDk-ugAQ

http://blog.indeed.com/2017/05/02/what-employers-think-about-coding-bootcamp/

https://apstudent.collegeboard.org/apcourse/ap-computer-science-principles

https://www.robotlab.com/blog/coding-programming-and-computer-science-are-not-the-same

https://www.petersons.com/blog/whats-the-differences-between-computer-science-and-computer-engineering/

https://en.wikipedia.org/wiki/Computer_programming

https://en.wikipedia.org/wiki/Computer_sciencehttps://www.edsurge.com/news/2015-12-02-computer-science-goes-beyond-coding

https://medium.com/bits-and-behavior/coding-bootcamps-vs-computer-science-degrees-what-employers-want-and-other-perspectives-4058a67e4f15

https://medium.freecodecamp.org/computer-science-vs-software-engineering-which-one-is-a-better-major-88482c38446b

http://blog.indeed.com/2017/05/02/what-employers-think-about-coding-bootcamp/