Apakah pengkodean itu penting? [Tutup]


9

Apakah pengkodean penting untuk menjadi ahli dalam ilmu komputer? Haruskah seseorang mengimplementasikan algoritma untuk mengetahuinya dengan baik?

Saya ingat idiom seorang profesor cs bahwa " Saya tidak pernah menulis kode"


32
Anda bertanya kepada sekelompok Pemrogram apakah pengkodean itu penting ... Anda mungkin tidak mendapatkan respons yang objektif.
Rachel

25
Dengan segala hormat terhadap idiom profesor Anda, jika dia tidak menulis kode, dia tidak memenuhi syarat untuk mengajar orang lain cara menulis kode. Jika pengajarannya murni teoretis, itu masih akan mendapat manfaat dari memiliki keterampilan pengkodean.
Robert Harvey

19
Apakah Anda akan mengambil pelajaran berenang dari seseorang yang tidak bisa berenang?
Steven A. Lowe

5
@ Sebelas A. Lowe: saya pikir profesor non-perenang mengajarkan fisiologi perairan, bukan berenang. Namun, jika dia tidak berenang, saya ragu dia tahu bagaimana perasaan narkosis nitrogen.
Javier

4
@Javier: lebih mungkin dia mengajar pembongkaran bawah air, namun bahkan belum disertifikasi SCUBA. Istilah teknis untuk orang-orang seperti itu (selain "profesor") adalah "poseur" ;-)
Steven A. Lowe

Jawaban:


27

Anda tidak akan benar-benar mengetahui algoritme dengan baik sampai Anda mengkodekannya.


3
ini belum tentu benar, orang dapat memahami suatu algoritma dan menerapkannya pada situasi atau masalah tanpa benar-benar mengkodekannya.
aggietech

10
@ Aggietech: Saya pikir kata kuncinya di sini adalah "baik."
Robert Harvey

2
@ Aggietech, Robert benar. Saya dapat menghapus algoritma, tetapi ketika saya benar-benar mencoba membuatnya bekerja, saya mencari tahu seberapa banyak saya harus mempelajarinya.

3
jika Anda berbicara tentang for-loop dan bubble-macam, maka itu bukan masalah besar, tetapi ada perbedaan besar antara membaca buku tentang algoritma genetika dan benar-benar memecahkan masalah dunia nyata dengannya
Steven A. Lowe

2
@ Seven, ya, kompleksitas ada banyak hubungannya dengan itu.

19

Pengodean tidak penting bagi profesor Anda, tetapi Anda harus ingat bahwa dia tidak dibayar untuk melakukan sesuatu. Dia dibayar untuk MENGATAKAN hal-hal (dan MENULIS hal-hal.)

Saya seorang mantan profesor matematika, jadi saya mengerti dinamika ini dengan baik.

Jika Anda ingin mengikuti jejaknya, dan menjadi ilmuwan komputer teoretis, maka ya, pengkodean kurang penting. Tetapi jika Anda melakukannya, ingatlah untuk menjaga kerendahan hati, mengetahui bahwa gaji Anda dibayar oleh sumber daya yang diperoleh oleh orang-orang yang memilih untuk melakukan sesuatu.


3
Suara pengalaman. Ini tentang ringkasan jabatan guru terbaik yang kurasa pernah kulihat.
TehShrike

1
Ya, dan saya akan menambahkan Anda perlu berlatih "lakukan" jika Anda akan mengajar orang lain untuk "melakukan" dengan baik.
Beth Whitezel

@ BitOff: Saya setuju, tetapi "jika" juga merupakan "hanya jika". Seorang profesor yang tidak pernah kode tidak memiliki pengembangan perangkat lunak pengajaran bisnis, tetapi ia mungkin sangat cocok untuk mengajar, katakanlah, teori kompleksitas. Dalam hal ini, apa yang dia ajarkan kepada siswa adalah bagaimana membuktikan teorema, jadi satu-satunya syarat adalah dia harus memiliki praktik membuktikan teorema (bukan coding).
ShreevatsaR

