Apakah ada tanggal kedaluwarsa untuk buku-buku lama tentang pemrograman yang dihormati, tetapi lama? [Tutup]

51

Setelah membaca pertanyaan tentang buku yang harus dibaca setiap programmer , saya bertanya-tanya apakah yang berikut ini dianggap usang:

Semua buku ini tampak sangat tua. Apakah tidak ada perbedaan antara komputasi modern dan apa yang saat ini ketika buku itu ditulis?

Sebagai contoh, guru saya yang berusia 61 tahun menjelaskan hal-hal dengan sangat baik tetapi lupa untuk memperhitungkan semua yang telah dilakukan antara ketika dia mulai mengajar 25 tahun yang lalu dan sekarang.

Bukankah hal yang sama berlaku untuk buku-buku itu? Tidak ada lagi buku modern yang mengajarkan prinsip dan teknologi yang lebih dekat dengan praktik saat ini? Atau apakah Anda menganggapnya berguna dan relevan bahkan hingga hari ini?

Olivier Pons
sumber
9
Sebaiknya Anda mempertimbangkan mengapa semua judul yang tercantum pertama kali diterbitkan setidaknya 12 tahun yang lalu, tetapi masih berharga hingga saat ini. Empat dari lima telah diperbarui sejak edisi pertama mereka, tetapi waktu rata-rata antara edisi adalah 10,4 tahun.
Caleb
83
Prinsip-prinsip pemrograman mendasar tidak berubah hanya karena ada bahasa atau kerangka kerja "rasa minggu ini" yang baru.
Robert Harvey
26
Mengharapkan lulusan ilmu komputer mentah untuk membangun sistem perangkat lunak yang kompleks seperti mengharapkan lulusan teknik sipil merancang jembatan gantung, hal itu seharusnya tidak terjadi. Sekolah tidak mengajarkan Anda segala sesuatu yang perlu Anda ketahui dengan cara lama, itu seharusnya mengajarkan Anda cara belajar menjadi insinyur perangkat lunak yang hebat, dan buku - buku lama ini memiliki banyak hal untuk dikatakan sekarang seperti yang mereka lakukan puluhan tahun lalu - ini sudah berakhir 16 tahun sejak edisi ulang tahun ke-20 dari The Mythical Man-Month diterbitkan, dan sama relevannya hari ini seperti aslinya pada tahun 1975.
Mark Booth
10
buku-buku ini abadi; tapi programmer yang akan membatasi diri hanya untuk buku-buku ini dan yang akan mengabaikan hal-hal baru, akan menjadi usang memang
nyamuk
4
Anda agak bertanya: jika buku-bukunya bagus, maka itu tidak usang.
quant_dev

Jawaban:

92

Buku ini tentang prinsip-prinsip pembangunan. Prinsip-prinsip ini, secara alami, agnostik-bahasa, dan untuk beberapa paradigma-agnostik (OOP, pemrograman fungsional, bahasa imperatif).

Mereka menjelaskan teori dan cara pengembangan yang baik karena, pada akhirnya, perangkat lunak selalu tentang mendapatkan data, memprosesnya, kemudian mengeluarkannya kembali. Facebook, Twitter, 3D, proses batch akuntansi, manajemen lalu lintas kereta api, meluncurkan roket, dll.

Buku-buku tentang bahasa, seperti "How to learn XXXXX in YY days", di mana XXXXX adalah bahasa dan YY adalah angka yang pada akhirnya (dan kadang-kadang sebenarnya sangat cepat) menjadi usang, karena, pada dasarnya, ini adalah tentang hal-hal yang berkembang, atau diganti dan menjadi ketinggalan jaman.

Code Complete , oleh Steve McConnell yang luar biasa, mungkin adalah buku yang membuat saya menyadari hal ini. Dan Pragmatic Programmer benar-benar mengubah visi yang saya miliki tentang pengembangan perangkat lunak. Dengan membaca buku-buku seperti itu, Anda menyadari bahwa 95% masalah yang Anda hadapi sehari-hari telah diselesaikan, dan bahwa 95% dari kita masih menemukan kembali roda.

Yang disebut "Cloud" bukan masa depan pengembangan perangkat lunak, ini adalah cara untuk menggunakan perangkat lunak yang dikembangkan.

