Bir röportaj sırasında, C ve C ++ arasındaki farkı bilip bilmediğim soruldu.
Neden böyle bir soru sorulduğunu merak ediyordum?
Bir röportaj sırasında, C ve C ++ arasındaki farkı bilip bilmediğim soruldu.
Neden böyle bir soru sorulduğunu merak ediyordum?
Yanıtlar:
Sorular "C ve C ++ arasındaki farkı biliyor musunuz?" ve sadece "Evet" ile yanıt vermenize izin verildi, o zaman karışıklığınızı görebiliyordum, ama eğer aslında "C ve C ++ arasındaki farklar nedir?" ve daha açık uçlu bir cevap bekleniyordu, bunu söyledikleri gibi meşru bir "sorgulama yolu" olarak görebilirim.
Örneğin, sadece C ile kodlanmış ve C ++ ile hiç kodlamadan, belirsiz bir "C ++ nesne yönelimli kodlamayı destekliyor mu?"
Bazı insanlar kod yazamayan çok sayıda programlama iş başvurusunda bulunduğunu gözlemlemişlerdir . Yani, evet, "açık" sorular sormak mantıklı.
Bir sürü var. C-stringleri öğreten aptal öğretim görevlileri new
ve delete
ya da "C ++" öğrenen ama aslında C, ikisi de oldukça yakın olduğunu düşünen güncel olmayan öğreticiler veya kötü kitaplar olan bir sonsuz insan vardır.
Tabii ki, bir işverenseniz, aynı veya hatta benzer olduklarını söylemek büyük bir uyarı ışığıdır.
Ayrıca C öğrenmeden önce C ++ öğrenen küçük bir kişi (benim gibi) vardır.
Farklılıkları bildiğinizden eminim, ancak sadece C ++ sınıfı olan ve C sınıfı olmayan bir öğrenciyseniz C ++ 'ın C uyumlu olmayan kısımları belli olmayacaktır.
Öğrendiğim daha kapsamlı farklardan bazıları (ayrıntılı bir liste değil) ( ) yapı veri türleri aslında işlevler içeremedi ve özel üyeleri olamaz, yani soyut bir veri türünün geçerlilik kurallarını uygulamak çok zor C ( ) sınıfları , ampersand operatörünün C ++ 'a özel olarak referansla geçirilmesiyle C ( )' de desteklenmez. C , akışları veya şablonları (*) malloc'u desteklemez ve ücretsiz olarak yalnızca C ++
Ne yazık ki, giderek daha yaygın hale geldiğini düşünüyorum.
Genç programcıların teknik okuldan yeni çıktıklarını (veya becerilerini öğrendikleri yer) C, C ++, Lisp, OCaml, vb. Gibi eski dilleri öğrenmediklerini düşünüyorum. Sadece "c # programcılar" veya "java programcıları olarak çıkıyorlar. ", vb. Ve bir iş bulduklarında, diğer dilleri öğrenmekle uğraşmazlar.
Tabii ki bunu yapan bazı şeyler var, ama birlikte çalıştığım kişilerden, genç programcıların bu modeli takip etme yönünde genel bir eğilim var.
Feragatname: Eğitimden bahsettiğim için, elbette eğitimde nelerin vurgulandığı konusunda ülkeden ülkeye farklılıklar olabilir.
Muhtemelen tam anlamıyla değil, çünkü C ++ ve C'nin aynı olduğunu düşünüyorlar, ancak C ++ 'nın farklı özelliklerini gerçekten anlamak ve kullanabilmek açısından, evet.
Ana neden, özgeçmişiniz / CV'nizdeki dilleri / araçları listelemenin ikili doğasıdır. Temel olarak, bir dilde derlemek ve çalıştırmak için "Merhaba Dünya" varsa, özgeçmişinizde / CV'nizde listelemek daha iyidir.
Olduğu gibi, "Merhaba, Dünya!" ayrıca derler ve C ++ ile çalışır. Yani, başka bir bilgi yoksa, bir özgeçmiş "C ++" görmek bana söyler ki bu kişi "Merhaba, Dünya!" Almak için yeterli C biliyor çalışır ve çoğu C programının C ++ 'da derleneceğini bilir.
Bunu göz önüne alarak, röportajda bunu biraz araştırmam gerekecek. Muhtemelen bunu "Evet / Hayır" "diye sorarak yapmam. Farkı biliyor musunuz?" soru kısaca açık bir "doğru" cevabı olduğu için. Muhtemelen adaya hangi dili daha çok sevdiğini, nedenini ve seçmediği dilin herhangi bir avantajı varsa sorardım.
Cevap
Evet, yaygın. Bu durumu kendim, iş arkadaşlarım veya üçüncü taraf kütüphaneler koduyla gördüm.
Örneğin, kendim bazen diğer programlama dilleriyle veya programlama çerçeveleriyle çalışıyorum ve "salt c" veya "c ++" kitaplıklarına bağlanmak veya güncellemek zorundayım.
Sadece bazı "Pure C" kodunu değiştirme problemim vardı. Ve "yeni" ve "sil" bellek ayırma işlevlerini kullanarak "c ++". Kodun geri kalanı nesne yönelimli değildi
Derleyici C ++ idi. Daha sonra başka bir derleyiciye dava açtım ve hatayı keşfettim.
Bonus
Bazıları sözlü olarak veya yazılı bir testte veya web çevrimiçi testinde sorarsa:
"C veya C ++ arasındaki farkı biliyor musunuz?"
Ve siz "Evet" veya "Hayır" diye cevap veriyorsunuz.
Gerçekten demek istedikleri:
"Bana söylerseniz, C veya C ++ arasındaki farkı biliyor musunuz?"
Yani, cevap vermelisin:
"Evet. Fark onun C ++ Nesneye Yönelik olmasına rağmen, geriye doğru uyumluluk için bir C ++ programı içinde Pure C kullanabilirsiniz."
Bazen size "lütfen söylerseniz lütfen" sormazlar ve bilmediğinizi varsayarlar. Sadece "evet" veya "hayır" diye cevap vermeyin.
Düzenle
Bir ödül olarak, bu cevabın hiçbir fark olmadığını veya farkları bildiğimi, hatta C veya C ++ 'da "Merhaba Dünya" dan bildiğimi iddia ettiğimi beyan etmek olmadığını unutmayın. Bu soruya, başvuru koşullarını çerçeveleyerek, birçok insanın temel farklılıkları bildiğini (örneğin, birisinin adında bazı +
karakterler olduğunu) ve çok az insanın farklılıkların tümünü hatta çoğunu bileceğini işaret ederek sorunun cevabıdır .
Bu, 'programcı' ile ne demek istediğinize ve 'fark' ile ne demek istediğinize bağlıdır.
Ben bir programcıyım (kendimi geliştirici olarak adlandırmama rağmen) ve C ve C ++ arasında gerçek farklılıklar vermek için mücadele ediyorum. Basıldığında, büyük olasılıkla C ++ 'ın ad alanları ve mirasa sahip bir C üst kümesi olduğunu söyleyebilirim; bellekle başa çıkmanın farklı yolları. Bazı hataları düzeltmek veya mevcut programınızda bazı değişiklikler yapmak için yeterli biliyorum ama C veya C ++ basit bir yardımcı program daha başka bir şey yazma düşünemiyorum. Üstesinden gelmek için yeterli biliyorum, ama kendimi bu dillerin hiçbirini "bilmek" olarak görmüyorum.
Java ve FORTRAN veya Javascript ve Pascal arasındaki farkı bile söylemeyecek olan diğer 'programcıları da (geliştiricileri) biliyorum. Yaptıkları işte iyidirler ve prosedürel diller yapmazlar.
Sonra her gün birlikte çalıştıkları tek dili zar zor bilen milyonlarca vasat programcı var.
'Fark' terimi belirsizdir. Yukarıda bazı farklılıklar olarak gördüklerime dikkat çektim, ancak kesin ve eksiksiz olmadıklarını biliyorum. Çok az insan her farkı bilecek - çok daha fazla insan nesne yönelimi hakkında bazı belirsiz cevaplar verebilecektir.
Bir programcının C ve C ++ arasındaki farkı bilmemesi yaygın mıdır?
Yirmi yıl önce? Evet.
Bugün? Çok değil.
Bunun nedeni programlama ortamının büyük ölçüde değişmiş olmasıdır. Bugünün programlarının çoğu web tabanlıdır; masaüstü bilgisayarlar için yazılan programlar bile C veya C ++ 'dan daha yüksek bir dilde yazılabilir. Bu nedenle, işletim sistemi kodu yazan bir programcı değilseniz, iki dilden herhangi biri hakkında fazla bilgi sahibi olamayabilirsiniz.
Bir görüşmeci, röportajda programlama temelleri hakkında ne kadar bilginiz olduğunu ölçmek için bu soruyu sorabilir; C ve C ++ arasındaki farkı biliyorsanız, muhtemelen nesne odaklı programlamanın ne olduğunu bilirsiniz, muhtemelen kütüphaneleri ve derleyicileri anlarsınız, bellek işlevlerini, referansları, işaretçileri anlarsınız ... bugünün programlama dillerini etkileyen birçok şey . C ++ 'ı fazla kullanmıyorum (ve gerçekten herhangi bir dilde mükemmel bir programcı olduğumu söyleyemem; bilgelik zamanla gelecek) ama C ++ ile olan deneyimimin kesinlikle daha iyi bir programcı yaptığını söyleyebilirim.