Histórico das Linguagens de Programação - Década de 2000

Histórico das Linguagens de Programação - Década de 2000

Esta página tem o resultado da pesquisa feita pelo aluno Filipe Roger sobre o histórico das linguagens de programação da década de 2000.


Introdução

Essa página relata um pouco sobre as linguagens de programação da década de 2000.
As linguagens escolhidas foram C#, JavaFX, GO, Scala e Xcode. Onde mostra como cada linguagem era usada e como era o modelo de sintaxe de cada uma. Serão tratados os objetivos, características, história, sintaxe, visão geral de cada uma caso exista.


C#

share1.png

C# (lê-se "cê xarpe") é uma linguagem de programação, multiparadigma, de tipagem forte, desenvolvida pela Microsoft como parte da plataforma .NET. A sua sintaxe orientada a objetos foi baseada no C++ mas inclui muitas influências de outras linguagens de programação, como Object Pascal e, principalmente, Java. O código fonte é compilado para Common Intermediate Language (CIL) que é interpretado pela máquina virtual Common Language Runtime (CLR). C# é uma das linguagens projetadas para funcionar na Common Language Infrastructure da plataforma .NET Framework.

Objetivo

A norma ECMA lista os objetivos de design para C#:

  • A linguagem C# destina-se a ser um simples, moderna, de propósito geral, orientada a objetos.
  • A linguagem e suas implementações devem fornecer suporte para princípios de engenharia de software, tais como verificação de tipo forte, verificação de limites de array, detecção de tentativas de usar variáveis não inicializadas e coleta automática de lixo. A robustez do software, a durabilidade e a produtividade do programador são importantes.
  • A linguagem destina-se a ser utilizada no desenvolvimento de componentes de software adequados para implantação em ambientes distribuídos.
  • A portabilidade é muito importante para o código fonte, e programadores, especialmente aqueles já familiarizados com C e C++.
  • O apoio à internacionalização é muito importante.
  • C# deve ser adequada para escrever aplicações tanto para sistemas hospedados e incorporados, que vão desde o muito grande que usam sistemas operacionais sofisticados, até o muito pequeno com funções dedicadas.
  • Embora aplicações C# se destinam a ser econômicas no que diz respeito à memória e requisitos de energia de processamento, o idioma não foi concebido para competir diretamente no desempenho e tamanho com C ou linguagem Assembly.
Características

O C# é uma linguagem de programação visual dirigida por eventos e totalmente orientada a objetos. Permite um novo grau de intercâmbio entre linguagens (componentes de software de diferentes linguagens podem interagir). Os desenvolvedores podem empacotar até software antigo, para trabalhar com novos programas C#. Além disso, os aplicativos C# podem interagir pela Internet usando padrões do setor, como SOAP (protocolo de acesso a objetos simples) e XML (linguagem de marcação extensível).

O C# tem raízes em C, C++ e Java, adaptando os melhores recursos de cada linguagem e acrescentando novas capacidades próprias. Ele fornece os recursos que são mais importantes para os programadores, como programação orientada a objetos,strings, elementos gráficos, componentes de interface com o usuário gráfica (GUI), tratamento de exceções, múltiplas linhas de execução, multimídia (áudio, imagens, animação e vídeo), processamento de arquivos, estruturas de dados pré-empacotadas, processamento de banco de dados, redes cliente/servidor com base na Internet e na World Wide Web e computação distribuída.

Principais características do C#
  • Simplicidade: os projetistas de C# costumam dizer que essa linguagem é tão poderosa quanto o C++ e tão simples quanto o Visual Basic;
  • Completamente orientada a objetos: em C#, qualquer variável tem de fazer parte de uma classe;
  • Fortemente tipada: isso ajudará a evitar erros por manipulação imprópria de tipos e atribuições incorretas;
  • Gera código gerenciado: assim como o ambiente .NET é gerenciado, assim também é o C#;
  • Tudo é um objeto: System.Object é a classe base de todo o sistema de tipos de C#;
  • Controle de versões: cada assembly gerado, seja como EXE ou DLL, tem informação sobre a versão do código, permitindo a coexistência de dois assemblies homônimos, mas de versões diferentes no mesmo ambiente;
  • Suporte a código legado: o C# pode interagir com código legado de objetos COM e DLLs escritas em uma linguagem não-gerenciada;
  • Flexibilidade: se o desenvolvedor precisar usar ponteiros, o C# permite, mas ao custo de desenvolver código não-gerenciado, chamado “unsafe”;
  • Linguagem gerenciada: os programas desenvolvidos em C# executam num ambiente gerenciado, o que significa que todo o gerenciamento de memória é feito pelo runtime via o GC (Garbage Collector).

JavaFX

javafx-300x150.jpg

JavaFX é uma plataforma de software multimídia desenvolvida pela Oracle baseada em java para a criação e disponibilização de Aplicação Rica para Internet que pode ser executada em vários dispositivos diferentes.

