O que significa quando alguma tecnologia é um "padrão"?

16

Comecei a aprender Java EE 7 e frequentemente encontro esse termo "padrão" e não entendo o que isso significa.

Então, por exemplo, aqui está uma citação deste livro:

Ao contrário do SOAP e da pilha WS- *, que dependem dos padrões W3C, o REST não possui padrão e é apenas um estilo de arquitetura com princípios de design. Os aplicativos REST dependem muito de muitos outros padrões: HTTP, URI, URL ...

Eu tenho uma idéia do que isso pode significar, mas não tenho certeza.

A melhor explicação que me deparei é a definição daqui .

Djole Pi
fonte
7
Leia a wiki no padrão técnico . Mas pode ser realmente um chavão . Os padrões são geralmente especificações: então C ++ 11 e Posix são padrões.
Basile Starynkevitch
Isso significa que quem quer que esteja pressionando está tentando convencê-lo a comprar (dentro).
bmargulies 01/09/14

Respostas:

21

O termo "padrões" na programação geralmente se refere a uma tecnologia / documento que é governado por um grupo ou comunidade. Os membros desse grupo geralmente compartilham objetivos comuns, são usuários ativos dessa tecnologia e desejam garantir que a tecnologia continue.

Existem muitas "coisas" na programação que têm uma comunidade que as governa. Esses membros podem variar de programadores a representação corporativa (por exemplo, Apple, Microsoft, IBM, etc. etc.)

O W3C é um grupo muito grande que trabalha em conjunto para definir muitos padrões.

Aqui está uma lista de membros.

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

O REST é um exemplo de tecnologia, por sua popularidade é usado por muitas pessoas, mas não há grupo ou comunidade que o governe. Portanto, não há um lugar para apontar o dedo e dizer "é assim que os padrões dizem que isso deve ser feito" .

Empresas como IBM, Microsoft e outras pessoas publicaram documentação de como implementar o REST. Pode-se dizer que existe uma "maneira comum" de implementar o REST. Você pode escolher uma fonte autorizada que descreva uma implementação do REST e reivindicar seguir essa referência. O uso de fontes autorizadas é uma maneira de lidar com os problemas de compatibilidade nos navegadores da web.

