Apa artinya ketika beberapa teknologi adalah "standar"?

16

Saya mulai belajar Java EE 7 dan saya sering menemukan istilah "standar" ini, dan saya tidak mengerti apa artinya.

Jadi, misalnya, inilah kutipan dari buku ini :

Berlawanan dengan SOAP dan WS-* stack, yang mengandalkan standar W3C, REST tidak memiliki standar dan hanya gaya arsitektur dengan prinsip-prinsip desain. Aplikasi REST sangat bergantung pada banyak standar lain: HTTP, URI, URL ...

Saya memiliki beberapa gagasan tentang apa artinya itu, tetapi saya tidak yakin.

Penjelasan terbaik yang saya temui adalah definisi dari sini .

Djole Pi
sumber
7
Baca wikipage pada standar teknis . Tapi itu mungkin sebenarnya kata kunci . Standar umumnya spesifikasi: jadi C ++ 11 dan Posix adalah standar.
Basile Starynkevitch
Ini berarti bahwa siapa pun yang mendorongnya sedang mencoba meyakinkan Anda untuk membelinya.
bmargulies

Jawaban:

21

Istilah "standar" dalam pemrograman sering merujuk pada teknologi / dokumen yang diatur oleh suatu kelompok atau komunitas. Anggota kelompok itu sering berbagi tujuan yang diinvestasikan bersama, adalah pengguna aktif teknologi itu dan ingin memastikan teknologi terus berlanjut.

Ada banyak "hal" dalam pemrograman yang memiliki komunitas yang mengaturnya. Anggota ini dapat berkisar dari pemrogram hingga perwakilan perusahaan (mis. Apple, Microsoft, IBM, dll.)

W3C adalah kelompok yang sangat besar yang bekerja bersama untuk mendefinisikan banyak standar.

Berikut adalah daftar anggota.

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

REST adalah contoh dari teknologi, dengan popularitasnya digunakan oleh banyak orang, tetapi tidak ada kelompok atau komunitas yang mengaturnya. Oleh karena itu, tidak ada satu tempat untuk menunjuk dan mengatakan "begitulah standar mengatakan itu harus dilakukan" .

Perusahaan seperti IBM, Microsoft dan yang lainnya telah menerbitkan dokumentasi tentang cara mengimplementasikan REST. Bisa dikatakan ada "cara umum" menerapkan REST. Anda dapat memilih sumber otoritatif yang menggambarkan implementasi REST, dan klaim untuk mengikuti referensi itu. Penggunaan sumber otoritatif adalah salah satu cara kami menangani masalah kompatibilitas di browser web.

