علوم کامپیوتر در مقابل برنامه نویسی رایانه: تفاوت چیست؟

اعتبار تصویر

به نظر می رسد که هر دو اصطلاح در عنوان در طی چند سال گذشته کاملاً پرتاب شده اند. من به عنوان کسی که تازه مطالعه برنامه نویسی را به خودم گرفتم ، من اصطلاحات "علوم کامپیوتر" و "برنامه نویسی رایانه" را اخیراً ، تقریباً به طور متناوب ، بسیار استفاده کرده ام. به نظر می رسد متاسفم که کمی بیشتر درباره آنچه که در حقیقت وجود دارد یاد بگیرم و به چند سوال زیر پاسخ دهم: آیا آنها یکسان هستند؟ آیا آنها مرتبط هستند؟ آیا یکی دیگر را شامل می شود؟

چرا به هر حال اهمیت دارد؟

به عنوان کسی که به تازگی یاد گرفته است که چگونه برنامه نویسی کند (و کسی که دارای لیسانس 4 ساله لیسانس اما در علوم کامپیوتر نیست) ، می توانم بگویم احساس می کنم که از لحاظ چشم انداز شغلی من اهمیت بسزایی دارد. خیلی اوقات وقتی به دنبال کارهایی در رابطه با نرم افزار می شوم ، می بینم که یک مدرک 4 ساله علوم کامپیوتر یا لازم است یا به عنوان یک امتیاز اصلی دیده می شود. این اغلب باعث می شود که فردی در موقعیت من باشد که از خود سؤالات زیر را بپرسد: آیا قایق را از دست دادم؟ آیا "برنامه نویسی رایانه" هنر کمتری است که من فکر می کردم؟ آیا مدرک علوم کامپیوتر چیزی است که مهندسین نرم افزار واقعی زیر کمربند خود دارند؟

با فهمیدن اینکه من در جایی از جستجوی خود شروع کرده ام ، تعریف ویکی پدیا را از هر اصطلاح بررسی می کنم:

برنامه نویسی رایانه فرایند طراحی و ساخت یک برنامه کامپیوتری اجرایی برای انجام یک کار محاسباتی خاص است ... هدف از برنامه نویسی یافتن دنباله ای از دستورالعمل ها است که به طور خودکار عملکرد یک کار بر روی کامپیوتر را خودکار می کند ، غالباً برای حل یک مشکل معین.

من این را با تعریف علوم کامپیوتر مقایسه می کنم:

علم کامپیوتر مطالعه فرایندهایی است که با داده ها در تعامل هستند و می توانند به صورت داده به صورت برنامه ارائه شوند. استفاده از الگوریتم ها را قادر می سازد تا اطلاعات دیجیتالی را دستکاری ، ذخیره و ارتباط برقرار کنند. یک دانشمند رایانه در مورد تئوری محاسبات و عملکرد طراحی سیستم های نرم افزاری تحقیق می کند.

از حالت دریافت ، می توانم ببینم که یک تفاوت عمده در اینجا نشان داده شده است. به نظر می رسد برنامه نویسی رایانه فرایند طراحی و ساخت برنامه هایی است که یک کار معین را انجام می دهند. از طرف دیگر ، علوم رایانه مطالعه اساسی این فرایندها است. به نظر من ، آنچه که این مقایسه به نظر می رسد می خواهد بگوید این است که برنامه نویسی رایانه در قلمرو فناوری کاربردی نهفته است ، در حالی که علوم رایانه ای تئوری تر است.