@ShreevatsaR Ya saya setuju. Dan saya sebenarnya tidak terlalu ketat pada kenyataan bahwa mereka banyak kode dalam praktek. Coder yang baik jarang menghasilkan guru yang baik. Jika guru tahu poin minggu mereka, mereka bisa menebusnya. Kami memiliki program lokal yang membawa orang-orang industri ke dalam kelas. Guru adalah ahli dalam mengajar, dapat membuat kode, dan tahu cara menarik informasi dari orang industri untuk kepentingan siswa.
Beth Whitezel

16

Ilmu Komputer tidak lebih tentang komputer daripada astronomi adalah tentang teleskop

- Edsger Dijkstra

Saya cenderung setuju.


2
Ok, tapi bagaimana ini berhubungan dengan pertanyaan?
Robert Harvey

2
"Apakah pengkodean penting untuk menjadi ahli dalam ilmu komputer?" Jika komputer tidak berhubungan bagaimana pengkodean fisik komputer menjadi penting?
ElGringoGrande

1
@Robert Harvey: Ilmu Komputer tidak secara eksplisit tentang komputer, dan banyak astronom menghabiskan sedikit waktu melihat melalui lensa kaca. Beberapa hanya menganalisis hasilnya. Setengah dari penemuan penting dalam pemrograman komputer telah diketahui bahkan sebelum komputer itu muncul.
Orbling

2
@Robert Harvey: Ilmu komputer bukan hanya tentang cara memprogram, ini adalah ilmu komputasi. Di luar penyandian biner murni Anda menggunakan bahasa, yang merupakan abstraksi, untuk menerapkan teori dan temuan ilmu komputer. Ada banyak ide dalam ilmu komputer (misalnya komputasi kuantum) yang tidak dapat disadari pemrograman sepenuhnya. Yang saya katakan adalah bahwa semua gagasan ilmu komputer dapat sepenuhnya dan elegan diungkapkan tanpa menggunakan bahasa pemrograman. Sebutkan satu yang tidak bisa.
ElGringoGrande

3
@Orbling: Sangat benar. Sebagai contoh, ingatlah bahwa Turing menciptakan gagasan tentang mesin Turing universal bahkan sebelum komputer elektronik pertama diciptakan. Apakah fakta bahwa dia tidak menulis banyak kode membuatnya menjadi ilmuwan komputer yang tidak kompeten?
mipadi

11

Jika Anda berbicara tentang menjadi akademisi Ilmu Komputer murni yang berspesialisasi dalam konsep-konsep Ilmu Komputer abstrak yang mendasar, maka tidak harus demikian.

Untuk membengkokkan analogi: ini seperti bertanya apakah setiap ilmuwan roket di NASA harus terbang di ruang angkasa untuk menjadi "ilmuwan roket yang baik". Tentu saja tidak. Menjadi astronot adalah bagian dari industri penerbangan luar angkasa, dan merupakan bagian yang sangat langsung, tetapi itu tidak berarti bahwa para ilmuwan darat tidak hanya sama pentingnya dengan cara mereka sendiri.

Yang mengatakan, itu mungkin ide yang baik untuk BERLAKU algoritma yang ia buat, jika tidak benar-benar menulisnya dalam bahasa pemrograman nyata. Dalam pengertian ini, Anda dapat menganggap desain algoritma sebagai cabang matematika.


1
Saya pikir itu adil untuk mengatakan bahwa semua ilmuwan roket di NASA memiliki landasan menyeluruh dalam ilmu roket, dan pengalaman langsung yang mendalam dengan teknik mesin dan listrik. Oh, dan mereka umumnya tahu cara menulis kode juga.
Robert Harvey

3
Saya akan berpikir bahwa mereka telah menghitung lintasan berkali-kali, tidak hanya berteori tentang bagaimana.

3
+1, saya akan menambahkan contoh lain - Anda tidak perlu memiliki pengalaman dalam pembuatan anggur untuk menjadi seseorang yang hebat (atau apa pun sebutan orang yang mencicipi anggur).
Jas

2
@ James: Analogi yang mengerikan. Ilmuwan komputer bukanlah penerima produk akhir. Mereka adalah pembuat anggur.
doppelgreener

