Apakah umum bagi seorang programmer untuk tidak mengetahui perbedaan antara C dan C ++? [Tutup]

16

Selama wawancara, saya ditanya apakah saya tahu perbedaan antara C dan C ++.

Saya bertanya-tanya mengapa pertanyaan seperti itu diajukan?

Stella Lie
sumber
11
Mengingat jumlah pertanyaan C yang saya lihat hanya dalam beberapa minggu terakhir ditandai C ++ Saya akan mengatakan itu adalah pertanyaan yang cukup penting.
Gort the Robot
13
Menilai oleh seberapa sering saya melihat "C / C ++", saya akan mengatakan itu sangat umum.
user16764
6
Apa yang kamu jawab?
Dima
8
Sudah umum bagi pelamar pekerjaan pemrograman untuk tidak tahu apa-apa. Tetapi saya tidak akan menyebut orang itu seorang programmer.
vartec
6
@ Metro - Anda mengerti ada sistem di mana byte tidak 8 bit kan?
Ramhound

Jawaban:

25

Jika pertanyaan diutarakan seperti "Apakah Anda tahu perbedaan antara C dan C ++?" dan Anda diizinkan untuk hanya menjawab dengan "Ya" maka saya bisa melihat kebingungan Anda, tetapi jika mereka benar-benar bertanya "Apa-apa- perbedaan antara C dan C ++?" dan jawaban yang lebih terbuka diharapkan, saya bisa melihatnya sebagai "jalan penyelidikan" yang sah seperti yang mereka katakan.

Sebagai contoh, hanya pernah memiliki kode dalam C dan tidak pernah dalam C ++, saya hampir tidak akan mampu menjawab melampaui samar "C ++ mendukung pengkodean berorientasi objek?".

Kzqai
sumber
40

Beberapa orang telah mengamati bahwa ada sejumlah besar pelamar pekerjaan pemrograman yang tidak dapat menulis kode sama sekali . Jadi, ya, mengajukan pertanyaan "jelas" masuk akal.

Heinzi
sumber
7
Ini akan menjadi jawaban saya. Setelah mewawancarai orang-orang untuk posisi pemrograman, saya dapat memberitahu Anda mengajukan pertanyaan yang jelas akan memotong sejumlah kandidat dengan sangat mudah.
Tyanna
Satu juta suara positif untuk Anda. Saya sangat kagum pada pertanyaan tingkat pemula sehingga banyak yang diwawancarai tidak bisa menjawab.
HLGEM
1
Kemudian lagi, saya telah memprogram selama lebih dari 25 tahun dan ada beberapa pertanyaan tingkat pemula yang tidak dapat saya jawab lagi (semakin buruk jika Anda meminta definisi). Saya melihat artikel yang ditautkan dalam jawaban ini dan saya seperti "hmmm ya izinkan saya memikirkannya sebentar", sedangkan di tempat kerja saya bekerja untuk mengimplementasikan sistem yang agak rumit dan umumnya tidak memiliki banyak masalah dengan solusi. Beberapa pertanyaan kecil itu membuatku takut lebih dari sistem multi-tier dan melempar beberapa fungsi multithreaded, omong kosong seperti itu ... Aneh, aku tahu.
MetalMikester
1
memang. Seperti yang didiskusikan pada utas P.SE lainnya, untuk wawancara saya sudah terbiasa memulai dengan pertanyaan yang sangat jelas ("bagaimana Anda mendeklarasikan variabel dalam JS?", "Berapa byte untuk 1 int di Jawa?", " apa itu pointer? "dll ...). Saya tidak keberatan kesalahan pertama (stres adalah faktor, bahkan jika saya memulai wawancara dengan percakapan untuk menenangkan mereka), tetapi biasanya jika saya bisa mendapatkan 3 pukulan sebelum mencapai pertanyaan yang layak, maka saya menganggap sangat tepat untuk menutup telepon tanpa pergi lebih lanjut atau menendang mereka. 5 menit yang dibutuhkan untuk mengajukan pertanyaan bodoh sepadan dengan waktu yang dihemat.
haylem
3
Bahkan, saya bahkan meminta maaf sebelum mengajukan pertanyaan pertama ini, karena saya tidak ingin pelamar yang terampil menjadi aneh oleh mereka, atau berpikir saya tidak menganggapnya serius dan merasa mereka tidak pantas berada di sini.
haylem
8

Ada banyak dari mereka. Ada banyak sekali orang yang memiliki dosen bodoh yang mengajarkan C-string dan newdan delete, atau tutorial yang sudah ketinggalan zaman atau buku-buku buruk, yang belajar "C ++" tetapi sebenarnya C, yang berpikir keduanya cukup dekat.

Tentu saja, jika Anda seorang majikan, maka mengatakan bahwa mereka sama atau bahkan serupa adalah lampu peringatan besar.

