Executando verificação de segurança...
20

Os Principais Fundamentos da Programação

Quanto mais focamos em bibliotecas e frameworks, mais nos afastamos dos fundamentos que originaram estas abstrações e muitas vezes nerfamos os frameworks ao ponto de ficar sem chão quando para estes não há mais suporte e/ou ficam ultrapassados.

Não saber de tudo é uma dádiva de mentes saudáveis no mundo atual, pois quanto mais o tempo passa, mais informações são geradas e mais devemos tomar a decisão de dizer não pra muitas coisas. Vide -> Decisões, Dicas e Contribuições para Uma Carreira Melhor.

Porém, há momentos que não dizemos não, logo somos atropelados por uma avalanche de informações diárias, buscando consumir mais e mais conteúdos, correndo o risco de entrar no famoso "tutorial hell" e se sentir com a síndrome do "não sei de nada".

Entendo perfeitamente se você estiver passando por isso... acontece com todos experientes ou inexperientes, pois é muito comum nas áreas de tecnologia.

Eu preciso fazer um disclaimer: Não Sei Todos Os Fundamentos da Programação e Talvez Nunca Saiba, Contudo, Por Saber Que Eles Existem, Sempre Irei Buscar Aprender Cada Vez Mais! 😉

Por isso, não leve esta publicação como verdade absoluta, pondere, avalie e compare com outras publicações, com certeza você achará valores importantes aqui e também lá, pois você tem liberdade de escolha :)

Mas no quesito programação talvez o pensamento ideal é contra-intuítivo, pois o melhor a se fazer é focar nos fundamentos, mais do que nos resultantes destes principios.

Não saber os fundamentos pode te limitar a crescer e causar diversas dificuldades que você não saberá responder as razões disso.

De acordo com o @ThiagoPompeu em seu artigo Caro programador iniciante, fundamentos!:

O que estava me limitando era uma deficiência nos fundamentos!

Não buscar saber sobre os fundamentos é fatal para te estagnar e se parar de evoluir é o que você quer, não aprenda os fundamentos!

Deixa eu exemplifcar o que quero dizer, com o seguinte cenário:

  • Uma pessoa quer resolver um problema de traduzir tudo que lê na internet.
  • Daí um desenvolvedor (nós) se propõe a resolver essa dor.
  • Logo este dev vai pesquisar tutoriais/cursos/stack overflow/referência na internet pra isso.
  • Ele vai encontrar uma solução que pode ser criar um plugin para o browser.
  • Este dev simplesmente vai copiar e colar o código e resolver o problema do cliente.
  • A pessoa terá sua necessidade resolvida, mas será que o dev de fato terá a sensação de evolução? Será que a solução é boa o bastante para não quebrar em nenhum dos casos?
  • Mas aí este mesmo dev ficou pensando nisso e não conseguia nem dormir direito pensando nessa situação.
  • Logo este dev tomou a decisão de correr atrás dos fundamentos do que ele criou.
  • Ele entendeu o que de fato é uma extensão de browser. Ele entendeu de fato o que é um browser. Entendeu mais a fundo os fundamentos do HTML/CSS/JS.
  • A partir dos fundamentos, ele percebeu que existem certos limites que uma extensão deveria respeitar.
  • Além disso se precisasse melhorar a extensão, trazer mais recursos ou aplicar manutenção, este dev saberia exatamente pra onde deveria olhar.
  • Os fundamentos o fez dominar melhor todo o problema.

Essa é uma história minha um pouco diferente, que de fato estava com muito problema pra criar uma extensão pra mim mesmo, mas pouco sabia dos princípios que eu precisava pra que essa dor tivesse uma solução.

Foi difícil entender, mas depois que fiquei remoendo isso, tive que parar tudo que achava que sabia (frameworks, básico do básico, copiar e colar) e passei pra olhar com carinho para as coisas importantes (princípios, básico bem entendido, prática, prática, prática).

Outra coisa, saiba que os fundamentos são conceitos que se atualizam, porém com menos frequência do que as outras partes do conhecimento, por isso, os conceitos aqui descritos podem ter atualizações melhores, podem estar incompletos ou não atender o sue contexto, com isso mais uma vez deixo claro: Não leve tudo como verdade absoluta, cada caso é um caso, pegue os conhecimentos aqui e adapte a sua realidade!

O @FelipeDeschamps disse aqui que a tecnologia é como se fosse uma cebola de 3 camadas, que quanto mais próxima da camada externa (Frameworks, Abstrações, etc), mais rápida ela fica, porém, quanto mais pelo centro da cebola (Fundamentos, Princípios, etc), mais lenta e reaproveitável para outros contextos.