Jangan jatuh ke dalam jebakan buzzword omong kosong, fokus pada bagaimana Anda dapat meningkatkan keterampilan pengrajin perangkat lunak Anda.

Berfokuslah pada pembelajaran dari apa yang telah diciptakan dan dipelajari oleh roh-roh cemerlang lain di hadapan kita, karena itulah satu-satunya cara untuk menjadi pengembang yang ulung.

Clement Herreman
sumber
6
Artis yang baik meniru seniman hebat yang dicuri
hafichuk
16
... kapal seniman sejati. :-)
kindall
9
Namun, tidak peduli berapa kali kita mengatakannya, orang masih percaya mereka hanya perlu javascript dalam 12 hari.
Spencer Rathbun
2
Salinan seniman yang baik, salinan seniman hebat DAN jaga kode! (Saya mengalami begitu banyak sakit kepala di sekolah bekerja dengan anak-anak lain yang membuat kekacauan proyek karena mereka akan menyalin dari semua dan semua orang ...)
HTDutchy
@SpencerRathbun apalagi (IMHO), Javascript jauh lebih baik daripada bahasa lain, seperti PHP. Namun ada bazillion "Learn Javascript in 15 seconds"dan hanya setengah bazillion dari"Learn PHP on 17 secsonds"
Clement Herreman
80

Semua buku itu tampak sangat, sangat, sangat tua. "

Psikologi-Komputer-Pemrograman (1971) - Dengan sejuta kali lebih banyak programmer daripada pada tahun 1970 psikologi tentang bagaimana mereka merancang program dan kesalahan apa yang mereka buat dan bagaimana cara menghindarinya lebih penting daripada sebelumnya.

Perangkat Lunak Alat (1976) - Dengan web menjadi kumpulan karya frame, utilitas, skrip dan plugin - ide-ide dalam Perangkat Lunak tidak pernah lebih relevan.

EDIT: Untuk menjawab pertanyaan umum - apakah buku pemrograman lama relevan?

Prinsip umum rekayasa perangkat lunak tidak banyak berubah, ada teknologi baru OO, TDD, dll. Tetapi secara umum pengguna dan masalahnya tidak berubah - dan berpikir tentang bagaimana membagi masalah adalah sama seperti sekarang. selalu begitu.

Buku-buku yang lebih tua ini umumnya ditulis oleh para ahli di lapangan. Banyak buku pemrograman modern ditujukan untuk mendapatkan doorstop 2000 halaman untuk kata kunci terbaru saat ini masih berlaku.

Buku tentang bahasa dan teknologi yang tidak lagi digunakan mungkin tidak relevan - tidak ada manual assembler Vax dalam daftar. Tetapi 'C' masih sangat banyak digunakan dan 'Bahasa pemrograman C' tidak hanya buku terbaik tentang 'C' itu adalah model bagaimana menulis tutorial ringkas dan referensi ke bahasa Anda.

Apakah ada algoritma baru? Iya. Tetapi semua algoritma lama masih relevan dan sebagian besar yang baru berada di area yang tidak mungkin Anda temui. Tidak ada yang datang dengan jenis yang lebih baik atau FFT baru-baru ini. Meskipun orang lain telah mencoba menjelaskannya dengan lebih baik, tidak ada alasan bahwa buku-buku Algoritma tahun ini lebih baik daripada CLRS.

ps. IWhatsit baru Anda yang keren menjalankan BSD, dikembangkan pada tahun 1977. Sekarang Anda semua turun dari halaman saya!

Martin Beckett
sumber
28

Semua buku itu tampak sangat, sangat, sangat tua. Tidakkah Anda pikir ada perbedaan antara saat ini dan ketika buku itu ditulis?

IMHO, tidak mengherankan bahwa buku-buku yang sangat bagus tetap populer selama beberapa dekade - yang menunjukkan betapa baiknya buku-buku itu. Tetapi saya pikir saya dapat memberi tahu Anda sesuatu untuk setiap kandidat yang Anda daftarkan:

Code complete: 2nd edition = may, 2004

