Grupo: Diogo Furtado Phellipe Perin Stephan Hebeda

Documentos relacionados
AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Gabriel Giorisatto De Angelo Luiz Otávio Gerhardt Fernandes

Sobre a KTEC KTEC Escola de Tecnologia

Projeto de Linguagem. Linguagens de Programação

Plataforma de desenvolvimento JAVA para terminal POS

Grupo de Usuários Java do Noroeste Paulista. Introdução à tecnologia Java

Capítulo 1. Aspectos Preliminares

Algoritmos e Programação

APRESENTAÇÃO. Página: 1

Métodos de implementação de linguagens. Kellen Pinagé

Java FX. Grupo: Alexandre Henrique Marcelo Scheidt Rafael M. Motta Ricardo C. Knoll

Prof. Luiz A. Nascimento

Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO

Programação orientada a objetos

Fabiano Moreira.

Técnicas de Reutilização. Reutilização em Programação Orientada a Objetos. Considere três classes... Reuso de Classes.

JADEX: A BDI REASONING ENGINE. Alexander Pokahr, Lars Braubach e Winfried Lamersdorf Springer US - Multi-Agent Programming 2005 pp.

Linguagens de Domínio Específico

INTRODUÇÃO A LINGUAGEM JAVA

Desenvolva de qualquer sistema operacional para qualquer sistema operacional. Sem limites.

Elementos da Linguagem C#

Técnicas para Reutilização de Software

Verificação de Tipo. Unions. Verificação de tipo estática. Verificação de tipo dinâmica

Programação Orientada a Objetos

Programação Estruturada Orientada a Objetos

Linguagens de Programação Classificação

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

NOVA PRÁTICA DE ENSINO NA PROGRAMAÇÃO DE COMPUTADORES. New teaching practice in Computer Programming

De Olho na Pista. Documento de Arquitetura. De Olho na Pista Documento de Arquitetura Data: 23/03/2013. AJA Software

Programação III 2016/1

Linguagem Técnica I. Prof. Jonatas Bastos

Introdução ao Zend Framework 2

Requisitos de sistemas

Linguagens de Programação Funcional

Professor Leo Larback Esta apresentação pode ser baixada livremente no site

Introdução. O que é o Eclipse? PARTE I

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

PROGRAMAÇÃO I. Introdução

Encapsulamento e Modularização

2 Paradigmas de linguagens de programação João B. Rocha- Junior. As linguagens evoluem com o passar do tempo

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 12 PROFª BRUNO CALEGARO

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Introdução a Computação

Computação II Orientação a Objetos

Powered by. Tiago Bockholt

JavaScript (Elementos de Programação e Programação Básica)

Linguagens de Programação

Carlos Eduardo Batista. Centro de Informática - UFPB

Polimorfismo. O que é polimorfismo?

Ruby e JRuby em... Paralelos e Distribuídos. Felipe Barden Lucas Fialho Zawacki

Ferramentas Programação. UDESC - Prof. Juliano Maia 1

Aula 1 Java Prof. Dr. Sylvio Barbon Junior

Algoritmos e Programação

Introdução à Análise e Projeto de Sistemas

Engenharia de Software

Gosta de acompanhar os rumos das linguagens de programação? Então não fique de fora dessa! Descubra o que é o HTML 5!

Aspectos preliminares

Introdução à Programação de Computadores Fabricação Mecânica

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

ao paradigma imperativo

Estruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011

MAPEAMENTO OBJETO RELACIONAL COM HIBERNATE EM APLICAÇÕES JAVA WEB

Instituto Superior de Engenharia de Lisboa

Como construir um compilador utilizando ferramentas Java

Algoritmos Computacionais

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini

Desenvolvimento Java com ferramentas IBM

Olá pessoal, Hoje vamos entender os conceitos sobre linguagem de programação. Definição, tipos de linguagens e as linguagens mais utilizadas

Linguagem Python. Inteligência Artificial. Características de Python. Importando módulos. Módulos. Usando Python no modo interativo

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

Universidade Federal de Minas Gerais Colégio Técnico Plano de Ensino

Comando de Seleção em Java

Objetos e Componentes Distribuídos: EJB

INFORMÁTICA APLICADA AULA 01 LINGUAGEM DE PROGRAMAÇÃO C++

Introdução a Linguagem

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Introdução a Programação Orientada a Objetos

JAVA. Professor: Bruno Toledo

por parte dos usuários dos sistemas de computação se tornou menos necessária e a popularidade desse tipo de linguagem diminuiu. Mais recentemente, a

Sistemas Distribuídos Aula 3

IEC Banco de Dados I Aula 11 Técnicas de Programação SQL

PADRONIZAÇÃO 10. INTERFACES PADRONIZAÇÃO CONTRATOS

... 5) também não consigo compreender porque muita gente mete o pau no delphi sem conhece-lo de verdade

Formação JAVA Web.

Curso. Liferay Desenvolvedor

Java e Orientação a Objetos (aula 2) Prof. Sérgio Ricardo

Sistemas Distribuídos

Abaixo iremos pormenorizar cada um de seus atributos:

Clientes gerentes Usuarios finais do sistema Clientes engenheiros Gerentes contratantes Arquitetos do sistema. Definicao de requisitos

As Visões. Visões arquiteturais (revisão)

Transcrição:

Grupo: Diogo Furtado Phellipe Perin Stephan Hebeda