DeadMG
sumber
2
Ini memunculkan poin yang sangat bagus. Dapat diterima dan mungkin bahkan umum untuk mengajar C tetapi menggunakan kompiler C ++. Ini tentu saja menyebabkan kebingungan oleh siswa yang tidak pernah belajar perbedaan utama antara C dan C ++. Saya hanya berbicara tentang perbedaan besar antara revisi yang sama.
Ramhound
4
@Ramhound: Tidak bisa diterima sama sekali . Fakta bahwa itu umum adalah ortogonal.
DeadMG
1
Fakta yang menyedihkan adalah bahwa C dan C ++ hampir secara universal diajarkan dengan buruk. Pergi ke SO dan lihat melalui tag C dan C ++, dan Anda akan melihat kesalahpahaman yang sama, interpretasi yang salah yang sama, praktik buruk yang sama berulang-ulang. Ini bukan orang yang secara acak membuat kesalahan yang sama; mereka diajari cara membuat kesalahan ini. "Profesor saya bilang ..." hampir secara universal menjadi bendera merah bagi saya sekarang.
John Bode
5

Ada juga sebagian kecil orang (seperti saya) yang belajar C ++ sebelum mereka belajar C.

Saya yakin Anda tahu perbedaannya, tetapi jika Anda seorang siswa yang hanya memiliki kelas C ++, dan bukan kelas C bagian-bagian dari C ++ yang tidak kompatibel dengan C tidak akan jelas.

Beberapa perbedaan yang lebih jelas yang saya pelajari (bukan daftar lengkap) ( ) tipe data struct awalnya tidak dapat berisi fungsi, dan tidak dapat memiliki anggota pribadi, artinya sangat sulit untuk Menegakkan aturan validitas dari tipe data abstrak dalam C. ( ) kelas tidak didukung dalam C ( ) lewat referensi menggunakan operator ampersand khusus untuk C ++ ( ) C tidak mendukung stream atau templat (*) malloc dan gratis dimaksudkan hanya untuk digunakan di C dan tidak di C ++

AB
sumber
2
Saya pikir ini adalah wawasan kunci ... di masa lalu, Anda memiliki kompiler C, kemudian datanglah C ++, jadi Anda mempelajari perbedaannya. Sekarang Anda memiliki kompiler C / C ++ dan jika Anda diajari C ++ secara eksplisit, sangat tidak mungkin untuk mengetahui apa itu C dan apa yang C ++ melampaui "hal-hal yang Berorientasi Objek" Juga, saya tidak yakin C / C ++ adalah yang paling umum bahasa untuk belajar dalam kemarahan (?)
Al Biglan
1
Saya sangat berharap persentasenya tidak kecil, karena mereka yang "dikonversi ke C ++" programmer C sering kali adalah programmer C ++ yang sangat buruk .
sbi
1

Sayangnya, saya pikir ini menjadi semakin umum.

Saya berpikir bahwa programmer muda yang baru keluar dari sekolah teknik (atau di mana mereka belajar keterampilan mereka) tidak belajar bahasa yang lebih tua seperti C, C ++, Lisp, OCaml, dll. Mereka hanya keluar sebagai "c # programmer" atau "programmer java" ", dll. Dan ketika mereka menemukan pekerjaan, mereka tidak menantang diri mereka sendiri dengan belajar bahasa lain.

Tentu saja ada beberapa yang melakukannya, tetapi dari yang telah saya kerjakan, ada kecenderungan umum bagi programmer muda untuk mengikuti pola ini.

Penafian: Karena saya berbicara tentang pendidikan, maka tentu saja akan ada perbedaan dari satu negara ke negara lain tentang apa yang ditekankan dalam pendidikan.

Pete
sumber
Universitas apa yang kamu bicarakan? Bahasa "Arcane"? Saya harus belajar perakitan untuk MIPS di universitas Roma ...
Виталий Олегович
Secara umum, programmer "muda" yang saya temui memiliki gelar di bidang teknik. Kalau dipikir-pikir, hampir semua programmer saya bekerja dengan memiliki gelar di bidang teknik, termasuk saya.
Pete
1
C dan C ++ masih diajarkan di sekolah. Masalahnya adalah sebagian besar waktu kompiler yang sama digunakan untuk mengajar keduanya. Ini berarti mereka tidak pernah benar-benar mempelajari perbedaan antara kedua bahasa.
Ramhound
@Pete Jika saya keluar sebagai 'C # programmer' saya tidak bisa membayangkan akan belajar C atau C ++ sebagai 'bahasa lain'. Tentunya saya suka Ruby, Haskell, Javascript, Python. Bahasa C-family cukup dekat sehingga pengetahuan satu saja sudah cukup.
Kirk Broadhurst
0

