ทำไมโปรแกรมเมอร์จึงไม่สนใจมาตรฐาน ISO? [ปิด]


18

สิ่งหนึ่งที่ฉันพบบ่อยคือปัญหาที่เกิดจากโปรแกรมที่ไม่เป็นไปตามมาตรฐาน ISO

ตัวอย่างหนึ่งจะไม่ใช้ตารางประเทศ ISO แต่ทำชวเลขของพวกเขาเองซึ่งก็โอเคสำหรับสหรัฐอเมริกา (US) หรือเนเธอร์แลนด์ (NL) แต่ผิดไปอย่างน่าทึ่งสำหรับสหราชอาณาจักร (GB ไม่ใช่สหราชอาณาจักร) หรือสเปน (ES ไม่ใช่ SP) และประเทศอื่น ๆ อีกมากมาย

เป็นอีกตัวอย่างหนึ่งที่ระบุวันที่ภายใน ทำไมทุกคนจะเก็บวันที่ในวันที่ 01/02/2014? ยังไม่ชัดเจนว่าจะเป็นวันที่ 1 กุมภาพันธ์หรือ 2 มกราคมในขณะที่ถ้าคุณใช้มาตรฐาน ISO คุณเพิ่งเก็บ 2014-02-01 * และมันก็ชัดเจนวันที่ 1 กุมภาพันธ์

คำถามของฉัน: โปรแกรมเมอร์ควรสร้างโครงสร้างของตนเองเมื่อใดและเพราะเหตุใดเมื่อมีมาตรฐาน ISO พร้อมใช้งาน

* จัดเก็บ 2014-02-01 และจัดรูปแบบวันที่ตามลำดับเมื่อแสดงให้ผู้ใช้ปลายทางเห็น


64
เพราะพวกเขาไม่รู้จักพวกเขาหรือลืมพวกเขา! มี gazillions ของมาตรฐาน ISO .... คุณรู้จัก ISO26262 ทั้งหมดหรือไม่
— Basile Starynkevitch

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

13
นอกจากนี้มาตรฐาน ISO จำนวนมากนั้นหาไม่ได้ง่าย (โดยปกติแล้วพวกเขาจะต้องเสียเงินเป็นจำนวนมากและการหาร่างฉบับล่าสุดนั้นไม่ใช่เรื่องง่าย!)
— Basile Starynkevitch

64
สิ่งที่ยอดเยี่ยมเกี่ยวกับมาตรฐานคือมีให้เลือกมากมาย!
— Jörg W Mittag

5
สิ่งที่แปลกประหลาดที่สุดคือโปรแกรมที่บังคับให้ผู้ที่ไม่ได้ใช้ภาษาอังกฤษกับผู้ใช้ที่ไม่ใช่ภาษาอังกฤษเปลี่ยนการตั้งค่าทั้งระบบในระบบของเขาเป็นจุดทศนิยมเพื่อให้ทำงานได้อย่างถูกต้อง ไม่ต้องพูดถึงโปรแกรมที่ปฏิเสธที่จะทำงานหรือเพียงแค่สร้างขยะภายใต้ charsets ที่ไม่ใช่ภาษาอังกฤษ (รัสเซีย, ญี่ปุ่น, กรีก), ให้ระบบ RTL (ภาษาฮิบรู, อาหรับ) ฉันเดาว่ามีบางอย่างที่เกี่ยวข้อง
— JensG

คำตอบ:


63

อย่ากล่าวถึงความอาฆาตพยาบาทซึ่งอธิบายโดยความโง่เขลาอย่างเพียงพอ - โรเบิร์ตเจ Hanlon

นั่นและขาดการสื่อสาร

ดังนั้นมันไม่ใช่การสมรู้ร่วมคิดในการต่อต้านความรู้สึกต่อต้าน ISO ทำให้ผู้คนคิดว่า "ฉันรู้ว่าฉันจะใช้สหราชอาณาจักรแทน GB" และไม่ใช่ความชอบที่ "พวกเขารู้ดีกว่า" หรือแม้แต่ความรู้สึกว่ามาตรฐานไม่ดี . มันอาจจะเป็นเพราะพวกเขาไม่รู้ว่าอยู่ที่นั่นและควรใช้มัน

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


