- Primeira linguagem de programacão para aprender
- Linguagem Pós-Java
- Programacão multi-núcleo e sistemas confiáveis
- Desenvolvimento para a Web
- Software de baixo nível e de alto desempenho
Primeira linguagem de programacão para aprender
Escolhida: Python
Outras: Lua, Groovy e Ruby
Motivos:
- Sintaxe amigável
- Dinamicamente tipicada
- Multiparadigma
- Muito popular na prática
- Usada como primeira linguagem em v ários cursos de computa cão
O grande trunfo da linguagem Python é a sua legibilidade. Além disso,a linguagem Python tem estrutura de dados nativas poderosas e otimizadas (lista, hash, string). Uma característica interessante do Python é que muitos operadores funcionam de maneira similar em todas as sequências. Um bom exemplo de ortogonalidade dos
operadores.
STRING
|
LISTA
|
TUPLA
|
|
Operação
|
Operação
|
Operação
|
interpretação
|
s1 + s2
|
L1 + L2
|
t1 + t2
|
Concatenação
|
s1 * 3
|
L1 * 3
|
t1 * 3
|
Repetição
|
s1[i]
|
L1[i]
|
t1[i],t2[i][j]
|
Indice
|
s1[i:j]
|
L1[i:j]
|
t1[i:j]
|
Fatia (slice)
|
len(s1)
|
len(L1)
|
len(t1)
|
Tamanho(length)
|
for x in s1
|
for x in L1
|
for x in t1
|
Iteração
|
'm' in s1
|
3 in L1
|
for 3 in t1
|
(Pertinência)Membership
|
Essa caracteristica facilita o aprendizado e faz com que os chutes geralmente sejam certos.
A filosofia do Python
Bonito é melhor que feio.
Explícito é melhor que implícito.
Simples é melhor que complexo.
Complexo é melhor que complicado.
Plano é melhor que aninhado.
Esparso é melhor que denso.
Legibilidade conta.
Casos especiais não são especiais o bastante para se quebrar as regras.
Embora a simplicidade supere o purismo.
Erros nunca deveriam passar silenciosamente.
A menos que explicitamente silenciados.
Ao encarar a ambiguidade, recuse a tentação de adivinhar.
Deveria haver uma – e preferencialmente apenas uma – maneira óbvia de se fazer isto.
Embora aquela maneira possa não ser óbvia à primeira vista se você não for holandês.
Agora é melhor que nunca.
Embora nunca, seja muitas vezes melhor que pra já.
Se a implementação é difícil de explicar, é uma má idéia.
Se a implementação é fácil de explicar, pode ser uma boa idéia.
Namespaces são uma idéia estupenda – vamos fazer mais deles!
Explícito é melhor que implícito.
Simples é melhor que complexo.
Complexo é melhor que complicado.
Plano é melhor que aninhado.
Esparso é melhor que denso.
Legibilidade conta.
Casos especiais não são especiais o bastante para se quebrar as regras.
Embora a simplicidade supere o purismo.
Erros nunca deveriam passar silenciosamente.
A menos que explicitamente silenciados.
Ao encarar a ambiguidade, recuse a tentação de adivinhar.
Deveria haver uma – e preferencialmente apenas uma – maneira óbvia de se fazer isto.
Embora aquela maneira possa não ser óbvia à primeira vista se você não for holandês.
Agora é melhor que nunca.
Embora nunca, seja muitas vezes melhor que pra já.
Se a implementação é difícil de explicar, é uma má idéia.
Se a implementação é fácil de explicar, pode ser uma boa idéia.
Namespaces são uma idéia estupenda – vamos fazer mais deles!
Referências:
Linguagem Pós-Java
Linguagem Escolhida: Scala
A idéia é escolher uma linguagem que utilize a plataforma Java mas não utilize a linguagem Java. Mais ou menos como acontece com a plataforma .NET que suporta várias linguagens.
- Compatibilidade retroativa com Java: roda na JVM
- Menos verborrágica
- Inclui inferência de tipos!
- Imperativa, OO, funcional e concorrente.
Programa cão multi-núcleo e sistemas confiáveis
Escolhida: Erlang
Motivos:
- Filosofia Let It Crash
- Puramente funcional e sem estado compartilhado
- Processos leves unidades nas de quebra de trabalho
- Concorrência e distribuicão são inerentes a linguagem e impossível construir sistemas não-triviais ignorando isso
Desenvolvimento para a Web
Premissas:
- JavaScript é a linguagem Assembly para web
- JavaScript tem várias falhas.
- Entender o escopo de JavaScript é complicado
Escolhida: DART
Motivos:
- Menos caos
- sem protótipos, objeto global ou atributos adicionados dinamicamente
- Possibilidade de usar anotacões de tipo
- Escopos intuitivos, baseados em blocos
- Compilável para JavaScript
- Desenvolvida pelo Google
Links:
Software de baixo nível e de alto desempenho
Premissas:
- a linguagem permite ter acesso direto a memória RAM
- a linguagem permite gerenciamento memória manualmente
- a linguagem permite guardar valores de variáveis explicitamente em registradores
- a linguagem produz código extremamente e ficiente
- a linguagem faz isso tudo de forma portável?
Escolhida: C
Motivos:
- Porque permite tudo mencionado nas premissas
- Porque é muito menos complexa que C++
- Porque Assembly s ó é uma opção quando e a unica opção
- Gerenciamento de memória manual
- Tipificação fraca
- Manipulação de ponteiros é fundamental mesmo para as operações mais básicas, complexa e insegura
- ausência de suporte decente a programação paralela
Até as características negativa da linguagem C fornecem lições importantes. Leia esse artigo:
Nilo Araújo: o texto fala que C fornece a opcao de guardar valores diretamente em registradores. Ate onde eu sei, entretanto, é que voce pode PEDIR isso, mas o sistema pode nao atender se nao quiser..
Resposta:
A palavra reservada register é modificador que avisa para o compilador que ele deve usar o registrador mesmo quando a opção de otimização está desabilitada. Quando a opção de otimização está habilitada, o compilador ignora o seu pedido e faz o que ele quer.
http://tigcc.ticalc.org/doc/keywords.html#register
GNU C tem uma extensão que permite a manipulação explícita da seguinte maneira:
register int *foo asm ("a3");
Observe que esta notação é cpu-dependente , você precisa saber o nome do registrador.
http://tigcc.ticalc.org/doc/gnuexts.html#SEC98
Links:
http://meiobit.com/107326/no-o-sistema-operacional-da-curiosity-no-linux-mas-voc-provavelmente-j-o-usou/
2 comentários:
Assistir a palestra desse rapaz semana passada sobre esse assunto. Acho que a palestra era no Campus Party.
ohhhh
Postar um comentário