- Feed completo
- Feed dos comentários
- Feed do Fórum
- Feed Canal Games
- Feed Canal Fotografia
- Feed Canal Mobile
- Receba o Meio Bit via e-mail
Mantenha-se informado sobre as nossas novidades com nosso newsletter semanal, todas as segundas-feiras
Hoje em dia temos literalmente milhares de linguagens de programação. Isso mesmo, você não leu errado. Segundo a The Encyclopedia of Computer Languages, existem no momento 8152 linguagens de programação documentadas. Diante dessa babel, um novato em computação faz a pergunta: Quero aprender a programar, por onde começo?
Essa pergunta gera um debate enorme, sempre. Uns sugerem logo de cara C++, Java ou C#. Outros, Visual Basic ou Delphi. Muitos indicas" class="" title="">dicam alguma linguagem interpretada como PHP, Ruby ou Python. Mas todos eles acabam ensinando também o uso de frameworks, ferramentas e particularidades de cada linguagem. Por exemplo, PHP é para Web, não para Desktop. Estou longe de ser um purista, mas para começar com o pé direito, não existe linguagem melhor do que o bom e velho C.
Antes de continuar, quero deixar claro que não estou indicando uma linguagem ou tecnologia para algo específico, mas para alguém que está começando e ainda não sabe qual será o futuro: programador de aplicativos web, software para torpedos, drivers, controle de radar, engines gráficas, games, inteligência artificial, aplicativos desktop, etc. A linguagem de programação C é genérica e inespecífica o bastante para qualquer situação, mas o importante é aprender os fundamentos de programação e não ficar brincando de enviar e-mails usando formulários via browser.
Vejam uma breve descrição da linguagem e porque ela é tão boa para iniciantes:
"C não provê operações para manipular diretamente objetos compostos tais como cadeias de caracteres conjuntos, listas ou vetores considerados como um todo. A linguagem não define nenhuma facilidade para alocação de memória outra que a definição estática e a disciplina de pilha fornecidas pelas variáveis locais de funções; não há monte (heap) ou coleta de lixo. FInalmente, C não provê facilidades de entrada e saída: não há comandos READ ou WRITE, nem métodos de acesso a arquivos. Todos esses mecanismos devem ser fornecidos por funções explicitamente chamadas. A maior parte das implementações de C inclui uma coleção razoavelmente padronizada dessas funções.
De forma semelhante, C oferece somente construções simples de fluxo de controle: testes, laços, agrupamentos, subprogramas, mas não multiprogramação, operações paralelas sincronização ou co-rotinas." ¹
Muitos defendem o aprendizado de uma linguagem orientada a objetos como o Java. O problema é que ele tornou-se tão grande, pesado e corporativo, que chega a ser ridículo ensinar if, else, for, do while e outras coisas simples usando um Software Development Kit gigante. O Java foi criado em C.
Quer ajudar em projetos open source? Se você possuir conhecimentos em C, vai poder ajudar muito mais do que os 199 tradutores de plantão para cada programador de verdade porque essa habilidade pode ser migrada para as principais linguagens de programação da atualidade. Os conhecimentos de manipulação de dados, estruturas de decisão, laços, funções e estruturação de programas, assim como os conceitos de compilação estarão bem fundamentados. E não apenas isso, mas é uma ótima linguagem para aprender algoritmos estruturados.
E para começar, recomendo o pequeno lcc-win32 para quem usa Windows e pesquise por tutoriais. Se preferir, pode partir direto para o Visual C++ Express da Microsoft, a ferramenta usada para desenvolver e compilar o Firefox para Windows, por exemplo. Mas para quem está começando, simplicidade é sempre o melhor caminho.
¹ KERNIGHAN, Brian W.; RITCHIE, Dennis M. C, A Linguagem de Programação: padrão ANSI. Rio de Janeiro: Campus, 1989. p. 2.
C é realmente uma ótima opção pra começar!
O JDK pesa muito mas no Java vc pode começar a programar mesmo sem uma IDE o que é muito bom . O que é estranho é que no final vc indicou o "Visual C++ Express da Microsoft" que tbm é relativamente pesado pra um iniciante =)
pq não indicar o Dev C++ ou Code Blocks pra galera x) ?
Eu recomendei o lcc-win32 primeiro porque ele é completo em um pequeno pacote com menos 10 MB.
O Visual C++ Express é o mais indicado porque é a referência, apesar de ser enorme.
A indicação veio da constatação que os projetos open source sérios como os da Mozilla,
passaram a usá-lo como ferramenta.
Se quisermos ter mais programadores no Brasil ajudando em projetos open, precisamos
de mais gente com habilidade em C/C++ e Visual C++ da Microsoft. Mas quem está começando, o lcc serve.
Graças ao Bloodshed Dev-C++ que não consegui aprender C++ direito, esse compilador fica tando erro com o código certo!
As vezes quando não acho o erro tenho que copiar todo o código pra um novo projeto e ao colar o código roda redondo!
______________________________________________
Assinatura?
Nem pensar, não entenderiam minha letra!
Minha sorte e que meu Blog não é manuscrito!
O básico de todo recém formado em ciência da computação deveria ser dominar o C, porém conversando com muitos alunos de computação da minha cidade notei que C é aprendido a um nível intermediário e que Java é o mais focado, deve ser pela grande quantidade de empregos que essa linguagem está requisitando.
Fiz Sistemas de Informação, e o mesmo aconteceu comigo.
Na parte de programação do curso, vimo C apenas para 'conhecer', e estudamos Java.
Olha eu já dei uma introdução a algumas pessoas em programação, trabalho com isso e acompanho de perto o progresso da galera na faculdade.
Vejo que a galera realmente boa manja de C e C++ mas também possui uma base legal de Assembly.
Esse é caminho dos nerds que gostam de escovar bit e dos professores.
Mas para quem vai começar na programação, acho melhor traçar um roteiro mais extenso...
Comece com C, mas nao perca muito tempo (6 meses é o bastante), C é uma linguagem que pode ser considerada difícil, deve-se aprender os fundamentos que devem ficar sólidos nessa fase.
Vá para C++, entenda o que é orientação a objetos, sobrecarga, e todos esses conceitos novos (já que a base você tem).
Nesse período de C/C++ eu recomendo 2 ferramentas, DEV C++ e o Visual C ++, podem formar uma bela dupla. (essa é uma boa hora para ver algo de computacao grafica, openGL, é bacana...)
Depois seria a hora de dar uma olhada em Java, você nessa fase já sabe bastante, vai ter que se adaptar as peculiaridades da linguagem, vai aprender muita coisa legal que a linguagem oferece e tal...
Depois disso é por sua escolha... Os passos básicos foram dados e você deve ter um bom conhecimento agora.
Recomendo que veja Assembly, mas só por curiosidade, não creio que um estudo aprofundado seja necessário.
E por final, agora que você já tem 3 linguagens nas costas, por favor, sem essa de preconceito, respeite as diferenças cada linguagem tem suas vantagens. Sem essa de "Java já era", "VB é linguagem de programador porco", "C# é uma invenção absurda", "C++ é linguagem de nerd que nao faz ***** nenhuma", "Tem gente que programa em Cobol e acha que é programador" (essas coisas lindas eu escutei só na semana passada).
Então é isso! Fica minha dica para os novatos. =)
Caramba! Você disse tudo! Parabéns.
--------------------------------
Só a mudança é permanente.
Para o mané que disse "Tem gente que programa em Cobol e acha que é programador" deveria aprender um pouco mais sobre o mercado. Há uma boa procura por programadores em COBOL, enquanto o mercado das linguagens "populares" como Java está saturado.
------------------------------
Campanha Play Ogg
Correndo o risco de parecer um tanto infantil, defendo que o C é bom como segunda linguagem. Para quem está querendo aprender, começar com uma linguagem que não provê as facilidades citadas no artigo pode ser ligeiramente assustador. Com isso, é possível que o sujeito desista, por considerar difícil demais.
É tolo? Sim, mas já vi acontecer. Sendo assim, sugiro uma linguagem como Pascal, por exemplo. Não para gastar tempo nela, mas mostrar o que são as estruturas básicas e dar a pessoa um pouco do gosto do que é programar.
Quando já foi quebrado o mito de que é exageradamente complicado, faz sentido passar para o C. E então o novato vai estar em condições de apreciar todas as vantagens mencionadas.
Na verdade, estou concordando com tudo que foi dito até então, e propondo uma etapa preparatória.
__________________
A abordagem do Leandro na arte de blogar
Não concordo com voce, para ilustrar o que voce disse é como se primeiro tivessemos que aprender a dirigir num carro automático cheio das firulas e depois finalmente tivessemos que [tentar] usar um Mille anos 80.
É justamente ao contrário, se voce dominar linguagens mais poderosas como C e Pascal que estão cheias de conceitos inebriantes vai dominar qualquer outra e saber que apesar de boa a linguagem XYZ tem seus pontos falhos. Alguem chega no forum e diz que gosta de XPTO porque tem binding para GTK e voce entende lhufas porque já começou com uma linguagem que não havia tal conceito, foi uma perda terrivel de tempo em tal aprendizado.
Na verdade, acredito que a melhor ilustração do meu argumento é que devemos aprender a dirigir um carro antes de tentar guiar um caminhão de carga perigosa numa rodovia esburacada de mão dupla com desfiladeiros em ambos os lados.
Os novato deve se preocupar em aprender algoritmos, estruturas básicas de controle como desvio condicional e repetição, enfim, mudar sua lógica de pensamento para conseguir programar. Jogar direto na cara dele as complicações de manipulação de ponteiros, coleta de lixo, gerência de memória, etc, só vão servir para assustar e desistimular.
Reitero, concordo como tudo que foi dito, só proponho uma etapa preliminar. O C, na minha opinião, não serve como PRIMEIRA linguagem, mas como SEGUNDA, ele é ótimo. Até porque um programador de verdade não pode ignorar os conceitos importantes que há nele, e estão ausentes nas linguagens de mais alto nível.
__________________
A abordagem do Leandro na arte de blogar
Discordo completamente que C deva ser usada como linguagem de aprendizado justamente por "não provêr as facilidades citadas no artigo" como disse o leafac. Usando C o aprendizados de coisas básicas como if, for, while, etc., que poderiam levar não mais que algumas horas leva horas e horas a fio em meio a vários segfault's e afins. Por isso que para aprender conceitos básicos de programação deve-se usar uma linguagem mais simples e com mais facilidades que permitem ao estudante se focar nos conceitos de programação em si e não em cuidar de ponteiros.
Claro que para um programador aprender C é fundamental, mas depois de ter alguma experiência não pra começar.
Paulo Quinan
"De forma semelhante, C oferece somente construções simples de fluxo de controle: testes, laços, agrupamentos, subprogramas, mas não multiprogramação, operações paralelas sincronização ou co-rotinas."
C é pequeno e universal, vem somente com o necessário sem a parafernalha que as
frameworks como o .Net e o Java fornecem.
Bicalho,
Vejo nas linguagens de script: Python, Groovy e Ruby, mais precisamente, são melhores opções de linguagem para o programador iniciante. Principalmente pela simplicidade de sintaxe e por possuirem características avançadas, quando estas forem necessárias.
Concordo com o leafac, quando ele diz que C deveria ser a segunda linguagem de qualquer programador.
Em C você deixa alguns pontos em aberto, quando você começa a explicar sobre questões básicas. Por exemplo, para fazer um "hello world" o cidadão precisa:
1. Fazer include de sdtio;
2. Declarar um método;
3. Ser apresentado a um método que vai ser chamado automagicamente;
4. Ser apresentado ao método que escreve caracteres na saída padrão.
Nas outras linguagens citadas:
1. Ser apresentado ao método que escreve caracteres na saída padrão.
Para quem está começando é mais fácil compreender a idéia e ver código funcionando. Isso motiva o estudante a aprender e testar mais.
[],
AC
Sobre o uso de linguagens de script, no caso Python, para ensino de algorítimos.
Seu exemplo é ruim porque quando há erros nessa construção de blocos condicionais em geral não passa pelo processo de compilação e numa linguagem interpretada também não passaria.
O aspecto mais confuso de quem aprende C/C++ para outras linguagens em geral interpretadas é que em C/C++ variáveis são endereços de memória que representam seu conteúdo e numa linguagem interpretada isso estaria camuflado e as vezes é tarefa do interpretador lidar com situações adversas não "pensadas" pelo programador. Se voce não pensar numa exception, o interpretador fará para voce, se voce não declarar/inicializar uma variável o interpretador fará para voce, misturou alfa e numeros numa operação matemática não faz mal o interpretador dará um valid error.
Essa é a diferença que vejo, numa linguagem mais poderosa voce pensa em todas situações possíveis, numa linguagem interpretada voce pensa apenas nas que puderem surgir e que não sejam tratadas pelo interpretador. Quando voce lida com sistemas comerciais a toque de caixa é tentador uma linguagem que abstraia o máximo possivel de complicações, por outro lado, estará sempre limitado as possibilidades da linguagem que escolheu, nunca fará um emulador, driver ou coisas complexas.
comentário de quem está começando, estou no segundo semestre de C. da Comp. - UFBA
Comecei com Pascal, é uma linguagem sem muitos recursos, mas é bem estável e os programas são confiáveis, não trazem muitas surpresas e a limitação da linguagem permite menos erros, tem uma sintaxe e um estilo parecidos com C, até onde vi dos dois. Fiz no máximo calculadoras e agendas.
Nas férias conheci PHP e Ruby. Ruby aprendi até onde sei de pascal, achei bem mais leve, faz-se muito com pouco, sintaxe legal, é recomendada pra quem já sabe, pois mima o cara. PHP eu sei o que aprendi com Pascal e Ruby, calculadoras, agendas... e ainda como bater um papo com SQL, pois trabalho com web na empresa júnior do curso. Boas linguagens, mas quem está aprendendo fica mimado e vai fazer cara feia quando encontrar C.
Começo do semestre peguei uma matéria que usa C pra trabalhar, certamente C é mais poderosa que as demais, com isso o leque de erros aumenta e você passa a ter de tomar cuidado com alguns aspectos.
Se eu começasse a programar em C, não estaria tão estimulado como hoje, pascal é simples e fraquinho perto das linguagens famosas, mas ele te deixa com vontade de crescer.
Recomendo o caminho que segui, alias o caminho que que a ufba me impôs XD comece devagar, não tenha pressa, depois que tiver uma base sólida em pascal, passe pra outras linguagens. mas só quando souber mesmo, repito. não tenha pressa.
Só que em C/C++ e Pascal voce encontra Emuladores, Gerenciadores de Janelas Unix, kerneis,...
VC e Delphi são exemplos de IDEs que tornam sua vida mais simples para criar excelentes aplicações comerciais e não são "fraquinhas".
Acho que depende muito da pessoa. Se ela não for trabalhar tendo a programação como profissão, C eu já acho que não é a melhor solução.
Eu apostaria no C# como linguagem de aprendizado, por causa da facilidade, de você não ter que se preocupar tanto com gerenciamento de memória, pilha, etc. no seu programa de cálculo de volume e também principalmente por causa das APIs, frameworks e SDKs da vida.
O aluno acha o máximo poder adicionar um xyz.dll e assim ter controle total do AutoCAD, criar plugins para o Rhinoceros3D baixando apenas um arquivo de 40k e ficar no google atrás de métodos para personalizar o Windows Live Messenger.
Isso supera bastante o trauma inicial de um #include stdio.h não funcionar porquê ele não entende a árvore de diretórios do MS-DOS.
Mas esse é o problema: estamos gerando programadores mimados por RADs e que não conseguem fazer nada muito além de traduzir projetos. A Microsoft não contrata programadores de C# e sim C/C++, é o padrão da empresa.
Como vamos auxiliar e desenvolver uma base de tecnologia com conhecimentos
suficientes para auxiliar em um projeto como o WebKit, se os caras só sabem gerenciar memória se o Garbage Collector já está lá, todo pimpão, fazendo o trabalho sujo?
Assim como muitas não contratam programadores C/C++ e sim de Java que é o padrão de muitas tambem, linguagens de alto nivel são exatamente para isso, não ter que se preocupar com nada a nivel mais baixo,
o importante é ver onde você vai trabalhar, em qual ramo, não adianta programar em C se no ramo que você vai a maioria trabalha em Java ou outra linguagem, por ex: na minha região sistemas comercias, que é o ramo da minha empresa, é dominado pelo Delphi
---
Pra min fanboysismo é igual religião e futebol, não se discute
Acho que me expressei mal e também perdi um pouco o foco do artigo.
Eu estava falando de programação como ferramenta. Os RADs são muito úteis para aqueles que não serão programadores de profissão, aqueles que não irão trabalhar programando, mas que esta será muito útil para agilizar processos complicados, fazer cálculos complexos em que o Excel não pode ser utilizado com eficiência, etc. Usando a programação ela pode fazer o trabalho de vinte horas ser completado em apenas duas.
Se a pessoa quiser mesmo ser um desenvolvedor, aí sim terá que botar a mão na massa e aprender C. Diria até que um pouquinho de Assembly é indispensável.
Para começar é realmente bom.... Mas a melhor linguagem de programação sempre será aquela que você conhece melhor...
_____________________
Muita Pimenta para sua vida!
Primeiro Pro-Commenter da Blogosfera Brasileira.
Que diferença vai fazer para o kamikase o tipo ou especificações de bomba que ele carrega ?
Já para um especialista em bomba, isso faz toda a diferença;
Se voce não é programador, a linguagem realmente não importa, mas se é programador então não pode confundir, quanto mais linguagem tiver no seu cardápio melhor será. A melhor base para usar de comparação entre as linguagens na minha opnião é C e Pascal. Dominou uma das duas, domina qualquer outra. Ponto para C/C++ que tem maior número de adeptos que podem lhe auxiliar.
Eu estou lendo o The C Programming Language(EN) agora e IMHO programador que não sabe C não é programador. O TCPL é um livro sensacional(não é recomendado para iniciantes).
Acho que uma linguagem como Pascal é melhor para começar.
Bicalho: Tá escrito aí em cima "cadeira de caracteres" e não "cadeia de caracteres".
Bem, discordo ae. Esse livro ae é o bicho, foi escrito por um dos caras que desenhou a linguagem e talz (e o unix de brinde), é o melhor livro de programação no qual eu já pus as mãos. É EXIGIDO pra iniciantes, o cara escreve até num inglês simples fácil e direto, o leitor só vai ter dificuldades se for uma salsinha de marca maior...
Para começar eu indico PHP,
você diz, para iniciantes...
sendo web ou não, não vai importar para um iniciante em programação,
aprender if, else, while, for para um iniciante o melhor na minha opnião é ser uma ilnguagem simples, php ainda com tipagem dinamica ajuda muito quem esta aprendendo e é tambem uma das linguagens que todos devemos saber... ou mesmo Pascal ou o Portugol como dito pelo amigo acima...
Mas... continue com estes posts esta bem legal, parabens...
--
Pra min fanboysismo é igual religião e futebol, não se discute
Não faça isso não. Conceitos básicos de programação só se aprende no Shell(printf, write, read...).
Programadores que aprenderam a programar em PHP nunca aprendem outra coisa e ficam nos fórums fazendo perguntas idiotas a vida toda.
Nunca vão querer entender o HTTP direito, abominam Frameworks...serão Poggers pro resto da Vida. (tá bom, tô exagerando).
Desculpe, mas vejo diferente, eu aprendi com PHP, com o livro PHP A biblia,