20
มันไม่ได้ช่วยให้มาตรฐาน ISO จำนวนมากมีราคาแพงและ / หรือยากที่จะได้รับ ... แม้ว่าคุณจะต้องการ!
— heltonbiker

yyyy-mm-dd ... ไม่แพงเลย
— halfbit

11
@halfbit: มีราคาแพงในการซื้อไม่แพงในทรัพยากรการคำนวณ อย่างจริงจังเรียกดูร้านค้าของตน คุณต้องการมาตรฐานเลขทศนิยมหรือไม่ นั่นจะเป็น 178 ฟรังก์
— user2357112 รองรับ Monica

32

เมื่อฉันเขียนโปรแกรมใน Ruby ฉันมักจะมองข้ามมาตรฐาน ISO Ruby เสมอ ทำไม? เพราะมันมีข้อ จำกัด อย่างไม่น่าเชื่อ! ISO Ruby เป็นเซตย่อยขั้นต่ำของการแยกของ Ruby 1.8 และ Ruby 1.9 Ruby เวอร์ชันปัจจุบันซึ่งรองรับโดยการใช้งาน Ruby ทั้งหมด (หรืออย่างน้อยจะเร็ว ๆ นี้) คือ Ruby 2.1 และมีคุณสมบัติมากมายที่ทำให้การเขียนโปรแกรมง่ายขึ้น การเขียนโปรแกรมใน ISO Ruby เป็น PITA

เมื่อฉันเขียนโปรแกรมใน C # ฉันก็ไม่สนใจ ISO C # ซึ่งเป็นส่วนย่อยของ C # 2.0 (และที่สำคัญกว่านั้น ISO Class Library เป็นส่วนย่อยที่เล็กมากของ. NET BCL) และฉันแทนโปรแกรมใน C # 5.0 และฉันไม่ ไม่ จำกัด ตัวเองให้ใช้เฉพาะไลบรารีที่ระบุใน ISO CLI แต่ฉันใช้ชุดย่อยทั่วไปของไลบรารีที่มีอยู่ใน. NET 4.5.2 และ Mono 3.4.0

และเมื่อทำการออกแบบเว็บไซต์ฉันชอบใช้ HTML5 มากกว่า ISO HTML (ซึ่งเป็นชุดย่อยขนาดเล็กของ HTML 4.01 Strict) อีกครั้งเนื่องจาก HTML5 นั้นมีคุณลักษณะที่หลากหลายมากกว่าชุดย่อยที่ จำกัด ของ HTML รุ่นโบราณ

ดังนั้นมีเหตุผลที่ดีสำหรับการเพิกเฉยต่อมาตรฐาน ISO


9
มันขึ้นอยู่กับ C, C ++, Fortran ... สถานการณ์แตกต่างกันมาก
— Vladimir F

1
ดูเหมือนจะน้อยกว่าเช่น "เพิกเฉย" ตามที่คำถามตั้งใจและอื่น ๆ เช่น "การเลือกเครื่องมือที่ทำสิ่งที่คุณต้องการ" หากคุณต้องการฟีเจอร์ C # 5.0 มันไม่สมเหตุสมผลที่จะใช้ ISO C # มากกว่าที่จะใช้ ISO C หรือ ISO Fortran นั่นไม่ใช่เครื่องมือที่คุณขอมาและ ISO ก็ไม่เทียบเท่ากัน ตัวอย่างของคุณยังคงเกี่ยวข้องกับการยึดตามมาตรฐานที่กำหนดไว้อย่างดีไม่ใช่แค่มาตรฐาน ISO
— Leushenko

3
@Lushushenko ฉันไม่เห็นด้วย; OP ดูเหมือนจะคิดว่าคุณควรปฏิบัติตามมาตรฐาน ISO ระยะเวลาเสมอ +1 สำหรับตัวอย่างที่ทำด้วยทองเหลืองตัวอย่างเช่น "ควร"
— djechlin

3
ทุกอย่างดีและดี แต่ฉันคิดว่าคำถามกำลังพูดถึงมาตรฐาน ISO สำหรับการแสดงข้อมูลไม่ใช่มาตรฐาน ISO สำหรับภาษาการเขียนโปรแกรม
— Aaronaught

