O conhecimento estranho aumentou, você conhece a história do aparelho?


Autor | Michael McMillan

Tradutor | Crescent Moon, Editor-Chefe | Xi Yan

Imagem da capa | CSDN Download da Vision China

Venda | CSDN (ID: CSDNnews)

Quando as chaves conhecidas que marcam o início e o fim dos blocos de código começaram a se tornar parte da linguagem de programação? Ou, mais importante, quando o bloco de código se tornou uma parte importante da estrutura de programação?

 

Espero responder a estas perguntas através deste artigo.

Idioma sem blocos de código

 

Os programadores familiarizados com o estilo gramatical da linguagem C estão familiarizados com os blocos de programação. Em C, C ++, Java, JavaScript e muitas outras linguagens, todas as principais estruturas de programação são blocos de código. Em outras palavras, essas estruturas de programação são todas colocadas no bloco de código, e o sinal do bloco de código é a chave de abertura e fechamento.

 

A rigor, isso não está totalmente correto.Por exemplo, se instruções e loops tiverem duas estruturas, se o corpo contiver apenas uma instrução, o bloco de código não poderá ser usado. No entanto, nos últimos anos, especialistas em estilos de programação sugeriram que o corpo principal de todas as estruturas de programação fosse colocado em blocos de código (consulte "A Essência da linguagem JavaScript" de Douglas Cockroft para obter uma explicação mais convincente).

 

No entanto, a primeira linguagem de programação de alto nível não tinha blocos de código.

 

Eu usei a linguagem FORTRAN da década de 1950 como exemplo. Gardner comparou as características de várias linguagens de programação iniciais em sua resenha de The Early Development of Programming Languages, que foi reimpressa em seu livro "Selected Papers on Computer Languages". . Seu método de comparação é demonstrar como escrever um programa em vários idiomas. Este programa implementa um algoritmo chamado TPK. Vamos ver como escrevê-lo no JavaScript moderno:

 

Você não precisa se preocupar com a função deste programa. O ponto aqui é que este programa demonstra todos os recursos importantes das linguagens de programação modernas que Gardner acredita.

 

Como eu disse antes, Gardner usou o algoritmo para comparar várias linguagens de programação, uma das quais agora é reconhecida como a primeira linguagem verdadeiramente de alto nível. A seguir, é apresentado o algoritmo TPK implementado na linguagem Fortran, escrito por Gardner:

 

Não quero detalhar a sintaxe do Fortran, mas você pode ver claramente que o idioma não possui blocos de código. A função é definida em uma determinada linha, não definida como um bloco. Os loops DO usam rótulos de linha para controlar o loop. As linguagens de alto nível da época não tinham o conceito de agrupar instruções combinadas em blocos de código; portanto, essas linguagens ainda precisavam depender do goto para controlar o fluxo do programa.

 

Este código foi escrito pelo Gartner usando o Fortran em 1957. Entre 1957 e 1960, surgiu um novo idioma, ou seja, o ALGOL, que compensava as deficiências de muitos idiomas de alto nível, como o Fortran.

Blocos de código no ALGOL

 

A linguagem de programação ALGOL foi proposta pela primeira vez em 1958, embora a versão mais popular seja o Algol 60. Um dos recursos da linguagem Algol é a capacidade de agrupar frases em instruções combinadas, também chamadas de blocos de código. Cada programa Algol pode ser considerado como um bloco de código, porque o programa geralmente contém uma ou mais instruções (daí o termo "instruções combinadas"). Os desenvolvedores de Algol acreditam que muitos cenários de programação (como julgamento condicional e loops) precisam considerar várias instruções como um todo.

 

Algol usa as palavras-chave begin e end para indicar o início e o fim de um bloco de código. Os blocos de código podem ser aninhados em outros blocos de código.O bloco de código externo é chamado de bloco de código principal e o bloco de código interno é chamado de bloco de subcódigo. Por exemplo, o seguinte programa Algol contém blocos de códigos aninhados:

 

O programa emitirá os números 2 e 1 em ordem.

 

Aqui está um exemplo do uso de blocos de código na instrução if de Algol:

 

A seguir, é apresentado um exemplo do uso de um bloco de código na instrução Algol's:

 

Vamos dar uma olhada no programa TPK escrito em linguagem Algol.Você pode ver que a estrutura do bloco de código pode tornar o programa mais claro em comparação com o Fortran:

 

Pode-se ver que a estrutura de blocos de código de Algol torna o programa mais parecido com a linguagem que usamos hoje.

Vire para BCPL

 

A próxima mudança na gramática da linguagem da estrutura de blocos é a linguagem BCPL inventada por Martin Richards na Universidade de Cambridge em 1967. No estágio inicial do desenvolvimento da linguagem Algol, de 1960 a 1967, os desenvolvedores de compiladores e desenvolvedores de sistemas estavam procurando uma maneira de desenvolver programas de sistema (como sistemas operacionais) usando idiomas diferentes da linguagem de máquina e da linguagem assembly. A razão pela qual a BCPL é enfatizada aqui é porque foi desenvolvida e refinada na linguagem B inventada por Ken Thompson e posteriormente desenvolvida na linguagem C.

 

A linguagem BCPL desenvolvida por Richards é uma linguagem de sistema, que tem a mesma eficiência que a linguagem assembly, mas a sintaxe é mais parecida com linguagens de alto nível, como o Algol, por isso é mais fácil escrever programas e mais eficiente. Isso significa que muitos recursos de linguagens de alto nível, como o Algol, devem ser incluídos no BCPL de maneira mais eficiente.

 