Sebenarnya edisi pertama "Kode selesai" berasal dari tahun 1993, jadi ini benar-benar "klasik". Ini adalah tentang gaya pengkodean dasar, menggunakan contoh-contoh yang berlaku untuk hampir setiap bahasa pemrograman keluarga C, yang berisi bahasa paling populer saat ini (C / C ++ / Java / C # / Objective-C / D / ...). Jadi ya, buku ini terbaru.

Introduction to algorithms (Cormen, Leiserson, Rivest, Stein)

Yah, saya sebenarnya tidak membaca buku itu (buku teks algoritma saya berasal dari "Sedgewick"), tetapi mempelajari algoritma dan konstruksi algoritma adalah bahasa agnostik. Tentu saja, kerajinan ini semakin diremehkan beberapa tahun terakhir karena Anda menemukan banyak algoritma dasar saat ini di perpustakaan standar, tetapi IMHO setiap programmer profesional harus memiliki pengetahuan dasar dalam bidang ini.

The Pragmatic Programmer

Ini adalah buku yang sangat bagus tentang pemrograman sebagai keahlian. Bahasa agnostik dan sangat, sangat terkini, selama pemrograman dilakukan oleh programmer sebagai tugas manual, menggunakan editor teks, IDE, kontrol versi dll.

Structure and Interpretation of Computer Programs: = September 1, 1996

Ini adalah favorit pribadi saya, walaupun (atau mungkin karena) buku ini menggunakan Skema untuk mengajarkan Anda perbedaan antara paradigma pemrograman yang berbeda. Saya tidak tahu buku apa pun yang memiliki fokus kuat untuk membangun abstraksi. Dan membangun abstraksi adalah kemampuan utama yang membuat perbedaan antara seorang programmer yang biasa-biasa saja dan seorang programmer top - yang tidak berubah dalam dekade terakhir, jadi sungguh, buku ini abadi. Selain itu, bahasa fungsional dan elemen bahasa menjadi lebih populer baru-baru ini, jadi IMHO ide-ide yang disajikan dalam buku ini mendapat kebangkitan.

The C Programming Language

Yah, buku ini mungkin tidak begitu abadi seperti empat lainnya. Tetapi karena C adalah sesuatu seperti "ibu" dari semua bahasa populer yang saya sebutkan di atas, mungkin ide yang baik untuk membaca buku ini juga - saya tidak berpikir ada beberapa buku "C" modern yang benar-benar lebih baik. Dan jika Anda harus melakukan pemrograman pemeliharaan kode C ++ yang ditulis oleh seseorang yang tahu C lebih baik daripada C ++, maka buku ini adalah suatu keharusan.

Akhirnya, Anda meminta buku yang memperhitungkan lebih dari "realitas saat ini", tanpa terlalu spesifik teknologi. Jadi apa "realitas saat ini" dan apa yang telah berubah di sisi "non-teknologi"? Berikut adalah beberapa poin dari dekade terakhir, tanpa mengatakan bahwa daftar ini lengkap atau memiliki prioritas yang tepat.

  1. Ada lebih banyak kode warisan (terutama lebih banyak kode warisan tidak hanya di Fortran dan Cobol, tetapi juga di C ++ dan Jawa).
  2. Unit testing dan TDD menjadi lebih favorit.
  3. Ada lebih banyak kode sumber terbuka yang tersedia.
  4. OO mendapat semakin banyak kritik

(Saya tidak mencantumkan apa pun di sini tentang pengembangan Web atau Aplikasi, karena menurut saya teknologi ini spesifik).

Ada buku bagus untuk topik 1 dan 2, terutama "Kode Bersih" , yang berasal dari 2008, dan "Bekerja secara efektif dengan kode warisan" dari 2004. Mungkin itu beberapa buku "baru" yang Anda cari?

Doc Brown
sumber
5
Bahasa Pemrograman C adalah abadi. Buku suling seperti itu jarang terjadi. Saya telah membacanya kembali untuk ... Saya tidak tahu, saya kehilangan hitungan (saya membacanya untuk pertama kalinya ketika saya berusia 13) dan saya masih menghargainya. Sebaliknya, saya lebih menghargainya sekarang.
Francesco
3
Saya akan menambahkan # 5 ke daftar Anda: komputasi paralel. Bukan ide baru , tetapi saat ini sedang dilakukan pada skala yang belum pernah terjadi sebelumnya, yang memunculkan beberapa masalah baru. Tetapi semua ini masih dibangun di atas fondasi yang sama dengan barang-barang lama, dan saya merasa bahwa OP masih tidak benar-benar memahami fondasi-fondasi itu.
Mike Baranczak
2
@ Mike: Saya setuju, komputasi paralel semakin menarik perhatian dalam dekade terakhir, saya melewatkannya ketika saya menulis jawaban saya.
Doc Brown
2
@ Doc Brown Apakah pandangan Anda tentang keabadian literatur karena Anda telah mengunjungi 1885, 1955, 1985, dan 2015 dalam beberapa hari dari perspektif Anda sendiri?
Kalamane
13

Dari yang Anda sebutkan "Kode selesai", "Programmer pragmatis" dan "SICP" telah ada di daftar bacaan yang saya rekomendasikan untuk semua pengembang baru yang mulai di sini di perusahaan saya dan ingin naik ke level yang lebih tinggi.

Mereka tidak ketinggalan zaman karena ilmu dasar dalam Ilmu Komputer belum berubah.

Joris Timmermans
sumber
10

Saya belum membaca semua buku-buku itu, tetapi saya memiliki Code Complete dan The Pragmatic Programmer. Buku-buku ini jauh dari usang. Mereka mungkin memiliki beberapa paragraf yang sedikit berkarat tetapi sebagian besar konten masih relevan hingga saat ini.

Kemajuan dalam Ilmu dan Pemrograman Komputer adalah proses evolusi . Abstraksi baru sedang diperkenalkan di atas yang lama tetapi hal-hal baru ini tidak perlu membuat yang lama menjadi usang.

Sebuah analogi ... Apakah Anda belajar untuk menjadi ahli bedah trauma atau ahli bedah yang berspesialisasi dalam transplantasi jantung, Anda masih perlu tahu bagaimana tubuh manusia bekerja, kimia sel, sistem organ, cara membuka dada dan cara cepat hentikan pendarahan jika itu terjadi, dll ... Hanya karena mereka menemukan peralatan endoskopi dan teknik yang kurang invasif, itu tidak berarti Anda bebas untuk mempelajari dasar-dasarnya. Itu hanya berarti Anda harus belajar lebih banyak.

c_maker
sumber
ya anatomi Gray (buku asli bukan acara tv) ditulis pada tahun 1918 dan mahasiswa kedokteran masih menggunakannya.
HLGEM
7

"Awan" bukan merupakan faktor. "Cloud" sebenarnya jauh lebih tua daripada sebagian besar buku yang Anda daftarkan. sebagian besar dari buku-buku itu tentang prinsip-prinsip inti, mereka tidak benar-benar berubah sering. Kerangka kerja dan pustaka berubah sepanjang waktu, tetapi bagaimana Anda harus menyusun kode Anda tidak banyak berubah. Demikian pula pointer masih pointer tidak mulai melakukan hal yang berbeda hanya karena. Satu-satunya buku khusus bahasa yang Anda daftarkan adalah tentang C, dalam hal ini buku lama itu jauh lebih berguna daripada yang baru, karena buku itu kemungkinan ditulis lebih dekat dengan periode waktu dimana kode C yang akan Anda kerjakan dikembangkan.

Ryathal
sumber
6

Daftar yang Anda kutip, tidak ada yang usang. Sebuah buku hanya menjadi usang ketika subjek telah berubah cukup banyak sehingga tidak berguna. Sifat pemrograman dan bahasa C telah berubah sedikit sejak publikasi

Tom Squires
sumber
6

Salah satu hal yang perlu Anda sadari adalah bahwa ada prinsip-prinsip dasar yang pada dasarnya abadi, dan implementasi yang cenderung datang dan pergi.

Prinsip-prinsip yang mendasari pada dasarnya semua teori membosankan yang cenderung menghabiskan banyak waktu di Ilmu Komputer, dan itu tetap berlaku bahkan jika dunia berubah di sekitarnya. Ini bertentangan dengan hal-hal seperti "Cara menggunakan Win32s di bawah Windows 3.11" yang sudah sangat tua dan ketinggalan zaman.

Untuk meletakkan segala sesuatu dalam perspektif - teks kanonik pada geometri berumur dua ribu tahun. Sebagian besar matematika yang diajarkan hingga tingkat perguruan tinggi setidaknya berusia 300 tahun. Hanya alasan buku CS tidak lebih tua, adalah karena bidangnya masih baru.

pengguna1249
sumber
Proposisi 1 Euclid dari buku 1 tidak dapat dibuktikan dari definisi, aksioma, dan postulat yang diberikan. Ini bukan pilihan yang baik untuk belajar dari saat ini, dan setelah milenia dapat dianggap ketinggalan jaman.
David Thornley
1
@ DavidThornley jika Elemen Euclids bukan teks kanonik pada geometri, apa itu?
6

Beberapa buku abadi karena mereka membahas ide-ide yang sangat mendasar bagi praktik pengembangan perangkat lunak, mereka akan selalu berlaku.

Ambil contoh Mythical Man Month , ketika saya membaca buku ini, saya terus lupa bahwa itu ditulis pada tahun 1975. Ketika ia menaburkan sesekali dalam referensi sesekali tentang IBM System 360, itu selalu membuat guci saya karena itu adalah satu-satunya konten yang bertanggal buku. Segala sesuatu yang lain berlaku di sini dan sekarang. Saya masih menyimpan salinan Pola Arsitektur Aplikasi Perusahaan Martin Fowler , sekarang berusia 9 tahun tetapi sekali lagi abadi dan masih berlaku untuk pekerjaan yang saya lakukan hari ini.

Buku favorit saya saat ini adalah Java Modeling in Colouring dari Peter Coad dengan UML (1999) meskipun saya adalah seorang pengembang C # dan menghindari UML, karena teknik dan konsepnya menjadikan saya pembuat kode yang lebih baik.

Kami sebaiknya belajar dari generasi pertama pengembang karena mereka telah menginjak tanah yang sedang kami jalani sekarang dan kebijaksanaan mereka yang diperoleh dengan susah payah dapat membantu kami memulai apa yang kami lakukan / pelajari hari ini.

Michael Brown
sumber
MMM - Saya suka bagian tentang tim yang terus memperbaiki bug tetapi jumlah bug tetap konstan :)
JoelFan
5