Vantagens em Buscar Saber os Fundamentos

  • Menos alterações, mais domínio.
  • Facilitar a migração entre diferentes linguagens de programação.
  • Expandir suas habilidades programando.
  • Se adaptar a novas tecnologias.
  • Aprender a criar soluções mais robustas, eficientes e escaláveis.
  • Entender como os sistemas funcionam por trás dos panos.
  • Menor curva de aprendizado é igual a mais tempo sobrando! Vide -> Dicas Que Te Fazem Ganhar Tempo.

Fundamentos

  • Prática

    • É fato que tecnologia tem muito do virtual, mas aprender na prática é a melhor maneira de aprender, é trazer o virtual para o real. Vide Aprender a Aprender.
  • Computador

    • União da unidade física (Hardware) e a unidade lógica (Software).
  • Terminal

    • Interface para comunicação via comandos entre humano e computador.
  • Sistema Operacional

    • Software de controle do computador como interface para humanos.
  • Compreensão de Problemas

    • É a compreensão dos diferentes tipos de problemas e seus domínios.
  • Lógica de Programação

    • É a capacidade de pensar de forma analítica para resolver problemas.
  • Algoritmos

    • Conjuntos de instruções que nos permitem resolver problemas e a realizar tarefas específicas na programação.
  • Pseudocódigo

    • É pseudo-linguagem de programação que está mais próxima da linguagem humana.
  • Paradigmas de Programação

    • São diferentes abordagens para resolver problemas e escrever os códigos.
  • Linguagens de Programação

    • São conjuntos de regras sintáticas e semânticas utilizadas para dar instruções padronizadas a um computador.
  • Gerenciamento de Memória

    • São estratégias para cuidar da memória disponível, seja alocando espaços, "apagando" dados não mais utilizados, maximizando uso da memória, etc.
  • Variáveis e Constantes

    • São posições nomeadas da memória usadas para guardar um valor que pode ser acessado e/ou modificado pelo programa.
  • Tipos de Dados

    • São os tipos dos dados que serão armazenadas, como números, textos, lógicos, etc.
  • Entrada e Saída

    • É a ideia de interação com o programa por meio de entrada de dados via alguma interface de entrada e a saída dos dados via alguma interface de saída.
  • Estrutura de Dados

    • São maneiras de armazenar e organizar informações de maneira eficiente e acessível.
  • Operações Matemáticas

    • São as operações matemáticas com valores númericos.
  • Operações Relacionais

    • São comparações diferentes entre valores numéricos.
  • Operadores Lógicos

    • São comparações entre valores lógicos.
  • Precedência de Operadores

    • É a regra de precedência de acordo com a hierarquia de cada operador e a possibilidade de escolha da ordem de precedência das operações.
  • Condicionais

    • É um comando ou mais comandos serem executados se uma ou mais condições forem atendidas.
  • Repetições

    • Estrutura onde um conjunto de instruções é executado enquanto determinada condição é satisfeita.
  • Funções, Procedimentos, Rotinas e Métodos

    • São trechos reaproveitáveis de códigos que podem extender seu código e podendo retornar e/ou alterar valores.
  • Classes

    • São modelos do mundo real e com suas interações, como um carimbo por exemplo.
  • Manipulação de Arquivos

    • São maneiras de trabalhar com os diferentes tipos de arquivos, como arquivos com extensão txt, json, xml, etc.
  • Erros, Falhas, Bugs, Exceções

    • São exceções por qualquer tipo de fator interno ou externo e que - se possível - deverá ser tratado ou prevenido em seu código.
  • Depuração

    • É averiguar o comportamento de cada parte do seu código quando em execução.
  • Testes

    • São tipos diversificados de testes para prevenir ações indevidas e garantir a qualidade.
  • Segurança

    • É escrever código seguro, evitando ao máximo as vulnerabilidades.
  • Boas Práticas

    • São boas práticas de codificação que nascem com a maturidade ao longo do tempo.
  • Versionamento

    • É versionar seus arquivos e pastas para organização e controle.
  • Módulos, Bibliotecas, Frameworks

    • São formas diferentes de aproveitar códigos e acelerar o desenvolvimento.

Lembre-se

Uma casa até pode ser construída sem o fundamento e independente do material que a casa foi criada, qualquer interpérie a derrubará! - Eu mesmo hehehe.

Bora Agir?

Você tem outra ideia de fundamentos? O que funcionou/funciona pra você? Deixa aqui nos comentários e compartilhe suas experiências conosco! Se tiver sugestões de melhoria desta publicação, serão muito bem vindas!!! Muuuito obrigado por ler até aqui e espero que você possa ter aprendido os fundamentos do sucessinho aqui 💎

