Saya seorang pemula. Bisakah saya langsung mulai belajar C ++ 11? atau saya harus belajar C ++ lama? [Tutup]

36

Saya seorang pemula dan hanya memiliki sedikit pengetahuan dalam pemrograman.

Apakah lebih baik jika saya langsung belajar C ++ dari buku yang mencakup C ++ 11 baru atau haruskah saya belajar melalui buku C ++ terbaik lama?

Haruskah saya memiliki sedikit pengetahuan tentang C ++ sebelum belajar C ++ 11? atau saya bisa mulai langsung dari sana?

Apakah akan menimbulkan masalah jika saya langsung mulai dari C ++ 11? Jika tidak, maka sarankan beberapa buku tentang C ++ 11.

Dhananjay
sumber
18
Mengapa poin negatif itu? Apakah pertanyaan ini sudah dijawab? Bukankah pemula diperbolehkan untuk bertanya? Apakah seseorang melakukan penelitian ulang dalam hal ini? Saya pikir salah satu cara terbaik adalah bertanya kepada orang-orang dengan pengalaman lebih. +1, karena pemula juga layak dipandu
adosaiguas
12
@Simon, ini terdengar bagi saya sebagai pertanyaan konseptual tentang pengembangan perangkat lunak: Di mana saya mulai? Dan bagaimana Anda tahu dia bukan programmer profesional? ;)
adosaiguas
4
@Malters Berbicara tentang buku; Accelerated C ++ adalah buku yang luar biasa, meskipun sedikit disederhanakan. Barbara E. Moo adalah seorang penulis yang luar biasa dan pengaruhnya terhadap buku mudah dicatat. Tapi buku yang bersangkutan memang adalah "tua". Namun tidak semua harapan hilang - ada buku berperingkat tinggi yang disebut C ++ Primer oleh Lippman , Lajoie dan Barbara E. Moo , edisi kelima diterbitkan bulan ini (Agustus 2012) dan dari beberapa bab pertama saya telah membaca dari saya salin, ini adalah buku bagus yang mencakup C ++ 11. Pengaruh Moo hadir, lagi. Dia seorang dewi dalam hal penulisan teknis.
zxcdw
2
@Simon Programmers — Stack Exchange is a site for professional programmers... Dalam hal ini, maukah Anda membimbing saya ke situs untuk programmer pemula? Saya juga seorang pemula pengkodean dan saya akan memiliki beberapa pertanyaan mendasar ...
Jeyekomon
2
Saya pikir pertanyaan ini jelas di luar topik karena FAQ (mungkin itu bukan pada saat ditanyai terlebih dahulu). Ia bertanya "bahasa (versi) mana yang harus saya ambil selanjutnya", ini tentang nasihat pendidikan dan meminta sumber daya yang tidak sesuai ukuran - tiga alasan penutupan standar.
Doc Brown

Jawaban:

38

Ada banyak peningkatan kegunaan yang membuat C ++ 11 lebih mudah dipahami oleh pemula, terutama yang memiliki pengalaman dalam bahasa lain dengan fitur-fitur tersebut. Perubahan lain dalam C ++ 11 hanya menarik bagi pengguna tingkat lanjut, sehingga Anda mungkin akan kewalahan jika mengambil buku yang sebagian besar dirancang untuk mengajarkan perbedaan. Pastikan buku apa pun yang Anda dapatkan dirancang untuk pemula yang lengkap ke C ++.

Yang sedang berkata, Anda mungkin harus belajar cara lama pada akhirnya, karena ada banyak kode yang ada di luar sana, dan bahkan kode C ++ 11 baru akan berisi cara lama dalam melakukan sesuatu jika programmer memilihnya. Saya menulis C ++ untuk mencari nafkah, dan perusahaan saya masih belum sempat mengevaluasi kompiler yang kompatibel dengan C ++ 11, apalagi menggunakannya dalam produksi.

Karl Bielefeldt
sumber
Saya belajar dari c ++ primer edisi ke-4. buku yang bagus untuk memulai ??
Dhananjay
1
Ini mendapat ulasan bagus dan terlihat berada di level yang tepat, tapi saya belum melihat buku C ++ tingkat pemula dalam waktu yang lama , jadi saya bukan orang terbaik untuk bertanya. Saya pikir Anda akan memerlukan edisi ke-5 jika Anda ingin C ++ 11 dibahas.
Karl Bielefeldt
ok dan yah saya tahu sampul edisi ke-5 c ++ 11.
Dhananjay
10

