Seberapa pentingkah Anda mengetahui standar C ++?

10

Saya memang mencoba mencari, tetapi saya tidak melihat pertanyaan serupa (entah itu atau terminologi pencarian saya salah - jika demikian, jangan ragu untuk menutup).

Saya adalah pengguna setia SO, dan saya perhatikan bahwa ada banyak referensi ke standar C ++ dalam diskusi dan jawaban - dan saya harus mengakui, saya belum pernah membaca dokumen khusus ini, bahasanya membuat mata saya sakit ... Jadi , pertanyaannya adalah, dapatkah pengembang C ++ benar-benar kode untuk mencari nafkah tanpa pernah membaca dokumen ini? Apakah benar-benar penting bagi kita manusia biasa yang tidak berkecimpung dalam bisnis menulis kompiler?

Nim
sumber
Kegigihan pertanyaan yang dijawab dengan kutipan singkat dari standar harus menjadi bukti yang cukup bahwa membacanya bukanlah prasyarat untuk menggunakan bahasa ... (asalkan Anda memiliki tempat untuk berbelok ketika Anda mengalami kesulitan)
Shog9

Jawaban:

16

Tidak - Anda bisa rukun tanpa itu

Namun, Anda akan memiliki pemahaman yang lebih dalam jika Anda meluangkan waktu untuk mempelajarinya. Mungkin ikuti referensi dari pertanyaan-pertanyaan yang mengganggu Anda dan belajar sepotong kecil sekaligus.

Gary Rowe
sumber
8

Jika Anda ingin berdebat tentang bahasa semantik dan bahasa standar, maka standar itu sangat penting. (Saya tidak bermaksud ini sepenuhnya menghina.) Jika Anda hanya ingin menyelesaikan pekerjaan dalam bahasa (vs pada bahasa), maka itu jauh lebih sedikit.

Standar dapat membuat referensi yang layak ke perpustakaan standar (tidak terlalu banyak untuk bahasa itu sendiri) setelah Anda merasa sedikit nyaman dengan itu, tapi saya ragu untuk merekomendasikan itu digunakan seperti itu. Kebanyakan orang tampaknya melakukan yang lebih baik dengan bahan lain. Yang mengatakan, saya beralih ke standar lebih sering daripada tidak ketika saya perlu mencari sesuatu tentang stdlib.

Namun, membaca draft dan makalah komite adalah salah satu cara untuk tetap mengikuti C ++ 0x - pada kenyataannya, salah satu dari hanya beberapa cara, saat ini.

Untuk SO dan forum lain, saya ragu untuk mengutip standar kecuali ketika tampaknya poster akan jelas dan pasti menguntungkan - mungkin mereka sudah meminta itu atau saya pikir mereka secara implisit mengharapkannya. Dalam kebanyakan kasus, dan terutama dengan programmer yang baru mengenal C ++, mengutipnya biasanya tidak banyak membantu.

Fred Nurk
sumber
Jika seseorang ingin tahu apa yang harus dilakukan bahasa, Standar itu sangat berharga. Jika mereka ingin tahu mengapa kompiler melakukan sesuatu, seringkali sangat berguna. Untuk pertanyaan lain, jangan terlalu banyak.
David Thornley
1
@DavidThornley: Sulit menilai setelah sekian lama terbiasa membaca standar, tapi sepertinya kebanyakan orang menemukan teks seperti TC ++ PL lebih mudah didekati bahkan untuk mengetahui apa yang harus dilakukan bahasa.
Fred Nurk
1
@Fred Nurk: Hampir semua hal lebih mudah didekati daripada Standar. Saya bermaksud untuk menjawab pertanyaan pada SO dan sejenisnya, dan tidak jelas tentang hal itu. Itu menambahkan sedikit otoritas ketika orang mengutip cplusplus.com dan sumber lainnya.
David Thornley
@ Davidvidhorn: Saya akan sangat jarang mengutip situs seperti itu (cplusplus.com khususnya memiliki terlalu banyak masalah untuk selera saya), tetapi untuk sebagian besar poster di SO, mereka juga tampak lebih berguna, bahkan dengan kesalahan, daripada standar - dan dengan mudah sayangnya, tersedia online adalah bagian besar dari itu.
Fred Nurk
@Fred, itu menarik untuk diketahui, saya selalu berpikir cplusplus adalah referensi yang baik (downside adalah sumber iklan mereka - yang sangat tidak pantas!), Sekarang saya harus ingat untuk referensi silang dengan referensi sgi.
Nim
6