Edições

  • 08.04.2023
    • Removi dos fundamentos Objetos (É a estrutura que agrupa atributos e comportamento como representação de objeto no mundo real, ou seja, a instância de uma classe é um objeto.), pois conforme @maniero bem disse nos comentários:

      ...é uma definição avançada e específica para uma área e não o fundamental da computação.

Referências

4

Fundamentos, fundamentos mesmo, talvez você saiba. Tem o detalhamento de fundamentos. Isso quase ninguém sabe tudo.

Se for muita coisa não são fundamentos. Sabe uma picanha de 2Kg? Não é picanha.

Essa publicação é melhor que boa parte do que se posta sobre isso. Eu estou criando algo até mais completo (que não são mais itens), mas isso já existe e está muito bom. Já posso agradecer, até porque ajudará o que eu estou fazendo ser melhor.

O que talvez tenha faltado que eu falo muito é dizer que os fundamentos dos fundamentos é oque todo mundo aprende, ou deveria aprender, na escola. Matemática, comunicação e expressão e a base da ciência. Sei que todo mundo esquece disso porque não é programação, ainda que sejam fundamentais para exercer a profissão. Eu acho que não se pode esquecer disso porque hoje boa parte das pessoas têm dificuldade com fundamentos da programação porque faltam os fundamentos gerais. Compreensão de problemas não é programação, é isto aqui, é a base da base.

E tenho que dizer que o fundamento é básico, não é algo avançado. Por exemplo, estrutura de dados, o fundamento é o básico disso, o avançado já não é fundamento. Isso talvez é o que eu queria deixar mais claro que a postagem original.

Eu acho isso importante porque tem que bater muito nessa tecla. Quem sabe em vez das pessoas virem babando falando em OOP, e aprender tudo errado, ela comece a babar por ter os fundamentos e mude sua vida.

Fundamentos não são teoria chata. Não precisa ser assim. Mas tem teoria. Tem prática, como tudo deve ter.

Sem fundamentos as pessoas fazem o que eu sempre falo: treina o erro. E têm dificuldade para pesquisar. Para sair do lugar. Para questionar. Para saber que estão te enrolando.

Não quer dizer que concordo totalmente com a lista, mas isso não é problema. Por exemplo:

  • Não acho que prática seja fundamento, a não ser que não entendi o que quer dizer. É de fundamental importância praticar, mas eu não chamaria de fundamento. Não fará mal estar na lista, pelo contrário.

  • Eu não gosto do termo "lógica de programaçao", mesmo amplamente usado. Já falei sobre isso, ainda farei algo mais detalhado sobre. Isso não existe. Por procurar em inglês. Tem programação lógica e é outra coisa.

  • Não sei se eu classificaria pseudocódigo como fundamentos, ainda vou refletir, mas é algo bom para saber um pouco.

  • Algumas coisas precisam tomar cuidado porque tem muito material errado. Por exemplo, sobre paradigmas. Onde você vai? Wikipedia? Tá cheio de erros. E não tem como consertar, o verbete "tem dono".

  • Algumas coisas estão em níveis diferentes de detalhamento, e quando se entra nisso, fica parecendo que a lista está incompleta. Eu iria só no nível mais alto.

  • O que fala de objetos é uma visão que não é fundamento, pelo contrário, é uma definição avançada e específica para uma área e não o fundamental da computação.

  • Boas práticas eu sou bem crítico do uso do termo, cai no mesmo da prática. Não é bem fundamento. E as pessoas entendem isso errado.

  • Versionamento é importante, mas eu não chamaria de fundamentos.

E assim vai. Não tome isso como críticas, é só um auxílio e visão diferente para ajudar quem vai ler ter algo extra para pensar (e confundir :D).

Espero ter ajudado.


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

2

Que comentário edificante, com certeza não é crítica destrutiva, mas uma excelente afunilamento e a maneira correta de olhar para minha publicação. Muito obrigado pelo baita complemento!

Sobre alguns pontos:

Fundamentos, fundamentos mesmo, talvez você saiba. Tem o detalhamento de fundamentos. Isso quase ninguém sabe tudo.

Sei que existem diferentes níveis de abordagem para os fundamentos, mais baixo nível (detalhado, esmiúçado e/granular) e o mais alto nível, meu objetivo no artigo foi tentar ser o mais imparcial possível quanto ao nível, mas não tem jeito, tópicos que pra mim são importantes se eu pensar com minha cabeça mais backend com certeza irei pecar quando alguém com a cabeça de fronted ler.

