มันหมายความว่าอย่างไรเมื่อเทคโนโลยีบางอย่างเป็น "มาตรฐาน"?


16

ฉันเริ่มเรียนรู้ Java EE 7 และฉันมักเจอคำว่า "มาตรฐาน" บ่อยครั้งและฉันก็ไม่เข้าใจว่ามันแปลว่าอะไร

ตัวอย่างเช่นนี่คือใบเสนอราคาจากหนังสือเล่มนี้ :

ตรงกันข้ามกับ SOAP และ WS- * stack ซึ่งขึ้นอยู่กับมาตรฐาน W3C REST ไม่มีมาตรฐานและเป็นเพียงรูปแบบของสถาปัตยกรรมที่มีหลักการออกแบบ แอปพลิเคชัน REST ใช้มาตรฐานอื่น ๆ มากมาย: HTTP, URI, URL ...

ฉันมีความคิดเกี่ยวกับสิ่งที่อาจหมายถึง แต่ฉันไม่แน่ใจ

คำอธิบายที่ดีที่สุดที่ฉันได้เจอคือความหมายจากที่นี่


7
อ่าน wikipage ในมาตรฐานทางเทคนิค แต่จริง ๆ แล้วมันอาจจะเป็นคำฮิต มาตรฐานเป็นข้อกำหนดทั่วไป: ดังนั้นC ++ 11และPosixจึงเป็นมาตรฐาน
Basile Starynkevitch

หมายความว่าใครก็ตามกำลังผลักดันให้พยายามโน้มน้าวให้คุณซื้อ
bmargulies

คำตอบ:


21

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

มี "สิ่ง" มากมายในการเขียนโปรแกรมที่มีชุมชนที่ควบคุมพวกเขา สมาชิกเหล่านี้สามารถมีตั้งแต่โปรแกรมเมอร์จนถึงตัวแทนองค์กร (เช่น Apple, Microsoft, IBM, ฯลฯ )

W3C เป็นกลุ่มที่มีขนาดใหญ่มากซึ่งทำงานร่วมกันเพื่อกำหนดมาตรฐานหลายอย่าง

นี่คือรายชื่อสมาชิก

http://www.w3.org/Consortium/Member/List

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

บริษัท อย่าง IBM, Microsoft และอื่น ๆ ได้ตีพิมพ์เอกสารเกี่ยวกับวิธีการใช้งาน REST อาจกล่าวได้ว่ามี "วิธีทั่วไป" ในการใช้งาน REST คุณสามารถเลือกแหล่งข้อมูลที่มีสิทธิ์ซึ่งอธิบายถึงการนำ REST ไปใช้และอ้างว่าทำตามข้อมูลอ้างอิงนั้น การใช้แหล่งข้อมูลที่เชื่อถือได้เป็นวิธีหนึ่งที่เราจัดการกับปัญหาความเข้ากันได้ในเว็บเบราว์เซอร์


4
ฉันจะเพิ่มRFCไปยังรายการสถานที่เพื่อค้นหามาตรฐานเช่น HTTP ซึ่งผู้ถามที่กล่าวถึงถูกกำหนดโดยRFC 2616

2
@Snowman เก็บไว้ในใจว่าไม่ RFCs ทั้งหมดที่มีมาตรฐานการติดตาม ; ผมเชื่อว่าส่วนใหญ่จะมีไม่ได้ นอกจากนี้ในขณะที่คุณสามารถดูด้านบนสุดของหน้าเชื่อมโยงของคุณ RFC 2616 นั้นล้าสมัยโดย RFC 7230-7235 ซึ่งควรเรียกแทน บังเอิญว่าเป็นเพียง"มาตรฐานที่เสนอ" ไม่ใช่ "มาตรฐานอินเทอร์เน็ต" (ทั้งสองเป็นมาตรฐานติดตาม แต่หลังถือว่าเป็นผู้ใหญ่มากขึ้นและไม่น่าจะเปลี่ยนแปลง)
บ๊อบ

