สำคัญอย่างไรที่คุณรู้มาตรฐาน C ++


11

ฉันลองค้นหา แต่ฉันไม่เห็นคำถามที่คล้ายกัน (ไม่ว่าจะเป็นหรือคำศัพท์การค้นหาของฉันไม่ถูกต้อง - ถ้าเป็นเช่นนั้นรู้สึกอิสระที่จะปิด)

ฉันเป็นผู้ใช้ตัวยงของ SO และฉันสังเกตเห็นว่ามีการอ้างอิงจำนวนมากถึงมาตรฐาน C ++ ในการอภิปรายและคำตอบ - และฉันต้องยอมรับว่าฉันไม่เคยอ่านเอกสารนี้โดยเฉพาะภาษาทำให้ตาของฉันเจ็บ ... ดังนั้น คำถามคือนักพัฒนา C ++ สามารถสร้างรหัสสำหรับการอยู่อาศัยได้โดยไม่ต้องอ่านเอกสารนี้หรือไม่? มันสำคัญจริง ๆ สำหรับเราที่เป็นแค่มนุษย์ปุถุชนที่ไม่ได้อยู่ในธุรกิจการเขียนคอมไพเลอร์?


การคงอยู่ของคำถามที่ตอบด้วยเครื่องหมายคำพูดสั้น ๆ จากมาตรฐานควรเป็นหลักฐานเพียงพอที่การอ่านไม่ใช่ข้อกำหนดเบื้องต้นสำหรับการใช้ภาษา ... (หากคุณมีที่ต้องเลี้ยวเมื่อติดขัด)
Shog9

คำตอบ:


16

ไม่ - คุณสามารถเข้ากันได้ดีโดยที่ไม่ต้อง

อย่างไรก็ตามคุณจะมีความเข้าใจที่ลึกซึ้งยิ่งขึ้นหากคุณใช้เวลาในการเรียนรู้ อาจทำตามการอ้างอิงจากคำถามเหล่านั้นที่ทำให้คุณลำบากและเรียนรู้ชิ้นเล็ก ๆ ในเวลา


8

หากคุณต้องการโต้แย้งเกี่ยวกับความหมายของภาษาและมาตรฐานแล้วมาตรฐานนั้นสำคัญมาก (ผมไม่ได้หมายถึงนี้อย่างสมบูรณ์ derogatorily.) หากคุณเพียงต้องการที่จะได้งานทำในภาษา (เทียบกับในภาษา) แล้วมันจะน้อยมากดังนั้น

มาตรฐานสามารถสร้างการอ้างอิงที่ดีไปยังไลบรารีมาตรฐาน (ไม่มากสำหรับภาษานั้น) เมื่อคุณรู้สึกคุ้นเคยเล็กน้อย แต่ฉันลังเลที่จะแนะนำให้ใช้วิธีนี้ คนส่วนใหญ่ดูเหมือนจะทำได้ดีกว่ากับสื่ออื่น ๆ ที่กล่าวว่าฉันหันไปมาตรฐานบ่อยกว่าไม่เมื่อฉันต้องการค้นหาบางสิ่งเกี่ยวกับ stdlib

อย่างไรก็ตามการอ่านแบบร่างของคณะกรรมการและเอกสารเป็นวิธีหนึ่งที่จะอยู่เคียงข้างของ C ++ 0x - อันที่จริงหนึ่งในไม่กี่วิธีเท่านั้นในปัจจุบัน

สำหรับ SO และฟอรัมอื่นฉันลังเลที่จะพูดถึงมาตรฐานยกเว้นเมื่อดูเหมือนว่าโปสเตอร์จะได้ประโยชน์อย่างชัดเจนและแน่นอน - บางทีพวกเขาอาจจะขอหรือฉันคิดว่าพวกเขาคาดหวังโดยปริยาย ในกรณีส่วนใหญ่และโดยเฉพาะอย่างยิ่งกับโปรแกรมเมอร์ใหม่ใน C ++ การอ้างถึงมันมักจะไม่ช่วยอะไรมากนัก


หากใครต้องการรู้ว่าภาษาควรทำอย่างไรมาตรฐานคือสิ่งที่มีค่า หากพวกเขาต้องการรู้ว่าทำไมคอมไพเลอร์ทำอะไรมันมักจะมีประโยชน์มาก สำหรับคำถามอื่น ๆ ไม่มาก
David Thornley