Anda tidak perlu menggunakan C ++ lama untuk mulai menggunakan C ++ 11, ada fitur-fitur baru di C ++ 11 tetapi penggunaannya opsional. Mengetahui cara menggunakan fitur C ++ 11 bisa menjadi keuntungan, tentu tidak akan merugikan ketika bekerja dengan leg-base kode (pra 11) setelah Anda tahu keanehan dari versi yang lebih lama.

Belajar C ++ akan menjadi tempat yang baik untuk mulai belajar dan Lampiran B akan mengajarkan Anda fitur-fitur C ++ 11 setelah Anda mempelajari dasar-dasarnya.

Saya dapat melihat mengapa beberapa orang menyarankan Java / CSharp dll sebagai bahasa alternatif yang lebih mudah tapi saya belajar sedikit C ++ sebelum pindah ke CSharp dan saya bukan programmer yang lebih buruk karena itu, sebaliknya, kemampuan pemrograman jauh lebih dalam daripada bahasa. sintaks / fungsionalitas dan dengan dasar yang kuat dalam C ++ Anda dapat mempelajari bahasa OOP penting lainnya dengan mudah.

Joel
sumber
8

Sulit dikatakan.

Old C ++ lebih merupakan ladang ranjau, dan senang mempelajari cara menavigasi binatang buas semacam itu. Ini juga akan membuat Anda memahami mengapa segala sesuatunya dilakukan sebagaimana adanya, dan apa implikasi dari konstruk yang berbeda.

Kemudian lagi, C ++ lama bukan yang Anda inginkan ketika Anda menulis kode.

Tapi kemudian, sekali lagi, C ++ lama adalah apa yang banyak industri akan berputar selama 20 tahun lagi.

Saya suka C ++ 11, tetapi hanya dapat digunakan di startup untuk saat ini. Tidak di basis kode warisan yang besar. Dan melompat langsung ke C ++ 11 mungkin meninggalkan Anda dengan keterampilan yang tidak berkembang di bagian-bagian C ++ jahat. Yang akan menjadi bumerang setelah beberapa C ++ 11 membangun kebocoran, atau crash karena digunakan dalam cara yang benar secara sintaksis, tetapi secara logis tidak benar.

Coder
sumber
Mengapa sebagian besar industri tidak memperbarui kompiler di sana, di samping bidang sistem yang dibenamkan khusus? Risiko (bahkan dengan unit test)? Konservatisme?
TheLQ
1
@TheLQ: Saya kira ... Tapi ketika saya berpikir apa yang akan saya lakukan jika saya seorang bos, sangat mungkin saya akan melakukan hal yang sama. Kecuali ada penghematan biaya vs biaya migrasi.
Coder
1
@TheLQ: Diperlukan basis kode untuk berpindah ke versi kompiler yang lebih baru. Sangat jarang bahwa proyek akan mengadaptasi versi kompiler baru mau tak mau. Sebuah proyek baru lebih mungkin menggunakan kompiler baru (asalkan tidak berinteraksi dengan kode lama).
Martin York
1
@Coder: Apa yang membuat C ++ 11 berbeda dari C ++ 03 yang mempelajarinya tidak akan menerjemahkan langsung ke C ++ 03. Ada beberapa fitur baru yang membuat semuanya lebih mudah untuk ditulis tetapi tidak ada yang mencegah Anda melangkah di ladang ranjau itu.
Martin York
1
@TheLQ: ya itu pada dasarnya proses tetapi Anda lupa pengujian integrasi (bagian yang paling kompleks. Tidak semua aplikasi standalone (infact saya akan mengatakan bahwa ini adalah minoritas)). Anda perlu memverifikasi bahwa semua kode Anda berfungsi dan berinteraksi dengan benar (tidak hanya dengan kode Anda tetapi dengan kode pelanggan). Ini adalah proses berbulan-bulan jika bukan yeas pengujian dan validasi. Jika beberapa pelanggan Anda tidak pindah ke C ++ 11 maka Anda mungkin perlu mempertahankan kedua versi pada beberapa sistem (untungnya gcc sangat baik dengan kompatibilitas ke belakang tetapi tidak semua vendor kompiler C ++).
Martin York
8