1
@Axidos Tidak, tidak, mereka adalah petani anggur .
Mark C

9

Pengkodean tidak super penting untuk menjadi ilmuwan komputer sejati. Dan berpikir dalam kode dapat membatasi pemikiran ketika mereka berusaha mengembangkan konsep abstrak yang bermanfaat. Kebanyakan coders yang sangat baik tidak memiliki kecerdasan intelektual untuk menganalisis algoritma yang kompleks, atau mengembangkan konsep seperti bahasa pemrograman, pencarian canggih dan algoritma pengurutan, teori automata terbatas, teori komputasi terdistribusi, R-Trees, protokol toleransi kesalahan, protokol komunikasi yang andal, digital algoritma pemrosesan sinyal, teori kriptografi, analisis kinerja dan optimisasi, caching yang efisien, pengurangan peta, protokol keamanan yang dapat diandalkan, dll. Coder dan insinyur komputer yang hebat biasanya dapat menggunakan teori-teori ini dalam sistem yang mereka coba bangun dan lakukan dengan cukup efektif, tetapi itu benar-benar bidang insinyur sistem komputer atau pemrogram komputer.

Pengkodean sangat penting untuk menjadi pemrogram komputer. Memahami cara menyandikan konsep abstrak bermanfaat yang dihasilkan oleh para ilmuwan komputer ke dalam kode kerja juga berguna.

Satu masalah besar dalam ilmu komputer adalah bahwa mereka sering harus menemukan solusi untuk masalah matematika yang memiliki sedikit kegunaan dalam memecahkan masalah pemrograman saat ini. Bahkan jika mereka memberi kode solusi, tidak ada yang benar-benar dapat menggunakannya. Pikirkan tentang teori pemrosesan sinyal digital. Itu diciptakan oleh orang-orang seperti Fourier, Hilbert dan Shannon, tetapi aplikasi untuk masalah DSP terkomputerisasi tidak mungkin secara luas sampai sekitar 20 tahun yang lalu.

Masalah besar dalam pendidikan komputer adalah bahwa kebanyakan orang yang diajar oleh ilmuwan komputer tidak akan menjadi ilmuwan komputer. Tetapi terlalu banyak ilmuwan komputer tidak mendapatkan ini. Pengodean mungkin tidak penting bagi mereka, tetapi jika Anda berada di kelas mereka, itu hampir pasti akan menjadi penting bagi Anda.

Masalah besar lainnya dalam pendidikan komputer adalah bahwa banyak ilmuwan komputer sejati tidak memiliki pengalaman industri untuk menjadi berguna dalam pengajaran pengembangan perangkat lunak. Mereka pada dasarnya mencoba mengajarkan sesuatu yang mereka benar-benar tidak tahu. Itu menyebabkan mereka kehilangan kredibilitas. Hal-hal yang penting dalam pengaturan industri tidak sering mendaftar pada beberapa ilmuwan komputer ini.

Panjang dan pendek, pengkodean penting bagi kebanyakan orang yang menjadi "ilmuwan komputer" karena kebanyakan dari mereka akan menjadi programmer komputer dan insinyur sistem komputer.


Jawaban luar biasa, langsung ke inti permasalahan. Masalahnya adalah, Anda perlu mempelajari keduanya: Ilmu Komputasi dan Rekayasa Perangkat Lunak yang relevan dengan industri. Sebagian besar universitas mengajar satu lebih baik daripada yang lain, biasanya yang pertama - tidak terlalu mudah untuk mencapai yang terakhir karena universitas pada dasarnya adalah lembaga penelitian, yang mempromosikan yang pertama dan tidak ada hubungannya dengan yang terakhir. Ini adalah masalah di sebagian besar bidang praktis.
Orbling

3

Tergantung pada subbidang tempat profesor berada.

Siapa pun yang kompeten dalam analisis numerik mungkin adalah jagoan Fortran. Setiap profesor AI akan kode dalam Lisp atau Prolog atau sesuatu seperti itu.

Di beberapa bidang yang lebih matematis, sebenarnya tidak perlu kode. Aku masih sedikit curiga.


2