1
@DavidThornley: มันยากที่จะตัดสินหลังจากใช้เวลานานในการอ่านมาตรฐานตัวเอง แต่ดูเหมือนว่าคนส่วนใหญ่จะพบข้อความเช่น TC ++ PL ที่เข้าถึงได้ง่ายกว่าแม้จะรู้ว่าภาษาควรทำอะไร
Fred Nurk

1
@ เฟร็ด Nurk: เกือบทุกอย่างเข้าถึงได้ง่ายกว่ามาตรฐาน ฉันหมายถึงการตอบคำถามเกี่ยวกับ SO และที่ชอบและไม่ชัดเจนเกี่ยวกับเรื่องนี้ เพิ่มอำนาจเล็กน้อยเมื่อผู้คนอ้างถึง cplusplus.com และแหล่งข้อมูลอื่น ๆ
David Thornley

@DavidThornley: ฉันไม่ค่อยจะพูดถึงเว็บไซต์แบบนั้น (โดยเฉพาะอย่างยิ่ง cplusplus.com มีปัญหามากเกินไปสำหรับรสนิยมของฉัน) แต่สำหรับผู้โพสต์ส่วนใหญ่ใน SO พวกเขาดูเหมือนจะมีประโยชน์มากกว่าแม้จะมีข้อผิดพลาดกว่ามาตรฐาน - และเป็นเรื่องง่าย พร้อมใช้งานออนไลน์เป็นส่วนใหญ่ของที่
Fred Nurk

@ เฟรดน่าสนใจฉันรู้เสมอว่า cplusplus เป็นข้อมูลอ้างอิงที่ดี (ข้อเสียคือแหล่งโฆษณาของพวกเขา - ซึ่งไม่เหมาะสมอย่างมาก!) ตอนนี้ฉันจะต้องจำไว้ว่าต้องอ้างอิงข้ามกับการอ้างอิง sgi
Nim

6

คุณควรให้มันมีไว้เพื่ออ้างอิง แต่ฉันไม่คิดว่าจะมีใคร แต่ผู้เขียนได้อ่านทุกอย่าง ... ถ้าพวกเขาทำ (พวกเขาทำงานเป็นกลุ่มโดยมุ่งเน้นที่พื้นที่ดังนั้นฉันจึงสงสัย)

เหตุผลที่คุณควรมีอยู่คือบางครั้งคำถามเกี่ยวกับความถูกต้องของรหัสสามารถตอบได้โดยอ้างอิงถึงมาตรฐานเท่านั้น


3
ในสถานการณ์ส่วนใหญ่คุณไม่ต้องการมัน สิ่งที่คุณต้องมีอยู่ในหนังสือเล่มอื่น มันจะเกิดขึ้นก็ต่อเมื่อคุณไปถึงกรณีมุมเหล่านั้นหรือไม่เคยใช้มุมภาษาที่คุณจำเป็นต้องตรวจสอบคำจำกัดความในมาตรฐาน ปล่อยให้มาตรฐานสำหรับนักพัฒนาคอมไพเลอร์และนักพัฒนาทั่วไปสามารถเข้ากันได้กับตำราอื่น ๆ ที่ไม่เป็นทางการ
Martin York

2

มันอาจสำคัญกว่าที่คุณจะรู้ว่ามาตรฐานอยู่ที่ไหนและรู้ว่าควรมองหาเมื่อไหร่

หากไม่มีสิ่งใดที่คุณควรตรวจสอบเป็นระยะเพื่อให้แน่ใจว่าคุณได้ปฏิบัติตามรุ่นล่าสุดและไม่ปล่อยให้โค้ดของคุณลอยไป


2

ในทีมขนาดใหญ่โดยทั่วไปคุณควรมีหนึ่งคน (แต่มักจะไม่มาก) คนที่รู้มาตรฐานอย่างน้อยก็มีเหตุผลดีดังนั้นพวกเขาสามารถทำสิ่งต่าง ๆ เช่นการตั้งข้อโต้แย้ง / คำถามเกี่ยวกับสิ่งต่าง ๆ เช่นว่ารหัสเฉพาะนั้นเป็นไปตามข้อกำหนดมาตรฐานหรือไม่

