Apakah ungkapan "tidak pernah menemukan kembali roda" cocok untuk siswa?

115

Saya menemukan diri saya terus-menerus berlari ke ungkapan ini "jangan menemukan kembali roda" atau "tidak pernah menemukan kembali roda" ketika saya mengajukan beberapa pertanyaan pada SO. Mereka memberi tahu Anda untuk menggunakan beberapa kerangka kerja atau paket yang ada. Saya tahu dari mana sikap ini berasal karena tidak bijaksana membuang waktu untuk sesuatu yang sudah diselesaikan orang lain. Atau begitukah?

Sebagai seorang siswa, saya menemukan dengan menggunakan beberapa kode yang ditulis orang lain untuk menyelesaikan masalah saya, saya tidak dapat belajar sebanyak yang saya inginkan, dan saya memperoleh lebih sedikit wawasan. Dan kadang-kadang saya berpikir kalimat itu terutama untuk programmer yang bekerja menghadapi tenggat waktu dan bukan untuk siswa seperti saya.

Apakah seburuk itu untuk "menemukan kembali roda"? Mungkin saya salah memikirkannya? Mungkin ada cara saya bisa menghindari menciptakan kembali roda dan pada saat yang sama belajar banyak?

Gnijuohz
sumber
51
Anda tidak akan mendapat banyak manfaat dari bergabung dengan gym jika Anda meminta orang lain untuk mengangkat beban untuk Anda (kecuali Anda belajar menjadi palungan).
Charles E. Grant
82
Tidak apa-apa untuk menemukan kembali roda ketika Anda akan membangun roda. Saat Anda sedang membangun rumah, ide yang bagus untuk mengasumsikan pembuat roda tahu apa yang mereka lakukan lebih baik daripada Anda.
zzzzBov
22
Anda setidaknya perlu mencoba membuat roda! Kalau tidak, Anda tidak tahu mengapa Anda harus menggunakan prefabrikasi.
59
Tidak pernah tepat untuk menyatakan yang absolut. :)
CVn
2
Mungkin baik untuk menemukan kembali roda ketika Anda membuat kode yang sangat optimal. Perpustakaan standar sangat berguna, tetapi sering kali memungkinkan untuk membuat sesuatu yang kurang umum tetapi lebih cepat.
Leo

Jawaban:

126

Saya pikir Anda membuat poin yang bagus. Sebagian besar programmer di situs ini cenderung bekerja profesional yang tujuannya cukup banyak untuk menciptakan perangkat lunak berkualitas secepat mungkin. Menciptakan kembali roda gagal tujuan ini pada dua hitungan.

  1. Menulis ulang kode yang ada adalah usaha yang sia-sia yang dapat digunakan pada bagian unik dari sistem Anda dan membuat proyek memakan waktu lebih lama dari yang diperlukan.
  2. Versi pertama dari kode apa pun lebih cenderung memiliki masalah bug / tidak terduga. Sebagian besar perpustakaan dan komponen yang dapat digunakan kembali telah diuji pertempuran dan ditambal beberapa kali. Jika Anda menemukan kembali algoritma hashing atau mencoba membuat RDBMS Anda sendiri (kecuali jika itu adalah proyeknya) lebih sering daripada tidak, Anda akan berakhir dengan hasil yang lebih rendah.

Yang mengatakan, dalam lingkungan akademik tujuannya adalah untuk belajar , bukan memberikan perangkat lunak dengan anggaran. Menemukan kembali sebuah roda untuk memahami bagaimana kerja roda atau poros adalah cara yang bagus untuk mencapai tujuan itu. Itu sebabnya banyak kurikulum pemrograman menyertakan kelas untuk membangun kompiler ketika sangat sedikit programmer yang pernah bekerja perlu melakukan itu.