4
บางคนอ้างว่า (บางคน) มาตรฐาน ISO เป็นตัวอย่างที่สมบูรณ์แบบของ "การออกแบบโดยคณะกรรมการ" ต่อต้านรูปแบบ ...
— heltonbiker

22

ตามตัวอย่างของคุณ "GB" คือรหัสประเทศสำหรับสหราชอาณาจักร อย่างไรก็ตาม "สหราชอาณาจักร" เป็นครั้งเดียวในรหัสมาตรฐาน MARC (US Library of Congress) ถึงแม้ว่าฉันเชื่อว่ามันเลิกใช้แล้ว และ IANA ใช้.ukสำหรับโดเมนระดับบนสุดสำหรับสหราชอาณาจักร

ดังนั้นหากบางสิ่งไม่สอดคล้องกับมาตรฐาน ISO ก็ไม่ได้หมายความว่าไม่มีการใช้มาตรฐาน อาจหมายถึงว่ามีการใช้มาตรฐานที่ต่างออกไป ( ณ @ Jörgข้อสังเกตในการแสดงความคิดเห็นเป็นสิ่งที่ดีเกี่ยวกับมาตรฐานก็คือว่ามีมากมายให้เลือกจาก.) ซึ่งในกรณีคำถามจริงๆกลายเป็นที่มาตรฐานจะเหมาะสมที่สุดสำหรับโดเมนปัญหาที่กำหนดสภาพแวดล้อม ฯลฯ ?

การตอบคำถามนั้นน่าจะเป็นไปตามความคิดเห็นเป็นส่วนใหญ่และเสื่อมถอยลงอย่างรวดเร็วในการอภิปราย "ทางศาสนา" แต่การปฏิบัติตามมาตรฐาน ISO ไม่จำเป็นต้องเป็นคำตอบที่ดีที่สุดเสมอไป ตัวอย่างเช่นหากชิ้นส่วนของซอฟต์แวร์ต้องเชื่อมต่อกับฐานข้อมูลไลบรารีมาตรฐาน MARC อาจเป็นตัวเลือกที่เหมาะสมกว่า ISO หากซอฟต์แวร์ส่วนใหญ่ในองค์กรของคุณทำสิ่งใดอย่างหนึ่งคุณอาจต้องการใช้แนวทางดังกล่าวอย่างน้อยก็ในระยะสั้น - นั่นคือ "มาตรฐาน" ขององค์กรของคุณ


นอกจากนี้มาตรฐานยังพัฒนา / เปลี่ยนแปลง สิ่งที่สอดคล้องเมื่อวานนี้อาจไม่เป็นวันนี้


และในขณะที่ฉันไม่ต้องการแยกแยะความไม่รู้และ / หรือความเฉื่อยชาเนื่องจากสาเหตุของปัญหาที่คุณชี้ให้เห็น ... นักพัฒนาอาจไม่มีเวลาพอที่จะแก้ไขปัญหาเหล่านั้น


15

การปฏิบัติตามมาตรฐาน ISO ไม่ได้เป็นกิจกรรมที่ไม่มีค่าใช้จ่ายเสมอไป หากมาตรฐานเฉพาะไม่ได้นำมาใช้ในชุดเครื่องมือที่เธอใช้อยู่โปรแกรมเมอร์กำลังเผชิญกับตัวเลือกที่จำเป็น: ถูกกว่าหรือไม่ที่จะใช้งานอย่างถูกต้องในตอนนี้หรือไม่ใช้มาตรฐานและจัดการกับการแปลงในภายหลัง