อย่างไรก็ตามคำตอบเหล่านั้นต้องแนบเนียนโดยการตัดสินและประสบการณ์ มาตรฐาน (ปัจจุบัน) บอกว่าexportเป็นคำหลักและบอกสิ่งที่มันทำ ในความเป็นจริงมันใช้งานไม่ได้กับคอมไพเลอร์ส่วนใหญ่ ในกรณีส่วนใหญ่หากคุณมีคนสามคนที่ไม่เห็นด้วยกับรหัสบางอย่างและสิ่งที่มาตรฐานอาจพูดถึงมันอาจเป็นสัญญาณว่ารหัสอาจต้องเขียนใหม่ให้ตรงไปตรงมามากขึ้น

ในขณะเดียวกันทีมส่วนใหญ่จะทำงานได้ดีที่สุดบนแพลตฟอร์มเดียวและมีมาตรฐาน (และคนที่คุ้นเคยกับมันอย่างน้อยก็พอ) เพื่อตรวจสอบว่าสิ่งที่คุณทำไม่ได้ผูกติดอยู่กับแพลตฟอร์มนั้นมากเกินไปอย่างแน่นอน จะมีประโยชน์.


"ไม่มาก" อาจมีความสำคัญ - หากคุณไม่ต้องการมีข้อโต้แย้งระหว่างผู้เชี่ยวชาญเกี่ยวกับวิธีตีความมาตรฐาน <g>
Steve314

2

ฉันได้รับขนมปังของฉันในฐานะนักพัฒนา C ++ เป็นเวลาประมาณ 4 ปีโดยไม่ต้องอ่านมาตรฐาน ในความเป็นจริงในช่วงสองปีแรกฉันไม่ได้อ่านอะไรมากไปกว่าC ++ Primerโดยบทความ Stan Lippman และ MSDN ดังนั้นจึงเป็นไปได้ - ในความเป็นจริงฉันกลัวว่าคนส่วนใหญ่ที่ผลิตรหัส C ++ ไม่ได้อ่านงานพื้นฐานเช่นEffective C ++ et al ซึ่งตัวฉันเองค้นพบในภายหลังเท่านั้น

IMHO เป็นผู้พัฒนา C ++ ที่ดีต้องเข้าใจตรรกะภายในของภาษา (ตามที่บันทึกของ Scott Meyers, C ++ เป็นภาษาต่าง ๆ ประมาณ 4 ภาษา) และสำนวนและข้อผิดพลาดทั่วไปและพร้อมที่จะเรียนรู้เพิ่มเติมเสมอ การอ่านเธรดบน SO สามารถสอนได้มากมายเกี่ยวกับเคสมุมซึ่งในทางกลับกันมันอาจคุ้มค่าที่จะอ่านในส่วนที่เกี่ยวข้องของมาตรฐานถ้ามีคนต้องการขุดลึกลงไป แต่การอ่านทั้งหมดอาจไม่จำเป็นสำหรับพวกเราส่วนใหญ่


จุดดีที่มีหนังสือสำคัญที่จำเป็นมากกว่า (สำหรับโปรแกรมเมอร์ส่วนใหญ่ที่ไม่ได้เขียนคอมไพเลอร์) กว่ามาตรฐาน +1 - แต่มีหนังสือ "จำเป็น" จำนวนพอสมควร
Steve314

@ Steve314 แน่นอน - การเริ่มรายการพวกเขาจะไม่ช่วยตอบคำถามนี้โดยเฉพาะ แต่ฉันเพิ่มลิงก์ไปยังเธรดที่เกี่ยวข้องใน SO ทันที
PéterTörök

@ Péter - สัมผัสที่ดี แต่ประเด็นที่ไม่ได้ระบุไว้ของฉันคือไม่มีหนังสือ "จำเป็น" เล่มใดที่มีความสำคัญอย่างแท้จริง โปรแกรมเมอร์ C ++ ส่วนใหญ่ควรอ่านชื่อเรื่องต่าง ๆ จากรายการ แต่ทั้งหมดนั้นใช่ไหม ไม่แน่ แม้ว่าคุณจะทำฉันสงสัยว่าคุณจะสามารถเก็บความรู้ทั้งหมดนั้นไว้ได้ "Effective C ++" อยู่ในรายการที่ยังไม่ได้อ่านของฉันดังนั้นฉันจึงนับว่าเป็นหนังสือสำคัญที่ไม่จำเป็น
Steve314