JohnFx
sumber
37
Saya setuju dengan ide untuk memahami bagaimana hal-hal bekerja, meskipun saya juga berharap sekolah pemrograman mengambil beberapa waktu dalam kurikulum mereka untuk belajar bagaimana menggunakan perpustakaan pihak ketiga dan mengapa Anda harus. Saya terus-menerus menemukan programmer dan pengembang kapasitas profesional yang tidak dapat melakukan ini dan akhirnya menciptakan kembali roda.
Spoike
3
poin bagus tentang kompiler
Chani
1
Saya pikir belajar untuk tidak menemukan kembali roda lebih penting. Ada banyak hal yang dapat Anda lakukan yang tidak melibatkan menciptakan sesuatu yang sudah dibuat.
Thomas Bonini
@ Krelp Ketika seseorang adalah seorang siswa, konsep adalah bagian yang paling penting. Banyak profesor menggunakan contoh kode untuk memungkinkan teori dan aplikasi jembatan. Itu adalah jenis program yang akan menemukan kembali perpustakaan tetapi untuk memastikan bahwa siswa memahami materi.
Jetti
2
Sebagai seorang siswa, Anda perlu menemukan kembali roda untuk mengetahui mengapa ia berjalan secepatnya, tetapi sebagai seorang profesional Anda perlu menggunakan roda komersial agar Anda dapat melaju secepat mungkin. Sayangnya, ternyata, SO terutama adalah situs untuk para profesional, bukan untuk siswa (bukankah mereka melarang [pekerjaan rumah] untuk sementara waktu?)
Tacroy
19

Jawabannya sangat tergantung pada konteksnya. Jika Anda ingin mendapatkan pemahaman yang lebih mendalam tentang struktur data dengan mencoba tangan Anda dalam mengimplementasikan tabel hash, "reinventing the wheel" adalah hal terbaik yang dapat Anda lakukan. Jika Anda belajar cara menulis kompiler dan membutuhkan tabel simbol, menerapkan peta hash Anda sendiri daripada menggunakan kembali dari perpustakaan standar adalah buang-buang waktu Anda.

dasblinkenlight
sumber
17

Sebagai seorang siswa, saya berharap Anda memulai pendidikan pemrograman Anda dengan terlebih dahulu menyalin satu atau dua roda , kemudian belajar memodifikasi roda untuk melihat cara kerjanya, dan untuk memahami segala batasan. Kemudian, Anda bahkan mungkin membuat roda baru Anda sendiri untuk melihat apakah Anda dapat meningkatkan desain, atau untuk menunjukkan kepada pengawas kursus Anda pemahaman Anda tentang konsep-konsep yang terlibat.

Namun, sebagai seorang profesional yang bekerja, saya berharap Anda telah mempelajari roda mana yang digunakan untuk menyelesaikan masalah apa pun, dan kapan mungkin tepat untuk memodifikasi roda yang sudah ada jika hanya sebagian menyelesaikan masalah Anda. Jika Anda tidak dapat menemukan roda di mana pun, maka mungkin Anda telah mengidentifikasi ceruk pasar, atau Anda belum menjelajahi cukup jauh, dan Anda akan perlu cukup berpengalaman untuk mengetahui kapan akan tepat untuk membuat roda baru Anda sendiri.

Masalah kapan tepat untuk menemukan kembali suatu solusi adalah kompleks, dan itu membutuhkan waktu dan pengalaman untuk belajar ketika mungkin lebih baik untuk membuat versi baru dari sesuatu yang telah dilakukan sebelumnya. Ketika Anda hanya mengembangkan untuk waktu yang singkat, lebih baik menggunakan solusi yang ada, dan meminta mentor Anda untuk menyarankan opsi. Ketika Anda memiliki tenggat waktu yang ketat dan banyak ketidakpastian dalam suatu proyek, menggunakan sesuatu yang sudah ada bisa menjadi penghemat waktu yang sangat besar, dan selalu menjadi pilihan pertama Anda. Anda selalu dapat menolak untuk menggunakan solusi lain nanti jika memang tepat untuk melakukannya, bahkan jika ini berarti akhirnya kembali untuk menemukan kembali roda Anda .