มันง่ายที่จะพูดว่า "เฮ้คุณควรใช้มาตรฐาน" แต่ทุกอย่างมีค่าใช้จ่าย และมีเหตุผลที่ดีที่โปรแกรมเมอร์อาจไม่ต้องการนำมาตรฐาน ISO มาใช้

  • ลูกค้าอาจปฏิบัติตามมาตรฐานที่เป็นกรรมสิทธิ์หรือไม่ใช่ ISO ดีกว่าที่จะใส่ใจกับมาตรฐานที่ลูกค้าคาดหวังกว่าปล่อยให้ปวดหัวโดยไม่ตั้งใจสำหรับผู้สืบทอดโดยซ่อนการใช้งานเพิ่มเติมนอกเหนือจากสิ่งที่ลูกค้าต้องการและภาษาของคุณต้องการ
  • อาจมีข้อมูลที่มีอยู่จำนวนมากและการแปลงหรือการแบ่งรูปแบบอาจยังไม่สามารถทำได้ หากคุณมีผู้ติดต่อลูกค้าและสัญญาที่มียี่สิบปีที่มีวันที่ท้องถิ่นคุณไม่จำเป็นต้องเปลี่ยนเขตข้อมูลนับร้อยล้านทั้งหมดเหล่านี้เป็นวันที่มาตรฐาน ISO จนกว่าคุณจะสามารถทำมันได้
  • การยึดมั่นในมาตรฐานอาจกำหนดต้นทุนที่สูงกว่าผลประโยชน์ที่มอบให้ หากคุณกำลังจัดการกับรายการทั้งหมดภายในสหรัฐอเมริกาตัวอย่างเช่นรหัสห้าตัวอักษร ISO-3166-2 (US-NY) คืออักขระที่ไม่จำเป็นสามตัวในรหัสไปรษณีย์มาตรฐานสหรัฐอเมริกา (NY)

1
กระบวนการที่คล่องตัวนั้นจะถูกกว่าเสมอเมื่อรวมคุณสมบัติใด ๆ - รวมถึงมาตรฐาน ISO - ระหว่างขั้นตอนการออกแบบ / ข้อมูลจำเพาะมากกว่าในช่วงการดำเนินการ / บำรุงรักษาเนื่องจากขั้นตอนการออกแบบแสดงเพียง 10% ของงาน นี่เป็นเพียงการผกผันของกฎหมายว่าด้วยผลตอบแทนที่ลดลง - คล้ายกับวิธีการระบุและแก้ไขข้อบกพร่องในการผลิตสามารถมีราคาสูงถึง 10 เท่ามากกว่าหากพบว่าเป็นผลมาจากการทดสอบหน่วยหรือการทดสอบการยอมรับ หากคุณมีเหตุผลที่ชัดเจนที่จะไม่ใช้มาตรฐาน ISO เลยก็ไม่เป็นไร ถ้าคุณบอกว่าคุณจะใช้มันในภายหลังคุณกำลังโกหก
— Aaronaught

@Aaraught: คุณคิดว่าฉันควรชี้แจงว่าด้วย "การแปลง" ฉันหมายถึงการแปลงไฟล์ภายนอกแทนที่จะเขียนใหม่ภายใน?
— DougM

ถ้านั่นคือสิ่งที่คุณหมายถึงแล้วแน่นอนฉันจะชี้แจง ปกติแล้วมันไม่ง่ายอย่างนั้นเพราะ ISO กำหนดมาตรฐานสำหรับประเภทข้อมูลมากกว่าประเภทไฟล์และอีกมากมายหากไม่ใช่นักพัฒนาส่วนใหญ่จะจัดการกับแอปพลิเคชันที่ไม่ได้จัดการกับเอกสารหรือ "ไฟล์" ต่อหนึ่งรายการ ตัวอย่างเช่นหากคุณเก็บวันที่ที่ไม่ใช่ ISO หรือรหัสประเทศไว้ในฐานข้อมูล (และไม่ได้จัดเก็บวันที่ ISO หรือรหัสประเทศที่สอดคล้องกัน) ค่าใช้จ่ายในการแปลงตามถนนจะสูงมาก ในทางกลับกันหากคุณเพียงแค่พูดถึงการนำเข้าไฟล์บางประเภทเฉพาะอุตสาหกรรมคุณสามารถทำได้ทุกเมื่อ
— Aaronaught

+1 "... คุณไม่ต้องการเปลี่ยนฟิลด์ทั้งหมดเป็นร้อย ๆ ล้าน ... จนกว่าคุณจะทำถูกต้อง" เผง
— David

14

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

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

ฉันอาจไม่ต้องการให้การออกแบบฐานข้อมูลของฉันขึ้นอยู่กับกลุ่มบุคคลที่สาม (IATA, ISO) โดยไม่คำนึงว่ามาตรฐานของพวกเขาจะเสถียรแค่ไหน หรือฉันอาจไม่ต้องการพึ่งมาตรฐานใด ๆ เลย