Anda harus memilikinya tersedia untuk referensi tetapi saya tidak berpikir siapa pun kecuali penulisnya telah membaca semuanya ... jika mereka melakukannya (mereka bekerja dalam kelompok yang berfokus pada area jadi saya agak meragukannya).

Alasan Anda harus menyediakannya adalah bahwa kadang-kadang pertanyaan tentang kebenaran kode hanya dapat dijawab dengan merujuk pada standar.

Edward Strange
sumber
3
Dalam kebanyakan situasi Anda tidak membutuhkannya. Apa yang Anda butuhkan tercakup dalam buku-buku lain. Ini hanya ketika Anda sampai ke sudut-sudut kasus atau tidak pernah menggunakan sudut bahasa yang Anda perlu memeriksa definisi dalam standar (dan biasanya ada alternatif untuk menggunakan sudut kasus dalam bahasa). Biarkan standar untuk pengembang kompiler dan pengembang umum dapat bergaul dengan teks non formal lainnya.
Martin York
2

Mungkin lebih penting bagi Anda untuk mengetahui di mana standar itu dan tahu kapan harus mencari sesuatu.

Jika tidak ada yang lain, Anda harus memeriksa secara berkala untuk memastikan bahwa Anda mematuhi versi terbaru dan tidak membiarkan kode Anda melayang.

ChrisF
sumber
2

Pada tim besar, Anda biasanya harus memiliki satu (tetapi biasanya tidak lebih) orang yang mengetahui standar setidaknya cukup baik, sehingga mereka dapat melakukan hal-hal seperti menyelesaikan argumen / pertanyaan tentang hal-hal seperti apakah kode tertentu sesuai dengan persyaratan standar.

Namun, secara realistis, jawaban-jawaban itu perlu diatasi dengan penilaian dan pengalaman. Standar (saat ini) mengatakan exportadalah kata kunci dan memberi tahu apa yang dilakukannya. Pada kenyataannya, itu tidak bekerja seperti itu dengan kebanyakan kompiler. Demikian juga, dalam banyak kasus, jika Anda memiliki tiga orang yang tidak setuju tentang beberapa kode tertentu dan apa yang mungkin dikatakan standar tentang hal itu, itu mungkin merupakan tanda bahwa kode tersebut mungkin perlu ditulis ulang agar lebih mudah.

Pada saat yang sama, sebagian besar tim akan melakukan sebagian besar pekerjaan pada satu platform, dan memiliki standar (dan seseorang yang paling tidak cukup akrab dengannya) untuk memeriksa bahwa apa yang Anda lakukan tidak terlalu terkait dengan platform itu pasti dapat menjadi berguna.

Jerry Coffin
sumber
"Tidak lebih" mungkin penting - kecuali jika Anda ingin argumen antara para ahli tentang bagaimana menafsirkan standar <g>
Steve314
2

Saya telah mendapatkan roti sebagai pengembang C ++ selama sekitar 4 tahun secara total, tanpa harus membaca standar. Bahkan, selama dua tahun pertama, saya bahkan belum membaca banyak hal selain C ++ Primer oleh Stan Lippman dan artikel MSDN. Jadi itu mungkin - pada kenyataannya saya takut bahwa sebagian besar orang yang memproduksi kode C ++ bahkan belum membaca karya mendasar seperti C ++ Efektif al. yang saya temukan baru kemudian.

IMHO untuk menjadi pengembang C ++ yang baik, orang harus memahami logika dalam bahasa (seperti dicatat oleh Scott Meyers, C ++ adalah sekitar 4 bahasa yang berbeda) dan idiom dan perangkap umum, dan siap untuk selalu belajar lebih banyak. Membaca utas pada SO dapat mengajarkan banyak tentang kasus sudut di mana pada gilirannya mungkin layak dibaca pada bagian standar yang relevan, jika seseorang ingin benar-benar menggali lebih dalam. Tetapi membaca keseluruhannya mungkin jarang diperlukan bagi kebanyakan dari kita.

