C ++ standardını bilmeniz ne kadar önemli?


11

Arama yapmayı denedim, ancak benzer bir soru görmedim (ya da benim arama terminolojim yanlıştı - eğer öyleyse, kapatmaktan çekinmeyin).

SO'nun hevesli bir kullanıcısıyım ve tartışmalarda ve cevaplarda C ++ standardına çok sayıda referans olduğunu fark ediyorum - ve itiraf etmeliyim ki, bu belgeyi hiç okumadım, dil gözlerimi acıtıyor ... , soru şu ki, bir C ++ geliştiricisi gerçekten bu belgeyi okumadan yaşamak için kod olabilir mi? Derleyici yazma işinde olmayan faniler için gerçekten önemli mi?


Standarttan kısa alıntılarla cevaplanan soruların kalıcılığı , dilin okunması için bir önkoşul olmadığına dair yeterli kanıt olmalıdır ... (sıkışıp kaldığınızda
dönmeniz

Yanıtlar:


16

Hayır - onsuz iyi geçinebilirsin

Ancak, öğrenmek için zaman ayırırsanız çok daha derin bir anlayışa sahip olacaksınız. Belki de sizi rahatsız eden bu soruların referanslarını takip edin ve her seferinde küçük bir parça öğrenin.


8

Dil semantiği ve standardı hakkında tartışmak istiyorsanız, standart çok önemlidir. (Ben tamamen derogatorily bu kastetmiyorum.) Sadece yapılan işe almak isterseniz de dil (vs. üzerindeki dilin), o zaman çok daha az olduğunu.

Standart, biraz rahat edildikten sonra standart kütüphaneye (dilin kendisi için çok fazla değil) iyi bir referans yapabilir, ancak bu şekilde kullanılmasını tavsiye etmekten çekinmeyin. Çoğu insan diğer malzemelerle daha iyisini yapar gibi görünüyor. Bununla birlikte, stdlib hakkında bir şey aramam gerektiğinden daha fazla standarda dönüyorum.

Ancak, komite taslaklarını ve bildirilerini okumak C ++ 0x'i takip etmenin bir yoludur - aslında, şu anda çok az yoldan biridir.

SO ve diğer forumlar için, posterin açıkça ve kesinlikle fayda sağlayacağı durumlar dışında standardı alıntılamaktan çekinmeyin - belki de bunu istediler ya da dolaylı olarak beklediklerini düşünüyorum. Çoğu durumda ve özellikle C ++ 'da yeni olan programcılar için, alıntı yapmak genellikle çok yardımcı olmaz.


Birisi dilin ne yapması gerektiğini bilmek istiyorsa, Standart paha biçilmezdir. Derleyicinin neden bir şey yaptığını bilmek istiyorlarsa, genellikle çok yararlıdır. Diğer sorular için, çok fazla değil.
David Thornley

1
@DavidThornley: Standardı kendim okumaya alıştıktan sonra yargılamak zor, ama kesinlikle çoğu insan TC ++ PL gibi metinleri dilin ne yapması gerektiğini bulmak için bile daha ulaşılabilir buluyor.
Fred Nurk

1
@Fred Nurk: Neredeyse her şey Standarttan daha ulaşılabilir. SO ve benzerleriyle ilgili soruları cevaplamak istedim ve bu konuda net değildi. İnsanlar cplusplus.com ve diğer kaynaklardan alıntı yaparken biraz yetki katıyor.
David Thornley

@DavidThornley: Çok nadiren böyle siteler teklif edeceğim (özellikle cplusplus.com benim zevkime göre çok fazla sorun var), ancak SO'daki çoğu poster için, standartlardan daha hatalarla bile daha kullanışlı görünüyorlar ve kolayca online olarak kullanılabilir maalesef bunun büyük bir kısmı.
Fred Nurk

@Fred, bu ilginç, her zaman cplusplus iyi bir referans olduğunu düşündüm (olumsuz onların reklam kaynağı - ki bu çok uygunsuz!), Şimdi sgi referansı ile çapraz referans hatırlamak zorunda kalacağım.
Nim

6

Referans için kullanılabilir olması gerekir, ancak yazarları dışında her şeyi okuduğunu sanmıyorum ... eğer onlar bile yaptılar (alanlara odaklanan gruplar halinde çalışıyorlar, bu yüzden şüpheliyim).

Kullanılabilir olmanızın nedeni bazen kod doğruluğu ile ilgili bir sorunun yalnızca standarda başvurarak cevaplanabilmesidir.


3
Çoğu durumda buna ihtiyacınız yoktur. İhtiyacınız olan şey diğer kitaplarda yer alıyor. Sadece bu köşe durumlarına ulaştığınızda veya standardın tanımını kontrol etmeniz gereken dilin köşelerini hiç kullanmadığınızda (ve genellikle köşe vakalarını dilde kullanmanın bir alternatifi vardır). Derleyici geliştiricileri için standart bırakın ve genel geliştirici diğer resmi olmayan metinlerle de anlaşabilir.
Martin York

2

Muhtemelen standardın nerede olduğunu bilmeniz ve ne zaman bakacağınızı bilmeniz daha önemlidir.

Başka bir şey yoksa, en son sürüme bağlı kaldığınızdan ve kodunuzun kaymasına izin vermediğinizden emin olmak için periyodik olarak kontrol etmelisiniz.


2

Büyük bir ekipte, genellikle standardı en azından makul derecede iyi bilen bir (ancak genellikle daha fazla değil) bir kişiniz olmalıdır, böylece belirli kodun standardın gereksinimlerine uygun olup olmadığı hakkında herhangi bir argüman / soru çözme gibi şeyler yapabilirler.

Bununla birlikte, gerçekçi olarak, bu cevapların yargı ve deneyimle temperlenmesi gerekir. (Mevcut) standardın söylediği exportbir anahtar kelime ve ne yaptığını anlatıyor. Gerçekte, çoğu derleyici ile bu şekilde çalışmaz. Bazı özel kod ve ne standart bu konuda diyebilirsiniz hakkında belirtmiş üç kişi var Aynı şekilde, vakaların bir çok, o olabilir kod daha kolay olması için yeniden şart olmadığı bir işareti olabilir.

Aynı zamanda, çoğu takım en çok tek bir platformda çalışacak ve yaptığınız şeyin bu platforma çok yakından bağlı olmadığını kontrol etmek için bir standart (ve en azından makul derecede aşina olan birine) sahip olacak Bir işe yara.


"Daha fazla değil" muhtemelen önemlidir - uzmanlar arasında standardın nasıl yorumlanacağı konusunda tartışmalar istemiyorsanız
Steve314

2

Standartları okumadan toplamda yaklaşık 4 yıldır C ++ geliştiricisi olarak ekmeğimi kazanıyorum. Aslında, ilk iki yıldır, Stan Lippman ve MSDN makalelerinin C ++ Primer'den başka bir şey okumadım . Bu yüzden mümkündür - aslında C ++ kodu üreten insanların çoğunun bile Etkili C ++ ve ark. ki daha sonra kendim keşfettim.

IMHO iyi bir C ++ geliştiricisi olmak için, dil (ler) in iç mantığını (Scott Meyers'ın belirttiği gibi, C ++ yaklaşık 4 farklı dildir) ve ortak deyim ve tuzakları anlamalı ve her zaman daha fazla bilgi edinmeye hazır olmalıdır. SO'daki konuları okumak, biri gerçekten daha derine inmek istiyorsa, standardın ilgili bölümlerini okumaya değer olabileceği köşe vakaları hakkında çok şey öğretebilir. Ancak hepsini okumak muhtemelen çoğumuz için nadiren gereklidir.


Standarttan çok daha önemli olan (derleyici yazmayan çoğu programcı için) gerekli kitapların olması iyi bir nokta. +1 - ancak çok sayıda "temel" kitap var.
Steve314

@ Steve314, aslında - onları listelemeye başlamak, bu özel soruyu cevaplamaya yardımcı olmaz. Ama şimdi SO ilgili konuya bir bağlantı ekledim.
Péter Török

@ Péter - hoş bir dokunuş, ama benim belirtilmemiş nokta "temel" kitap kimsenin gerçekten gerekli değildi oldu. Çoğu C ++ programcısı, bu listeden birkaç başlık okumalı, ancak hepsi mi? Olası olmayan. Yapmış olsanız bile, tüm bu bilgiyi gerçekten tutabileceğinizden şüpheliyim. "Etkili C ++" henüz okumadığım listemde, bu yüzden açıkça gerekli olmayan bir kitap olarak sayıyorum.
Steve314

@ Steve314, ben bunların hepsini okumak zorunda demek istemedim - ben de değil, ve ben bazıları okudum ama etkilendim değildi :-) Bunlardan bazıları arasında bazı örtüşme var, bu yüzden bir bir geliştiricinin ilk tanıştığı ve / veya hangisini "temel" olarak etiketlediği kişisel zevk ve şans sorusu. Önemli olan, takip edilmesi iyi olan bazı ortak deyimler ve kaçınılması gereken yaygın tuzaklar olduğu ve bunların çoğunu bilmeniz gerektiğine inanıyorum ve bunları öğrenmenin en az acı verici yolu bu kitaplardan (bazılarından) .
Péter Török

Tabii Gerçekten ben gelene kadar ne kadar gerekli bilemezsiniz var oku.
Steve314

1

"Standardı bilmek" bir derece meselesidir ve orijinal belgenin ezberlenmesi anlamına gelmez.

Standartlar belgesi yetkili olmak üzere tasarlanmıştır - mutlaka erişilebilir değildir. Çok daha erişilebilir olan birçok tek adımda kaldırılmış kaynak var. Doğru, bu konuda biraz Çinli Fısıltı var, ama nadiren büyük bir sorun - kesinlikle bir adım kaldırıldı düzeyinde.

Tam açıklama - Bunu söylemek zorundayım - standardı hiç okumadım. Gerçi muhtemelen tamamlandığında tam C ++ 0x belgesini elde etmek için çaba göstereceğim.

DÜZENLEME elbette Stroustrup "C ++ Programlama Dili" nin yeni baskısı serbest bırakırsa, ben yine o razı olabilir.


1

C ++ 'da programladığımda, standart kütüphane işlevleri hakkında bilgi için genellikle dil standardına başvurdum. C ++ standart kütüphanesi oldukça büyük ve dil standardını en uygun kaynak olarak buldum.


1
vay gerçekten mi? Her zaman bu anlamda vazgeçilmez cplusplus gibi çevrimiçi kaynaklar buluyorum ...
Nim

1

Daha önce bu soruya cevap verdiğime yemin edebilirdim, ama bulamıyorum. Temel olarak, C ++ bunun oluyor ki Java benzemez amaçlanan doldurabilir şartname diğer platform özelliklerine delik olması (örn POSIX'e veya mimarinin ABI şartname veya derleyici). Bu nedenle, StackOverflow gibi sitelerdeki soruları yanıtlarken, bir derleyicide bir şeyin çalışmasının her yerde çalıştığını ima etmediğini belirtmek için belirtimi getirmek yaygındır. Başka bir deyişle, C ++ ile çalışırken belirli spesifikasyonlara atıfta bulunmanın birçok nedeni, dilin belirli bir kullanımının tam olarak ne kadar taşınabilir olduğunu açıklığa kavuşturmaktır.

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.