@Snowman: ความคิดเห็นของคุณจริง ๆ แล้วแสดงให้เห็นถึงสิ่งที่สำคัญที่สุด: มาตรฐานคือเมื่อคนเห็นด้วยว่ามันเป็นมาตรฐาน หากคุณดูที่หน้า RRF จริง ๆ คุณจะเห็นว่ามี RFC นับร้อย แต่จริงๆแล้วมีเพียง 78 มาตรฐานเท่านั้น และ HTTP ที่คุณพูดถึงนั้นไม่ใช่มาตรฐานจริง ๆ! มันเป็นเพียงแค่ขอความคิดเห็นนั่นคือแนวคิดที่มีคนที่เขาต้องการพูดคุย สิ่งที่ทำให้ HTTP เป็นมาตรฐานไม่ใช่ว่าบางองค์กรกำกับดูแลจะเผยแพร่ (เพราะองค์กรที่มีปัญหาต้องไม่เรียกว่าเป็น "มาตรฐาน") แต่เป็นเพราะผู้คนปฏิบัติต่อเป็นหนึ่ง
Jörg W Mittag

@ JörgWMittagฉันเอามาตรฐานเสมอที่จะได้รับการตีพิมพ์เอกสารจากแหล่งที่เชื่อถือได้ระบุว่าสิ่งที่ควรจะเป็น ปัญหาคือคนสามารถไม่เห็นด้วยกับแหล่งที่มาที่มีสิทธิ์ในขณะที่คนอื่นใช้อำนาจเผด็จการของพวกเขา (เช่น Microsoft และ Apple เป็นตัวอย่างที่ดี) พวกเขามักจะมองข้ามหรือพยายามบังคับมาตรฐาน มาตรฐานมักเป็นสิ่งที่องค์กรขนาดใหญ่ที่มีความรู้สึกไม่สามารถนำไปใช้ได้
ซ้ำ