Não sei se sou diferente então, mas todas outras linguagens foram assim,
PHP, Javascript, Java, Ruby, AS 2.0 até um pouco de delphi e não tive esse problema de ficar frequentando foruns e fazendos perguntas idiotas
Logo estou tirando minha certifição Java, por preguiça, ja devia ter tirado a 3 anos atraz, agora é quando conseguir tempo, quando tirar ferias talvez
---
Pra min fanboysismo é igual religião e futebol, não se discute
Está exagerando MESMO.
Mas que fazem perguntas idiotas, isso fazem...
Tem até um link apropriado para o youtube :
http://br.youtube.com/watch?v=lWcZJBadRMA
http://br.youtube.com/watch?v=ktc7heHd3Dw&NR=1
Alguns voce até quer ajudar, mas sabe que se responder vai outra, outra,... e um curso por email é inevitável.
Ixe... ô se fazem.
Eu desistí de participar da comunidade de PHP no orkut em dois dias, devido a completa e total impossibilidade de se ler algo que prestasse lá.
O problema do PHP, pra mim, é outro. E a culpa é do Open Source.
Apache e mysql é de graça, e espaço na web é relativamente barato.
Logo, provedor que roda PHP e custa 5,90 por mês é fácil, o que torna quase inevitável para alguém que cometa sites aprender bem mais ou menos.
Some a isso uma comunidade muito atuante, aonde em cinco minutos você copia e cola um código da internet que funciona, e teremos um mundo de
programadores PHP que não sabem nem php direito.
Narro uma conversa que tive com um "desenvolvedor":
- Cara, qual a versão que você tem no php do servidor? Preciso saber, porque PHP5 tem um melhor suporte a OO, e tal...
- Ixe, não sei.
- Normal, manda um phpinfo lá no servidor, tá aberto o FTP mesmo.
- O que que é isso? Como faz?
Só que eu que pago o pato. Eu programo em PHP, mas PHP sério, sem copiar código nem fazer perguntas cretinas, e sou meio que levado no arrastão da incompetência dos outros.
Pois é. Eu também programo em PHP sem copiar código e sem fazer perguntas cretinas, embora tenha criticado a idéia de iniciar em programação com PHP há uns comentários acima.
Estou nesse barco com você. No fim, as vantagens do PHP acabam jogando contra. Ser grátis, ter uma comunidade atuante, o princípio KISS, yada, yada, yada, é tudo muito bom, mas incentiva o uso da linguagem por pessoas que não entendem nada do riscado, nem têm vontade.
Mas daí a dizer:
Já é extrapolar. Eu fui alfabetizado em PHP e aprendi outras linguagens, sei programar sem depender de fóruns e "amigões". Infelizmente, vejo que há essa estigma, e isso é muito ruim para quem usa o PHP seriamente.
Afinal, é uma linguagem madura e excelente para a web. Vide projetos como o Wordpress e o Drupal, no qual roda nosso estimado MeioBit.
__________________
A abordagem do Leandro na arte de blogar
O DRUPAL é uma BOSTA COMPLETA, peça para um analista de verdade dar uma olhada. É assustador. Ineficiente, mal-projetado, trata banco como um aspeiro de 15 dias de experiência...
Sei que você não gosta dele, e não tenho como concordar ou discordar porque nunca utilizei. Mas esse nem é o caso, o Drupal, escrito em PHP, é popular, tanto que é a plataforma que roda o MeioBit. Era só esse meu ponto.
Para defender a qualidade do PHP, talvez seja melhor me ater ao exemplo do Wordpress. Ou alguém discorda, acha que ele é uma porcaria também?
__________________
A abordagem do Leandro na arte de blogar
Em termos de estrutura interna ele também é bem fraco. É melhor que as alternativas mas não ganharia nota dez em nenhuma prova de modelagem de dados.
Se você diz, eu simplesmente acredito. Apesar de ter vontade, nunca abri o Wordpress para conhecê-lo por dentro.
Meu ponto é: o PHP é uma boa linguagem, apesar de ser freqüentemente desmerecida. Se há muitos códigos ruins escritos na linguagem, a culpa é dos iniciantes por vezes preguiçosos, ou apenas inexperientes, que escrevem nela.
Como meus exemplos foram minados, vou recorrer a outra técnica de argumentação para defender o que disse: milhares de sites (inclusive aplicações grandes, em temos de quantidade de dados, em termos de funcionalidade, etc) rodam sobre PHP. Além de ser robusta, está entre as melhores em termos de performance. Apesar de ter o mercado poluido pelos amadores, o profissional competente é valorizado.
Além disso é simples e acessível. É possível ensinar muitos conceitos de programação estruturada E orientação a objetos.
Por isso tudo, para quem está querendo aprender a programar, ainda mais se pretende trabalhar em fazer sites, o PHP é uma boa pedida.
__________________
A abordagem do Leandro na arte de blogar
"..trata banco como um aspeiro de 15 dias de experiência..."
Pelo que tenho visto(no trabalho e em fóruns), pouquíssimos programadores sabem usar banco de dados.
No trabalho eu meio que centralizo tudo a ver com banco de dados. Então aparece muita barbaridade e dúvida em coisas básicas.
Esse tipo de povo(geralmente do Java) que odeia Banco de dados, dizendo que é coisa do passado, é ruim....
Alguns desses são os advogados de mecanismos de armazenagem OO.
Tem gente inteligente nesse meio, mas a maioria é de gente burra que quer simplesmente esquecer que existe disco. Querem só "jogar" as coisas num meio com maior capacidade.
Isso vai dar problema do mesmo jeito, ainda é requisito ter cérebro pra programar de forma eficiente.
De acordo.
Se vocês acham que o problema maior são os maus programadores, levem em conta que a situação RIDÍCULA da modelagem de database no país é MUITO pior.
O povo praticamente estupra qualquer regra, norma e bom-senso com relação a montagem de tabelas, relações, chaves estrangeiras, e outrem.
O pior dos sistemas PHP que eu peguei o código para ver (porque não funcionavam direito, e alguém necessitava fazer que funcionasse), não eram as POG, era o estado lastimável e vergonhoso da modelagem do banco.
Fora o conhecimento estrutural nulo de SQL: Nego fazendo 15 consultas aonde tudo era passível de se fazer com uma.
Pergunto: Se é bom começar com Pascal (meu caso) ou C, não sei: Mas, e trabalhar com database, começa-se por onde ?
A maioria dos cursos de web design que eu já ví, o povo taca SQL direto sem nem explicar antes como que se monta tabelas e relações de forma correta.
O caminho das pedras para BD é o que você disse: estudar estruturas de dados, modelagem de BD, o paradigma relacional, normalização. Depois, e só depois, ensinar SQL, que é apenas uma linguagem. Para essa etapa, uma boa sugestão é o SQLite, muito simples e funcional.
Mas não adianta começar com SQL. É preciso ensinar a pregar antes de dar um martelo. A ferramenta não trabalha por si só.
__________________
A abordagem do Leandro na arte de blogar
Não considero o SQLite muito bom para aprender. Ele é muito limitado.
Isso não é crítica, o foco dele é para isso mesmo.
Para aprender, somado ao que você citou, é interessante ensinar a parte do servidor físico.
Eu cursei uma disciplina "Arquitetura de um Gerenciador de Banco de Dados", algo assim, não encontrei o nome correto :/.
O Foco era analizar as diferentes partes do Servidor de Banco, nada de analisar um específico, e sim os conceitos.
Foi excelente, creio que isso também falte a quem aprende o SQL quebra-galho. Saber o peso que uma consulta pode acarretar. Número de acessos a disco, consumo de memória, paginação, planejamento de consultas, transações, detecção de dead-locks, índices....
Disciplina opcional, escolhi muito bem, pois gostei bastante, professor que sabia muito do que falava, nada de um decorador de bibliografia.
Não adianta alegar que pode aprender como autodidata tudo que se ensina em uma universidade. PODER aprender é uma coisa, a imensa maioria pula muita coisa que considera "chata e frescura". Um dia vem a conta.
Acredita que o Drupal até hoje não tem dicionário de dados? Só uma engenharia reversa safada e nada mais?
Ninguém faz modelagem, diagrama de caso/uso, UML... o que acontece: Esse tipo de coisa só se aprende na boa faculdade OU no mercado. E esses projetos todos começam com gente que ainda não trabalha e/ou entrou como calouro e quer mostrar serviço.
O PHP, nesse sentido, é igual o Visual Basic: atraiu uma legião de scripters que fazem as coisas acontecerem, sem saber como funcionam direito. O Drupal nasceu dentro de um dormitório universitário porque os alunos precisavam de um sistema interno para divulgar festinhas, eventos, documentos para download e trocar informações onde encontrar música, etc.
Essas linguagens interpretadas, de alto nível, tratam tudo como "variant", ou seja, uma variável pode começar um função guardando uma string e terminar com um número inteiro. Aí entra em cena uma linguagem fortemente tipada na vida do indivíduo e ele tem ENORME dificuldade em entender que int a e int A são diferentes e só podem guardar números inteiros.
Depois entram conceitos como referências, delegados, multithreading e você tem o cenário perfeito para passar a suprir o The Daily What The Fuck.
Interessante, não sabia dessa história do Drupal.
Linguagens de alto nível talvez não sejam as melhores para um novato, é verdade. Mas não é ainda pior para uma pessoa que sequer fez um "Hello World" se deparar com referências, delegados, multithreading...?
Dar uma passada em Pascal, por exemplo, linguagem que não tem "vícios" ruins, mas também não é um bicho de sete cabeças, pode ser importante para o aprendiz não entrar em pânico e desistir da coisa toda.
__________________
A abordagem do Leandro na arte de blogar
Ricardo, creio que acho mais prudente dividir o trabalhador de informática em dois caminhos distintos aqui:
Aquele que programa para web, e aquele que vai seguir o caminho do Desktop, para simplificar.
Se você for programar para o Desktop, saber ponteiros, tipagem, lidar com bibliotecas, é realmente necessário. Mais cedo ou mais tarde, ele vai bater no C. Não adianta fugir.
No caso de um programador Web, exclusivamente, HOJE (não sei o futuro),
estes conceitos são desnecessários, por raras excessões.
Um programador pode trabalhar com PHP, Mysql e Javascript nos seus sites (meu caso, quase sempre) e não ter de sequer lembrar de tipagem de variáveis. E, caso ele continue programando só para web, vai ser difícil que tenha que usar C e seus recursos um dia.
Logo, penso EU (e podem cair matando em cima), num curso hipotético de programação voltada pra WEB, eu gastaria este tempo todo aprendendo sobre estas características do C em aulas sobre os padrões web, distinções dos browsers, CSS avançado, e outrem.
Porque, veja só: Eu vim de uma escola de programadores. Eu aprendí C, eu programava em VB6, trabalhava com Delphi e Kylix; hoje, eu sinceramente nem lembro destas linguagens direito, porque não as uso.
Note que estou isolando o C# da jogada. C# é um pouco mais exigente, porém, nada impede que o fulano declare todas as variáveis como ? e seja feliz.
Você está coberto de razão.
Quem programa para web não precisa conhecer ponteiros e gerência de memória em baixo nível, da mesma forma que um programador desktop não precisa saber de compatibilidade entre browsers.
É sempre bom conhecer o maior número possível de conceitos, mesmo os que não estão diretamente ligados à sua área de atuação, mas não é obrigatório.
__________________
A abordagem do Leandro na arte de blogar
Depende de que tipo de programa para web está sendo criado. Vou dar 2 exemplos: websites com ferramenta administrativa ou aplicativos que usam a web como meio de distribuição e acesso a funcionalidades.
Vejamos o primeiro caso:
1. É preciso ser ágil: a camada de apresentação e respeito a padrões é um aspecto crítico, maior inclusive que o "encanamento". Não importa muito se o banco de dados está sendo acessado de uma camada específica ou de dentro da página. Foco em html, css, xml e javascript. A escalabilidade e performance podem ficar em segundo plano. As margens de tempo, custo e correções são curtas e se o desenvolvedor se preocupar com padrões de projetos, arquitetura e documentação, não será entregue dentro no prazo. O uso de frameworks que possam abstrair o trabalho torna-se mandatório. O tempo entre a documentação e o início da programação foi de 3 semanas.
2. Aplicativo corporativo com necessidade de tempo de resposta total de 400 milisegundos que será um produto, vendido para dezenas de empresas, com bases de dados diferentes. O sistema será 90% web e 10% desktop, sendo que parte dele usará um gerenciador de fila, como o MSMQ. O sistema precisa ser capaz de suportar 75 mil usuários ao longo de 100 minutos. O tempo entre a documentação e o início da programação foi de 5 meses.
Os dois são para web, mas com público, foco e empresas diferentes. O projeto 2 precisa de todos os princípios de gerencia de memória bem aplicados. O programador precisa saber a diferença entre transportar dados usando Struct ou uma Entidade, usar uma Lista genérica, um dicionário, quando usar um enumerado, quando iniciar uma nova thread e tratar exceções com muito mais escrutínio que o projeto 1.
É claro que não vou advogar a favor do C como uma linguagem para o cara criar um blog, seria sandice. Nem mesmo o C# ou Java, porque seria perda de tempo. Ferramentas de Blog tem que ser feitas em Ruby on Rails, PHP, Python ou qualquer outra coisa que livre o desenvolvedor para se preocupar com o objetivo-fim: uma ferramenta de blog que atenda aos padrões, seja fácil de manter e possua uma interface fácil de mudar.
Vamos colocar assim: O aplicativo vai ser usado fora da web, nem que seja 1%? Cai sobre o programador de desktop.
Quando eu falo de programador web, é aquele que irá criar sites, simplificando bastante. Este programador é aquele que não costuma ter um curso de ciências da computação, logo, questões complexas de gerenciamento e escalabilidade de dados estão fora da capacidade dele.
Este cidadão, treinado para web, que seria o seu primeiro exemplo, PRECISA ter qualidades que não são enfatizadas em um curso de CC; estas qualidades que você mesmo citou. Sâo estas que eu "proponho" serem introduzidas no tempo em que seria proposto um C da vida para aprendizado.
Eu falo sobre esta seleção de aprendizado por um motivo: Tempo. Uma faculdade média de computação dura aí, o que, uns 4 ou 5 anos, e não dá tempo de enfatizar as duas correntes de forma satisfatória.