Computer Science vs Computer Programming: farq nima?

Tasvir krediti

So'nggi yillarda ushbu atamaning ikkala atamasi biroz o'zgartirilganga o'xshaydi. O'zim dasturlashni o'rganishni boshlagan odam sifatida men yaqinda deyarli bir-birini almashtirib ishlatiladigan "Informatika" va "Kompyuter dasturlash" atamalarini ko'p eshitganman. Ularning har biri aslida nimani anglatishini bir oz bilmasligim va quyidagi bir nechta savollarga javob berishim kerak edi: ular bir xil narsami? Ular o'zaro bog'liqmi? Biri boshqasini o'z ichiga oladimi?

Nima uchun baribir muhim?

Qanday qilib dasturlashni o'rganishni endi boshlagan (va 4 yillik bakalavr darajasiga ega, ammo Informatika sohasida o'qimagan) sifatida aytishim mumkinki, bu mening kareramdagi istiqbollarim uchun muhim ahamiyatga ega ekanligini his qilaman. Ko'pincha dasturiy ta'minot bilan bog'liq ish takliflarini ko'rib chiqayotganda, men 4 yillik Informatika darajasi talab qilinishini yoki asosiy qo'shimcha sifatida ko'rilishini ko'raman. Bu ko'pincha mening holatimdagi odamni o'zlariga quyidagi savollarni berishga undaydi: Men kemani sog'indimmi? "Kompyuter dasturlari" men o'ylaganim uchun bu kamroq san'atmi? Haqiqiy dastur muhandislari bilagiga ega bo'lgan kompyuter fanlari darajasi bormi?

Men qidirayotgan joyimdan nimani boshlaganimni bilib, har bir atamaning Vikipediya ta'rifini tekshiraman:

Kompyuterda dasturlash bu ma'lum bir hisoblash vazifasini bajarish uchun bajariladigan kompyuter dasturini loyihalashtirish va qurish jarayonidir ... Dasturlashning maqsadi - ko'pincha kompyuterda vazifani bajarishni avtomatlashtiradigan ko'rsatmalar ketma-ketligini topish.

Men buni Informatika ta'rifi bilan taqqoslayman:

Informatika - bu ma'lumotlar bilan o'zaro bog'liq bo'lgan va dasturlar ko'rinishida ma'lumot sifatida taqdim etiladigan jarayonlarni o'rganish. Raqamli ma'lumotni boshqarish, saqlash va uzatish uchun algoritmlardan foydalanishga imkon beradi. Kompyuter olimi hisoblash nazariyasi va dasturiy tizimlarni loyihalash amaliyotini o'rganadi.

Get-go dan, men bu erda ko'rsatilgan katta farq borligini ko'rishim mumkin. Ko'rsatilgan vazifani bajaradigan dasturlarni loyihalashtirish va qurish jarayoni kompyuter dasturlashi kabi ko'rinadi. O'z navbatida, kompyuter fanlari ushbu jarayonlarning asosini o'rganishdir. Menimcha, bu taqqoslashni aytmoqchi bo'lgan narsa shundaki, kompyuter dasturlash amaliy texnologiyalar sohasida, kompyuter bilimlari esa ko'proq nazariy asosga ega.

Keyinchalik aniqroq bo'lish uchun men tajribali dasturiy ta'minot muhandislarining ikkalasi o'rtasidagi farqlar haqidagi fikrlariga murojaat qilaman. Davom etishdan oldin shuni ta'kidlashim kerakki, har qanday odamning fikridan qat'i nazar, ushbu munozaraning aksariyati oliy ta'lim ob'ektivlari orqali ko'rib chiqilgan va shunga mos ravishda ta'sirlangan. "Kompyutershunoslik va kompyuter dasturlashining farqi nimada?" Kabi savollarga to'g'ridan-to'g'ri javob berishga intiladigan manbalar mavjud bo'lsa-da, suhbat ko'pincha "Men kollejda qaysi ixtisosda o'qishim kerak: kompyutershunoslik yoki dasturiy ta'minot muhandisligi?" Kabi savollarga javob beradi. Dastlab men bilmaganligim sababli, ko'plab maktablar ushbu dastur uchun "Dasturiy injiniring" darajasini taklif qilmoqdalar, bu maqola uchun kompyuter dasturiga o'xshatilishi mumkin. Kutganimizdek, Informatika ilmiy darajalari talabalarni kompyuterlarning asosiy jarayonlarini nazariy o'rganish yo'nalishiga olib keladi, dasturiy ta'minot esa ushbu tamoyillarni qo'llashda ta'lim beradi. Turli xil farqlarga qaramay, ushbu fanlar ajoyib o'xshashliklarga ega.

