Kompiuterija ir kompiuterių programavimas: koks skirtumas?

Vaizdo kreditas

Panašu, kad pastaruosius kelerius metus abu pavadinimo terminai buvo gana menki. Būdamas kažkas, kuris ką tik ėmėsi programavimo studijų, neseniai girdėjau terminus „kompiuterių mokslas“ ir „kompiuterių programavimas“, beveik pakaitomis. Atrodytų, nenorėčiau šiek tiek daugiau sužinoti apie tai, ką kiekvienas iš tikrųjų reiškia, ir atsakyti į kelis šiuos klausimus: Ar jie yra tas pats? Ar jie susiję? Ar vienas apima kitą?

Kodėl tai vis tiek svarbu?

Kaip kažkas, tik pradėjęs mokytis programuoti (ir turintis 4 metų bakalauro laipsnį, bet ne kompiuterių mokslą), galiu pasakyti, kad man atrodo, kad tai turi didelę reikšmę mano karjeros perspektyvai. Labai dažnai žvelgdamas į su programine įranga susijusius darbo skelbimus matau, kad reikia 4 metų informatikos laipsnio arba jis laikomas svarbiausiu pliusu. Tai dažnai priverčia mane užduoti sau šiuos klausimus: ar aš praleidau valtį? Ar „kompiuterio programavimas“ yra menkesnis menas, kaip aš maniau? Ar kompiuterių mokslo laipsnis yra tas, kurį turi realūs programinės įrangos inžinieriai?

Įsivaizduoju, kad pradėjau kažkur ieškoti, patikrinu kiekvieno termino Vikipedijos apibrėžimą:

Kompiuterinis programavimas yra vykdomosios kompiuterinės programos, skirtos konkrečiai skaičiavimo užduočiai atlikti, kūrimo ir kūrimo procesas ... Programavimo tikslas yra surasti komandų seką, kuri automatizuotų užduoties atlikimą kompiuteryje, dažnai tam tikrai problemai išspręsti.

Aš tai palyginu su kompiuterių mokslo apibrėžimu:

Kompiuterių mokslas yra procesų, sąveikaujančių su duomenimis, tyrimas, kuris programų pavidalu gali būti pateiktas kaip duomenys. Tai leidžia naudoti algoritmus manipuliuoti, saugoti ir perduoti skaitmeninę informaciją. Kompiuterių mokslas studijuoja skaičiavimo teoriją ir programinės įrangos sistemų projektavimo praktiką.

Iš „get-go“ matau, kad čia nurodytas didelis skirtumas. Atrodo, kad kompiuterinis programavimas yra tam tikras užduotis atliekančių programų kūrimo ir kūrimo procesas. Kita vertus, informatika yra šių procesų tyrimas. Man atrodo, kad šis palyginimas bando pasakyti, kad kompiuterių programavimas slypi taikomųjų technologijų srityje, tuo tarpu kompiuterių mokslas yra labiau teorinis.

Norėdami gauti daugiau aiškumo, noriu sužinoti patyrusių programinės įrangos inžinierių nuomones dėl šių dviejų skirtumų. Prieš pradėdamas darbą, turiu pabrėžti, kad, nepaisant kiekvieno asmens nuomonės, atrodo, kad didžioji šios diskusijos dalis buvo žiūrima per aukštojo mokslo akiratį ir buvo atitinkamai paveikta. Nors yra šaltinių, kuriais siekiama tiesiogiai atsakyti į tokius klausimus, kaip „Kuo skiriasi kompiuterių mokslas ir kompiuterių programavimas?“, Dažnai pokalbis įrėminamas tokiais klausimais kaip „Kurį pagrindinį turėčiau studijuoti kolegijoje: informatiką ar programinės įrangos inžineriją?“ Pasirodo, iš pradžių man nežinomas, daugelis mokyklų siūlo „programinės įrangos inžinerijos“ laipsnį, kuris šio straipsnio tikslais gali būti panašesnis į kompiuterio programavimą. Kaip ir galima tikėtis, kompiuterių mokslų laipsniai linkę labiau nukreipti studentus į teorinius pagrindinių kompiuterių procesų tyrimus, tuo tarpu programinės įrangos inžinerija siūlo mokymą taikyti šiuos principus. Nepaisant jų skirtumų, atrodo, kad šios disciplinos turi ryškių panašumų.

