Bir programcının C ve C ++ arasındaki farkı bilmemesi yaygın mıdır? [kapalı]


16

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?


11
C ++ etiketli son birkaç hafta içinde gördüğüm C sorularının sayısı göz önüne alındığında, bunun oldukça önemli bir soru olduğunu söyleyebilirim.
Robotu Gort

13
Ne sıklıkta "C / C ++" gördüğümü düşünürsek, çok yaygın olduğunu söyleyebilirim.
user16764

6
Ne cevap verdin?
Dima

8
Programlama işi için bir başvuru sahibinin hiçbir şey bilmemesi yaygındır . Ama o kişiye programcı demem.
vartec

6
@Tjaart - Baytın 8 bit olmadığı doğru sistemler olduğunu biliyor musunuz?
Ramhound

Yanıtlar:


25

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?"


40

Bazı insanlar kod yazamayan çok sayıda programlama iş başvurusunda bulunduğunu gözlemlemişlerdir . Yani, evet, "açık" sorular sormak mantıklı.


7
Bu hemen hemen benim cevabım olacaktı. Programlama pozisyonları için insanlarla görüştükten sonra, size çok sayıda adayı kolayca kesecek olan açık soruları sormanızı söyleyebilirim.
2012'de Tyanna

Sizin için bir milyon upvotes. Pek çok görüşmeci cevaplayamadığı için başlangıç ​​düzeyindeki sorulara şaşırıyorum.
HLGEM

1
Sonra tekrar, 25 yılı aşkın bir süredir programlama yapıyorum ve artık gerçekten cevaplayamadığım bazı başlangıç ​​seviyesinde sorular var (tanımları sorarsanız daha da kötüleşir). Bu cevapta yer alan makaleye bakıyordum ve "hmmm evet bunu bir dakikalığına düşüneyim" gibiyken, işte oldukça karmaşık sistemler uygulamak üzerinde çalışıyorum ve genellikle çözüm bulmakta pek sıkıntı çekmiyorum. Bu küçük sorulardan bazıları beni çok katmanlı bir sistemden daha çok korkutuyor ve çok iş parçacıklı bir işleve atıyor, bok gibi ... Tuhaf, biliyorum.
MetalMikester

1
aslında. Başka bir P.SE iş parçacığında tartışıldığı gibi, röportajlar için gülünç derecede açık sorularla ("JS'de bir değişkeni nasıl bildirirsiniz?", "Java'da 1 int için kaç bayt?", " işaretçi nedir? "vs ...). İlk hatayı umursamıyorum (stres bir faktördür, rahatlamak için sohbetlerle röportajlara başlasam bile), ancak genellikle iyi sorulara ulaşmadan önce 3 grev alabilirsem, o zaman gitmeden takılmayı mükemmel kabul edilebilir buluyorum ilerletin veya atın. Aptalca soruları sormak için geçen 5 dakika, kazanılan zamana değer.
haylem

3
Aslında, bu ilk soruları sormadan önce bile özür diliyorum , çünkü yetenekli başvuru sahiplerinin kendileri tarafından dışarı atılmasını istemiyorum ya da onları ciddiye almadığımı ve buraya ait olmayacaklarını hissetmemi düşünüyorum.
haylem

8

Bir sürü var. C-stringleri öğreten aptal öğretim görevlileri newve deleteya 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.


2
Bu çok iyi bir noktaya değiniyor. C'yi öğretmek ancak C ++ derleyicisini kullanmak kabul edilebilir ve hatta yaygındır. Bu elbette C ve C ++ arasındaki büyük farkları asla öğrenmeyen öğrencilerin kafa karışıklığına yol açar. Sadece aynı revizyon arasındaki büyük farklardan bahsediyorum.
Ramhound

4
@Ramhound: Bu kabul edilemez hiç . Ortak olması diktir.
DeadMG

1
Üzücü gerçek şu ki, C ve C ++ neredeyse evrensel olarak kötü bir şekilde öğretiliyor. SO'ya gidin ve C ve C ++ etiketlerine bakın ve aynı yanlış kavramları, aynı yanlış yorumları, defalarca tekrarlanan aynı kötü uygulamaları göreceksiniz. Bunlar rastgele aynı hataları yapan insanlar değildir; onlara bu hataları nasıl yapacakları öğretildi . "Profesörüm dedi ki ..." benim için neredeyse evrensel olarak kırmızı bir bayrak.
John Bode