Prinsip-prinsip inti dari perangkat lunak tidak berubah dalam 20 tahun terakhir. Tumpukan, pohon dan daftar tertaut masih berfungsi sama seperti yang mereka lakukan saat itu. "XOR" masih berarti hal yang sama. Satu byte masih memiliki 8 bit.

Apakah Anda serius menyarankan bahwa "pengembangan multi platform" adalah ide baru? Menurut Anda mengapa C ditemukan?

"Cloud" adalah kata kunci pemasaran. Dulu berarti sesuatu yang spesifik, tetapi telah direndahkan melalui penggunaan yang berlebihan. Saat ini, kapan saja Anda memiliki sesuatu yang berbicara ke server jauh melalui jaringan, pemasar menempelkan label "cloud" di atasnya. Jadi benar-benar tidak ada gunanya membicarakannya, karena itu adalah kata yang tidak berarti.

Saya tidak tahu profesor Anda yang berusia 61 tahun, jadi saya tidak bisa menjaminnya. Anda, di sisi lain, jelas tidak sepintar yang Anda kira. Dengarkan profesor, mungkin Anda akan belajar sesuatu.


"Kamu tidak bisa menjadi tua dengan menjadi orang bodoh. Banyak pemuda bijak, mereka mati sebagai bajingan." - Richard Pryor