برای شفافیت بیشتر ، من به نظرات مهندسان نرم افزار با تجربه در مورد اختلافات بین این دو نگاه می کنم. قبل از ادامه ، باید خاطرنشان كنم كه صرف نظر از نظر هر فرد ، به نظر می رسد كه بخش عمده ای از این بحث از طریق لنز آموزش عالی مشاهده شده است و بر همین اساس تحت تأثیر قرار گرفته است. در حالی که منابعی وجود دارد که به دنبال پاسخ مستقیم به سؤالاتی از جمله "تفاوت بین علوم کامپیوتر و برنامه نویسی رایانه است؟" است ، اما اغلب این مکالمه از طریق سؤالاتی مانند "کدام یک از مهمترین ها را باید در دانشگاه تحصیل کنم: علوم کامپیوتر یا مهندسی نرم افزار؟" تنظیم می شود. معلوم می شود ، در ابتدا برای من بسیار ناشناخته است ، بسیاری از مدارس مدرک "مهندسی نرم افزار" را ارائه می دهند ، که برای اهداف این مقاله می تواند بیشتر به برنامه نویسی رایانه شباهت داشته باشد. همانطور که انتظار می رود ، مدارک علوم کامپیوتر تمایل بیشتری به دانشجویان دارد تا در جهت مطالعه نظری روندهای اساسی رایانه ها را هدایت کنند ، در حالی که مهندسی نرم افزار آموزش و پرورش را در استفاده از این اصول ارائه می دهد. صرف نظر از تفاوت های آنها ، به نظر می رسد که این رشته ها شباهت های چشمگیری دارند.

در YouTuber و توسعه دهنده سابق گوگل YK Sugi در مقاله متوسط ​​"Computer Science VS Engineering Engineering VS - کدام یک از بهترین ها برای شما مناسبتر است؟" (تفاوت در زیر) ، تفاوت های بین علوم کامپیوتر و رشته های مهندسی نرم افزار در دانشگاه واترلو را بررسی می کند ، به دلیل او مشاهده کنید که یکی از بهترین برنامه های علوم کامپیوتر در آمریکای شمالی است. وی دریافت که بزرگان با هم همپوشانی زیادی دارند ، با توجه به نیازهای آنها برای ریاضی و آمار ، تقریباً "یکسان" بودند ، اما همچنین دریافت که هر یک از بزرگان دارای خصوصیات منحصر به فرد خود هستند:

من فکر می کنم (با توجه به اینکه کدام یک را انتخاب کنید) ، بیشتر به ترجیحات شما بستگی دارد. به اختصار:
اگر دوست دارید ریاضی ، منطق را بخوانید ، یا اگر می خواهید وارد یک رشته تخصصی در CS شوید مانند هوش مصنوعی ، یادگیری ماشین ، امنیت یا گرافیک.
اگر بیشتر علاقه مند به رویکرد دستی هستید و اگر می خواهید چرخه زندگی کلی نحوه ساخت و نگهداری نرم افزار را یاد بگیرید ، باید مهندسی نرم افزار را انتخاب کنید.

گفته می شود ، سوگی هنگامی که در پاسخ به این سوال که مهمترین گزینه برای دنبال کردن مهندس نرم افزار است ، با تعجب با این حکم پاسخ می دهد که یک رشته علوم کامپیوتر بهتر است. به دلایل واضح ، این برای من تعجب آور بود. چگونه یک مدرک مهندسی نرم افزار نمی تواند بهترین راه برای تأمین شغل در مهندسی نرم افزار باشد؟

بسیاری از مدارس حتی رشته های مهندسی نرم افزار ارائه نمی دهند. سوگی خاطرنشان می کند که دانشگاه بریتیش کلمبیا در ونکوور فقط علوم رایانه ای را برای مطالعه تئوری و نرم افزار و مهندسی کامپیوتر با تمرکز بر روی سخت افزار رایانه ارائه می دهد. هرکدام کلاس هایی در مهندسی نرم افزار ارائه می دادند ، اما یک سرور اختصاصی وجود نداشت. چگونه ممکن است که یک مدرسه مانند دانشگاه واترلو بتواند یک رشته اصلی در نرم افزار Engeering ارائه دهد اما بهترین گزینه را برای مهندسان نرم افزار آینده نگر نداشته باشد؟ Sugi توضیح بیشتری ارائه می دهد:

به طور معمول ، آنچه آنها (کارفرمایان) در یک نامزد مهندس نرم افزار به دنبال آن هستند ، توانایی نوشتن کد جامد و ساخت پروژه های جالب ، و همچنین مبانی علوم کامپیوتر از جمله ساختار داده ها و الگوریتم ها است.
من فکر می کنم بهترین راه برای پرورش این مجموعه مهارت ، یادگیری سریع اصول علوم کامپیوتر و صرف وقت خود برای تمرین برای حل مشکلات و نوشتن کد است.
با توجه به برنامه درسی مهندسی نرم افزار و بر اساس اینكه دانشجویان مهندسی مشغول به طور كلی هستند ، به نظرم انجام این كار با مهندسی نرم افزار سخت تر از علوم کامپیوتر است.