Technikos „YouTuber“ ir buvęs „Google“ kūrėjas YK Sugi savo „Vidutiniame straipsnyje„ Kompiuterių mokslas prieš programinės įrangos inžineriją - kuris iš jų tau geriausias? “(Nuoroda pateiktas žemiau) tiria skirtumus tarp Vaterlo universiteto kompiuterių mokslo ir programinės įrangos inžinerijos skirtumų dėl jo mano, kad ji turi vieną geriausių kompiuterių mokslo programų Šiaurės Amerikoje. Jis nustatė, kad didžiųjų bendrovių sutapimas buvo stebėtinai didelis, nes jos buvo beveik vienodos, atsižvelgiant į jų reikalavimus matematikai ir statistikai, tačiau taip pat nustatė, kad kiekviena didžioji šalis gali pasigirti savo išskirtinėmis savybėmis:

Manau (atsižvelgiant į tai, kurį pagrindinį pasirinkti), tai daugiausia priklauso nuo jūsų norų. Trumpai tariant:
Turėtumėte pasirinkti informatikos mokslą, jei jums patinka matematika, logika arba norite įsitraukti į specializuotą CS sritį, pavyzdžiui, dirbtinį intelektą, mašinų mokymąsi, saugumą ar grafiką.
Turėtumėte pasirinkti programinės įrangos inžineriją, jei jus labiau domina praktinis požiūris ir jei norite sužinoti apie bendrą programinės įrangos kūrimo ir priežiūros ciklą.

Nepaisant to, atsakydamas į klausimą, kurį iš pagrindinių įgyvendinti, norėdamas tapti programinės įrangos inžinieriumi, Sugi stebėtinai atsako su nuosprendžiu, kad informatikos mokslų daktaras yra geresnis. Dėl akivaizdžių priežasčių tai mane nustebino. Kaip programinės įrangos inžinerijos laipsnis negalėjo būti geriausias būdas užsitikrinti darbą programinės įrangos inžinerijoje?

Daugelis mokyklų net nesiūlo didžiųjų programinės įrangos inžinerijos programų. Sugi pabrėžia, kad Britanijos Kolumbijos universitetas Vankuveryje siūlo tik informatikos studijas, skirtas teoriniams ir su programine įranga susijusiems tyrimams, ir kompiuterių inžineriją, orientuotą į kompiuterio aparatūrą. Kiekvienas siūlė programinės įrangos inžinerijos užsiėmimus, tačiau nebuvo tam skirto stažuotojo. Kaip gali būti, kad tokia mokykla kaip Vaterlo universitetas galėtų pasiūlyti svarbų vaidmenį programinės įrangos inžinerijoje, tačiau ar ne, tai yra geriausias pasirinkimas būsimiems programinės įrangos inžinieriams? „Sugi“ siūlo daugiau detalių:

Paprastai tai, ko jie (darbdaviai) ieško iš kandidato į programinės įrangos inžinierius, yra galimybė rašyti solidų kodą ir kurti įdomius projektus, taip pat kompiuterių mokslo pagrindai, įskaitant duomenų struktūras ir algoritmus.
Manau, kad geriausias būdas ugdyti šį įgūdžių rinkinį yra greitai išmokti informatikos pagrindus ir praleisti savo laiką praktikuojant problemų sprendimą bei rašant kodą.
Remdamasis programinės įrangos inžinerijos programa ir tuo, kaip paprastai imlūs inžinerijos studentai, manau, kad tai būtų sunkiau padaryti su programinės įrangos inžinerija nei su informatika.

Panašu, kad Sugi mintis yra ta, kad nors informatikos pagrindai yra tai, kas geriausiai tiriama klasėje, taikomojo pobūdžio supratimas apie programinės įrangos inžineriją reikalauja daug praktinės patirties. Universiteto studijos gali kliudyti įsitraukti į šią sritį.

Nepaisant Sugi ir kitų pasirinktas šia tema, vis dar labai sunku paneigti, kad šių didžiųjų universitetų ir katedrų buvimas universitetuose padarė didelę įtaką tai, kaip mes žiūrime į kompiuterių mokslą, palyginti su kompiuterių programavimu.

Nors dabar turime šiek tiek geresnę mintį, kaip į šį klausimą žiūrėti akademiniame kontekste, klausimas vis tiek išlieka tarp kategorinio kompiuterių mokslo ir kompiuterinio programavimo santykio. Ar programavimas sutampa su informatikos pogrupiu, ar šios dvi disciplinos vis dar skiriasi?