@ Steve314 ฉันไม่ได้หมายความว่าจะต้องอ่านทั้งหมด - ฉันยังไม่ได้และบางอย่างที่ฉันอ่าน แต่ไม่ประทับใจ :-) นอกจากนี้ยังมีการทับซ้อนกันระหว่างบางส่วนของเหล่านี้ดังนั้นจึงเป็น คำถามของรสนิยมและโอกาสส่วนตัวที่นักพัฒนาคนหนึ่งพบก่อน ฉันเชื่อว่าสิ่งสำคัญคือมีสำนวนสามัญที่ดีที่จะติดตามและข้อผิดพลาดทั่วไปที่ควรหลีกเลี่ยงและควรรู้เกี่ยวกับสิ่งเหล่านี้ส่วนใหญ่และวิธีที่เจ็บปวดน้อยที่สุดในการเรียนรู้สิ่งเหล่านี้มาจากหนังสือบางเล่ม .
PéterTörök

แน่นอนฉันไม่รู้จริง ๆ ว่ามันมีความสำคัญจนกระทั่งฉันได้อ่าน
Steve314

1

"การรู้มาตรฐาน" เป็นเรื่องของปริญญาและไม่จำเป็นต้องหมายถึงการจำเอกสารต้นฉบับ

เอกสารมาตรฐานได้รับการออกแบบให้มีอำนาจ - ไม่จำเป็นต้องเข้าถึงได้ มีแหล่งที่ลบขั้นตอนเดียวมากมายที่เข้าถึงได้มากขึ้น จริงอยู่ที่เสียงกระซิบของจีนมีอยู่บ้าง แต่ก็ไม่ค่อยเป็นปัญหาใหญ่เท่านี้แน่นอนในขั้นตอนเดียวที่ลบออกไป

การเปิดเผยแบบเต็ม - ฉันต้องพูดอย่างนี้ - ฉันไม่เคยอ่านมาตรฐาน แม้ว่าฉันอาจจะพยายามใช้เอกสาร C ++ 0x ฉบับเต็มเมื่อผ่านการสรุป

แก้ไขแน่นอนถ้า Stroustrup เปิดตัว "ภาษาการเขียนโปรแกรม C ++" รุ่นใหม่ฉันอาจตัดสินอีกครั้ง


1

เมื่อฉันตั้งโปรแกรมใน C ++ ฉันมักจะอ้างถึงมาตรฐานภาษาสำหรับข้อมูลเกี่ยวกับฟังก์ชั่นไลบรารีมาตรฐาน ไลบรารีมาตรฐาน C ++ ค่อนข้างใหญ่และฉันพบว่ามาตรฐานภาษาเป็นแหล่งที่สะดวกที่สุด


1
ว้าวจริงหรือ? ฉันมักจะพบแหล่งข้อมูลออนไลน์เช่น cplusplus ที่ขาดไม่ได้ในความรู้สึกนี้ ...
สะเดา

1

ฉันสาบานได้ว่าฉันตอบคำถามนี้มาก่อน แต่ฉันหามันไม่เจอ โดยพื้นฐานแล้ว C ++ นั้นแตกต่างจาก Java ที่มีจุดประสงค์เพื่อให้มีช่องว่างในข้อกำหนดคุณสมบัติของแพลตฟอร์มอื่น ๆ ที่สามารถเติมได้ (เช่น POSIX หรือข้อกำหนด ABI ของสถาปัตยกรรมหรือคอมไพเลอร์ของคุณ) ดังนั้นเมื่อตอบคำถามในไซต์เช่น StackOverflow เป็นเรื่องปกติที่จะต้องนำข้อกำหนดเฉพาะเพื่อระบุว่าเนื่องจากมีบางสิ่งที่ทำงานในคอมไพเลอร์เดียวไม่ได้แปลว่ามันทำงานได้ทุกที่ กล่าวอีกนัยหนึ่งเหตุผลมากมายสำหรับการอ้างอิงข้อกำหนดเฉพาะเมื่อทำงานกับ C ++ คือการอธิบายให้ชัดเจนว่าการใช้ภาษาแบบพกพานั้นใช้งานได้อย่างไร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.