S.Robins
sumber
12

Menjadi seorang guru atau pemrograman, saya terus-menerus berjuang dengan sisi berlawanan dari masalah: kapan saya meminta siswa untuk menemukan kembali roda?

Ambil situasi sederhana ini: kami sedang mempelajari algoritma penyortiran, dan saya menetapkan tugas untuk menulis sebuah program yang mengurutkan beberapa data; atau bekerja pada fungsi tanggal, dan saya meminta kalender.

Untuk keduanya, ada banyak perpustakaan siap pakai dan fungsionalitas yang tersedia; tetapi saya ingin para siswa menghindari mereka, dan mengembangkan versi mereka sendiri dari algoritma penyortiran atau kalender.

Sekarang ambil yang lain ini: Saya menetapkan tugas untuk menulis aplikasi sederhana untuk, katakanlah, menjadwalkan janji temu. Ini mungkin membutuhkan penyortiran, dan kalender, dan banyak lagi. Kali ini "jangan menemukan kembali roda" berlaku: Saya tidak ingin siswa bergumul dengan masalah yang diselesaikan, tetapi kumpulkan fungsionalitas yang ada untuk mendapatkan hasil.

Kesulitan saya adalah, seberapa banyak yang diminta Anda untuk membuat ulang yang ada, yang membuat Anda belajar, dan memiliki keuntungan dari masalah yang sudah diatasi dengan kesulitan yang dapat saya gunakan untuk membuat Anda berlatih kerajinan, dan berapa banyak yang harus saya tempatkan Anda dalam pengaturan dunia nyata, di mana roda tidak diciptakan kembali?

Untuk menjawab pertanyaan Anda secara lebih langsung, dua saran:

  • jika seorang guru memberi tahu Anda untuk "tidak menemukan kembali roda", mereka mungkin mengatakan demikian karena mereka telah merancang masalah mereka seperti itu. Mungkin mereka ingin Anda mencoba perpustakaan, berjuang dengan implementasi algoritma orang lain, daripada menulis sendiri - ada pembelajaran di dalamnya juga, dan menciptakan kembali itu menarik tetapi melewatkan intinya.
  • jika Anda memiliki terlalu banyak latihan menyusun panggilan perpustakaan, daripada mengembangkan algoritme, Anda dapat mengajukan pertanyaan keseimbangan antara guru-guru ini dengan aktivitas - sorot yang belum pernah Anda minta untuk menulis algoritme Anda sendiri, misalnya mengurutkan dan menggabungkan. Komunikasi tidak akan pernah salah.
boisvert
sumber
6

Praktek Saya ragu 1000 baris pertama dari kode yang ditulis oleh siapa pun sangat unik.

Perluas perangkat Anda Menggunakan kerangka kerja memiliki manfaat lebih ketika Anda memahami apa yang dilakukannya (Sebaris sampai Anda bisa melakukannya sendiri.) Sehingga Anda tahu bagaimana menerapkannya.

Memahami "Roda" Menggunakan roda yang dibangun dengan buruk dan usang atau yang tidak cocok, tidak ada alasan untuk secara buta menempel pada aturan praktis ini. Anda mungkin kekurangan waktu, dana, keahlian, jadi Anda hanya menambalnya dan menyelesaikan perjalanan.

Ada beberapa kemutlakan .

JeffO
sumber
1
+ Khusus untuk poin terakhir.
Mike Dunlavey
1000 baris pertama kode yang ditulis siapa pun cenderung sangat unik dalam hal kesalahan kreatif.
leftaroundabout
@leftaroundabout - Saya kira saya harus membatasi pernyataan itu ke baris kode yang dapat dikompilasi.
JeffO
3

Siswa tidak memiliki anggaran uang untuk menyelesaikan tugas, tetapi ada tanggal jatuh tempo yang harus dipertimbangkan.