ป้อนคำอธิบายรูปภาพที่นี่

ผู้ที่ไม่สนใจมาตรฐานก็ใช้พอร์ต USB มาตรฐานซื้อดีวีดีและ BluRays ขนาดมาตรฐานแล้วขับรถยนต์ด้วยยางที่ได้มาตรฐาน


12
-1 สำหรับการ์ตูนล้อเลียนของโปรแกรมเมอร์ที่มีประสบการณ์และต่อต้าน ISO
— djechlin

4
@djechlin วลีในเครื่องหมายคำพูดเป็นตัวอักษรจากคำตอบที่แท้จริงในคำถามที่เชื่อมโยง คุณสามารถค้นหาในหน้าเพื่อดูว่าเป็นความคิดเห็นจริง โปรแกรมเมอร์ที่มีประสบการณ์ทุกคนไม่ได้เกลียดมาตรฐาน
— Tulains Córdova

2
@djechlin ในคำตอบของฉันมีคำถามที่เชื่อมโยงมองหา "ดูคำถามที่คล้ายกันนี้" คำว่า "คำถาม" มีลิงก์ มีคุณสามารถค้นหาวลีที่แน่นอนในคำพูด
— Tulains Córdova

2
@djechlin การเชื่อมโยงอยู่ในคำตอบไม่ใช่คำถามที่นี่คุณมีมัน: programmers.stackexchange.com/questions/204340/…
— Tulains Córdova

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

10

คนมักจะเพิกเฉยต่อมาตรฐาน ISO: ตัวอย่างเช่นคุณเขียน

ถ้าคุณใช้มาตรฐาน ISO คุณเพียงแค่เก็บ 20140201 * และมันก็ชัดเจนวันที่ 1 กุมภาพันธ์

แต่การกระทำอย่างเต็มที่ ISO8601 ที่สอดคล้องกับความเป็นจริง2014/02/01 (ดูxkcd 1179 ด้วย )


7
มาตรฐาน ISO8601 อนุญาตให้ใช้รูปแบบ YYYY-MM-DD และ YYYYMMDD สำหรับการแสดงวันที่ในปฏิทินแบบสมบูรณ์
— Pieter B

1
แท้จริง; ดังนั้นการเขียนของฉัน "สอดคล้องอย่างเต็มที่" 20140201 เป็นรูปแบบ "พื้นฐาน" ในมาตรฐาน
— Clément

8
ISO อนุญาตสำหรับรูปแบบพื้นฐานและแบบขยายซึ่งทั้งสองอย่างสอดคล้องกันอย่างสมบูรณ์
— Pieter B

10
ISO 8601 was published on 06/05/88 and most recently amended on 12/01/04.คลาสสิก
— WernerCD

8

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

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

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

แม้ว่าคุณจะดูรูปแบบการจัดเก็บข้อมูลภายในความกำกวมบางอย่างยากที่จะแก้ไข ตัวอย่างเช่นเท่าที่ฉันรู้ Excel ใช้ตัวเลขทศนิยมเพื่อเป็นตัวแทนของการประทับเวลา: มันใช้จำนวนเต็มเป็นจำนวนวันนับตั้งแต่วันที่อ้างอิงแล้วสิ่งที่หลังจากทศนิยมแสดงเศษส่วนของ 24 ชั่วโมงเพื่อให้คุณชั่วโมง .. ปัญหาคือสิ่งนี้จะป้องกันไม่ให้คุณคำนึงถึงเขตเวลาของบัญชีหรือการปรับเวลาตามฤดูกาล (23h หรือ 25h ในหนึ่งวัน) และ Excel จะแปลงวันที่ / เวลาให้เป็นรูปแบบภายในตามค่าเริ่มต้น ไม่ว่าคุณต้องการใช้รูปแบบ ISO หรือไม่กลายเป็นสิ่งที่ไม่เกี่ยวข้องหากซอฟต์แวร์ชิ้นอื่นที่คุณต้องทำงานด้วยไม่ทำให้คุณต้องเลือก

(1) ฉันไม่ได้หมายถึง "ขั้นตอนการเขียนโปรแกรม" ที่นี่

