Go (linguagem de programação): diferenças entre revisões
Conteúdo apagado Conteúdo adicionado
Etiqueta: Remoção considerável de conteúdo |
m Revertidas edições por 177.173.238.100 para a última versão por !Silent, de 19h36min de 6 de outubro de 2012 (UTC) |
||
Linha 24:
== Descrição ==
A linguagem de programação Go é um projeto de código aberto com o intuito de fazer programadores mais produtivos. Seus mecanismos de concorrência se GO nasceu da frustração com as línguas existentes e ambientes para programação de sistemas.
Cada idioma contém novas características e omite recursos, ulguns recursosa pode estar ausente porque ele não se encaixa, porque afeta a velocidade de compilação ou de clareza do projeto, ou porque ela iria fazer o modelo de sistema fundamental muito difícil. Programadores que poderia estavam escolhendo facilidade sobre segurança e eficiência mudando-se para linguagens com tipagem dinâmica como por exemplo: Python e JavaScript.
Não há nenhuma declaração para frente e não há arquivos de cabeçalho, tudo é declarado exatamente uma vez. A inicialização é expressivo, automática e fácil de usar. Sintaxe é limpa e leve em palavras-chave. Gagueira como: ( foo.Foo* myFoo = new(foo.Foo) ) é reduzido por derivação tipo simples usando o := declarar-e-inicializar construir. Não há hierarquia de tipo. O programa CGO fornece o mecanismo para uma "interface de função estrangeira" para permitir chamadas
GO fornece um modelo para a construção de software que faz a análise de dependência de forma facilitada e evita grande parte da sobrecarga como de estilo C de incluir arquivos e bibliotecas. Sistema do tipo GO não tem hierarquia, assim, nenhum tempo é gasto definir as relações entre os tipos. Algumas funcionalidades ausentes são tratamento de exceção, Herança, programação genérica, assert e sobrecarga de métodos. Os autores expressam abertura para discutir programação genérica, mas argumentam abertamente contra asserções e defendem a omissão de herança de tipos em favor da eficiência. Ao contrário de Java, vetores associativos são parte intrísceca da linguagem, assim como strings.▼
SWIG estende essa capacidade de bibliotecas C + +. GO fornece um modelo para a construção de software que faz a análise de dependência de forma facilitada e evita grande parte da sobrecarga como de estilo C de incluir arquivos e bibliotecas.
GO oferece goroutines, pequenos tópicos leves, o nome faz alusão a co-rotinas . Goroutines são criadas como declaração de funções anônimas ou nomeado. Goroutines são executados em paralelo com outras goroutines, incluindo o seu interlocutor. Eles não necessariamente executados em segmentos separados, mas um grupo de goroutines são multiplexados em vários segmentos - controle de execução é movida entre eles, bloqueando-os ao enviar ou receber mensagens através de canais.▼
Sistema do tipo GO não tem hierarquia,assim, nenhum tempo é gasto definir as relações entre os tipos.
Pelos seus conceitos ortogonais, métodos podem ser implementados por qualquer tipo; estruturas representam dados, enquanto interfaces representam abstração, e assim por diante. Ortogonalidade torna mais fácil de entender o que acontece quando as coisas se combinam. Uma das características incomuns da GO é que funções e métodos podem retornar vários valores. ▼
▲
A linguagem foi projetada para ser fácil de analisar e pode ser analisado sem uma tabela de símbolos. Tornando muito mais fácil ser analisado por ferramentas como depuradores, analisadores de dependência, extratores de documentação automatizada, IDE, plug-ins, entre outros. C e seus descendentes são difíceis neste aspecto. Matrizes são úteis ao planejar o layout detalhado da memória e, ajuda a evitar alocação, principalmente porque eles são um bloco de construção para "fatias de matrizes”.▼
▲
Existem grandes diferenças entre as formas matrizes trabalham em Go e C. No Go as Matrizes são valores e o tamanho de uma matriz é parte de seu tipo. Atribuir um array para outro copia todos os elementos. Você pode passar uma matriz para uma função, ele vai receber uma cópia da matriz, e não um ponteiro para este. ▼
▲Pelos seus conceitos ortogonais, métodos podem ser implementados por qualquer tipo; estruturas representam dados
Sem a aritmética de ponteiro, possibilita criar uma linguagem que nunca pode derivar um endereço ilegal (insegura) que sucede de forma incorreta. A retirada de aritmética de ponteiro simplifica a implementação do coletor de lixo. Sem a aritmética de ponteiro, o valor de conveniência de prefixo e operadores de incremento posfixo deixa de existir.▼
Uma das características incomuns da Go é que funções e métodos podem retornar vários valores.
Ao programador, Go dá um considerável controle sobre o layout de memória e alocação, muito mais do que outras linguagens também possuidoras de coleta de lixo. Grande parte da dificuldade de programação concorrente e paralela é o gerenciamento de memória; como objetos são passados entre os tópicos torna-se custoso para garantir que ele se os liberou com segurança, paradoxalmente a coleta de lixo automática torna o código concorrente muito mais fácil de entender e escrever, simultaneamente, não precisa especificar como a memória é gerenciada através deles, fazendo a coleta de lixo mais simples.▼
▲A linguagem foi
Matrizes são úteis ao planejar o layout detalhado da memória e, ajuda a evitar alocação, principalmente porque eles são um bloco de construção para "fatias de matrizes".Existem grandes diferenças entre as formas matrizes trabalham em Go e C.
▲
Sem a aritmética de ponteiro, possibilita criar uma linguagem que nunca pode derivar um endereço ilegal (insegura) que sucede de forma incorreta.
▲
▲Ao programador, Go dá um considerável controle sobre o layout de memória e alocação, muito mais do que outras linguagens também possuidoras de coleta de lixo.
"
== Implementações ==
|