Mungkin tidak secara harfiah, karena mereka berpikir C ++ dan C adalah satu dan sama, tetapi dalam hal benar-benar memahami dan mampu menggunakan fitur-fitur berbeda dari C ++, ya.

Penyebab utama adalah sifat biner dari daftar bahasa / alat pada resume / CV Anda. Pada dasarnya, standarnya adalah jika Anda mendapat "Hello World" untuk dikompilasi dan dijalankan dalam bahasa, tidak apa-apa untuk mencantumkannya di resume / CV Anda.

Ketika itu terjadi, versi C dari "Hello, World!" juga mengkompilasi dan menjalankan C ++. Jadi, tidak ada informasi lain, semua yang melihat "C ++" di resume memberi tahu saya bahwa orang ini cukup tahu C untuk mendapatkan "Halo, Dunia!" berjalan, dan tahu bahwa sebagian besar program C akan dikompilasi dalam C ++.

Mengingat itu, saya perlu menyelidiki sedikit tentang wawancara itu. Saya mungkin tidak akan melakukannya dengan bertanya "Ya / Tidak" "Apakah Anda tahu bedanya?" singkatnya, karena memiliki jawaban "benar" yang jelas. Saya mungkin akan bertanya kepada kandidat bahasa mana yang lebih disukainya, mengapa, dan jika ada kelebihan apa pun yang tidak dia pilih.

JohnMcG
sumber
0

Menjawab

Ya, itu biasa. Saya telah melihat situasi ini, baik saya sendiri, rekan kerja, atau kode perpustakaan pihak ketiga.

Saya sendiri, misalnya, kadang-kadang bekerja dengan bahasa pemrograman lain atau kerangka kerja pemrograman, dan harus menautkan, atau memperbarui, ke pustaka "pure c" atau "c ++".

Saya baru saja mengalami masalah dalam memodifikasi beberapa kode "Pure C". Dan menggunakan fungsi alokasi memori "baru" & "hapus", yaitu "c ++". Sisa kode tidak berorientasi objek

Kompilernya adalah C ++. Kemudian, saya menggugat kompiler lain, dan menemukan kesalahan.

Bonus

Jika seseorang bertanya, secara lisan, atau dalam tes tertulis, atau tes online web:

"Apakah kamu tahu perbedaan antara C atau C ++"

Dan Anda menjawab "Ya" atau "Tidak".

Mereka benar-benar berarti:

"Apakah kamu tahu perbedaan antara C atau C ++, jika kamu tolong beri tahu aku?"

Jadi, Anda harus menjawab:

"Ya. Perbedaannya adalah C ++ yang Berorientasi Objek, meskipun, Anda dapat menggunakan Pure C, di dalam program C ++, untuk kompatibilitas mundur."

Kadang-kadang, mereka tidak akan bertanya "jika Anda tolong beri tahu saya", dan mereka akan menganggap bahwa Anda tidak tahu. Jangan hanya menjawab "ya", atau "tidak".

umlcat
sumber
2
Yah, saya tidak berpikir jawaban itu sepenuhnya benar. Jawaban yang tepat adalah bahwa C ++ memiliki dukungan kuat untuk kode Berorientasi Objek. Itu tidak membutuhkannya. (Yang merupakan sumber kebingungan ini sejak awal.)
Gort the Robot
Juga "Anda dapat menggunakan Pure C di dalam program C ++" dapat berarti sesuatu seperti "C ++ adalah superset dari C, yaitu program C yang valid juga merupakan program C ++ yang valid" (salah). Atau itu mungkin berarti "Anda dapat menautkan program C ++ ke perpustakaan C" (benar, tetapi sebagian besar bahasa dapat menautkan ke perpustakaan C dengan cara apa pun.) Anda harus lebih tepat dalam wawancara yang sebenarnya.
nikie
-2

Edit

Sebagai kata pengantar, perhatikan bahwa jawaban ini tidak dimaksudkan untuk menyatakan bahwa tidak ada perbedaan atau bahwa saya mengaku tahu perbedaannya, atau bahkan yang saya tahu selain "Hello World" dalam C atau C ++. Ini adalah jawaban untuk pertanyaan dengan menyusun kerangka acuan, menunjukkan bahwa banyak orang mengetahui perbedaan mendasar (misalnya seseorang memiliki beberapa +karakter dalam namanya) dan sangat sedikit orang yang tahu semua atau bahkan sebagian besar perbedaan.


Itu tergantung apa yang Anda maksud dengan 'programmer' dan apa yang Anda maksud dengan 'perbedaan'.

