Linguagem padrão

Uma linguagem padrão é um método de descrever boas práticas de design ou padrões de organização útil dentro de um campo de especialização. O termo foi cunhado pelo arquiteto Christopher Alexander e popularizado por seu livro de 1977 A Pattern Language.

Uma linguagem de padrões também pode ser uma tentativa de expressar a sabedoria mais profunda do que traz vitalidade dentro de um campo particular de esforço humano, através de um conjunto de padrões interconectados. A vivacidade é um termo de espaço reservado para “a qualidade que não tem nome”: um senso de inteireza, espírito ou graça, que, embora de forma variada, é preciso e empiricamente verificável. Alguns defensores dessa abordagem de design afirmam que pessoas comuns podem usá-la para solucionar com sucesso problemas de projeto complexos e muito grandes.

O que é um padrão?
Quando um designer desenha algo – seja uma casa, um programa de computador ou uma lâmpada – eles devem tomar muitas decisões sobre como resolver problemas. Um único problema é documentado com seu local típico (a sintaxe) e usa (a gramática) a solução mais comum e reconhecida vista na natureza, como os exemplos vistos nos dicionários. Cada entrada é um padrão de design único. Cada padrão tem um nome, uma entrada descritiva e algumas referências cruzadas, bem como uma entrada de dicionário. Um padrão documentado deve explicar por que essa solução é boa nos contextos do padrão.

Padrões elementares ou universais, como “porta” ou “parceria”, são ideais versáteis de design, como encontrados na experiência ou para uso como componentes na prática, explicitamente descritos como resoluções holísticas das forças em contextos e circunstâncias recorrentes, seja na arquitetura, medicina, desenvolvimento de software ou governança, etc. Os padrões podem ser inventados ou encontrados e estudados, como os padrões naturais de design que caracterizam os ambientes humanos.

Como todas as linguagens, uma linguagem de padrões tem vocabulário, sintaxe e gramática – mas uma linguagem de padrão se aplica a alguma atividade complexa além da comunicação. Em linguagens de padrão para design, as partes se dividem da seguinte maneira:

A descrição da linguagem – o vocabulário – é uma coleção de soluções nomeadas e descritas para problemas em um campo de interesse. Estes são chamados de padrões de design. Assim, por exemplo, a linguagem para arquitetura descreve itens como: assentamentos, edifícios, salas, janelas, travas, etc.
Cada solução inclui sintaxe, uma descrição que mostra onde a solução se encaixa em um design maior, mais abrangente ou mais abstrato. Isso vincula automaticamente a solução a uma rede de outras soluções necessárias. Por exemplo, os quartos têm formas de obter luz e maneiras de atrair e retirar pessoas.
A solução inclui gramática que descreve como a solução resolve um problema ou produz um benefício. Portanto, se o benefício for desnecessário, a solução não será usada. Talvez essa parte do design possa ser deixada em branco para economizar dinheiro ou outros recursos; se as pessoas não precisarem esperar para entrar em uma sala, uma porta simples pode substituir uma sala de espera.
Na descrição da linguagem, a gramática e a sintaxe cruzam o índice (geralmente com um índice alfabético literal de nomes de padrões) para outras soluções nomeadas, portanto o designer pode rapidamente pensar de uma solução para soluções relacionadas e necessárias e documentá-las de maneira lógica. No livro de Christopher Alexander, A Pattern Language, os padrões estão em ordem decrescente por tamanho, com um índice alfabético separado.
A web de relacionamentos no índice da linguagem fornece muitos caminhos através do processo de design.
Isso simplifica o trabalho de design, pois os projetistas podem iniciar o processo a partir de qualquer parte do problema que entendem e trabalhar em direção às partes desconhecidas. Ao mesmo tempo, se a linguagem de padrões funcionou bem para muitos projetos, há motivos para acreditar que até mesmo um projetista que não entende completamente o problema de design inicialmente concluirá o processo de design e o resultado será utilizável. Por exemplo, os esquiadores que chegam devem deixar a neve e guardar equipamentos. A neve bagunçada e os limpadores de botas devem ficar do lado de fora. O equipamento precisa de cuidados, então os racks devem estar dentro.

