Caro(a) colega desenvolvedor(a) e/ou aluno(a) de Computação(ou de áreas afins), faça sua contribuição com seus algoritmos e padrões da forma mais genérica e útil possível. Toda linguagem de programação é bem-vinda.
- Mantenha o repositório bem organizado. Evite criar novos arquivos quando possível
- Quando possível prefira editá-los, acrescentando suas funções, classes.
- Se ajude e ajude seus colegas programadores nessa árdua tarefa;
- Colaborar positivamente em repositórios Git contribuem muito para a sua carreira acadêmica e mais ainda para a profissional, então não economize forks e pull requests na sua vida;
- Colocar em prática as boas práticas de programação e adquirir novas técnicas, absorvendo conhecimento inclusive de gente mais experiente que você;
- Por mais inovador ou por mais simplório que seja o seu código, isso não importa: o mérito é o mesmo, a sua contribuição tá valendo muito!;
- Você vai otimizar o seu tempo, tendo um tipo de cheat sheet de diversos algoritmos, deixando mais fácil de achar, entender e reutilizar código opensource nos seus projetos, ao invés de uma extensa e chata pesquisa na internet;
Achou pouco? Pois saiba que o Hacktoberfest tá vindo aí! Vai me dizer que não quer ganhar a camisa desse ano?? Basta você contribuir em aguns repositórios. Já começa outubro com o pé direito (mesmo se você for canhoto)!
Não se convenceu ainda? Vou fazer um último apelo:
- Você é uma pessoa legal, e vai ajudar outras pessoas legais a se tornarem pessoas mais legais ainda. Assim como você, lindo(a)!:kissing_heart:
OBS: As categorias e exemplos aqui representados são meramente ilustrativos, não correspondendo necessariamente às categorias reais desse repositório. Cada categoria pode ser colocada em uma pasta distinta. O importante é ressaltar o bom senso dos contribuidores e uma razoável organização de código. Ex:
- Matemática: Aritmética, Álgebra, Propriedades(ex: isprimo(),teto()), Constantes, etc;
- Estruturas de Dados: criar/deletar, add/rem dados, algoritmos de ordenação;
- Arquivos: Leitura e Escrita, contar palavras, etc;
- Imagens e Vídeos: renderização, filtros, etc;
- Strings: formatação (Ascii, unicode), tokens, parse, etc;
- etc...
Deixa aqui uma assinatura sua para a gente lembrar que você fez parte disso. (Pode ser o nome/apelido + perfil do GitHub; ou se preferir, alguma rede social, canal do youtube ou twitch, sei lá... só não vale o tinder kk).
Exemplo1 (GitHub): :octocat: Super Xandão
Exemplo2 (Instagram): Ednaldo Pereira
Exemplo3 (URL): Eu sou timido:flushed:
Exemplo4 (URL): clica aqui!
Zoeira à parte! Enfim, deixe a sua marca aqui!!! (E não esqueça de fazer aquele pull request maroto, ok?)
Por padrão, todos os códigos aqui reunidos estarão sob a licença GNU General Public License v3.0(GPL).
Mas se preferir, você pode especificar a licença que quiser (pode ser qualquer uma mesmo, desde que ela permita a sua reutilização para fins acadêmicos). Não coloque copyright (c) ou trademark (tm).
Sugestão: colocar a licença como um comentário no código fonte ou parte da documentação, seja anterior à todo o código, ou junto à assinatura/ ao escopo da função/classe/estrutura ou de qualquer tipo de algoritmo implementado por você.
Exemplo de referenciação da licença em um código em linguagem C:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int main(){
}
/*
* Rodrigo
* licença Apache 2.0
*
* Fatora um numero inteiro positivo
* Args: numero inteiro positivo
* Retorna a lista de fatores quando o num eh
*/
int* fatoracao(int num){
// Implementacao do Rodrigo aqui
}
// feito por Larissa. Sob licença MIT license.
int isPrimo(int num)
{
/*Implementacao da Larissa*/
// Comentários dela explicando a implementação
}
/*
* Constantes matematicas feitas pelo Raimundo.
* chame as constantes pelo metodo, exemplo: math.pi()
*/
typedef struct _CONST_MATH_ {
double pi();
double euler();
} ConstMath;
ConstMath math;
Repare que no exemplo acima, Rodrigo, Larissa e Raimundo contribuiram no mesmo arquivo. Note também que Rodrigo implementou sob Apache 2.0, Larissa sob a licença do MIT, e Raimundo sob GLPv3.0, já que ele não especificou.
- Para evitar muitos versionamentos com diferentes implementações em diferentes branchs de diferentes repositórios gits que fujam ao alcance de todos - Confuso, não? Também achei!- ou seja, para evitar divergências e democratizar a informação aqui obtida, é altamente recomendável fazer os forks, e principalmente os merges (via pull requests) de forma centralizada, a partir de uma mesma fonte - um mesmo repositório.
Ressaltando a importância da organização e valorizando o bom senso dos contribuidores, sugiro que os forks, pull requests, known issues e outros sejam feitos nesse seguinte repositório: https://github.com/Jakiminski/AlgoritmosGen-ricos. Assim, todos teremos acesso facilitado aos algoritmos e mais facilmente difundido, seja pela comunidade acadêmica ou por outros devs.