Meskipun banyak perbaikan dalam C++11, C++masih bukan bahasa yang mudah. Java, walaupun tidak semudah yang diperkirakan, masih merupakan bahasa yang lebih mudah dengan kinerja yang sangat baik (seringkali hampir secepat C++) dan menawarkan IDE yang lebih baik (mungkin Visual C++sebagus IDE Java saat ini tetapi tidak beruntung di Linux), banyak perpustakaan standar yang lebih komprehensif (JDK), lebih banyak perpustakaan (misalnya Hibernate , Spring , JEE , Lucene , dll) dan tidak ada kebocoran memori (well, hampir tidak ada - Anda masih dapat membangun kebocoran memori di Jawa tetapi lebih sulit untuk melakukannya dari pada C++). Agar adil, dengan modernC++11 , jauh lebih mudah untuk menghindari perai ingatan.

C ++ 11 memiliki banyak fitur keren seperti lambdas, kata kunci otomatis, pindahkan semantik dan banyak lagi. Ini jelas merupakan bahasa yang jauh lebih baik daripada C++98sebelumnya. Lihat ikhtisar ini oleh Herb Sutter tentang fitur-fitur baru di C++11: Elemen C++Gaya Modern .

Singkatnya, saya pikir semua orang harus belajar setidaknya beberapa C++. Jika Anda telah pemrograman di Java, Scala, Rubyatau Pythonselama sepuluh tahun terakhir dan tidak pernah menyentuh Catau C++, sekarang dengan C++11saya pikir itu adalah waktu untuk belajar C++11dan meningkatkan kemampuan pemrograman Anda saat melakukannya.

Saya mungkin tidak akan menggunakan C++banyak di tempat kerja di tahun-tahun mendatang dan ketika saya membutuhkan bahasa yang lebih kuat daripada Java, saya mungkin akan pergi untuk Scala, tetapi saya akan melihat lebih dekat C++11dan mencoba untuk belajar dan memahami fitur-fitur baru, terutama orang-orang tentang multithreading dan konkurensi.

Ingat: Selalu membantu untuk mempelajari bahasa pemrograman baru bahkan ketika Anda tidak berencana menggunakannya dalam produksi.

Jenny Casarino
sumber
1

Ambil napas dalam-dalam dan baca artikel ini oleh Peter Norvig.

Sudahkah Anda membaca itu? Ok, jika Anda seorang pemula, Anda harus mulai dalam langkah-langkah kecil. -masukkan bahasa di sini- bisa datang nanti, periksa Coursera atau Udacity untuk beberapa kursus pengenalan ilmu komputer pemula.

Setelah menyelesaikan itu, saya akan menyarankan perlahan - lahan bekerja dengan cara Anda melalui bahasa pemrograman C & K jika Anda diatur pada bahasa 'C'.

Bekerja pada dasar-dasar, sisanya akan tiba pada waktunya.

lwm
sumber
10
Saya tidak melihat bagaimana ini menjawab pertanyaan yang diajukan. C bahkan bukan bahasa yang sama dengan C ++.
vartec
1
Tetapi C ++ didasarkan pada C, dan sebagian besar kompatibel dengan mundur: sebagian besar sintaks C modern secara langsung berlaku untuk C ++. Karena C lebih sederhana daripada versi C ++ apa pun, belajar C pertama memberi Anda pendidikan koheren yang bagus dalam sintaks dan semantik C ++ dasar - dan membantu menjelaskan beberapa kutil yang tidak dapat dipahami pada bahasa yang lebih besar ...
comingstorm
2
@ datangstorm Hal pertama yang harus dilakukan oleh seorang programmer C adalah untuk menghapuskan hampir semua yang ia ketahui tentang C, dan kemudian mulai belajar C ++. Ada perbedaan halus yang mungkin menggigit Anda.
BЈовић
1
Ditambah kode C ++ idiomatis modern tidak meminjam banyak dari C selain dari sintaks. Bukannya kita masih menggunakan C-string dan malloc / gratis lagi. Sebagai pemula yang lengkap untuk bahasa ini Anda lebih baik mengambil buku seperti C ++ Primer edisi ke-5, Accelerated C ++, dll daripada berfokus pada C.
bstamour
1