A versão atual (JavaFX 2.1.0) permite a criação para desktop, browser e dispositivos móveis. TVs, video-games, Blu-rays players e há planos de adicionar novas plataformas no futuro. O suporte nos desktops e browsers é através da JRE e nos dispositivos móveis através do JavaME.

Para construir aplicações os desenvolvedores usam uma linguagem estática tipada e declarada chamada JavaFX Script. No desktop existe implementação para Windows(x86/x64), Mac OS X e Linux (X86/X64). Nos dispositivos móveis, JavaFX é capaz de suportar vários sistemas operativos moveis como Android, Windows Mobile, e outros sistemas proprietários.

A atual versão do JavaFX inclui os seguintes componentes:

  • O SDK JavaFX: Compilador e ferramentas para JavaFX. Gráficos, Mídia Web e documentos de textos com formatação.
  • IDE NetBeans para JavaFX - Com a ajuda da paleta do Netbeans JavaFX o processo se torna um simples "arrastar-e-soltar" para a adição de efeitos, animações e exemplos. Para eclipse também existe um plugin chamado Kenai.
  • As ferramentas e os plugins para programas de criação :Project Nile é um plugin em desenvolvimento para integrar os softwares Adobe Photoshop e Adobe Illustrator, assim podendo exportar gráficos com o código de JavaFX, ferramentas para converter gráficos SVG em Scripts JavaFX.
Destaques técnicos

Perfil Comum - JavaFX é baseado no conceito 'Perfil Comum', que representa a reutilização de grande parte do código em todos os dispositivos, sejam móveis ou desktop. Isto permite aos desenvolvedores utilizarem modelos de programação comuns enquanto desenvolvem para desktop ou dispositivos móveis. Para diferenciar as qualidades de cada dispositivo, por exemplo, o JavaFX 1.1 possui uma API para desktop que inclui a biblioteca swing e efeitos visuais avançados.

Integração para criação em programas terceiros - JavaFX inclui plugins para Adobe Photoshop e Adobe Illustrator que permitem a criação de gráficos avançados para serem integrados diretamente às aplicações de JavaFX. Os plugins geram scripts JavaFX que preservam o layout e a estrutura dos gráficos. Desenvolvedores podem facilmente adicionar animações e efeitos para os gráficos estáticos importados. Também há um conversor de SVG que permite importar e rever os resultados após a conversão para o formato JavaFX.


GO

go-lang.png

Go é uma linguagem de programação criada pela Google e lançada em código livre em novembro de 2009. É uma linguagem compilada e focada em produtividade e programação concorrente, baseada em trabalhos feitos no sistema operacional chamado Inferno. O projeto inicial da linguagem foi feito em setembro de 2007 por Robert Griesemer, Rob Pike e Ken Thompson. Atualmente, há implementações para Windows, Linux, Mac OS X e FreeBSD.

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.

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ínseca da linguagem, assim como strings.

Implementações

Atualmente, há dois compiladores para Go. 6g e ferramentas complementares - conhecidos em conjunto como gc - são escritos em C, usando yacc e bison para análise sintática. Além do gc, há o gccgo, um compilador de Go com front-end C++ (utilizando um analisador sintático descendente recursivo) associado ao back-end padrão do GCC.

Exemplos

Abaixo, segue-se o Programa Olá Mundo em Go:

package main

import "fmt"

func main() {
     fmt.Printf("Olá, Mundo!\n")
}

Disputa sobre o nome

Poucos dias após o lançamento da linguagem, Fancis McCabe, desenvolvedor da linguagem chamada Go!, solicitou uma mudança de nome da linguagem do Google, para evitar confusões. McCabe criou Go! em 2003, mas não registrou o nome.


Scala

scala.png

Scala (Scalable language) é uma linguagem de programação de propósito geral, diga-se multiparadigma, projetada para expressar padrões de programação comuns de uma forma concisa, elegante e type-safe (é a medida em que uma linguagem de programação desestimula ou impede erros de tipo). Ela incorpora recursos de linguagens orientadas a objetos e funcionais. Também é plenamente interoperável com Java. Scala é a sucessora de Funnel, uma linguagem baseada em join calculus. Scala é software de código aberto. Requer JDK versão 1.4 ou superior. Scala é uma linguagem de programação relativamente nova. Mesmo assim, nos últimos anos, conquistou empresas gigantes como o Twitter e o Foursquare. Uma das primeiras diferenças entre Scala e uma linguagem como Java, é que Scala também suporta o paradigma funcional.

Plataforma

Scala é similar a linguagem de programação Java, e roda na Java Virtual Machine, é compatível com programas java existentes. Uma implementação alternativa existe para a plataforma .NET, mas a plataforma base é mesmo para Java Scala é primariamente desenvolvida para a JVM e incorpora algumas de suas características. De qualquer forma, o suporte a .NET foi criado para deixá-la tão portátil entre duas plataformas o quanto possível. Scala ainda pode ser executada no Java Platform, Micro Edition Connected Limited Device Configuration.