(2) อย่าถามฉันว่าทำไมคนไม่ใช้มาตรฐานเหล่านั้นในชีวิตประจำวันของพวกเขาด้วย ฉันหมายถึง YYYYmmdd นั้นชัดเจน dd / mm / YYYY นั้นชัดเจน แต่การสั่งซื้อวันที่ด้วยคำสั่งขนาดกลางขนาดเล็กและใหญ่อย่างละเอียดเช่น mm / dd / YYYY ที่ไม่สมเหตุสมผล :-)


1
ฮา! คุณรู้ว่าอะไรไม่สมเหตุสมผล เครื่องหมายจุลภาคที่ทศนิยมควรเป็น! ;)
— Darkwater23

@ Darkwater23 ฮาฉันไม่คิดว่าอย่างใดอย่างหนึ่งมันเป็นเพียงแค่การประชุมและมันก็ไม่จำเป็นต้องมีเหตุผล เป็นเพียงที่ฉันพบเสมอว่า mm / dd / YYYY ดูเหมือนจะไม่มีเหตุผลทั้งหมดทำไมไม่ไปไกลถึง mm-MM-dd-HH-YYYY สำหรับการประทับเวลา ;-) แต่เดี๋ยวก่อนฉันตกลงนั่นเป็นวิธีที่ มันเป็นดังนั้นเราต้องอยู่กับมัน
— บรูโน่