Mas, com as breves descrições o objetivo era esclarecer que estes "fundamentos" estão em ambas as vertentes (backend, frontend, middle-end, etc) e níveis diferentes (top, down, middle, etc).

E também você tem razão em dizer que nem tudo o que eu trouxe são fundamentos de programação, neste compilado meu intuito era trazer o que eu achava de mais útil para a pessoa pensar em ter como pontapé inicial, sendo disciplinas fundamentais, habilidades fundamentais e maneiras fundamentais de pensar... mas de fato, nem tudo seria um fundamento de programação. Ex. Prática é um fundamento comportamental, Compreensão de Problemas é um fundamento disciplinar, Objeto é um fundamento mais abstrato, Classes já é mais específico, Sistema Operacional é um fundamento de alto nível, já o terminal é mais baixo nível e mesmo assim ele tem outros fundamentos compondo ele.

Já posso agradecer, até porque ajudará o que eu estou fazendo ser melhor.

Fico muito feliz que eu possa ter colaborado para sua missão, com certeza estou muito curioso para saber sobre o que você costuma compartilhar em suas redes sobre "Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente." e se eu pude ajudar pelo menos com uma partezinha mínima se quer deste processo ficarei ainda mais feliz!

E tenho que dizer que o fundamento é básico, não é algo avançado.

Aqui tenho um contra-ponto a dizer: Existem níveis diferentes de abstrações, logo dependendo do nível de fundamento que estamos falando e o nível de domínio do assunto que desejamos ter... às vezes só precisamos saber trocar o óleo do carro e outras vezes precisaremos sujar nossas mãos no óleo para trocar o escapamento, são níveis diferentes de compreensão e fundamentos diferentes. O interessante aqui é entender que um fundamento é base para outros fundamentos.

Só mais um complemento neste tema fundamentos, estamos alicerçados nos fundamentos de nossos antepassados e por isso é incrível saber a história de como as coisas aconteceram, porque tal autor tomou tal decisão pra isso ou aquilo e com base nisso aprender a tomar boas decisões também.

Fundamentos não são teoria chata.

Concordo demais, como tudo na vida, fundamentos são aprendidos também e eles podem ser aprendidos de maneira divertida, seguindo o mesmo processo de aprendizado que qualquer ferramenta. Mas, este comentário me gerou um ponto interessante: Será que crianças quando estão no processo de aprendizado aprendem quais fundamentos para o início de sua vida? Por exemplo, aprender, falar, andar, enfim.... isso é muito interessante!

treina o erro.

Isso é matador. Não teria melhor benefício para o fundamento do que este, de não errar, de não propagar o erro e de não deixar ser enganado pelo errado.

Eu não gosto do termo "lógica de programaçao", mesmo amplamente usado.

Eu procurei em inglês (Programming Logic) e encontrei esta página How to Improve Your Programming Logic. Mesmo assim, neste ponto concordo com você de que o termo Lógica de Programação é ambíguo, não consistente e não faz sentido. Pensando nisto, inclui ele nessa lista de fundamentos como inter fundamento necessário para ter a crítica de sequenciar os passos de maneira lógica, tomando decisões a cada tarefa e entendo se vale ou não esmiúçar aquela tarefa, com o objetivo de resolver determinado problema. Em miúdos, Lógica de Programação (que não consigo pensar numa identificação melhor e mais genérica) é o pensamento de analítico de solução do problema, enquanto Algoritmo é a implementação desta resolução.

Não sei se eu classificaria pseudocódigo como fundamentos

Inseri pseudocódigo na lista pensando na maneira mais simples que qualquer pessoa poderia resolver um problema com código sem ao menos ter conhecimento bruto de semântica das linguagens de programação, somente tendo o conhecimento de sua linguagem natural e algumas poucas regras estabelecidas e a partir daí criar algoritmos.

É mais uma forma simplista de pensar como construir algoritmos para resolver problemas, pensando assim, também poderia ter incluído Dividir pra Conquistar e por aí vai, mesmo assim, minha ideia era ser genérico o suficiente para utilizar em todos os aspectos na tecnologia, especificamente para programação.

tem muito material errado.

Sem dúvida alguma, tentei ser o mais imparcial possível e até deixei no início da publicação para pesquisarem e ponderarem sobre estes tópicos e principalmente, quando se aprofundarem neste tópico, procurar materiais de boa qualidade, com base em instuições bem conceituadas, com pessoas bem estabelecidas e com conteúdo comprovadamente correto, pois não adianta só aprender qualquer fundamento, tem que ser os fundamentos corretos e com o conteúdo correto.