به نظر می رسد نکته ای که سوشی بیان می کند این است که در حالی که اصول علوم کامپیوتر چیزی است که به بهترین وجه در یک کلاس درس مورد مطالعه قرار می گیرد ، ماهیت کاربردی درک در مهندسی نرم افزار نیاز به تجربه فراوان دارد. این چیزی است که مطالعه دانشگاه در واقع ممکن است دانشجویان را که به دنبال ورود به این رشته هستند ، مانع کند.

صرف نظر از سوء استفاده های سوگی و دیگران در این زمینه ، انکار این مسئله که هنوز وجود این رشته ها و دپارتمان ها در دانشگاه ها بسیار تأثیر داشته است بر نحوه مشاهده علم رایانه ، به همراه مقایسه آن با برنامه نویسی رایانه.

در حالی که ما اکنون ایده ای بهتر از چگونگی مشاهده این سؤال در بستر دانشگاهی داریم ، هنوز این سؤال بین رابطه قاطع بین علوم کامپیوتر و برنامه نویسی رایانه باقی مانده است. آیا برنامه نویسی به خوبی زیر شاخه علوم کامپیوتر است ، یا هنوز این دو رشته مجزا هستند؟

از آنچه این تحقیق به ما می گوید ، به نظر می رسد که برنامه نویسی رایانه متعلق به علوم کامپیوتر است ، اما با وجود تفاوت های مهم کافی که این یک حوزه به خودی خود است.

Tech YouTuber سیلوستر مورگان ، در فیلم 2017 خود "توسعه نرم افزار چیست؟ توسعه نرم افزار در مقابل علوم کامپیوتر "(پیوند زیر) ، جزئیات این دو را تفصیل می دهد:

توسعه نرم افزار استفاده از زبان های برنامه نویسی و ابزارهایی برای نوشتن دستورالعمل هایی است که کامپیوتر برای دستیابی به چیزی می فهمد ، برای حل یک مشکل ... برای ساختن چیزی یا خودکار کردن چیزی. توسعه نرم افزار کاربردی از علوم رایانه است.
علم رایانه ریشه و پایه و اساس و توسعه نرم افزار است که در صدر آن قرار دارد ، اما آنها یکسان نیستند. شما می توانید بدون آن دانش بنیان سازنده نرم افزارهای سازنده و ماهر شوید ، اما به عنوان یک حرفه ای واقعی ، خوب است که همیشه کنجکاو باشید و در موارد ضروری و مورد علاقه خود عمیق تر باشید.

در حالی که مورگان برنامه نویسی را یک زیر مجموعه و کاربرد علوم کامپیوتر می داند ، اما آنها را به اندازه کافی متمایز می داند که می توان با ذهنیت جداگانه ای به آنها نزدیک شد.

شینا Vaidyanathan ، ستون نویس ، در مقاله EdSurge در سال 2015 با عنوان "علوم رایانه فراتر از برنامه نویسی می رود" اشاره می کند که برنامه نویسی یکی از چندین مؤلفه اصلی علوم کامپیوتر است:

علم کامپیوتر در مورد حل مشکلات با استفاده از رایانه است و برنامه نویسی (یا برنامه نویسی) مربوط به اجرای این راه حل ها است. دانشمندان رایانه می توانند مانند معمارانی باشند که خانه را طراحی می کنند - اما نیازی به ساخت آن ندارند.
دوره جدید اصول علوم کامپیوتر AP دبیرستان با دقت بیشتر این تمایز مهم را با تمرکز بر هفت ایده بزرگ منعکس می کند: خلاقیت ، انتزاع ، داده ، الگوریتم ها ، برنامه نویسی ، اینترنت ، تأثیر جهانی. برنامه نویسی (برنامه نویسی) فقط یکی از این هفت زمینه است.

