Go (linguagem de programação): diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
m Revertidas edições por 177.173.238.100 para a última versão por Salebot (usando Huggle)
Linha 24:
== Descrição ==
 
A sintaxe de Go é semelhante a C; uma variação é a declaração de tipos, a ausência de parênteses em volta das estruturas for e if. Possui coletor de lixo. Seu modelo de concorrência é baseado no CSP de Tony Hoare, além de possuir características do cálculo pi, como passagem por canal. A linguagem de programação Go é um projeto de código aberto com o intuito de fazer programadores mais produtivos. GO é expressivo, conciso, limpo e eficiente. Seus mecanismos de concorrência se tornam mais fácil escrever programas e tirar o máximo proveito dos processadores de multicore e máquinas em rede, é uma linguagem flexível e modular.
GO nasceu da frustração com as línguas existentes e ambientes para programação de sistemas. Nenhuma linguagem de sistemas de grande emergiu em mais de uma década, mas com o passar do tempo, o panorama da computação tem mudado muito. Cada idioma contém novas características e omitem recursos, alguns recursos podem estar ausentes porque eles não são compatíveis com os propósitos, porque afeta a velocidade de compilação ou de clareza do projeto, ou porque ela iria fazer o modelo de sistema muito difícil.
A linguagem de programação Go é um projeto de código aberto com o intuito de fazer programadores mais produtivos.GO é expressivo, conciso, limpo e eficiente.
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. Go é uma tentativa de combinar a facilidade de programação de uma linguagem interpretada como o python, com a eficiência e a segurança de uma linguagem de tipagem estática e compilada. Para cumprir essas metas foi necessário abordar uma série de questões linguísticas, onde estes não poderiam ser tratadas assim por bibliotecas ou ferramentas então uma nova linguagem foi criada, GO tenta reduzir a quantidade de digitação , reduzindo a desordem e complexidade., Emsua todossintaxe osé aspectos da linguagem foi projetada pensando sobre o que os programadores fazemlimpa e comoleve fazerem a programaçãopalavras-chave.
Seus mecanismos de concorrência se torna mais fácil escrever programas que tirar o máximo proveito do processadores de múltiplos núcleos e máquinas em rede, enquanto seu sistema permite programa flexível e modular.
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 seguroseguras de bibliotecas C dono código GoGO. SWIG estende essa capacidade de bibliotecas C + +.
GO nasceu da frustração com as línguas existentes e ambientes para programação de sistemas. Programação tornou-se muito difícil e a escolha de linguagens era parcialmente culpada. Um teve que escolher entre compilação eficiente, execução eficiente, ou a facilidade de programação, todos os três não estavam disponíveis na língua dominante mesmo.Nenhuma linguagem de sistemas de grande emergiu em mais de uma década, mas com o passar do tempo, o panorama da computação tem mudado muito.
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.
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.
GoGO oferece goroutines, pequenos tópicos leves, o nome faz alusão a co-rotinas . Goroutines são criadoscriadas com o gocomo declaração de funções anônimas ou nomeado. Goroutines são executados em paralelo com goroutinesoutras outrosgoroutines, 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.
Go é uma tentativa de combinar a facilidade de programação de uma linguagem interpretada como python, com a eficiência e a segurança de uma linguagem de tipagem estática e compilada. Para cumprir essas metas foi necessário abordar uma série de questões linguísticas, onde estes não poderiam ser tratadas assim por bibliotecas ou ferramentas então uma nova linguagem foi criada, GO tenta reduzir a quantidade de digitação , reduzindo a desordem e complexidade. Em todos os aspectos da linguagem foi projetada pensando sobre o que os programadores fazem e como fazer a programação.
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.
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 seguro de bibliotecas C do código Go.
A linguagem foi projetadoprojetada para ser fácil de analisar e pode ser analisado sem uma tabela de símbolos. Tornando muito mais fácil ser analizadoanalisado 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”.
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.
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.
Sistema do tipo GO não tem hierarquia,assim, nenhum tempo é gasto definir as relações entre os tipos.
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.
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.
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 multi-threadparalela é o gerenciamento de memória; como objetos são passados entre os tópicos torna-se custoso para garantir que elesele se libertouos liberou com segurança, paradoxamenteparadoxalmente a coleta de lixo automática torna o código concorrente muito mais fácil de entender e escrever, simultanealmentesimultaneamente, não precisa especificar como a memória é gerenciada através deles, fazendoifazendo a coleta de lixo mais simples.
Go oferece goroutines, pequenos tópicos leves, o nome faz alusão a co-rotinas . Goroutines são criados com o go declaração de funções anônimas ou nomeado. Goroutines são executados em paralelo com goroutines outros, 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.
 
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.
"TrexosTrechos desse texto foi retirado do site(google translate): http://golang.org/, através do google translate."
Uma das características incomuns da Go é que funções e métodos podem retornar vários valores.
A linguagem foi projetado para ser fácil de analisar e pode ser analisado sem uma tabela de símbolos. Tornando muito mais fácil ser analizado 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.
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.
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 multi-thread é o gerenciamento de memória; como objetos são passados entre os tópicos torna-se custoso para garantir que eles se libertou com segurança, paradoxamente a coleta de lixo automática torna o código concorrente muito mais fácil de entender e escrever, simultanealmente, não precisa especificar como a memória é gerenciada através deles, fazendoi a coleta de lixo mais simples.
 
"Trexos desse texto foi retirado do site: http://golang.org/, através do google translate."
 
== Implementações ==