Sebagai seseorang yang masih mahasiswa hingga saat ini, saya pikir jumlah reinventing roda yang sesuai tergantung pada kelas apa Anda melakukan tugas. Anda tidak ingin menulis perpustakaan soket Anda sendiri untuk pengembangan web dan kelas desain (jika Anda bisa melakukannya dan menyerahkan tugas tepat waktu, apa yang Anda lakukan mengambil kelas yang mudah?), Tetapi Anda akan hilang banyak jika itu adalah tugas untuk kelas jaringan. Tentu saja, profesor biasanya mempertimbangkan hal-hal ini ketika mereka sedang membuat tugas, jadi Anda sebagian besar akan melakukan pekerjaan yang berhubungan dengan kelas, tetapi kadang-kadang, mengetahui apa yang tidak boleh Anda tulis sendiri juga penting.

Yang mengatakan, begitu Anda meninggalkan sekolah, sulit untuk menemukan waktu untuk membangun hal-hal yang sudah ada. Manfaatkan setiap kesempatan yang Anda dapatkan saat Anda bisa, saat Anda masih di sekolah.

Jika Anda mendapatkan "Gunakan pustaka X / kerangka kerja Y" di SO, awali pertanyaan Anda dengan "Saya menulis X sendiri untuk mempelajari lebih lanjut tentang itu"

Jay
sumber
kata pengantar pertanyaan Anda dengan "Saya menulis X sendiri untuk mempelajari lebih lanjut tentang hal itu". Ini. +1.
boisvert
2

Jika Anda tidak memiliki tenggat waktu yang ditetapkan untuk proyek Anda, IMO, lebih baik untuk menciptakan kembali roda. Jika Anda tidak memiliki pekerjaan, atau hanya ingin belajar memprogram, bukan untuk menghasilkan uang pemrograman, apa gunanya menggunakan pintasan yang tidak akan menjadikan Anda seorang programmer yang lebih baik, yang hanya akan menyelesaikan proyek Anda lebih cepat? Meskipun ini benar, ini jelas merupakan keterampilan yang baik untuk mengetahui cara menggunakan perpustakaan, kerangka kerja, dan kode orang lain.

Billjk
sumber
Ini adalah ide di balik konsep Code Katas, menulis ulang kode berulang-ulang untuk meningkatkan dan belajar darinya. Saya akan mengatakan bahkan di tempat kerja menulis ulang kode Anda berulang kali adalah baik, dan mampu menerapkan banyak patters jika Anda harus lebih baik.
Bill K
2

Dalam kehidupan nyata, roda diciptakan kembali berulang kali. Jika kita mencari alasannya, kita mungkin menemukan beberapa wawasan seperti ketika kita perlu menemukan kembali roda dalam pemrograman.

Sejak zaman Sumeria, banyak hal telah berubah:

  • Bahan yang digunakan untuk membangun roda: dari batu, kayu, logam, karbon, ...
  • ukuran benda yang membutuhkan roda - dalam ukuran nanometer untuk instrumen medis dan roda untuk menghasilkan batu bara cokelat, ukuran 100m
  • lingkungan produksi - buatan tangan, atau produksi industri
  • ketepatan roda yang dibutuhkan
  • Situasi yang tepat di sekitar roda Anda. Mungkin ada roda yang sempurna untuk pekerjaan Anda, tetapi mungkin dipatenkan.
  • Bersinar dan poles untuk roda Anda. Cadillac mungkin layak mendapatkan roda selain VW Golf.
  • Roda optimal untuk kereta dorong bayi tergantung pada banyak parameter: Ukuran dan berat kereta dorong (ditambah bayi / bayi), keadaan iklim, harga sumber daya untuk minyak atau karet alam, mesin untuk membuat roda dan pengrajin, tersedia untuk produksi. Diucapkan singkat: Ekonomi dunia.

