Disiplin apa yang dimiliki Ilmu Komputer? [Tutup]

15

Apakah ilmu IPA, matematika terapan, teknik, seni, filsafat? "Lain"?

Untuk memberikan latar belakang, berikut adalah posting blog Steven Wartik untuk Scientific American berjudul " Saya bukan ilmuwan sejati, dan tidak apa-apa ." Artikel ini membahas beberapa topik bagus untuk pertanyaan ini, tetapi terbuka lebih banyak daripada jawaban.

Jika Anda bisa memikirkan disiplin, bagaimana ilmu komputer sesuai dengan definisinya? Haruskah disiplin untuk Ilmu Komputer didasarkan pada apa yang programmer lakukan, atau apa yang dilakukan akademisi ? Apa jenis jawaban yang Anda dapatkan dari orang-orang yang tampaknya berpikir mendalam tentang ini? Alasan apa yang mereka berikan?

Macneil
sumber
1
Pernah akademik saya pernah bertemu yang mengatakan Ilmu Komputer adalah ilmu memiliki alasan yang sama sekali berbeda untuk menjelaskan mengapa.
Macneil
5
Ilmu Komputer adalah Ilmu Politik dengan politik yang sedikit kurang.
Pekerjaan
1
ilmu komputer adalah cabang matematika terapan ... "sains" menyiratkan menggunakan metode ilmiah, yang tidak ada dalam ilmu komputer; tetapi dinamai ketika setiap disiplin baru ingin meletakkan kata sains di akhir nama mereka.
red-dirt
2
@ red-dirt Itu tidak benar. Ada metode ilmiah di CompSci; Anda memiliki eksperimen, bukti formal, dll. Sebagian besar ilmuwan komputer hardcore masuk ke Matematika dan logika formal (lihat: lambda calculus, masalah penghentian, dll, dll), dan menerbitkan makalah di jurnal yang diulas sejawat. Jangan membingungkan mereka dengan orang-orang yang menciptakan "metodologi", yang bukan ilmuwan dengan definisi kata apa pun.
Andres F.
1
@ red-dirt Mirip dengan AndresF, di sisi aplikasi yang lebih praktis, metode ilmiah dasar (berhipotesis, tes, periksa, ulangi) ikut bermain selama debugging - yang biasanya menghabiskan sebagian besar waktu yang dihabiskan untuk pemrograman.
Izkata

Jawaban:

30

Ada dua disiplin ilmu TI yang berbeda:

  • Ilmu Komputer - adalah studi disiplin komputer dan perhitungan menggunakan metode ilmiah.

  • Rekayasa Perangkat Lunak - adalah disiplin dalam merancang dan mengimplementasikan perangkat lunak mengikuti prinsip-prinsip teknik yang tepat.

Keduanya agak tumpang tindih, tetapi perbedaannya adalah tentang hasil yang diinginkan dari sains versus teknik. Hasil yang diinginkan dari suatu disiplin ilmu adalah pengetahuan. Hasil yang diinginkan dari disiplin teknik adalah hal-hal yang berhasil.

Jadi, untuk menjawab pertanyaanmu:

Apakah ilmu IPA, matematika terapan, teknik, seni, filsafat? "Lain"?

Ilmu Komputer adalah Ilmu ... bila dilakukan dengan benar. Namun, seperti disiplin ilmu lainnya, CS memiliki tumpang tindih dengan Matematika, Teknik, Ilmu Fisika, Ilmu Sosial, Filsafat, dan sebagainya.

Saya juga akan menambahkan bahwa apa yang kebanyakan programmer lakukan bukanlah Ilmu Komputer atau Rekayasa Perangkat Lunak. Ini lebih seperti apa yang dilakukan pengrajin.

Dan menyedihkan untuk mengatakan, baik Ilmu Komputer akademik atau profesi Rekayasa Perangkat Lunak tidak seketat disiplin ilmu dan teknik yang lebih tua. (Ada bidang-bidang Ilmu Komputer yang secara tradisional keras; misalnya, yang dengan dasar matematika yang kuat. Tetapi bagi banyak bidang, terlalu sulit / mahal untuk melakukan studi ilmiah yang tepat tentang pertanyaan-pertanyaan yang benar-benar penting.)