Buku pengantar terbaru tentang C ++ juga semakin banyak membahas C ++ 11. Saya membaca Sam's Teach Yourself C ++ setelah bekerja dengan bahasa skrip tetapi tidak C / C ++ selama hampir sepuluh tahun dan merasa sangat membantu. Saya dengan cepat menjadi fasih dalam ide sentral C ++ (termasuk banyak STL) dan menyadari banyak sekali detail yang berbeda dalam C ++ 11.

Seperti beberapa poster lain sebutkan, C ++ 11 dalam banyak hal lebih mudah daripada standar yang lebih lama dengan penambahan gaya scripting seperti auto, for(int &i : m_vector){}dll. Jadi jika "sedikit pengetahuan" Anda berasal dari bahasa seperti Python atau Matlab, Anda akan menemukan C ++ 11 agak lebih "alami" daripada standar sebelumnya.

Saya juga akan menunjukkan bahwa sekarang, kompatibilitas kompiler untuk C ++ 11 sudah ( hampir ) lengkap sehingga memiliki kode yang "terlalu terkini untuk dikompilasi" tidak lagi menjadi masalah.

Singkatnya, lakukanlah.

mmdanziger
sumber
-1

Ketika waktu saya, C dianggap sebagai prasyarat C ++, terutama bagi mereka pemula pemrograman. Karena Anda harus mencari tahu apa yang dilakukan bahasa dan mengapa bahasa itu dirancang seperti itu. C mendapatkan banyak sekali ide bagus dan cukup bahasa pemrograman, yang tidak akan pernah ketinggalan zaman. Jadi, saya percaya ini adalah awal terbaik.

Dan setelah memiliki beberapa sudut pandang dasar mengenai hal-hal pemrograman, Anda mungkin harus memilih apa yang harus dilakukan sebagai langkah selanjutnya, yang berarti, pilih bahasa untuk dipelajari sedalam mungkin. Tidak peduli seberapa dalam Anda mendapatkan, umumnya dapat memutuskan seberapa dalam Anda bisa untuk bahasa lain, yang berarti, tidak peduli berapa banyak bahasa yang telah Anda pelajari, yang terdalam akan selalu menjadi yang pertama yang Anda gali. Bagi saya, saya telah melakukan penelitian tentang Java dan membuat beberapa model Java sendiri untuk lebih memahami fungsi kernelnya.

Setelah itu, Anda mungkin dapat mempelajari apa pun yang Anda inginkan, karena Anda benar-benar memahami teknologi bahasa pemrograman. Saya sudah mulai belajar C #, Go, Python bahkan Scala dan telah melakukan banyak proyek untuk bersenang-senang / bekerja. Catatan pribadi adalah 3 bulan dari mulai belajar bahasa hingga menjadi 1.0 kepala proyek yang sedang berkembang.

Dalam kasus saya, sudah lebih dari 15 tahun sejak program pertama saya dan saya bahkan tidak ingat apa itu. Saya percaya jika Anda bekerja cukup keras, Anda pasti akan menjadi lebih baik dan lebih cepat daripada saya.

WinstonWu
sumber
ini tidak menjawab pertanyaan yang diajukan
nyamuk
Benar-benar minta maaf. Hanya ingin mengatakan, tidak juga. Tidak masalah apa yang ingin Anda pelajari akhirnya, hanya dasar bahasa pemrograman yang dapat memutuskan seberapa dalam Anda dapat menggali di bidang ini. Pada saat yang sama, Anda harus meluangkan lebih banyak waktu untuk itu daripada melakukan pukulan cepat.
WinstonWu
-2

Sebagai seorang pemula saya pikir pertama Anda harus melalui konsep C ++ karena C ++ 11 dan semuanya seperti versi baru tetapi C dan C ++ adalah dasar untuk semua jenis pengembangan. Setelah Anda mempelajari C ++ sebagian besar konsep akan dihapus secara otomatis.

Pooja Runija
sumber
1
Selamat Datang di Programmer! Saya tidak yakin jawaban Anda menambah banyak pertanyaan ini; dan secara tata bahasa sedikit berantakan. Saya mengalami kesulitan mengikuti apa yang ingin Anda katakan. Bisakah Anda memperluas jawaban Anda, mungkin menambahkan contoh mengapa C ++ 11 sangat berbeda sehingga belajar C dan versi sebelumnya dari standar C ++ lebih baik?
Martijn Pieters
-3