Muitos padrões formam uma linguagem
Assim como as palavras devem ter relações gramaticais e semânticas entre si, a fim de tornar a linguagem falada útil, os padrões de design devem estar relacionados entre si em posição e ordem de utilidade para formar uma linguagem de padrão. O trabalho de Christopher Alexander descreve um processo de decomposição, no qual o projetista tem um problema (talvez uma atribuição comercial), seleciona uma solução e descobre novos problemas menores resultantes da solução maior. Ocasionalmente, os problemas menores não têm solução e uma solução maior diferente deve ser selecionada. Eventualmente todos os problemas de design restantes são pequenos o suficiente ou rotineiros o suficiente para serem resolvidos por improvisação pelos construtores, e o “design” é feito.

A estrutura organizacional atual (hierárquica, iterativa, etc.) é deixada a critério do projetista, dependendo do problema. Isso permite explicitamente que um designer explore um design, começando de uma pequena parte. Quando isso acontece, é comum que um designer perceba que o problema é, na verdade, parte de uma solução maior. Neste ponto, o design quase sempre se torna um design melhor.

Na linguagem, portanto, cada padrão deve indicar suas relações com outros padrões e com a linguagem como um todo. Isto dá ao designer usando a linguagem uma grande quantidade de orientação sobre os problemas relacionados que devem ser resolvidos.

A parte mais difícil de ter um especialista externo aplicando uma linguagem padrão é, de fato, obter uma lista completa e confiável dos problemas a serem resolvidos. Claro, as pessoas mais familiarizadas com os problemas são as pessoas que precisam de um design. Por isso, Alexander defendeu a improvisação no local por usuários preocupados e capacitados, como uma maneira poderosa de formar soluções iniciais em larga escala muito viáveis, maximizando a utilidade de um projeto e minimizando o retrabalho do design. O desejo de capacitar os usuários da arquitetura foi, de fato, o que levou Alexander a empreender um projeto de linguagem de padrões para a arquitetura em primeiro lugar.

Problemas de design em um contexto
Um aspecto importante dos padrões de projeto é identificar e documentar as ideias-chave que tornam um bom sistema diferente de um sistema deficiente (que pode ser uma casa, um programa de computador ou um objeto de uso diário) e ajudar no projeto de futuras sistemas. A ideia expressa em um padrão deve ser geral o suficiente para ser aplicada em sistemas muito diferentes dentro de seu contexto, mas ainda específica o suficiente para fornecer uma orientação construtiva.

A gama de situações em que os problemas e soluções abordadas em um padrão se aplicam é chamada de contexto. Uma parte importante em cada padrão é descrever esse contexto. Exemplos podem ilustrar melhor como o padrão se aplica a situações muito diferentes.

Por exemplo, o padrão de Alexander “Um lugar para esperar” aborda paradas de ônibus da mesma maneira que salas de espera em uma cirurgia, enquanto ainda propõe soluções úteis e construtivas. Os Padrões de Design do livro “Gang-of-Four” de Gamma et al. propõe soluções independentes da linguagem de programação e do domínio de aplicação do programa.

Ainda assim, os problemas e soluções descritos em um padrão podem variar em seu nível de abstração e generalidade de um lado, e especificidade no outro lado. No final, isso depende das preferências do autor. No entanto, mesmo um padrão muito abstrato geralmente contém exemplos que são, por natureza, absolutamente concretos e específicos.

Padrões também podem variar em quanto eles são provados no mundo real. Alexander atribui a cada padrão uma classificação de zero, uma ou duas estrelas, indicando quão bem elas são comprovadas em exemplos do mundo real. É geralmente afirmado que todos os padrões precisam de pelo menos alguns exemplos existentes do mundo real. É, no entanto, concebível documentar idéias ainda não implementadas em um formato semelhante a um padrão.