Kedengarannya seperti lebih dari jenis matematika diskrit pria ... hanya ke matematika dan teori di balik ilmu komputer. Ambil apa yang dikatakan para profesor ini dengan sebutir garam.


5
Saya penggemar matematika dan pecandu algoritme. Saya selalu menikmati coding. Namun, algoritma berada di belakang pengkodean. 1 pena dan 1 kertas sudah cukup untuk algoritma dan juga teori perhitungan saya pikir. Apa yang saya lakukan saat ini hanya berpikir dan menulis algoritma tetapi tidak coding
hilal

5
Ambil apa yang dikatakan profesor mana pun dengan sebutir garam. Jika dia seorang pria matematika diskrit, anggap serius ketika dia berbicara tentang matematika diskrit, bukan ketika dia berbicara tentang pemrograman atau rekayasa perangkat lunak.
David Thornley

1
Matematika diskrit orang adalah yang paling penting di lapangan, teori diimplementasikan oleh coders, tidak perlu diterapkan untuk dibuktikan benar. Sedikit garam memang.
Orbling

@Orbling Dan ambil apa yang orang-orang yang program katakan (kelompok luas) dengan dosis penilaian yang sama dan akal sehat.
Mark C

@ Mark C: Ya, saya akan mendorong semua orang untuk mengambil semua yang dikatakan oleh siapa pun dengan dosis itu.
Orbling


2

Anda bisa lolos dengan memahami teori saja tetapi saya selalu menemukan saya mengerti algoritma dan 1000x lebih baik setelah mengkodekannya (Bubble sort vs Quicksort misalnya, itu bagus untuk mengetahui Big-O tetapi melihatnya dalam praktek dengan data besar -set memberi Anda apresiasi dunia nyata tertentu untuk mengukur kompleksitas komputasi).

Satu hal menarik yang saya temukan adalah semakin Anda mempelajari aspek teoritis dari ilmu komputer, semakin mudah pengkodean. Pada titik tertentu Anda berhenti memikirkan hal-hal dalam bahasa tertentu tetapi lebih melihatnya sebagai konsep yang lebih luas dari pengetahuan komputer.


2

Ini seperti bertanya apakah semua profesor bahasa Inggris harus mampu menulis film, serial TV, novel, drama, dan puisi di benak saya. Demikian pula, bayangkan seorang profesor Matematika yang tidak pernah menggunakan angka untuk ide yang sama anehnya. Artinya, ada beberapa elemen dasar yang memberikan coding beberapa kepentingan untuk dapat mengajarkan Ilmu Komputer dasar. Dengan demikian profesor harus mengetahui sintaksis bahasa dasar dan bagaimana menulis program secanggih kursus yang diajarkan profesor. Jika profesor mengajar tentang desain kompiler dan tidak pernah menulis kompiler sebelumnya, ini akan menjadi masalah besar. Bayangkan seorang koki memasak kue yang belum pernah dimasak atau makan kue sebelumnya. Aye carumba.

Sementara saya dapat melihat beberapa keuntungan untuk mengimplementasikan suatu algoritma untuk mengetahuinya, saya ragu itu adalah persyaratan. Lagi pula, orang bisa bertanya-tanya seberapa jauh lubang kelinci implementasi dalam memahami bagaimana suatu algoritma diimplementasikan? Misalnya apakah seseorang harus mengambil algoritma apa pun dan mengimplementasikannya di bawah berbagai paradigma seperti pemrograman prosedural, berorientasi objek, dan fungsional untuk benar-benar mengetahuinya? Apakah mereka harus tahu bagaimana kompiler menerjemahkan semua kode dan memindahkan bit pada tingkat elektron-demi-elektron untuk menjadi agak bertele-tele tentang hal itu.


"Saya tidak pernah kode," memang memiliki implikasi mengandung masa lalu serta present tense dengan cara sekalipun. Mungkin juga ada asumsi implisit "pengkodean" sebagai hal yang rendah di bawah profesor untuk cara lain untuk melihat pernyataan yang dapat membawa nada agak negatif untuk itu yang mungkin tidak berjalan dengan baik di beberapa kalangan.


