domingo, 22 de abril de 2012

Linguagem Scala: a primeira impressão


A linguagem que vem sendo considerada a "substituta" do Java, chama a atenção em muitos sentidos, inclusive por ser a linguagem utilizada no core de duas das mais famosas aplicações da atualidade, o FourSquare e o Twitter. O nome dessa linguagem? Scala.

Bem... sob uma análise mais emocional eu posso dizer que a linguagem é "massa", "sensacional"... Mas por uma análise mais, fria, racional, posso afirmar que o seu aprendizado é mais demorado que a do Java. Por que? Bem... para entender apenas da linguagem Java, você basta compreender alguns conceitos basicos, tais como: Classes, Interfaces, Métodos, Variáveis, Enumerações, Loops (for, foreach e while), If...Else, Switch, etc. Pois bem... para aprender Scala você precisa ter estes conhecimentos e muito mais, tais como: Case Class, Trait, Object, For-Comprehensive, Product, Actor, Function, etc... 

Outra diferença, e daí mais necessidade de conhecimento, relacionado ao Java, é que a linguagem Scala segue o paradigma Funcional e Orientado à Objeto. Isto quer dizer que além de entender POO (Programação Orientada à Objeto), você precisa compreender ainda de Funcional Paradigm. 

Apesar de seguir o paradigma funcional, segundo Sebesta, uma linguagem não deveria ter atribuíções e nem variáveis, diferente do que pode-se observar na languagem Scala. Por um outro lado esta linguagem deve prover uma diversidade de funções básicas que poderão ajudar o desenvolvedor a criar funções complexas. Neste ponto, Scala segue a linha! 

Talvez você se pergunte: então qual é realmente a grande vantagem da languagem Scala? Esta resposta eu darei quando eu finalizar uma aplicação que estou desenvolvendo, para não repetir apenas as vantagens que tem nos livros, blogs, etc - algumas destas você pode ver aqui. O que posso adiantar por enquanto é que a quantidade de conceitos novos é muito grande, no entanto quando você consegue entender isto a programação se torna mais rápida e mais intuítiva, dado que você pode agrupar e controlar o acesso aos dados em um único arquivo, a programação de Collections requer escrita de código, a comunicação com Bancos de Dados (apesar de se utilizar JDBC) é muito mais rápida que utilizar ORM ou SQL diretamente (pelo menos na minha opnião). Quer um exemplo disso? 

  //cria a representação de uma tabela de usuários
  val Users = new Table[(String, String)]("TBUSER"){
      def nick = column[String]("nick")
      def password = column[String]("password")
      def * = nick ~ password
    }
    //realizar a consulta
    val list: List[(String,String)] = Database.forURL(
    uri = "jdbc:postgresql://localhost:5432/db_scala",
    user = "postgres", 
    password = "123456",
    driver = "org.postgresql.Driver"
    ).withSession(
        Query(user).where(f => f.name === "1").list()
    )
    //imprimir todos os dados da tabela
    list.foreach(println)

Simples não?? O melhor de tudo é como nós podemos organizar nossos códigos! Bem... o resto explico num outro momento.

Bons estudos e até lá!







Nenhum comentário:

Postar um comentário

Pesquise aqui!