Os padrões no livro de Alexander também variam em seu nível de escala – alguns descrevendo como construir uma cidade ou um bairro, outros lidando com edifícios individuais e o interior dos quartos. Alexander vê os artefatos de baixa escala como elementos construtivos do mundo em larga escala, para que possam ser conectados a uma rede hierárquica.

Equilíbrio de forças
Um padrão deve caracterizar os problemas que ele deve resolver, o contexto ou a situação em que esses problemas surgem e as condições sob as quais as soluções propostas podem ser recomendadas.

Muitas vezes, esses problemas surgem de um conflito de interesses ou “forças” diferentes. Um padrão surge como um diálogo que ajudará a equilibrar as forças e finalmente tomar uma decisão.

Por exemplo, pode haver um padrão sugerindo um telefone sem fio. As forças seriam a necessidade de se comunicar, e a necessidade de fazer outras coisas ao mesmo tempo (cozinhar, inspecionar a estante de livros). Um padrão muito específico seria apenas “TELEFONE SEM FIO”. Padrões mais gerais seriam “DISPOSITIVO SEM FIO” ou “ATIVIDADE SECUNDÁRIA”, sugerindo que uma atividade secundária (como falar ao telefone ou inspecionar os bolsos da calça jeans) não deve interferir em outras atividades.

Embora bastante inespecíficas em seu contexto, as forças no padrão “ACTIVIDADE SECUNDÁRIA” são muito semelhantes às do “TELEFONE SEM FIO”. Assim, as forças concorrentes podem ser vistas como parte da essência de um conceito de design expresso em um padrão.

Padrões contêm sua própria lógica
Geralmente, um padrão contém uma justificativa referente a alguns valores dados. Para Christopher Alexander, é mais importante pensar nas pessoas que entrarão em contato com uma arquitetura. Um de seus principais valores é fazer com que essas pessoas se sintam mais vivas. Ele fala sobre a “qualidade sem nome” (QWAN).

Em termos mais gerais, poderíamos dizer que um bom sistema deve ser aceito, bem-vindo e felizmente adotado como um enriquecimento da vida diária por aqueles que devem usá-lo, ou – melhor ainda – por todas as pessoas que ele afeta. Por exemplo, ao discutir um café de rua, Alexander discute os possíveis desejos de um convidado, mas também menciona pessoas que simplesmente passam por ele.

O mesmo raciocínio pode ser aplicado a dispositivos técnicos como telefones e carros, a estruturas sociais como uma equipe trabalhando em um projeto ou à interface do usuário de um programa de computador. As qualidades de um sistema de software, por exemplo, podem ser avaliadas observando se os usuários passam o tempo aproveitando ou lutando com o sistema.

Concentrando-nos nos impactos na vida humana, podemos identificar padrões independentes da mudança de tecnologia e, assim, encontrar “qualidade intemporal” (Alexander).

Estrutura e layout genéricos
Normalmente, o autor de uma linguagem ou coleção de padrões escolhe uma estrutura genérica para todos os padrões que contém, dividindo cada um em seções genéricas como contexto, declaração de problema, solução etc.

Os padrões de Christopher Alexander, por exemplo, consistem em um nome curto, uma classificação (até dois símbolos *), um quadro de sensibilização, a descrição do contexto, a declaração do problema, uma parte maior do texto com exemplos e explicações, uma solução. declaração, um esboço e outras referências. Esta estrutura e layout é por vezes referida como a “forma Alexandrina”.

Alexander usa um layout de texto especial para marcar as diferentes seções de seus padrões. Por exemplo, a declaração do problema e a declaração da solução são impressas em negrito, a última sempre é precedida pela palavra-chave “Portanto:”. Alguns autores usam rótulos explícitos, o que cria algum grau de redundância.

