Por que estamos ensinando Clojure? Embora não seja uma linguagem muito popular, estamos usando Clojure por causa de três qualidades que o tornam uma primeira linguagem ideal para aprender – ou uma ótima linguagem para se aprender além das outras que talvez você já conheça:
Clojure é simples. O que não quer dizer que não seja poderoso; pois o é. O número de conceitos que você precisa conhecer pra programar em Clojure é bem pequeno e são fáceis de compreender. Com Clojure você consegue ser bastante produtivo com um conjunto bem pequeno da linguagem, e melhor na medida em que você vai aprendendo mais sobre a linguagem
Clojure é universal. Algumas linguagens tem um foco específico. JavaScript, por exemplo, foi tradicionalmente usado apenas em páginas web (embora isso tenha mudado um pouco recentemente). Objective-C é usado principalmente para aplicativos iOS. Clojure pode ser usado para qualquer tipo de aplicação facilmente.
Clojure é divertido. Isso é questão de opinião, é claro, mas a gente acha que é verdade. Espero que durante esse curso você sinta a alegria de ver um programa Clojure ser criado e fazer algo poderoso e surpreendente.
Então, dissemos que Clojure é universal, e é. O que não significa que não tenha situações em que ele seja mais útil.
Clojure é conhecido por ser bom em processar dados, pois tem um bom conjunto de estruturas de dados – isto é, tem várias formas nativas de representar dados que são fáceis de usar e poderosas.
Clojure é conhecido por sua concorrência. As variáveis e estruturas de dados em Clojure são imutáveis por padrão, ou seja, seus conteúdos nunca mudam. Toda vez que alguma modificação é necessária, um novo valor é criado. Por exemplo, se vc adiciona um elemento em uma lista, uma nova lista é criada com os elementos antigos mais o novo elemento, enquanto a lista antiga continua a mesma. Pode parecer uma abordagem ineficiente, mas por baixo dos panos existe um compartilhamento muito eficiente das partes da lista que não mudaram, o que é invisível para o programador. Vetores em Clojure são particularmente eficientes nesse sentido.
REST APIs, web apps…
(print-str "Hello, World!")
(+ 3 4)
(max 8 17 2)
Note os parênteses. Parênteses cercam as instruções para o computador no Clojure. O parêntese da esquerda é o início da instrução, e o parêntese da direita correspondente é o final desta instrução. Em geral códigos em Clojure têm muitos parênteses aninhados, ou em outras palavras, instruções cercadas aninhadas.
Logo depois dos parênteses, vemos a função. Funções fazem todo o trabalho pesado no Clojure.
print-str
,+
emax
são ambos funções. Quando estas funções são executadas, elas devolvem algum tipo de valor. Funções em Clojure sempre devolvem um valor.
Muitas funções recebem argumentos–que são todo o resto que está dentro do parênteses ao redor da função, após o seu nome.
print-str
recebe"Hello, World!"
e devolve o próprio texto.+
recebe3
e4
, soma, e devolve7
.max
recebe vários números e devolve qual é o maior deles.
Em Clojure, comentários podem ser iniciados com um ponto-e-vírgula. Tudo após o ponto-e-vírgula até o fim da linha é considerado como comentário é ignorado. Apenas um ponto-e-vírgula é o suficiente, mas algumas vezes vemos dois pontos-e-vírgulas na mesma linha, dependendo do estilo do escritor.
Referência: Comentário
;; funções de exemplo do slide anterior
(print-str "Hello, World!") ; o tão conhecido hello world
(+ 3 4) ; por que não 3 + 4? descobrir depois
“REPL” significa “Read-Eval-Print-Loop”, ou “Leia-Execute-Imprima-Repita”, que ainda não faz tanto sentido sem contexto. Muitas linguagens de programação, incluindo Clojure, tem uma maneira de executar código interativamente para que você consiga ver o resultado instantaneamente. Em outras palavras, o código é lido, executado, e então o resultado é mostrado na tela, e começa novamente – por isso, um loop.
Read, Eval, Print, Loop
lein repl
(print-str "Hello, World!")
(print-str "Hello, World!" " " "from Clojure")
(+ 3 4)
(- 3 4)
(* 3 4)
Tenha certeza de digitar as linhas exatamente como você as vê acima, cuidando para colocar os parênteses nos lugares certos.
(doc nome-da-funcao)
para fazer isso(doc +)
e (doc max)
no REPL-
, *
, ou mesmo doc
Volte para o primeiro slide, ou vá para o índice do currículo.