Bagaimana itu diterjemahkan ke dunia perangkat lunak? Baik,

  • mungkin ada server web, tetapi sayangnya itu ditulis dalam PHP. Anda lebih suka memilikinya dalam bahasa yang Anda fasih
  • algoritma pengurutan mungkin terlalu besar untuk 10 elemen, tetapi tidak meningkatkan hingga 1T elemen
  • Anda mungkin membutuhkan solusi yang dihasilkan sendiri oleh program kedua
  • presisi paling sering merupakan pertanyaan digital dalam bidang perangkat lunak, jika suatu algoritma mengurutkan daftar itu diurutkan - tidak sebagian besar diurutkan. Tetapi di samping kinerja, ukuran kode, penggunaan memori atau pembatasan lainnya dapat terjadi
  • Paten tidak perlu penjelasan lebih lanjut, saya kira.
  • Tampilan dan nuansa adalah alasan konstan untuk menciptakan kembali sesuatu - pikirkan dropDownList (ComboBox).
  • Situasi ekonomi global dapat memengaruhi roda perangkat lunak Anda: apakah itu roda cloud, roda Sumber Terbuka, roda Browser, atau roda App?
  • Dan tentu saja alasan paling terkenal untuk membuat roda sendiri: Anda suka mempelajarinya.
Pengguna tidak diketahui
sumber
2

Saya seorang siswa yang baru berpendidikan. Di sekolah kami 'belajar' asp.net dan C #, selama 2 tahun pendidikan, kami tidak pernah mencoba membuat sistem email, sistem login, atau CMS kami sendiri. Semuanya hanya menyeret, dan menjatuhkan kontrol ke tampilan desain .

Kami mulai 102 siswa, 23 selesai. 4 orang punya pekerjaan. Alasannya?: Keempat orang itu (termasuk saya) memang tahu cara memprogram sebelum kami benar-benar memulai pendidikan.

Sisa orang hilang. Karena kita tidak pernah 'menciptakan kembali roda'. Kami tidak pernah tahu bagaimana kode itu bekerja. Cukup mudah untuk membangun sistem login penuh, dengan manajemen pengguna - Tetapi siswa dari pendidikan saya, tidak tahu bagaimana cara melakukannya. Karena mereka tidak tahu bagaimana sistem login sebenarnya bekerja.

Saya merasa sedih, bahwa pada titik tertentu, sebenarnya terbuang 2 tahun, tidak belajar apa-apa. - Saya berharap, bahwa para guru di seluruh dunia, berkata: Ya, kami tahu ada kerangka kerja, di mana kodenya ada, Anda dapat menggunakannya dalam kehidupan nyata .. Tetapi pada pendidikan ini Anda akan belajar bagaimana melakukan pemrograman ..

Banyak pendidikan pemrograman sangat pendek, sehingga pendidikan perlu mencakup banyak hal dalam waktu itu. Saya pikir akan lebih baik jika daftar hal-hal dipotong menjadi setengah, dan menghabiskan lebih banyak waktu untuk pemrograman. Orang dapat 'menciptakan roda jenis baru' jika mereka tahu cara membangun 'roda' yang normal. Orang-orang tidak bodoh jika mereka memiliki sedikit pengetahuan, tetapi Anda tidak dapat meminta seorang pria yang tidak tahu apa-apa tentang mobil, untuk membuat mobil .. Tetapi meminta seorang pria yang tahu cara membuat sepeda, akan jauh lebih mudah dengan benar-benar membangun mobil.

Zerpex
sumber
1

Itu benar-benar tergantung pada apa yang Anda lakukan. Jika Anda mencoba memahami roda, itu ide yang baik untuk menciptakannya sendiri. Namun jika Anda mencoba memahami mobil, menciptakan kembali roda atau mesin pembakaran internal umumnya boros dan mengganggu.