A implementação em Scala é muito similar a usada em Java ou C. São utilizados os mesmos operadores e controles de estruturas bem similares.

Principais diferenças sintáticas:

  • Definições começam com uma palavra reservada.
  • Quando é preciso definir uma função começa-se com 'def', para definir uma variável é utilizado 'var' e para definir valores (variáveis apenas de leitura) começa-se com ‘val’.
  • O tipo do símbolo é declarado depois do símbolo e dois pontos. O tipo declarado pode ser omitido em alguns casos, porque o compilador pode identificá-lo pelo contexto.
  • O tipo Array é escrito como Array[T] em vez de T[], e o acesso aos elementos do array é feito, por exemplo, a(i) em vez de a[i].
  • Funções podem ser aninhadas dentro de outras funções. Funções aninhadas podem acessar parâmetros e variáveis locais anexando funções.

A linguagem Scala importa por padrão todas as classes do pacote java.lang, enquanto que todas as outras podem ser importadas explicitamente. A biblioteca de classes Java define um amplo conjunto de classes utilitárias, como Date e DateFormat. Como Scala interage diretamente com Java, não existem classes equivalentes na biblioteca de classes Scala, então os pacotes são importados do Java.

Exemplo:

import java.util.{Date, Locale}
import java.text.DateFormat
import java.text.DateFormat._

object FrenchDate {
    def main(args: Array[String]) {
      val now = new Date
      val df = getDateInstance(LONG, Locale.FRANCE)
      println(df format now)
   }
}

Orientação a objetos

Scala é puramente orientada-a-objetos no sentido de todo o valor ser um Objeto. Tipos e comportamento dos objetos são descritos pelas classes e traços. Abstrações de classes são estendidas por "subclassing" e um flexível mecanismo de "mixin-based composition" como uma forma "limpa" de substituição a heranças múltiplas.

Programação funcional

Scala é também uma linguagem funcional, no sentido de cada função ser um valor. Scala fornece uma sintaxe "leve" para definição de funções anônimas, ela suporta higher-order functions, ela permite que funções sejam aninhadas (funções são passadas como parâmetros dentro de outras funções, são tratadas como objetos), e suporta currying. Classes Scala e seu suporte interno para pattern matching modela tipos algébricos usados em muitas linguagens de programação funcionais. Além disso, sua noção de "pattern matching" natural é estendida para o processamento de arquivos XML com a ajuda de expressões regulares. Neste contexto, a linguagem se torna de grande valia para o processamento de sintaxes futuras. Estas características, fazem com que o Scala seja ideal para o desenvolvimento de aplicações como web services. Segue abaixo uma implementação do while loop que deve ser uma função que utiliza dois parâmetros: uma condição, de tipo booleano, e um comando , de tipo Unit. Ambas precisam ser passadas por nome, então elas são avaliadas repetidamente no loop de iteração:

def whileLoop(condition: => Boolean)(command: => Unit) {
   if (condition) {
     command; whileLoop(condition)(command)
   } else ()
}


Xcode

Xcode é um ambiente de desenvolvimento integrado e software livre da Apple Inc. para gerenciamento de projetos relacionados com o sistema operacional Mac OS X. Xcode possui ferramentas para o usuário criar e melhorar seus aplicativos. É um software poderoso e mais simples de utilizar para o desenvolvimento de aplicativos grandes. Antigamente chamava-se Project Builder. O Xcode pode ser obtido no DVD de instalação do Mac OS X nas versões "Leopard" e "Snow Leopard" e no website de desenvolvedores da Apple (http://developer.apple.com/), o Xcode não será distribuído com o Mac OS X "Lion", pois o mesmo não possui DVD de instalação. Hoje em dia o XCode pode ser obtido na Apple Store gratuitamente para usuários do Mac OS X.

O Xcode já vem com as ferramentas necessárias para desenvolver aplicações para o Mac OS X, e suporta, por padrão, Objective-C, Swift e Apple-Script, que são linguagens de programação. O Xcode tem um conjunto de "extras" para desenvolvimento, esses "extras" são chamados de SDK, e são fornecidos pela Apple Inc. no website de desenvolvimento de iOS deles (http://developer.apple.com/ios/). Empresas e desenvolvedores independentes devidamente cadastrados no programa para desenvolvedor iOS da Apple, chamado iOS Developer Program, podem distribuir os aplicativos na App Store.


Conclusão sobre compiladores e as linguagens

Diversas linguagens podem ser usadas para a construção de um compilador, essa pesquisa mostra como era o objetivo de cada linguagem e como era usada, então com isso podemos verificar como usar para associar e desenvolver um compilador apropriado.


Referências:

https://pt.wikipedia.org/wiki/C_Sharp
https://pt.wikipedia.org/wiki/JavaFX
https://pt.wikipedia.org/wiki/Go_(linguagem_de_programa%C3%A7%C3%A3o)
https://pt.wikipedia.org/wiki/Scala_(linguagem_de_programa%C3%A7%C3%A3o)
https://en.wikipedia.org/wiki/Xcode

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License