Péter Török
sumber
Poin baiknya adalah ada buku-buku penting yang jauh lebih penting (bagi kebanyakan programmer yang tidak menulis kompiler) daripada standar. +1 - tetapi ada cukup banyak buku "esensial".
Steve314
@ Steve314, memang - mulai membuat daftar mereka tidak akan membantu menjawab pertanyaan khusus ini. Tapi saya menambahkan tautan ke utas yang relevan di SO sekarang.
Péter Török
@ Péter - sentuhan yang bagus, tetapi poin saya yang tidak disebutkan adalah bahwa tidak ada satu pun dari buku "esensial" yang benar-benar penting. Kebanyakan programmer C ++ seharusnya sudah membaca beberapa judul dari daftar itu, tetapi semuanya ? Tidak sepertinya. Bahkan jika Anda melakukannya, saya ragu Anda benar-benar bisa mempertahankan semua pengetahuan itu. "C ++ Efektif" ada di daftar saya yang belum baca, jadi saya jelas menganggapnya sebagai buku esensial yang kurang penting.
Steve314
@ Steve314, saya tidak bermaksud seseorang harus membaca semua itu - saya juga belum, dan beberapa dari mereka saya baca tetapi tidak terkesan oleh :-) Ada juga beberapa tumpang tindih antara beberapa ini, jadi itu adalah pertanyaan tentang selera dan peluang pribadi mana yang pertama bertemu dengan pengembang dan / atau yang mana ia beri label "esensial". Saya percaya yang penting adalah bahwa ada beberapa idiom umum yang baik untuk diikuti, dan perangkap umum yang bijaksana untuk dihindari, dan orang harus tahu tentang sebagian besar dari ini, dan cara paling menyakitkan untuk mempelajari ini adalah dari (beberapa) buku-buku ini .
Péter Török
Tentu saja aku tidak akan benar-benar tahu betapa pentingnya sampai aku harus membacanya.
Steve314
1

"Mengetahui standar" adalah masalah derajat, dan tidak selalu berarti menghafal dokumen asli.

Dokumen standar dirancang untuk otoritatif - tidak selalu dapat diakses. Ada banyak sumber satu langkah dihapus yang jauh lebih mudah diakses. Benar, ada sedikit Whispers Cina dalam hal itu, tetapi ini jarang menjadi masalah besar - tentu saja pada level satu langkah yang dihilangkan.

Pengungkapan penuh - Saya harus mengatakan ini - Saya tidak pernah membaca standar. Meskipun saya mungkin akan berusaha untuk mendapatkan dokumen C ++ 0x penuh ketika sudah selesai.

EDIT tentu saja jika Stroustrup merilis edisi baru "Bahasa Pemrograman C ++", saya mungkin setuju untuk itu lagi.

Steve314
sumber
1

Ketika saya memprogram dalam C ++, saya sering merujuk ke standar bahasa untuk informasi tentang fungsi-fungsi perpustakaan standar. Pustaka standar C ++ cukup besar, dan saya menemukan standar bahasa menjadi sumber yang paling nyaman.

kevin cline
sumber
1
Wow benarkah? Saya selalu menemukan sumber daya online seperti cplusplus sangat diperlukan dalam hal ini ...
Nim
1

Saya bersumpah telah menjawab pertanyaan ini sebelumnya, tetapi saya tidak dapat menemukannya. Pada dasarnya, C ++ tidak seperti Java dalam hal itu dimaksudkan untuk memiliki lubang dalam spesifikasi spesifikasi platform lain dapat mengisi (misalnya POSIX, atau spesifikasi ABI arsitektur Anda, atau kompiler Anda). Jadi, ketika menjawab pertanyaan di situs-situs seperti StackOverflow, sudah umum untuk membuka spesifikasi untuk menunjukkan bahwa hanya karena sesuatu bekerja pada satu kompiler tidak berarti itu bekerja di mana-mana. Dengan kata lain, banyak alasan untuk merujuk spesifikasi tertentu ketika bekerja dengan C ++ adalah untuk menjelaskan dengan tepat seberapa portabel penggunaan khusus dari bahasa tersebut.

Ken Bloom
sumber