Eu iria só no nível mais alto.

Até tentei nivelar, mas, fui pensando nos meus diferentes momentos de estudos, desde inciante até agora - um iniciante com um pouco mais de compreensão disso - e percebi que alguns fundamentos estão presentes em níveis diferentes também, por exemplo o Gerenciamento de Memória, este é um assunto que é possível olhar o nível baixo como um espaço na memória, que a memória poderia estar em qualquer lugar, como cache, armazenamento randomico em registradores, memória persistente ou etc, ou olhar mais alto nível de complexidade mais ainda sim um fundamento, como um GC ou então alocação dinâmica e estática, e por aí vai... este assunto é gigante e tem fundamentos importantes pra todo o lado.

O que fala de objetos...

Concordo, objetos não são fundamentos, são abstrações de fundamentos e é mais um conceito do mundo real do que de fato um fundamento, inclusive irei remover este cabra da lista.

Versionamento é importante

Aqui tenho um contra-ponto: Versionamento é importante como um fundamento, pois existem diversos tipos de códigos, arquivos, estruturas e atualizações, correções ou remoções que precisam ser controlados, rastreados e organizados de certa forma e ter essa compreensão é fundamental para melhorar sua programação e avançar em outros tópicos. Talvez não seja fundamento o processo de versionar por exemplo com o git no github, mas este fundamento vai além do git. Existe o versionamento semântico, versionamento de api, versionamento de código, versionamento de arquivos e pastas e em conjunto a este conceito, também incluo backups e suas estratégias, organização de todos estes conteúdos e seus arquivos correspondentes, disponibilidade dessas informações, etc. Entendo o versionamento como um fundamento abrangente e muito necessário, até mesmo como um dos primeiros fundamentos.

Não tome isso como críticas

@maniero, já te acompanho a muito tempo e sei que todas suas análises críticas ou não são preciosas, trazendo mais qualidade em pontos que jamais nem chegariamos perto de pensar, então mesmo sendo crítica ou não, pra mim este seu complemento é muito valioso! Muito obrigado por isso mister.

2

Em miúdos, Lógica de Programação (que não consigo pensar numa identificação melhor e mais genérica)

Se o pensamento/documento é do tipo:
Se isso então aquilo senão aquele outro fim se
que eu acho que são a maioria dos documentos, então o termo que mais se adequaria seria Lógica de programação imperativa.

Um problema que eu acho interessante para brincar com lógica é o SEND + MORE = MONEY.

1

Na realidade quando falo Lógica de Programação é diferente do Paradigma de Programação utilizado, na realidade, quando expressei lógica de programação é o pensamento que irá decidir entre utilizar um Paradigma ou outro em detrimento da resolução de tal problema. Ou seja, é como se a Lógica fosse a mentalidade de decisão das melhores coisas para resolução de um problema e o Paradigma é uma ou outra maneira de resolver determinado problema. Digamos assim:

Existe um problema (Problema e Domínio) -> Análiso o problema pensando nas soluções possíveis (Lógica de Programação) -> Escolho uma maneira de me expressar para resolver tal problema (Paradigma de Programação) -> Penso na maneira mais simples de representar a resolução deste problema (Pseudocódigo) -> Gero um algoritmo que será a minha implementação do pseudocódigo (Algoritmo) -> Se quiser posso pular pra implementação com linguagem formal (Linguagem de Programação).

Talvez, os passos acima estão em ordens diferentes, com algumas pequenas nuânces, mas essa é a ideia que quis expressar quando citei Lógica de Programação como fundamento.

E como disse, não sei como representar isso com outra nomenclatura mais simples, talvez Lógica Computacional, talvez Decisão Analítica, etc...

2

Já que o assunto é fundamentos, vamos aos fundamentos. Primeiro seria o que é programação imperativa.

Como nas referências do teu artigo tem um link Lógica de programação, por onde começar? , resolvi dar uma olhada. Ok, 13 minutos dá para deixar rolando. Tem muita coisa no vídeo que está citado no teu artigo. Mas, basicamente é o que eu escrevi: Lógica de programação para linguagens imperativas.

A primeira dica é: Nunca diga qualquer linguagem. A menos é claro, que você realmente conheça todas as linguagens e saiba do que está falando.