2
@ Darkwater23 ที่จริงแล้วมาตรฐาน ISO ใช้สัญลักษณ์ unicode แปลก ๆ (นี้:) ⎖สำหรับตัวคั่นทศนิยมบนแป้นพิมพ์และฉันคิดว่าเครื่องหมายเห็บธรรมดา ( ') เป็นมาตรฐานสำหรับการจัดกลุ่มหลักเช่นกัน (แม้ว่าฉันจะไม่สามารถหาได้ตอนนี้)
— Izkata

+1 สำหรับการชี้ให้เห็นเหตุผลอื่นที่ทำให้การปรับเวลาตามฤดูกาลเป็นช่วงเวลาที่เหมาะสม
— ctrl-alt-delor

1
@ Richard ฉันไม่จำเป็นต้องคำนึงถึง DST ด้วยวิธีใดวิธีหนึ่ง แต่แน่นอนว่าโปรแกรมเมอร์ควรตั้งเป้าที่จะเก็บบันทึกเวลาด้วยข้อมูลเขตเวลาให้มากที่สุด ไม่ใช่เรื่องแปลกที่แอปพลิเคชั่นจะใช้ข้ามเขตเวลาหลายแห่ง (เป็นอิสระจาก DST) อย่างไรก็ตามคุณควรเว้นที่ว่างให้คลุมเครือเมื่อคุณจัดเก็บการประทับเวลาควรเป็นส่วนหนึ่งของการออกแบบเริ่มต้น (อาจไม่สามารถใช้ได้เสมอไป แต่มีข้อสงสัยว่าควรคำนึงถึงเสมอ) แน่นอนว่ามันเป็นปัญหาที่ซับซ้อน (ไม่ใช่เพียง +01 ชั่วโมงตัวอย่างเช่น แต่สถานที่อาจมีความสำคัญเช่นกันขึ้นอยู่กับการใช้งาน)
— บรูโน่

8

ทำไมฉันจะไม่ใช้มาตรฐาน ISO 3166-1 alpha-2รหัสประเทศ?

เพราะฉันใช้รหัสประเทศSTANAG 1059 ... และในสหราชอาณาจักรนั้นเป็นรหัสสำหรับสหราชอาณาจักร (แทน GB ตามมาตรฐาน ISO 3166-1)

อีกทางหนึ่งฉันสามารถใช้รหัสประเทศของFIPS - อีกครั้งสหราชอาณาจักรเป็นรหัสประเทศของสหราชอาณาจักร

มีหลายมาตรฐาน (ISO และไม่ใช่ ISO) และบางครั้งโดเมนใช้เฉพาะ / ต้องการมาตรฐานที่เข้ากันไม่ได้กับมาตรฐาน ISO


7

การจัดเก็บ 20140201 นั้นไม่ได้คลุมเครือเลย เฉพาะเมื่อคุณรวมความรู้ที่เป็นไปตามมาตรฐาน ISO เท่านั้นมันจะไม่มีความชัดเจน สิ่งเดียวกันนี้จะทำในวันที่ 01/02/2014: เมื่อคุณรวมความรู้ว่ารูปแบบคือ mm / dd / yyyy มันก็ไม่มีความชัดเจนอย่างสมบูรณ์แบบ

ตราบใดที่แอปพลิเคชันไม่จำเป็นต้องเชื่อมต่อกับแอปพลิเคชันอื่น ๆ มาตรฐานที่มีเอกสารที่ดีก็สามารถทำงานได้ตามปกติ

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


4
ตกลง ฉันจะเป็นกังวลมากขึ้นกับ ISO ถ้าฉันเขียนใบสมัครเพื่อการบริโภคระหว่างประเทศ แอพของฉันสำหรับ Middle America ไม่ต้องการค่าใช้จ่ายหรือข้อ จำกัด
— Darkwater23

4
โดยการเขียน"ตราบใดที่แอปพลิเคชันไม่จำเป็นต้องเชื่อมต่อกับแอปพลิเคชันอื่น"คุณได้ให้เหตุผลที่ดีในการใช้มาตรฐาน ISO
— Tulains Córdova

5
โปรไฟล์ของคุณไม่แสดงตำแหน่งของคุณดังนั้นฉันไม่รู้ว่าวันที่ตัวอย่างของคุณคือเดือนมกราคมหรือกุมภาพันธ์
— djechlin

6
-1 สำหรับการสมมติว่าจะไม่เชื่อมต่อกับแอปพลิเคชันอื่น ๆ สิ่งนี้ตรงกันข้ามกับอุตสาหกรรมการเขียนโปรแกรมทั้งหมด
— djechlin

18
@ เจฟฟ์: ฉันไม่เคยเห็นวันที่เขียนเป็น YYYYDDMM สำหรับวัตถุประสงค์อื่นใดนอกจากการอ้างสิทธิ์เช่นการเข้ารหัสเป็นไปได้ มีไหม
— supercat

5

ประเด็นที่ยังไม่ได้กล่าวถึงคือความเหมาะสมทางวัฒนธรรมของมาตรฐานสากล

พิจารณามาตรฐานสากลสำหรับการวัด เรานำเสนอสิ่งเหล่านั้นให้กับผู้ใช้ในสหรัฐอเมริกา ฉันไม่แน่ใจว่าผู้ใช้ในสหรัฐอเมริกาของคุณจะมีความสุขกับกิโลเมตรกิโลกรัมและลิตร

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

แม้แต่รหัสประเทศก็มีปัญหา: ไครเมียตอนนี้ได้รหัสประเทศของตัวเองแล้วหรือยัง? ในที่สุดจะพบสูตร (เช่น "อดีตสาธารณรัฐยูโกสลาเวียแห่งมาซิโดเนีย") แต่ใบสมัครของคุณอาจต้องใช้เวลาในการรอจนกว่าการทูตหรือสงครามจะสิ้นสุดลง

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

ประเด็นสุดท้ายคือในการเลือกตัวเลือกเหล่านี้โปรแกรมของคุณอาจสร้างข้อความทางการเมือง ความจริงเรื่องนี้อาจยุ่งกับโค้ดที่ดีที่สุด (เช่นคุณอาจต้องการชื่อหลายภาษาสำหรับภาษาเดียวกัน)


ฉันเชื่อว่าคนตาบอดส่วนใหญ่จะสามารถรับคนอ่านจดหมายให้พวกเขา ไม่ใช่ว่าคุณเป็นคนแรก (หรือ บริษัท ) ที่จะส่งจดหมายถึงพวกเขา
— Wildcard

5

ในประสบการณ์ของฉันโปรแกรมเมอร์ไม่ได้ใช้มาตรฐาน ISO ด้วยเหตุผลหลายประการเช่น:

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

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

บ่อยครั้งที่ความล้มเหลวในการใช้มาตรฐาน ISO อาจเกิดจากความไม่มีประสบการณ์ความเกียจคร้านหรือความเย่อหยิ่ง ฉันเสียใจที่ต้องบอกว่าโปรแกรมเมอร์ที่พูดภาษาอังกฤษนั้นมีความผิดโดยเฉพาะอย่างยิ่งในเรื่องความเป็นสากลและเพื่อนร่วมงานในสหรัฐฯของเรามักจะมองว่า ISO เป็น "สิ่งที่ชาวยุโรปไม่เกี่ยวข้อง" (ขออภัยต่อชนกลุ่มน้อย


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

1

ISO มีมาตรฐานมากมาย เช่นเดียวกับ CCITT / ITU มาตรฐานเหล่านี้บางส่วนเป็นมาตรฐาน "แรงบันดาลใจ" ในขณะที่มาตรฐานอื่น ๆ เป็นฟังก์ชันขั้นต่ำที่จำเป็น มันมักจะไม่ชัดเจนซึ่งเป็นสิ่งที่

ฉันจำได้ว่าในปี 1980 ถามว่าทำไมผู้ขายอุปกรณ์บางรายใช้มาตรฐานย่อยหนึ่งชุดในขณะที่ผู้ค้ารายอื่นใช้ชุดย่อยที่แตกต่างกัน นั่นคือเมื่อมันปรากฏออกมาว่ามาตรฐานมักถูกกำหนดไว้ก่อนที่สิ่งใดจะได้ผล และผู้ขายมักเลือกที่จะไม่ใช้มาตรฐานเพื่อให้พวกเขาขัดขวางการทำงานร่วมกันซึ่งทำให้พวกเขาได้เปรียบ

นั่นเป็นเหตุผลที่ฉันชอบ IETF RFC พวกเขาจะไม่กลายเป็น RFC จนกว่าจะมีการใช้งานที่เป็นอิสระ 3 รายการของ RFC


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

1
เมื่อฉันเริ่มใช้ IETF RFCs ฉันใช้ตัวที่พัฒนามาก่อนปี 1995 สเป็คของรหัสที่ใช้ดีที่สุด ไม่เช่นนั้นคุณจะจบลงด้วยวิศวกรชาร์ตงาช้าง - หอคอยที่ทำรายละเอียดโดยไม่ต้องรับผิดชอบ
— Jay Godse

1

ถ้าฉันสร้างฐานข้อมูล Oracle และฉันต้องการเก็บวันที่ฉันจะใช้ประเภทข้อมูล Oracle DATE ฉันจะไม่รู้หรือไม่สนใจว่า Oracle จะปฏิบัติตามมาตรฐาน ISO หรือไม่ นี่เป็นกรณีของความสอดคล้องของฉันกับมาตรฐานอื่น (Oracle หนึ่ง) และไม่ได้ออกไปจากมาตรฐาน ISO มากนัก ดูการตอบสนองของ @ David

ในบางกรณีเมื่อฉันรู้ว่ามีมาตรฐาน ISO สำหรับสิ่งที่ฉันออกแบบค่าใช้จ่ายในการย้อนกลับและการออกแบบใหม่จะเป็นสิ่งต้องห้ามหรืออย่างน้อยก็เห็นว่าเป็นเช่นนั้น

ในระยะสั้นมีการสร้างรหัสการทำงานมากขึ้นโดยใช้มาตรฐานที่มีอยู่หรือโดยการสร้างรหัสใหม่มากกว่าการวิจัยอย่างระมัดระวังในมาตรฐานที่มีอยู่ ข้อเสียเกิดขึ้นเมื่อการรวมขนาดใหญ่ต้องการการทำงานร่วมกัน สิ่งนี้มักจะเกิดขึ้นในบริบทของโครงการในภายหลัง


1
ฉันไม่คุ้นเคยกับ Oracle แต่เมื่อใช้ SQL Server หรือ MySQL ฉันก็แน่นอนว่าใช้ประเภทข้อมูลวันที่ของพวกเขาเมื่อจัดเก็บวันที่ แต่เมื่อเขียนคำค้นหาที่มีวันที่พวกเขาทั้งคู่ต่างก็จดจำ yyyymmdd ได้เป็นอย่างดีที่มันถูกหรือพลาดเมื่อคุณใช้วันที่เกิดเหตุ
— Pieter B

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