Računalništvo v primerjavi z računalniškim programiranjem: v čem je razlika?

Kreditna slika

Zdi se, da sta se oba naslova v naslovu v zadnjih nekaj letih precej vrgla. Kot nekdo, ki se je ravno začel ukvarjati s študijem programiranja, sem slišal, da sta se izraza "računalništvo" in "računalniško programiranje" v zadnjem času veliko uporabljala, skoraj zamenljivo. Zdi se, da bi mi bilo odvzeto, da se ne bi naučil malo več o tem, kaj vsak dejansko pomeni, in odgovoril na nekaj naslednjih vprašanj: Ali sta ista stvar? So v sorodu? Ali ena vključuje drugo?

Zakaj je sploh pomembno?

Kot nekdo, ki se je šele začel učiti programiranja (in ki ima 4-letno diplomo, vendar ne računalništva), lahko rečem, da imam občutek, da ima pomemben pomen glede mojih poklicnih možnosti. Zelo pogosto, ko gledam objave delovnih mest, povezane s programsko opremo, vidim, da je potrebna štiriletna stopnja računalništva ali je pomemben plus. To pogosto pripelje nekoga v svoj položaj, da si zastavi naslednja vprašanja: Sem pogrešal čoln? Ali je 'računalniško programiranje' manj umetnost, za katero sem mislil, da je? Ali je stopnja računalništva resnična programska inženirja pod pasom?

Glede na to, da sem začel nekje v iskanju, preverim definicijo vsakega izraza v Wikipediji:

Računalniško programiranje je postopek načrtovanja in izdelave izvedljivega računalniškega programa za izvajanje določene računalniške naloge ... Namen programiranja je najti zaporedje navodil, ki bodo avtomatizirale izvajanje naloge v računalniku, pogosto za reševanje določenega problema.

To primerjam z definicijo za računalništvo:

Računalništvo je preučevanje procesov, ki medsebojno vplivajo na podatke in jih je mogoče predstavljati kot podatke v obliki programov. Omogoča uporabo algoritmov za manipulacijo, shranjevanje in komuniciranje digitalnih informacij. Računalnik proučuje teorijo računanja in prakso oblikovanja programskih sistemov.

Od začetka razlage vidim, da je tu navedena glavna razlika. Zdi se, da je računalniško programiranje proces načrtovanja in oblikovanja programov, ki izpolnjujejo določeno nalogo. Računalništvo je na drugi strani temeljna študija teh procesov. Zdi se mi, da ta primerjava poskuša povedati, da je računalniško programiranje v domeni uporabne tehnologije, računalništvo pa bolj teoretično.

Za nadaljnjo jasnost gledam na mnenja izkušenih inženirjev programske opreme glede razlik med tema dvema. Preden nadaljujem, moram poudariti, da je ne glede na mnenje posameznika videti, da je bil velik del te razprave pogledan skozi leče visokošolskega izobraževanja in nanje ustrezno vplivan. Medtem ko obstajajo viri, ki poskušajo neposredno odgovoriti na vprašanja, kot je "Kakšna je razlika med računalništvom in računalniškim programiranjem?", Je pogovor pogosto uvrščen v vprašanja, kot so: "Kateri glavni naj študiram na fakulteti: računalništvo ali programsko inženirstvo?" Kaže, da mi je prvotno neznano, da številne šole ponujajo diplomo "inženiringa programske opreme", ki jo je za namene tega članka mogoče bolj primeriti z računalniškim programiranjem. Kot bi lahko pričakovali, diplome računalništva ponavadi vodijo študente bolj v smeri teoretičnega študija osnovnih procesov računalnikov, medtem ko Software Engineering ponuja izobraževanje o uporabi teh načel. Kljub temu pa se zdi, da imajo te discipline presenetljive podobnosti.

V svojem srednjem članku "Computer Science VS Software Engineering - kateri glavni je najboljši za vas?" (Povezan spodaj), tehnični YouTuber in nekdanji Google Developer YK Sugi raziskuje razlike med smermi računalništva in programskega inženiringa na Univerzi v Waterlou, zaradi njegovega meni, da ima enega najboljših programov računalništva v Severni Ameriki. Ugotovil je, da so bile smernice presenetljive, saj so bile "skoraj enake" glede na potrebe po matematiki in statistiki, vendar je ugotovil, da se je vsak glavni mojster pohvalil s svojimi edinstvenimi lastnostmi:

Mislim, da (glede tega, katerega največjega izbrati,) je največ odvisno od vaših želja. V kratkem:
Izberite računalništvo, če vam je všeč matematika, logika ali če želite preiti na specializirano področje CS, kot so umetna inteligenca, strojno učenje, varnost ali grafika.
Izberite Software Engineering, če vas bolj zanima praktični pristop in če se želite naučiti celotnega življenjskega cikla, kako je programska oprema zgrajena in vzdrževana.

Ob tem je Sugi, ko odgovarja na vprašanje, katera naj bi se lotila z zanimanjem za programskega inženirja, presenetljivo odgovorila z razsodbo, da je major Computer Computer boljši. Zaradi očitnih razlogov me je to presenetilo. Kako stopnja programskega inženiringa ne bi bila najboljši način za zaposlitev v programskem inženiringu?

Mnoge šole sploh ne ponujajo posebnih programov. Sugi poudarja, da Univerza British Columbia v Vancouvru ponuja samo računalništvo, za teoretični in s programsko povezavo študij, in računalniški inženiring, osredotočeno na računalniško strojno opremo. Vsak je ponujal predavanja iz programskega inženiringa, vendar ni bil namenjen poseben študij. Kako je mogoče, da bi šola, kakršna je Univerza v Waterlooju, lahko šolanje v programu Software Engeering, vendar ne bi bila to najboljša možnost za bodoče programske inženirje? Sugi ponuja več natančnosti:

Običajno to, kar iščejo (delodajalci) pri kandidatu za programskega inženirja, je sposobnost pisanja trdne kode in oblikovanja zanimivih projektov, pa tudi osnove računalništva, vključno s strukturo podatkov in algoritmi.
Mislim, da je najboljši način za gojenje tega nabora spretnosti s hitrim učenjem osnov računalništva in porabo lastnega časa za reševanje problemov in pisanje kode.
Na osnovi učnega načrta za programsko opremo in na podlagi tega, kako na splošno so zaposleni študenti inženirstva, mislim, da bi bilo to težje storiti s programskim inženiringom kot s računalništvom.

Zdi se, da Sugi navaja, da čeprav so osnove računalništva nekaj najbolje raziskanega v učilnici, aplikativna narava razumevanja v programskem inženiringu zahteva veliko praktičnih izkušenj. To je nekaj, kar lahko univerzitetni študij dejansko ovira za študente, ki želijo priti na to področje.

Ne glede na prevzemanje Sugi in drugih na to temo je še vedno zelo težko zanikati, da je obstoj teh smeri in oddelkov na univerzah močno vplival na to, kako gledamo na računalništvo, skupaj z njegovo primerjavo z računalniškim programiranjem.

Čeprav imamo nekoliko boljšo predstavo o tem, kako gledati na to vprašanje v akademskem kontekstu, še vedno ostaja vprašanje med kategoričnim odnosom med računalništvom in računalniškim programiranjem. Ali programiranje lepo pristaja kot podkategorija računalništva ali sta obe disciplini še vedno ločeni?

Glede na to, kar nam kažejo raziskave, je videti, da računalniško programiranje sicer spada v računalništvo, vendar z dovolj pomembnimi razlikovanji, da je to samo po sebi področje.

Tech YouTuber Sylvester Morgan v svojem videoposnetku iz leta 2017 "Kaj je razvoj programske opreme? Razvoj programske opreme VS Computer Science «(povezava spodaj), podrobno opisuje razlike med tema dvema:

Razvoj programske opreme je uporaba programskih jezikov in orodij za pisanje navodil, ki jih računalnik razume, da bi nekaj dosegel, da bi rešil težavo ... nekaj zgradil ali avtomatiziral. Razvoj programske opreme je aplikacija računalništva.
Računalništvo je korenina, osnova in razvoj programske opreme, ki je poleg tega, vendar nista ista stvar. Lahko postanete produktiven in usposobljen razvijalec programske opreme brez temeljnega znanja, vendar je kot pravi profesionalec vedno dobro biti radoveden in se poglobiti v te stvari, kolikor je potrebno in kot želite.

Medtem ko Morgan meni, da je programiranje podkategorija in uporaba računalništva, se jim zdi dovolj razločno, da se jim lahko približajo z ločeno miselnostjo.

V svojem članku EdSurge iz leta 2015 "Računalništvo presega kodiranje" (povezava spodaj) kolumnistka Sheena Vaidyanathan poudarja, da je programiranje ena izmed večjih komponent računalništva:

Računalništvo je reševanje problemov z uporabo računalnikov, kodiranje (ali programiranje) pa za izvajanje teh rešitev. Računalniki so lahko kot arhitekti, ki hišo načrtujejo - vendar je ni treba zgraditi.
Novi tečaj načel računalništva AP Computer Science natančneje odraža to pomembno razliko z osredotočanjem na sedem velikih idej: ustvarjalnost, abstrakcija, podatki, algoritmi, programiranje, internet, globalni vpliv. Kodiranje (programiranje) je le eno od teh sedmih področij.

