Компютърни науки срещу компютърно програмиране: Каква е разликата?

Изображение кредит

Изглежда, че и двата термина в заглавието бяха хвърлени доста през последните няколко години. Като човек, който току-що се зае с изучаването на програмиране, чух термините „Компютърни науки“ и „Компютърно програмиране“, използвани много наскоро, почти взаимозаменяемо. Изглежда, че бих отхвърлил да не науча малко повече за това какво всъщност означава всеки и да отговоря на няколко от следните въпроси: Същите ли са? Свързани ли са? Включва ли едното друго?

Защо има значение изобщо?

Като човек, който току-що започна да се учи как да програмирам (и който има 4-годишна бакалавърска степен, но не и компютърни науки), мога да кажа, че усещам, че има значително значение по отношение на перспективите ми за кариера. Много често, когато разглеждам обяви за работа, свързани със софтуер, виждам, че 4-годишната степен по компютърни науки е необходима или се разглежда като основен плюс. Това често кара някой в ​​моята позиция да си зададе следните въпроси: Пропуснах ли лодката? Дали „компютърното програмиране“ е по-малко изкуство, за което смятах, че е? Степен на компютърните науки има ли реалните софтуерни инженери под колана си?

Като разбера, че съм започнал някъде в моето търсене, проверявам определението на Wikipedia за всеки термин:

Компютърното програмиране е процесът на проектиране и изграждане на изпълними компютърни програми за изпълнение на конкретна компютърна задача ... Целта на програмирането е да се намери последователност от инструкции, които да автоматизират изпълнението на задача на компютър, често за решаване на даден проблем.

Сравнявам това с определението за компютърни науки:

Компютърната наука е изучаване на процеси, които взаимодействат с данни и които могат да бъдат представени като данни под формата на програми. Той дава възможност за използване на алгоритми за манипулиране, съхраняване и предаване на цифрова информация. Компютърен учен изучава теорията на изчисленията и практиката на проектиране на софтуерни системи.

От начина на разглеждане виждам, че тук е посочена основна разлика. Компютърното програмиране изглежда е процесът на проектиране и изграждане на програми, които изпълняват дадена задача. Компютърните науки, от друга страна, са в основата на тези процеси. Според мен това сравнение се опитва да каже, че компютърното програмиране е в сферата на приложните технологии, докато компютърните науки са по-теоретични.

За по-голяма яснота гледам на мненията на опитни софтуерни инженери относно различията между тях. Преди да продължа, трябва да отбележа, че независимо от мнението на всеки индивид, изглежда, че голяма част от тази дискусия е била разглеждана през лещата на висшето образование и съответно е била повлияна. Макар че има ресурси, които се стремят директно да отговорят на въпроси като „Каква е разликата между компютърната наука и компютърното програмиране?“, Често разговорът се подрежда чрез въпроси като „Кой основен трябва да уча в колежа: Компютърни науки или софтуерно инженерство?“ Оказва се, първоначално непознат за мен, много училища предлагат степен „Софтуерно инженерство“, която за целите на тази статия може да бъде подобна на компютърното програмиране. Както може да се очаква, степените по компютърни науки са склонни да водят учениците повече в посока на теоретично проучване на основните процеси в компютрите, докато софтуерното инженерство предлага образование при прилагането на тези принципи. Независимо от различията им, изглежда, че тези дисциплини имат поразително сходство.

В своята медийна статия „Компютърна наука VS Софтуерно инженерство - кой майор е най-подходящ за вас?“ (Свързана по-долу), технологията YouTuber и бившият разработчик на Google YK Sugi изследва разликите между специалностите „Компютърна наука“ и „Софтуерно инженерство“ в Университета в Ватерло, поради неговите Вижте, че има една от най-добрите програми за компютърни науки в Северна Америка. Той откри, че специалностите имат изненадващо количество припокриване, тъй като са „почти идентични“ по отношение на изискванията си за математика и статистика, но също така откриват, че всеки основен се гордее със свои уникални качества:

Мисля, че (по отношение на кой основен да изберете,) зависи най-вече от вашите предпочитания. Накратко:
Трябва да изберете Компютърни науки, ако харесвате математика, логика или ако искате да попаднете в специализирана област в CS като изкуствен интелект, машинно обучение, сигурност или графика.
Трябва да изберете софтуерно инженерство, ако се интересувате повече от практическия подход и ако искате да научите цялостния жизнен цикъл на това как се изгражда и поддържа софтуерът.

Това беше казано, когато отговаря на въпроса кой да продължи да следва с интерес да стане софтуерен инженер, Суги изненадващо отговаря с присъдата, че специалност Computer Science е по-добра. По очевидни причини това дойде като изненада за мен. Как степента на софтуерно инженерство не може да бъде най-добрият път за осигуряване на работа в софтуерното инженерство?

Много училища дори не предлагат специалности по софтуерно инженерство. Суги посочва, че Университетът на Британска Колумбия във Ванкувър предлага само компютърни науки за теоретични и софтуерни изследвания и компютърно инженерство, фокусирани върху компютърен хардуер. Всеки предлагаше часове по софтуерно инженерство, но нямаше специален специалност. Как може да се окаже, че училище като Университета във Ватерлоо може да предложи основна специалност в софтуерното инженерство, но не и да е най-добрият вариант за бъдещите софтуерни инженери? Sugi предлага още разработка:

Обикновено това, което те (работодателите) търсят в кандидата за софтуерен инженер, е способността да напишат солиден код и да изграждат интересни проекти, както и основи на компютърните науки, включително структури на данни и алгоритми.
Мисля, че най-добрият начин за култивиране на този набор от умения е чрез бързо усвояване на основите на компютърните науки и прекарване на собственото си време в практикуване на решаване на проблеми и писане на код.
Въз основа на учебната програма за софтуерно инженерство и въз основа на това колко заети са студентите по инженерство като цяло, мисля, че би било по-трудно да се направи това със софтуерното инженерство, отколкото с компютърните науки.

Изглежда, че Суги изглежда е, че макар основите на компютърните науки да са нещо, което се изучава най-добре в класната стая, приложениевият характер на разбиране в софтуерното инженерство изисква много практически опит. Това е нещо, което университетското проучване може всъщност да попречи на студентите, които искат да влязат в тази област.

Независимо от поглъщанията на Суги и други по тази тема, остава много трудно да се отрече, че съществуването на тези специалности и катедри в университетите е повлияло много на начина, по който разглеждаме компютърните науки, заедно с сравнението му с компютърното програмиране.

Въпреки че сега имаме малко по-добра идея как да разглеждаме този въпрос в академичен контекст, въпросът все още остава между категоричната връзка между компютърните науки и компютърното програмиране. Програмирането се вписва прекрасно като подкатегория „Компютърни науки“ или двете дисциплини все още се различават?

От това, което ни казват изследванията, изглежда, че компютърното програмиране наистина принадлежи на компютърните науки, но с достатъчно важни разлики, че това е поле само по себе си.

Tech YouTuber Силвестър Морган в своето видео от 2017 г. „Какво е софтуерна разработка? Софтуерна разработка VS Computer Science ”(свързана по-долу), описва подробно разликите между двете:

Разработката на софтуер е използването на програмни езици и инструменти за писане на инструкции, които компютърът разбира, за да постигне нещо, за да реши проблем ... да изгради нещо или да автоматизира нещо. Софтуерната разработка е приложение на компютърните науки.
Компютърните науки са коренът и основата и разработката на софтуер, който стои върху всичко това, но те не са едно и също нещо. Можете да станете продуктивен и квалифициран разработчик на софтуер без тези основни познания, но като истински професионалист е добре винаги да бъдете любопитни и да се задълбочавате в тези неща, колкото е необходимо и според вас.

Докато Морган счита Програмирането за подкатегория и приложение на компютърните науки, той ги вижда като достатъчно отчетливи, че могат да се подхождат към тях с отделни нагласи.

В своята статия на EdSurge от 2015 г. „Компютърните науки надхвърлят кодирането“ (свързана по-долу), колонистът Шийна Вайдянатан посочва, че програмирането е един от няколко основни компонента на компютърните науки:

Компютърната наука е за решаване на проблеми с помощта на компютри, а кодирането (или програмирането) е за прилагането на тези решения. Компютърните учени могат да бъдат като архитекти, които проектират къщата - но не е нужно да я строят.
Новият курс на принципите за компютърни науки на AP по-точно отразява това важно отличие, като се фокусира върху седем големи идеи: творчество, абстракция, данни, алгоритми, програмиране, интернет, глобално въздействие. Кодирането (програмирането) е само една от тези седем области.

В своята статия относно образованието по тези теми, Vaidyanathan установява, че има много силни причини да преподаваме компютърни науки като цяло и че отвращението към самото програмиране не е причина да се избягват други области в компютърните науки.

Технологът YouTuber, разработчик и писател Арън в Бета също така разглежда темата във видеото си от 2017 г. „Каква е разликата между компютърните науки и компютърното програмиране“ (свързан по-долу):

... едно и също нещо са (компютърни науки и компютърно програмиране) и каква е разликата? Така че смятам, че най-лесният въпрос за отговор е и най-трудното нещо. Тези два термина ли са едно и също нещо? И отговорът е наистина: „Не, не са. Но те са много тясно свързани ... "
... това е същата концепция, както ако си химик и химически инженер. Компютърното програмиране е страна на инженера по химика на това. Те са хората, които провеждат изследването и го прилагат в ежедневни ситуации, докато компютърната наука в него е по-скоро химик. Правят научната работа, теоретичната работа, за да може някой след това да я приложи в реалния свят.

Аарон в Бета също казва, че докато двете области са разделени, разбирането на едното дълбоко служи за разбиране на другото. Доброто разбиране на теориите за това как работят компютрите може да ви помогне да напишете по-ефективен код, като същевременно знаете как най-добре да предоставите инструкциите, които компютрите могат да следват, може да помогне за по-дълбоко разбиране на компютрите като цяло.

И така, къде Bootcamp Grads се вписват във всичко това?

Както се вижда по-горе, значителна част от дискусиите за компютърни и софтуерни кариери се провеждат в университета, оставяйки онези, които влязоха в играта, малко по-късно да се почувстват зад себе си (включително и аз). Въпреки това, макар да има обширна дискусия по тази тема, всъщност е честно да кажем, че бившите, настоящите или бъдещите студенти в кодиращия старт не трябва да се чувстват толкова обезкуражени.

В своята средна статия за 2018 г. „Кодиране на Bootcamps срещу степени на компютърните науки: какво искат работодателите и други перспективи“ (свързана по-долу), докторантът от Университета на Вашингтон Кайл Тейър търси да се справи с този конкретен проблем. Той заявява, че както началните, така и 4-годишните степени по компютърни науки носят собствените си цели и силни страни:

Целта на CS степен е да даде на студентите преглед на научната област на изчислителната техника…. Кодирането на стартиращи камери, от друга страна, се фокусира върху обучението на хората за определен тип програмиране (обикновено уеб програмиране с пълен стек).
… Кодирането на стартиращите камери вероятно няма да покрие основите на операционните системи, а CS програмите едва ли ще покрият най-новите уеб технологии или ще имат много екипна работа. Университетските програми се променят бавно, но това прави и основите на компютърните науки, докато кодирането на стартовите камери се променят бързо и са в състояние да бъдат в крак с бързите темпове на промяна на технологиите. Очаквам кодирането на стартовите камери и CS градусите да продължат да съществуват като отделни песни в бъдеще, независимо дали се изпълняват независимо или съвместно.

Самият Тайър сайт на това проучване за 2017 г. от блог „Наистина” (свързан по-долу). Изследването, озаглавено „Какво наистина работодателите мислят за кодирането на Bootcamps?“, Включва извадки от над 1000 технически рекрутери и ръководители на човешки ресурси. Както се посочва в статията, шокиращи 72% отговориха, че гледат на bootcamp gradu „също толкова подготвени и вероятно ще бъдат високи изпълнители като кандидати със степени по компютърни науки“, докато допълнителни 12% „смятат, че завършилите стартиране на bootcamp са по-подготвени и по-склонни да Бъдете добри изпълнители. ”От анкетираните около 17%„ смятат, че завършилите стартиращите лагери не са толкова подготвени или е вероятно да са по-добри изпълнители като кандидати със степени по компютърни науки. “

80% от анкетираните мениджъри съобщават, че в даден момент са наели дипломиран начален старт, а огромната сума (99,8%) заяви, че ще наеме такава отново.

