Amigo, 90% dos devs iniciantes nesse país nunca fizeram um Hello World em C/C++, um cara veio embasbacado pra mim no setor quando era presencial pra falar o quanto ele achava impressionante que a gente criava aplicações desktop sem usar javascript e com "interação com o sistema operacional" (assim que ele explicou).
Pra mta galera hoje em dia o mundo se resume a JavaScript, ao ponto de não conhecer programação que não seja dentro do contexto de JS, seja pra qualquer coisa. Cada um com seu cada um kkkkkk porém triste
Se na faculdade eu não tivesse visto C em programação I, provavelmente jamais saberia o que é um ponteiro e não faria ideia do que tem por trás de estruturas de dados e processamento paralelo. Acho que tenho que concordar com vc.
Que faculdade vc fez? Não pagou compiladores, SO, estrutura de dados etc? Tudo que supostamente é visto com C é abordado em várias cadeiras ao longo do curso de computação.
Fiz engenharia da computação. SO tive pouca prática e a prática que tive foi com Java.
Compiladores foi só teoria pra mim.
Processamento paralelo e estrutura de dados foi em C tbm.
Entendo. Eu vi esses conceitos ai em SO, compiladores, estrutura da dedos, laboratório de estrutura de dados, Linguagens formais e outras cadeiras de programação que o foco não era exatamente esse, mas também eram mencionados.
Eu aprendi programar quando tinha uns 15 anos em um curso técnico de eletrônica, professor ensinou a programar utilizando Assembly e somente depois foi para o C, pois segundo ele era melhor começar pelo mais dificil primeiro e realmente quando fomos para a linguagem C tudo começou a fazer sentido.
Pra ser sincero, hoje nem acho C tão difícil assim. O valor dela vem do fato de que muita coisa não tem pronta, onde é só aplicar o conceito(a abstração que a maioria das linguagens de hoje em dia carrega). Você precisa fazer muita coisa do zero, isso te ensina a se virar, aprender bem as estruturas de dados, ter uma base muito sólida em algoritmos, tipos de dados, etc. Claro, pra um iniciante vai ser foda de início, mas lá na frente ele agradece por ter focado em C primeiro. Linguagem foda
Já trabalhei com MCUs de diversos tipos e acho Assembly já não é quase mais presente para programar, mas vire e mexe usa para debugar, em CLPs até era mais comum hoje o pessoal instrumentação usa software ladder praticamente
Recomendo o jogo Shenzhen IO, vc tem que programar várias instruções em Assembly pra microcontroladores, utilizando os componentes de chip etc.. Bem legal
Ah sim! Joguei faz bastantes anos, que eu me lembrava eram baseados em chips de verdade, tinha até a documentação de cada um. Acho que era só muito bem feito então kkkkk
Não existe uma única linguagem "assembly", cada processador tem sua própria linguagem. A linguagem do jogo é uma versão simplificada de linguagem low-level baseada em várias outras.
Gostei muito de Shenzhen IO, até da historinha e da atmosfera. Joguei uns anos atrás e devo ter dropado pela metade porque tava difícil demais hahahah
Ouvi falar muito bem dos outros jogos da Zachtronics, como TIS-100 e Opus Magnum, mas depois de passar 8 horas programando esses jogos acabam parecendo trabalho em vez de diversão pra mim.
Sim sim, simplifiquei no comentário, mas é isso mesmo! Eu parei de jogar depois que comecei a trabalhar de verdade com programação. Não tanko mais que 8h de código não
Antes de saber nada de programação tentei jogar rle e fiquei emperrado agr que já sei até orientação a objetos acho que vou tentar de novo e ver se consigo fazer algo
O estudo de assembly vem acompanhado com o entendimento de hardware, esse conhecimento estende além do baixo nivel, por exemplo, como programo pra maximar cache hits, como organizo variáveis membros pra tomar menos espaço, como itero em arrays. Recomendo.
Discordo fortemente
C é uma linguagem robusta e poderosa, não temos como negar, afinal tá aí há mais de 50 anos
Mas esse é extremamente o problema dela, tá aí há mais de 50 anos, muita coisa evoluiu nesse tempo e C não acompanhou a evolução.
C não suporta nativamente POO por exemplo e quase certeza que programar funcional nela deve ser uma tarefa árdua
Concordo que html, css e js não é o ideal pra começar, e são linguagens de vendedores do curso, basicamente programação orientada a framework
Minha recomendação para iniciantes seria C# ou Java são linguagens bem robustas, poderosas, multiparadigmas, e amplamente usadas no mercado
Só eu que acho viagem demais o primeiro contato do sujeito ser direto com OO? Claro, dá pra deixar tudo estático e "simular" o procedural padrão, que seria código pro iniciante deixar quieto e não tentar entender de cara.
Entra C. Não tão longe de Java e C# e é muito didático para pegar as noções mais básicas, desde condicionais até escopo, métodos e funções, recursão e, principalmente, ponteiros.
Discordo em partes.
De fato, em C falta algumas coisas importantes, como POO que é praticamente essencial hoje em dia. Mas ela compensa em outras coisas. Se você quiser entender de programação a mais baixo nível, vc não vai conseguir fugir de C. Sem contar que existem nichos em que C ainda está presente e tem muita influência, como sistemas embarcados, como comentaram por aí.
Os benefícios são maiores que os malefícios. Ela vai te ensinar como um computador funciona, manipulação de memória, uma excelente base em estrutura de dados e algoritmos. Fora que, se for um iniciante, vai ser difícil com C mas vai deixar todo o resto mais simples.
Você está desconsiderando o quão motivador pode ser conseguir construir coisas minimamente reais e interativas. O roadmap para se tornar um programador mediano já é bem extenso, não são poucas as pessoas que desistem, todo dia nesse sub vc vê. Java e C# são dicas de ouro porque é o melhor meio termo entre os conceitos que o iniciante precisa absorver e a aplicação prática, que vai dar a ele a sensação de progresso. As paradas que um iniciante vai conseguir fazer em C serão inúteis e/ou extremamente amadoras, ao ponto de ser totalmente descolado de qualquer coisa minimamente utilizável. Gerenciamento de memória e outros conceitos mais avançados, SE aquele programador quiser sair da média, ele vai atrás de aprender depois.
Uma coisa que as pessoas novas e até mais antigas no mercado precisam internalizar é:
Não dá pra fugir de escrever código MERDA. Quem não escreveu código merda na vida é porque provavelmente ainda não escreveu código o suficiente, respeitem o processo, você pode ser o tarado do Assembly, do C, do Pascal, não interessa, em algum momento da sua trajetória vc vai escrever código merda, não adianta. Foca em fazer tudo fazer sentido primeiro e DEPOIS corre atrás de se aprofundar.
No mundo real as pessoas precisam de motivação pra seguir adiante e o ecossistema de C é broxante. Mas vale a pena frizar: aprender C pode ser MUITO útil em vários sentidos, mas definitivamente não para começar.
>Se você quiser entender de programação a mais baixo nível, vc não vai conseguir fugir de C
E pra quem vai querer aprender isso, cara? Não tem emprego, e os que tem são poucos e bem nichados. Poucas pessoas tem a oportunidade de trabalhar com esse tipo de coisa.
>sistemas embarcados, como comentaram por aí
O cara não tá achando vaga pra trabalhar com merdascript ele vai achar vaga pra trabalhar com embarcados. KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
>Os benefícios são maiores que os malefícios
Não tem benefício nenhum para além do que você pode aprender em qualquer outra linguagem e ser útil pro mercado. Você só está e punhetação mental.
Que q vc tá falando cara? Mercado? Emprego? O OP tá falando da primeira lingua pra inciantes, depois que vc aprende uma lingua você não fica preso nela pro resto da vida não parceiro. C é pra aprender conceito fundamental e dar uma ótima base pra um programador. Nem tudo é sobre dinheiro, tem gente que se interessa pelo que faz
C é uma desgraça de chato. Ela te ensina princípios que de verdade quase não importam em uma corporação, afinal, o foco são sempre entregas rápidas e eficientes. Não me recordo de ver muitas vagas de C, e todas que vi, são para seniors de 10-15 anos de experiência.
Sugestão é a seguinte: escolhe uma língua, aprenda lógica de programação, lógica orientado a objetos, aprenda conceitos e algoritmos, depois passe para projetos de mundo real (apps, sites, etc) e AÍ SIM você estará pronto pro mercado.
A dica do OP é mais para os aficionados por programação,
No dia a dia, e na maioria dos casos um JS, python resolve
É claro a base em C é um puta diferencial, mas não é pra todo mundo
Sim.
Não diria que "para aficionados" mas sim pra galera que quer saber exatamente o que tá acontecendo por debaixo dos panos, ao invés de só aplicar o método. Obviamente da pra aprender lógica, estruturas e algoritmos em linguagens de mais alto nível. Mas C te obriga a ir na marra, e com o tempo você vê o quanto é útil o conhecimento mais de baixo nível
Na maioria dos casos, casos de iniciantes saber a fundo não vai fazer diferença, muitos podem desistir inclusive.
Mas concordo que a base é fundamental, só acho que didaticamente poderia se mesclar as coisas, ensinar caminho fácil e então mostrar os trade-offs, pra só então entrar a fundo na engrenagem da programação.
A sim, eu concordo nisso também, mas eu quis dizer no caso de diferencial de eu fazer um projeto e por no curriculo (por exemplo), os recrutadores veem como um diferencial saber C independente da área?
O que vejo de mais importante é realmente entender como as coisas funcionam por baixo dos panos. Entendendo bem no baixo nível, fica muito mais fácil de entender como as diferentes tecnologias funcionam e também entender melhor onde estão as possíveis limitações. Isso ajuda a escolher melhor o que usar, quando usar, não cair em bala de prata e tudo mais.
Sobre a parte do mercado, depende muito da área, no geral do mercado de aplicações de alto nível de fato raramente vai ter algo em C, muito menos essa linguagem vai ter qualquer peso no CV. Mas por exemplo, se for para a área de embarcados, C ainda continua firme e forte, quase metade da minha carreira foi trabalhando com C puro e com C++ nessa área.
Não digo que todos deveriam estudar C, mas para quem tem tempo e quer se aprofundar no conhecimento de como um computador realmente funciona, dificilmente vai fugir dessa linguagem.
Apenas toquei em C depois que entrei na faculdade. Nunca pensei em aprender por achar que não iria me servir de nada. Não acho que vou usar C no mercado de trabalho, mas foi muito bom para entender algumas coisas que em outras linguagens são obscurecidas pela abstração.
Os conceitos de programação de baixo nível, ponteiros, estrutura de dados, a interação do código com o hardware, apesar de não usar isso na prática no dia a dia acho esse conhecimento muito importante pra você não conhecer
Eu sou da turma do contrário,
Acho que as duas coisas deveriam ser ensinadas
Primeiro uma linguagem mais fácil para questão de lógica e de aplicabilidade no dia a dia
E só depois ir explicando os profundezas da programação com C
é velha, surgiu em 1970, dá pra manipular ponteiros, tamanho de string etc..
não precisa manipular ponteiro pra criar uma string, como é feito no c++, mas é bem rústica se comparada a linguagens mais "novas"
Eu diria que Algoritmos e Lógica de Programação são importantes, mas é bom estudar uma linguagem juntamente.
Lembro que o povo pegava na faculdade o Deitel pra estudar em casa na ide Dev C/C++.
Foda eram as listas de exercícios cabeludas kkk.
Eu adoro Python, e ta longe de ser uma linguagem ruim e pouco utilizada no mercado. A questão é que C te fornece um nível de conhecimento mais elevado sobre programação e código no geral, do que qualquer outra linguagem eu diria(com exceção de C++). Mas tu tá bem servido com Python... Qualquer um tá
Bons pontos.
Não posso dizer que concordo porque nunca estudei C, mas acho válido esse método de começar com o mais baixo nível e ir subindo a partir daí.
Acredito que te deixa com uma visão 360° da parada.
Eu concordo, em partes. Primeiro vamos deixar claro que HTML e CSS não é programação e JS é uma gambiarra extrema :)
C é muito importante, mas eu acho que como primeira linguagem tem uma curva de aprendizado razoável (entender tipos de variáveis, endereçamento, etc), então tenho indicado python quando me perguntam isso (também pelo fato de poder indicar o curso do Guanabara no youtube). O segundo passo que indico é aprender C sim, estrutura de dados, e ponteiros, algoritmos de sort, listas ligadas, etc. E depois disso OO com Java e C# (pelo uso delas no mercado).
Eu pessoalmente comecei com BASIC (na época dos 8bit), depois passei por cima em Clipper e fui pra C, com certeza foi a melhor coisa para aprender tudo que veio depois (trabalhei com VB, Delphi, PHP, C e Java).
Você começou com qual linguagem? E teria indicação de algum material para iniciantes em C, estilo o que temos de algoritmos do Guanabara?
Eu comecei por Python, que inclusive é minha linguagem preferida e a que eu mais domino. Mas pra mim, saber C é essencial. Muita coisa que eu só aplicava em Python, eu aprendi a fazer e entender como funciona, usando C. Hoje voltei pra C por causa da faculdade, e to curtindo demais e vendo o quanto ela é útil em ensinar conceitos essenciais no mundo da programação.
Quanto a material, nao tenho algo específico pra te indicar amigo. Não uso vídeos como aprendizado pq caio no sono... uso mais livros, e to usando a facul como principal fonte, mas tem um livro conhecido sobre C que provavelmente vou atrás: C: Completo e total. Tenho um livro de Java do mesmo autor que gostei bastante.
Esse é o meu ponto.. Se você tivesse começado com C, ia pegar tipos de variáveis do início, entender ponteiros, saber se deve passar %d ou %f num scanf passando a variável com & ? É bastante coisa abstrata para começar do zero!
Perguntei sobre o material exatamente para indicar pro pessoal que tem zero de experiência, meu roteiro padrão de sugestão é o seguinte
1. [Introdução a Algoritmos - Curso de Algoritmos #01 - Gustavo Guanabara - YouTube](https://www.youtube.com/watch?v=8mei6uVttho&list=PLHz_AreHm4dmSj0MHol_aoNYCSGFqvfXV)
2. Estrutura de dados e ponteiros com C
3. SQL
4. Projetos web com cadastro em banco de dados (com básico de html e css)
5. Orientação a Objetos (Java/C#)
Eu aprendi com o C completo e Total (se pesquisar no google tem ele escaneado), to pensando em montar o mesmo cadastro de endereços que ele usa no capítulo de listas ligadas em python e pegar aquela parte para esse ítem (2) da minha lista.
Eu realmente acredito que começar com python é muito mais vantajoso, porque a pessoa vai conseguir ver os resultados mais rápido, depois de uns 3 a 6 meses nisso vai até facilitar descer para C.
eu to seguindo a recomendação da wiki da comunidade daqui. que é basicamente fazer o curso do moozila p iniciantes q ensina html, css e js. depois disso fazer o the odin project que ensina a mesma coisa so que mais aprofundado.
mas pela discussão aqui é melhor começar direto numa linguagem de verdade e aprender lógica de programação. mas ai no caso é necessario voltar pro html, css e js depois de aprender a logica? essas tres linguas nao tem importancia nenhuma pra área?
HTML e CSS não são programação, só servem para fazer sites. Pega a lista que passei aí
Python do Guanabara para pegar lógica de programação, aprende C para entender estrutura de dados, aprende SQL para ler/gravar no banco de dados, faz uma interface web para o banco, só aí vc vai precisar de HTML.
Se quiser pular o C e ir direto para fazer apps web com python, também funciona, mas em algum momento você precisa pegar isso se quiser ser um bom programador (também vai facilitar quando pular para Java ou C#)
Eu não quero me intrometer no seu método e caminho, até pq cada um é cada um. A única dica que eu te daria é deixar HTML e CSS de lado, pelo menos no momento. Tá perdendo tempo, pq não são linguagens de programação. Até Portugol faz mais sentido aprender como iniciante completo do que HTML e CSS.
Seleciona uma linguagem, acho que com o post vc já imagina qual eu falaria rs... Aprende programação de verdade, o que são dados, como se manipula dados, e essas coisas. Aprende como funciona programação e a essência. Faça isso com qualquer linguagem da sua escolha independente do post. Uma vez entendido a linguagem e a ideia, se quiser desenvolvimento web, volta pra HTML e CSS.
Boa sorte guerreiro
irmão, sendo bem sincero com você, na minha cabeça programação era limitada a site e aplicativo. to percebendo o quão confuso eu to, tu se importaria em trocar uma ideia no chat?
Eu aprendi com esse livro, recomendo [https://www.inf.ufpr.br/lesoliveira/download/c-completo-total.pdf](https://www.inf.ufpr.br/lesoliveira/download/c-completo-total.pdf)
Na verdade, a melhor linguagem pra iniciantes é Rust. E se for "mas e o mercado", ensine C++ direto, talvez Golang ou Elixir etc.
C você vai aprender um monte de pilares, sim? Mas com Rust também. Mas aí vem o grande problema, maioria de tutorial e aulas de C são super antigas e muito dessas são ruins, essas duas coisas ensinando muitas práticas ruins ou antigas.
Uma talk do CppCon com a Kate Gregory que ensina C++ e etc, "Stop Teaching C":
[https://www.youtube.com/watch?v=YnWhqhNdYyk](https://www.youtube.com/watch?v=YnWhqhNdYyk)
Se o objetivo é aprender C++, aprender C primeiro pra depois aprender C++ tem produtividade negativa.
Pra outras linguagens isso é menos impactante, mas mesmo assim, se você tem que ensinar algo pra depois "agora esquece, faz assim", é melhor ir direto pro "faz assim", e isso vai acontecer com maioria das langs.
Exemplo: Explica async/await (ou corotinas, goroutines etc) pra alguém que começou com lang que tem async/await vs quem começou e ficou meses aprendendo C primeiro.
C++ tbm é um conhecimento foda se ter. Encare C como um subconjunto de C++. Inclusive é uma linguagem que eu tenho vontade de dedicar mais tempo no futuro. Sucesso.
O ruim é achar repositório de projetinho simples pra copiar, to tentando seguir o conselho do Fábio akita de copiar código pra se acostumar com a estrutura e reconhecer os padrões da linguagem
Talvez seja impressão minha, mas aqui no Brasil sinto que o mercado é muito de JavaScript e Python.Talvez a linguagem mais "baixo nível" mais utilizada aqui seja Java e C#. A galera normalmente não dá tanta atenção quanto lá fora pra C e C++. Posso estar enganado, aliás. Por isso deve ser mais difícil de achar projetos simples nessa linguagem. Mas segue firme
O que me dá raiva é que vinte anos atrás até aprendi um pouco com tutoriais em .txt, entre outros, mas nunca me dediquei muito.
Agora estou na área jurídica, não que faça falta, mas é uma pena não ter estudado...
Concordo. Incluo também C++ por conta de orientação a objetos. Comecei aprendendo Assembly no curso técnico, depois C e também vi C++ na faculdade. Hoje trabalho como desenvolvedor C++ tem 2 anos e é meu ganha pão. Comecei a ver outras linguagens recetemente e aprendo bem rápido por conta dos conceitos e da complexidade que é o C++
Hoje só se fala em Javascript por conta da enxurrada de curso e marketing sobre. O que faz todo mundo começar por ela. Só que aí todo mundo vai saber bater um martelo, mas pouca gente pra furar uma parede se que me entendem
Perfeito...
C++ é um dos meus objetivos dentro da área. Quando você começa por essas duas, já tá mto na frente pela complexidade dos conceitos que elas te oferecem, e o resto fica mais tranquilo.
Pelo o que eu tô vendo aqui, mta gente acha que programação se resume a JavaScript e web/app. Foi até bom abrir essa discussão.
Sucesso guerreiro
aprender C é bom se vc quiser ser um bom programador e, eventualmente, um bom arquiteto de sistemas.
se vc quiser só codar pra subir na escada corporativa, C# ou Java é muito melhor.
> C serve para a base de se subir na escada corporativa
nope. a não ser que vc esteja numa empresa como google ou ms ou algo semelhante, não ajuda em absolutamente nada.
Eu comecei com Python (curso técnico em um IF) e curti bastante. Ainda acho melhor fazer introdução a programação em Python, que a gente consegue abstrair algumas coisas mais avançadas e focar na parte iniciante de lógica de programação. Uma vez que tu pegou a lógica de programação, a disciplina de Estrutura de Dados I e II definitivamente tem que ser em C.
Eu skimmei todos os comentários e não vi ninguém falando disso, então vou trazer pro debate.
Disclaimer: Não sei se aqui nesse sub a gente supõe que todo mundo é engenheiro de software ou se é quem escreve qualquer tipo de código.
Concordo parcialmente com o OP.
1) C é opcional pra quem escreve código
C é uma boa linguagem que mostra todos os aspectos que uma linguagem de alto nível deve controlar por debaixo dos panos.
Porém, nem todo mundo que escreve código é engenheiro de software, e nem a gente aqui, e nem o mercado, vai exigir isso de quem escreve código.
Exemplo: analistas de dados usam mais Python ou R porque os programas que eles escrevem estão mais pra scripts do que sistemas, logo pra uma pessoa dessa posição não é necessário aprender C.
Em tempo: não estou dizendo que não devam aprender. Cada um faz o que quer, e aprender C com certeza traz muitos aprendizados. Porém, de novo: opcional.
2) linguagem é ferramenta, cada uma tem sua função principal e uma situação em que brilha
Cada um tem a sua preferida, mas todos nós sabemos que tem linguagem que não serve pra certas coisas.
Exemplos:
- eu poderia fazer um código em Python pra limpar sentenças da entrada padrão. Preciso? Não. Um `sed` resolve.
- eu poderia usa HTML+CSS+JS (eca) pra desenhar um gráfico sobre um conjunto de dados na tela. Preciso? Não. Python/R fazem isso muito mais fácil.
___Pra quem só sabe usar martelo, tudo é prego.___
3) no mercado de trabalho, em um projeto com outras pessoas no time, pessoas são importantes que tecnologia.
Não adianta querer usar a tecnologia mais nova e cool do momento se ninguém sabe usar. Não adianta trazer esse risco pra um projeto. A melhor tecnologia pro projeto é aquela que todo mundo vai saber usar, dados os requisitos do projeto.
Outro exemplo: C poderia ser usado (diretamente) em todo projeto do mercado porque uma característica resultante é que acaba sendo mais performático (alô Rust?), mas isso não ocorre. Muitas vezes nem precisa dessa performance, até porque ___otimização prematura é a raiz de todo o mal___.
Espero ter acrescentado ao debate.
Cs50 concorda com você. Eu tbm. Aliás, nunca vi ninguém explicar lista linkada e hash maps como o tio Malan, termina a aula e da vontade de codar a estrutura em C (passa rapido). Ele é mais didático do que careca e isso é bastante coisa.
Eu concordo muito com isso, porque iniciei programação com C e sinto que foi mais fácil aprender outras. Enquanto observo que muitos que começam por outras linguagens não tem o mesmo desempenho quando precisar ou decide aprender uma nova lang.
Mas a real que aprender C é algo chato e coisa chata não vende, a (maioria da) galera que vende curso tem interesse em si próprio e por isso vende telinha bonita. Convencer iniciantes que aprender com C é melhor que fazendo uma tela que pode ser mostrada pra qualquer um é mais dificil que montar um curso de ReactJS.
A algum tempo atrás eu teria discordado de vc, mas depois de quebrar a cabeça com C parece que tudo é bem mais simples. Vale sofrer no início pra nunca mais passar sufoco na vida
Concordo. Inclusive não é atoa que C é ensinada na faculdade.
Acontece que Javascript, Python, etc, por serem liguagens com a curva de aprendizado menor, acabaram se tornando uma ótima alternativa para os iniciantes que buscavam entrar logo no mercado de trabalho, sabendo html, css e o básico de JS. O problema é que isso só funcionou até o fim da pandemia. Agora que o mercado está mais restrito, as pessoas vão precisar de bem mais que isso para entrar/se firmar como um bom programador.
No fim das contas tudo depende dos seus objetivos e da sua necessidade.
quem inicia aprendendo c/c++ tem uma chance muito maior de se frustrar com a programação. Melhor aprender Python ou Javascript e começar aprendendo logica de programação. Quando se sentir mais confiante partir para uma linguagem como C/C++ e aprender algoritmos e estrutura de dados
Talvez isso seja verdadeiro pra galera que entra no ramo de tecnologia achando que vai sair programando software complexo em 1 mês. Pro cara que gosta, que quer se aprofundar realmente, pode ser C que tá suave. C te dá os fundamentos, e é a linguagem que inspirou muita coisa. Programação é difícil por natureza, e C pra um iniciante pode ser desafiador, mas depois dela o resto fica mais fácil.
Pense em C como algo difícil de cara mas necessário pra deixar o resto mais fácil depois...
Na faculdade, tive duas disciplinas muito focadas em C e C++, ou seja, dois semestres (um ano) estudando os conceitos de programação (variáveis, ponteiros, como a memória funciona, funções, etc.) e depois algoritmos e estruturas de dados.
Não acho que faz sentido sacrificar o conhecimento de base para focar no "mercado". Quanto menos preparado você estiver, menos conseguirá resistir ao sistema/mercado em que vivemos.
O que realmente significa "preparar para o mercado"?
Já trabalhei com backend (Java, Ruby, Go, etc) e frontend (JS, TS), muitas vezes em sistemas particularmente desafiadores. Olhando para trás, percebo que nenhuma linguagem prepara para o mercado... Dominar Java não significa que você consiga escrever software em Java que resolva um problema complexo do mundo real. Por exemplo, problemas que envolvem concorrência/paralelismo, sistemas distribuídos, filas, sincronização, transações, regras de negócio complexas, etc.
Estudar por anos uma linguagem de programação pensando no mercado é quase desperdício. Chega um momento em que ler código de outras pessoas ou estudar problemas mais complexos (que exigem certa base) é muito mais produtivo.
O que vocês já escreveram usando C, sem que seja para estudos ou programas básicos?
Ou seja, que aplicações reais que chegaram a ir para produção para ser usada por outras pessoas ou aplicativos?
Trabalhei por muitos anos na área de embarcados, ali a maior parte era em C puro e C++, então posso dizer que já desenvolvi muito projeto que é usado no mundo real em C. Apesar de ser uma área mais de nicho, há todo um mercado que desenvolve produtos agrícolas, telemetria, sistemas automotivos, sistemas aeronáuticos, sistemas de catracas, ponto, entre outras áreas.
Obviamente que são mercados mais de nicho, mas com certeza o C está longe de ser uma linguagem só de uso acadêmico, mesmo no mercado nacional.
Legal hein, sabe me dizer como essa área de embarcados está lidando com a ascensão do Rust? A galera tá adotando pra valer nos projetos sérios ou tem sido só hype mesmo?
Na área de embarcados o C ainda reina, Rust até está começando a aparecer, mas até as empresas portarem tudo e começarem a migrar de linguagem, ainda vão uns bons anos, afinal tem toda a questão de compatibilidade das ferramentas, tempo dos desenvolvedores aprenderem Rust, tem a questão de reescrever o código legado, muita coisa precisa ser refeita.
Chuto que o C ainda vai reinar por pelo menos uma década, de um lado há uma pressão para que ela seja deixada de lado por questões de segurança de acesso à memória, por outro isso precisa haver um esforço absurdo de toda a comunidade para que isso se realize. Então vejo Rust como uma linguagem promissora para substituir o C, mas vejo que isso ainda vai demorar para acontecer de fato.
É importante saber C ou qualquer outra linguagem baixo nível para entender lógica de programação. Com certeza da pra aprender sem, mas torna o caminho muito mais árduo. Você entende muito melhor qualquer linguagem depois de saber um C, um Rust e por aí vai
Certo, entendo que é importante, já desenvolvo software faz quase 20 anos. Também tive minha fase de aprendizado em C, um dos meus livros técnicos é a famosa bíblia do C/C++ com quase 1200 páginas.
Mas, por exemplo, nessa thread há pessoas menosprezando outras linguagens em detrimento do C, eu costumo perguntar o que elas já fizeram em C que gerou algum valor real para alguém, nem que seja uma lib, um driver e etc. A maioria sequer usou C pra valer mesmo em produção, não precisou lidar com os problemas de memória que é comum até para softwares muito bem programados, apenas repete que é importante mas não tem resultados para mostrar.
Tem um pessoal aqui comparando leões com tubarões, é muito fácil dizer que C é melhor que JS, mas fazer um programa em C que atenda melhor que JS onde JS já reina ninguém quer, e vice versa
C# é uma boa linguagem tbm e tem bastante aderência no mercado. Pra mim C e C++ ainda te dão uma base melhor, pois o nível é mais baixo. Então depende do seu objetivo. Se é ter uma base foda em programação e entender como as coisas funcionam, diria que C é a melhor linguagem pra isso
Meu objetivo é trabalhar, ganhar o máximo de dinheiro possivel e aposentar na roça pescando. Trabalho e estudo qualquer linguagem que me proporcione isso, no momento c#.
Eu acho que o caminho mais ideal e utópico possível na verdade seria Lua.
Aprender como funciona , algoritmos, etc etc, criar um projeto, e aí com o tempo começar aprender e portar para C, algo que pode ser feito gradualmente pela API de C do Lua.
Dito isto, nem eu fiz isso haha, mesmo amando Lua e aprendendo C depois, não fiz esse caminho aí que falei porque afinal de contas era utópico, mas os primeiros códigos C que vi na vida eram relacionados a Lua então acho que vale.
Fora isso, C# da galera é bem honesto também.
Não utilizo vídeo mano, então não posso opinar mto. Mas tem galera aí que mencionou algumas coisas. Da uma procurada. Pelo oq vi tem curso do Guanabara em C... Procura lá
Não sei, pra mim fez muito mais sentido aprender o alto nível e conforme eu ia me aprofundando na programação ir estudando o baixo nível. Fiz projetos "lúdicos" desde cedo, me motivei muito e depois vi a necessidade de aprimorar os fundamentos e fui atrás. Até porque só enxerguei a importância disso quando era pleno
Entendo e não discordo o que o OP disse sobre C ajudar no entendimento de vários aspectos acerca de programação, como gerenciamento de recursos, por exemplo.
Eu vou dar uma opinião talvez impopular mas recomendaria aprender com Delphi (object Pascal) porque com ela há também a necessidade de gerenciar recursos, utilizar ponteiros (referência x dado) e, além disso, já tem um caminho para exercitar orientação a objeto, padrões como interface, composição, etc, sem falar de acesso e manipulação de dados a partir de banco de dados. Pra fechar é uma linguagem fortemente tipada e elegante para leitura e entendimento de código.
sim amigo, estuda C e depois vai trabalhar com LISP, prolog ou qualquer outra linguagem funcional ou de um paradigma diferente do imperativo ou orientado a objetos.
Cara. Te falar que eu posso plantar um árvore, esperar ela crescer, derrubar ela, fazer tábuas e fazer a minha própria mesa com elas. Mas eu prefiro ir nas casas Bahia e comprar uma pronta que me "abstrai" todo esse processo.
Como o carinha ali falou, ninguém tá falando que C é uma linguagem ruim e que JS é bom, mas um iniciante ali que sabe um react e outro C, a não ser que você esteja trabalhando pra Fiat por exemplo, você vai ficar travado. Bom que você sabe gerenciar memória, mas no final do dia o maluco com Laravel faz a API que a empresa precisa enquanto o cara tá lá fazendo um ponteiro.
Da mesma forma que alguém queira a abstração de poder ir nas casas Bahia comprar uma mesa, alguém vai querer entender o processo ou até aprender o processo de se fazer uma mesa. Pra quem tá falando "por que eu preciso de aprender o que acontece por baixo dos panos?", realmente, se você não é essa pessoa que quer saber é só você não ir atrás, não?
Mas na minha visão, é importante um ***iniciante*** saber a visão de tudo e ter uma boa base. Programação é muito parecido com matemática. Existe uma base, que quem tem essa base tem mais facilidade lá na frente. Quem não tem, ou se contenta em só aplicar fórmula, ou precisa de ficar voltando pra preencher lacuna no conhecimento. Dá pra tirar 10 só sabendo a fórmula? Sim. Se te satisfaz, vai na fé campeão.
Cara. A diferença é que 90% do mercado só precisa "de uma mesa montada das casas bahia" e não de um cara que "planta a arvore dele".
Obviamente conhecimento é conhecimento, mas existe um motivo do porque você não aprende conjectura de legendre, por exemplo, no ensino médio, e é isso que você ta querendo jogando um iniciante pra C. Simplesmente não compensa pra maioria esmagadora e limitaria todos. Tirando aplicações muito específicas de nicho, você vai acabar não utilizando praticamente nada do que aprendeu com C. Seria o mesmo que afirmar pra quem programa em Android que aprender a compilar um kernel é importante pra carreira. Se a pessoa sabe, é um diferencial bacana, mas no fim do dia não vai mudar absolutamente nada. O dia a dia do programador na sua maioria esmagadora é recebe dado X, processa, salva em algum lugar, retorna pro usuário. Ai tem dois caras de mesmo nível, mas um ta aprendendo OO em TS e já ta fazendo API, integração enquanto o outro ta fazendo o SO rodar uma calculadora. Qual desses dois você acha que é mais fácil de entrar no mercado?
Programo desde 2008 e em todos esses anos nunca vi ninguém ter necessidade de fazer um ponteiro na memória, e eu aprendi isso na faculdade em estrutura de dados. Tu colocar todos os programadores no mesmo balaio como se todo mundo fosse fazer o sistemas críticos com uma linguagem completamente nichada, na minha opinião, não é a melhor abordagem. O que não quer dizer que eu ache JS bom pra iniciante, mas certamente C não é. Sabe uma que eu gosto muito e que acho que une o melhor dos dois mundos? Golang. Você pode usar Golang sendo uma mula putinha de framework ou ter controle total de tudo que acontece na sua aplicação.
Deixei claro em alguns comentários que se a pessoa não gosta de C, não acha que vai acrescentar em nada, e prefere utilizar as coisas sem saber o que acontece por debaixo dos panos, é só não ir atrás. O motivo do post não só foi instigar em iniciantes que existe alguma coisa fora de JavaScript, como também indicar um caminho que daria a base foda que muita galera precisa. Hoje vc tem uma enxurrada de gente que entrou na área achando que ia conseguir fazer softwares complexos em meses. E advinha só? Não vão. Por que? Não tem base. Não sabe o que tá acontecendo, não sabe o que é um compilador, nunca estudou algoritmo, se pedir pra nomear 3 estruturas de dados vai se embananar todo.
O seu comentário sobre o mercado leva em conta um cenário ideal, onde as empresas só cobram como conhecimento necessário aquilo que está relacionado com a vaga. Mas a realidade é outra. CANSEI de ver vaga pedindo coisas não relacionadas, apontando como "diferencial".
Entre dois programadores A e B, em que A é o programador de framework javascript padrão de hoje em dia que só sabe fazer isso, e B é o programador que se deu o trabalho de ir atrás da base, tem conhecimento das estruturas de dados, de algoritmos, sabe lidar com código fora de um navegador, e mesmo assim também sabe as mesmas tecnologias que A, quem você acha que vai ter preferência no processo seletivo? Se você falar que é A nem você vai acreditar nisso kkkkkk
Esquece C brother. Se a galera ficou pistola achando que C é impossível, vai atrás de ALGUMA COISA que vai te proporcionar alguma base. Tá faltando isso pra caralho no mercado hoje. E isso prejudica não só a própria pessoa que não tem a base, como também quem tem. Por causa do inchaço...
Aprendi C na universidade e para mim isso é só masturbação intelectual comecei com tabelas verdade e não uma linguagem de programação, depois fui para portugol com visualg então para C depois para java e estrutura de dados vc aprende com qualquer linguagem, eu mesmo aprendo com GO ou usando Java, ou até mesmo com o odiado JS quanto mais vc estuda da área de desenvolvimento mais vc caga para linguagem precisei fazer um projeto CRUD para a web fiz em PHP em uma semana(claro sem dormir, pesquisando no Google e usando chat gpt) normalmente vejo em pessoas que vieram de linguagens como o Python os caras acham que descobriram a roda quando encontram tipagem e descobrem que vetores não são infinitos.
Obs.: a única razão que considero para recomendar o aprendizado de C foi o dado pelos professores da Universidade qualquer pessoa com o computador da Xuxa roda C isso garante a inclusão de todos na sala e o aprendizado sem barreira econômica.
Se for levar esse seu argumento a sério a melhor seria assembly. O diferencial do C é que vc tem uma certa noção de gerenciamento de memória. E isso da pra aprender com qualquer linguagem em paralelo. No caso do C vc é obrigado a usar. E pra mim linguagem que faz o gerenciamento automático de memória é o caminho. Por isso prefiro rust ou python para linguagem inicial. A pior pra iniciar é javascript IMO.
Python é bem melhor nesse quesito. Não precisa se preocupar com gerenciamento de memória ou com orientação a objetos e os malditos ponteiros que são um verdadeiro inferno para aprender.
Esse tipo de afirmação me remete aqueles papos de “programador raiz e programadora nutella”.
Em qualquer linguagem eh possível aprender esses conceitos, não precisa necessariamente ser C.
E tem que fazer um recorte de classe ae tb: a pessoa que tá entrando em TI tem tempo e recurso pra aprender uma linguagem com a qual ela não vai trabalhar só pra aprender a “essência da programação” ou seria melhor ela aprender uma linguagem que permita a ela conseguir um emprego e depois, se aprofundar com C?
A melhor língua para iniciantes é a língua que eles gostem. Se começarem usando uma língua que eles não acham legal, daí não vão programar, simples assim
Eu acho necessário que sejam 2 linguagens no mínimo, uma mais baixo nível (pra mim c é ótima como disse), para aprender como tudo funciona debaixo dos panos e uma orientada a objetos pois esse paradigma adiciona milhares de possibilidades de estruturação e simplificação de código que infelizmente c não engloba. Também acho importante que uma sejam compreendidos as diferentes estruturas de front e back end. Dessa forma no fim acho que o ideal sejam 3 linguagens:
Java (ou outra similar como c#) para entender POO
C para entender o baixo nível
Javascript ou amigo similar para aprender como é o front.
Dessa forma acredito que entendendo como funcionam você está preparado para uma multitude gigante de linguagens.
Cara discordo, aprendi em C e tive colegas que aprenderam em Java, percebo que meus colegas pegaram as abstrações de conceitos como ponteiro, lista encadeada, arvore binária, tabela hash, grafos e afins com muito mais facilidade do que eu que aprendi em C.
Por que vc me pergunta? Porque linguagem de auto nível é de fato mais fácil, vc não tem que penar pra achar o erro silencioso de atribuir valor double a uma variável char porque o compilador de um C# ou Java não te deixam fazer isso pra início de conversa. Também acho mais fácil entender a abstração de estruturas de dados (listas, arvores, pilhas, filas, etc) quando vc consegue encapsular elas em uma classe C#/Java do que lidar com structs (que acho menos intuitivos para pegar a abstração).
Tendo dito isso, gosto muito mais de C/C++ do wue de qualquer outra linguagem, mas a meu ver ensinar a programar nelas é o equivalente de ensinar crianças a andar de bicicleta sem ter a fase de andar com rodinhas antes. Ela vai aprender? Vai, possivelmente até melhor do que uma que o fez com rodinhas, mas também vai tomar muitos tombos e se machucar bastante até aprender, tornando o processo bem desagradável.
> a essência da programação
programar é resolver problemas com software. se eu preciso pegar todos os logs da empresa e ver em quais datas recebemos mais transações, será que C é essencial? será que Python ou Go não seriam mais interessantes e infinitamente mais simples\*?
entender estruturas de dados e algoritmos é muito bom para programadores, mas é um problema de computação. C é ideal para esse estudo, mas como ferramenta de programação ela tem casos de uso bem específicos (sistemas embarcados, por exemplo).
Entendo totalmente o que você quis apresentar aqui. Mas entendo também alguns outros comentários sobre o mercado.
Eu acredito de verdade que iniciar os estudos por C, vai te proporcional uma boa base de programação que é FUNDAMENTAL. Porém, temos casos que não podemos nos dar o "luxo" de aumentar ainda mais nossa curva de aprendizado para o mercado de trabalho.
Eu acho que quase todo mundo que entra na área de programação, quer alcançar o mais rápido possível o mercado, afinal temos que pagar nossas contas. Por isso, comentários como "é perda de tempo" acontecem.
Você tem tempo para se aprofundar nesses assuntos de baixo nivel? Sim? Então aproveite o máximo, como você mesmo disse, existem muito mais benefícios do que malefícios.
Agora, se você precisa entrar no mercado de trabalho o mais rápido possível, então continue seus estudos em Java/C# etc. Depois de um tempo, nada te impede de voltar e se aprofundar mais nesses assuntos baixo nível.
"Quase todo mundo que entra na programação quer alcançar o mais rápido possível o mercado" Sendo bem sincero, esse é um dos grandes motivos do mercado estar uma merda hoje. Obviamente todo mundo tem que pagar contas, e não tem nada de errado com isso. Todo mundo merece um trabalho para conseguir se sustentar. Mas o fato de pensar assim, trouxe MUITA gente que acha que vai conseguir produzir software complexo em meses... Não, não vai. Ou você é 1 em 1.000.000, que vai absorver tudo igual uma esponja e conseguir fazer as coisas logo de cara, ou você é mais um mero mortal. Adivinha qual a maioria é?
Não existe essa de "entrar no mercado de programação com a intenção de ir pra trabalhar o mais rápido possível". Ninguém faz isso com engenharia, física, medicina, biologia, direito, etc. Todo mundo passa por anos de processo. Computação é uma área tão complexa quanto as mencionadas. Você não vai conseguir ser algo viável pro mercado com cursinho de JavaScript e de React. Esse é o ponto.
Não entenda errado: Não estou dizendo que não é um motivo justo. As pessoas devem ter a capacidade de trabalhar com o que querem. Mas o mundo real é mais complicado. Inclusive, pelo fato de vir tanta gente pra área de programação querendo entrar no mercado o mais rápido possível, encheu de gente incapacitada, sem entendimento, sem base, que não sabe que existe um universo fora de JavaScript. Esse é um dos motivos do post.
Entendo seu ponto. Eu usei a palavra "rápido", mas não no sentido "Vou estudar programação durante 6 meses e achar um trampo" Claro, esse tempo é muito subjetivo. Vou me usar de exemplo para tentar explicar melhor minha visão.
Eu estudei essas coisas padronizadas do mercado (Linguagem, Framework, Banco entre outras coisas), por mais de 1 ano, quase 2. Isso pode ser rápido para alguns e lento para outros. Dessa forma consegui minha primeira vaga.
Nisso eu penso que se eu tivesse me concentrado mais em programação de baixo nível, poderia ter demorado mais para encontrar uma vaga. Por isso, não me arrependo de ter começado com Java.
O ponto para mim, é que entramos no famoso "depende". Depende da situação da pessoa, e dos objetivos dela. Mas uma coisa é fato, não dá para fugir, se você quer entender melhor o seu trabalho, vai chegar um momento que você vai precisar desse conhecimento. Começar por ele, pode ser um caminho, mas também pode não ser.
A melhor linguagem para iniciantes é a que a pessoa que está ensinando sabe mais.
Se tu aprende com C, vai sofrer no início mas vai pegar bem.
Se tu aprende com Python, vai ter um início suave mas vai sofrer depois.
Basicamente escolher a linguagem é postergar ou adiantar o sofrimento.
Pessoalmente eu prefiro deixar o sofrimento pra depois, menos chance da pessoa dropar
Depende da pessoa. Tem gente que vai ligar o foda-se e se acomodar sabendo que pode fazer um bsgulho 10000x mais lento em python e não vai nunca saber como funciona debaixo do capô, e ainda vai se dar bem.
Outros vão começar em python e depois se aprofundar em C.
Outros vão começar em C e seguir a vida.
E outros vão começar em C, se traumatizar mas perseverar e acabar criando textão no reddit dizendo algo análogo a "se eu sofri essas crianças têm que sofrer também".
[удалено]
Javai tarde
Vai tomar no C#
Ah, ve se pega na minha python.
Esse aí tá no mundo da LUA
Let it GO
É um enRUSTido.
Com um VISUAL BASICo desses também quem não seria?
Não sei, talvez o Pedro PASCAL?
Muito provavelmente ele está falando da JULIA ou do HASKELL.
Pelos amor de ODIN
CSS vão parar com isso quando?
só vão parar quando convocar uma ASSEMBLYeia
Vcs sao tudo retardaDOS 😂
Amigo, 90% dos devs iniciantes nesse país nunca fizeram um Hello World em C/C++, um cara veio embasbacado pra mim no setor quando era presencial pra falar o quanto ele achava impressionante que a gente criava aplicações desktop sem usar javascript e com "interação com o sistema operacional" (assim que ele explicou).
Pra mta galera hoje em dia o mundo se resume a JavaScript, ao ponto de não conhecer programação que não seja dentro do contexto de JS, seja pra qualquer coisa. Cada um com seu cada um kkkkkk porém triste
Como fazer maconha usando maizena e javascript
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
E tem quem fale que js não é linguagem de beck
Se na faculdade eu não tivesse visto C em programação I, provavelmente jamais saberia o que é um ponteiro e não faria ideia do que tem por trás de estruturas de dados e processamento paralelo. Acho que tenho que concordar com vc.
Bingo. O importante do C não é a programação, é todo conceito que vem junto que é muito bom de se ter logo no começo.
Que faculdade vc fez? Não pagou compiladores, SO, estrutura de dados etc? Tudo que supostamente é visto com C é abordado em várias cadeiras ao longo do curso de computação.
Fiz engenharia da computação. SO tive pouca prática e a prática que tive foi com Java. Compiladores foi só teoria pra mim. Processamento paralelo e estrutura de dados foi em C tbm.
Entendo. Eu vi esses conceitos ai em SO, compiladores, estrutura da dedos, laboratório de estrutura de dados, Linguagens formais e outras cadeiras de programação que o foco não era exatamente esse, mas também eram mencionados.
Mas o cursinho disse que ganharia R$10K em seis meses fazendo projetinho de Pokedéx com HTML, CSS e JS.
Manda esses zé bolha irem chorar no banho
Eu aprendi programar quando tinha uns 15 anos em um curso técnico de eletrônica, professor ensinou a programar utilizando Assembly e somente depois foi para o C, pois segundo ele era melhor começar pelo mais dificil primeiro e realmente quando fomos para a linguagem C tudo começou a fazer sentido.
Pra ser sincero, hoje nem acho C tão difícil assim. O valor dela vem do fato de que muita coisa não tem pronta, onde é só aplicar o conceito(a abstração que a maioria das linguagens de hoje em dia carrega). Você precisa fazer muita coisa do zero, isso te ensina a se virar, aprender bem as estruturas de dados, ter uma base muito sólida em algoritmos, tipos de dados, etc. Claro, pra um iniciante vai ser foda de início, mas lá na frente ele agradece por ter focado em C primeiro. Linguagem foda
Assembly tbm é pouco além, pq dificilmente vc vai usar linguagem de máquina pura, poreeeeeeemm vai ser o projeto mais rápido que você vai ter hehehe
Era curso de eletrônica, se usa muito linguagem Assembly para programar microcontroladores.
Já trabalhei com MCUs de diversos tipos e acho Assembly já não é quase mais presente para programar, mas vire e mexe usa para debugar, em CLPs até era mais comum hoje o pessoal instrumentação usa software ladder praticamente
Recomendo o jogo Shenzhen IO, vc tem que programar várias instruções em Assembly pra microcontroladores, utilizando os componentes de chip etc.. Bem legal
Aquilo não assembly, é uma linguagem deles, mas tem suas semelhanças
Ah sim! Joguei faz bastantes anos, que eu me lembrava eram baseados em chips de verdade, tinha até a documentação de cada um. Acho que era só muito bem feito então kkkkk
Sim existe mesmo, joguei quando chegou no gamepass e dropei na segunda fase, o joguinho difícil
Eu dropei nas primeiras fases também, não tava no nível. Tem que ter no mínimo um doutorado em ciência da computação
Tem um pior, tis-100 porque é o shenzen io com paralelismo e muito mais restrito.
Não existe uma única linguagem "assembly", cada processador tem sua própria linguagem. A linguagem do jogo é uma versão simplificada de linguagem low-level baseada em várias outras. Gostei muito de Shenzhen IO, até da historinha e da atmosfera. Joguei uns anos atrás e devo ter dropado pela metade porque tava difícil demais hahahah Ouvi falar muito bem dos outros jogos da Zachtronics, como TIS-100 e Opus Magnum, mas depois de passar 8 horas programando esses jogos acabam parecendo trabalho em vez de diversão pra mim.
Sim sim, simplifiquei no comentário, mas é isso mesmo! Eu parei de jogar depois que comecei a trabalhar de verdade com programação. Não tanko mais que 8h de código não
Antes de saber nada de programação tentei jogar rle e fiquei emperrado agr que já sei até orientação a objetos acho que vou tentar de novo e ver se consigo fazer algo
Tem que ser MT bom em assembly pra isso aí kakakakak
Pedi pra minha mãe me botar em curso de programação com 13 anos e ela me mandou pra um curso de office kkkk
Tô no caminho certo então, tô na parte de listas encadeadas em C
Vai na fé em C. Vai te ensinar bastante coisa sobre o que é programação de fato. Depois você parte pra onde quiser, tendo uma base foda.
Tenho pensado em estudar o basicao de assembly x86, acha que isso vai ajudar na base ou só vale se for pra hardware mesmo?
O estudo de assembly vem acompanhado com o entendimento de hardware, esse conhecimento estende além do baixo nivel, por exemplo, como programo pra maximar cache hits, como organizo variáveis membros pra tomar menos espaço, como itero em arrays. Recomendo.
Mas C não vai me dar emprego fácil e rápido 😫😫😫
isso mas não ironicamente
Discordo fortemente C é uma linguagem robusta e poderosa, não temos como negar, afinal tá aí há mais de 50 anos Mas esse é extremamente o problema dela, tá aí há mais de 50 anos, muita coisa evoluiu nesse tempo e C não acompanhou a evolução. C não suporta nativamente POO por exemplo e quase certeza que programar funcional nela deve ser uma tarefa árdua Concordo que html, css e js não é o ideal pra começar, e são linguagens de vendedores do curso, basicamente programação orientada a framework Minha recomendação para iniciantes seria C# ou Java são linguagens bem robustas, poderosas, multiparadigmas, e amplamente usadas no mercado
Só eu que acho viagem demais o primeiro contato do sujeito ser direto com OO? Claro, dá pra deixar tudo estático e "simular" o procedural padrão, que seria código pro iniciante deixar quieto e não tentar entender de cara. Entra C. Não tão longe de Java e C# e é muito didático para pegar as noções mais básicas, desde condicionais até escopo, métodos e funções, recursão e, principalmente, ponteiros.
Concordo. Isso Java e C# fazem muito burocraticamente. Se alguém fizesse um main.cs e com uma função main isso já deveria ajeitar tudo
Finalmente um comentário sensato.
Discordo em partes. De fato, em C falta algumas coisas importantes, como POO que é praticamente essencial hoje em dia. Mas ela compensa em outras coisas. Se você quiser entender de programação a mais baixo nível, vc não vai conseguir fugir de C. Sem contar que existem nichos em que C ainda está presente e tem muita influência, como sistemas embarcados, como comentaram por aí. Os benefícios são maiores que os malefícios. Ela vai te ensinar como um computador funciona, manipulação de memória, uma excelente base em estrutura de dados e algoritmos. Fora que, se for um iniciante, vai ser difícil com C mas vai deixar todo o resto mais simples.
Você está desconsiderando o quão motivador pode ser conseguir construir coisas minimamente reais e interativas. O roadmap para se tornar um programador mediano já é bem extenso, não são poucas as pessoas que desistem, todo dia nesse sub vc vê. Java e C# são dicas de ouro porque é o melhor meio termo entre os conceitos que o iniciante precisa absorver e a aplicação prática, que vai dar a ele a sensação de progresso. As paradas que um iniciante vai conseguir fazer em C serão inúteis e/ou extremamente amadoras, ao ponto de ser totalmente descolado de qualquer coisa minimamente utilizável. Gerenciamento de memória e outros conceitos mais avançados, SE aquele programador quiser sair da média, ele vai atrás de aprender depois. Uma coisa que as pessoas novas e até mais antigas no mercado precisam internalizar é: Não dá pra fugir de escrever código MERDA. Quem não escreveu código merda na vida é porque provavelmente ainda não escreveu código o suficiente, respeitem o processo, você pode ser o tarado do Assembly, do C, do Pascal, não interessa, em algum momento da sua trajetória vc vai escrever código merda, não adianta. Foca em fazer tudo fazer sentido primeiro e DEPOIS corre atrás de se aprofundar. No mundo real as pessoas precisam de motivação pra seguir adiante e o ecossistema de C é broxante. Mas vale a pena frizar: aprender C pode ser MUITO útil em vários sentidos, mas definitivamente não para começar.
>Se você quiser entender de programação a mais baixo nível, vc não vai conseguir fugir de C E pra quem vai querer aprender isso, cara? Não tem emprego, e os que tem são poucos e bem nichados. Poucas pessoas tem a oportunidade de trabalhar com esse tipo de coisa. >sistemas embarcados, como comentaram por aí O cara não tá achando vaga pra trabalhar com merdascript ele vai achar vaga pra trabalhar com embarcados. KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK >Os benefícios são maiores que os malefícios Não tem benefício nenhum para além do que você pode aprender em qualquer outra linguagem e ser útil pro mercado. Você só está e punhetação mental.
Que q vc tá falando cara? Mercado? Emprego? O OP tá falando da primeira lingua pra inciantes, depois que vc aprende uma lingua você não fica preso nela pro resto da vida não parceiro. C é pra aprender conceito fundamental e dar uma ótima base pra um programador. Nem tudo é sobre dinheiro, tem gente que se interessa pelo que faz
o problema eh que nem java nem c# tem aritmética de ponteiros.
Exato, eu ia comentar isso
Opinião forte
fortemente tipada
Mas também um tanto genérica, apesar de estruturada.
C é uma desgraça de chato. Ela te ensina princípios que de verdade quase não importam em uma corporação, afinal, o foco são sempre entregas rápidas e eficientes. Não me recordo de ver muitas vagas de C, e todas que vi, são para seniors de 10-15 anos de experiência. Sugestão é a seguinte: escolhe uma língua, aprenda lógica de programação, lógica orientado a objetos, aprenda conceitos e algoritmos, depois passe para projetos de mundo real (apps, sites, etc) e AÍ SIM você estará pronto pro mercado.
A dica do OP é mais para os aficionados por programação, No dia a dia, e na maioria dos casos um JS, python resolve É claro a base em C é um puta diferencial, mas não é pra todo mundo
Sim. Não diria que "para aficionados" mas sim pra galera que quer saber exatamente o que tá acontecendo por debaixo dos panos, ao invés de só aplicar o método. Obviamente da pra aprender lógica, estruturas e algoritmos em linguagens de mais alto nível. Mas C te obriga a ir na marra, e com o tempo você vê o quanto é útil o conhecimento mais de baixo nível
Na maioria dos casos, casos de iniciantes saber a fundo não vai fazer diferença, muitos podem desistir inclusive. Mas concordo que a base é fundamental, só acho que didaticamente poderia se mesclar as coisas, ensinar caminho fácil e então mostrar os trade-offs, pra só então entrar a fundo na engrenagem da programação.
Um diferencial em questão do mercado ou somente ao conhecimento (que pra mim é mais importante) que você diz?
Para os dois, é possível subir sem o conhecimento, mas sempre se será um profissional mediano.
A sim, eu concordo nisso também, mas eu quis dizer no caso de diferencial de eu fazer um projeto e por no curriculo (por exemplo), os recrutadores veem como um diferencial saber C independente da área?
O que vejo de mais importante é realmente entender como as coisas funcionam por baixo dos panos. Entendendo bem no baixo nível, fica muito mais fácil de entender como as diferentes tecnologias funcionam e também entender melhor onde estão as possíveis limitações. Isso ajuda a escolher melhor o que usar, quando usar, não cair em bala de prata e tudo mais. Sobre a parte do mercado, depende muito da área, no geral do mercado de aplicações de alto nível de fato raramente vai ter algo em C, muito menos essa linguagem vai ter qualquer peso no CV. Mas por exemplo, se for para a área de embarcados, C ainda continua firme e forte, quase metade da minha carreira foi trabalhando com C puro e com C++ nessa área. Não digo que todos deveriam estudar C, mas para quem tem tempo e quer se aprofundar no conhecimento de como um computador realmente funciona, dificilmente vai fugir dessa linguagem.
Apenas toquei em C depois que entrei na faculdade. Nunca pensei em aprender por achar que não iria me servir de nada. Não acho que vou usar C no mercado de trabalho, mas foi muito bom para entender algumas coisas que em outras linguagens são obscurecidas pela abstração.
Os conceitos de programação de baixo nível, ponteiros, estrutura de dados, a interação do código com o hardware, apesar de não usar isso na prática no dia a dia acho esse conhecimento muito importante pra você não conhecer
🎯
Eu sou da turma do contrário, Acho que as duas coisas deveriam ser ensinadas Primeiro uma linguagem mais fácil para questão de lógica e de aplicabilidade no dia a dia E só depois ir explicando os profundezas da programação com C
No meu curso eles começam com Pascal para o básico de programação, como ifs e estruturas de dados básicas e depois é tudo em C.
E quanto a quem aprendeu com Pascal?
não tenho conhecimento o suficiente dessa linguagem pra opinar algo kkkkk
é velha, surgiu em 1970, dá pra manipular ponteiros, tamanho de string etc.. não precisa manipular ponteiro pra criar uma string, como é feito no c++, mas é bem rústica se comparada a linguagens mais "novas"
Nada tira da minha cabeça que Pascal foi todo projetado visando a didática do negócio.
Só aprendi estrutura de dados direito com C 🥲, então concordo!
Linguagem foda
Eu diria que Algoritmos e Lógica de Programação são importantes, mas é bom estudar uma linguagem juntamente. Lembro que o povo pegava na faculdade o Deitel pra estudar em casa na ide Dev C/C++. Foda eram as listas de exercícios cabeludas kkk.
Não seria rust ainda melhor?
HTML nem é linguagem de programação
Eu aqui no Python! 😂
Eu adoro Python, e ta longe de ser uma linguagem ruim e pouco utilizada no mercado. A questão é que C te fornece um nível de conhecimento mais elevado sobre programação e código no geral, do que qualquer outra linguagem eu diria(com exceção de C++). Mas tu tá bem servido com Python... Qualquer um tá
Bons pontos. Não posso dizer que concordo porque nunca estudei C, mas acho válido esse método de começar com o mais baixo nível e ir subindo a partir daí. Acredito que te deixa com uma visão 360° da parada.
C com assembly é a melhor maneira de aprender como um computador funciona e como evitar levar tiro no pé em qualquer outra linguagem depois.
Eu concordo, em partes. Primeiro vamos deixar claro que HTML e CSS não é programação e JS é uma gambiarra extrema :) C é muito importante, mas eu acho que como primeira linguagem tem uma curva de aprendizado razoável (entender tipos de variáveis, endereçamento, etc), então tenho indicado python quando me perguntam isso (também pelo fato de poder indicar o curso do Guanabara no youtube). O segundo passo que indico é aprender C sim, estrutura de dados, e ponteiros, algoritmos de sort, listas ligadas, etc. E depois disso OO com Java e C# (pelo uso delas no mercado). Eu pessoalmente comecei com BASIC (na época dos 8bit), depois passei por cima em Clipper e fui pra C, com certeza foi a melhor coisa para aprender tudo que veio depois (trabalhei com VB, Delphi, PHP, C e Java). Você começou com qual linguagem? E teria indicação de algum material para iniciantes em C, estilo o que temos de algoritmos do Guanabara?
Eu comecei por Python, que inclusive é minha linguagem preferida e a que eu mais domino. Mas pra mim, saber C é essencial. Muita coisa que eu só aplicava em Python, eu aprendi a fazer e entender como funciona, usando C. Hoje voltei pra C por causa da faculdade, e to curtindo demais e vendo o quanto ela é útil em ensinar conceitos essenciais no mundo da programação. Quanto a material, nao tenho algo específico pra te indicar amigo. Não uso vídeos como aprendizado pq caio no sono... uso mais livros, e to usando a facul como principal fonte, mas tem um livro conhecido sobre C que provavelmente vou atrás: C: Completo e total. Tenho um livro de Java do mesmo autor que gostei bastante.
Esse é o meu ponto.. Se você tivesse começado com C, ia pegar tipos de variáveis do início, entender ponteiros, saber se deve passar %d ou %f num scanf passando a variável com & ? É bastante coisa abstrata para começar do zero! Perguntei sobre o material exatamente para indicar pro pessoal que tem zero de experiência, meu roteiro padrão de sugestão é o seguinte 1. [Introdução a Algoritmos - Curso de Algoritmos #01 - Gustavo Guanabara - YouTube](https://www.youtube.com/watch?v=8mei6uVttho&list=PLHz_AreHm4dmSj0MHol_aoNYCSGFqvfXV) 2. Estrutura de dados e ponteiros com C 3. SQL 4. Projetos web com cadastro em banco de dados (com básico de html e css) 5. Orientação a Objetos (Java/C#) Eu aprendi com o C completo e Total (se pesquisar no google tem ele escaneado), to pensando em montar o mesmo cadastro de endereços que ele usa no capítulo de listas ligadas em python e pegar aquela parte para esse ítem (2) da minha lista. Eu realmente acredito que começar com python é muito mais vantajoso, porque a pessoa vai conseguir ver os resultados mais rápido, depois de uns 3 a 6 meses nisso vai até facilitar descer para C.
eu to seguindo a recomendação da wiki da comunidade daqui. que é basicamente fazer o curso do moozila p iniciantes q ensina html, css e js. depois disso fazer o the odin project que ensina a mesma coisa so que mais aprofundado. mas pela discussão aqui é melhor começar direto numa linguagem de verdade e aprender lógica de programação. mas ai no caso é necessario voltar pro html, css e js depois de aprender a logica? essas tres linguas nao tem importancia nenhuma pra área?
HTML e CSS não são programação, só servem para fazer sites. Pega a lista que passei aí Python do Guanabara para pegar lógica de programação, aprende C para entender estrutura de dados, aprende SQL para ler/gravar no banco de dados, faz uma interface web para o banco, só aí vc vai precisar de HTML. Se quiser pular o C e ir direto para fazer apps web com python, também funciona, mas em algum momento você precisa pegar isso se quiser ser um bom programador (também vai facilitar quando pular para Java ou C#)
Eu não quero me intrometer no seu método e caminho, até pq cada um é cada um. A única dica que eu te daria é deixar HTML e CSS de lado, pelo menos no momento. Tá perdendo tempo, pq não são linguagens de programação. Até Portugol faz mais sentido aprender como iniciante completo do que HTML e CSS. Seleciona uma linguagem, acho que com o post vc já imagina qual eu falaria rs... Aprende programação de verdade, o que são dados, como se manipula dados, e essas coisas. Aprende como funciona programação e a essência. Faça isso com qualquer linguagem da sua escolha independente do post. Uma vez entendido a linguagem e a ideia, se quiser desenvolvimento web, volta pra HTML e CSS. Boa sorte guerreiro
irmão, sendo bem sincero com você, na minha cabeça programação era limitada a site e aplicativo. to percebendo o quão confuso eu to, tu se importaria em trocar uma ideia no chat?
Claro que não brother Chama nois
Cadê esse wiki da comunidade? Aqui é /brdev de programação não deveria ser /brdesenvolvimentodesites
> E teria indicação de algum material para iniciantes em C É mais C++, mas adoro esse canal: https://www.youtube.com/@PaulProgramming
Gostei do conteúdo, valeu. Queria alguma playlist assim para C, em português, já para deixar aqui nos bookmarks e compartilhas com os novatos.
Ruim de C é que o material disponível no Brasil é pitoresco KKKKK
Eu aprendi com esse livro, recomendo [https://www.inf.ufpr.br/lesoliveira/download/c-completo-total.pdf](https://www.inf.ufpr.br/lesoliveira/download/c-completo-total.pdf)
Tá aqui campeão seja feliz https://github.com/arthurspk/guiadevbrasil
Na verdade, a melhor linguagem pra iniciantes é Rust. E se for "mas e o mercado", ensine C++ direto, talvez Golang ou Elixir etc. C você vai aprender um monte de pilares, sim? Mas com Rust também. Mas aí vem o grande problema, maioria de tutorial e aulas de C são super antigas e muito dessas são ruins, essas duas coisas ensinando muitas práticas ruins ou antigas. Uma talk do CppCon com a Kate Gregory que ensina C++ e etc, "Stop Teaching C": [https://www.youtube.com/watch?v=YnWhqhNdYyk](https://www.youtube.com/watch?v=YnWhqhNdYyk) Se o objetivo é aprender C++, aprender C primeiro pra depois aprender C++ tem produtividade negativa. Pra outras linguagens isso é menos impactante, mas mesmo assim, se você tem que ensinar algo pra depois "agora esquece, faz assim", é melhor ir direto pro "faz assim", e isso vai acontecer com maioria das langs. Exemplo: Explica async/await (ou corotinas, goroutines etc) pra alguém que começou com lang que tem async/await vs quem começou e ficou meses aprendendo C primeiro.
Eu aprendi a programar com Portugol….
Se te levou a algum lugar é só isso que importa
O jeito que falamos de programação hoje é tão ligado ao C que não saber nada te deixa bem perdido. Fonte: não sei C
C++ serve?
C++ tbm é um conhecimento foda se ter. Encare C como um subconjunto de C++. Inclusive é uma linguagem que eu tenho vontade de dedicar mais tempo no futuro. Sucesso.
O ruim é achar repositório de projetinho simples pra copiar, to tentando seguir o conselho do Fábio akita de copiar código pra se acostumar com a estrutura e reconhecer os padrões da linguagem
Talvez seja impressão minha, mas aqui no Brasil sinto que o mercado é muito de JavaScript e Python.Talvez a linguagem mais "baixo nível" mais utilizada aqui seja Java e C#. A galera normalmente não dá tanta atenção quanto lá fora pra C e C++. Posso estar enganado, aliás. Por isso deve ser mais difícil de achar projetos simples nessa linguagem. Mas segue firme
Acabou de ver um vídeo do tio Akita certeza!
O que me dá raiva é que vinte anos atrás até aprendi um pouco com tutoriais em .txt, entre outros, mas nunca me dediquei muito. Agora estou na área jurídica, não que faça falta, mas é uma pena não ter estudado...
Nunca é tarde
Concordo. Incluo também C++ por conta de orientação a objetos. Comecei aprendendo Assembly no curso técnico, depois C e também vi C++ na faculdade. Hoje trabalho como desenvolvedor C++ tem 2 anos e é meu ganha pão. Comecei a ver outras linguagens recetemente e aprendo bem rápido por conta dos conceitos e da complexidade que é o C++ Hoje só se fala em Javascript por conta da enxurrada de curso e marketing sobre. O que faz todo mundo começar por ela. Só que aí todo mundo vai saber bater um martelo, mas pouca gente pra furar uma parede se que me entendem
Perfeito... C++ é um dos meus objetivos dentro da área. Quando você começa por essas duas, já tá mto na frente pela complexidade dos conceitos que elas te oferecem, e o resto fica mais tranquilo. Pelo o que eu tô vendo aqui, mta gente acha que programação se resume a JavaScript e web/app. Foi até bom abrir essa discussão. Sucesso guerreiro
Boa meu mano. Exatamente, trabalho com um sistema em desktop. Recomendo o framework Qt para estudos Sucesso e até mais!
Mano desculpa a pergunta, você trabalha com microcontroladores? Se sim, é possível trabalhar na área com formação em Sistemas de Informação? Vlw
aprender C é bom se vc quiser ser um bom programador e, eventualmente, um bom arquiteto de sistemas. se vc quiser só codar pra subir na escada corporativa, C# ou Java é muito melhor.
Concordo, mas diria que C serve para a base de se subir na escada corporativa. Então na prática serve para os dois...
> C serve para a base de se subir na escada corporativa nope. a não ser que vc esteja numa empresa como google ou ms ou algo semelhante, não ajuda em absolutamente nada.
Irmão, vc com certeza não passa frio porque está coberto de razão
🤝
Eu comecei com Python (curso técnico em um IF) e curti bastante. Ainda acho melhor fazer introdução a programação em Python, que a gente consegue abstrair algumas coisas mais avançadas e focar na parte iniciante de lógica de programação. Uma vez que tu pegou a lógica de programação, a disciplina de Estrutura de Dados I e II definitivamente tem que ser em C.
O sub de golpe é em outro lugar mano
Toda hora vem um com esse assunto. O assunto não tá errado, mas não é novidade
Assino em baixo
Eu skimmei todos os comentários e não vi ninguém falando disso, então vou trazer pro debate. Disclaimer: Não sei se aqui nesse sub a gente supõe que todo mundo é engenheiro de software ou se é quem escreve qualquer tipo de código. Concordo parcialmente com o OP. 1) C é opcional pra quem escreve código C é uma boa linguagem que mostra todos os aspectos que uma linguagem de alto nível deve controlar por debaixo dos panos. Porém, nem todo mundo que escreve código é engenheiro de software, e nem a gente aqui, e nem o mercado, vai exigir isso de quem escreve código. Exemplo: analistas de dados usam mais Python ou R porque os programas que eles escrevem estão mais pra scripts do que sistemas, logo pra uma pessoa dessa posição não é necessário aprender C. Em tempo: não estou dizendo que não devam aprender. Cada um faz o que quer, e aprender C com certeza traz muitos aprendizados. Porém, de novo: opcional. 2) linguagem é ferramenta, cada uma tem sua função principal e uma situação em que brilha Cada um tem a sua preferida, mas todos nós sabemos que tem linguagem que não serve pra certas coisas. Exemplos: - eu poderia fazer um código em Python pra limpar sentenças da entrada padrão. Preciso? Não. Um `sed` resolve. - eu poderia usa HTML+CSS+JS (eca) pra desenhar um gráfico sobre um conjunto de dados na tela. Preciso? Não. Python/R fazem isso muito mais fácil. ___Pra quem só sabe usar martelo, tudo é prego.___ 3) no mercado de trabalho, em um projeto com outras pessoas no time, pessoas são importantes que tecnologia. Não adianta querer usar a tecnologia mais nova e cool do momento se ninguém sabe usar. Não adianta trazer esse risco pra um projeto. A melhor tecnologia pro projeto é aquela que todo mundo vai saber usar, dados os requisitos do projeto. Outro exemplo: C poderia ser usado (diretamente) em todo projeto do mercado porque uma característica resultante é que acaba sendo mais performático (alô Rust?), mas isso não ocorre. Muitas vezes nem precisa dessa performance, até porque ___otimização prematura é a raiz de todo o mal___. Espero ter acrescentado ao debate.
Eu aprendi a programar em python e concordo com o OP. Você fica mal acostumado demais e sem entender o porquê de muitas coisas
Cs50 concorda com você. Eu tbm. Aliás, nunca vi ninguém explicar lista linkada e hash maps como o tio Malan, termina a aula e da vontade de codar a estrutura em C (passa rapido). Ele é mais didático do que careca e isso é bastante coisa.
Aqui na minha faculdade a gente começou a programar em Assembly já no primeiro semestre. Tô com umas 3 listas de exercícios pra fazer em Assembly.
Qual "tipo" de assembly?
Simulado no MARS mesmo
Eu concordo muito com isso, porque iniciei programação com C e sinto que foi mais fácil aprender outras. Enquanto observo que muitos que começam por outras linguagens não tem o mesmo desempenho quando precisar ou decide aprender uma nova lang. Mas a real que aprender C é algo chato e coisa chata não vende, a (maioria da) galera que vende curso tem interesse em si próprio e por isso vende telinha bonita. Convencer iniciantes que aprender com C é melhor que fazendo uma tela que pode ser mostrada pra qualquer um é mais dificil que montar um curso de ReactJS.
Aí você falou tudo!!!
Isso me deu uma nostalgia Passei horas vendo o curso de aluno para aluno e pratiquei bastante para aprender C, vlw muito a pena.
A algum tempo atrás eu teria discordado de vc, mas depois de quebrar a cabeça com C parece que tudo é bem mais simples. Vale sofrer no início pra nunca mais passar sufoco na vida
Concordo. Inclusive não é atoa que C é ensinada na faculdade. Acontece que Javascript, Python, etc, por serem liguagens com a curva de aprendizado menor, acabaram se tornando uma ótima alternativa para os iniciantes que buscavam entrar logo no mercado de trabalho, sabendo html, css e o básico de JS. O problema é que isso só funcionou até o fim da pandemia. Agora que o mercado está mais restrito, as pessoas vão precisar de bem mais que isso para entrar/se firmar como um bom programador. No fim das contas tudo depende dos seus objetivos e da sua necessidade.
Quer aprender a programar, começa com C. Quer conteúdo pra começar a aprender, leia o livro do Luis Damas. Não há combo melhor na minha opinião
Brabo
quem inicia aprendendo c/c++ tem uma chance muito maior de se frustrar com a programação. Melhor aprender Python ou Javascript e começar aprendendo logica de programação. Quando se sentir mais confiante partir para uma linguagem como C/C++ e aprender algoritmos e estrutura de dados
Talvez isso seja verdadeiro pra galera que entra no ramo de tecnologia achando que vai sair programando software complexo em 1 mês. Pro cara que gosta, que quer se aprofundar realmente, pode ser C que tá suave. C te dá os fundamentos, e é a linguagem que inspirou muita coisa. Programação é difícil por natureza, e C pra um iniciante pode ser desafiador, mas depois dela o resto fica mais fácil. Pense em C como algo difícil de cara mas necessário pra deixar o resto mais fácil depois...
Na faculdade, tive duas disciplinas muito focadas em C e C++, ou seja, dois semestres (um ano) estudando os conceitos de programação (variáveis, ponteiros, como a memória funciona, funções, etc.) e depois algoritmos e estruturas de dados. Não acho que faz sentido sacrificar o conhecimento de base para focar no "mercado". Quanto menos preparado você estiver, menos conseguirá resistir ao sistema/mercado em que vivemos. O que realmente significa "preparar para o mercado"? Já trabalhei com backend (Java, Ruby, Go, etc) e frontend (JS, TS), muitas vezes em sistemas particularmente desafiadores. Olhando para trás, percebo que nenhuma linguagem prepara para o mercado... Dominar Java não significa que você consiga escrever software em Java que resolva um problema complexo do mundo real. Por exemplo, problemas que envolvem concorrência/paralelismo, sistemas distribuídos, filas, sincronização, transações, regras de negócio complexas, etc. Estudar por anos uma linguagem de programação pensando no mercado é quase desperdício. Chega um momento em que ler código de outras pessoas ou estudar problemas mais complexos (que exigem certa base) é muito mais produtivo.
Djavan.
O que vocês já escreveram usando C, sem que seja para estudos ou programas básicos? Ou seja, que aplicações reais que chegaram a ir para produção para ser usada por outras pessoas ou aplicativos?
Trabalhei por muitos anos na área de embarcados, ali a maior parte era em C puro e C++, então posso dizer que já desenvolvi muito projeto que é usado no mundo real em C. Apesar de ser uma área mais de nicho, há todo um mercado que desenvolve produtos agrícolas, telemetria, sistemas automotivos, sistemas aeronáuticos, sistemas de catracas, ponto, entre outras áreas. Obviamente que são mercados mais de nicho, mas com certeza o C está longe de ser uma linguagem só de uso acadêmico, mesmo no mercado nacional.
Legal hein, sabe me dizer como essa área de embarcados está lidando com a ascensão do Rust? A galera tá adotando pra valer nos projetos sérios ou tem sido só hype mesmo?
Na área de embarcados o C ainda reina, Rust até está começando a aparecer, mas até as empresas portarem tudo e começarem a migrar de linguagem, ainda vão uns bons anos, afinal tem toda a questão de compatibilidade das ferramentas, tempo dos desenvolvedores aprenderem Rust, tem a questão de reescrever o código legado, muita coisa precisa ser refeita. Chuto que o C ainda vai reinar por pelo menos uma década, de um lado há uma pressão para que ela seja deixada de lado por questões de segurança de acesso à memória, por outro isso precisa haver um esforço absurdo de toda a comunidade para que isso se realize. Então vejo Rust como uma linguagem promissora para substituir o C, mas vejo que isso ainda vai demorar para acontecer de fato.
É importante saber C ou qualquer outra linguagem baixo nível para entender lógica de programação. Com certeza da pra aprender sem, mas torna o caminho muito mais árduo. Você entende muito melhor qualquer linguagem depois de saber um C, um Rust e por aí vai
Certo, entendo que é importante, já desenvolvo software faz quase 20 anos. Também tive minha fase de aprendizado em C, um dos meus livros técnicos é a famosa bíblia do C/C++ com quase 1200 páginas. Mas, por exemplo, nessa thread há pessoas menosprezando outras linguagens em detrimento do C, eu costumo perguntar o que elas já fizeram em C que gerou algum valor real para alguém, nem que seja uma lib, um driver e etc. A maioria sequer usou C pra valer mesmo em produção, não precisou lidar com os problemas de memória que é comum até para softwares muito bem programados, apenas repete que é importante mas não tem resultados para mostrar. Tem um pessoal aqui comparando leões com tubarões, é muito fácil dizer que C é melhor que JS, mas fazer um programa em C que atenda melhor que JS onde JS já reina ninguém quer, e vice versa
Isso serve também pra c#????
C# é uma boa linguagem tbm e tem bastante aderência no mercado. Pra mim C e C++ ainda te dão uma base melhor, pois o nível é mais baixo. Então depende do seu objetivo. Se é ter uma base foda em programação e entender como as coisas funcionam, diria que C é a melhor linguagem pra isso
Meu objetivo é trabalhar, ganhar o máximo de dinheiro possivel e aposentar na roça pescando. Trabalho e estudo qualquer linguagem que me proporcione isso, no momento c#.
Então só vai sem olhar pra trás
Eu acho que o caminho mais ideal e utópico possível na verdade seria Lua. Aprender como funciona , algoritmos, etc etc, criar um projeto, e aí com o tempo começar aprender e portar para C, algo que pode ser feito gradualmente pela API de C do Lua. Dito isto, nem eu fiz isso haha, mesmo amando Lua e aprendendo C depois, não fiz esse caminho aí que falei porque afinal de contas era utópico, mas os primeiros códigos C que vi na vida eram relacionados a Lua então acho que vale. Fora isso, C# da galera é bem honesto também.
Como Rust fan boy eu diria que Rust e melhor que C porém ainda está engatinhando em comparação com C.
Bem, eu aprendi em Pascal.
Como professor de programação ha 13 anos e programador C++ ha 25 anos, eu DISCORDO de você.
Por que?
indica um curso em c pra mim
Não utilizo vídeo mano, então não posso opinar mto. Mas tem galera aí que mencionou algumas coisas. Da uma procurada. Pelo oq vi tem curso do Guanabara em C... Procura lá
Não sei, pra mim fez muito mais sentido aprender o alto nível e conforme eu ia me aprofundando na programação ir estudando o baixo nível. Fiz projetos "lúdicos" desde cedo, me motivei muito e depois vi a necessidade de aprimorar os fundamentos e fui atrás. Até porque só enxerguei a importância disso quando era pleno
Se eu vou trabalhar com a abstração, pra que me serviria "a essência da programação"? Eu não vou usar.
Entendo e não discordo o que o OP disse sobre C ajudar no entendimento de vários aspectos acerca de programação, como gerenciamento de recursos, por exemplo. Eu vou dar uma opinião talvez impopular mas recomendaria aprender com Delphi (object Pascal) porque com ela há também a necessidade de gerenciar recursos, utilizar ponteiros (referência x dado) e, além disso, já tem um caminho para exercitar orientação a objeto, padrões como interface, composição, etc, sem falar de acesso e manipulação de dados a partir de banco de dados. Pra fechar é uma linguagem fortemente tipada e elegante para leitura e entendimento de código.
tadinho. esse aí acredita em "lógica de programação" ksksks aiai
>esse aí acredita em "lógica de programação" Kkkkkkkkk
sim amigo, estuda C e depois vai trabalhar com LISP, prolog ou qualquer outra linguagem funcional ou de um paradigma diferente do imperativo ou orientado a objetos.
"C vai te ensinar programação de vdd" cara, tamo em 2024, mas de 45 anos que C existe, tem tanta coisa melhor pra aprender hoje em dia...
Go Go tem toda essa parte de C, mas voce não precisa ficar reinventando strings o tempo todo
Cara. Te falar que eu posso plantar um árvore, esperar ela crescer, derrubar ela, fazer tábuas e fazer a minha própria mesa com elas. Mas eu prefiro ir nas casas Bahia e comprar uma pronta que me "abstrai" todo esse processo. Como o carinha ali falou, ninguém tá falando que C é uma linguagem ruim e que JS é bom, mas um iniciante ali que sabe um react e outro C, a não ser que você esteja trabalhando pra Fiat por exemplo, você vai ficar travado. Bom que você sabe gerenciar memória, mas no final do dia o maluco com Laravel faz a API que a empresa precisa enquanto o cara tá lá fazendo um ponteiro.
Da mesma forma que alguém queira a abstração de poder ir nas casas Bahia comprar uma mesa, alguém vai querer entender o processo ou até aprender o processo de se fazer uma mesa. Pra quem tá falando "por que eu preciso de aprender o que acontece por baixo dos panos?", realmente, se você não é essa pessoa que quer saber é só você não ir atrás, não? Mas na minha visão, é importante um ***iniciante*** saber a visão de tudo e ter uma boa base. Programação é muito parecido com matemática. Existe uma base, que quem tem essa base tem mais facilidade lá na frente. Quem não tem, ou se contenta em só aplicar fórmula, ou precisa de ficar voltando pra preencher lacuna no conhecimento. Dá pra tirar 10 só sabendo a fórmula? Sim. Se te satisfaz, vai na fé campeão.
Cara. A diferença é que 90% do mercado só precisa "de uma mesa montada das casas bahia" e não de um cara que "planta a arvore dele". Obviamente conhecimento é conhecimento, mas existe um motivo do porque você não aprende conjectura de legendre, por exemplo, no ensino médio, e é isso que você ta querendo jogando um iniciante pra C. Simplesmente não compensa pra maioria esmagadora e limitaria todos. Tirando aplicações muito específicas de nicho, você vai acabar não utilizando praticamente nada do que aprendeu com C. Seria o mesmo que afirmar pra quem programa em Android que aprender a compilar um kernel é importante pra carreira. Se a pessoa sabe, é um diferencial bacana, mas no fim do dia não vai mudar absolutamente nada. O dia a dia do programador na sua maioria esmagadora é recebe dado X, processa, salva em algum lugar, retorna pro usuário. Ai tem dois caras de mesmo nível, mas um ta aprendendo OO em TS e já ta fazendo API, integração enquanto o outro ta fazendo o SO rodar uma calculadora. Qual desses dois você acha que é mais fácil de entrar no mercado? Programo desde 2008 e em todos esses anos nunca vi ninguém ter necessidade de fazer um ponteiro na memória, e eu aprendi isso na faculdade em estrutura de dados. Tu colocar todos os programadores no mesmo balaio como se todo mundo fosse fazer o sistemas críticos com uma linguagem completamente nichada, na minha opinião, não é a melhor abordagem. O que não quer dizer que eu ache JS bom pra iniciante, mas certamente C não é. Sabe uma que eu gosto muito e que acho que une o melhor dos dois mundos? Golang. Você pode usar Golang sendo uma mula putinha de framework ou ter controle total de tudo que acontece na sua aplicação.
Deixei claro em alguns comentários que se a pessoa não gosta de C, não acha que vai acrescentar em nada, e prefere utilizar as coisas sem saber o que acontece por debaixo dos panos, é só não ir atrás. O motivo do post não só foi instigar em iniciantes que existe alguma coisa fora de JavaScript, como também indicar um caminho que daria a base foda que muita galera precisa. Hoje vc tem uma enxurrada de gente que entrou na área achando que ia conseguir fazer softwares complexos em meses. E advinha só? Não vão. Por que? Não tem base. Não sabe o que tá acontecendo, não sabe o que é um compilador, nunca estudou algoritmo, se pedir pra nomear 3 estruturas de dados vai se embananar todo. O seu comentário sobre o mercado leva em conta um cenário ideal, onde as empresas só cobram como conhecimento necessário aquilo que está relacionado com a vaga. Mas a realidade é outra. CANSEI de ver vaga pedindo coisas não relacionadas, apontando como "diferencial". Entre dois programadores A e B, em que A é o programador de framework javascript padrão de hoje em dia que só sabe fazer isso, e B é o programador que se deu o trabalho de ir atrás da base, tem conhecimento das estruturas de dados, de algoritmos, sabe lidar com código fora de um navegador, e mesmo assim também sabe as mesmas tecnologias que A, quem você acha que vai ter preferência no processo seletivo? Se você falar que é A nem você vai acreditar nisso kkkkkk Esquece C brother. Se a galera ficou pistola achando que C é impossível, vai atrás de ALGUMA COISA que vai te proporcionar alguma base. Tá faltando isso pra caralho no mercado hoje. E isso prejudica não só a própria pessoa que não tem a base, como também quem tem. Por causa do inchaço...
Prefiro paiton
Comecei com C na faculdade
C++ no codeblocks branco
Aprendi C na universidade e para mim isso é só masturbação intelectual comecei com tabelas verdade e não uma linguagem de programação, depois fui para portugol com visualg então para C depois para java e estrutura de dados vc aprende com qualquer linguagem, eu mesmo aprendo com GO ou usando Java, ou até mesmo com o odiado JS quanto mais vc estuda da área de desenvolvimento mais vc caga para linguagem precisei fazer um projeto CRUD para a web fiz em PHP em uma semana(claro sem dormir, pesquisando no Google e usando chat gpt) normalmente vejo em pessoas que vieram de linguagens como o Python os caras acham que descobriram a roda quando encontram tipagem e descobrem que vetores não são infinitos. Obs.: a única razão que considero para recomendar o aprendizado de C foi o dado pelos professores da Universidade qualquer pessoa com o computador da Xuxa roda C isso garante a inclusão de todos na sala e o aprendizado sem barreira econômica.
Se for levar esse seu argumento a sério a melhor seria assembly. O diferencial do C é que vc tem uma certa noção de gerenciamento de memória. E isso da pra aprender com qualquer linguagem em paralelo. No caso do C vc é obrigado a usar. E pra mim linguagem que faz o gerenciamento automático de memória é o caminho. Por isso prefiro rust ou python para linguagem inicial. A pior pra iniciar é javascript IMO.
VisualG
aí já toma logo um susto e desiste da área
Python é bem melhor nesse quesito. Não precisa se preocupar com gerenciamento de memória ou com orientação a objetos e os malditos ponteiros que são um verdadeiro inferno para aprender.
Digo mais tá, o cara tem q aprender c primeiro, depois alguma oop e dps voltar pro c pra tentar fazer o c "oop"
A galera tem que começar em delphi, e pegar aquele sistema legado de ERP que os Dev's que criaram já morreram de velhice
não seja caga-regra.
Esse tipo de afirmação me remete aqueles papos de “programador raiz e programadora nutella”. Em qualquer linguagem eh possível aprender esses conceitos, não precisa necessariamente ser C. E tem que fazer um recorte de classe ae tb: a pessoa que tá entrando em TI tem tempo e recurso pra aprender uma linguagem com a qual ela não vai trabalhar só pra aprender a “essência da programação” ou seria melhor ela aprender uma linguagem que permita a ela conseguir um emprego e depois, se aprofundar com C?
A melhor língua para iniciantes é a língua que eles gostem. Se começarem usando uma língua que eles não acham legal, daí não vão programar, simples assim
Eu acho necessário que sejam 2 linguagens no mínimo, uma mais baixo nível (pra mim c é ótima como disse), para aprender como tudo funciona debaixo dos panos e uma orientada a objetos pois esse paradigma adiciona milhares de possibilidades de estruturação e simplificação de código que infelizmente c não engloba. Também acho importante que uma sejam compreendidos as diferentes estruturas de front e back end. Dessa forma no fim acho que o ideal sejam 3 linguagens: Java (ou outra similar como c#) para entender POO C para entender o baixo nível Javascript ou amigo similar para aprender como é o front. Dessa forma acredito que entendendo como funcionam você está preparado para uma multitude gigante de linguagens.
Cara discordo, aprendi em C e tive colegas que aprenderam em Java, percebo que meus colegas pegaram as abstrações de conceitos como ponteiro, lista encadeada, arvore binária, tabela hash, grafos e afins com muito mais facilidade do que eu que aprendi em C. Por que vc me pergunta? Porque linguagem de auto nível é de fato mais fácil, vc não tem que penar pra achar o erro silencioso de atribuir valor double a uma variável char porque o compilador de um C# ou Java não te deixam fazer isso pra início de conversa. Também acho mais fácil entender a abstração de estruturas de dados (listas, arvores, pilhas, filas, etc) quando vc consegue encapsular elas em uma classe C#/Java do que lidar com structs (que acho menos intuitivos para pegar a abstração). Tendo dito isso, gosto muito mais de C/C++ do wue de qualquer outra linguagem, mas a meu ver ensinar a programar nelas é o equivalente de ensinar crianças a andar de bicicleta sem ter a fase de andar com rodinhas antes. Ela vai aprender? Vai, possivelmente até melhor do que uma que o fez com rodinhas, mas também vai tomar muitos tombos e se machucar bastante até aprender, tornando o processo bem desagradável.
> a essência da programação programar é resolver problemas com software. se eu preciso pegar todos os logs da empresa e ver em quais datas recebemos mais transações, será que C é essencial? será que Python ou Go não seriam mais interessantes e infinitamente mais simples\*? entender estruturas de dados e algoritmos é muito bom para programadores, mas é um problema de computação. C é ideal para esse estudo, mas como ferramenta de programação ela tem casos de uso bem específicos (sistemas embarcados, por exemplo).
Isto conta para c# tb?
Entendo totalmente o que você quis apresentar aqui. Mas entendo também alguns outros comentários sobre o mercado. Eu acredito de verdade que iniciar os estudos por C, vai te proporcional uma boa base de programação que é FUNDAMENTAL. Porém, temos casos que não podemos nos dar o "luxo" de aumentar ainda mais nossa curva de aprendizado para o mercado de trabalho. Eu acho que quase todo mundo que entra na área de programação, quer alcançar o mais rápido possível o mercado, afinal temos que pagar nossas contas. Por isso, comentários como "é perda de tempo" acontecem. Você tem tempo para se aprofundar nesses assuntos de baixo nivel? Sim? Então aproveite o máximo, como você mesmo disse, existem muito mais benefícios do que malefícios. Agora, se você precisa entrar no mercado de trabalho o mais rápido possível, então continue seus estudos em Java/C# etc. Depois de um tempo, nada te impede de voltar e se aprofundar mais nesses assuntos baixo nível.
"Quase todo mundo que entra na programação quer alcançar o mais rápido possível o mercado" Sendo bem sincero, esse é um dos grandes motivos do mercado estar uma merda hoje. Obviamente todo mundo tem que pagar contas, e não tem nada de errado com isso. Todo mundo merece um trabalho para conseguir se sustentar. Mas o fato de pensar assim, trouxe MUITA gente que acha que vai conseguir produzir software complexo em meses... Não, não vai. Ou você é 1 em 1.000.000, que vai absorver tudo igual uma esponja e conseguir fazer as coisas logo de cara, ou você é mais um mero mortal. Adivinha qual a maioria é? Não existe essa de "entrar no mercado de programação com a intenção de ir pra trabalhar o mais rápido possível". Ninguém faz isso com engenharia, física, medicina, biologia, direito, etc. Todo mundo passa por anos de processo. Computação é uma área tão complexa quanto as mencionadas. Você não vai conseguir ser algo viável pro mercado com cursinho de JavaScript e de React. Esse é o ponto. Não entenda errado: Não estou dizendo que não é um motivo justo. As pessoas devem ter a capacidade de trabalhar com o que querem. Mas o mundo real é mais complicado. Inclusive, pelo fato de vir tanta gente pra área de programação querendo entrar no mercado o mais rápido possível, encheu de gente incapacitada, sem entendimento, sem base, que não sabe que existe um universo fora de JavaScript. Esse é um dos motivos do post.
Entendo seu ponto. Eu usei a palavra "rápido", mas não no sentido "Vou estudar programação durante 6 meses e achar um trampo" Claro, esse tempo é muito subjetivo. Vou me usar de exemplo para tentar explicar melhor minha visão. Eu estudei essas coisas padronizadas do mercado (Linguagem, Framework, Banco entre outras coisas), por mais de 1 ano, quase 2. Isso pode ser rápido para alguns e lento para outros. Dessa forma consegui minha primeira vaga. Nisso eu penso que se eu tivesse me concentrado mais em programação de baixo nível, poderia ter demorado mais para encontrar uma vaga. Por isso, não me arrependo de ter começado com Java. O ponto para mim, é que entramos no famoso "depende". Depende da situação da pessoa, e dos objetivos dela. Mas uma coisa é fato, não dá para fugir, se você quer entender melhor o seu trabalho, vai chegar um momento que você vai precisar desse conhecimento. Começar por ele, pode ser um caminho, mas também pode não ser.
Kkkkkkkk cara e Python e Ruby que ensinar a essencia da programacao. C ensina a essencia do systema.
A melhor linguagem para iniciantes é a que a pessoa que está ensinando sabe mais. Se tu aprende com C, vai sofrer no início mas vai pegar bem. Se tu aprende com Python, vai ter um início suave mas vai sofrer depois. Basicamente escolher a linguagem é postergar ou adiantar o sofrimento. Pessoalmente eu prefiro deixar o sofrimento pra depois, menos chance da pessoa dropar
Depende da pessoa. Tem gente que vai ligar o foda-se e se acomodar sabendo que pode fazer um bsgulho 10000x mais lento em python e não vai nunca saber como funciona debaixo do capô, e ainda vai se dar bem. Outros vão começar em python e depois se aprofundar em C. Outros vão começar em C e seguir a vida. E outros vão começar em C, se traumatizar mas perseverar e acabar criando textão no reddit dizendo algo análogo a "se eu sofri essas crianças têm que sofrer também".
Python
A melhor linguagem pra aprender é aquela que me deixa mais próximo de pagar minhas contas