Reactgular
fonte
4
Gostaria de acrescentar também RFC à lista de lugares para encontrar padrões, já que por exemplo HTTP que o consulente mencionado é definido pela RFC 2616
2
@Snowman Lembre-se de que nem todas as RFCs são padrão ; Eu acredito que a maioria não é . Além disso, como você pode ver na parte superior da página vinculada, o RFC 2616 é obsoleto pelo RFC 7230-7235, que deve ser referido. Aliás, esse é apenas um "Padrão Proposto", não um "Padrão da Internet" (ambos são rastreados por padrões, mas o último é considerado muito mais maduro e improvável de mudar).
Bob
@ Snowman: Seu comentário na verdade ilustra a coisa mais importante: um padrão é quando as pessoas concordam que é um padrão. Se você realmente olhar a página RRF, verá que existem centenas de RFCs, mas na verdade apenas 78 padrões. E o HTTP, que você mencionou, na verdade não é um padrão! É "apenas" uma Solicitação de Comentários, ou seja, alguma idéia que alguém tenha que ele queira discutir. O que torna o HTTP um padrão não é que algum órgão governamental o publique (porque o órgão governamental em questão, na verdade, não o chama de "padrão"), mas porque as pessoas o tratam como um.
Jörg W Mittag
@ JörgWMittag Eu sempre adotei um padrão para ser um documento publicado de uma fonte autorizada, informando como algo deveria ser . O problema é que as pessoas podem discordar do que é uma fonte autorizada, enquanto outras abusam de seus poderes autoritários (por exemplo, Microsoft e Apple são bons exemplos). Os dois geralmente ignoram ou tentam forçar padrões. Os padrões geralmente podem ser algo que uma grande empresa poderosa sente que não se aplica a eles.
Reactgular
1
@ Matthew "Eu sempre adotei um padrão para ser um documento publicado por uma fonte autorizada, informando como algo deveria ser". - Eu concordo com esta frase no seu comentário, mas sua resposta atualmente diz que o termo 'padrão' se refere à própria tecnologia. (Por exemplo, de acordo com isso, Java é um padrão, a especificação do Java EE 7 não é um padrão.) A versão anterior dizia que as organizações , como Oracle ou W3C, eram o que significa "padrão". Sua resposta precisa ser atualizada para dizer o que você quer dizer aqui. Escrita como está, sua resposta contém informações incorretas. :(
doppelgreener 01/09/14
10

Um padrão é um documento técnico que especifica como uma tecnologia se comporta. (Para algumas tecnologias, pode ser algum outro tipo de padrão técnico .) Isso é tudo o que são e por que eles existem: são documentos, e eles descrevem a tecnologia.

Esses documentos são de autoria de um corpo diretivo que possui a autoridade e a confiança necessárias para que eles possam decidir como essa tecnologia funciona e para que as pessoas se importem quando lançam um documento de especificação como padrão. Um corpo diretivo pode produzir muitos padrões, para diferentes tecnologias ou diferentes versões de uma tecnologia. O corpo diretivo também pode ser conhecido como mantenedores, autores, guardiões, etc. das normas.

(Ao contrário do que Mathew descreve, um padrão não é o órgão de governo nem a própria tecnologia. É um documento que descreve a tecnologia, ou uma versão específica dela.)

Alguns exemplos de padrões para as tecnologias que você mencionou (e outros):

O HTML é um bom exemplo do fato de que versões diferentes de uma linguagem geralmente têm padrões diferentes. As várias versões têm documentos diferentes que descrevem como as várias versões do idioma devem ser tratadas.

Enquanto isso, o HTTP é um dos muitos exemplos de um movimento padrão entre grupos: primeiro pelo Grupo de Trabalho em Rede, depois para o Grupo de Trabalho HTTP, embora ambos os grupos fizessem parte da IETF. Outras tecnologias foram movidas entre empresas, como HTML (novamente), versão 2 da qual foi criada pelo IETF no RFC1866 .

Por que existem padrões?

Eles existem para nos dar uma garantia de como as coisas vão funcionar.

A especificação HTML5 me diz como os vários navegadores manipularão e exibirão a marcação HTML5 que eu escrevo, assumindo que eles implementem o padrão corretamente (o que historicamente tem sido um problema). O padrão C ++ 11 me dirá coisas sobre o que vários códigos C ++ 11 que eu escrevo farão ou não farão.

Da mesma forma, se eu estiver escrevendo um navegador, o padrão HTML5 me dirá como preciso lidar com várias partes da marcação HTML5 para que as pessoas obtenham o que esperam. Se eu estiver escrevendo um compilador C ++ 11, o padrão C ++ 11 me dirá o que preciso fazer para implementar a linguagem corretamente e fazer com que o código das pessoas funcione da maneira que eles esperam.

Por exemplo, os autores da Microsoft C #. Você pode baixar a especificação de idioma C # 5.0 para si mesmo. Este documento é uma promessa de que o código C # que você escreve deve se comportar da maneira como é descrito na especificação, em qualquer compilador que realmente implemente a especificação corretamente.

( Se você fizer coisas fora da especificação , estará em um território indefinido e não há garantia alguma sobre o que acontecerá ou não.)

Historicamente, os padrões remontam a roscas de rosca , para que eu possa ter alguma garantia de que, se eu pedir um parafuso do tipo X, ele se encaixará no orifício que fiz e será intercambiável com outros parafusos do tipo X.

O que nos leva de volta à definição da palavra "padrão" :

um exemplo aceito ou aprovado de algo contra o qual outros são julgados ou medidos - Collins Dictionary

Uma medida de comparação reconhecida para valor quantitativo ou qualitativo; um critério. - Dicionário Médico American Heritage® Stedman

ou seja, a coisa com a qual você compara suas coisas, para garantir o que espera.

doppelgreener
fonte
1
Também há um padrão para C #, .NET, CLR e C ++ / CLR publicado pela ECMA, que foi acelerado para ISO. ISO também possui um padrão para HTML, ISO HTML 1.0 é um subconjunto do W3C HTML 4.01 Strict.
Jörg W Mittag
4

Um padrão de tecnologia é uma especificação de tal forma que se espera que duas implementações do mesmo padrão sejam interoperáveis ​​ou intercambiáveis. Exemplos: USB, Bluetooth, Java EE7, HTTP.

Depois, existem padrões "de fato": convenções que permitem a interoperabilidade, mas sem uma especificação explícita e acordada. Exemplo: O formato Microsoft DOC tem sido historicamente um padrão de fato, pois muitos produtos podiam ler e escrever DOC, mas as especificações canônicas não estavam disponíveis (até muito mais tarde). Os documentos ainda eram comumente distribuídos no formato DOC, com a expectativa de que qualquer receptor pudesse lê-lo, tornando-se um padrão de fato.

Para abordar seu exemplo específico, o REST não possui uma especificação acordada explícita e, portanto, não é um padrão verdadeiro e apenas um padrão de fato, pois possui uma ambiguidade considerável de como deve ser feito corretamente e não existem implementações dominantes que resolve essas ambiguidades. (Eu não sou contra o REST. É uma maneira muito boa de criar serviços da web)

Gudmundur Orn
fonte
1

Um padrão é uma convenção padronizada - por uma especificação formal ou simplesmente porque uma convenção comum ganhou popularidade suficiente para ser dominante.

A de jure standardé uma especificação publicada por um comitê padrão. Alguns comitês padrão são ISO, ECMA, DIN, ANSI e W3C.

Alguns exemplos de jure standardssão o tamanho do papel A4 (padrão ISO 219), o idioma c # (ECMA-334) etc.

O termo 'de jure' raramente é usado, e um 'padrão de jure' é frequentemente chamado de padrão.

Um padrão de fato é um costume, convenção, produto ou sistema que alcançou uma posição dominante pela aceitação pública ou pelas forças do mercado "

(fonte: wikipedia - Eu não poderia escrever melhor)

Um padrão de fato não segue necessariamente nenhuma especificação formal.

Como Gudmundur Orn escreveu nesta resposta , o formato DOC do Microsoft Office era um padrão de fato. Tinha uma posição dominante e normalmente se supunha que as pessoas podiam ler documentos do MS Word.

JSON é um animal engraçado, pois começou como um padrão de fato. No entanto, desde que foi formalizado como ECMA-404 , agora é um "padrão de jure".

No entanto, é também o formato predominante para a troca de dados com APIs baseadas em HTTP (que eu saiba), tornando-o também o 'padrão de fato' desse objetivo.

Pete
fonte
-4

Para responsabilidade legal do produto, o defeito é classificado como design, fabricação ou documentação. Um projeto não está com defeito se for baseado em um padrão, independentemente de esse padrão estar ou não. O padrão que se aplica é aquele em vigor quando o produto foi criado. Um padrão pode ser um padrão publicado (ISO) ou um padrão aceito do setor que não seja publicado pela associação de padrões. Portanto, o TCP / IP com todos os seus defeitos inerentes, como a falsificação, é um padrão; se você criar uma nova tecnologia como VOIP e não fizer nada para proteger o usuário de problemas conhecidos com a tecnologia subjacente, estará seguro para continuar o caos. Ou posso estar errado e ter um defeito de documentação aqui ...

Jason Agronaut
fonte
3
Por definição, um padrão não pode estar com defeito. No entanto, um produto que implementa um padrão corretamente pode estar com defeito, mas não é adequado para a finalidade. Não importa quantas ou quão bem você siga os padrões, se o produto não atender aos requisitos de sua finalidade, está com defeito.
Lie Ryan