tl;dr
Aprender a primeira Linguagem de Programação pode ser uma tarefa bastante desafiadora, ou porque os professores não se fazem valer, ou porque se esta em uma aventura autodidata e o material também não se paga, ou mesmo o próprio objeto de estudo, a Linguagem, não ajuda muito, o caminho pode ser especialmente tortuoso e cansativo. Desnecessário dizer que desistir pode parecer um pensamento confortável em certo ponto e pronto, lá se foi o entusiasmo e com ele os planos, metas, sonhos e por ai vai.
Para endereçar esse problema e me ajudar na minha própria jornada, estou criando esse repositório. Que tem como único objetivo servir como hub para meus projetos de estudo de Linguagens de Programação. Não me pretendo tornar referência em nenhuma das Linguagens, quero apenas me sentir confortável em expressar meus pensamentos, ideias, necessidades e expectativas computacionaveis.
E em um segundo momento, este material intenta em servir como uma memória externa e compartilhada para que naqueles momentos de dúvida eu volte e relembre como se faz isso ou aquilo em determinada Linguagem. Dito isso, vamos ao
Disclaimer: Não tenho a pretensão de escrever um manual completo, muito menos algo inteiramente novo, a proposta aqui é apenas estudar e compartilhhar o que estou aprendendo, de uma forma lúdica e agradável, tão e somente isso.
- Python
- R
- Octave
- C++
- Julia
- Chapel
- Haskell
- Scala
- Erlang
- Elixir
- Scheme
- Ruby
- Io
- Clojure
- Shell-script
- JavaScript
- Prolog
- C
- GO
- [Free slot 1]
- Git
- Linux
- Makefiles
- Tmux
- Vim
- LaTeX
Neste ponto levantar os aspectos da Linguagem no que se refere a forma como a mesma lida com:
- Poder ser Compilada, Interpretada ou ambos?
- Qual é o tipo de tipagem que a Linguagem faz uso?
- É de propósito mais geral ou especifico?
- Qual ou quais paradigmas de programação podem ser expressados?
Neste ponto identificar como a Linguagem implementa as ideias de:
- Tipos de dados.
- Operações (logicas e aritméticas).
- Condicionais e estruturas de decisão.
- Loops e iteradores.
- Agregações.
- Homogêneas.
- Heterogêneas.
- Blocos de código, funções, escopo e modularização.
Estudar e produzir conteúdo referente ao como a Linguagem nos permite expressar o pensamento, de forma a gerar o resultado esperado. Ou seja, o foco esta mais no código em si, na sintaxe e na forma de construir.
- O que essa Linguagem faz melhor que outras?
- Em que ela se destaca?
- Em que ela deixa a desejar?
- O que seria extraordinário que essa Linguagem incorporasse e o que seria ótimo que a Linguagem deixasse de lado?
Para ajudar a fixar e fortalecer as conexões neurais para começar a ficar fluente na Linguagem, sera implementado algumas aplicações exemplo:
-
Operações com matrizes: como soma, multiplicação, transposição.
-
Processamento de textos: Obtenção de estatísticas da escrita e levantamento de métricas dessa escrita.
-
Algoritmos:
- Ordenação:
- Bubble Sort
- Insertion Sort
- Selection Sort
- Merge Sort
- Quick Sort
- Heap Sort
- Busca:
- Busca Linear
- Busca Binária
- Ordenação:
-
Estruturas de dados:
- Stack
- Queue
- Linked List
- Tree (BST)
- Heap
- Hash Tables
- Trie
-
Integração com Banco de Dados e execução de querys.
-
Implementar um Server para responder "Hello, World!" via web
-
SO calls
-
Paralelismo
~Jhonatan