Nomes significativos
Quando o design é feito por uma equipe, os nomes dos padrões formam um vocabulário que eles podem compartilhar. Isso torna necessário que os nomes de padrões sejam fáceis de lembrar e altamente descritivos. Alguns exemplos dos trabalhos de Alexander são o WINDOW PLACE (ajuda a definir onde as janelas devem ir em uma sala) e um LUGAR PARA ESPERAR (ajuda a definir as características das paradas de ônibus e das salas de espera do hospital, por exemplo).

Agregação em uma rede associativa (linguagem padrão)
Uma linguagem de padrões, como concebida por Alexander, contém links de um padrão para outro, portanto, ao tentar aplicar um padrão em um projeto, um designer é empurrado para outros padrões que são considerados úteis em seu contexto.

No livro de Alexander, tais links são coletados na parte “referências” e ecoam na parte “contexto” do padrão vinculado – assim, a estrutura geral é um gráfico direcionado. Um padrão que está ligado nas “referências” geralmente aborda um problema de menor escala, que é sugerido como parte do problema de maior escala. Por exemplo, o padrão “PUBLIC OUTDOOR ROOM” tem uma referência a “STAIR SEATS”.

Mesmo sem a descrição do padrão, esses links, juntamente com nomes significativos, carregam uma mensagem: Ao construir um lugar fora de onde as pessoas possam passar tempo (“SALA DE PÚBLICO EXTERIOR”), considere cercá-lo por escadas onde as pessoas possam se sentar. “). Se você estiver planejando um escritório (“WORKSHOPS AND OFFICES”), considere organizar espaços de trabalho em pequenos grupos (“GRUPOS DE TRABALHO PEQUENOS”). Alexander argumenta que as conexões na rede podem ser consideradas ainda mais significativas do que o texto dos próprios padrões.

Os links no livro de Alexander claramente resultam em uma rede hierárquica. Alexander traça um paralelo com a hierarquia de uma gramática – esse é um argumento para ele falar de uma linguagem de padrões.

A idéia de vinculação é geralmente aceita entre os autores de padrões, embora a lógica semântica por trás dos links possa variar. Alguns autores, no entanto, como Gamma et al. Nos Padrões de Design, faça apenas um pequeno uso de vinculação de padrões – possivelmente porque isso não faz muito sentido para sua coleção de padrões. Nesse caso, falaríamos de um catálogo de padrões em vez de uma linguagem de padrões.

Uso
Alexander encorajou as pessoas que usaram seu sistema para expandir sua linguagem com padrões próprios. Para permitir isso, seus livros não se concentram estritamente em arquitetura ou engenharia civil; ele também explica o método geral das linguagens de padrões. O conceito original para o livro A Pattern Language era que seria publicado na forma de um fichário de 3 argolas, para que as páginas pudessem ser facilmente adicionadas mais tarde; isso se mostrou impraticável na publicação. A abordagem da linguagem padrão tem sido usada para documentar conhecimentos em diversos campos. Alguns exemplos são padrões arquiteturais, padrões de ciência da computação, padrões de design de interação, padrões pedagógicos, padrões de ação social e padrões de facilitação de grupo. A abordagem da linguagem padrão também tem sido recomendada como uma forma de promover a inteligência cívica, ajudando a coordenar ações para diversas pessoas e comunidades que estão trabalhando juntas em problemas compartilhados significativos. As especificações de Alexander para o uso de linguagens de padrões, bem como a criação de novas linguagens, permanecem influentes e seus livros são referenciados para o estilo por especialistas em campos não relacionados.

É importante observar que notações como UML ou a coleção de símbolos de fluxograma não são linguagens de padrão. Eles poderiam ser comparados mais de perto a um alfabeto: seus símbolos poderiam ser usados ​​para documentar uma linguagem padrão, mas eles não são uma linguagem por si mesmos. Uma receita ou outro conjunto seqüencial de etapas a serem seguidas, com apenas um caminho correto do início ao fim, também não é uma linguagem de padrão. No entanto, o processo de criação de uma nova receita pode se beneficiar do uso de uma linguagem de padrões.

