Escolar Documentos
Profissional Documentos
Cultura Documentos
Fernando Castor
Centro de Inform
atica Universidade Federal de Pernambuco
Hello World!
C Hello World in Fortran 77
PROGRAM HELLO
PRINT*, Hello, World!
END
Linguagens de Programacao sao Ferramentas
Exemplo: Java
) )
+
Em 22 de marco de 2017, ha 738 LPs na lista da Wikipedia.
Certo, sao muitas linguagens, mas...
N
umero de commits de programas que usam a linguagem?
O que significam ser usada e na pratica?
N
umero de commits de programas que usam a linguagem?
N
umero de commits de programas que usam a linguagem?
N
umero de commits de programas que usam a linguagem?
N
umero de commits de programas que usam a linguagem?
Repositorios de software de c
odigo aberto (forges)
Os maiores incluem dezenas de milhares de projetos
E ja fornecem algumas estatsticas
e
Dados do SourceForge (de 10/2015)
Entre par
enteses: n
umero de
projetos que declaram usar a
linguagem
Dados do SourceForge (de 10/2015)
Entre par
enteses: n
umero de
projetos que declaram usar a
linguagem
Tags do StackOverflow.com
em marco/2017: Entre par
enteses: n
umero de
1 JavaScript (1347902) posts com aquela tag
2 Java (1229513)
3 C# (1073182)
4 PHP (1052878)
5 Python (720882)
6 C++ (503932)
7 CSS (457529)
8 SQL (377801)
9 asp.net (312036)
10 Objective-C (274621)
11 Ruby (270146)
12 C (245446)
13 R (175524)
14 Swift (140342)
E sobre quais os programadores estao falando?
Tags do StackOverflow.com
em marco/2017: Entre par
enteses: n
umero de
1 JavaScript (1347902) posts com aquela tag
2 Java (1229513)
3 C# (1073182) Isso nao e tudo!
4 PHP (1052878)
JQuery, AJAX, Node.js,
5 Python (720882) AngularJS ) JavaScript
6 C++ (503932)
Django ) Python
7 CSS (457529)
8 SQL (377801) Rails ) Ruby
9 asp.net (312036)
Android ) Java
10 Objective-C (274621)
11 Ruby (270146) iPhone, iOS, Xcode1 )
12 C (245446) Objective-C e Swift.
13 R (175524)
14 Swift (140342)
The RedMonk Programming Language Rankings
(01/2017)
Top 10 a partir de diversas fontes
Top 10 a partir de diversas fontes
class HelloWorld {
static public void main( String args[] ) { (defun helloworld ()
System.out.println(Hello World!); (print Hello World!)
} )
}
Porques
Sintaxe amigavel
Dinamicamente tipificada
Multiparadigma
Muito popular na pratica
Usada como primeira linguagem em varios cursos de
computacao
Alternativas
2. Desenvolvimento Movel
Vendas de Smartphones no mundo
Fonte: SmartphoneMarketResearch.com
Para Android: Java
Para Android: Java
Objective-C...
Mas...
Objective-C...
tem uma aparencia
desagradavel
Mas...
Objective-C...
tem uma aparencia
desagradavel
tem uma propensao a
causar corrupcao
Mas...
Objective-C...
tem uma aparencia
desagradavel
tem uma propensao a
causar corrupcao
esta por a ha tempo
demais (alguns dizem que e
imortal)
Linguagem 2
The growth that Swift experienced is essentially unprecedented in
the history of these rankings.
http://redmonk.com/sogrady/2015/01/14/language-rankings-1-15/
Por que Swift?
Playgrounds interativos
E tem tambem
3. Programacao Multi-Nucleo
e Sistemas Confiaveis
Multi-nucleo )
concorrencia e paralelismo
Problemas oriundos de programacao multi-nucleo
Condicoes de corrida
Falhas de atomicidade
Porques
Filosofia Let It Crash
Puramente funcional e sem estado compartilhado
Processos leves unidades finas de quebra de trabalho
Concorrencia e distribuicao sao inerentes `a linguagem
impossvel construir sistemas nao-triviais ignorando isso
E
Alternativas
Nenhuma.
4. Desenvolvimento para a
Web
Qual o atual estado da pratica
de desenvolvimento para a
Web?
(de acordo com a Wikipedia)
Lado servidor: ASP, CSP, Server-Side ANSI C, ColdFusion,
CGI, Groovy (Grails), Java, Lotus Domino, Perl, PHP, Python
(Django), Real Studio Web Edition, Ruby (Rails), Node.js,
Server-Side JavaScript, Mozilla Rhino, Websphere, .NET, (...)
[] + [] =
JavaScript e um padrao de fato, mas...
[] + [] = string vazio!
[] + {} =
JavaScript e um padrao de fato, mas...
[] + [] = string vazio!
[] + {} = [object Object]?!
{} + [] =
JavaScript e um padrao de fato, mas...
[] + [] = string vazio!
[] + {} = [object Object]?!
{} + [] = 0!!!
{} + {} =
JavaScript e um padrao de fato, mas...
[] + [] = string vazio!
[] + {} = [object Object]?!
{} + [] = 0!!!
{} + {} = NaN!
{} - {} =
JavaScript e um padrao de fato, mas...
[] + [] = string vazio!
[] + {} = [object Object]?!
{} + [] = 0!!!
{} + {} = NaN!
{} - {} = NaN!
{} * {} =
JavaScript e um padrao de fato, mas...
[] + [] = string vazio!
[] + {} = [object Object]?!
{} + [] = 0!!!
{} + {} = NaN!
{} - {} = NaN!
{} * {} = syntax error!
Array(16) + 5 =
JavaScript e um padrao de fato, mas...
[] + [] = string vazio!
[] + {} = [object Object]?!
{} + [] = 0!!!
{} + {} = NaN!
{} - {} = NaN!
{} * {} = syntax error!
Array(16) + 5 = ,,,,,,,,,,,,,,,5
Array(16) - 5 =
JavaScript e um padrao de fato, mas...
[] + [] = string vazio!
[] + {} = [object Object]?!
{} + [] = 0!!!
{} + {} = NaN!
{} - {} = NaN!
{} * {} = syntax error!
Array(16) + 5 = ,,,,,,,,,,,,,,,5
Array(16) - 5 = NaN!
E o escopo de variaveis?
e
Linguagens 4
Porques
Menos caos
Possibilidade de usar anotac
oes de tipo
Compilaveis para JavaScript
Ambas de c odigo aberto
atributos adicionados dinamicamente mais controlados
Alternativas
5. Software de Baixo Nvel e
de Alto Desempenho
Que linguagem voce acha que
seria boa para construir um
shooter 3d?
E um escalonador de
processos?
Um programa para processar
imagens de satelites?
E um driver de dispositivo?
Sendo um pouco mais focado
Porques
Porque permite tudo
mencionado no slide anterior
Outros porques
Gerenciamento de mem
oria manual
Tipificacao fraca
Manipulacao de ponteiros e
fundamental mesmo para as operac
oes mais basicas
complexa
insegura