3
Profesor bahasa Inggris harus tahu cara menulis skrip film jika mereka mengajar orang lain cara menulis skrip film. Tetapi semua profesor bahasa Inggris tentu harus mampu menulis tesis yang sangat bagus, jika bukan buku yang sebenarnya.
Robert Harvey

2
@Robert Harvey: Profesor OP tidak mengatakan dia tidak bisa kode, hanya saja dia tidak. Dia bisa menjadi ilmuwan komputer teoretis yang menghabiskan sebagian besar waktunya untuk meneliti. Seperti yang ditunjukkan JB King, selama dia tidak mengajar, katakanlah, desain kompiler atau rekayasa perangkat lunak, dia bisa sangat berpengalaman dan kompeten di bidangnya.
mipadi

@Robert Harvey: Saya pikir @mipadi ada benarnya, profesor hanya berkata "Saya tidak pernah kode" , bukan bahwa ia tidak mampu.
Orbling

@JB King, @Orbling: saya berani bertaruh bahwa kutipannya adalah terjemahan, jadi jangan terlalu menganalisanya.
Javier

@ Javier: Bisa jadi, dalam hal ini akan menjadi dipotong lebih tidak jelas.
Orbling

2

Profesor Anda mungkin benar sedikit, untuk menjadi profesor Anda tidak perlu kode, tetapi tahu banyak tentang teorinya. Tapi itu tidak akan bekerja di luar batas universitas.


1

Meskipun menjadi pengembang perangkat lunak profesional, saya mendapat gelar di bidang Teknik Mesin.

Anda bisa menjadi perancang mekanis yang baik dengan sangat sedikit pengalaman dalam pembuatan dan pemesinan komponen, menyerahkan pekerjaan itu kepada teknisi. Tetapi mengetahui cara membuat dan membuat bagian-bagian mesin akan membuat Anda menjadi insinyur yang jauh lebih baik, karena Anda dapat memperkirakan kesulitan dalam membuat dan merakit apa pun yang Anda rancang.

Hal yang sama berlaku untuk perangkat lunak. "Coder" adalah masinis atau teknisi, sedangkan insinyur perangkat lunak, yah, insinyur. Untuk banyak tempat, satu orang melakukan kedua pekerjaan. Bukan tidak mungkin, dan untuk beberapa masalah yang sangat abstrak, posisi "hanya rekayasa" mungkin berfungsi.

Tetapi untuk sebagian besar, sama sekali tidak ada manfaat dari menolak kode.


2
Tetapi, seperti yang Anda katakan, Anda adalah insinyur mesin , dan Anda berbicara tentang rekayasa perangkat lunak . Insinyur membangun barang. Tetapi profesor yang dimaksud mengajarkan ilmu komputer .
mipadi

1

Kecuali jika Anda merenungkan dan mengakhiri masalah penghentian, selalu ada gunanya pengkodean di setiap aspek Ilmu Komputer.

Satu-satunya kelas CS yang saya ambil tanpa pemrograman adalah teori. Saya membayangkan ada banyak fisikawan di luar sana yang mengatakan, "Saya tidak pernah bereksperimen" tetapi mereka mungkin juga yang mengatakan, "Saya tidak pernah menemukan apa pun". Dan saya akan terkejut jika mereka peduli.


1
Dalam gelar Komputasi saya, (dengan universitas di 10 besar internasional, jadi bukan sesuatu yang timpang), saya akan mengatakan setidaknya sepertiga dari kelas saya tidak memiliki pemrograman di dalamnya sama sekali. Komputasi jauh lebih dari sekadar kode.
Orbling

Ok, nampaknya saya juga masuk ke sepuluh universitas terbaik, kita bahkan mungkin telah pergi ke universitas yang sama dan mengambil kelas yang berbeda berdasarkan suka atau tidak suka kita sendiri atau mendapatkan profesor dari satu sejenisnya atau yang lain secara acak.
Peter Turner

0