O'rta ma'lumotli "Informatika VS dasturiy injiniringi - qaysi biri siz uchun eng yaxshisidir?" (Quyida keltirilgan) texnologiyasida YouTuber va sobiq Google Developer YK Sugi Vaterlou Universitetida kompyuter fanlari va dasturiy ta'minot muhandisliklari o'rtasidagi farqlarni tadqiq qilishgan. Shimoliy Amerikadagi eng yaxshi kompyuter fanlari dasturlaridan biriga ega ekanligiga ishonch hosil qiling. U mutaxassisliklarning matematikaga va statistikaga bo'lgan talablari bo'yicha "deyarli bir xil" bo'lishiga qaramay, har bir magistratura o'ziga xos fazilatlarga ega ekanliklari ajablanarli darajada bir-biriga to'g'ri kelishini aniqladi:

Menimcha (qaysi asosiyni tanlash kerak), bu asosan sizning xohishingizga bog'liq. Qisqasi:
Matematikani, mantiqni yoqtirsangiz yoki sun'iy intellekt, mashinani o'rganish, xavfsizlik yoki grafika kabi ixtisoslashgan sohaga kirishni istasangiz, siz kompyuter fanini tanlashingiz kerak.
Agar siz qo'lda ishlash usuliga ko'proq qiziqsangiz va dasturiy ta'minot qanday yaratilgani va unga xizmat ko'rsatilishini hayotiy tsiklini bilmoqchi bo'lsangiz, siz dasturiy ta'minot muhandisligini tanlashingiz kerak.

Dastur muhandisi bo'lish qiziqishidan kelib chiqib, qaysi mutaxassislikni tanlash kerak degan savolga javob berar ekan, Sugi ajablanarlisi, "Informatika ixtisosligi yaxshiroq" degan hukm bilan javob beradi. Aniq sabablarga ko'ra, bu men uchun kutilmagan voqea bo'ldi. Qanday qilib dasturiy ta'minot injiniringi darajasi dasturiy ta'minot muhandisligi bo'yicha ish topishda eng yaxshi yo'l bo'la olmaydi?

Ko'pgina maktablar hatto dasturiy ta'minot injiniringi mutaxassisligini ham taklif etmaydilar. Sugining ta'kidlashicha, Vankuverdagi Britaniya Kolumbiya Universiteti faqat kompyuter texnikasiga yo'naltirilgan nazariy va dasturiy tadqiqotlar uchun va kompyuter muhandisligi bo'yicha kompyuter fanlarini taklif etadi. Ularning har biri dasturiy ta'minot muhandisligi bo'yicha darslarni taklif qilishdi, ammo biron bir ixtisos bo'lmagan. Qanday qilib Vaterlou Universiteti kabi maktab dasturiy ta'minotni boshqarish bo'yicha mutaxassislikni taklif qilishi mumkin, ammo u bo'lajak dastur muhandislari uchun eng yaxshi tanlov bo'la olmaydi? Sugi ko'proq ishlab chiqishni taklif qiladi:

Odatda, ular (ish beruvchilar) dasturiy ta'minot muhandisi nomzodida nimani qidirmoqdalar - bu qattiq kod yozish va qiziqarli loyihalar, shuningdek, ma'lumotlar tuzilmalari va algoritmlarni o'z ichiga olgan informatika asoslari.
O'ylaymanki, ushbu ko'nikmalarni rivojlantirishning eng yaxshi usuli bu informatika asoslarini tezda o'rganish va vaqtni sarflash, muammolarni hal qilish va kod yozishdir.
Dasturiy ta'minot muhandisligi bo'yicha o'quv dasturiga asoslanib va ​​umuman muhandislik talabalari umuman band bo'lishga asoslanib, menimcha, buni kompyuter fanlari bilan solishtirganda dasturiy ta'minot muhandisligi bilan qilish qiyinroq bo'ladi.

Sugining ta'kidlashi kerak bo'lgan jihati shundaki, kompyuter fanlari asoslari sinfda eng yaxshi o'rganilgan bo'lsa-da, dasturiy ta'minot muhandisligi tushunchasining amaliy tabiati ko'p tajriba talab qiladi. Bu narsa universitetda o'qish talabalarga ushbu sohaga kirishga to'sqinlik qilishi mumkin.

Sugi va boshqalarning ushbu mavzu bo'yicha olib borgan yutuqlaridan qat'iy nazar, universitetlarda ushbu magistratura va kafedralarning mavjudligi bizning kompyuter faniga bo'lgan munosabatimiz va uning kompyuter dasturlash bilan taqqoslanishiga katta ta'sir ko'rsatganligini inkor etish juda qiyin bo'lib qolmoqda.

Ushbu savolni akademik kontekstda qanday ko'rish haqida bizda hozircha bir muncha yaxshiroq tasavvur mavjud bo'lsa-da, savol hanuzgacha Informatika va kompyuter dasturlash o'rtasidagi kategorik aloqalar o'rtasida bo'lib turibdi. Dasturlashtirish kompyuter fanining pastki toifasi sifatida chiroyli tarzda uyg'otadimi yoki ikkala fan hali ham bir-biridan farq qiladimi?

Tadqiqot bizga aytayotgan narsadan ko'rinib turibdiki, kompyuter dasturlashi kompyuter faniga tegishli, ammo etarlicha muhim tafovutlar bilan bu o'z sohasi.

Tech YouTuber Silvester Morgan o'zining 2017 yilgi "Dasturiy ta'minotni ishlab chiqish nima? Dasturiy ta'minotni ishlab chiqish VS Computer Science "(quyida keltirilgan) ikkalasining farqlarini batafsil bayon qiladi:

Dasturiy ta'minotni ishlab chiqish - bu biron bir narsani amalga oshirish uchun biron bir narsani bajarish uchun, biron bir narsani qurish yoki biror narsani avtomatlashtirish uchun kompyuter tushunadigan ko'rsatmalarni yozish uchun dasturlash tillari va vositalaridan foydalanish. Dasturiy ta'minotni ishlab chiqish bu informatika dasturidir.
Kompyutershunoslik - bu ildizning asosi va poydevori va dasturiy ta'minotni ishlab chiqishdir, ammo ular bir xil emas. Siz asosli bilimga ega bo'lmagan holda samarali va malakali dasturiy ta'minot ishlab chiqaruvchisiga aylanishingiz mumkin, ammo haqiqiy professional sifatida har doim qiziquvchan bo'lib, kerak bo'lganda va sizni qiziqtirgan narsaga chuqurroq o'rganish yaxshi.

Morgan Programming-ni Computer Science-ning pastki toifasi va ilovasi deb bilgan bo'lsa-da, u ularni etarlicha o'ziga xos deb hisoblaydi va ularga alohida fikrlar bilan murojaat qilish mumkin.

2015 yilda EdSurge o'zining "Informatika kodlashdan boshqa narsaga o'tmaydi" maqolasida (quyida keltirilgan) sharhlovchi Sheena Vaidyanathan Dasturlash Kompyuter Bilimining muhim qismlaridan biri ekanligini ta'kidlaydi.