1
@Mathew "ฉันมักจะใช้มาตรฐานเพื่อเป็นเอกสารที่ตีพิมพ์จากแหล่งข้อมูลที่มีสิทธิ์ที่ระบุว่าสิ่งที่ควรจะเป็น" - ฉันเห็นด้วยกับประโยคนี้ในความคิดเห็นของคุณ แต่คำตอบของคุณในปัจจุบันกล่าวว่าคำว่า 'มาตรฐาน' หมายถึงเทคโนโลยีเอง (เช่นตามที่ระบุว่า Java เป็นมาตรฐานข้อกำหนดของ Java EE 7 ไม่ใช่มาตรฐาน) รุ่นก่อนหน้ากล่าวว่าองค์กรเช่น Oracle หรือ W3C เป็นสิ่งที่ 'มาตรฐาน' หมายถึง คำตอบของคุณต้องได้รับการอัพเดตเพื่อพูดในสิ่งที่คุณหมายถึงที่นี่ เขียนตามที่เป็นอยู่คำตอบของคุณมีข้อมูลที่ผิด :(
doppelgreener

10

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

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

(ตรงกันข้ามกับที่ Mathew อธิบายว่ามาตรฐานไม่ใช่ร่างกายที่ปกครองหรือเทคโนโลยีเองมันเป็นเอกสารที่อธิบายถึงเทคโนโลยีหรือรุ่นที่เจาะจง)

ตัวอย่างมาตรฐานสำหรับเทคโนโลยีที่คุณพูดถึง (และอื่น ๆ ):

  • SOAPมาตรฐานการบำรุงรักษาโดย W3C
  • มาตรฐาน URI ที่กำหนดในSTD66ดูแลโดย Internet Engineering Task Force (IETF) ซึ่งทำงานบน ...
  • HTTP 1.1 ข้อมูลจำเพาะประพันธ์โดยคณะทำงาน HTTP สิ่งเหล่านี้เป็นคำร้องขอความคิดเห็น (RFCs) แต่ยังคงระบุว่า HTTP ทำงานอย่างไร มาตรฐานเหล่านี้ใหม่มากจริงแล้วเพิ่งเปิดตัวเมื่อเดือนมิถุนายน 2014 HTTP 1.1 ได้ถูกกำหนดไว้ก่อนหน้านี้ในRFC 2616โดย IETF Network Working Group
  • ข้อกำหนด HTML ของที่กำหนดไว้ในHTML Living มาตรฐาน มันถูกเขียนขึ้นโดยWeb Working Hypertext Application Technology Group (WHATWG) W3C เผยแพร่และเรียกใช้มาตรฐานนี้รุ่นต่าง ๆ ปล่อยเป็นHTML 4 , XHTML 1.0และHTML5ระหว่างรุ่นอื่น ๆ WHATWG ไม่พอใจที่พวกเขาทำเช่นนี้
  • Java มีมาตรฐานดูแลโดย Oracle เวอร์ชันต่าง ๆ ของมันมีมาตรฐานที่แตกต่างกันและคุณสามารถดาวน์โหลดมาตรฐานJava EE 7 ได้ด้วยตัวเอง
  • ข้อมูลจำเพาะภาษา C # 5.0เขียนโดยทีมงานของ Microsoft รุ่นก่อนหน้ามีเอกสารข้อกำหนดแยกต่างหาก

HTML เป็นตัวอย่างที่ดีของความจริงที่ว่าภาษาที่แตกต่างกันมักจะมีมาตรฐานที่แตกต่างกัน เวอร์ชันต่างๆมีเอกสารที่แตกต่างกันซึ่งอธิบายถึงวิธีจัดการกับเวอร์ชันภาษาต่างๆ

HTTP ในขณะเดียวกันเป็นหนึ่งในตัวอย่างของการย้ายมาตรฐานระหว่างกลุ่ม: อันดับแรกโดย Network Working Group จากนั้นไปที่ HTTP Working Group แม้ว่าทั้งสองกลุ่มจะเป็นส่วนหนึ่งของ IETF เทคโนโลยีอื่น ๆ ได้ย้ายระหว่าง บริษัทเช่น HTML (อีกครั้ง) รุ่นที่ 2 ซึ่งได้รับการประพันธ์โดย IETF ใน RFC1866

ทำไมถึงมีมาตรฐาน?

พวกเขามีอยู่เพื่อให้เรารับประกันว่าสิ่งที่จะทำงาน

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

ในทำนองเดียวกันถ้าฉันเขียนเบราว์เซอร์มาตรฐาน HTML5 จะบอกฉันว่าฉันต้องจัดการกับมาร์กอัพ HTML5 หลาย ๆ ชิ้นเพื่อให้ผู้ใช้ได้รับสิ่งที่พวกเขาคาดหวัง ถ้าฉันเขียนคอมไพเลอร์ C ++ 11 มาตรฐาน C ++ 11 จะบอกฉันว่าฉันต้องทำอะไรเพื่อใช้ภาษาอย่างถูกต้องและทำให้โค้ดของคนทำงานตามที่พวกเขาคาดหวัง

ตัวอย่างเช่นผู้เขียน Microsoft C # คุณสามารถดาวน์โหลดC # Language Specification 5.0ด้วยตัวคุณเอง เอกสารนี้เป็นสัญญาว่ารหัส C # ที่คุณเขียนควรจะประพฤติตามที่อธิบายไว้ในข้อมูลจำเพาะในคอมไพเลอร์ใด ๆ ที่ใช้งานข้อกำหนดได้อย่างถูกต้อง

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

ในอดีตมาตรฐานกลับไปที่สิ่งต่าง ๆ เช่นสกรูเกลียวเพื่อให้ฉันสามารถรับประกันได้ว่าถ้าฉันสั่งสกรูประเภท X มันจะพอดีกับรูที่ฉันเจาะและจะใช้แทนสกรูชนิด X อื่น ๆ ได้

ซึ่งนำเรากลับไปสู่คำจำกัดความของคำว่า "มาตรฐาน" :

ตัวอย่างที่ยอมรับหรือได้รับการอนุมัติของบางสิ่งที่ผู้อื่นถูกตัดสินหรือวัด - พจนานุกรมคอลลินส์

การวัดที่ได้รับการยอมรับของการเปรียบเทียบสำหรับค่าเชิงปริมาณหรือเชิงคุณภาพ เกณฑ์ - พจนานุกรมการแพทย์ American Heritage® Stedman

เช่นสิ่งที่คุณเปรียบเทียบสิ่งของของคุณเพื่อให้แน่ใจว่าคุณจะได้รับสิ่งที่คุณคาดหวัง


1
นอกจากนี้ยังมีมาตรฐานสำหรับ C #, .NET, CLR และ C ++ / CLR ที่เผยแพร่โดย ECMA ซึ่งจะถูกติดตามอย่างรวดเร็วไปยัง ISO ISO ยังมีมาตรฐานสำหรับ HTML, ISO HTML 1.0 เป็นเซตย่อยของ W3C HTML 4.01 Strict
Jörg W Mittag

4

มาตรฐานเทคโนโลยีคือข้อกำหนดที่คาดว่าการใช้งานสองมาตรฐานที่เหมือนกันจะสามารถใช้งานร่วมกันได้หรือใช้แทนกันได้ ตัวอย่าง: USB, Bluetooth, Java EE7, HTTP

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

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


1

มาตรฐานเป็นแบบแผนมาตรฐาน - ไม่ว่าจะเป็นข้อกำหนดอย่างเป็นทางการหรือเพียงเพราะการประชุมทั่วไปได้รับความนิยมมากพอที่จะมีอิทธิพล

A de jure standardเป็นข้อกำหนดที่เผยแพร่โดยคณะกรรมการมาตรฐาน คณะกรรมการมาตรฐานบางแห่งคือ ISO, ECMA, DIN, ANSI และ W3C

ตัวอย่างบางส่วน de jure standardsได้แก่ ขนาดกระดาษ A4 (มาตรฐาน ISO 219), ภาษา c # (ECMA-334) เป็นต้น

คำว่า 'ทางนิตินัย' ไม่ค่อยถูกใช้และ 'มาตรฐานทางนิตินัย' มักจะถูกเรียกว่ามาตรฐาน

มาตรฐานพฤตินัยเป็นธรรมเนียมการประชุมผลิตภัณฑ์หรือระบบที่ได้รับตำแหน่งที่โดดเด่นจากการยอมรับของประชาชนหรือกลไกตลาด "

(ที่มา: วิกิพีเดีย - ฉันไม่สามารถเขียนได้ดีขึ้นเอง)

มาตรฐานพฤตินัยไม่จำเป็นต้องเป็นไปตามข้อกำหนดอย่างเป็นทางการใด ๆ

ดังที่ Gudmundur Orn เขียนไว้ในคำตอบนี้รูปแบบ Microsoft Office DOC นั้นเป็นมาตรฐานที่แท้จริง มันมีตำแหน่งที่โดดเด่นและตามปกติสันนิษฐานว่าผู้คนสามารถอ่านเอกสาร MS Word ได้

JSON เป็นสัตว์ร้ายตัวตลกที่เริ่มจากมาตรฐานของพฤตินัย อย่างไรก็ตามตั้งแต่นั้นมาได้รับการทำเป็นระเบียบว่าเป็นECMA-404ดังนั้นตอนนี้จึงกลายเป็น 'มาตรฐานทางนิตินัย'

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


-4

สำหรับความรับผิดตามกฎหมายของผลิตภัณฑ์ข้อบกพร่องนั้นจัดอยู่ในประเภทการออกแบบการผลิตหรือเอกสาร การออกแบบไม่ได้มีข้อบกพร่องหากเป็นไปตามมาตรฐานไม่ว่ามาตรฐานนั้นจะมีข้อบกพร่องหรือไม่ก็ตาม มาตรฐานที่ใช้คือในเมื่อสร้างผลิตภัณฑ์ มาตรฐานอาจเป็นมาตรฐานที่เผยแพร่ (ISO) หรือมาตรฐานอุตสาหกรรมที่ยอมรับซึ่งไม่ได้เผยแพร่โดยสมาคมมาตรฐาน ดังนั้น TCP / IP ที่มีข้อบกพร่องโดยธรรมชาติเช่นการปลอมแปลงเป็นมาตรฐานและหากคุณสร้างเทคโนโลยีใหม่เช่น VOIP และไม่ทำอะไรเลยเพื่อปกป้องผู้ใช้จากปัญหาที่ทราบด้วยเทคโนโลยีพื้นฐานคุณจะปลอดภัยต่อการทำร้ายร่างกาย หรือฉันอาจจะผิดและมีข้อบกพร่องเอกสารที่นี่ ...


3
ตามคำนิยามมาตรฐานไม่สามารถชำรุด อย่างไรก็ตามผลิตภัณฑ์ที่ใช้มาตรฐานได้อย่างถูกต้องอาจมีข้อบกพร่องมันไม่เหมาะสำหรับวัตถุประสงค์ ไม่สำคัญว่าคุณจะปฏิบัติตามมาตรฐานได้ดีเพียงใดหรือมากน้อยเพียงใดหากผลิตภัณฑ์ไม่เป็นไปตามข้อกำหนดของวัตถุประสงค์ที่กำหนดไว้
s โกหกที่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.