Stephen C
sumber
1
Ada juga rekayasa perangkat keras - seseorang harus merancang komputer fisik untuk menjalankan perangkat lunak - dan itu benar-benar sub-disiplin (besar) dari Teknik Elektronik.
Donal Fellows
+1 untuk analogi pengrajin, saya menyadari itulah konsep yang paling tepat untuk menjelaskan apa yang dilakukan oleh CS of Engineer Engineer. Berikut tautan untuk buku gratis dari O'Reilly tentang hal itu. apprenticeship-patterns.labs.oreilly.com/ch01.html
romeroqj
"Dan menyedihkan untuk mengatakan, baik Ilmu Komputer akademik atau profesi Rekayasa Perangkat Lunak tidak seketat sains dan disiplin teknik yang lebih tua": Saya tidak setuju dengan pernyataan ini. Antara lain, jika Ilmu Komputer tidak ketat, kita tidak akan memiliki kemajuan dalam bahasa pemrograman, penyusun (dan semua teori bahasa formal di belakangnya), kriptografi, dan sebagainya. Semua aplikasi ini memiliki dasar yang kuat yang sebagian besar telah dikembangkan di dunia akademis.
Giorgio
@Giorgio - Sangat disayangkan bahwa Anda tidak membaca apa yang saya tulis segera setelah kalimat yang Anda kutip ...
Stephen C
@Stephen C: Saya sudah membacanya, dan masih saya tidak yakin bahwa Ilmu Komputer kurang ketat daripada ilmu-ilmu lain (tapi tentu saja saya mungkin salah). Atau mungkin orang pertama-tama harus mendefinisikan apa yang dianggap "ilmiah" dan "keras" dan apa yang tidak, tetapi ini bisa memerlukan diskusi panjang, saya kira.
Giorgio
12

Pemrogram jarang "melakukan ilmu komputer". Mereka kebanyakan menggunakan hasil "rekayasa perangkat lunak", yang merupakan disiplin teknik, jelas.

Selain itu, Ilmu Komputer adalah Matematika Terapan. Jika Anda membandingkan CS dengan sesuatu yang pasti milik matematika terapan, Anda akan melihat banyak kemiripan.

Ilmuwan komputer merancang dan mempelajari cara-cara komputasi (algoritma), mengambil sebagian besar teori dari Matematika (logika, teori grafik, kombinatorik, dll) —dan berkontribusi padanya secara bersamaan. Sama seperti matematika terapan lainnya.

Mereka mengevaluasi sifat-sifat model dan algoritma ini secara teoritis, dan melakukan percobaan pemodelan (menulis program uji). Seperti ahli matematika terapan yang mensimulasikan aliran cairan dalam tabung pada kelompok, ilmuwan komputer menggunakan komputer untuk bereksperimen dengan implementasi algoritma mereka. Hasil percobaan ini langsung masuk ke produksi: baik ke kilang minyak atau ke perangkat lunak untuk analisis stok.

Di universitas saya selesai bahkan tidak ada departemen khusus untuk ilmu komputer: antara lain, domain non-komputer, kursi ilmu komputer adalah bagian dari Departemen Matematika Terapan.