Kompyutershunoslik kompyuterlardan foydalangan holda muammolarni hal qilish va kodlash (yoki dasturlash) ushbu echimlarni amalga oshirish haqida. Kompyuter olimlari uyni loyihalashtiradigan me'morlarga o'xshab qolishi mumkin - lekin uni qurishning hojati yo'q.
AP Informatika maktabining yangi maktab fanlari printsipi ushbu muhim farqni yetti katta g'oyaga qaratgan holda aniqroq aks ettiradi: Ijodkorlik, mavhumlik, ma'lumotlar, algoritmlar, dasturlash, Internet, global ta'sir. Kodlash (dasturlash) ana shu ettita yo'nalishlardan bittasidir.

Vaidyanathan ushbu mavzular bo'yicha ta'limga bag'ishlangan maqolasida, umuman olganda, kompyuter fanini o'qitish uchun juda ko'p sabablar borligini va faqat dasturlashni rad etish kompyuter fanining boshqa sohalariga yo'l qo'ymaslik uchun sabab emasligini ta'kidlaydi.

Tech YouTuber, ishlab chiqaruvchi va yozuvchi Aaron Beta-da, 2017 yilda "Informatika va kompyuter dasturlash o'rtasidagi farq nimada" nomli videofilmida ushbu mavzuni yoritadi:

... ular bir xil (Informatika va kompyuter dasturlari) va nima farqi bor? Shunday qilib, javob berishning eng oson savoliga javob berish qiyin deb o'ylayman. Bu ikki atama bir xil emasmi? Va javob, albatta, "Yo'q, ular emas. Ammo ular bir-biri bilan chambarchas bog'langan "...
... xuddi kimyogar va kimyo muhandisiga o'xshagan tushuncha. Kompyuter dasturlash - bu kimyoviy muhandis. Ular tadqiqot olib boradigan va uni kundalik vaziyatlarda qo'llaydigan odamlardir, holbuki informatika tomoni ko'proq kimyogar. Ular ilmiy ishlarni, nazariy ishlarni amalga oshirmoqdalar, keyinchalik kimdir uni real dunyoga tatbiq etishlari kerak.

Beta-dagi Aaron, shuningdek, ikkita maydon bir-biridan ajratilgan bo'lsa ham, birini tushunish ikkinchisini chuqur anglashga xizmat qilishini aytadi. Kompyuterlarning ishlashi haqidagi nazariyalarni chuqur tushunish sizga samaraliroq kodni yozishda yordam beradi, shu bilan birga kompyuterlar qanday ko'rsatmalar berishi mumkinligini bilish, umuman kompyuterlarni chuqurroq tushunishga yordam beradi.

Xo'sh, Bootcamp Gradlari bularning bariga qayerga mos keladi?