Reactgular
sumber
4
Saya juga akan menambahkan RFC ke daftar tempat untuk menemukan standar, karena misalnya HTTP yang penanya disebutkan didefinisikan oleh RFC 2616
2
@Snowman Perlu diingat bahwa tidak semua RFC adalah jalur standar ; Saya percaya sebagian besar tidak . Juga, seperti yang Anda lihat di bagian atas halaman tertaut Anda, RFC 2616 sudah usang oleh RFC 7230-7235, yang seharusnya dirujuk sebagai gantinya. Kebetulan, yang satu itu hanya "Usulan Standar", bukan "Standar Internet" (keduanya adalah jalur standar, tetapi yang terakhir dianggap jauh lebih matang dan tidak mungkin berubah).
Bob
@Snowman: Komentar Anda sebenarnya menggambarkan hal yang paling penting: standar adalah ketika orang setuju itu standar. Jika Anda benar-benar melihat halaman RRF, Anda akan melihat bahwa ada ratusan RFC, tetapi sebenarnya hanya 78 standar. Dan HTTP, yang Anda sebutkan, sebenarnya bukan standar! Ini "hanya" Permintaan Komentar, yaitu beberapa gagasan yang seseorang ingin bicarakan. Hal yang menjadikan HTTP sebagai standar bukanlah bahwa beberapa badan pengelola menerbitkannya (karena badan pengelola yang dimaksud, sebenarnya tidak menyebutnya sebagai "standar") tetapi karena orang memperlakukannya sebagai satu.
Jörg W Mittag
@ JörgWMittag Saya selalu mengambil standar untuk menjadi dokumen yang dipublikasikan dari sumber otoritatif menyatakan bagaimana sesuatu harus menjadi . Masalahnya adalah orang bisa tidak setuju apa sumber yang otoritatif, sementara yang lain menyalahgunakan kekuatan otoritatif mereka (yaitu Microsoft dan Apple adalah contoh yang baik). Mereka berdua sering mengabaikan atau mencoba memaksakan standar. Standar sering kali bisa menjadi sesuatu yang perusahaan besar yang kuat merasa tidak berlaku untuk mereka.
Reactgular
1
@Mathew "Saya selalu mengambil standar untuk menjadi dokumen yang diterbitkan dari sumber resmi yang menyatakan bagaimana seharusnya sesuatu." - Saya setuju dengan kalimat ini dalam komentar Anda, tetapi jawaban Anda saat ini mengatakan istilah 'standar' mengacu pada teknologi itu sendiri. (Misalnya menurut itu, Java adalah standar, Java EE 7 spec bukan standar.) Versi sebelumnya mengatakan organisasi , seperti Oracle atau W3C, adalah apa yang dimaksud dengan 'standar'. Jawaban Anda perlu diperbarui untuk mengatakan apa yang Anda maksud di sini. Ditulis apa adanya, jawaban Anda mengandung informasi yang salah. :(
doppelgreener
10

Standar adalah dokumen teknis yang menjelaskan bagaimana suatu teknologi berperilaku. (Untuk beberapa teknologi, itu mungkin semacam standar teknis lainnya .) Hanya itu yang ada dan mengapa ada: itu adalah dokumen, dan mereka menggambarkan teknologinya.

Dokumen-dokumen ini ditulis oleh badan pengatur yang memiliki wewenang dan kepercayaan yang diperlukan agar mereka dapat memutuskan bagaimana teknologi itu bekerja, dan bagi orang-orang untuk peduli ketika mereka merilis dokumen spesifikasi sebagai standar. Badan pengatur dapat menghasilkan banyak standar, untuk berbagai teknologi atau versi teknologi yang berbeda. Badan pengurus dapat juga dikenal sebagai pengelola, penulis, penjaga, dll dari standar.

(Berbeda dengan yang dijelaskan oleh Mathew, standar bukanlah badan pengatur atau teknologi itu sendiri. Ini adalah dokumen yang menggambarkan teknologi, atau versi tertentu darinya.)

Beberapa contoh standar untuk teknologi yang telah Anda sebutkan (dan lainnya):

HTML adalah contoh yang baik dari fakta bahwa berbagai versi bahasa sering kali memiliki standar yang berbeda. Berbagai versi memiliki dokumen berbeda yang menjelaskan bagaimana berbagai versi bahasa seharusnya ditangani.

HTTP, sementara itu, adalah salah satu dari banyak contoh yang bergerak standar antara kelompok: pertama oleh Kelompok Kerja Jaringan, kemudian ke Kelompok Kerja HTTP, meskipun kedua kelompok adalah bagian dari IETF tersebut. Teknologi lain telah berpindah antar perusahaan, seperti HTML (lagi), versi 2 di antaranya ditulis oleh IETF di RFC1866 .

Mengapa standar ada?

Mereka ada untuk memberi kita jaminan tentang bagaimana hal-hal akan bekerja.

Spesifikasi HTML5 memberi tahu saya bagaimana berbagai browser akan menangani dan menampilkan markup HTML5 yang saya tulis, dengan asumsi mereka menerapkan standar dengan benar (yang secara historis menjadi masalah). Standar C ++ 11 akan memberi tahu saya hal-hal tentang berbagai kode C ++ 11 yang saya tulis akan atau tidak akan lakukan.

Demikian juga, jika saya sedang menulis browser, standar HTML5 akan memberi tahu saya bagaimana saya harus menangani berbagai potongan markup HTML5 agar orang mendapatkan apa yang mereka harapkan. Jika saya menulis kompiler C ++ 11, standar C ++ 11 akan memberi tahu saya apa yang perlu saya lakukan untuk mengimplementasikan bahasa dengan benar dan membuat kode orang bekerja sesuai cara yang mereka harapkan berfungsi.

Sebagai contoh, penulis Microsoft C #. Anda dapat mengunduh C # Language Spesifikasi 5.0 untuk diri Anda sendiri. Dokumen ini adalah janji bahwa kode C # yang Anda tulis harus berperilaku seperti yang dijelaskan dalam spesifikasi, di setiap kompiler yang benar-benar mengimplementasikan spesifikasi dengan benar.

( Jika Anda melakukan hal-hal di luar spesifikasi , Anda berada di wilayah yang tidak ditentukan dan tidak ada jaminan apa pun tentang apa yang akan atau tidak akan terjadi.)

Secara historis, standar kembali ke hal-hal seperti ulir sekrup , sehingga saya dapat memiliki jaminan bahwa jika saya memesan sekrup tipe X, itu akan masuk ke dalam lubang yang telah saya bor, dan akan dapat dipertukarkan dengan sekrup lain dari tipe X.

Yang membawa kita kembali ke definisi kata "standar" :

contoh yang diterima atau disetujui dari sesuatu yang dihakimi atau diukur orang lain - Kamus Collins

Ukuran perbandingan yang diakui untuk nilai kuantitatif atau kualitatif; sebuah kriteria. - Kamus Medis The American Heritage® Stedman

yaitu hal yang Anda bandingkan barang-barang Anda untuk memastikan Anda akan mendapatkan apa yang Anda harapkan.

doppelgreener
sumber
1
Ada juga standar untuk C #, .NET, CLR, dan C ++ / CLR yang diterbitkan oleh ECMA, yang kemudian dilacak dengan cepat ke ISO. ISO juga memiliki standar untuk HTML, ISO HTML 1.0 adalah bagian dari W3C HTML 4.01 Strict.
Jörg W Mittag
4

Standar teknologi adalah spesifikasi sedemikian rupa sehingga dua implementasi dari standar yang sama diharapkan dapat interoperable atau dipertukarkan. Contoh: USB, Bluetooth, Java EE7, HTTP.

Lalu ada standar "de facto": konvensi yang memungkinkan interoperabilitas, tetapi tanpa spesifikasi yang disepakati secara eksplisit. Contoh: Format DOC Microsoft secara historis menjadi standar de facto, karena banyak produk dapat membaca dan menulis DOC, tetapi spesifikasi kanonik tidak tersedia (sampai jauh kemudian). Dokumen masih umum didistribusikan dalam format DOC, dengan harapan bahwa setiap penerima akan dapat membacanya, sehingga telah menjadi standar de facto.

Untuk mengatasi contoh spesifik Anda, REST tidak memiliki spesifikasi yang disepakati secara eksplisit dan oleh karena itu bukan standar yang benar, dan hampir tidak merupakan standar de facto karena memiliki ambiguitas yang cukup besar dalam bagaimana hal itu harus dilakukan dengan benar, dan tidak ada implementasi dominan yang ada. menyelesaikan ambiguitas ini. (Saya tidak menentang REST. Ini adalah cara yang sangat baik untuk membangun layanan web)

Gudmundur Orn
sumber
1

Standar adalah konvensi terstandarisasi - baik dengan spesifikasi formal, atau hanya karena konvensi umum telah mendapatkan popularitas yang cukup untuk menjadi dominan.

A de jure standardadalah spesifikasi yang diterbitkan oleh komite standar. Beberapa komite standar adalah ISO, ECMA, DIN, ANSI, dan W3C.

Beberapa contoh de jure standardsadalah ukuran kertas A4 (standar ISO 219), bahasa c # (ECMA-334), dll.

Istilah 'de jure' jarang digunakan, dan 'standar de jure' sering hanya disebut standar.

Standar de facto adalah kebiasaan, konvensi, produk, atau sistem yang telah mencapai posisi dominan oleh penerimaan publik atau kekuatan pasar "

(sumber: wikipedia - Saya sendiri tidak bisa menulisnya dengan lebih baik)

Standar de facto tidak harus mengikuti spesifikasi formal apa pun.

Seperti yang ditulis Gudmundur Orn dalam jawaban ini , format DOC Microsoft Office adalah standar de facto. Itu memiliki posisi dominan, dan biasanya diasumsikan bahwa orang dapat membaca dokumen MS Word.

JSON adalah binatang yang lucu, karena dimulai sebagai standar de facto. Namun sejak itu telah diresmikan sebagai ECMA-404 , sehingga sekarang menjadi 'standar de jure'.

Namun ini juga merupakan format utama untuk bertukar data dengan API berbasis HTTP (setahu saya), sehingga menjadikannya juga 'standar de facto' tujuan ini.

Pete
sumber
-4

Untuk pertanggungjawaban produk hukum, cacat diklasifikasikan sebagai desain, manufaktur, atau dokumentasi. Sebuah desain tidak cacat jika didasarkan pada standar, apakah standar itu rusak atau tidak. Standar yang berlaku adalah yang berlaku saat produk dibuat. Standar dapat berupa standar yang diterbitkan (ISO) atau standar industri yang diterima yang tidak diterbitkan oleh asosiasi standar. Jadi TCP / IP dengan semua cacat bawaannya seperti spoofing adalah standar dan jika Anda membuat teknologi baru seperti VOIP dan tidak melakukan apa pun untuk melindungi pengguna dari masalah yang diketahui dengan teknologi yang mendasarinya maka Anda aman untuk melanjutkan kekacauan. Atau saya mungkin salah dan memiliki cacat dokumentasi di sini ...

Jason Agronaut
sumber
3
Menurut definisi, standar tidak boleh cacat. Namun, produk yang menerapkan standar dengan benar dapat rusak, hanya saja tidak sesuai dengan tujuannya. Tidak masalah berapa banyak atau seberapa baik Anda mengikuti standar, jika produk tidak memenuhi persyaratan tujuan yang dimaksudkan, itu cacat.
Lie Ryan