O primeiro exemplo de "pseudo linguagem" é um C traduzido. O segundo é um Pascal traduzido (não sei o motivo de terem trocado := por <- ; poderiam deixar apenas =). Depois mostra um código em Java. E depois Swift. Todas são imperativas, confere? É, mas Java e Swift são OO. Ok, nenhum impedimento. A receita de bolo também é um exemplo imperativo. Tem os ingredientes (ovos, farinha, etc.), os procedimentos seguindo uma ordem (misturar, bater, cozer) e servir. Troca os ingredientes por variáveis e constantes, os procedimentos pela transformação das variáveis inicias e o resultado por um relatório que é a mesma coisa. Então, um programa é apenas uma receita de bolo bem detalhada.

Depois são apresentados alguns outros conceitos (constantes, variáveis, for, while, etc.) e diz que precisa dominar estes conceitos para qualquer linguagem de programação.

Lembras do que eu escrevi ali em cima? Nunca diga isso. Existem diversas linguagens/paradigmas que o que foi ensinado não é aplicável. É possível citar APL, Prolog entre outras. Não vou colocar exemplos aqui para não sujar o tópico. Mas podes ver um exemplo neste link.

Espero ter auxiliado em alguma coisa.

1

Olá @guaracy, agora entendi! Realmente a maioria dos exemplos e a forma das explicações que trouxe aqui se referem ao paradigma imperativo e você tem razão em apontar isso, muito obrigado. Você tem sugestões de fundamentos para outros paradigmas de programação? Em Prolog por exemplo utiliza variável também? Em Lisp tem o conceito de classes também?

Acredito que essa colaboração não sujará a publicação, mas será uma das melhores contribuições para este tema, tenho certeza disso. Muito obrigado mais uma vez pelo apontamento tão importante!!!

2

De uma forma geral, as linguagens podem associar nomes a valores. Chamando de variável, associa-se ao conceito de mutabilidade.

tot = 0
for valor in lista
  tot = tot + valor

No caso acima, tot é uma variável. Em Prolog, depois de atribuir um valor para tot ele não poderá mais ser alterado dentro do escopo. Teria um comportamento parecido com o de uma constante. Já em linguagens funcionais, uma expressão do tipo a = a + 1 nem faz muito sentido. É como uma função recursiva.

Lisp é uma linguagem que pode ter quase tudo. Em Lisp tem o CLOS (implementado no SBCL). De qualquer forma, a definição de linguagem orientada a objetos pode ser meio polêmica. Se não me engano, Clojure não implementa OO. Como tem gente que não gosta de OO mesmo

1

estamos alicerçados nos fundamentos de nossos antepassados e por isso é incrível saber a história de como as coisas aconteceram, porque tal autor tomou tal decisão pra isso ou aquilo e com base nisso aprender a tomar boas decisões também.

Eu adoro isso. IMHO, falta um pouco mais de ver esss coisas em todo mundo.

Existem lugares usando o termo de lógica de progranmação em inglês, mas não tem sendo usado como por aqui, cheio de luvros com isso no título, o que deu legitimidade para ele, sem ser bom. Se bobear por lá pegou vicio daqui :D

Obrigado por todo reply.

#tamojunto

2

Eu adoro isso. IMHO, falta um pouco mais de ver esss coisas em todo mundo.

Valorizar nossos antepassados é valorizar os fundamentos que eles nos deixaram como legado (no sentido bom da palavra) e realmente falta estimas neste sentido.

Eu que agradeço mais uma vez nobre!!!

2

Olá Maniero, você já pensou em alguma plataforma educacional?
pelo que você comentou, e tanto material que você tem no seu github, seria interessante criar um mini blog (mini stack-overflow bonitinho e facil de usar em portugues) catalogando e deixando que pesquisassem todo material, se precisar de ajuda me disponho a fazer parte de qualquer projeto, sem fins lucrativos, apenas aprendendo um pouco com você já seria um otimo pagamento.

3

Rapaz não sou o @maniero, mas digo que ele já publica diversas coisas e várias redes sociais e eu com certeza acompanharia ele em alguma iniciativa dele, tem muita qualidade e experiência envolvida aí. Acho que posso contribuir com isso aqui hehehe

2

Para que? Fala de criar um software e o conteúdo?

Criar uma para terceiros usarem?

Já. Tarde demais, tá cheio por aí. Acho que não é disso que você está falando.

Criar uma para mim?

Já. Dá muito trabalho para tão pouco uso. Prefiro investir o tempo no que conta mais. Pode não ser o que você está falando.

Usar uma para por meu conteúdo?

O que eu ganharia com isso?

A questão é que não quero dar aulas. Eu sei que muita gente entende que é isso que vou fazer, mas não é bem isso. Não quero ganhar dinheiro com isso, quero a liberdade de fazer oque eu bem entender. Se as pessoas gostarem, ótimo, caso contrário, está bom. Ganhar dinheiro exige muito compromisso e tenho outros planos para minha vida. A não ser que eu faça desonestamente, e eu não sei fazer assim.