Vaidyanathan در مقاله خود در مورد آموزش در مورد این مباحث ، ثابت می کند که دلایل زیادی برای آموزش علوم کامپیوتر به عنوان یک کل وجود دارد ، و اینکه گریزی به برنامه نویسی به تنهایی دلیلی برای جلوگیری از سایر زمینه ها در علوم رایانه نیست.

Tar YouTuber ، توسعه دهنده و نویسنده Aaron در Beta همچنین در ویدیوی خود در سال 2017 "تفاوت بین علوم کامپیوتر و برنامه نویسی رایانه" چیست (که در زیر مشاهده می کنید) این موضوع را مرور می کند:

... آیا آنها یکسان هستند (علوم کامپیوتر و برنامه نویسی رایانه) و چه تفاوتی دارند؟ بنابراین فکر می کنم ساده ترین سؤال برای پاسخ دادن نیز سخت ترین کار برای پاسخ دادن است. آیا این دو اصطلاح یکسان هستند؟ و جواب در واقع ، "نه ، آنها نیستند. اما آنها بسیار به هم گره خورده اند ... "
... این همان مفهوم است که انگار شما یک شیمی دان و یک مهندس شیمی دارید. برنامه نویسی کامپیوتر جنبه مهندس شیمی است. آنها افرادی هستند که این تحقیق را انجام می دهند و آن را در موقعیت های روزمره به کار می گیرند ، در حالی که طرف علوم رایانه ای آن بیشتر شیمی دان است. آنها مشغول انجام کارهای علمی هستند ، کارهای نظری برای اینکه شخص بتواند آن را به دنیای واقعی پیاده کند.

هارون در بتا همچنین ادامه می دهد که در حالی که این دو زمینه جدا از هم هستند ، درک یکی عمیقاً در خدمت درک دیگری است. داشتن درک درستی از نظریه های موجود در مورد نحوه کار رایانه ها می تواند به شما در نوشتن کد مؤثرتر کمک کند ، در حالی که دانستن چگونگی به بهترین نحو ارائه دستورالعمل هایی که رایانه ها می توانند از آنها پیروی کنند ، می تواند به رانندگی درک عمیق تر از رایانه ها به عنوان یک کل کمک کند.

بنابراین Bootcamp Grads در کجای اینها جای دارد؟

همانطور که در بالا مشاهده می شود ، بخش قابل توجهی از بحث در مورد مشاغل رایانه ای و نرم افزاری در دانشگاه صورت می گیرد ، و کسانی که در بازی وارد شدند کمی بعداً احساس عقب کردند (خودم نیز در آن حضور داشتم). گفته می شود ، در حالی که بحث گسترده ای در مورد این موضوع صورت گرفته است ، در واقع عادلانه است که بگوییم دانش آموزان سابق ، فعلی یا آینده نگر bootcamp برنامه نویسی نباید احساس چنین دلسردی کنند.

کایل Thayer ، دانشجوی دکتری دانشگاه واشنگتن ، در واشنگتن در زمینه "Coding Bootcamps در مقابل مقاطع علوم رایانه: در مورد کارفرمایان و سایر دیدگاه ها" در سال 2018 ، به دنبال حل این مسئله خاص است. وی اظهار می دارد که هر دو بوت کامپ و مدرک 4 ساله علوم کامپیوتر اهداف و نقاط قوت خاص خود را دارند:

هدف از مدرک CS این است که دانش آموزان بتوانند زمینه علمی محاسبات را به دانشجویان ارائه دهند. از سوی دیگر ، برنامه نویسی بوت کپس در آموزش افراد برای یک نوع خاص از کار برنامه نویسی (به طور معمول برنامه نویسی تحت وب کامل) تمرکز دارد.
… بوت کدهای کدنویسی بعید است که اصول سیستم های عامل را پوشش دهد ، و برنامه های CS بعید است که آخرین فناوری های وب را پوشش دهند یا کار تیمی زیادی داشته باشند. برنامه های دانشگاه به آهستگی تغییر می کنند ، اما اصول علوم کامپیوتر نیز تغییر می کند ، در حالی که بوت کپس های رمزگذاری به سرعت تغییر می کنند و می توانند با سرعت سریع تغییر فن آوری ادامه دهند. من انتظار دارم که bootcamp های کدنویسی و مدرک CS همچنان به صورت آهنگ های جداگانه در آینده ، خواه به صورت مستقل یا مشترک اجرا شوند ، ادامه یابد.