Jadi misalnya, ketika Anda tertarik untuk memahami bagaimana indeks pencarian teks lengkap dapat bekerja, itu ide yang baik untuk mencoba untuk roll Anda sendiri. Jika Anda mencoba membangun aplikasi untuk manajemen dokumen, lebih baik menggunakan kembali perpustakaan yang sudah ada, karena sebagian besar pekerjaan Anda adalah mendapatkan arsitektur aplikasi dan pengalaman pengguna dengan baik sekaligus.

back2dos
sumber
1

Ya, pantas untuk memberi tahu siswa untuk tidak menemukan kembali kemudi. Tetapi perlu ada pemahaman yang jelas tentang apa artinya bagi seorang siswa: tulis apa yang cocok dengan tugas itu. Itu tidak berarti jika tugasnya adalah untuk menulis gelembung, Anda menyalinnya dari Wikipedia, juga tidak berarti menggunakan array.sort atau yang setara jika kerangka kerja atau bahasa Anda menyediakannya. Tetapi setelah Anda membahas berbagai algoritma penyortiran, telah menulis gelembung Anda sendiri dan quicksort, jangan repot-repot menulis ulang untuk setiap tugas baru, gunakan penyortiran bawaan atau apa yang Anda tulis, jangan lakukan hal yang sama lagi .

Menemukan kembali roda adalah tentang tidak membuang-buang waktu, yang sama berlaku untuk siswa seperti halnya bagi para profesional - perbedaannya terletak pada apa yang ada tujuan. Siswa harus belajar, jadi sesuatu yang tidak memajukan pemahaman mereka, adalah buang-buang waktu - setelah Anda menulis satu gelembung, Anda tahu apa fungsinya, Anda tahu mengapa Anda tidak ingin menggunakannya pada set besar, dan menulis ulang lagi dan lagi adalah buang-buang waktu. Anda tidak akan belajar sesuatu yang baru pada penulisan ulang ke-25.

Untuk siswa, itu tidak berarti tidak menulis apa yang telah ditulis orang lain, itu berarti jangan ulangi apa yang sudah Anda kuasai - waktu itu bisa lebih baik dihabiskan untuk apa yang belum Anda kuasai.

jmoreno
sumber
Kecuali jika penulisan ulang ke-25 adalah praktik untuk beberapa bahasa pemrograman yang baru Anda pelajari.
leftaroundabout
1

Banyak pemikiran dan upaya telah dilakukan untuk menciptakan roda. Sarannya adalah "bukan untuk menciptakan kembali roda" tetapi Anda dapat melanjutkan dan merekayasa balik roda dan memahami mengapa hal-hal tertentu dilakukan dengan cara yang dilakukan. Setelah ini, Anda dapat mencoba mengimplementasikan roda dengan cara Anda sendiri yang mungkin menghasilkan salah satu dari tiga tujuan logis.

  1. Anda juga mengerti mengapa hal-hal seperti itu adanya.
  2. Anda mungkin mengoptimalkannya dan membuatnya lebih baik
  3. Anda mungkin mengacaukannya dan belajar bagaimana tidak melakukan hal itu.

Bagi saya siswa tidak boleh menemukan kembali roda, tetapi cobalah untuk merekayasa balik & memahami implikasinya.

Ramesh
sumber
1

Saya akan mengatakan bahwa itu tergantung pada apakah Anda menemukan kembali untuk melihat bagaimana roda bekerja atau menemukan kembali roda dalam proses menyelesaikan beberapa tugas lain. Tentu saja ada roda yang perlu diterapkan setiap siswa setidaknya satu kali pada mereka sendiri. Anda harus tahu bagaimana beberapa struktur data dasar dan algoritma bekerja untuk memahami bagaimana mereka akan mempengaruhi kinerja kode Anda atau memilih mana yang akan digunakan dalam berbagai keadaan.