Remiantis tuo, ką mums papasakojo tyrimas, atrodo, kad kompiuterių programavimas iš tikrųjų priklauso informatikos mokslui, tačiau pakankamai svarbiais skirtumais tai yra savaime suprantama sritis.

„Tech YouTuber“ atstovas Sylvesteris Morganas savo 2017 m. Vaizdo įraše „Kas yra programinės įrangos kūrimas? Programinės įrangos kūrimas „VS Computer Science“ (susieta žemiau) detalizuoja skirtumus tarp šių dviejų:

Programinės įrangos kūrimas yra programavimo kalbų ir įrankių naudojimas, kad būtų parašytos instrukcijos, kurias kompiuteris supranta, kad galėtų ką nors įvykdyti, išspręsti problemą ... ką nors sukurti ar kažką automatizuoti. Programinės įrangos kūrimas yra informatikos programa.
Kompiuterių mokslas yra šaknis ir pagrindas bei programinės įrangos kūrimas, kuris yra viršuje, tačiau tai nėra tas pats dalykas. Jūs galite tapti produktyviu ir kvalifikuotu programinės įrangos kūrėju neturėdami tų pagrindinių žinių, tačiau kaip tikram profesionalui verta visada būti smalsiems ir įsigilinti į tuos dalykus, kurie jums reikalingi ir, kai jus domina.

Nors Morganas mano, kad programavimas yra informatikos subkategorija ir taikymas, jis mato juos kaip pakankamai skirtingus, kad į juos būtų galima kreiptis atskirai.

Savo 2015 m. „EdSurge“ straipsnyje „Kompiuterių mokslas neapsiriboja kodavimu“ (nuoroda pateikiama žemiau) skiltininkė Sheena Vaidyanathan pabrėžia, kad programavimas yra vienas iš kelių pagrindinių kompiuterių mokslo komponentų:

Kompiuterių mokslas yra problemų sprendimas naudojant kompiuterius, o kodavimas (arba programavimas) yra šių sprendimų įgyvendinimas. Kompiuterių mokslininkai gali būti panašūs į architektus, kurie projektuoja namą, bet neprivalo jo statyti.
Naujasis vidurinės mokyklos AP informatikos principų kursas tiksliau atspindi šį svarbų skirtumą sutelkdamas dėmesį į septynias dideles idėjas: kūrybiškumą, abstrakciją, duomenis, algoritmus, programavimą, internetą, visuotinį poveikį. Kodavimas (programavimas) yra tik viena iš šių septynių sričių.

Vaidyanathanas savo straipsnyje, susijusiame su švietimu šiomis temomis, konstatuoja, kad yra daug rimtų priežasčių dėstyti visą kompiuterių mokslą ir kad norėjimas vien tik programavimo nėra priežastis išvengti kitų kompiuterių mokslo sričių.

Be to, „Tech YouTuber“, kūrėjas ir rašytojas Aaronas Beta taip pat apžvelgia temą savo 2017 m. Vaizdo įraše „Kuo skiriasi kompiuterių mokslas ir kompiuterių programavimas“ (susietas žemiau):

... ar jie yra tas pats dalykas (kompiuterių mokslas ir kompiuterių programavimas), ir koks skirtumas? Taigi aš manau, kad lengviausias atsakymas yra ir pats sunkiausias atsakymas. Ar šios dvi sąvokos yra tas pats dalykas? Ir tikrai yra atsakymas: „Ne, jie ne. Bet jie yra labai glaudžiai susiję “...
... tai tokia pati sąvoka, lyg jūs turėtumėte chemiką ir chemijos inžinierių. Kompiuterių programavimas yra chemijos inžinieriaus pusė to. Tai žmonės, kurie imasi tyrimų ir juos taiko kasdienėse situacijose, tuo tarpu kompiuterių mokslo pusė yra labiau chemikė. Jie atlieka mokslinį darbą, teorinį darbą, kad galėtų ką nors įdiegti į realų pasaulį.

Be to, Aaronas Betoje sako, kad nors abi sritys yra atskirtos, supratimas apie vieną giliai padeda suprasti kitą. Puikiai suprantant kompiuterių darbo teorijas, galite padėti parašyti efektyvesnį kodą, o žinodami, kaip geriausiai pateikti instrukcijas, kurių kompiuteriai gali sekti, galite padėti giliau suprasti kompiuterius kaip visumą.