Mike Baranczak
sumber
2
"Anda, di sisi lain, jelas tidak sepintar yang Anda kira." Jika saya pikir saya bahwa pintar, saya tidak akan pernah mengajukan pertanyaan seperti itu.
Olivier Pons
4

Berikut ini beberapa buku yang sangat lama dan kedaluwarsa:

  • Seni Pemrograman Komputer, vol. 1-3 dari D. Knuth. Ini diterbitkan antara 1968 dan 1981! Kami tidak menggunakan tabung vakum lagi, orang-orang! Segala sesuatu dalam buku-buku ini lumpuh. Di mana diskusi tentang Python dan Ruby?

  • Komputer dan Daya Tarik: Panduan untuk Teori Kelengkapan NP oleh MR Garey dan DS Johnson, 1979. Super timpang! Semua masalah ini telah diselesaikan sekarang, mungkin.

Jika sebuah buku tidak ditulis dalam tiga tahun terakhir dengan fokus pada Python, maka itu tidak layak dibaca.

stackoverflowuser2010
sumber
Dalam keadilan ada setidaknya satu kasus untuk membuat bahwa TAoCP menggunakan assembler untuk kodesemu berarti bahwa lebih banyak buku algoritma modern yang menggunakan kodesemu lebih dekat ke lebih banyak bahasa modern lebih bermanfaat bagi 90% dari kita yang tidak menulis untuk disematkan sistem.
Peter Taylor
-1: setiap minggu atau dua saya melihat seseorang meminta algoritma untuk menangani sesuatu atau yang lainnya yang Knuth jelaskan dengan sangat detail. Hanya untuk bersenang-senang: Sebutkan satu algoritma pengurutan yang lebih baru dari 1981. Ingin menjawab pengurutan paralel? Knuth memiliki halaman tentang pengurutan data secara paralel. Anda mungkin benar tentang buku-buku Python tetapi ada perbedaan besar antara buku-buku "Rasa minggu ini" dan buku-buku kerajinan teknik.
sarnold
5
Rupanya beberapa detektor sarkasme rusak ...
DaveE
1
<Sarcasm> "Komentar" </Sarcasm>
NWS
1
Saya pikir jawaban ini akan membuat poinnya lebih baik jika itu termasuk penyebutan The Art of Computer Programming Volume 4A, yang diterbitkan pada 2011 dan Volume 5, yang direncanakan untuk 2020!
Mark Booth
3