5

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 ++


2
Bence bu önemli bir içgörü ... eski günlerde bir C derleyiciniz vardı, sonra C ++ geldi, bu yüzden farklılıkları öğrendiniz. Şimdi C / C ++ derleyicileriniz var ve C ++ 'a açıkça öğretildiyseniz, C'nin ne olduğunu ve "Object Oriented stuff" ın ötesinde C ++ ne olduğunu bilmek neredeyse imkansız. Ayrıca, C / C ++' ın en yaygın olduğundan emin değilim öfkeyle öğrenmek için dil (?)
Al Biglan


1

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.


Hangi üniversitelerden bahsediyorsun? "Gizli" diller? Roma Üniversitesinde MIPS meclisi öğrenmek zorunda kaldım ...
Виталий Олегович

Genel olarak tanıştığım "genç" programcılar mühendislik derecesine sahipler. Düşünmeye gel, birlikte çalıştığım programcıların hemen hepsi ben de dahil olmak üzere mühendislik derecesine sahip.
Pete

1
C ve C ++ hala okulda öğretilmektedir. Sorun, çoğu zaman aynı derleyicinin her ikisini de öğretmek için kullanılmasıdır. Bu, iki dil arasındaki farkları asla öğrenmedikleri anlamına gelir.
Ramhound

@Pete 'C # programcısı' olarak ortaya çıkarsam, C veya C ++ 'ı' başka bir dil 'olarak öğrenmeyi hayal edemiyorum. Şüphesiz Ruby, Haskell, Javascript, Python'u istiyorum. C-aile dilleri, bir tanesinin yeterli olduğunu bilecek kadar yakındır.
Kirk Broadhurst

0

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.


0

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.


2
Bu cevabın tamamen doğru olduğunu düşünmüyorum. Doğru cevap, C ++ 'ın Nesne Tabanlı kod için güçlü bir desteğe sahip olmasıdır. Bunu gerektirmez. (Bu karışıklığın kaynağı ilk etapta.)
Robotu

Ayrıca "bir C ++ programı içinde Pure C kullanabilirsiniz" "C ++ C'nin bir üst kümesidir, yani herhangi bir C geçerli program da geçerli bir C ++ programıdır" (yanlış) anlamına gelebilir. Ya da "C ++ programlarını C kitaplıklarına bağlayabilirsiniz" anlamına gelebilir (doğru, ancak çoğu dil C kitaplıklarına bir şekilde bağlanabilir.) Gerçek bir röportajda çok daha hassas olmalısınız.
nikie

-2

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.


5
"C ve C ++ arasında gerçek farklılıklar vermek için mücadele ederdim." Kesinlikle bir C ++ programcısı değilsiniz. Lütfen?
sbi

2
C ve C ++ çok farklı dillerdir, çok farklı şekillerde kodlanmıştır . Onları açıkça tanımıyorsunuz.
DeadMG

@sbi "Kendimi bu dillerin hiçbirini" bilerek " boyamıyorum . Buna kendin karar vermene izin vereceğim.
Kirk Broadhurst

Downvotes hakkında geri bildiriminiz var mı? İkisi arasındaki farkı bilmediğim için mi? Bunun soruyu cevaplamamı diskalifiye edeceğini varsaymazdım.
Kirk Broadhurst

1
@KirkBroadhurst: Sanırım cevabınızın hangi kısmını aşağı indirecek kadar sevmediğimi belirttim ve bu yorum bundan sonra aşağı indirildiğiniz kadar beş kez değerlendirildi, bu yüzden hangi açıklamanın peşinde olduğunuzdan emin değilim. Bununla birlikte, "farklılık" terimi burada yeterlidir, çünkü C ve C ++ sadece yüzeysel sözdizimsel benzerlikleri paylaşır ve bunun dışında çok farklı dillerdir. Yeterliliklere gelince: Burada cevaplamak için bir yeterlilik olduğunu düşünmüyorum, ancak bir cevap bu kadar açık bir şekilde yanlış olduğunda, yeterlilikle alakasız olarak reddedilecektir.
sbi

-3

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.


8
Başka bir yol söyleyebilirdi. Şu anda 5 ila 10 yıl öncesinden daha fazla şaşkın insan görüyorum.
haylem

@Haylem Geriye dönüp baktığımda, başka türlü söylemek istediğimi düşünüyorum.
13:11
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.