Executando verificação de segurança...
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).

Carregando publicação patrocinada...
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.