Exemplo simples de um padrão
Nome: ChocolateChipRatio
Contexto: Você está assando biscoitos de chocolate em pequenos lotes para a família e amigos
Considere estes padrões primeiro: SugarRatio, FlourRatio, EggRatio
Problema: Determine a proporção ideal de gotas de chocolate para massa de biscoito
Solução: Observe que a maioria das pessoas considera o chocolate como a melhor parte do biscoito de chocolate. Observe também que muito chocolate pode impedir que o cookie se mantenha unido, diminuindo sua atratividade. Desde que você está cozinhando em pequenos lotes, o custo não é uma consideração. Portanto, use a quantidade máxima de gotas de chocolate que resulta em um cookie realmente robusto.
Considere o seguinte: NutRatio ou CookingTime ou FreezingMethod

Origem
Christopher Alexander, um arquiteto e autor, cunhou o termo linguagem de padrões. Ele usou para se referir a problemas comuns do projeto e construção de edifícios e cidades e como eles deveriam ser resolvidos. As soluções propostas no livro incluem sugestões que vão desde como cidades e vilas devem ser estruturadas até onde as janelas devem ser colocadas em uma sala.

A estrutura e a filosofia da abordagem da “linguagem padrão” foram inicialmente popularizadas no livro A Pattern Language, que foi escrito por Christopher Alexander e cinco colegas no Center for Environmental Structure, em Berkeley, Califórnia, no final da década de 1970. Enquanto A Pattern Language contém 253 “padrões” do primeiro padrão, “Independent Regions” (o mais geral) até o último, “Things from Your Life”, o livro de The Timeless Way of Building explora mais sobre a motivação e propósito do trabalho. As seguintes definições de “pattern” e “pattern language” são parafraseadas de A Pattern Language:

“Um padrão é uma descrição cuidadosa de uma solução perene para um problema recorrente dentro de um contexto de construção, descrevendo uma das configurações que dá vida a um edifício. Cada padrão descreve um problema que ocorre repetidamente em nosso ambiente e descreve a solução principal para esse problema, de forma que você possa usar a solução um milhão de vezes, sem nunca fazer da mesma maneira duas vezes. ”

Uma linguagem de padrões é uma rede de padrões que invocam uns aos outros. Padrões nos ajudam a lembrar insights e conhecimento sobre design e podem ser usados ​​em combinação para criar soluções.

Domínios de aplicação
A ideia de Christopher Alexander foi adotada em outras disciplinas, frequentemente muito mais do que a aplicação original de padrões à arquitetura, conforme descrito no livro A Pattern Language. Exemplos recentes incluem padrões de design de software em engenharia de software e, mais geralmente, padrões de arquitetura em ciência da computação, bem como padrões de design de interação. Padrões pedagógicos são usados ​​para documentar boas práticas no ensino. O livro Libertando Vozes: Uma Linguagem Padrão para a Revolução da Comunicação, contendo 136 padrões de uso de informação e comunicação para promover a sustentabilidade, a democracia e a mudança social positiva, foi publicado em 2008 junto com um site contendo ainda mais padrões. O deck “Group Works: Uma Linguagem Padrão para Trazer Vida a Reuniões e Outras Reuniões” foi publicado em 2011. Recentemente, os padrões também foram introduzidos no design de arquitetura de sistemas. A estratégia e as táticas de xadrez envolvem muitos padrões, desde a abertura até o xeque-mate.

Ward Cunningham, o inventor do wiki, co-autor de um artigo com Michael Mehaffy argumentando que existem relações profundas entre wikis e linguagens padrão, e que wikis “foram de fato desenvolvidos como ferramentas para facilitar o compartilhamento eficiente e a modificação de padrões”.