Apa perbedaan antara ilmu komputer dan pemrograman?

32

Saya baru dalam ilmu komputer dan pemrograman, dan saya bertanya-tanya, apakah ada perbedaan antara ilmu komputer dan pemrograman? dan apakah Anda bisa memilih untuk belajar hanya satu di universitas, atau keduanya?

xXSarahXx
sumber
42
Waktu analogi yang buruk.
Mike Weller
10
Apa perbedaan antara arsitektur dan konstruksi?
Oded
6
mereka terpisah sejauh geologi dan penggalian parit
Steven A. Lowe
27
Ilmu komputer adalah apa yang Anda bayar untuk belajar. Pemrograman adalah apa yang Anda dibayar untuk melakukan.
jfrankcarr
5
Perbedaannya adalah apa yang membuat Anda menggunakan smoothsort bukannya bubble sort.
deadalnix

Jawaban:

68

Ilmu komputer adalah studi tentang apa yang bisa dilakukan komputer; pemrograman adalah praktik membuat komputer melakukan sesuatu.

Lihatlah kursus / silabus yang ditawarkan oleh universitas yang Anda minati untuk mengetahui apakah kursus itu kursus CS, kursus pemrograman, sesuatu yang lain (misalnya Rekayasa Perangkat Lunak) atau bahkan kombinasi dari yang di atas. Banyak kursus yang diiklankan sebagai "ilmu komputer" menawarkan komponen pemrograman yang signifikan, yang mungkin agar Anda dapat mempraktikkan bagian-bagian teoretis dari kursus tersebut, atau mungkin demi kepentingan mereka sendiri sehingga Anda dapat mempelajari keterampilan membuat program.


sumber
1
Jawaban yang sangat bagus, meskipun tidak menjawab bagian praktis dari pertanyaan;)
back2dos
@ back2do OK, saya memperpanjang jawabannya.
Penting untuk dicatat bahwa sebagian besar program Ilmu Komputer sama sekali tidak peduli dengan CS teoritis, TCS setidaknya terpisah dari CS praktis seperti halnya CS dari pemrograman.
Ben Brocka
3
Saya tidak berpikir Anda harus mengikat CS (terlepas dari namanya) terlalu dekat dengan komputer: pertama dan terutama, ini adalah studi informasi . Kebetulan istilah "komputer" mencakup sebagian besar alat fisik berbeda yang kita gunakan untuk bekerja dengan informasi, sehingga hampir semua studi informasi akan melibatkan pemrograman komputer.
Tikhon Jelvis
Taksonomi mungkin cocok di bawah monicker ilmu informasi. Tapi itu tidak menurut saya cocok di bawah CS. Berguna dalam arti lintas disiplin tetapi CS sebagian tidak dapat dipisahkan dari hal-hal yang dapat kita lakukan dengan komputer, IMO. Saya mungkin membuat definisi Anda tentang apa pun "komputer" itu, lebih umum, tetapi bukan definisi CS.
Erik Reppen
36

Peringatan: 'Ilmu Komputer' telah menjadi bidang berlumpur di zaman modern karena (setidaknya di Amerika Serikat) universitas tidak memiliki gelar dalam "pemrograman". Ini berarti bahwa orang yang tertarik pada pemrograman harus mendaftar untuk gelar Ilmu Komputer, dan sebagai reaksi terhadap hal itu program Ilmu Komputer semakin menekankan pemrograman.

Yang mengatakan, Ilmu Komputer itu sendiri sangat kuat ilmu matematika yang - Matematika Komputasi mungkin istilah yang lebih baik. Ini melibatkan studi tentang teori grafik, kompleksitas algoritmik, logika formal, automata, dan secara umum setiap struktur logis yang dapat menggambarkan transformasi atau respons terhadap algoritma input. Seorang Ilmuwan Komputer dalam pengertian klasik bisa beralasan tentang aturan yang mengatur sistem komputasi apa pun (termasuk komputer modern) tanpa harus mengetahui detail implementasi pada arsitektur saat ini. Latar belakang yang kuat dalam Ilmu Komputer memberi Anda kemampuan untuk mengembangkan (atau mengingat) algoritma yang efisien dan dapat diukur, mengantisipasi pengurangan logis, dan memberi alasan kuat tentang apa yang bisa ditelusuri.