Saya seorang 'programmer' (walaupun saya menyebut diri saya seorang pengembang) dan saya akan berjuang untuk memberikan perbedaan nyata antara C dan C ++. Jika ditekan saya mungkin akan mengatakan bahwa C ++ adalah superset dari C yang memiliki ruang nama dan warisan; berbagai cara berurusan dengan memori. Saya cukup tahu untuk menambal beberapa bug atau membuat beberapa perubahan pada program Anda yang sudah ada, tetapi saya tidak bisa membayangkan menulis apa pun selain utilitas sederhana di C atau C ++. Saya cukup tahu untuk bertahan, tetapi saya tidak melukis diri saya sebagai "mengetahui" salah satu dari bahasa-bahasa itu.

Saya tahu 'programmer' lain (juga pengembang) yang bahkan tidak akan memberi tahu Anda perbedaan antara Java dan FORTRAN, atau Javascript dan Pascal. Mereka bagus dalam apa yang mereka lakukan dan mereka tidak melakukan bahasa prosedural.

Lalu ada jutaan pemrogram biasa-biasa saja yang nyaris tidak tahu bahasa tunggal yang mereka gunakan setiap hari.

Istilah 'perbedaan' bersifat ambivalen. Saya telah menunjukkan apa yang saya lihat sebagai beberapa perbedaan di atas, tetapi saya tahu mereka tidak pasti dan lengkap. Sangat sedikit orang yang akan mengetahui setiap perbedaan - lebih banyak orang akan dapat memberikan beberapa jawaban yang kabur (seperti yang saya miliki) tentang orientasi objek.

Kirk Broadhurst
sumber
5
"Aku akan berjuang untuk memberikan perbedaan nyata antara C dan C ++." Anda tentu saja bukan seorang programmer C ++. Silahkan?
sbi
2
C dan C ++ adalah bahasa yang sangat berbeda, dikodekan dengan cara yang sangat berbeda. Anda jelas tidak tahu mereka.
DeadMG
@ sbi "Saya tidak melukis diri saya sebagai" mengetahui "salah satu dari bahasa-bahasa itu." Aku akan membiarkanmu memutuskan itu untuk dirimu sendiri.
Kirk Broadhurst
Ada umpan balik tentang downvotes? Apakah karena saya tidak tahu perbedaan antara keduanya? Saya tidak akan menganggap itu akan mendiskualifikasi saya untuk menjawab pertanyaan.
Kirk Broadhurst
1
@KirkBroadhurst: Saya pikir saya telah menunjukkan bagian mana dari jawaban Anda yang saya tidak suka untuk turunkan suaranya, dan komentar itu dihapuskan lima kali lebih sering dari yang Anda turunkan setelah itu, jadi saya tidak yakin penjelasan apa yang Anda cari. Namun, untuk menjelaskan: Istilah "perbedaan" cukup di sini, karena C dan C ++ hanya berbagi kesamaan sintaksis yang dangkal, dan, selain itu, adalah bahasa yang sangat berbeda. Mengenai kualifikasi: Saya rasa tidak ada kualifikasi yang diperlukan untuk menjawab di sini, tetapi ketika jawaban secara terang-terangan salah seperti yang ini, itu akan dianggap tidak relevan dengan kualifikasi.
sbi
-3

Apakah umum bagi seorang programmer untuk tidak mengetahui perbedaan antara C dan C ++?

Dua puluh tahun yang lalu? Iya.

Hari ini? Tidak terlalu banyak.

Alasan untuk ini adalah karena lanskap pemrograman telah berubah secara besar-besaran. Banyak program saat ini berbasis web; bahkan program yang ditulis untuk desktop dapat ditulis dalam bahasa tingkat yang lebih tinggi daripada C atau C ++. Karena itu, kecuali Anda seorang programmer yang menulis kode OS, Anda mungkin tidak tahu banyak tentang kedua bahasa tersebut.

Seorang pewawancara dapat mengajukan pertanyaan ini dalam sebuah wawancara untuk mengukur seberapa banyak Anda tahu tentang dasar-dasar pemrograman; jika Anda tahu perbedaan antara C dan C ++, maka Anda mungkin tahu apa itu pemrograman berorientasi objek, Anda mungkin memahami perpustakaan dan kompiler, Anda memahami fungsi memori, referensi, pointer .... banyak hal yang telah mempengaruhi bahasa pemrograman saat ini . Saya tidak banyak menggunakan C ++ (dan saya tidak bisa mengatakan bahwa saya adalah programmer yang hebat dalam bahasa apa pun; kebijaksanaan akan datang seiring waktu) tetapi saya dapat mengatakan bahwa pengalaman saya dengan C ++ telah membuat saya menjadi programmer yang lebih baik.

makan siangme317
sumber
8
Akan mengatakan sebaliknya. Saya melihat lebih banyak orang bingung sekarang daripada 5 hingga 10 tahun yang lalu.
haylem
@Haylem Melihat ke belakang, saya pikir saya bermaksud mengatakan sebaliknya .... ups.
lunchmeat317