Buku-buku itu tidak usang, buku-buku itu klasik.

Mengutip Kaplansky , " luangkan waktu setiap hari untuk mempelajari sesuatu yang baru yang terlepas dari masalah yang sedang Anda kerjakan (ingat bahwa perpecahan mungkin bersifat sementara), dan bacalah masternya . "

Francesco
sumber
3

Saya tahu apa yang Anda maksud, ketika kami memiliki kemajuan (LINQ datang ke pikiran) yang mengubah pembacaan dan penggunaan kode, tetapi hanya karena buku-buku ini sudah tua, tidak berarti bahwa mereka tidak menawarkan pelajaran yang bagus untuk pembaca.

Sementara bahasa pemrograman yang mereka gunakan mungkin sudah ketinggalan zaman , teori di balik bahasa pemrograman masih berdering hari ini. Sebagian besar buku-buku ini menjadikannya pokok untuk membahas dasar dengan sangat baik, dan dasar-dasarnya belum banyak berubah.

Onion-Knight
sumber
2
Bahasa pemrograman yang mereka gunakan sebagian besar 'C' - mereka mungkin telah keluar dari mode, tetapi telah meningkat secara besar-besaran dalam penggunaannya.
Martin Beckett
3
Anda harus membaca SICP, itu mungkin membuka mata Anda mengenai dari mana LINQ berasal :)
Joris Timmermans
1

Industri ilmu komputer masih sangat muda. Buku-buku yang ditulis 30 tahun yang lalu saya anggap masih berharga dan dibutuhkan untuk pemahaman yang lengkap. Konsep abstrak terkadang membutuhkan waktu untuk dicerna.

SoftwareCarpenter
sumber
1

Beberapa bagian kecil sudah usang dalam semua buku itu, tetapi 99% masih bagus.

