Кампутарныя навукі супраць камп'ютэрнага праграмавання: у чым розніца?

Крэдыт малюнка

Такое адчуванне, што абодва тэрміны ў назве былі закінутыя за апошнія некалькі гадоў. Як чалавек, які толькі пачаў займацца вывучэннем праграмавання, я чуў, што тэрміны "камп'ютэрная навука" і "камп'ютэрнае праграмаванне" нядаўна выкарыстоўваліся практычна ўзаемна. Здаецца, мне было б адмовіць, каб не даведацца крыху больш пра тое, што на самой справе азначае, і адказаць на некалькі наступных пытанняў: Ці аднолькавыя яны? Ці звязаныя яны? Ці ўключае адно?

Чаму гэта ўсё роўна?

Як чалавек, які толькі пачаў вучыцца праграмаваць (і хто мае 4-гадовы ступень бакалаўра, але не ў галіне камп'ютэрных навук), я магу сказаць, што я адчуваю, што гэта мае значнае значэнне ў дачыненні да маёй кар'еры. Вельмі часта, разглядаючы паведамленні аб працы з праграмным забеспячэннем, я бачу, што 4-гадовая ступень камп'ютэрных навук альбо неабходная, альбо ўспрымаецца як галоўны плюс. Гэта часта прымушае кагосьці ў маім становішчы задаць сабе наступныя пытанні: я сумаваў па лодцы? Хіба "камп'ютэрнае праграмаванне" - гэта менш мастацтва, якое я думаў? Гэта ступень інфарматыкі, якую рэальныя праграмныя інжынеры маюць пад поясам?

Разумеючы, што я пачынаю дзесьці ў сваім пошуку, я правяраю ў Вікіпедыі вызначэнне кожнага тэрміна:

Кампутарнае праграмаванне - гэта працэс распрацоўкі і пабудовы выкананай камп'ютэрнай праграмы для выканання пэўнай вылічальнай задачы ... Мэта праграмавання - знайсці паслядоўнасць інструкцый, якія аўтаматызуюць выкананне задачы на ​​кампутары, часта для вырашэння зададзенай праблемы.

Я параўноўваю гэта з азначэннем для камп'ютэрных навук:

Кампутарная навука - гэта вывучэнне працэсаў, якія ўзаемадзейнічаюць з дадзенымі і якія могуць быць прадстаўлены ў выглядзе дадзеных у выглядзе праграм. Гэта дазваляе выкарыстоўваць алгарытмы для маніпулявання, захоўвання і перадачы лічбавай інфармацыі. Кампутар вывучае тэорыю вылічэнняў і практыку праектавання праграмных сістэм.

Зыходзячы з гэтага, я бачу, што тут ёсць галоўнае адрозненне. Камп'ютэрнае праграмаванне, здаецца, з'яўляецца працэсам распрацоўкі і пабудовы праграм, якія выконваюць зададзеную задачу. З іншага боку, інфарматыка - гэта асноўнае вывучэнне гэтых працэсаў. Мне здаецца, што гэта параўнанне спрабуе сказаць, што камп'ютэрнае праграмаванне ляжыць у сферы прыкладных тэхналогій, у той час як камп'ютэрныя навукі схільныя больш тэарэтычна.

Для далейшай яснасці я разглядаю меркаванні вопытных праграмных інжынераў адносна розніц паміж імі. Перш чым працягваць, я мушу адзначыць, што незалежна ад меркавання любога чалавека, аказваецца, што вялікая частка гэтай дыскусіі была разгледжана праз прызму вышэйшай адукацыі і была пад уздзеяннем адпаведна. У той час як ёсць рэсурсы, якія імкнуцца наўпрост адказаць на такія пытанні, як "У чым розніца паміж камп'ютэрнай навукай і камп'ютэрным праграмаваннем?", Часта размова складаецца з пытанняў, такіх як "Які асноўны я павінен вучыцца ў каледжы: камп'ютэрная навука і праграмнае забеспячэнне?" Аказваецца, першапачаткова для мяне невядома, што многія школы прапануюць дыплом «Праграмнае забеспячэнне», які для мэтаў гэтага артыкула можна параўнаць з камп'ютэрным праграмаваннем. Як і варта было чакаць, ступень камп'ютэрных навук, як правіла, вядзе студэнтаў больш у кірунку тэарэтычнага вывучэння асноўных працэсаў кампутараў, у той час як праграмнае забеспячэнне прапануе адукацыю па ўжыванні гэтых прынцыпаў. Незалежна ад іх адрозненняў, аднак, падобныя дысцыпліны маюць дзіўнае падабенства.

У сваім сярэднім артыкуле "Computer Science VS Software Engineering - які асноўны для вас лепшы?" (Спасылка ніжэй), тэхнік YouTuber і былы распрацоўшчык Google YK Sugi даследуе адрозненні паміж факультэтамі камп'ютэрных навук і праграмнага забеспячэння ў Універсітэце Ватэрлоо, дзякуючы яго меркаванне, што ў яго ёсць адна з лепшых праграм па інфарматыцы ў Паўночнай Амерыцы. Ён выявіў, што спецыяльнасці маюць дзіўную колькасць перакрыццяў, быўшы "практычна аднолькавымі" у дачыненні да сваіх патрабаванняў да матэматыкі і статыстыкі, але таксама выявіў, што кожны буйны хваліўся сваімі унікальнымі якасцямі:

Я думаю (у дачыненні да таго, які буйны абраць), гэта ў большай ступені залежыць ад вашых пераваг. Карацей:
Вы павінны выбраць камп'ютэрныя навукі, калі вам падабаецца матэматыка, логіка ці вы хочаце патрапіць у спецыялізаваную сферу ў галіне CS, напрыклад, штучны інтэлект, машыннае навучанне, бяспека ці графіка.
Вы павінны выбраць праграмнае забеспячэнне, калі вы больш зацікаўлены ў практычным падыходзе і калі вы хочаце даведацца пра агульны жыццёвы цыкл таго, як ствараецца і падтрымліваецца праграмнае забеспячэнне.

З улікам гэтага, адказваючы на ​​пытанне, які з іх зрабіць галоўным з цікавасцю стаць інжынерам-праграмістам, Сугі дзіўна адказвае на вердыкт, што мажор камп'ютэрных навук лепш. Па зразумелых прычынах гэта стала для мяне нечаканасцю. Як ступень інжынерыі праграмнага забеспячэння не можа стаць лепшым спосабам забеспячэння працы ў інжынерыі праграмнага забеспячэння?

Шмат школ нават не прапануюць спецыяльнасці праграмнага забеспячэння. Сугі адзначае, што Універсітэт Брытанскай Калумбіі ў Ванкуверы прапануе толькі камп'ютэрныя навукі для тэарэтычных і праграмных даследаванняў і камп'ютэрнай інжынерыі, арыентаваныя на камп'ютэрнае абсталяванне. Кожны з іх прапаноўваў заняткі па інжынерыі праграмнага забеспячэння, але спецыяльнай спецыяльнасці не было. Як магло быць, што такая школа, як Універсітэт Ватэрлоо, магла б прапанаваць спецыялізацыю ў праграмным забеспячэнні, але не зрабіць гэта лепшым варыянтам для будучых праграмных інжынераў? Sugi прапануе дадатковыя распрацоўкі:

Як правіла, тое, што яны (працадаўцы) шукаюць у кандыдата-праграміста, - гэта магчымасць пісаць цвёрды код і ствараць цікавыя праекты, а таксама асновы інфарматыкі, уключаючы структуры дадзеных і алгарытмы.
Я думаю, што лепшы спосаб вырабіць гэты набор навыкаў - гэта хуткае вывучэнне асноў інфарматыкі і марнаванне ўласнага часу на практыку вырашэння праблем і напісанне кода.
Зыходзячы з вучэбнай праграмы па праграмнай інжынерыі і зыходзячы з таго, наколькі занятыя студэнты інжынерных тэндэнцый наогул, я думаю, што зрабіць гэта з праграмным забеспячэннем будзе складаней, чым з камп'ютэрнымі навукамі.

Справа Сугі заключаецца ў тым, што, хоць асновы камп'ютэрных навук - гэта лепшае вывучэнне ў класе, прыкладны характар ​​разумення ў праграмнай інжынерыі патрабуе вялікага практычнага вопыту. Гэта нешта універсітэцкае даследаванне можа перашкодзіць студэнтам, якія жадаюць патрапіць у гэтую сферу.

Незалежна ад захадаў Сугі і іншых па гэтай тэме, застаецца вельмі цяжка адмаўляць, што існаванне гэтых спецыяльнасцей і кафедраў ва універсітэтах значна паўплывала на тое, як мы разглядаем камп'ютэрныя навукі, а таксама параўнанне з камп'ютэрным праграмаваннем.

У той час як у нас ёсць некалькі лепшае ўяўленне пра тое, як разглядаць гэтае пытанне ў акадэмічным кантэксце, пытанне ўсё яшчэ застаецца паміж катэгарычнай сувяззю паміж інфарматыкай і камп'ютэрным праграмаваннем. Ці правільна праграмаванне размяшчаецца як падкатэгорыя інфарматыкі, альбо дзве дысцыпліны ўсё яшчэ адрозніваюцца?

З таго, што нам кажуць даследаванні, падобна, што камп'ютэрнае праграмаванне сапраўды належыць да камп'ютэрных навук, але з дастаткова важнымі адрозненнямі, што гэта поле само па сабе.

Tech YouTuber Сільвестр Морган у сваім відэа "2017 - што такое распрацоўка праграмнага забеспячэння? Распрацоўка праграмнага забеспячэння VS Computer Science "(спасылка ніжэй), падрабязна распавядае пра адрозненні паміж імі:

Распрацоўка праграмнага забеспячэння - гэта выкарыстанне моў праграмавання і інструментаў для напісання інструкцый, якія кампутар разумее для дасягнення чагосьці, каб вырашыць праблему ... нешта пабудаваць альбо аўтаматызаваць. Распрацоўка праграмнага забеспячэння - гэта прыкладанне інфарматыкі.
Кампутарныя навукі - гэта корань, аснова і распрацоўка праграмнага забеспячэння, што стаіць на вяршыні, але гэта не адно і тое ж. Вы можаце стаць прадуктыўным і кваліфікаваным распрацоўшчыкам праграмнага забеспячэння без гэтага асноватворных ведаў, але як сапраўдны прафесіянал, заўсёды трэба быць цікаўным і паглыбляцца ў гэтыя рэчы па меры неабходнасці і па меры неабходнасці.

У той час як Морган лічыць Праграмаванне падкатэгорыяй і прымяненнем камп'ютэрных навук, ён бачыць іх дастаткова выразна, што да іх можна падыходзіць з розным мысленнем.

У артыкуле EdSurge 2015 «Кампутарныя навукі выходзіць за рамкі кадавання» (спасылка ніжэй), аглядальнік Шына Вайдзянатан адзначае, што праграмаванне - адзін з некалькіх асноўных кампанентаў інфарматыкі:

Кампутарная справа - гэта вырашэнне праблем з выкарыстаннем кампутараў, а кадаванне (альбо праграмаванне) - гэта рэалізацыя гэтых рашэнняў. Кампутарныя навукоўцы могуць быць падобнымі на архітэктараў, якія праектуюць дом, але не павінны яго будаваць.
Курс прынцыпаў новай сярэдняй школы камп'ютэрных навук больш дакладна адлюстроўвае гэта важнае адрозненне, арыентуючыся на сем вялікіх ідэй: творчасць, абстракцыя, дадзеныя, алгарытмы, праграмаванне, Інтэрнэт, глабальнае ўздзеянне. Кадаванне (праграмаванне) - гэта толькі адна з гэтых сямі абласцей.

У сваім артыкуле, прысвечаным навучанню гэтым тэмам, Вайдзянатан сцвярджае, што існуе мноства важкіх прычын выкладаць камп'ютэрныя навукі ў цэлым і што непрыязнасць да праграмавання толькі не з'яўляецца прычынай пазбягаць іншых абласцей у галіне камп'ютэрных навук.

Tech YouTuber, распрацоўшчык і пісьменнік Аарон у бэта-версіі, таксама закранае гэтую тэму ў сваім відэароліку за 2017 г. "У чым розніца паміж інфарматыкай і камп'ютэрным праграмаваннем" (спасылка ніжэй):

... гэта тое ж самае (інфарматыка і камп'ютэрнае праграмаванне) і ў чым розніца? Таму я думаю, што самы просты пытанне, які трэба адказаць, - гэта таксама самае складанае пытанне. Ці два тэрміны адно і тое ж? І адказ сапраўды: "Не, гэта не так." Але яны вельмі цесна звязаны "...
... гэта такая ж канцэпцыя, як калі б вы былі хімікам і інжынерам-хімікам. Камп'ютэрнае праграмаванне - гэта інжынер-хімік. Гэта людзі, якія займаюцца даследаваннямі і ўжываюць іх у паўсядзённых сітуацыях, у той час як камп'ютэрная навука - гэта больш хіміка. Яны робяць навуковую працу, каб потым тэарэтычную працу нехта ўкараняў у рэальны свет.

Аарон у бэта-версіі таксама кажа, што ў той час як абедзве вобласці раздзелены, разуменне аднаго глыбока служыць разуменню іншага. Дакладнае разуменне тэорый, якія працуюць на кампутары, можа дапамагчы вам напісаць больш эфектыўны код, а ведаць, як найлепшым чынам даць інструкцыі, якія могуць прытрымлівацца кампутары, можа дапамагчы глыбей зразумець камп'ютэры ў цэлым.

Такім чынам, дзе Bootcamp Grads падыходзіць ва ўсё гэта?

Як бачна вышэй, значная частка абмеркаванняў камп'ютэрнага і праграмнага забеспячэння праходзіць ва ўніверсітэце, і тыя, хто ўвайшоў у гульню, адчуваюць сябе ззаду (у тым ліку і я). У той час як на гэтую тэму ішла шырокая дыскусія, на самой справе справядліва сказаць, што студэнты з былых, будучых і перспектыўных кадавальных праграм не павінны адчуваць сябе настолькі збянтэжанымі.

У сваім сярэднім артыкуле 2018 г. "Кадаванне загрузных кампутараў у параўнанні са ступенню інфарматыкі: чаго хочуць працадаўцы і іншыя перспектывы" (спасылка ніжэй), аспірант Вашынгтонскага універсітэта Кайл Тэйер імкнецца вырашыць гэтую канкрэтную праблему. Ён сцвярджае, што як стартавы, так і 4-гадовы дыплом інфарматыкі нясуць у сабе ўласныя мэты і моцныя бакі:

Мэта ступені CS - даць студэнтам агляд навуковай сферы вылічальнай тэхнікі…. З іншага боку, кадаванне загрузных сістэм сканцэнтравана на падрыхтоўцы людзей да пэўнага тыпу праграмавання (як правіла, паўнатэкставага праграмавання ў Інтэрнэце).
… Кадаванне загрузных камп наўрад ці будзе ахопліваць асновы аперацыйных сістэм, а праграмы CS наўрад ці будуць ахопліваць найноўшыя вэб-тэхналогіі або мець шмат працы ў камандзе. Універсітэцкія праграмы мяняюцца павольна, але гэтак жа асновы інфарматыкі, у той час як кадаванне загрузных камер імкліва мяняецца, і яны могуць ісці ў нагу з хуткімі тэмпамі змены тэхналогій. Я чакаю, што ў будучыні кадзіроўка загрузных і кампетэнтных градусаў захаваецца як асобныя дарожкі, незалежна ад таго, альбо незалежна, альбо сумесна.

Сам Тэер наведвае гэтае даследаванне 2017 года ў блогу сапраўды блог (спасылка ніжэй). Даследаванне пад назвай "Што працадаўцы сапраўды думаюць пра кадаванне загрузачных сістэм?" Узяла ўзоры звыш 1000 тэхнічных рэкрутэраў і кіраўнікоў чалавечых рэсурсаў. Як адзначаецца ў артыкуле, шакавальныя 72% адказалі, што яны бачаць буткемп "так жа, як падрыхтаваны і, хутчэй за ўсё, будуць высокія выканаўцы, як кандыдаты з дыпломамі інфарматыкі", а дадатковыя 12% "лічаць, што выпускнікі боткемпа больш падрыхтаваныя і з большай верагоднасцю "Вышэйшыя выканаўцы". З тых, хто апытаўся, каля 17% "лічаць, што выпускнікі стартавага корпуса не такія падрыхтаваныя альбо могуць быць вышэйшымі выканаўцамі, як кандыдаты са ступенню інфарматыкі".

80% апытаных кіраўнікоў паведамілі, што ў нейкі момант нанялі выпускніка стартавага гарадка, і ашаламляльная сума (99,8%) сказала, што зноў наняць аднаго.

Хоць меркаванне ўсіх будзе адрознівацца, мне цяжка зрабіць выснову, што для праграмістаў bootcamp гэтыя вынікі павінны быць агіднымі, бо я б сказаў, што яны пераўзыходзяць мае чаканні. Аднак у гэтым даследаванні ёсць інфармацыя аб зазямленні: нягледзячы на ​​агульную пазітыўную думку пра загрузку камер, 41% апытаных у ходзе даследавання адзначаюць, што ім было б зручней прымаць на працу каго-небудзь са ступенню камп'ютэрных навук. Шмат у чым гэта звязана з добра рэгуляванымі асноўнымі стандартамі ўніверсітэтаў і адсутнасцю нарматыўнай структуры існуючых кадавальных загрузных сістэм. Услед за аналагічнымі тэмамі, рэспандэнты заявілі, што для больш абстрактных праектаў, якія тычацца тэарэтычных ведаў аб камп'ютэрах, дыпломы камп'ютэрных навук былі больш высока ацэнены, тады як пры выкананні задач, якія патрабуюць больш практычнага разумення пытанняў, сертыфікаты загрузных камер былі гэтак жа каштоўнымі.

Такім чынам, што такое вынас?

Ну, давайце перагледзім некаторыя пытанні, якія былі зададзены ў пачатку паведамлення:

Ці з'яўляюцца інфарматыка і камп'ютэрнае праграмаванне адно і тое ж?

Хоць, маючы шмат агульнага, было б дакладна сказаць, што камп'ютэрнае праграмаванне і камп'ютэрныя навукі катэгарычна адрозніваюцца.

Ці звязаны інфарматызацыя і камп'ютэрнае праграмаванне?

Так - у той час як яны розныя катэгорыі, яны таксама маюць велізарную колькасць перакрыццяў, і веданне аднаго амаль напэўна дапаможа ў разуменні іншага.

Ці ўключае ў сябе камп'ютэрныя навукі камп'ютэрнае праграмаванне ці віцэ-верса?

Так, камп'ютэрнае праграмаванне - прыкладная галіна інфарматыкі. Усё камп'ютэрнае праграмаванне можа лічыцца падмноствам камп'ютэрных навук, у той час як ёсць шмат камп'ютэрных навук, якія не маюць нічога агульнага з камп'ютэрным праграмаваннем.

Як новы студэнт праграмнага праграмавання, які не праходзіў 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-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/