Tumpukan, tumpukan, daftar terkait, pohon, dll. Pasti bernilai investasi tepat waktu untuk diterapkan sekali; lalu setelah itu gunakan yang disediakan oleh framework. Setiap orang yang menggunakan plugin jQuery harus menulis setidaknya satu, tetapi Anda tidak harus menulis setiap jenis yang berbeda yang akan Anda gunakan. Saya akan mengatakan bahwa itu membantu, tetapi tidak perlu, untuk menulis penjadwal proses kecil atau mini-OS sehingga Anda dapat memahami apa yang terjadi di bawah tenda di komputer. Anda DO perlu memahami bagaimana proses, utas, dll. Bekerja.

Setelah Anda memiliki pengetahuan kerja yang baik, penting juga (dan menyenangkan) untuk kembali dan menerapkan struktur / algoritma baru untuk merasakannya. Kecuali itu pekerjaan Anda atau Anda benar-benar hebat, saya akan tetap menggunakan yang sudah ada dalam kode Anda.

tvanfosson
sumber
1

Jawabannya tergantung pada apakah Anda ingin belajar atau membuat.

Jika belajar adalah tujuannya, "menciptakan kembali roda" dapat memberi Anda wawasan yang lebih besar dan pemahaman yang lebih baik daripada menggunakan roda yang ada (fungsi perpustakaan).

Tetapi jika menciptakan produk yang rumit adalah tujuannya, maka "menciptakan kembali roda" dapat menjadi praktik yang memakan waktu dan akan sedikit membantu penciptaan produk.

Namun demikian, jika tujuan jiwa adalah belajar dengan waktu dan stamina yang cukup, "menciptakan kembali roda" adalah pilihan terbaik, karena membantu menyesuaikan setiap fitur.

CoolEulerProject
sumber
1

Nah, ada dua aspek dalam hal ini.

Pertama, jika Anda mencoba untuk belajar, dapat berguna untuk melakukan beberapa hal dari awal, atau menggunakan antarmuka tingkat yang lebih rendah dari yang diperlukan. Namun, masih perlu mengidentifikasi apa yang Anda pelajari: jika Anda ingin belajar tentang protokol HTTP, Anda tidak perlu melakukan pemrograman soket sendiri. Temukan kembali hal-hal yang Anda pelajari , dan lakukan saja untuk benar-benar mengeksplorasi dan memahaminya.

Tetapi - salah satu keterampilan paling penting dari seorang programmer profesional adalah memilih, mempelajari, dan menggunakan perangkat lunak yang sudah ada sebelumnya. Ini adalah sesuatu yang juga perlu Anda pelajari. Sebagian besar pertanyaan tentang SO tampaknya berasal dari orang-orang yang tidak mampu membaca dokumentasi.

Akhirnya, pemrograman bertumpu pada landasan teori yang substansial. Anda perlu menggunakan kedua latihan praktis tersebut, ditambah dengan membaca, untuk mempelajari teorinya.

Marcin
sumber
Saya setuju. Itulah mengapa ada begitu banyak baru kerangka kerja perangkat lunak yang sudah ada dan perpustakaan yang diciptakan sepanjang waktu :)
gbjbaanb
0

Saya telah menghadapi situasi yang sama. Itu karena perbedaan persepsi dalam industri dan akademisi.

Jika Anda tidak "menemukan kembali roda" maka Anda benar-benar tidak dapat mempelajari apa pun di sekolah atau memahami cara kerja sesuatu.

Sedangkan dalam suatu industri tujuannya adalah untuk mengeluarkan suatu produk dalam waktu dan upaya yang paling sedikit.

Secara pribadi, saya suka turun ke lubang kelinci dan saya benci filosofi industri tapi itulah cara bisnis dilakukan dan Anda tidak bisa mengeluh.

John
sumber
0

The Hacker Jargon Lexikon memiliki komentar yang sangat baik pada menciptakan kembali roda :

Untuk merancang atau mengimplementasikan alat yang setara dengan yang ada atau bagian dari satu, dengan implikasi bahwa melakukannya adalah konyol atau buang-buang waktu. Ini sering merupakan kritik yang valid. Di sisi lain, mobil tidak menggunakan rol kayu, dan beberapa jenis roda harus diciptakan kembali berkali-kali sebelum Anda memperbaikinya. Di pihak ketiga, orang-orang yang menemukan kembali roda memang cenderung memiliki moral yang setara dengan trapesium dengan poros offset.