A questão é um pouco mais complexa do que eu consigo explicar aqui e agora, mas está fora dos meus objetivos gerais. De qualquer forma, sempre aceito sugestões que possam ajudar a atingir meus objetivos, mesmo sem as pessoas saberem exatamente qual é (nem mesmo eu sei totalmente, vou experimentar) e que ajude as pessoas.

Eu gostaria de escrever um livro, bom, grande, mesmo eu escrevendo mal, mas certamente alguém me ajudaria. Mesmo isso é bastante compromisso e acho que não terei tempo. Quero fazer um projeto open source, meu projeto final de carreira, mas não sei se vai rolar.

Eu não estou prometendo fazer algo de qualidade, até porque eu acho que não sou uma pessoa de comunicação e tenho limitações nessa área. Eu tenho vontade e me esforço. Eu vou tentar não cometer muitos erros. Eles existirão, mas eu sou cuidadoso para tentar mostrar a real. Eu não vou cometer erros básicos que muitos profissionais experientes que eu vejo ensinando errado, mas não estou livre dos meus erros. É disso que eu falo de "programar corretamente", e sei que muita gente não vai gostar, as pessoas querem o que outros já oferecem, eu farei diferente, serei impopular. Só espero mexer com algumas pessoas, eu acho que tenho sorte de quem entender isso, se eu conseguir, sei que posso fracassar até nisso.

Terá um mini blog, vídeos e outras coisas, mas isso não é uma plataforma educacional. Sabe que um dos nomes que estou escolhendo nesse exato momento que passou pela minha listinha (sabe aqueles que vem em braninstroming de ideias?) seria "Não é Curso" :D :D :D

Eu já pensei em criar um SO, tenho experiência para ver os erros, bolei toda plataforma e  mais ou menos especifiquei e sei que daria conta bem do backend, só precisaria de ajuda com o frontend. Mas sabe o que falharia? Massa crítica. O SO só deu certo porque começou nas mãos dos 2 maiores blogueiros de dev do mundo. As pessoas não entendem isso. Eu estudei bem o assunto. De qualquer forma, a cultura brasileira não gosta de algo de muito estruturado e que pregue qualidade. O meu SO teria mais cara de Wikipedia do que SO, porque informação canônica deveria ser o que ajuda mais, só que seria mais autoral, mais flexível que a WP, mas mais rígida que o SO.

Infelizmente não terei tempo nem para estrturar tão bem o que eu pretendo. E esper o que nã od ê tão errado quando eu acho que pode dar, porque isso desanima. Mas não vou mudar para atender o desejo do público por completo, eu terei que ser eu, não consigo ser marketeiro em algo tão sério. Apesar de eu ser bem humorada, as pessoas não sabem disso lendo meus textos :D.

Obrigado pela disposição. Mantenha contato, veremos  o que dá para rolar, sem compromisso. Você foi o primeiro que falou isso. Eu ainda quero explicar melhor sobre tudo isso, mas é legal saber que tem pessoas que querem fazer mais que apenas consumidor (que já é algo importante). Eu quero que pelo menos as pessoas falem o que querem, eu vou tentar fazer, se eu gostar, de graça eu só quero fazer assim :) Por isso não quero cobrar.
Vou aproveitar para agradecer que já está ajudando, por exemplo com escolha do nome, e tem que se dispões me ajudar com vídeo porque sou um prego nisso, e tem que sempre me ajuda de forma geral em tudo o que eu faço e que nada sairia sem essa ajuda. Um dia se me permitirem os nomeio.

Deu para entender um pouco mais do que pretendo? Está chegando a data, mas ainda não tenho todo tempo para isso. Quero começar antes de dar os 40 anos cheio do meu início, onde começo, "oficialmente", mudar minha vida.

E obrigado por toda a postagem (apesar do hijacking :D) , é animador.

2

@maniero sua disposição para sempre estar trazendo boas respostas, com qualidade e experiência em jogo, com certeza seria muito bem refletido em qualquer iniciativa sua. Eu posso não estar no momento de apoiar mais avidamente em qualquer projeto que irá iniciar (ou já iniciou), mas com certeza eu acompanharia e se fosse um livro eu leria (como já disse em outro comentário aqui, um livro mudou minha forma de enxergar programação)!

3

Mas eu faço respostas correndo, nem acho boas, pelo menos a maioria :D É sério, uma ou outra eu tenho orgulho de ter feito. Tenho umas boas no SOpt, no começo eu dedicava para fazer bem. Além do que, minha saúde estava melhor.