خود Thayer این مطالعه 2017 را از واقعاً وبلاگ (پیوند زیر) قرار داده است. این تحقیق با عنوان "واقعاً چه کارفرمایان درباره کدگذاری بوت کپس فکر می کنند؟" ، نمونه ای از بیش از 1000 استخدام کننده فنی و مدیر منابع انسانی دارد. همانطور که در مقاله اشاره می شود ، 72٪ تکان دهنده پاسخ دادند که آنها درجه های مربوط به بوت کامپ را "دقیقاً به عنوان کاندیداهای دارای مدرک علوم رایانه" نشان می دهند. از افراد بررسی شده ، حدود 17٪ "فکر می کنند فارغ التحصیلان بوتکامپ به اندازه کاندیداهای دارای مدرک علوم رایانه آماده نیستند و یا احتمالاً عملکرد بیشتری دارند."

80٪ از مدیران مورد بررسی گزارش دادند که در مقطعی فارغ التحصیل فارغ التحصیل bootcamp استخدام شده اند و مبلغی مبهم (99.8٪) ، گفتند که آنها دوباره یک نفر را استخدام می کنند.

با این که نظر همه افراد متفاوت خواهد بود ، به سختی می توان نتیجه گرفت که این نتایج باید ناامیدکننده برای برنامه نویسان bootcamp باشد ، در واقع من می گویم که آنها از انتظارات من فراتر رفته اند. این مطالعه با اطلاعاتی بنیادین همراه است: اگرچه با وجود دیدگاه کلی مثبت نسبت به درجه های بوت کپ ، 41٪ از پاسخ دهندگان در این تحقیق گفتند که ، آنها در استخدام شخصی که دارای مدرک علوم رایانه است ، راحت تر خواهند بود. این امر تا حد زیادی به دلیل استانداردهای اصلی تنظیم شده دانشگاه ها و عدم وجود ساختار نظارتی از بوت کپس های رمزگذاری کنونی است. برای دنبال کردن با مضامین مشابه ، پاسخ دهندگان گفتند که برای پروژه های انتزاعی تر در مورد دانش نظری رایانه ها ، مدارک علوم رایانه دارای امتیاز بالاتری بودند ، در حالی که با کارهایی که نیاز به درک عملی تر از موضوعات دارند ، گواهینامه های بوت کپه به همان اندازه با ارزش بودند.

بنابراین Takeaways چیست؟

خوب ، بگذارید برخی از سؤالاتی را که در ابتدای پست از شما پرسیده می شود ، مرور کنیم:

آیا علوم کامپیوتر و برنامه نویسی رایانه در یک چیز مشابه هستند؟

خیر. در حالی که مشترکات زیادی با هم داریم ، درست می توان گفت که برنامه نویسی کامپیوتر و علوم رایانه کاملاً متمایز هستند.

آیا علوم کامپیوتر و برنامه نویسی رایانه مرتبط هستند؟

بله - در حالی که آنها دسته بندی های مختلفی دارند ، این دو نیز با یکدیگر همپوشانی فوق العاده ای دارند ، و دانش یکی تقریباً به درک دیگری کمک می کند.

آیا علوم کامپیوتر برنامه نویسی رایانه را "شامل" می کند یا برعکس؟

بله ، برنامه نویسی رایانه یک شاخه کاربردی علوم کامپیوتر است. همه برنامه نویسی رایانه را می توان زیر مجموعه علوم کامپیوتر دانست ، در حالی که علوم کامپیوتر زیادی وجود دارد که هیچ ارتباطی با برنامه نویسی رایانه ندارد.

من به عنوان یک دانشجوی جدید برنامه نویسی رایانه که 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-difference-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- رایانه-science-goes-beyond-coding

https://medium.com/bits-and-behavi/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/