Jadi mungkin baik untuk menemukan kembali roda, tetapi pastikan Anda melihat solusi orang lain sebelum atau setelah melakukannya.

Hans-Peter Störr
sumber
0

Jawaban A: Temukan kembali roda. Ini memperdalam pemahaman Anda tentang struktur data dan algoritma dan membuatnya menjadi BANYAK lebih mungkin bahwa Anda akan menulis hal-hal yang baik. Saya yakin ketika Guido van Rossum mulai menggunakan Python, orang-orang mengatakan kepadanya untuk tidak menemukan kembali kemudi. Sudah banyak bahasa. Mengapa menulis google ketika sudah ada Yahoo! Bagaimana dengan dentang? Pelajari semuanya. Jadilah raksasa. Jangan biarkan orang kecil membatasi Anda. Jawaban B: Jika seorang instruktur memberi tahu Anda apa yang harus dilakukan, beri dia apa yang diinginkannya, atau hanya sedikit lebih walaupun itu tampak konyol. Jika Anda ingin JUGA gila membuat solusi yang menakjubkan dan memberinya tautan untuk melanjutkan. Namun, pertama-tama, penuhi persyaratan yang ditentukan sebagaimana diberikan sehingga dia senang.

phorgan1
sumber
-1

Jika Anda seorang siswa, dan karenanya tidak memiliki tenggat waktu yang ditetapkan untuk proyek Anda, lebih baik untuk "menemukan kembali roda". Jika Anda pemrograman sekarang hanya untuk belajar bagaimana memprogram, dan bukan untuk menghasilkan uang, mengapa mengambil jalan pintas yang tidak akan membantu Anda belajar? Mengapa tidak melakukannya dengan cara yang sulit? Tapi, ketika Anda menjadi programmer yang bekerja, orang akan skeptis jika Anda tidak tahu cara menggunakan framework atau perpustakaan ...

Billjk
sumber
10
Saya tidak tahu sekolah mana yang Anda hadiri, tetapi ke mana saya pergi, tenggat waktu untuk tugas adalah hal biasa.
CVn
-2

Lakukan apa yang diminta tugas / pertanyaan / ujian Anda.

Bertahun-tahun yang lalu saya adalah seorang TA untuk kelas pemrograman C. Pertanyaan ujian adalah 'Menulis program untuk menyalin file'. Beberapa siswa menanyakan jenis pertanyaan yang sama - dapatkah mereka menelurkan suatu proses dan menjalankan perintah OS cp?

Yang kami tanyakan kepada mereka adalah 'Apakah program Anda akan menyalin file?'

Pertanyaan ujian meminta mereka untuk menulis kode untuk menyalin file. Jika jawabannya tidak memiliki kode C yang menyalin file (mis. Input terbuka, keluaran terbuka, loop untuk membaca / menulis byte, tutup input, tutup keluaran) maka itu tidak menyalin file.

Jika guru mengatakan menggunakan kerangka kerja atau perpustakaan (misalnya kelas grafis mungkin memberitahu Anda untuk menggunakan perpustakaan 3D) maka gunakan apa yang mereka perintahkan untuk Anda gunakan. Jangan menciptakan milik Anda sendiri atau menggunakan yang lain. Perbedaan apa pun akan mempersulit guru untuk menilai pekerjaan Anda.

Dalam wawancara kerja, pengetahuan tentang kerangka kerja populer akan membantu Anda menjawab pertanyaan. Buat proyek Anda sendiri untuk belajar. Semoga berhasil dengan studi Anda.

jqa
sumber
Ya, tetapi jika mereka menelurkan cpprogram mereka sebenarnya akan menyalin file.
Marcin