Mas é claro que estou escrevendo mais para agradecer sua palavras. Sua ajuda já acontece e você nem sabe ;)

2

Rapaz, facilmente encontramos boas respostas suas aqui no TN, imagina nessas outras plataformas como o Quora ou o SO... no SO sei que tem mais de 15 anos, imagina só o que já não falou por lá ein hehehe

Sobre sua saúde desejo que melhore e fique bem!

Eu te agradeço mais uma vez por todo o conhecimento!

2

Top, seria interessante, já pensei em tentar ensinar e ajudar, video não seria problema para min, porem me falta maior conhecimentos para poder explicar algo, eu gosto de usar hub no final do nome, o meu nome por exemplo, é meu sobrenome + hub, por ser um eixo e generalista, por exemplo para alguma empresa, tem varios exemplos de conteudo generalista em um setor usando essa pegada, mas no que eu diria, seria mais um blog mesmo, não um SO todo estruturado e complexo, mas algo que fosse seguro e não caisse principalmente, mas que tivesse conteudo e redirecionamentos, tipo um mini blog direcionado a uma area, complexo tentar explicar isso via texto, mas um site, com topicos de cada nicho, um header com 3 topicos por exemplo (explicando minha visão bem superficialmente) com Desenvolvimento web back-end, Fundamentos da web, segurança digital, nesses 3 topicos teria muito conteudo e que pegava muito material geral no nicho web (web pegaria os aplicativos, redes sociais e por ai vai), nunca estudei outro tema, por isso falta de ideias pra propor.

1

Eu gosto também, eu quase registrei um assim, mas um amigo que entende mais falou que complicaria porque teria 3 conceitos no nome. Eu ia usar mais porque as duas palavras já estava tomada. Não achei um bom que só teria hub e mais outro conceito e que não ficasse estranho.

Muito embora o que eu vou fazer não é exatamente um hub, mas não me impediria totalmente :D

Obrigado pelas sugestões, vou colocar na mesa enquanto estiver criando a estrutura. De qualquer forma eu vou mudar e ir adpatando até chegar no que me deixa confortável e tente agradar um pouco.

O que eu sei é que não posso falar de tudo. E não sei se muita gente gostaria de fazer parte de um hub de verdade, eu já falei com várias pessoas, chega na hora a pessoa quer fazer algo sozinho, raro sair diferente.

1

Sem um bom alicerce você até pode construir uma casa. porem não significa que ela é boa! ao longo do tempo ela pode começar a ter algumas rachaduras ou no pior dos casos pode desabar.

Então é sempre bom começar preparando o terreno antes de qualquer coisa.

2

Muito bom, também acredito nessa ideia de focar em fundamentos. Para pessoas como eu que são autodidatas, dois livros muito bons são o "The Self-taught Programmer" e "The Self-Taught Computer Scientist" ambos do Cory Althoff que te dá uma visão geral e um norte sobre onde você pode se aprofundar

1

Você falar de autodidata me fez lembrar quando estava na época da faculdade e estava aprendendo sobre os fundamentos da programação com C, este assunto me marcou tanto que fui procurar um livro de C nas bibliotecas da cidade e encontrei o C para Leigos, este livro mudou minha vida e posso dizer com propriedade que livro é uma das melhores formas de aprender a programar. Então se você quiser ser um autodidata de sucesso, comece por livros!!!

2

Esse é o livro? È o For Dummies? É bom? Ou é só para você, é memória afetiva? Porque essa séria costuma ser mal falada. Eu vi um ou outro e realmente não gostei. Tenho um certo preconceito com ela, mas sei que tudo tem exceção. Claro que livro costuma ser bom mesmo. A não ser o C Completo e Total :D :D :D

1

É este livro, o C For Dummies. Na minha experiência da época estava no primeiro/segundo semestre da ciência da computação e era o começo do assunto sobre ponteiros e lembro de não entender nadinha deste assunto então fui buscar um livro sobre este tema e encontrei este que tinha uma abordagem simples e de fácil entendimento... acredito que foi a partir daí que aprendi C de verdade. Talvez até seja memória afetiva mesmo :b mas que me mudou mudou sim!!!

2

Quero achar uma forma de mostrar ponteiros para as pessoas sem dar o medo que todo mundo tem, de forma que mostre que não é tão difícil assim aprender (difícil é controlá-lo em aplicação real).

Dei uma olhada na Amazon e não parece ser ruim, mas semrpe o diabo vive nos detalhes :D

Memória afetiva é importante demais.