Taigi kur „Bootcamp“ klasė tinka visam tam?

Kaip matyti iš aukščiau, nemaža dalis kompiuterio ir programinės įrangos karjeros diskusijų vyksta universitete, o tie, kurie įsitraukė į žaidimą, šiek tiek vėliau jaučiasi atsilikę (taip pat ir aš). Nepaisant to, nors ir buvo plačiai diskutuojama šia tema, iš tikrųjų teisinga sakyti, kad buvę, esami ar būsimi kodavimo „bootcamp“ studentai neturėtų jaustis tokie nusivylę.

Vašingtono universiteto doktorantas Kyle'as Thayeris 2018 m. Vidutiniame straipsnyje „Kodavimo paleidimo kamerų ir kompiuterių mokslo laipsniai: ko nori darbdaviai ir kitos perspektyvos“ (nuoroda pateiktas žemiau). Jis teigia, kad tiek „bootcamp“, tiek ir 4 metų informatikos mokslai turi savo tikslus ir stipriąsias puses:

CS laipsnio tikslas yra suteikti studentams apžvalgą apie kompiuterijos mokslinę sritį…. Kita vertus, kodavimo įkrovos stovyklose dėmesys sutelkiamas į žmonių mokymą tam tikro tipo programavimo darbui atlikti (paprastai interneto programavimas visą krūvą).
... Koduojantys įkrovos stovyklos vargu ar aprėps pagrindinius operacinių sistemų pagrindus, o CS programos greičiausiai neapims naujausių žiniatinklio technologijų ar neturės daug komandos darbo. Universiteto programos keičiasi lėtai, tačiau keičiasi ir informatikos pagrindai, o greitai keičiasi kodavimo įkrovos stovyklos ir gali neatsilikti nuo greito technologijų kaitos tempo. Tikiuosi, kad kodavimo įkėlimo stovyklos ir CS laipsniai ateityje išliks kaip atskiri takeliai, nepriklausomai nuo to, ar jie bus vykdomi kartu, ar kartu.

Pats Thayeris šio 2017 m. Tyrimo svetaines pateikia iš tiesų tinklaraštyje (nuoroda žemiau). Tyrime, pavadintame „Ką darbdaviai tikrai galvoja apie„ Bootcamps “kodavimą?“, Buvo paimta daugiau kaip 1000 techninių darbuotojų ir personalo vadybininkų. Kaip pabrėžiama straipsnyje, šokiruojantys 72% respondentų mano, kad „bootcamp“ įvertina „lygiai taip pat pasirengusius ir, tikėtina, labai gerai, kaip kandidatus, turinčius informatikos laipsnius“, o papildomi 12% „mano, kad„ bootcamp “absolventai yra labiau pasirengę ir labiau linkę į būti aukšto lygio atlikėjais. “Iš apklaustųjų apie 17% mano, kad„ bootcamp “absolventai nėra tokie pasirengę ar tikėtina, kad bus geresni nei kandidatai, turintys informatikos laipsnį.“

80% apklaustų vadybininkų teigė, kad jie kažkuriuo metu pasamdė „bagažinės stovyklos“ absolventą, o stulbinama suma (99,8%) teigė, kad vėl samdys.

Nors kiekvieno nuomonė skirsis, man sunku padaryti išvadą, kad šie rezultatai turėtų būti gąsdinantys „bootcamp“ programuotojams, iš tikrųjų sakyčiau, kad jie pranoksta mano lūkesčius. Vis dėlto šiame tyrime pateikiama pagrindinė informacija: nepaisant bendro teigiamo požiūrio į „bootcamp“ klasę, 41% tyrimo apklaustų respondentų teigė, kad jiems būtų patogiau pasamdyti žmogų, turintį informatikos mokslų laipsnį. Tai daugiausia lemia gerai sureguliuoti pagrindiniai universitetų standartai ir trūkstama dabartinių kodavimo įkrovos stovyklų reguliavimo struktūra. Atsakydami į panašias temas, respondentai teigė, kad abstraktesniems projektams, susijusiems su teorinėmis kompiuterių žiniomis, informatikos laipsniai buvo labiau vertinami, tuo tarpu užduotims, reikalaujančioms praktinio klausimų supratimo, „bootcamps“ pažymėjimai buvo tokie pat vertingi.

