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"
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"
Jawaban:
Anda tidak akan benar-benar mengetahui algoritme dengan baik sampai Anda mengkodekannya.
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.
Ilmu Komputer tidak lebih tentang komputer daripada astronomi adalah tentang teleskop
- Edsger Dijkstra
Saya cenderung setuju.
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.
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.
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.
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.
Saya harus mengatakan "Logika itu penting"
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.
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.
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.
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.
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.
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.