Saya ingin belajar C ++ untuk sementara dan mengambil Programming Komputer AP di Sekolah Menengah (kembali ketika itu C ++ dan bukan Java). Saya menikmati C dan belum menemukan waktu untuk belajar C ++ atau saya hanya akan kembali ke C # di mana saya jauh lebih produktif.
Pertanyaan saya adalah ini: mengingat bahwa C ++ '11 telah disetujui (walaupun saya tahu belum sepenuhnya diimplementasikan) apakah ini mengubah cara saya harus mendekati pembelajaran C ++? Saya memiliki C ++: Referensi Lengkap Oleh Herb Schildt yang berasal dari tahun 1998. Apakah standar yang baru disetujui membuat belajar dari buku-buku seperti itu kurang penting daripada beberapa tutorial / buku baru yang mencakup hal-hal dari standar? Apakah ada manfaat dari belajar dari buku-buku lama?
Jawaban:
Benar. Hari-hari ini tiga hal yang biasanya dalam pelajaran 2 harus banyak bergerak, jauh di kemudian hari:
Hal-hal yang biasanya ada dalam pelajaran 99 ini harus bergerak jauh, jauh lebih awal
Evey raw pointer harus segera diberikan ke pembungkus pointer cerdas (saya akan mulai dengan yang dibagikan, dan mempertimbangkan yang unik nanti karena membutuhkan penjelasan std :: move dan referensi nilai). Melakukan hal ini akan membuat belajar C ++ terasa sangat mirip dengan belajar Java atau C #, di mana Anda belajar perpustakaan pada saat yang sama dengan bahasa. Ini akan menghilangkan banyak pekerjaan ingatan, dan membuat orang tidak terlalu khawatir dengan gotcha.
Saya juga akan mengerjakan lambdas ke dalam gambar pertama kali kami ingin beralih melalui koleksi dan melakukan sesuatu untuk setiap elemen.
Penafian: Saya sedang menulis kursus C ++ untuk Pluralsight sekarang dan menggunakan pendekatan ini. Modul terakhir adalah "memahami kode orang lain" dan di situlah saya akan meletakkan hal-hal yang membingungkan seperti char * string, manajemen memori manual, aritmatika pointer, dan sebagainya.
Pembaruan: beberapa orang bertanya mengapa keberadaan C ++ 0x menginspirasi hal-hal pengajaran yang bisa diajarkan dengan C ++ 03. Saya pikir itu beberapa hal:
>>
dengan benar menghilangkan gotcha yang akan ada ketika mendeklarasikan beberapa template templateCara saya melihatnya, ada hal-hal yang bisa kita ubah tentang cara kita mengajar C ++ beberapa waktu yang lalu, tetapi beberapa dari kita menahan diri karena kita masih membutuhkan cara sekolah lama untuk mundur atau karena mengajar itu hanya melibatkan banyak pengetahuan misterius.
sumber
std::for_each()
akan jauh lebih populer daripada dulu,auto
akan sangat penting, dan sintaks deklarasi fungsi baru (dalam hubungannya dengandecltype
) akan menjadi cukup banyak digunakan dalam kode template. Itu adalah hal-hal yang tidak diajarkan buku C ++ saat ini. Tapi, ya, secara umum saya setuju dengan Anda (+1
). Ketika saya mulai memberikan kursus-kursus C ++, saya mulai dengan Accelerated C ++ , dan meskipun kursus saya mulai semakin menyimpang darinya, itu tetap berlaku pada prinsip yang mendasarinya.Cukup banyak, ya. Fakta sederhananya adalah bahwa dalam C ++ 98 dan 03, banyak praktik yang baik pada dasarnya tidak dapat digunakan karena kualitas dukungan bahasa yang buruk untuk mis pemrograman fungsional. Sekarang setelah lambda ada dan berfungsi, orang cenderung menerima antarmuka fungsional jauh lebih baik daripada sebelumnya, dan pemrograman generik bahkan lebih kuat dari sebelumnya.
Pada tahun 1998, orang baru saja mulai menemukan cara menulis kode berkualitas tinggi, aman, cepat menggunakan C ++, dan banyak kode adalah "C adalah Kelas". Dalam C ++ 11, itu sangat berbeda - idiom seperti copy dan swap dan Aturan Tiga (sekarang Lima) sudah dikenal dan didefinisikan, dan lebih banyak lagi jenis pengelolaan sumber daya telah menjadi Standar, seperti
shared_ptr
dan diunique_ptr
mana Standar sebelumnya hanya meninggalkannya sebagai lubang menganga.Anda dapat melihat pertanyaan ini untuk daftar bahan referensi yang bagus tentang C ++.
sumber
+1
dari saya.Saya tidak tahu buku spesifik yang Anda sebutkan. Tetapi secara umum Anda dapat mengatakan, bahwa semua dasar-dasar tentang sintaks C ++, tipe data dan OOP masih berlaku. Hal yang sama juga berlaku untuk perpustakaan STL yang disebutkan dalam kebanyakan buku pemula.
Meskipun sebuah buku setua dari tahun 1998 mungkin telah melewatkan beberapa pembaruan dan perkembangan dalam gaya pemrograman C ++, yang terakumulasi dalam komunitas selama bertahun-tahun. Saya akan mencari sumber daya yang sedikit lebih terkini. Ada lebih dari cukup tutorial dan dokumen online gratis yang akan memberi Anda awal yang baik. Beberapa dari mereka bahkan mungkin menyebutkan C ++ 0x.
C ++ 0x pasti akan banyak berubah tentang bagaimana programmer melihat dan menggunakan bahasa di masa depan. Tetapi ini akan mempengaruhi proyek yang lebih kompleks di mana fitur baru mulai masuk akal. Bagi seorang pemula, ini seharusnya tidak menjadi masalah dan Anda dapat berkonsentrasi untuk merasa nyaman dengan konsep yang ada, itu sudah cukup untuk dipelajari. Sebagai contoh, sebagian besar buku pemula tidak terlalu membahas tentang templat, jadi templat variadik baru bukanlah yang perlu Anda ketahui sekarang.
Mungkin melihat daftar perubahan . Setidaknya beberapa konsep seperti range based for loop kemungkinan besar akan muncul di tutorial baru bahkan untuk pemula. Jadi ada baiknya untuk melihatnya.
sumber
cprogramming.com
.Tentu saja, berkenaan dengan teknologi apa pun yang terkait, menjadi up to date dengan materi terbaru selalu merupakan langkah yang cerdas, namun, perubahan yang diperkenalkan dalam C ++ 11 dirancang untuk tidak mengganggu. Jika Anda baru mengenal C ++ (atau pemrograman secara umum), ini bukan sesuatu yang saya khawatirkan.
Selain itu, jika Anda seorang programmer profesional, Anda bisa bertaruh Anda akan bekerja pada kode orang lain di masa depan, sehingga selalu ada nilai dalam memahami cara kerja sesuatu, bahkan jika itu adalah teknik yang terdepresiasi dalam praktiknya.
sumber
auto
dan eksekusi fungsi asinkron melakukan apa-apa selain "goyang perahu"?