INTRODUÇÃO Scala é uma linguagem de programação de propósito geral projetado para expressar padrões de programação comuns de uma forma concisa. Foi desenvolvido como um Java melhor, rodando em cima da JVM ele mantém uma forte interoperabilidade com Java enquanto que ao mesmo tempo integra programação funcional e orientada a objeto.

INTRODUÇÃO Como Scala roda na JVM ele é compatível com programas Java já existentes. Existe também uma implementação alternativa para a plataforma.net. Scala é tipado estaticamente e fortemente orientado a objeto, seu código é compilado em Java bytecode o que permite que ele use bibliotecas do Java sem a necessidade de uma camada de cola.

TIPAGEM ESTÁTICA O Scala é equipado com um sistema de tipos expressivo, que reforça estaticamente que abstrações sejam usadas de maneira segura e coerente. Em particular, o sistema de tipos suporta: classes genéricas; anotações de variância; tipos de limite superior e inferior ; classes e enumeração (tipo de dado); tipo composto; auto referencia; métodos polimórficos.

CARACTERÍSTICAS DA ORIENTAÇÃO A OBJETO 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, 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.

CÓDIGO Scala é um software de código aberto. O nome Scala vem da mistura de Scalable e Language, significando que ele foi desenvolvido para crescer de acordo com as demandas dos usuários.

HISTÓRIA Scala foi inventada na École Polytechnique Fédérale de Lausanne (EPFL), Lausana na Suíça, em 2001 por Martin Odersky (ex-integrante do Java Generics). Foi liberada publicamente na plataforma Java em janeiro de 2004, e na plataforma.net em junho do mesmo ano. Uma segunda versão da linguagem foi liberada em Março de 2006. Em 17 de Janeiro de 2011 o Time Scala ganhou uma bolsa de pesquisa de 5 anos no valor de 2,3 milhões de Euros do European Reserach Council. E em maio do mesmo ano, Odersky e alguns colaboradores fundaram a Typesafe, uma empresa para dar suporte comercial, treinamento e serviços para Scala.

PLATAFORMAS Scala roda em 3 diferentes plataformas, são elas: JVM (Um dos motivos do sucesso da linguagem). Android.NET

IDE Existem plugins de desenvolvimento Scala para as IDEs mais conhecidas atualmente. São elas: Eclipse NetBeans (mais completo). IntelliJ (menos completo). Principais funções: Highlight, hyperlink, auto-complete, marcadores de erro, visualição hierarquicas das classes, pacotes. Build, run e debug. Debugger só nas versões Eclipse e NetBeans.

DOCUMENTAÇÃO E BIBLIOTECAS Documentação online completa. (Igual ao JAVA) Códigos exemplos e guias para iniciantes na página oficial da linguagem (http://www.scala-lang.org/), inclusive para Android. Assim como JAVA, existem diversas bibliotecas que podem ser usadas pelo desenvolvedor (apenas importando-as) que foram feitas tanto pelos criadores da linguagem, como por outros densenvolvedores. Essas bibliotecas vão desde conexão com banco de dados, teste de software até bibliotecas de processamento de algebra.

DIFICULDADE NO APRENDIZADO Scala é uma linguagem bem mais recente que JAVA, por isso não tem tanto conteúdo e fórum destinados a sua programação. Assim, fica mais difícil de tirar dúvidas. Pelo motivo acima, até no próprio site da Scala diz que é uma linguagem que seria bom aprender depois de JAVA, para já ter todos os conceitos e conhecimentos de orientação a objeto. Porém nada impede de algum programador começar usando Scala, apenas terá um pouco mais de dificuldade do que um programador JAVA no inicio.

PORQUÊ SCALA? Evita repetição de código. Consegue-se escrever menos para expressar a mesma coisa. Interoperabilidade (proposta). Roda na JVM, ou seja, pode obter bibliotecas já implementadas em Java. Trabalha muito melhor que JAVA para fazer maior aproveitamento da programação concorrente. Tuplas.

PORQUÊ SCALA? //Java boolean namehasuppercase=false; for(int i=0; i < name.length(); ++i) { if( Character.isUpperCase(name.charAt(i)) ) { namehasuppercase=true; break; } } //Scala val namehasuppercase = name.exists(.isupper)

PORQUÊ SCALA? //Java conta.deposito(1000); //Scala conta deposito 1000 Como não existe diferenciação entre valores primitivos, conseguimos criar listas com diferentes tipos: var a = {2, Casa } var b = { 1, {5, Texto, true}, false }

VANTAGENS Não existe tipo primitivo, tudo é objeto. Importa bibliotecas e possui interoperabilidade em Java e C#. Alterações inclusive a níveis de compilação. Portabilidade (projeto scala-llvm). Muito eficiente para aplicações web-services.

DESVANTAGENS Complexidade no que diz respeito a liberdade originado pela linguagem de alguns códigos e parametrizações Problemas com Java devido algumas bibliotecas não estarem preparadas com tecnologia Scala

MERCADO Para profissionais, como toda área de tecnologia é altamente deficiente no que diz respeito a número de pessoas comparado a número de vagas. Assim como Java é uma potência no meio tecnológico, a linguagem Scala possui potencial para tal. A linguagem Scala já conseguiu grandes clientes ao longo de sua existência.

SOFTWARES CONHECIDOS LinkedIn Twitter

EMPRESAS QUE JÁ USARAM SCALA Sony (deixou todo seu código aberto, qualquer um pode pegá-lo). Siemens