Pemrograman, sebaliknya, adalah apa yang dilakukan seseorang ketika mereka menggunakan bahasa pemrograman untuk mengubah suatu algoritma menjadi sesuatu yang dapat dilakukan mesin. (Itu seharusnya memperjelas hubungan intim dengan Ilmu Komputer, dan dari mana banyak kebingungan berasal.) Seorang programmer (relatif terhadap suatu lingkungan dan bahasa) harus mampu mengambil hampir semua rangkaian algoritma dan mengubahnya menjadi bentuk yang sama-sama manusiawi. - dan dapat dibaca mesin dengan menulis kode. Latar belakang yang kuat dalam pemrograman (karena sebagian besar gelar CS akan menyediakan) memungkinkan Anda untuk menulis kode yang lebih baik - di mana kode 'lebih baik' lebih mudah dipahami oleh orang lain dan lebih sukses dalam mengekspresikan algoritma yang Anda laksanakan.

Ada sejumlah besar crosstalk, tentu saja, dan tingkat pengalaman yang tinggi dalam satu akan sangat sesuai dengan pengembangan pengalaman di yang lain - seperti dicatat, mayor CS hampir selalu merupakan programmer yang kompeten, dan programmer berpengalaman telah mengambil banyak prinsip CS. Pikirkan Fisika dan Teknik.

Cara yang baik untuk mengingat perbedaannya adalah ini: jika ia membutuhkan komputer untuk melihat apakah ia berfungsi pemrograman - jika Anda dapat melakukannya dengan pensil dan kertas, itu adalah Ilmu Komputer.

shanef22
sumber
4
Aye, kalimat terakhir itu adalah masalah, bukan? Ini memunculkan gambar-gambar profesor yang kusut dengan rambut keriting dan jari-jari kapur melambai-lambaikan segenggam perkamen, dan mengingatkan saya pada kutipan seperti "ilmu komputer tidak lebih tentang komputer daripada astronomi tentang teleskop." Jika sains pada akhirnya tidak membuatnya menjadi mesin, lalu apa gunanya? Astronom mana yang warasnya tidak pernah melihat melalui teleskop?
Robert Harvey
Saya tidak berpikir saya pernah diminta untuk "mengubah algoritma menjadi sesuatu yang bisa dilakukan mesin" dalam 30 tahun terakhir. Apa yang Anda pikirkan bukanlah seorang programmer, tetapi seorang kompiler.
gnasher729
2
@ gnasher729 Ok, katakanlah saya memiliki algoritme "Untuk setiap kata dalam daftar, jika dimulai dengan A, pindahkan ke awal." Kompiler apa yang akan Anda rekomendasikan?
shanef22
18

Ilmu komputer berurusan dengan dasar-dasar teoretis dari informasi, perhitungan, dan dengan teknik-teknik praktis untuk implementasi dan aplikasinya. http://en.wikipedia.org/wiki/Computer_science

~

Ilmu komputer tidak lebih tentang komputer daripada astronomi adalah tentang teleskop. Edsger Dijkstra

Pemrograman adalah keahlian membuat program komputer.

Gary Willoughby
sumber
11

Ilmu Komputer, dari sudut pandang saya, seharusnya merupakan Ilmu Keras seperti Fisika.

Ini melibatkan studi tentang kompiler dan generator kompiler, konsep arsitektur perangkat keras, berbagai bentuk sistem bilangan, algoritma dan efisiensi / kinerja algoritmik dan teori di balik operasi aritmatika pada prosesor. Ketika saya melakukan CS di universitas, kami menghabiskan banyak waktu bercanda dengan assembler, belajar tentang perbedaan antara mengkompilasi, menghubungkan dan menafsirkan, dan sebagainya.

Banyak dari ini dilakukan oleh pemrograman - yaitu, tindakan menulis kode yang kemudian dikompilasi atau dijalankan melalui penerjemah, dengan maksud menghasilkan hasil untuk memecahkan masalah. Artinya, Pemrograman adalah tindakan memecahkan masalah yang dapat dijelaskan dengan pengetahuan dari Ilmu Komputer. Ini semacam perpecahan Matematika Murni / Matematika Terapan.

Anda tidak perlu gelar Ilmu Komputer untuk menjadi seorang programmer, tetapi seorang programmer dengan latar belakang CS kemungkinan akan memiliki pemahaman yang lebih dalam tentang perilaku program komputer.

mcfinnigan
sumber
1
Saya tidak berpikir siswa CS lebih baik dari siswa kursus pemrograman lain.
Tjaart
5
Saya tidak mengatakan lebih baik , saya mengatakan cenderung memiliki pemahaman yang lebih dalam.
mcfinnigan
@ mcfinnigan menurut saya, lebih salah arah. Siswa CS yang mendasarkan diri pada teori cenderung kurang memahami karena mereka sebenarnya tidak memiliki pengalaman untuk mengetahui apa yang dapat dilakukan komputer , atau bagaimana mencapainya dalam berbagai bahasa.
Izkata
3
lagi, Anda salah paham. Saya mengatakan bahwa seorang programmer yang meluangkan waktu untuk memperoleh beberapa teori CS yang sebenarnya lebih mungkin untuk mengetahui mengapa Set lebih baik daripada Daftar dalam situasi tertentu, atau mengapa floating point itu rumit.
mcfinnigan
2
@TikhonJelvis: teknik mempekerjakan matematika, tetapi dua langkah lagi. CS adalah cabang matematika.
kevin cline
3