Taigi, kas yra „Takeaways“?

Pažvelkime į kai kuriuos klausimus, kurie buvo užduoti įrašo pradžioje:

Ar kompiuterių mokslas ir kompiuterių programavimas yra tas pats dalykas?

Ne. Nors yra daug bendro, teisinga būtų pasakyti, kad kompiuterių programavimas ir kompiuterių mokslas yra kategoriškai skirtingi.

Ar kompiuterių mokslas ir kompiuterių programavimas yra susiję?

Taip - nors jos yra skirtingos kategorijos, tačiau jos taip pat turi didžiulį persidengimą ir vienos žinios beveik neabejotinai padės suprasti kitą.

Ar kompiuterių mokslas „apima“ kompiuterių programavimą, ar vice versa?

Taip, kompiuterių programavimas yra taikoma kompiuterių mokslo šaka. Visas kompiuterių programavimas gali būti laikomas kompiuterių mokslo pogrupiu, tuo tarpu yra daugybė kompiuterių mokslų, kurie neturi nieko bendra su kompiuterių programavimu.

Kaip naujas kompiuterių programavimo studentas, kuris nesiekė 4 metų informatikos mokslo laipsnio, ar aš praleidau patarlę?

Tai priklauso nuo to, kokie yra jūsų tikslai. Jei bandote įgyti programavimo įgūdžių, kad galėtumėte dirbti komercinėje aplinkoje ar panašiai, tada atsakymas tikriausiai yra ne (nors kelias vis tiek nebus lengvas). Jei bandysite publikuoti akademinius kompiuterinės teorijos tyrimus, greičiausiai norėsite šią temą studijuoti toliau universitete.

Ar kompiuterių programavimas yra menkesnis menas, nei aš maniau, kad jis buvo?

Tai priklauso nuo to, kas, jūsų manymu, buvo. Jei manėte, kad „kompiuterių programavimas“ yra tyrimų sritis, apimanti daugumą studijų, susijusių su kompiuteriais, sričių, tada jūs klystate. Tai kompiuterių mokslas. Jei galvojote, kad tai yra būdų, kaip bendrauti ir pateikti instrukcijas kompiuteriams, tyrimas iki programų kūrimo pabaigos, tada jūs buvote teisus. Kaip komentaras, paprastai nereikia galvoti apie „žemesnį“ nei kitas ir trūksta išskirtinio konteksto, kurį kiekvienas užpildo.

Ar kompiuterių mokslo laipsnis yra tas, kurį turi „tikri“ programinės įrangos inžinieriai?

Nebūtinai. Ketverių metų informatikos laipsnis niekada nepakenks būsimam programinės įrangos inžinierės karjeros tikslams ar jos supratimui apie šią sritį, tačiau tarp laipsnio turėtojų ir inžinierių vargu ar yra vienas su kitu santykiai. Yra daugybė sėkmingų inžinierių, kurie savo karjerą kūrė po to, kai baigė kitą pagrindinį kursą (arba niekada nelankė universiteto). Taip pat yra daugybė studentų, kurie įgijo informatikos laipsnį siekdami būti inžinieriumi, ir galų gale nusivylė, kai tyrimas pasirodė esąs sunkesnis teorijai.

Taigi, kompiuterių programavimas yra taikoma kompiuterių mokslo šaka. Jį galima mokytis daugiausia nepriklausomai nuo informatikos, nors supratimas vienas bus labai naudingas kitam. Vieno prekės ženklo priskyrimas „geresniam“ nei kitas paprastai yra klaidinga praktika, o prieš nusprendžiant, kuri disciplina ar įgūdžių rinkinys bus naudingesnis, reikėtų apsvarstyti esamą užduotį. Kompiuterių mokslų absolventai ir Kompiuterių programavimo „bootcamp“ absolventai turi savo pagrįstą vietą visuomenėje, ir mažai tikėtina, kad bet kuriuo metu jie greitai išnyks iš svarbos.

Rašydamas šį straipsnį labai rėmėsi kitų atliktais tyrimais. Jei norėtumėte pažvelgti į bet kurį iš šių šaltinių, naudokitės žemiau pateiktomis nuorodomis:

(Foto kreditas) 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/