C ++ adalah bahasa yang sangat hebat dan kuat. Namun itu juga menempatkan banyak tanggung jawab pada programmer.

Jika Anda benar-benar baru dalam pemrograman, buat hidup Anda lebih mudah dan mulailah dengan C #. Sintaksinya didasarkan pada C ++, tetapi penanganan kesalahannya jauh lebih ramah pemula dalam membantu Anda ketika ada masalah.

Jika Anda merasa nyaman dengan metode, kelas, warisan dan ingin berkembang di lingkungan di mana mengelola memori dan sumber daya sistem lebih penting daripada produktivitas, maka C ++ adalah pilihan yang baik, dan saya akan mulai dengan mempelajari standar saat ini. Ingatlah bahwa C ++ mengharuskan Anda untuk memahami memori dan mengelolanya secara aktif. Buat kesalahan di sini, dan yang Anda dapatkan hanyalah inti yang dibuang, atau data Anda berisi byte yang tidak masuk akal. Dan seringkali titik di mana Anda menemukan masalah tidak terkait dengan di mana penyebabnya sebenarnya.

Michael Shaw
sumber
1
Jika seseorang mulai dengan C #, (s) ia akan terbiasa dengan program pada level tinggi (OOP, manajemen memori otomatis) tanpa benar-benar mengetahui apa yang terjadi "di belakang layar". Jika orang itu kemudian pindah ke C ++, (s) ia akan kekurangan pengetahuan penting tentang C / C ++ (saya berpikir sebagian besar tentang manajemen memori, tetapi masih ada lagi). Mungkin bahkan lebih menyesatkan karena fakta bahwa C ++ dan C # berbagi sintaks yang sangat mirip, tetapi apa yang sebenarnya dikompilasi oleh kode, sama sekali berbeda. Perlu diingat bahwa OP dengan jelas menyatakan minatnya pada C ++.
Eti
OP juga menyatakan mereka memiliki sedikit pengetahuan tentang pemrograman. mempelajari bahasa pertama Anda sebagai C ++ adalah tantangan besar. Jauh lebih baik untuk memilih pertempuran Anda dan memilih serangkaian yang lebih kecil, karena Anda jauh lebih mungkin untuk berhasil.
Michael Shaw
-6

Mengapa Anda ingin memulai dengan C ++?

Saya pribadi merekomendasikan C ++ sebagai bahasa pertama. Ini rumit, rumit, sulit ... hanya level yang jauh lebih rendah dan lebih "tidak aman" daripada kebanyakan bahasa pemrograman lainnya.

Saya menyarankan untuk memilih c #, java, python atau javascript ... dan buku yang bagus di sepanjang jalan. Anda akan memiliki waktu yang jauh lebih menyenangkan dengan ini.

dagnelies
sumber
3
Saya tidak setuju itu sebagai generalisasi. Pergi dari kehidupan mudah java / C # / python dll ke dunia yang lebih kompleks dari C dan C ++ tidak semudah itu. Jika Anda benar-benar siap untuk belajar bahasa pemrograman, belajar C dan C ++ itu sulit, tetapi akan memberi banyak kembali. Jika nanti Anda ingin memprogram dalam java, C #, python dll. Perubahan itu jauh lebih mudah daripada beralih dari mereka ke C atau C ++. Ringkasan: C / C ++ akan lebih sulit untuk memulai, tetapi akan membuat perubahan ke bahasa OO lainnya lebih mudah.
martiert
2
C ++ adalah fondasi terbaik untuk memulai. Pemrogramannya rumit, dan pada akhirnya Anda harus bekerja dengan perangkat keras. C ++ adalah cara yang luar biasa untuk mulai belajar itu tanpa rasa aman yang salah.
Coder
Pertanyaan op sepenuhnya bergantung pada tujuannya dengan pengembangan.
Independen
1
Saya tidak setuju dengan ini. Belajar C ++ memiliki beberapa keunggulan dan membuatnya lebih mudah untuk belajar bahasa lain seperti Java dan C # untuk beberapa nama.
Anthony
2
@ Dhananjay: C ++ berkali-kali lebih sulit daripada java ... Java seperti sepeda bayi, versi yang sangat sederhana dari C ++. Yang terakhir akan menjadi motor tanpa embel-embel tanpa rem. Jika Anda sudah menemukan java hard, C ++ akan menyebalkan. 2 sen saya.
dagnelies