Saya akan menulis ulang pertanyaan Anda sebagai "Apa perbedaan antara Ilmu Komputer dan Rekayasa Perangkat Lunak?" Bagaimanapun keduanya melibatkan pemrograman.

Ilmu Komputer adalah studi teoritis tentang apa itu komputasi dan apa yang mungkin dan tidak mungkin. Itu terlihat pada hal-hal seperti Teorema Godels dan masalah Halting.

Rekayasa perangkat lunak adalah cara menulis program yang melakukan apa yang telah dirancang untuk dilakukan dan dikelola.

Jaydee
sumber
Tidak. Mengapa ulang pertanyaannya? Dia bertanya apa yang dia minta. Rekayasa Perangkat Lunak berbeda dari pemrograman dan JUGA kontroversial karena artinya berbeda di negara yang berbeda (mis. AS dan Kanada)
Douglas Held
2

Ilmu komputer adalah teori pemrograman. Pemrograman adalah implementasinya.

Ilmu komputer ... adalah pendekatan ilmiah dan praktis untuk komputasi dan aplikasinya. Seorang ilmuwan komputer mengkhususkan diri dalam teori komputasi dan desain sistem komputasi.

Subbidangnya dapat dibagi menjadi berbagai disiplin teoretis dan praktis. Beberapa bidang, seperti teori kompleksitas komputasi (yang mengeksplorasi sifat-sifat dasar masalah komputasi), sangat abstrak, sedangkan bidang-bidang seperti grafik komputer menekankan aplikasi visual dunia nyata. Masih bidang lain fokus pada tantangan dalam mengimplementasikan komputasi. Misalnya, teori bahasa pemrograman mempertimbangkan berbagai pendekatan untuk deskripsi komputasi, sementara studi pemrograman komputer itu sendiri menyelidiki berbagai aspek penggunaan bahasa pemrograman dan sistem yang kompleks. Interaksi manusia-komputer mempertimbangkan tantangan dalam membuat komputer dan komputasi bermanfaat, dapat digunakan, dan dapat diakses secara universal oleh manusia ...

Tom Squires
sumber
12
Jujur saya percaya ilmu komputer lebih dari pemrograman.
Ubermensch
2
@Ubermensch: Jujur saya percaya pemrograman lebih dari ilmu komputer.
Michael Borgwardt
1
@MichaelBorgwardt Sebenarnya, kedua pandangan kami benar. Tetapi ilmu komputer masih jauh lebih besar dari pemrograman (Anda bisa berdebat sebaliknya juga). Sebuah kutipan terkenal dari Niehls Bohr "Ada dua jenis kebenaran, kebenaran kecil dan kebenaran besar. Anda dapat mengenali kebenaran kecil karena kebalikannya adalah kepalsuan. Kebalikan dari kebenaran besar adalah kebenaran lain."
Ubermensch
@Ubermensch Keyakinan Anda adalah fakta. Ilmu komputer BUKAN hanya teori pemrograman. Ilmu komputer sudah ada sebelum komputer ada.
Casey Patton
1

Jika pemrograman adalah pertukangan, maka ilmu komputer adalah arsitektur / desain.

Edit

Info lebih lanjut: di pertukangan, Anda tertarik pada hal-hal seperti apa urutan untuk membangun barang-barang (bingkai, lalu subfloor, lalu dinding interior, lalu drywall, dll.). Bagaimana Anda membangunnya sehingga membutuhkan waktu lebih sedikit untuk membangun, tetapi dapat dimodifikasi nanti.

Dalam kasus arsitektur (bagian dari itu seperti CS pula), Anda khawatir dengan hal-hal seperti apa kemampuan bahan, seberapa besar balok yang Anda butuhkan untuk mendukung rentang dinding / atap ini?

Demikian pula CS adalah tentang kemampuan teoritis komputer, di mana pemrograman adalah tentang aplikasi praktis dari pengetahuan itu.