Yuqoridan ko'rinib turibdiki, kompyuter va dasturiy ta'minot sohasidagi munozaralarning asosiy qismi universitetda bo'lib, o'yinga kirishganlarni biroz orqada qoldiradilar (o'zim ham). Aytish kerakki, ushbu mavzu bo'yicha keng muhokamalar olib borilgan bo'lsa ham, sobiq, hozirgi yoki bo'lajak bootcamp kodlash talabalari bunday tushkunlikka tushmasliklari kerak, deb aytish juda to'g'ri.

Vashingtondagi universitetning doktoranti Kayl Teyer o'zining "O'rnatilgan Bootcamplarni kodlash. Kompyuter fanlari darajalari: ish beruvchilar nimani xohlaydi va boshqa nuqtai nazarlar" nomli 2018 yilgi O'rta maqolasida (bu erda quyida keltirilgan) ushbu o'ziga xos muammoni hal qilishga intilmoqda. Uning ta'kidlashicha, bootcamp ham, 4 yillik Informatika darajalari ham o'z maqsadlari va kuchli tomonlariga ega:

CS darajasining maqsadi talabalarga hisoblashning ilmiy sohasi haqida umumiy ma'lumot berishdir. O'z navbatida kodlash bootcamplari odamlarni ma'lum bir dasturiy ish turiga o'rgatish (odatda to'liq stack veb-dasturlash).
… Kodlash bootcamplari operatsion tizimlarning asoslarini qamrab ololmaydi va CS dasturlari eng so'nggi veb-texnologiyalarni qamrab olmasligi yoki jamoaviy ish bilan shug'ullanishi qiyin. Universitet dasturlari asta-sekin o'zgarib turadi, ammo kompyuter bilimlarining asoslari ham o'zgaradi, shu bilan birga yuklash lampalarini kodlash juda tez o'zgaradi va texnologiyaning tez sur'atlariga rioya qilish imkoniyatiga ega. Men kodlash bootcamplari va CS darajalari kelajakda alohida trek sifatida mustaqil ravishda yoki birgalikda bajarilishini davom ettirishini kutmoqdaman.

Thayerning o'zi ushbu Blogni haqiqatda Blogdan (quyida bog'langan) o'rganmoqda. "Ish beruvchilar botinkalarni kodlash to'g'risida aslida nima deb o'ylashadi?" Deb nomlangan tadqiqotda 1000 dan ortiq texnik yollash va kadrlar menejerlarining namunalari keltirilgan. Maqolada ta'kidlanganidek, hayratda qoldiradigan 72% ular bootcamp graduslarini "xuddi tayyor bo'lgan va yuqori darajadagi ijrochilar bo'lishi mumkin, ular kompyuter fanlari darajasiga ega nomzodlar sifatida ko'rishadi" deb javob berishgan, qo'shimcha 12% "fikrga ko'ra, bootcamp bitiruvchilari ko'proq tayyor va ko'proq ishonishadi". So'rovda qatnashganlarning 17 foizga yaqini "fikrga ko'ra, bootcamp bitiruvchilarining bilim darajasi yuqori emas yoki ular kompyuter fanlari nomzodi sifatida yuqori darajadagi ijrochilar emas."

So'ralgan menejerlarning 80 foizi ma'lum bir vaqtlarda bootcamp bitiruvchisini yollashganini va juda ajoyib (99,8%), yana ishga olishlarini aytishdi.

Har kimning fikri turlicha bo'lsa-da, men bu natijalar bootcamp dasturchilari uchun tushkunlikka tushishi kerak, degan xulosaga kelish qiyin, aslida men aytgandek ular kutganimdan ham oshib ketdi. Ushbu tadqiqot asosli ma'lumotlar bilan birga keladi, ammo: bootcamp gradlarining ijobiy nuqtai nazariga qaramay, tadqiqotda qatnashganlarning 41 foizi, ular kompyuter fanlari bo'yicha ma'lumotga ega bo'lgan odamni ishga olishda qulayroq bo'lishini ta'kidlashdi. Bu ko'p jihatdan universitetlarning yaxshi tartibga solingan asosiy standartlari va mavjud kodlash bootamplarining tartibga soluvchi tuzilmasining yo'qligi bilan bog'liq. Shunga o'xshash mavzular bilan bir qatorda, respondentlarning ta'kidlashicha, kompyuterlar haqida nazariy bilimlarga oid ko'proq mavhum loyihalar uchun Computer Science darajasi yuqori baholanadi, holbuki muammolarni amaliy tushunishni talab qiladigan vazifalar uchun yuk mashinalarining sertifikatlari shunchalik muhimdir.

Xo'sh, nima kerak?

Xo'sh, xabar boshida berilgan ba'zi savollarni ko'rib chiqaylik:

Kompyuter fanlari va kompyuter dasturlari bir xil narsami?

Yo'q. Umumiy jihatlari ko'p bo'lsa-da, kompyuter dasturlash va informatika fanlari bir-biridan keskin farq qiladi, deb aytish to'g'ri bo'ladi.

Kompyuter fanlari va kompyuter dasturlari bog'liqmi?

Ha - ular har xil toifalar bo'lishiga qaramay, ikkalasi ham juda katta bir-biriga mos keladi va ulardan birini bilish deyarli boshqasini tushunishga yordam beradi.

Kompyuter faniga kompyuter dasturlari yoki vitsa dasturlari kiritilganmi?

Ha, Kompyuter dasturlari - bu kompyuter fanining amaliy sohasi. Kompyuter dasturlashning barchasini Informatika fanining kichik tarmog'i deb hisoblash mumkin, shu bilan birga, kompyuter fanlari ko'p, kompyuter dasturlashiga umuman aloqasi yo'q.

4-yil Kompyuter fanlari doktori ilmiy darajasiga sazovor bo'lmagan yangi kompyuter dasturlash talabasi sifatida men maqoldagi maqolni sog'indimmi?

Bu sizning maqsadlaringiz qanday bo'lishiga bog'liq. Agar siz tijorat sharoitida yoki shunga o'xshash narsalarni ishlash uchun dasturlash ko'nikmalarini egallashga harakat qilsangiz, unda javob, ehtimol yo'q (garchi yo'l hali ham oson bo'lmaydi). Agar siz kompyuter nazariyasi bo'yicha ilmiy izlanishlarni nashr etishga harakat qilsangiz, unda siz ushbu universitetni keyinchalik o'rganishni xohlaysiz.

Kompyuter dasturlash, bu men o'ylagandan kichikroq san'atmi?

Bu siz o'ylagan narsaga bog'liq. Agar siz "Kompyuterda dasturlash" - bu kompyuterlar bilan bog'liq bo'lgan ko'plab o'qish sohalarini qamrab oladigan tadqiqot sohasi deb o'ylagan bo'lsangiz, unda siz yanglishasiz. Bu kompyuter fanlari. Agar siz bu dasturlarni qurish oxirigacha kompyuterlar bilan bog'lanish va ko'rsatmalar berish usullarini o'rganish deb o'ylagan bo'lsangiz, unda siz to'g'ri bo'lasiz. Sharh sifatida, ikkinchisidan "kichikroq" deb o'ylash, odatda keraksizdir va har birini to'ldiradigan o'ziga xos kontekst nuqtai nazariga ega emas.

Kompyuter fanlari darajasi "haqiqiy" dasturiy ta'minot muhandislari belbog'lari ostida nimani anglatadi?

Majburiy emas. 4 yillik kompyuter fanlari bo'yicha mutaxassislik bo'lajak dastur muhandisining martaba maqsadlariga va uning bu sohani tushunishiga hech qachon zarar qilmaydi, ammo ilmiy daraja egalari va muhandislar o'rtasida yakka-yakka munosabatlar mavjud emas. Turli xil mutaxassislik (yoki hech qachon universitetga bormagan) dan keyin o'zlarining kareralarini qurgan muvaffaqiyatli muhandislar ko'p. Bundan tashqari, muhandis bo'lish niyatida Informatika darajasiga o'qishga kirgan va o'qish nazariy jihatdan og'irroq bo'lib qolganda hafsalasi pir bo'lgan ko'plab talabalar ham bor.

Eslatib o'tamiz, Kompyuter dasturlari bu Kompyuter fanining amaliy sohasi. Uni asosan Informatika fanidan mustaqil ravishda o'rganish mumkin, ammo birini tushunish boshqasiga katta xizmat qiladi. Birinchisini ikkinchisidan "yaxshiroq" deb belgilash odatda noto'g'ri yo'l tutgan amaliyotdir, aniqrog'i qaysi intizom yoki ko'nikma ko'proq foyda keltirishi to'g'risida qaror qabul qilishdan oldin berilgan vazifani ko'rib chiqish kerak. Kompyuter fanlari bo'yicha bitiruvchilar va kompyuter dasturlari bootcamp bitiruvchilari har birining jamiyatda o'z o'rinlari bor va yaqin orada ularning ahamiyati yo'qolishi dargumon.

Ushbu maqolani yozish boshqalar tomonidan olib borilgan tadqiqotlarga juda ishondi. Agar siz ushbu manbalarning istalganiga nazar tashlamoqchi bo'lsangiz, iltimos, quyidagi havolalarga murojaat qiling:

(Fotosurat) 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/