Uma maneira de obter essa eficiência é alterar o logotipo do bloco de código de palavras (início e fim) para símbolos. Para instruções combinadas e blocos de código, Richards recomenda o uso dos símbolos $ (e) $ como as tags de início e fim. Esses símbolos são chamados de "colchetes de seção".

 

No BCPL, se você usar $ (e) $ com estruturas como instruções if ou loops, elas representam uma instrução combinada. Se $ (contém algumas definições, elas representam um bloco de código.

 

Por exemplo, a seguir está um exemplo do uso de instruções if e combinadas no BCPL:

 

A seguir, é apresentado um exemplo de um bloco de código BCPL:

 

Aqui, o token de início indica o início do bloco de código, porque é imediatamente seguido pela declaração.

 

$ (E $) se tornam chaves no idioma C

 

Por volta de 1968 ou 1969, Ken Thompson e Dennis Ritchie, da Bell Labs, começaram a usar a linguagem de programação de sistemas para desenvolver sistemas operacionais. De fato, Thompson inicialmente queria usar o Fortran, mas logo desistiu porque descobriu que o Fortran não poderia ser alcançado. Então, ele decidiu modificar a linguagem BCPL para criar uma linguagem de sistema mais adequada, e a linguagem B nasceu.

 

Embora a linguagem B esteja mais próxima da linguagem do sistema que Thompson e Ritchie desejavam, ainda não conseguia atender totalmente aos requisitos, então a Ritchie começou a desenvolver outra linguagem, chamada NB, que significa Novo B. O NB não sobreviveu por muito tempo e acabou sendo substituído por outro idioma novinho em folha, que finalmente foi chamado C. Se você está escrevendo sobre linguagem C em BCPL, B e NB, sugiro que leia "History of the C Language", de Dennis Ritchie.

 

Muitos dos recursos herdados da linguagem B para a NB e depois para a linguagem C foram modificados por Thompson, um dos quais é a abreviação de operador. Para colocar o idioma em um computador com memória muito limitada no momento, essas modificações foram necessárias. Por exemplo, Thompson criou operadores de atribuição combinada (como + =) e operadores de auto incremento (++) e auto-diminuição (-) para tornar o idioma mais eficiente. Isso também simplificou outros símbolos no BCPL, por exemplo, $ (e) $ foi alterado para {e}.

 

Status

 

Atualmente, muitas linguagens adotaram chaves como o principal símbolo dos blocos de código, especialmente aqueles que se aproximam do estilo C, como C ++, Java, C # e JavaScript.

 

Mais interessante, o novo idioma também usa chaves, como Go e Rust. De fato, a linguagem Go requer chaves para toda declaração condicional ou estrutura de loop, que segue o conselho de especialistas em programação: mesmo que não seja necessário, chaves devem ser usadas para todas as estruturas.

Link original:

https://medium.com/better-programming/a-brief-history-of-the-curly-brace-in-programming-5b3eacdc3f7a

Este artigo é um artigo de tradução da CSDN, por favor indique a fonte.

【FIM】

Benefícios de hoje

Conheça Lu Qi

Também como parte importante de "Um milhão de pessoas aprendem IA", a Conferência Dez Mil para Desenvolvedores da AIProCon 2020 será transmitida ao vivo on-line de 3 a 4 de julho, permitindo que os desenvolvedores aprendam sobre a tecnologia de ponta da IA ​​em uma parada Pesquisa, tecnologia e aplicação principais e experiência prática de casos empresariais, e também pode participar de emocionantes e diversos salões de desenvolvedores e projetos de programação on-line. Participando da série de atividades prospectivas e da interação com transmissão ao vivo on-line, não apenas é possível se comunicar com dezenas de milhares de desenvolvedores, mas também a oportunidade de ganhar presentes exclusivos para transmissões ao vivo e até se juntar à gigante da tecnologia.

Os ingressos são limitados ao grande show! A partir de hoje, clique para ler o registro original "2020 AI Developer Ten Thousand Conference", use o código de cupom "AIP211", você pode obter um bilhete de conferência on-line gratuito no valor de 299 yuan. Limitado a 100 folhas, primeiro a chegar, primeiro a ser servido! Venha e use seu dedo para obter uma associação de graça!

Clique para ler o texto original e vá diretamente para o site oficial da conferência.

Recomendações mais interessantes

PlatformUma plataforma de desenvolvimento de IA assassina está aqui! Diga adeus à troca de ferramentas de modelagem dispersa

IdeaA ideia de transporte inteligente causada pelo engarrafamento da quarta via circular de Pequim

Por favor, não me pergunte qual é a pilha!

IdeaA ideia de transporte inteligente causada pelo engarrafamento da quarta via circular de Pequim

MachineA máquina virtual da sua empresa ainda está ociosa? Aprenda sobre as práticas de teste de integração contínua baseadas em Jenkins e Kubernetes!

WebDe Web1.0 a Web3.0: análise detalhada do desenvolvimento e direção futura da Internet nesses anos

Todo "assistindo" você pede, eu levo isso a sério

Artigos publicados em 1958 · mais de 40.000 elogios · 18,17 milhões de visualizações

Acho que você gosta

Origin blog.csdn.net/csdnnews/article/details/105548966
Recomendado
Clasificación