P Shved
sumber
tetapi di universitas lain, Ilmu Komputer adalah departemen terpisah dalam Fakultas Matematika, departemen Fakultas Teknik, Fakultas Sains, atau ... tidak ada yang di atas. Ini adalah masalah administrasi / organisasi dan tidak ada hubungannya dengan materi pelajaran yang sebenarnya.
Stephen C
@Stephen, itu sebabnya saya menentukan universitas, daripada mengatakan "di sebagian besar universitas" atau "di banyak universitas" :-) Itu hanya contoh kecil, bukan inti dari jawabannya.
P Shved
1
yakin itu adalah "contoh kecil", tetapi poin saya adalah itu bukan contoh yang representatif, dan bahkan tidak relevan dengan argumen Anda. Sebagai gambaran, Universitas tempat saya bekerja sedang dalam proses merestrukturisasi fakultas ... bukan karena pemikiran mendalam tentang apa yang terkait dengan apa ... tetapi untuk mengurangi biaya administrasi . Beberapa tahun yang lalu, sekolah CS dan Elec Eng digabungkan untuk alasan yang sama .
Stephen C
Seperti yang saya nyatakan dalam jawaban awal saya, ilmu komputer adalah disiplin matematika terapan yang berhubungan dengan desain dan aplikasi automata komputasi. Pemrograman bukan ilmu komputer. Perangkat lunak adalah sarana yang digunakan untuk mengimplementasikan automata komputasi tanpa mengeluarkan besi solder (program apa pun dapat diimplementasikan menggunakan logika sekuensial dan kombinatorial yang diberikan real estat yang cukup). Arsitektur von Neumann berbeda dari arsitektur yang mendahuluinya dalam hal itu adalah otomat tujuan umum yang berfungsi sebagai dasar untuk membuat automata tujuan khusus "lunak".
bit-twiddler
1
@ bit-twiddler - Definisi Anda terlalu sempit. Ini tidak termasuk banyak bidang akademik yang secara tradisional diklasifikasikan sebagai "ilmu komputer".
Stephen C
5

Ilmu Komputer adalah istilah yang saat ini mencakup banyak, banyak hal:

  • Pengrajin ahli melakukan pekerjaan untuk orang lain berdasarkan pengalaman mereka dengan alat-alat mereka (dan memiliki pekerja magang dll).
  • Alat ini menciptakan dan menciptakan alat-alat baru untuk pengrajin
  • Para peneliti mengembangkan paduan baru dan bahan lain - seperti plastik - untuk pandai besi alat.
  • Para ilmuwan teoritis mencari tahu bagaimana barang-barang bekerja sehingga pembuat paduan tahu cara alat mereka bekerja.

Perhatikan bagaimana semua di atas memiliki penamaan yang berbeda, bukan hanya "ilmuwan komputer". Perbedaannya hanya bahwa Ilmu Komputer terlalu baru untuk penamaan untuk diselesaikan.


sumber
Poin 2 lebih dari kelabang alat , tapi jawaban ini tepat :)
ZJR
1

Pertama-tama, itu adalah ilmu komputasi . Ini berkaitan dengan matematika di balik perhitungan.
Ada disiplin ilmu lain yang lebih berorientasi pada teknik.

Perbedaannya sama dengan disiplin ilmu dan teknik terkait. Salah satunya tentang akurasi, lainnya tentang presisi. Ilmu komputer adalah teori, yang lain adalah ilmu yang diterapkan pada masalah: cabang teknik.

CMR
sumber
1
MIT tidak setuju dengan Anda eecs.mit.edu
Armand
@Alison, perbaiki entri wiki ( en.wikipedia.org/wiki/Computer_science ) juga.
CMR
0

Ilmu komputer diterapkan dan matematika eksperimental .

philosodad
sumber
0

Ilmu komputer adalah cabang matematika terapan yang berkaitan dengan desain dan aplikasi automata komputasi. Rekayasa perangkat lunak adalah subset yang tepat dari ilmu komputer yang membahas desain dan konstruksi kode formal untuk arsitektur von Neumann. Arsitektur von Neumann hanya satu cara untuk mengimplementasikan mesin komputasi. Sebagai contoh, mesin yang digunakan untuk memecahkan pesan yang disandikan Enigma bukanlah mesin von Neumann.

Rekayasa perangkat lunak adalah disiplin praktisi. Ilmu komputer adalah disiplin yang berorientasi pada penelitian. Sebagian besar sarjana ilmu komputer berakhir dalam pengembangan perangkat lunak karena penelitian mengharuskan seseorang untuk memegang setidaknya gelar master, yang menegakkan keyakinan bahwa ilmu komputer adalah sertifikat pemrograman yang dimuliakan.