Scott Whitlock
sumber
3
Analogi yang buruk. Jika pemrograman adalah pertukangan maka desain perangkat lunak adalah arsitektur / desain. Ilmu komputer lebih seperti dendrologi dalam hal itu, atau mungkin biologi secara umum.
back2dos
Oke, mungkin saya tidak jelas, jadi izinkan saya menjelaskan mengapa saya pikir analogi Anda tidak berfungsi. Menjadi prihatin dengan kemampuan material adalah ilmu material, dengan stabilitas struktur statis. Tak satu pun dari mereka yang benar-benar tentang desain, mereka hanya membatasi itu. Desain (perangkat lunak atau bangunan atau apa pun) adalah tentang mengambil semua persyaratan dan kendala (teknis, keuangan, psikologis, ...) dan merancang solusi untuk memenuhi semua itu.
back2dos
1

Ilmu komputer adalah pemrograman seperti halnya fisika adalah teknik mesin.

Ilmu komputer adalah teoretis, dibutuhkan pendekatan ilmiah dan matematis untuk informasi dan komputasinya.

Pemrograman komputer itu praktis, itu adalah proses mendesain, menulis, menguji, men-debug, dan memelihara kode sumber program komputer.

Mereka berbeda, tetapi bidang terkait. Keduanya saling menguntungkan.

bbb
sumber
0

Gelar dalam ilmu komputer jauh lebih luas dalam ruang lingkup dan mencakup teori di balik komputasi. Sebuah gelar dalam pemrograman komputer , di sisi lain, difokuskan pada pengembangan keterampilan coding atau pemrograman siswa dengan melatih mereka dalam bahasa pemrograman yang berbeda. Jika Anda bingung, Anda dapat menelusuri rincian kedua program ini di California College San Diego. Itu mungkin memberi Anda beberapa kejelasan mengenai ruang lingkup derajat ini!

pengguna45390
sumber
0

Ilmu Komputer : Ini adalah studi pemecahan masalah dengan komputer / metode komputasi.

Pemrograman komputer: Ini adalah bagian dari proses pemecahan masalah yang membentuk bidang ilmu komputer. Pemrograman komputer hanyalah sebagian kecil dari ilmu komputer.

ramneet
sumber
-1

Pemrograman adalah tentang orang. Orang membaca, menulis, dan memelihara kode. Ilmu komputer adalah tentang matematika - mereka mengimplementasikan dan menjelaskan algoritma.

DeadMG
sumber
3
@ SK-logic dan DeadMG. Saya sudah menghapus semua komentar ini. Jika Anda ingin berdiskusi (atau memang berdebat) silakan bawa ke tempat lain.
ChrisF
1
Itu agak sempit. Paling tidak, lab "Algoritma, Mesin dan Manusia" di universitas saya ingin tidak setuju :). Dan lab itu berisi beberapa peneliti CS terkemuka, titik. Juga semua orang HCI di mana-mana. Saya menjadi sedikit ceroboh, tetapi CS benar-benar lebih luas dari sekedar algoritma dan matematika.
Tikhon Jelvis
-1

Pemrograman (pengembangan) adalah tentang menghasilkan uang. Ilmu pengetahuan adalah tentang menemukan hal-hal baru.

pap
sumber
7
Seseorang lupa memberitahu komunitas open source.
webbiedave
2
@webbiedave - yah, mungkin ada satu atau dua altruis sejati di luar sana, tetapi pada akhirnya open-source adalah tentang menghasilkan uang juga. Saya berani mengatakan kebanyakan orang yang terlibat dalam proyek-proyek open source melakukannya untuk meningkatkan keterampilan dan / atau CV mereka dan meningkatkan potensi pendapatan mereka di masa depan. Banyak proyek sumber terbuka juga menelurkan versi komersial / perusahaan untuk menghasilkan pendapatan dari proyek. Jadi komunitas open source sangat banyak terlibat dalam hal menghasilkan uang;)
pap
Dan hal yang sama tidak berlaku untuk sains? ;)
webbiedave
@webbiedave - Tidak, saya tidak setuju. Walaupun uang mungkin merupakan bi-produk ilmu pengetahuan, uang bukanlah (dan seharusnya tidak) tujuan utama. Ilmu pengetahuan adalah tentang penemuan demi dirinya sendiri. Perusahaan melakukan R&D, tetapi itu bukan tentang menemukan hal-hal baru, ini tentang mendapatkan uang dari hal-hal yang sudah ditemukan.
pap
Satu-satunya alasan kebanyakan ilmuwan menginginkan lebih banyak uang adalah agar mereka dapat melakukan lebih banyak penelitian. Saya pikir hal yang sama diperhitungkan untuk open source. Melakukan open source untuk meningkatkan CV Anda kedengarannya seperti jalan menuju kegagalan bagi saya. Itu harus tentang rasa ingin tahu, penemuan dan menggaruk gatal.
Tjaart