Buku-buku algoritma akan bertambah umur dengan lambat. Algoritma adalah matematika, dan matematika tidak berubah dengan cepat. Tentu, masih ada penelitian dalam algoritma baru yang lebih unggul dalam keadaan tertentu (misalnya, algoritma Furer 's (2007) Schonhage-Strassen untuk mengalikan 40000+ angka panjang digit bersama-sama), tetapi pengantar Anda perlu mempelajari dasar-dasarnya (membagi dan menaklukkan / Pemrograman Dinamis / Pemrograman linier / dll) sehingga Anda dapat belajar berpikir secara logis tentang algoritma.

Mempelajari standar C dari K&R masih merupakan sumber terbaik; meskipun saya tidak yakin apakah saya akan mempercayai bagian mereka tentang cara mengatur lingkungan Anda.

SICP adalah buku yang luar biasa dan mengajarkan dasar-dasar CS modern melalui pengajaran bahasa yang merupakan bahasa yang indah. Namun, lisp bisa dibilang bukan bahasa yang paling berguna saat ini; meskipun orang lain akan berpendapat bahwa cisp adalah senjata rahasia mereka dan bahwa bahasa pembelajaran seperti java atau python pertama-tama membuat programmer yang sangat buruk yang tidak pernah perlu belajar bagaimana menerapkan sort atau linked-list atau array atau notasi O besar dan akhirnya melakukan hal-hal yang sangat tidak efisien.

Beberapa Code Complete atau Pragmatic Programmer kurang relevan, terutama jika Anda memprogram dalam bahasa yang lebih baru (misalnya, python / ruby ​​/ C ++ 11), karena sering berfokus pada bagaimana melakukan sesuatu dalam C atau memberikan solusi yang disarankan menggunakan yang terbaik alat yang tersedia saat itu (seperti CVS / RCS untuk kontrol versi daripada alat modern seperti git / bzr / hg / svn). Tetapi masih bagus untuk berpikir tentang bagaimana kontrol versi adalah suatu keharusan dan bagaimana itu perlu mulus dan mendokumentasikan diri dan pergi melalui logika mengapa itu adalah mutlak harus.

Atau rekomendasi PP terhadap IDE untuk editor unix dasar + alat unix - tidak untuk mengatakan Anda tidak seharusnya belajar bagaimana menggunakan find / awk / temukan / grep / sed, tetapi IDE yang baik sering kali dapat menghemat banyak waktu. Misalnya, emacs dapat melakukan penyorotan sintaksis atau penyelesaian kode sederhana; tetapi katakanlah IDE yang bagus akan mengatakan berikan tool-tips dengan deklarasi fungsi ketika Anda mengetiknya, atau menganalisis kode dan menandai variabel yang tidak digunakan, membuatnya mudah untuk menutup bagian-bagian kode, dll.

dr jimbob
sumber
1

Apakah tidak ada perbedaan antara komputasi modern dan apa yang saat ini ketika buku itu ditulis? Apakah Anda pikir itu mengubah apa yang harus kita pelajari? Bukankah kita harus memperhitungkan perkembangan 20 tahun terakhir?

Ya, ya, dan ya.

Itu tidak membuat buku-buku itu usang. "Komputasi modern" adalah istilah yang sangat luas. Namun, ini termasuk pemrograman C, jadi "Bahasa Pemrograman C" masih merupakan buku yang relevan. Ini termasuk algoritma, jadi "Pengantar Algoritma" masih merupakan buku yang relevan. Begitu seterusnya dan seterusnya.

Haruskah penekanan saat ini pada pengembangan multi platform Pengembangan multi platform (lihat phonegap) mengubah apa yang kita pelajari hari ini?

Sebagian besar aplikasi di App Store (untuk menggunakan platform seluler paling populer sebagai contoh) ditulis dalam Objective C, bahasa dari awal 80-an yang merupakan superset dari C. Jadi, sekali lagi, C masih relevan.

Apakah Anda berpikir "cloud" adalah mode atau masa depan?

Ini hadiah kita.

Ketika siswa keluar dari universitas, mereka seharusnya menjadi pengembang nyata dan dapat bekerja segera

Tapi apa artinya itu?

Ada terlalu banyak bahasa, API, kerangka kerja, platform, alat, strategi kolaborasi, dll. Bagi sekolah untuk mempersiapkan Anda untuk pekerjaan tertentu . Sekolah hanya dapat meletakkan fondasi, memberi Anda model kerja dasar tentang bagaimana mesin bekerja, tentang algoritma, struktur data, konstruksi kode, strategi dekomposisi, beberapa alat, dll.

"Pengembang nyata" bukanlah seseorang yang mengetahui segalanya, ia adalah seseorang dengan kapasitas untuk jenis pekerjaan ini, yang memiliki dasar dalam teori dan praktik, dan siapa yang tahu cara belajar , karena pendidikan Anda tidak pernah berakhir.

Mud
sumber
1
Beri +1 untuk komentar 'cara belajar' - itulah tujuan perguruan tinggi, bukan pelatihan kerja hafalan.
DaveE
1

Ok, jadi saya akan menawarkan jawaban yang jauh lebih teoretis. Saya setuju dengan kalian semua yang menjawab, cukup jelas menurut saya, buku-buku ini adalah dasar dari apa yang kita sebagai programmer lakukan dan semua kerangka kerja baru ini dibangun di atas garis pilar lama yang sama.

Ini dua sen saya - bukan milik saya, saya mempelajarinya dari St. Aquinas dan dari Aristoteles sebelum dia.

An abstraction is useless to someone who doesn't understand the particulars.

Mekanika komputer tidak berubah sejak von-neumann. Demikian pula, rincian yang Anda butuhkan untuk menjadi seorang programmer yang hebat akan sama sampai model von-neumann menjadi usang. Majelis, adalah bahasa komputer ... mempelajarinya, tidak ada alasan.

C adalah bahasa asli untuk Windows dan Unix. Pelajari atau temukan perdagangan baru. Jika Anda salah satu dari orang-orang yang langsung ke JAVA atau C #, Anda mungkin seorang programmer yang baik, tetapi Anda akan menjadi programmer yang jauh lebih baik jika Anda akan belajar periode C--.

Algoritma dan Struktur Data adalah dasar dari program komputer, mempelajarinya.

Yang lainnya adalah abstraksi dari disiplin inti ini. Abstraksi luar biasa ketika digunakan dengan benar - serius, saya menggunakan C # untuk 75% dari semua proyek saya. Namun, mereka membuat Anda bodoh jika Anda tidak meluangkan waktu untuk memahami bagaimana mereka bekerja dan bagaimana berfungsi tanpa mereka. Anda akan menghabiskan waktu tanpa henti membuat perangkat lunak agar sesuai dengan lubang persegi pepatah ketika ada pendekatan yang jauh lebih baik dan akan memiliki bug yang bisa dihindari. Pengembangan Perangkat Lunak adalah kerajinan yang harus dikuasai, dan pada akhirnya, alat jarang berubah. Itulah sebabnya buku-buku ini sangat penting.

Semua programmer JAVA dan C # ini saja, tsk, saya berani bertaruh kebanyakan dari mereka belum pernah melihat episode Star Trek!

Jonathan Henson
sumber
1

Saya mendengar pepatah dari seorang mentor:

"Nasihat yang bagus disertai dengan alasan mengapa supaya kamu tahu kapan itu bukan nasihat yang baik lagi." Jadi, dalam istilah buku, sebuah buku yang menjelaskan mengapa melakukan X lebih dari Y akan memberi tahu Anda ketika nasihat itu tidak lagi berlaku. Buku "selalu lakukan ini, lakukan saja" seperti beberapa kursus kilat dalam bahasa X tidak begitu baik.

Saya melihat satu yang disebut "belajar unix dalam 24 jam", well buku itu sekitar 8cm tebal, saya ragu banyak orang bahkan bisa membaca setiap halaman dalam 24 jam :)

Ingatlah bahwa apa yang sedang populer hari ini mungkin akan diejek besok. Semua yang berikut ini pernah dianggap sebagai arus utama (kemarin) tetapi sekarang tidak:

  • Pergi ke
  • Satu entri keluar tunggal
  • Notasi Hungaria
  • Pendekatan air terjun

Dan ada beberapa hal yang dulunya sepenuhnya laknat tetapi sekarang diterima:

  • Rekursi sebagai alat untuk menyelesaikan masalah (radikal pada awal masa BASIC)
  • Mengalokasikan memori saat runtime dengan malloc / baru
  • Penggunaan C ++ STL
  • Sampah mengumpulkan bahasa untuk sistem waktu nyata

Ketahui alasannya, dan Anda akan tahu kapan asumsi lama telah diganti dengan kenyataan baru, dan begitu pula sarannya.

anon
sumber