Въпреки че мнението на всички ще се различава, ми е трудно да заключа, че тези резултати трябва да са отвратителни за програмистите на bootcamp, всъщност бих казал, че надхвърлят очакванията ми. Това проучване обаче идва с обосноваваща информация: въпреки общия положителен поглед върху bootcamp grad, 41% от анкетираните в проучването са казали, че би било по-удобно да наемат някой със степен компютърни науки. Това се дължи до голяма степен на добре регулираните основни стандарти на университетите и липсата на регулаторна структура на настоящите кодиращи стартови камери. Следвайки подобни теми, анкетираните казаха, че за по-абстрактни проекти по отношение на теоретичните познания на компютрите степените по компютърни науки са по-високо ценени, докато със задачи, изискващи повече практическо разбиране на проблемите, сертификатите за стартиращи камери са също толкова ценни.

И така, какво са заведите?

Е, нека да преминем през някои въпроси, които бяха зададени в началото на публикацията:

Дали компютърните науки и компютърното програмиране са едно и също нещо?

Не, макар да има много общо, би било точно да се каже, че компютърното програмиране и компютърните науки са категорично различни.

Свързани ли са компютърните науки и компютърното програмиране?

Да - докато са различни категории, двете също имат огромно количество припокриване и знанията за едната почти сигурно ще помогнат за разбирането на другата.

Компютърните науки „включват ли“ компютърно програмиране или Vice Versa?

Да, компютърното програмиране е приложен клон на компютърните науки. Цялото компютърно програмиране може да се счита за подмножество на компютърните науки, докато има много компютърни науки, които нямат нищо общо с компютърното програмиране.

Като нов студент по компютърно програмиране, който не е следвал 4-годишна степен по компютърни науки, пропуснах ли пословичната лодка?

Зависи какви са целите ви. Ако се опитвате да придобиете умения за програмиране, за да работите в търговска обстановка или нещо подобно, вероятно отговорът е не (макар че пътят все още няма да е лесен). Ако се опитвате да публикувате академични изследвания на компютърната теория, вероятно ще искате да изучавате темата допълнително в университет.

Компютърното програмиране е по-малко изкуство, отколкото си мислех, че е?

Зависи какво си помислил. Ако смятате, че „Компютърно програмиране“ е област на изследване, която обхваща повечето области на изследване, свързани с компютрите, тогава ще сбъркате. Това е компютърни науки. Ако смятате, че това е проучването на начините за комуникация и предоставяне на инструкции към компютрите до края на изграждането на програми, тогава ще бъдете правилни. Като коментар, мисленето или за „по-малко“ от другото по принцип е ненужно и липсва в перспектива на уникалния контекст, който всеки запълва.

Дали степента на компютърните науки какво имат "реалните" софтуерни инженери под колана си?

Не е задължително. 4-годишната диплома за компютърни науки никога няма да навреди на кариерните цели на бъдещия софтуерен инженер, нито на нейното разбиране на областта, но едва ли има връзка между човек, който е носител на степен и инженери. Има много успешни инженери, които са изградили кариерата си, след като са преследвали различна специалност (или никога не са посещавали университет на първо място). Има и много студенти, които са преминали специалност „Компютърни науки“ с цел да бъдат инженер и в крайна сметка са разочаровани, когато изследването се оказва по-тежко теоретично.

За да обобщим, Компютърното програмиране е приложен клон на компютърните науки. Може да се изучава най-вече независимо от компютърните науки, макар че разбирането на едното ще послужи много на другото. Брандирането на единия като „по-добър“ от другия обикновено е погрешна практика и по-точно трябва да се разгледа задачата, която се работи, преди да се реши коя дисциплина или набор от умения ще бъде от по-голяма полза. Завършилите компютърни науки и завършилите компютърния програми Bootcamp имат своето обосновано място в обществото и е малко вероятно някой от тях да изчезне от релевантност в скоро време.

Написването на тази статия разчиташе дълбоко на изследванията, направени от други. Ако искате да разгледате допълнително някой от тези ресурси, моля, направете справка с връзките по-долу:

(Фото кредит) https://theydiffer.com/difference-bet 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-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/