bit-twiddler
sumber
3
Saya tidak berpikir bahwa banyak ilmuwan komputer akademik akan menerima definisi CS sesempit ini.
Stephen C
0

Disiplin yang paling akurat disebut "Ilmu Komputer" adalah, di sebagian besar universitas yang saya periksa, ilmu terapan, mirip dengan disiplin teknik; jika Anda mengambil jurusan, Anda menerima "BS" atau "MS". Gelar CS Texas Tech ditawarkan oleh perguruan tinggi Teknik. Disiplin, seperti yang diajarkan, sebagian besar bersifat teoritis; Anda mempelajari konsep mesin Turing, DA / NDA, dan konsep dasar lainnya bahwa programmer "sehari-hari" tidak benar-benar harus terus berputar-putar di tengkorak mereka. Anda juga mendapatkan banyak matematika yang lebih tinggi; gelar Texas Tech CS, dan saya akan bertaruh banyak orang lain juga, cukup banyak Anda anak Matematika untuk pergi bersamanya. Untuk itu, sebagian besar jalur gelar universitas menambah sedikit aplikasi praktis tingkat rendah yang praktis; Anda belajar bahasa assembly, bahasa gen ke-3,

Namun, kebanyakan orang yang mencari nafkah bukanlah "ilmuwan komputer"; mereka, secara tegas, "pengembang perangkat lunak" atau (ketika Anda menambahkan dalam analisis / desain) "insinyur perangkat lunak"; pekerjaan itu jauh lebih sedikit tingkat perangkat kerasnya (meskipun Anda harus mengetahui dasar-dasarnya), lebih banyak analisis sistem, desain, dan pengkodean langsung. Banyak universitas memiliki jalur yang berbeda hanya untuk itu; di Texas Tech itu disebut "Manajemen Sistem Informasi" dan itu adalah gelar Bisnis (BBA / MBA). Lagu itu lebih ringan pada matematika yang lebih tinggi (apa yang harus Anda ketahui tentang aljabar dan perhitungan diferensial / integral dimasukkan ke dalam dua semester "matematika bisnis", dan tidak termasuk vektor / tensor kal, aljabar linier, dll.), Jauh lebih berat pada matematika keuangan (setiap semester statistik dan keuangan, dengan masing-masing dua akuntansi dan ekonomi). Lebih ringan pada sistem operasi, lebih berat pada teknologi "tumpukan" seperti database, server web, jaringan dan administrasi sistem umum. Lebih ringan pada bahasa tingkat rendah, desain sirkuit dan AI, lebih berat pada bahasa gen 3 dan 4, analisis sistem dan manajemen proyek. Saya mendapatkan gelar ini dari Texas Tech dan pada saat saya pergi saya sudah memiliki setidaknya satu semester masing-masing bahasa Jawa, VB, C # dan web (HTML / CSS / PHP), ditambah satu tahun OOA & D dan berbagai kursus lain dalam manajemen proyek TI.

Mana yang lebih baik di dunia nyata? Saya mendapatkan MIS BBA, kakak saya mendapatkan CS BS, dan kami berdua bekerja pada tingkat gaji yang kira-kira sama (menyesuaikan biaya hidup) sebagai insinyur perangkat lunak senior. Dia harus belajar banyak dari OOA & D yang dibutuhkan di tempat kerja, serta berputar dengan cepat di C # / Java dari pengetahuan dasar C ++. Untuk bagian saya, saya berharap saya memiliki dua semester studi algoritma konseptual yang dia dapatkan ketika saya terjebak dalam kursus manajemen bisnis (ya, SIM adalah gelar "Manajemen", tetapi saya telah menemukan bahwa 99% dari pengetahuan saya tentang bagaimana untuk mengelola dan tidak mengelola orang lain telah dipelajari melalui contoh).

KeithS
sumber