Sebagai mahasiswa Ilmu Komputer saya pikir pada awalnya lebih baik untuk memahami konsep yang melibatkan pengembangan perangkat lunak. Setelah Anda mempelajari ide di balik perangkat lunak dan bagaimana cara berinteraksi dengan komputer, sekarang saatnya untuk mulai menyandikan dan menangani masalah implementasi tertentu.

Ini seperti "Pengecualian Perangkat Lunak", pada awalnya Anda hanya berurusan dengan mereka karena Anda melakukan sesuatu yang tidak diizinkan untuk dilakukan. Kemudian ketika Anda mempelajarinya, mulailah melakukan hal yang sama dengan kode Anda agar lebih verbose.

Yah saya berpikir bahwa orang-orang yang tidak peduli dengan konsep-konsep seperti programmer yang menggunakan Pengecualian sebagai alur kerja normal dalam aplikasi mereka. Mereka tahu BAGAIMANA tetapi tidak benar-benar mengerti MENGAPA.


-6

Saya punya idiom lain untuk profesor Anda:

Mereka yang bisa, melakukan, mereka yang tidak bisa, mengajar.

imo, bicara itu murah. Siapa pun dapat terus berceloteh tentang 'teori' dan menyebutnya 'ilmu komputer'. Tetapi sampai dipraktikkan, teori tidak terlalu berguna karena tidak ada cara untuk memvalidasinya. Aku akan mengambil pendapat prof tentang sesuatu yang jauh lebih serius jika saya tahu dia benar-benar memecahkan masalah tertentu dalam kode daripada jika dia hanya memuntahkan 'teori' yang mungkin atau mungkin tidak memiliki bukti pendukung untuk mendukung sudut pandangnya.


6
Einstein, Aristoteles, Webster, Ayn Rand, Thoreau, Konfusius, dan Booker T. Washington adalah guru. Pernyataan yang tidak berpendidikan.
JeffO

4
-1 Untuk komentar yang sangat menghina guru. Oft mengutip saya tahu, tetapi selalu konyol. Pernyataan asli oleh George Bernard Shaw adalah "Dia yang bisa, tidak. Dia yang tidak bisa, mengajar." dari Man and Superman, 1903 - ia juga berkata: "Bagi saya satu-satunya harapan keselamatan manusia terletak pada pengajaran." dan adalah salah satu pendiri London School of Economics (LSE), jadi Anda menilai pandangannya.
Orbling

2
Einstein tidak pernah melakukan eksperimen fisik dalam hidupnya - dia menggambarkan beberapa eksperimen pemikiran, yang dilakukan oleh orang lain dan (dengan satu pengecualian) keluar persis seperti yang dia prediksi. Apakah Anda akan mengatakan bahwa Einstein tidak memiliki "prestasi substansial di luar kelas"? Mengapa Anda menganggap bahwa hanya karena profesor belum menerapkan apa-apa langsung dapat digunakan oleh pengguna akhir, dia belum, katakanlah, meneliti algoritma baru yang sedang digunakan oleh programmer di lapangan? Bahkan, Anda tampaknya bahkan berasumsi bahwa tugas profesor adalah mengajar siswa cara membuat kode !
ShreevatsaR

3
Bung, banyak profesor ilmu komputer saya (di MIT) yang luar biasa dan telah memberikan kontribusi yang sangat besar bagi masyarakat, dan mereka melakukan "melakukan hal-hal di bidang mereka" - banyak! Tetapi bidang mereka tidak ada hubungannya dengan pengkodean, dan mereka paling jarang mengkode, paling tidak sama sekali. (Serius, apakah Anda mengharapkan seseorang yang mengerjakan perhitungan kuantum untuk menulis kode untuk komputer kuantum yang bahkan tidak ada?) Anda tampaknya memiliki pandangan yang sangat sempit tentang ilmu komputer. (Ingat itu ilmu komputer , bukan teknik .)
ShreevatsaR

2
@GrandmasterB: Jika seorang profesor sci berfokus pada teori perhitungan, sangat mungkin ia jarang harus menulis kode. Itu tidak berarti dia tidak melakukan apa pun di bidangnya - dia kemungkinan menerbitkan makalah tentang teori komputasi! Anda menggabungkan pemrograman dengan ilmu komputer .
mipadi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.