V svojem članku o izobraževanju o teh temah Vaidyanathan ugotavlja, da obstaja veliko močnih razlogov za poučevanje računalništva kot celote in da naklonjenost samemu programiranju ni razlog, da bi se izognili drugim področjem računalništva.

Tech YouTuber, razvijalec in pisatelj Aaron v Beti, to temo obravnava tudi v svojem videoposnetku iz leta 2017 "Kakšna je razlika med računalništvom in računalniškim programiranjem" (povezano spodaj):

... ali sta ista stvar (računalništvo in računalniško programiranje) in v čem je razlika? Zato mislim, da je najlažje odgovoriti tudi najtežje. Ali sta ta dva izraza isto? In odgovor je res: "Ne, niso. Vendar so zelo tesno povezane ... "
… To je isti koncept, kot če bi imeli kemika in kemijskega inženirja. Računalniško programiranje je kemijska inženirka tega. To so ljudje, ki se ukvarjajo z raziskavo in jo uporabljajo v vsakdanjih situacijah, medtem ko je stran računalniških znanosti bolj kemična. Opravljajo znanstveno delo, teoretično, da bi ga potem kdo izvajal v resničnem svetu.

Tudi Aaron v Beti pravi, da čeprav sta obe področji ločeni, razumevanje enega globoko služi razumevanju drugega. Če imate dobro razumevanje teorij, na katerih delujejo računalniki, vam lahko pomaga pisati učinkovitejšo kodo, hkrati pa veste, kako najbolje zagotoviti navodila, ki jim lahko sledijo računalniki, lahko pomagate do globljega razumevanja računalnikov kot celote.

Kje se torej Bootcamp stopi v vse to?

Kot je razvidno zgoraj, se na univerzi odvija velik del razprav o računalniških in programskih programih, pri čemer se tisti, ki so v igro, nekoliko pozneje počutijo zase (tudi jaz). Čeprav je na to temo potekala obsežna razprava, je pošteno reči, da se nekdanji, sedanji ali perspektivni študentski programski program bootcampa ne bi smel tako odvrniti.

V svojem srednjem članku za leto 2018 "Kodiranje zagonskih kampov proti stopnjam računalniške znanosti: kaj si želijo delodajalci in druge perspektive" (povezan spodaj) je študent doktorskega študija univerze v Washingtonu Kyle Thayer reševal to konkretno vprašanje. Navaja, da imata tako zagonski kamp kot tudi štiriletne diplome računalništva lastne namene in prednosti:

Namen diplome CS je študentom zagotoviti pregled znanstvenega področja računalništva…. Po drugi strani pa se kodiranje zagonskih kampov osredotoča na usposabljanje ljudi za določeno vrsto programskih opravil (običajno spletno programiranje s celotnim skladom).
… Kodiranje zagonskih kampov verjetno ne bo pokrivalo osnov operacijskih sistemov, programi CS pa verjetno ne bodo pokrivali najnovejših spletnih tehnologij ali imeli veliko skupinskega dela. Univerzitetni programi se spreminjajo počasi, vendar se to počne tudi z osnovami računalništva, medtem ko se kodiranje zagonskih kampov hitro spreminja in so sposobni slediti hitrem spreminjanju tehnologije. Pričakujem, da bodo kodiranje zagonskih kampov in stopenj CS v prihodnosti še naprej obstajale kot ločene skladbe, ne glede na to, ali se bodo izvajale neodvisno ali skupno.

Thayer sam odkrije to študijo za leto 2017 s strani Blog Blog (povezava spodaj). Študija z naslovom »Kaj delodajalci resnično mislijo o kodiranju zagonskih kampov?« Je vzorčila več kot 1000 tehničnih kadrovalcev in kadrovskih managerjev. Kot je poudarjeno v članku, je šokantnih 72% odgovorilo, da gledajo na bootcamp grad "tako kot pripravljeni in verjetno tudi uspešni kot kandidati z diplomo računalništva", dodatnih 12% pa "meni, da so diplomanti zagonskih kampov bolj pripravljeni in bolj verjetno, da bodo približno 17% "meni, da diplomanti iz bootcampa niso tako pripravljeni ali pa bodo verjetno uspešnejši kot kandidati z diplomo računalništva."

80% anketiranih menedžerjev je poročalo, da so v nekem trenutku najeli diplomirajočega zagonskega kampa in osupljivi znesek (99,8%) je rekel, da ga bodo spet zaposlili.

Medtem ko se bo mnenje vseh razlikovalo, težko sklepam, da bi morali biti ti rezultati za programerje bootcamp odvračljivi, v resnici bi rekel, da presegajo moja pričakovanja. Ta študija sicer vsebuje utemeljene podatke: kljub splošnemu pozitivnemu pogledu na program bootcamp je 41% anketirancev v raziskavi dejalo, da bi bilo lažje zaposliti nekoga s diplomo računalništva. To je v veliki meri posledica dobro urejenih temeljnih standardov univerz in pomanjkanja regulativne strukture trenutnih kodirnih zagonskih kampov. Kot podobno tematiko so anketiranci dejali, da so za bolj abstraktne projekte v zvezi s teoretičnim znanjem računalnikov diplome računalništva bolj cenjene, medtem ko so za naloge, ki zahtevajo bolj praktično razumevanje vprašanj, certifikati zagonskih kampov prav tako dragoceni.

Kaj so torej vzeti?

Pa pojdimo skozi nekaj vprašanj, ki so vam bila postavljena na začetku objave:

Ali sta računalništvo in računalniško programiranje ista stvar?

Ne. Čeprav imamo veliko skupnega, bi bilo natančno reči, da sta računalniško programiranje in računalništvo kategorično različna.

Ali sta računalništvo in računalniško programiranje povezana?

Da - čeprav sta različni kategoriji, imata tudi obe dve osebi ogromno prekrivanja in znanje ene bo gotovo pomagalo pri razumevanju drugega.

Ali računalništvo "vključuje" računalniško programiranje ali vice Versa?

Da, računalniško programiranje je uporabna veja računalništva. Vse računalniško programiranje lahko štejemo za podskupino računalništva, medtem ko obstaja veliko računalništva, ki nima nič skupnega z računalniškim programiranjem.

Kot nov študent računalniškega programiranja, ki ni opravil štiriletne stopnje računalništva, sem pogrešal pregovorno plovilo?

Odvisno je, kakšni so vaši cilji. Če poskušate pridobiti programsko znanje, da bi lahko delali v komercialnem okolju ali kaj podobnega, je odgovor verjetno ne (čeprav pot še vedno ne bo lahka). Če poskušate objaviti akademsko raziskovanje računalniške teorije, boste to temo verjetno želeli še študirati na univerzi.

Ali je računalniško programiranje manj umetniško, kot sem si mislil?

Odvisno je, kaj si mislil, da je. Če ste mislili, da je »računalniško programiranje« področje raziskav, ki zajema večino študijskih področij, povezanih z računalniki, bi se motili. To je računalništvo. Če bi mislili, da gre za preučevanje načinov za komuniciranje in dajanje navodil računalnikom do konca izdelave programov, potem bi bilo pravilno. Kot komentar je razmišljanje bodisi o »manjši« kot drugi na splošno nepotrebno in nima perspektive o edinstvenem kontekstu, ki ga izpolnjuje vsak.

Ali je stopnja računalništva, kaj imajo "pravi" programski inženirji pod pasom?

Ni nujno. Štiriletna diploma računalništva nikoli ne bo škodila kariernim ciljem poklicnega inženirja niti njenemu razumevanju področja, a med nosilci diplome in inženirji skorajda ni odnosa med seboj. Obstaja veliko uspešnih inženirjev, ki so svojo kariero gradili po tem, ko so se lotili drugačne smeri (ali sploh ne obiskujejo univerze). Veliko je tudi študentov, ki so diplomirali iz računalništva s ciljem, da bi bili inženir, in na koncu razočarani, ko se je študij izkazal za bolj teoretičnega.

Če povzamemo, je računalniško programiranje uporabna veja računalništva. Preučujemo ga lahko večinoma neodvisno od računalništva, čeprav bo razumevanje enega zelo služilo drugemu. Označevanje enega kot "boljšega" od drugega je na splošno napačna praksa, natančneje pa bi morali razmisliti o nalogi, preden se odločite, katera disciplina ali nabor spretnosti bo bolj koristen. Diplomanti računalništva in diplomanti računalniškega programiranja zagonskega kampa imajo vsak svoje upravičeno mesto v družbi in malo je verjetno, da bo kateri koli kmalu kmalu izpadel iz pomena.

Pri pisanju tega članka se je močno opiral na raziskave, ki so jih opravili drugi. Če želite podrobneje preučiti katerega koli od teh virov, si oglejte spodnje povezave:

(Fotografski kredit) 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-bet 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/