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 indicam 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... :P
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.
Ricardo, pela primeira vez concordo com você em gênero, número e grau.
"C Learning for Human Right!!!", ok não ficou legal. Mas não vejo linguagem melhor para aprendizado. Incluindo ponteiros e manipulação de bits que em PASCAL não é tão bom assim.
parabéns!
"Quanto mais eu observo o trânsito nas ruas mais tenho certeza que humanos devem ser extintos" - Zhu Sha Zang
A questão axo que fica em, é relevante para todos hoje aprenderem linguagem de baixo nivel ?
---
Pra min fanboysismo é igual religião e futebol, não se discute
Domínio completo do C é importante porque não existem frameworks ajudando você. Quando manipula um vetor, você precisa saber o que está acontecendo. Hoje temos milhares de pogueiros fazendo projetinhos web sem ter idéia como o HTTP funciona.
Quem leva a profissão a sério, precisa pelo menos entender o básico. Não vai encontrar
mercado para trabalhar especificamente com C, mas depois dessa linguagem, qualquer
outra é moleza.
Ai vai depender, concordo que você vai conhecer como funciona a nivel de hardware, mas em linguagem de alto nivel, não vai ser muito util e se você mudar para orientção a objeto é muito diferente, outros paradigmas, não vejo que seja nescessário dominio completo, mas é obrigado a saber como funciona, algo que não importa qual linguagem que você vai usar.
--
Pra min fanboysismo é igual religião e futebol, não se discute
Minha opinião:
Comece com linguagens mais simples. Ruby, Python, PHP. Depois, parta pra C, C++, Java, etc.
------
Vaca amarela, pulou a janela.
E antes que alguém saia comprando algum livro do tipo "Aprenda C em 21 dias" recomendo a leitura desse artigo do Peter Norvig: Aprenda a Programar em 10 Anos. :)
Eu queria entender o porquê da implicância que o pessoal do Meio Bit tem com o Java. Também não recomendo começar na programação com Java, mas o motivo apresentado aqui não faz sentido, será que é difícil apontar um melhor?
Se a idéia é ajudar em projetos de software livre, porque não falar que o Java é líder em número de projetos no SourceForge, principal repositório de projetos livres do mundo? Java é a linguagem mais popular há anos (http://www.tiobe.com/tpci.htm), a preferida do meio empresarial, simplesmente não vejo motivo para essa cruzada contra o Java.
Gosto muito do Meio Bit, acompanho via RSS há tempos, mas essas críticas injustificadas... Espero que vocês reflitam um pouco sobre esse suposto mal que o Java faz para o mundo!
Abraços a todos!
IGOR BRITO ALVES
(Cultura Nerd)
O unico projeto OS relevante em Java é aquele Godzilla comedor de recursos do Azureus.
O Eclipse não conta ?
O Eclipse conta também. O Eclipse é muito bom.
NetBeans e Aptana tambem :)
--
Pra min fanboysismo é igual religião e futebol, não se discute
Eclipse é MUITO bom sim. Mas o NetBeans cai no argumento do Cardoso porque ele COME memória.
----------------------------------------
Só a mudança é permanente.
Engano seu, netbeans full consome muita memoria sim, mas se for baixar ele apenas com os plugins nescessarios, algo parecido com oque você faz com o eclipse, que baixa os plugins para tudo...
netbeans consome menos memoria que o eclipse
por isso existe varias dist. uma para ruby ou java se outra java ee ... e a full que é realmente pesada
--
Pra min fanboysismo é igual religião e futebol, não se discute
Hmm, entendo. Obrigado pela dica então, realmente não sabia disso.
------------------------------------
Só a mudança é permanente.
Outro programa que uso muito em java é o Spark, client Jabber, e o open fire, servidor Jabber (XMPP), praticamente faz o pacote de trabalho que uso, NetBeans, Aptana, FireWorks, Spark praticamente tudo oque preciso para trabalhar, falta o gerenciador de Banco de dados, vou fazer o meu em java, libero como open-source e pronto :)
--
Pra min fanboysismo é igual religião e futebol, não se discute
Tio, ao invés de fazer um dá uma melhorada nesses:
[],
AC
Bela definição pra esse elefante branco!
"Havendo olhos suficientes, todos os erros são óbvios". Eric Steven Raymond
Não é implicância com Java. Você REALMENTE acredita que aprender a fazer if, else e uma calculadora de temperatura em Java é melhor do que em C? Vou usar meu argumento de novo: o Java foi feito em C, simples assim. Antes de aprender o que é uma máquina virtual e um Garbage Collector, o programador precisa aprender estruturas básicas, sem ajuda.
Outra coisa: vai lá na página da Mozilla Foundation e encontre um único projeto open
precisando de proficiência em Java. Eles precisam de ajuda em tudo, mas precisam de
gente com habilidade em C e C++.
Eu não vejo no meu artigo uma crítica ao Java. Na verdade, se fosse indicar uma linguagem
para aprender orientação a objetos, eu indicaria C++ e Java. O primeiro, por ser uma
implementação mais simples, o segundo, por forçar o aluno a fazer tudo da forma
certa.
Eu acho que o pessoal não entendeu quando você disse "comece".
Facilidades estão aí pra quem já sabe o mínimo necessário. É igual o cara querer programar só arrastando botões, e depois dizer que é programador Java, VB, Flex etc.. pra usar bem esses recursos a pessoa precisa pelo menos entender o que eles fazem e não achar q a janelinha aparece alí por mágica!
"Havendo olhos suficientes, todos os erros são óbvios". Eric Steven Raymond
É por aí mesmo. O programador que manja de linguagens mais antigas consegue tirar o máximo proveito das linguagens novas, ou seja, programas menores, mais eficientes e rápidos. Os que começam por uma linguagem "moderna" como o Java ganham alguns vícios que dificilmente desaparecem e os programas criados normalmente são mais pesados e lentos. Não é uma generalização, claro, mas a grande maioria dos programadores Java são dessa maneira.
------------------------------
Campanha Play Ogg
Desista de entender ... simplesmente ignore-os :)
Claro esse não é um post de implicancia, apenas os do Cardoso.
--
Pra min fanboysismo é igual religião e futebol, não se discute
Sim, linguagem C é realmente "a linguagem".
Porém, não há como negar que linguagens consideradas mais rápidas e comerciais estão ganhando seu espaço justamente por simplificar a programação com o uso de backends, frameworks e farta documentção. Quem quer programar de verdade tem que saber mais de uma linguagem de programação, minha sugestão C/C++ e depois partir para os "extras".
Analisar um programa C/C++ é um saco quando o código não é o seu e a outra pessoa não teve o mínimo de orientação, resultando num código "espaguetoso" do tipo on...gosub.
O franco crescimento de linguagens interpretadas como python é a pressa em começar diretamente na codificação e o requisito multiplataforma, não podemos reclamar porque seu franco crescimento é a prova de ela possui o que as pessoas querem, incluindo aí muitos projetos livres, o Python é largamente usado no Ubuntu, deveras, se eu remover o python do meu ubuntu serão removidos pelo menos 284 pacotes. Eu tô paquerando ela faz um tempo, vamos ver se eu consigo pelo menos chegar a segurar nas mãos :)
Minhas primeiras experiências em programação (na faculdade) foram com C.
Realmente valeram muita a pena, hoje tenho facilidade para compreender qualquer outra linguagem.
Por culpa do MSX que tinha quando era moleque fui contaminado pela facilidade do Basic.
Imagina um pequeno programador feliz por que conseguiu fazer sprites se moverem na tela, movimentar eles, colidir e explodir sprites.
Muitos anos depois tive contato com o VB5 e pirei comprei livros e estudei bastante.
Depois de tempos sem programar voltei para o VB Express 2008.
A cada pulo destes sempre vejo três coisas.
1) Rindo de mim lendo sites de VB
2) Gente começando com JAVA, pois é a "linguagem que dá emprego"
3) Amigos dizendo "Aprende C, cara."
"... A cada pulo destes sempre vejo três coisas.
1) Rindo de mim lendo sites de VB 2) Gente começando com JAVA, pois é a "linguagem que dá emprego" 3) Amigos dizendo "Aprende C, cara.""
E você ainda insiste né ... rsss
--
Pra min fanboysismo é igual religião e futebol, não se discute
:( Sim... :P Eu gosto muito de VB.
Sou bem produtivo com ele, meu lema é:
Programar não é meu ganha pão.
Programar em VB é uma diversão.
:D
Gostaria de poder e falar o mesmo :(
---
Pra min fanboysismo é igual religião e futebol, não se discute
quem manda só querer saber de bload,r :)
tinha dbase, asm, c para MSX também, mas voce ficou só no :
10 CLS
20 PRINT "APRENDER BASIC"
30 GOTO 10
Vê se dá um CTRL+C na sua vida, e sai do "mesmismo". :)
:( Meu programas na verdade começavam com 10 Screen 2. Sobre o control+c na minha vida já respondi acima. :P
Também começei com BASIC (com direito à linha de instrução, GOTO e tudo hehe), e sem ninguém para me dizer o que fazer diga-se de passagem (era eu, o XT, o quickBasic e o help dele). Acho engraçado o pessoal ficar xingando o BASIC (e quem se atreve à usá-lo, hereges!), como se programar tivesse que ser algo misterioso e complicado que só "entendidos" possam fazer. Balela, para mim linguagem boa é a que lhe permite fazer o que você precisa e cabou, ponto final.
E como curiosidade: Toda a automação na usina onde trabalhei era feita no quê, adivinhem? BASIC. E funciona muito bem até hoje diga-se de passagem.
Se você consegue ler esta mensagem então o seu computador irá se auto-destruir em dez segundos, tenha um bom dia :)
E par começar a estudar, que curso fazer? Ciência da Computação?
Na faculdade comecei com Fortran, que tinha o objetivo de ensinar basicamente algorítmos. Mas fui realmente aprender a programar alguns semestres depois quando comecei a aprender C.
Aqui no curso de eng. de telecom na UFF há quem defenda que essa primeira disciplina de introdução à programação deveria ser dada em C também. No meu caso acho q foi importante ter visto o Fortran, aprendíamos coisas banais e implementávamos facilmente. Mas concordo na idéia de C ser a primeira linguagem de um programador.
Já vi casos de pessoas acostumadas com PHP se enrolarem (por falta de costume mesmo) com C. As estruturas bem parecidas, mas com necessidade de declaração de varíaveis e muitas outras coisinhas que o PHP já faz nativamente. É mais fácil, sabendo bem o mais complexo, fazer o mais simples.
Pra mim o cara não deve aprender a programar com frameworks, são facilidades pra serem usadas por quem já tem algum conhecimento.
Quem quer aprender tem que começar sim a alocar a memória corretamente e cuidar muito bem dos ponteiros!
E como diria um professor: Senão você SF (segmentation fault, ou o que sua imaginação permitir). ;)
"Havendo olhos suficientes, todos os erros são óbvios". Eric Steven Raymond
"As estruturas bem parecidas, mas com necessidade de declaração de varíaveis e muitas outras coisinhas que o PHP já faz nativamente."
Em PHP não precisa declarar variáveis?!?!?!? Meu Deus, onde esse mundo vai parar...?
--
Evite a extinção de uma espécie ameaçada: use corretor ortográfico!
Me referia à tipagem dinâmica. Desculpe-me por não ter sido tão didático. ;)
"Havendo olhos suficientes, todos os erros são óbvios". Eric Steven Raymond
Ricardo, eu também concordo que Java não é a melhor opção, tanto que deixei isso claro no meu comentário anterior. Não por ele ser pesado e corporativo (não sei o que você quis dizer com isso), mas por ele "forçar" a escrito da código OO. Então concordo com você na preferência por uma linguagem mais crua, com menos recursos, para começar. E quanto a melhor aprender com C porque Java foi escrito em C, então seria melhor ainda utilizar Assembly ou então seqüências diretas de 0's e 1's.
Eu aprendi a programar com Pascal, mas acredito que teria sido melhor aprender em C. Não comentei porque você prefere C ao Java, mas pelos argumentos (embora no seu comentário anterior eu concorde com coisas como Garbage Collector etc).
Abraços!
IGOR BRITO ALVES
(Cultura Nerd)
Uma coisa importante a salientar e que não tem a ver com programação, PAREM DE IMPLICAR COM TRADUTORES.
Quanto mais tradutores melhor. Não são todos os programadores C/C++ que são aceitos para ajudar num projeto. Mas todo tradutor é bem aceito, afinal todos queremos software em nosso idioma.
É justamente aí que reside o problema. Se aceitar qualquer um como tradutor, a qualidade ficará ruim, porque é muita gente dando palpite ou traduzindo umas expressões aqui e acolá. Isso pode gerar inconsistência da tradução, o que detona a qualidade da tradução como um todo. Uma palavra é traduzida de uma forma em uma frase, é traduzida de outra em uma segunda frase e ainda pode ficar no original em inglês em uma terceira frase.
Esse é um problema crítico, mas não querem enxergar esse problema.
------------------------------
Campanha Play Ogg
ABSURDO! Não bastasse as besteiras que o Cardoso escreve aqui no Meio Bit, vem você se meter em seara que desconhece. Eu sou professor e garanto com 100% de certeza que C NÃO DEVE SER A PRIMEIRA LINGUAGEM A SE APRENDER (De onde você tirou esta idéia? No mínimo só quer ser polêmico, certamente não foi a partir de experiência na área educacional.) A melhor linguagem para ensino é (até que se crie outra) PASCAL. Pascal foi criada com o foco em ensino. Veja lá o que diz a wikipedia "O próprio Niklaus Wirth diz que Pascal foi criada para ensinar programação estruturada...", e logo a seguir, "A linguagem é extremamente bem estruturada e muito adequada para ensino de linguagens de programação.".
Exemplo simplório, a atribuição, o que é mais fácil de explicar para um aluno que nunca viu programação: X := X + 1, ou o conceito não matemático de C: X = X + 1 (igualdade impossível na matemática). Isto é um só exemplo dos muitos que posso citar.
Bicalho, e este conselho serve também para o Cardoso: Falem SOMENTE de assuntos que vocês dominam!
(O Meio Bit esta, cada dia que passa, mais indigesto e difícil de ser lido. Esta passando de "Micro Sistemas" para "Informática Exame". Lamentável!)
Já dizia minha santa avó: A porta da rua é a serventia da casa.
Esse é o tipo de professor que quero longe de mim. Mente fechada e dono da verdade absoluta do supremo universo!
"Havendo olhos suficientes, todos os erros são óbvios". Eric Steven Raymond
Esse é o tipo de professor que quero longe de mim. Mente fechada e dono da verdade absoluta do supremo universo!
Concordo, nada a acrescentar! :(
IGOR BRITO ALVES
(Cultura Nerd)
Eu entendí sua idéia, mas voce foi infeliz no exemplo porque voce citou sua preferencia por Pascal, que é uma excelente linguagem e em geral não deixa um aprendíz dar um tiro no pé. Mas toda linguagem tem sua forma "verborratica" de expressar, e algumas são algozes inclusive as mais fáceis. Voce citou o pascal com o X:=X+1, mas normalmente se faria Inc(X) e tava tudo terminado, o que lembra muito o X++ de muitas outras linguagens.
Ensinar C/C++ como a primeira linguagem é possível se esquecermos o preconceito e não focarmos tanto na sintaxe porque um programador formado verá sintaxes muito diferentes de uma linguagem para outra, mas na lógica. Meu primeiro empregador ao ver o meu código e a forma como resolví o problema fez um elogiu, mas disse que se fizesse-o de forma seqüencial iria resolver o mesmo problema em 1/3 do tempo e voilá, fez a mesma coisa num 1/10 do tempo. E meu empregador era coboleiro considerado já na época como uma linguagem em extinção e matou a pau o iniciante em turbo-pascal. Portanto, é sempre melhor ensinar focando a lógica e não se prender muito aos verbos da linguagem.
Não iniciaria com VisualStudio também, começaria com o GCC na linha de comando com o hello world e aumentaria progressivamente a dificuldade. E ainda acho que dependendo do curso, ainda deveria ter OpenGL no final, só para ninguém ter mais saudades dos sprites octetos no MSX (Rhyel, lembrei de tú).
Eu já havia observado sua predileção pela encheção de saco.
Seus cinco comentários, até hoje:
Algoritmo revolucionário de redimensionamento de imagens (29/08/2007)
13/3/2008 - uma data que viverá na infâmia (15/03)
Claro que não. Você não sabe NADA, e dá pitacos como se fosse um expert no tema. Vá se informar antes de postar algo.
Aonde nenhum iPod jamais esteve... (15/03)
Agora sim, está explicado o Stallman (29/02)
E mais este.
Cinco comentários, os cinco APENAS para criticar o site. NENHUM deles falando de qualquer outra coisa.
Creio que deva ser um moleque de 15 anos con raiva do Cardoso. Professor certeza que não é.
Os editores estão demorando pra banir este.
Ele está demorando a assumir a condição de troll explícito. Por enquanto é apenas patético, e isso não é motivo de banimento.
Eu tenho 100% de certeza que esse cara é infeliz.
----------------------------------------
Só a mudança é permanente.
Quanto a falar que eu desconheço o que estou falando, acho pretensão demais sua. Quem sabe faz, que não sabe, ensina, não é assim que diz o ditado? Comecei a programar em C há mais de 10 anos, e as faculdades que se prezam adotaram ele também, até para ensinar algoritmos. O motivo é que ao ensinar Java, não há problemas na migração da sintaxe.
Vejamos: quanto um aluno resolver ajudar em um projeto open source, quantos códigos
bem escritos em Pascal ele vai encontrar? Em C ele vai achar dezenas de milhares de
linhas de código ou um sistema operacional pouco conhecido, chamado Linux.
E daí que o Pascal é considerada pelo seu próprio autor como a ideal para aprender a programar? Cada um quer vender seu peixe e usa a forma que pode.
No mais, o que vale é a opinião de cada um. Se o Bicalho acha melhor começar por C, é a opinião dele e isso não reflete a opinião de todos os outros editores. Se na sua opinião é melhor começar pelo Pascal, isso é opinião sua. Você perdeu uma excelente oportunidade de incentivar o uso do Pascal por causa da forma com que escreveu o texto. Se fosse um texto argumentativo, explicando os prós do Pascal em relação ao C, você conseguiria o objetivo, expondo uma opinião de forma adequada. Mas sair por aí chutando meio mundo e usando argumentos tão sólidos como gelatina, o que você conseguiu foi o oposto de sua intenção.
------------------------------
Campanha Play Ogg
Esse é um problema comum entre os que adoram criticar matérias do Meio Bit e diversos outros blogs. Criticam sem coerência e se expressam muito mal. Quando o argumento é válido, geralmente as críticas são muito bem aceitas e as opiniões respeitadas, mas do jeito que esse cara fala...não há nem o que respeitar...
"Havendo olhos suficientes, todos os erros são óbvios". Eric Steven Raymond
"Eu sou professor e garanto com 100% de certeza"
Essa frase retira todos os créditos do comentário dele.
Como diria o Professor Girafales: "Somente os tolos tem certeza absoluta de algo!"
______________________________________________
Assinatura?
Nem pensar, não entenderiam minha letra!
Minha sorte e que meu Blog não é manuscrito!
C, Python e LISP. Nessa ordem.
Retiraria LISP.
Não sei, mas os cadistas se envolveram com LISP e criaram uma forma peculiar onde não é possivel "decifrar" o código. Eu só entendo o código que eu mesmo escreví, codigo em LISP alheio para mim é alienígena.
Artigo excelente! Concordo plenamente que C deveria ser a linguagem primária de aprendizagem. É extremamente básica e, trabalhando pouco a pouco os conceitos, não é mais difícil de se aprender que Pascal.
Por experiência própria(convivendo com alunos de CC), o preconceito contra o C é sua intimidade com a programação por ponteiros e referência. Infelizmente o curso começou com Java, depois pra galera entender C e alocação dinâmica foi um custo... teria sido bem mais fácil o caminho contrário...
Bruno Guedes
-- Toupeira Profissional
-- Universitário
-- Bloguista
"Boa Noite e Boa Sorte" (Edward R. Murrow)
Eu estou começando a minha grande jornada nesse mundo da programação, estamos aprendendo C# e eu achei ele uma liguagem maravilhosa, realmente muito prática e o limite é a sua imaginação. Estou usando o BloodShed DEV gostaria de saber a diferença desse para o que o Bicalho recomendou.
Quando questionado nosso professor falou assim:
"Vocês tem que começar pelo C# para entender como que funcionam as coisas em um nivel mais baixo que programação orientada a objeto, vocês tem que entender a lógica de como as coisas funcionam."
Ele programa em Java/PHP, achei legal que ele não quer ensinar ideologia para ninguém, perguntei para ele se preferia Linux ou Windows ai ele falou "O que melhor atender o projeto".
O mais engraçado é ele corrigindo nossos códigos: "Agora vou mostrar como gastar menos poder de processamento..." aheuaheeheuaheuae
Esse sim é um professor que tem o meu respeito.
Tem um professor na UFRJ que é conhecido por fazer otimização extrema de código.
Em assembly.
Durante a aula.
Recursivamente.
"E com isso economizamos 3 bytes de memória, incrível, não?"
O nível de reprovação na disciplina é alto, diga-se de passagem, apesar dele ser um excelente professor, com uma ótima didática. Nêgo não consegue nem programar em C direito, quanto mais em assembly... (eu mesmo só passei na 2ª tentativa)
-------------
"Se a verdade está lá fora, o que estamos fazendo aqui dentro?!"
Ele também gosta de código limpo, mas não nesse nivel ai, se funciona tudo bem mas ele faz questão que a gente veja que tem uma forma melhor.
Eu acho que primeiro deveriam ensinar a programar. Ensinar lógica, algoritmos, conceitos básicos.
Linguagem o aluno se vira.
Eu acho que primeiro deveriam ensinar a programar. Ensinar lógica, algoritmos, conceitos básicos.
Linguagem o aluno se vira.
Concordo... Portugol neles!!! rs :)
É preciso ter pena de quem nao começou com C. É perigoso quando uma universidade introduz em fundamentos de programação linguagens orientadas a objecto como primeira cadeira em detrimento de linguagens estruturadas como C. É contra o 'aprendizado' do processo de abstracção de q tanto se usa em Java.
entao alguem ainda nem sabe criar uma funçao de tratamento de strings com apontadores e ja quer sair por aí criando GUIs? Nao é concebivel.
Nao se preocupem com seus problemas de matematica, os meus sao ainda maiores. Dr Albert Einstein.
http://nataniel.tk
já vi muito gente recomendando python, entao recomendo esse site, que tem uns pdfs bacaninhas e uma boa wiki, montada em python, é claro
ººno mundo so existem 10 tipos de pessoas, as que entendem...e as que nao entendemºº
RafaelDFMelo'Blog
Não importa o que digam, mas o mundo é JAVA!
- VEM COMIGO, NO CAMINHO EU EXPLICO...
Cara, você vive em um mundinho à parte, pelo visto...
E você em outro ?
Não que eu axe que o kra esta certo mais... você simplesmente fala mal do java e pronto...
Aposto que nunca trabalho com java para falar isso...
assim como os que falam mal do .NET mesmo nunca tendo trabalhado com ele...
"restarta o tomcat" te lembra alguma coisa?
Eu já ouvi isso mais do que gostaria.
Dependendo em que nescessita sim, por que ?
mais oque tem o tomcat com isso ? java n se resume ao tomcat, que as vezes tambem me da nos nervos... ja usou glassfish ? ou outro server que são mais que simples containers ?
Os javeiros falam do Java como se fosse o supra-sumo das linguagens de computação, mas se esquecem de fazer umas perguntinhas básicas:
- Se o Java fosse tão bom assim para substituir todas as outras linguagens, por que é que as linguagens anteriores ainda persistem? E por que continuam surgindo novas linguagens por aí?
- Qual é a eficiência dos programas Java? Será que eles são rápidos o suficiente para ser usados em qualquer aplicação? Existe algum programa comercial bom feito totalmente em Java? E algum SO?
Os javeiros precisam se tocar que cada linguagem tem o seu mercado específico. E a tão alegada "multiplataforma" dela não é tão multiplataforma assim. Conheço programadores Java que falaram que isso é uma farsa, porque é preciso testar os programas antes, porque funcionam bem em uma plataforma, mas em outra dá pau direto.
Se os javeiros reclamam tanto do preconceito contra o Java, eles deveriam primeiramente ver como é que eles mesmos estão agindo. A maioria não passa de fanboys que aprendeu Java como primeira linguagem e não consegue aprender mais nenhuma, por isso que fala que "só o Java presta", isso para não falar das várias asneiras que li lá em cima.
------------------------------
Campanha Play Ogg
Eu comecei a aprender C no inicio do ano, tirando o fato que os meus códigos ficam uma bagunça(mas funcionam) to achando legal...
Código pode ficar uma bagunça em qualquer linguagem, mesmo com todas as limitações artificiais impostas pela linguagem (Java) ou ajuda de gerenciadores da IDE (Delphi).
Depois que você já souber programar é hora de aprender a se comportar e tornar seu código modular. Mesmo em C, é plenamente possível.
Tem alguma vantagem organizar tudo para ficar bem visível, tirando a facilidade na hora de achar erros?(por enquanto não ligo muito para isso, meu maior programa teve 120 linhas).
Várias vantagens. Além da facilidade de debugar citada por vc tem:
1. Algum tempo depois de vc ter parado de trabalhar no código, nem vc mesmo lembrará o q faz aquela implemenção obscura que chama algo lá não sei onde. (tá isso pode ser resolvido tb com comentários) - Pra mim isso é o principal.
2. Outros programadores entenderem o que vc fez.
3. Implementação de novas funcionalidades ao programa.
4. Acredito que facilite para o interpretador de comandos da linguagem processar o código, economizando memória e processamento (acredito!)
Por enquanto foi isso que lembrei.
E tamanho de programa não é documento. 120 linhas ainda é bem pouco, mas vc já deve se preocupar com organização até mesmo pra não viciar errado.
"Havendo olhos suficientes, todos os erros são óbvios". Eric Steven Raymond
Organizar o programa é uma prática saudável. Se você não deixa seus programas bem estruturados, pode ter certeza de uma coisa: quando alguém for fazer uma alteração ou uma manutenção no seu programa, sua mãe será lembrada :D.
Quando está se iniciando, é normal pensar que é besteira dividir o programa em diversas rotinas. Mas depois que você mesmo começa a fazer isso (nem que seja na marra), perceberá que realmente facilita muito a visualização do programa e acabará fazendo isso naturalmente.
------------------------------
Campanha Play Ogg
JAVA não é um mundinho, é um MUNDÃO...(vai uma xicara aí?)
- VEM COMIGO, NO CAMINHO EU EXPLICO...
Concordo com C. É uma linguagem extremamente minimalista, com implementações abundantes focadas em performance e em programação de sistemas de infraestrutura. Pascal também seria boa pedida, por serem praticamente equivalentes, exceto na sintaxe e em um sistema de tipos mais forte, mas na prática não é muito usada na indústria.
Se depois o cara quiser adentrar por conceitos mais avançados e esotéricos, pode tentar Lisp, Haskell, Erlang e Smalltalk ao invés do lugar-comum das linguagens mais usadas na indústria... Erlang, desenvolvida pela Eriksson, é uma boa pedida para quem quer adentrar o mundo da programação fortemente paralela.
Poxa, achoq eu não mata ir devagar. Pascal pra começar, ou até mesmo alguma implementação de Portugol, afinal, antes de sequer entender conceitos como ponteiros e etc, o cara tem qeu entender a lógica basica, if, while, for, variáveis, etc. Com uma linguagem simples, isso fica bem mais facil. Depois de dominar a lógica básica (basica mesmo) ai da pra partir pra C e entender melhor o computador. Acreditem, mas tem gente que entra em cursos superiores da area de computação que não tem NENHUMA noção de programação. Pra esses, começar com C é a perdição. Alem de que, fale pra neguinho aprender C, ele vai usar printf e achar que já aprendeu, sendo que se perguntar pra ele o que é stdio.h ele pergunta se é de comer ou de passar no pão.
Ao invés de ficar discutindo qual linguagem de Programação é melhor? Acredito que existam linhas de pensamento nesse “post” que seriam os paradigmas de programação e as linguagens de programação.
Existe muito kra que se diz “master of puppets da programação” que utiliza uma linguagem orientada a objetos que só faz as coisas de forma estruturada. É como utilizar um carro de F1 para andar nas ruas do centro de São Paulo, ou seja, consegue mas não usa todo o carro. Por isso que existe muito “macgyverismo” em programas.
Há também uma diferença extrema entre codificador e programador.
Programador pensa na lógica e como executar pensando em um paradigma de programaçãoe documenta para o codificador.
Codificador aquele que sabe qual a linguagem usar seguindo o paradigma e a lógicaproposta pelo programador, ou seja, se o “cachaceiro do programador” usar OO no projeto; o mano do código tem que utilizar SmallTalk, Java, C# ou ShamanOO, mas pouco importa qual linguagem utilizar o importante é funcionar a bagaça de forma pensada.
Ninguém precisa saber uma linguagem de ponta a ponta, o manual já sabe e ele é muito melhor que qualquer indiano superdotado, saber como programar de verdade ai já é outro caso.
Sem mais
Shamanboy
---
kernel panic: /dev/brain
Pode-se resumir seu texto em uma frase mais legal: existem programadores e "pogamadores".
Também há um termo legal que descreve muito bem o que mais há no mercado: codemonkeys. Não adianta saber os comandos se não sabe criar uma estrutura lógica decente.
------------------------------
Campanha Play Ogg
Cuidado.
A linguagem *não é* orientada a objetos, ela *tem* orientação a objetos.
Orientação a Objetos não é a forma adequada para resolver problemas comuns, mas é a forma de melhor reutilização de códigos. Há lugar para as duas coisas, vide C brigando com o proprio C++
problemas comuns são aqueles que resolvemos de maneira comum.
E também a orientação a obejetos está mais proxima dos problemas encontrados, com a optica dos problemas bem proximo.
lógico se vc for programar em PIC1684 vc utiliza Assembler ou C.
Se você acha comum escrever aquilo que você fez mais de uma vez,
então cumpadi ....
sem mais
Shamanboy
---
kernel panic: /dev/brain
Não faz muito tempo, escreví uma calculadora para sistemas de exaustão. Usei o C. Poderia ter feito em C++, mas para que a pilha C++ toda se sei que não haverá orientação a objetos, irá muito bem se o fize-lo proceduralmente ?
As vezes ser procedural é mais produtivo.
É claro que se voce escreve muito OO, deve ter exemplos para quase todas as situações e é um disperdício não usa-las. Mas o meu ponto é, alguns algoritimos (minha opnião) ficam melhor proceduralmente ou de forma estruturada.
Nesse ponto tem razão.
O certyo é utilizar as ferramentas de acordo com o tipo de obra que for executar.
sem mais
---
kernel panic: /dev/brain
Achei muito legal esse artigo. Concordo, acho que começar por uma linguagem OO não é uma boa, os conceitos de OO são um tanto complicados para você aprender sem saber programar nada, linguagens impertivas são bem mais simples, você aprende conceitos de lógica, programação e algoritmos sem stress, sem precisar de SDKs, toolkits e ambientes de desinvolvimento complexos. Começei com C na faculdade (hoje estou vendo Java), no começo ficava meio intrigado, afinal você no início você só faz brincar com C, não constrói nada muito útil, ou amigável (GUI); mas hoje vejo a grande vantagem de começar com C, um dos pontos mais fortes é no sentido do funcionamento de um programa, da alocação de memória, compilação, comunicações com o SO, começando por uma linguagem mais alto nível (python, ruby, PHP, Java, C#) esses conceitos passam em branco, a maioria dessas linguagens tem gerenciamento altomático de memória, garbage collector, etc. Você aprender o que é um vetor, um string, como eles se comportam na memória, como manipular ponteiros, alocação dinâmica... quando vai pra Java você consegue aprender muita coisa por simples analogias somadas aos conceitos de OO.
Pascal também é interessante pra se começar, mas acho que quem vai seguir a área de computação, pode se arriscar em C mesmo, não vai estar perdendo tempo. ;]
O que eu gostaria de saber se o C# faz eh rastreabilidade, gostaria ver para onde as coisas estao indo, ver os estados das variaveis em determinado momento seria legal.
Em sincera opnião de alguém que faz faculdade de computação, para mim acredito que seja melhor ir pelo caminho de C, por diversos fatores já ditos, mas repetidos:
1 - C é a mãe de todas as linguagens, quem sabe C facilmente entende outra linguagem, contudo o contrário nem sempre é possível (da seguinte forma, se você aprender Pascal e depois for estudar C, então terá que praticamente reaprender tudo denovo, já que Pascal estruturalmente falando é totalmente diferente de C, enquanto para C Pascal é apenas um simples dialeto).
2 - C é multi-plataforma, em qualquer lugar encontrará C, ela foi projetada para ser multi-plataforma (a nível de fonte é claro), sem contar que existe muito material para C.
3 - C dar mais liberdade de desenvolvimento, por incrivel que pareça, você pode fazer muito mais coisas em C do que em qualquer outro lugar, por exemplo: ponteiros em C são mais físicos e menos abstratos, como a linguagem encentiva muito o uso de ponteiros principalmente seu sucessor, no caso C++, fica muito mais fácil entender o uso de ponteiros do que Pascal que torna isso bem mais abstrato, sem contar que você se sente mais livre a programar, já que C funciona focado em funções, do que Pascal, apesar deste usar de funções.
4 - C possui mais documentação, em qualquer lugar podesse encontrar documentação para C, ajuda é o que nem falta, principalmente para quem usa um Unix-Like.
5 - C lhe faz entender como as coisas realmente funcionam, outras linguagens nem fazem você realmente ver a Matrix da informatica, somente alguma coisa ou outra, mas em C, você entende tudo, até mesmo a POO, como é a idéia de segurança de código e outras coisas.
Mas sinceramente eu recomendaria as faculdades e universidades, nem iniciarem o aprendizado diretamente numa IDE, todos nós sabemos os problemas que uma IDE pode ocasionar, em sincera opnião acredito que o certo a se ensinar na programação seria num bom editor (recomendo o VIm), um bom compilador (no caso o GCC), um bom debugador (no caso o GDB) e uma boa ferramenta de construção (no caso o CMake), com isso o pessoal realmente poderia aprender a programar e nem se prenderiam a uma ou outra IDE, e a partir disso poderia realmente usar alguma IDE para trabalho, já que teria mais dominio, caso houvesse algum problema com relação a IDE em uso, mas a outra vantagem de se começar assim seria em perceber as vantagens da IDE, quer dizer, saberiam o que poderia ser útil e o que seria inútil no que está fazendo.
Pode até parecer masoquismo, mas nem é, IDEs são boas, são, mas nem deixam de ser exclusivas a ponto de ter muitas dores de cabeça na hora do desenvolvimento, mas quando você começa vendo tudo isso separado, você aprende a ter um dominio sobre realmente a programação, deixando de ficar tão preso a somente uma IDE e considerando apenas a IDE como uma ferramenta para uso caso nem dê problema.
De fonte de referencia em C, existem várias, mas uma das melhores que já vi é C Completo e Total (uma nota de aviso a quem for usa: ela nem presta para aprender, usar como fonte de estudo é um saco e perda de tempo, só presta para quem sabe o que está procurando, quer dizer coisas isoladas).
Umas outra fonte de aprendizado seria aprender a usar a metodologia de desenvolvimento orientado a objetos (isso é diferente de programar com uma linguagem orientada a objetos), pois como C é flexivel, você poderia entender como seria na realidade a programação a objetos, sem contar que teria uma versatilidade maior do que programar usando uma linguagem de POO, quer dizer, você pode fazer melhor uso da OO a sua necessidade e flexibilidade, sem contar que poderia evitar o grande problema de estanciar um objeto diversas vezes com todos metodos repetidas vezes, ao invés de usar uma dada função para vários objetos de forma segura e isolada, usando a diretiva static.
E para terminar, lembrem-se de uma coisa: diferente de outras linguagens, C foi planejada e estuda para ser o que é hoje (apesar da ausência de tipo boleano, mas nem tudo é perfeito), todos sabemos que é uma linguagem interperene, que nunca será deixada de lado, pois uni o poder do assembly com a versatilidade da programação procedural, nem importa o que seja dito, se é defasada, se é inútil, ela nunca vai deixa de existir, caso os computadores quânticos passem a substituir os pc caseiros.
Apesar de não entender de programação (só o básico de algoritmo, lógica e um pouco de shell script) eu concordo com o ponto de vista de que é preciso primeiro aprender as coisas da forma mais difícil.
Os bons professores (aqueles que depois de te ensinar fazem você se sentir seguro em relação ao assunto) são assim: ensinam como chegar na fórmula/tecnologia que você vai usar de verdade usando o básico (C, Pascal), que é o que você não deve esquecer, mesmo que fazer usando o básico seja mais complicado, porque assim você entende o que o complexo (Java, C#, Ruby) faz e ele torna-se mais coerente na sua visão. Acredito que isso vale para todas as áreas do conhecimento humano.
Ainda lendo minha assinatura?
O Ser-Humano (leitor do meio-bit) é realmente um ser esquisito, polemico e contraditório...
É facil notar que tanto quem escreveu o post como quem fez a maior parte dos comentários não faz ideia do que está falando e está repetindo o que alquem disse...
não existe verdade absoluta meus caros, não guando o assunto é PROGRAMAÇÃO.
lamento informa-los, mas a escolha de uma linguagem de programação para se aprender a programar não deve ser baseada em absolutamente nenhum dos critérios mencionados, e segundo, não existe um melhor nesse sentido, isso pode variar de forma muito ampla, em função de quem vai aprender, quem vai ensinar e qual o objetivo da aprendizagem.
NÃO EXISTE UMA RECEITA DE BOLO... COMO A MAIORIA GOSTARIA DE ACREDITAR.
pra aprender a programar requer tempo, dedicação, vontade e vocação. Se você não tem um desses requisitos, não é a linguagem que vai mudar se você vai aprender ou não e se isso vai ser mais facil ou dificil.
PASCAL, JAVA, C, procedural ou OO, para Internet ou Desktop, com ou Sem FrameWork, indiferente da IDE, nada disso no final importa, o que faz a diferença entre um bom programador e um bom copista é a capacidade de abstração e a criatividade, e isso não tem como ensinar para ninquem, ou o fulano QUER APRENDER, ou não tem jeito, vai morrer na praia.
O Segredo está dentro criançada, se querem mesmo ser programadores, não procurem receita de bolo e não ouçam esses bloqueiros que repetem o que ouvem... sigam seus corações e indiferente dessas baboseiras de linquagem, arquitetura, ide e framework, procurem entender o problema, a solução, como acontenceu, e acima de tudo, façam suas escolhas baseadas no que é o melhor e mais simples pra vocês, e não pros bloqueiros ou professores, pois isso trata-se apenas de vocês.
Engraçado como para defender o seu ponto de vista, primeiro você precisa desclassificar o autor. Fez a mesma coisa em um post sobre Java, fazendo de sí mesmo um completo imbecil. Sinto informá-lo, mas ferramentas, frameworks e a escolha da linguagem de programação influenciam na formação e capacitação.
Um arrastador de botões usando ferramentas visuais jamais será um solucionador de problemas como uma pessoa que partiu dos fundamentos básicos. Oh, mas eu e todas as faculdades de ciência da computação no mundo estamos errados.
Recomendo a leitura, antes de continuar falando bobagens, Code Complete, Second Edition, capítulo 4.1, Choice of Programming Language. Vou colocar aqui uma passagem, só para seu entretenimento:
"Studies have shown that the programming-language choice affects productivity and code quality in several ways."
E usam métricas para provar, por exemplo, que o Python executa 6 vezes mais por linha de código que o C. Ora bolas, quem está aprendendo precisa pelo menos ter noção do que está sendo facilitado. Ou você vai ter coragem de dizer que um cara que usa Ruby on Rails, se tirar o Rails, ele vai conseguir ser tão produtivo quanto antes? E se tirar o Visual Studio de quem trabalha com C#, o WebSphere ou o Weblogic de quem trabalha com Java, obrigando a usar o bloco de notas?
Não precisa responder, porque você não sabe argumentar. Faz favor: caia fora dos meus posts.
Boa!
__________________
A abordagem do Leandro na arte de blogar
Eu comecei a listar todas as vantagens de se usar uma linguagem "magra" como C, mas quando cheguei na metade percebi que realmente o Bicalho tem razão.
Recomendo esta leitura.
Aqui o mais interessante do texto: "Uma falácia recorrente é a falácia ad hominem que é o ataque pessoal ao seu interlocutor ao invés de atacar o argumento. É uma falácia que visa fugir do assunto proposto e em geral é feita quando o falacioso percebe que seus argumentos foram refutados ou quando ele não tem argumentos para refutar os do seu interlocutor. É uma tentativa de desqualificar o interlocutor, desviando o argumento para o lado pessoal, citando exemplos da sua vida, ou coisas que fez ou escreveu fora do assunto em questão. Além disso é uma covardia e desqualifica o próprio atacante."
Em algum momento ofendi alquem? chamei alquem de imbecil?
por que vc veio com os dois pés?
por que levou para o lado pessoal?
não aceita critica?
quem é o IMBECIL?
Releia este trecho e você entenderá:
"É facil notar que tanto quem escreveu o post como quem fez a maior parte dos comentários não faz ideia do que está falando e está repetindo o que alquem disse..."
Você simplesmente chutou quase todo mundo, dizendo que são meros papagaios, que repetem aquilo que escutam e não sabem o que estão falando. Só que você deveria ter noção de que muitos aqui têm anos de experiência com programação e por isso não são meros papagaios, falam com consciência, pois tiveram a melhor escola possível: experiência.
------------------------------
Campanha Play Ogg
agora tive a certeza de que você repete o que lê e não possui senso critico nenhum.
olha cara, apenas escrevi o que está evidente, nada alem disso, em nenhum momento eu o OFENDI, não entendi o por que vc se ofendeu!
faça o seguinte, sabe aquele jingo... então.. aquele mesmo, com uma rima estremamente elegante e inspiradora...
vai lá vai...
Ahh... mais uma coisa, não escreva sobre programação cara, faça esse favor para si mesmo...
Ahh... nem sabia que aquele post sobre Java era você quem tinha escrito... isso apenas reforçou mais a ideia que passei a ter de você nesse momento...
por todos nós cara, amadureça certo.
e não perca tempo respondendo... apenas delete o comentario, esse, os anteriores... é mais simples e mais civilizado cara! não concordo com essa postura, porem, você não tem o direito de me chamar de imbecil, mesmo que eu seja um, sabe por que?
por que internet é um meio publico cara, e isso é ofença! se você cai na isca de um babaca, um babaca de verdade, quem sofre a cossequencia é o MeioBit... na justiça, com advogado e tudo... fica esperto MULEKE... pense antes de OFENDER, ok... é de boa, acredite, estou tentando ser legal, estou te dando um toque... um abraço
Deixa eu explicar como se fosse para uma criança de 6 anos: qual parte do "caia fora dos meus posts" você não entendeu? Aqui não é lugar para trolls: banido e obrigado pela preferência.
E é ofensa e não "ofença".
HUAHUAHUAHUAUHHA PWNED.
"Não me irrite, Sr McGee. Não vai gostar de me ver irritado"
Eu aprendi lógica de programação aplicada em um compilador Turbo C da borland em Dos.
ainda lembro dos printif, include e outros comandos o C é uma linhagem que não facilita em nada implementar o seu código isso é muito bom porque da ao aluno a visão de todo o processo de construção mais trabalho que isso só se o programador quiser aprender linguem de máquina 0100010001 doideira.
Cara.. tu é muito puxa-saco da MS hein?? Jesus... vai te internar..
És quase um ( Stallman * (-1) ).
:sick:
Seria esse comentário por causa da indicação do Visual C++ Express, usado pela Mozilla Foundation para criar o software livre? Porque, ao invés de reclamar como um bebê chorão, você não fez como outros leitores, acima e indicou outros?
O Dev C++ parece ser uma boa pedida... bah, não vou perder mais meu tempo.
Eu costumava usar o Visual Studio 6 para brincar com C (principalmente, cutucar as entranhas do GLQuake). Ultimamente eu passei a usar o MinGW Developer Studio, que é um clone free do VS6 mas usando o Minimal Windows GNU (MinGW) como compilador. Eu recomendo.
---
Tecnologia deve ser o meio, não o fim.
Ao invés de defender a linguagem A ou B, eu vou falar um pouco das minhas experiências, talvez vocês consigam se identificar com algumas delas.
Meu primeiro computador foi um TK 90X (R.I.P), e consequentemente, a primeira "linguagem" que eu usei para fazer meus joguinhos foi o TK-BASIC. Meus programas eram uma maçaroca de linhas, com variáveis sendo criadas no meio do código e sem nomes significativos. Ainda no TK-90X eu comecei a brincar com Z80 Assembly. Foi um choque: eu conseguia fazer programas ainda menores e mais crípticos, aqueles que 2 semanas sem olhar o código faziam com que você não reconhecesse o que escreveu.
Daí eu passei para um MSX equipado com um poderoso drive de 3,5" e MSX-BASIC, que me fez olhar com desdém para tudo que eu tinha feito até então (e sentir na pele pela primeira vez a desgraça chamada "migração de plataforma" - como o TK-90X não salvava os programas como texto, eu fui obrigado a imprimir e redigitar a maioria dos jogos que eu tinha feito para, em seguida, adaptá-los ao MSX). E foi no MSX que meu código chegou ao nível mais baixo, tanto por usar assembly misturado ao BASIC como no quesito legibilidade.
O tempo passou, e eu mudei de novo de plataforma: um 386SX 16MHz com sensacionais 4Mb de RAM. E com ele uma enxurrada de joguinhos já prontos, e finalmente tive contato com o Borland Turbo C pela primeira vez. Já tinha ouvido falar dessa linguagem poderosa, que era rival do assembly em performance e tamanho de código. Comprei livros sobre C, sobre programação para MS-DOS avançada, e comecei a escovar os bits com afinco. Após algum tempo, eu já tinha um domínio básico sobre a linguagem, e tocava de (tentar) fazer meus joguinhos com ela. Além disso, arrumei o VB3 e achei o máximo poder criar uma aplicação tão rapidamente apenas desenhando telas.
Por volta de 2000, finalmente comecei a trabalhar como programador. Em FoxPro, mas que diabos, era programador! Não quero falar sobre esse período triste da minha vida profissional... :)
Daí, entrei num projeto em Delphi. Não sabia nada além de arrastar componentes para um form e escrever umas poucas linhas de código para tratar eventos (herança dos meus curtos tempos de VBzeiro). Graças aos meus colegas de trabalho, que me indicaram a literatura certa e me ensinaram a usar a IDE e a linguagem , eu fui aprendendo mais e mais. E graças a eles, também decidi que era hora de entrar para um curso de programação, pois como autodidata eu estava começando a esbarrar nas minhas limitações. E foi o que fiz: entrei para o curso de extensão da PUC/RJ de programação de computadores. Foi a melhor coisa que eu podia ter feito, e só lamento não ter feito isso antes. De cara, eu tive que aprender a programar independente da linguagem (algoritmos e estruturas de dados), depois noções de programação orientada a objeto (POO), bancos de dados, mais POO, Pascal procedural, mais um pouco de POO, C, outra dose de POO, VB e Delphi, olha o POO aí gente, Cobol (sim, conhecer o passado é importante!), POO de novo, e finalmente, Java com uma dose extra de... Adivinhem só ? É, mais POO.
Quando eu terminei o curso, eu ainda trabalhava com Delphi, mas... Nunca mais eu consegui enxergá-lo como uma ferramenta para desenhar formulários igual ao VB. Toda aquela POO que encharcava meu cérebro me permitiu entender a beleza do que estava acontecendo por trás dos bastidores, e meus programas começaram a tirar partido de tudo aquilo. E foi daí que eu tomei gosto por programar de forma organizada e limpa, e olhar meu código escrito alguns anos atrás me enchia de vergonha. Ao fim do projeto onde eu estava trabalhando eu fui alocado para trabalhar com Java por causa da minha experiencia com POO, e sem exageros, essa fase foi como se fosse o fim da Idade Média para mim: trabalhei com uma equipe muito boa num projeto bem complexo e de grande porte, e aí tive meus primeiros contatos com Design Patterns, conceitos de Frameworks, POO avançada (por exemplo, uso intensivo de API's de reflexão, EJB's, etc). trabalhei com Java até meados de 2006. De lá para cá eu venho trabalhando apenas com análise e design em um projeto .NET. Eventualmente eu ainda tenho que ler algum código fonte, porém não programo mais (pelo menos não profissionalmente).
Bom, se você aguentou ler até aqui, deve estar se perguntando: e aí, o que se conclui ? Em minha humilde opinião, todo programador deveria começar por aprender primeiro Algoritmos e Estruturas de Dados. E depois disso, deve aprender não uma, mas se possível várias linguagens. Porque cada uma tem seus pontos fortes e fracos, e cada uma tem seu uso. Você não prega um prego com serrote nem corta uma tábua com martelo.
---
Tecnologia deve ser o meio, não o fim.
Belo discurso. No final chegou à mesma conclusão que eu e mais uns já tínhamos colocado antes: cada linguagem tem sua finalidade, não adianta querer impor uma para fazer tudo.
------------------------------
Campanha Play Ogg
Credo que bagunça hehe, eu comecei na faculdade com Pascal e depois parti para o C/C++, mas já "brinquei" com python, basic e até vrml, hoje estou estudando PHP, mas na faculdade eu não era nada Open Source nas "cadeiras" de Estrutura de Dados praticamente mais da metade não queria nem saber de programação, dai o pessoal do "canudinho" queria cola do pessoal que realmente estava afim de aprender.
mas voltando ao assunto, cara o que realmente o cara tem que aprender é lógica de programação, conhece uma meia duzia de iniciante que desistem por não fazer idéia de como resolver um problema, mas isso também já é outro tópico.
"O rio atinge seus objetivos porque aprendeu a contornar obstáculos."
Na faculdade de C.Comp. aprendi programação com Portugol, escrevendo código no papel com lápis e muita borracha, com um professor que exigia a corretude estrita do código em muitas provas ferradíssimas. Isso há apenas 5 anos atrás.
Lembro até do primeiro dia de aula em que ele falou "Se você já programa em alguma linguagem, esqueça, desaprenda." Um dos melhores conselhos que já ouvi.
Sem tocar em linguagem real alguma por um semestre ele ensinou memória, variáveis, operadores, variáveis, expressões, variáveis, blocos de código, variáveis, subprogramas/procedimentos e funções, variáveis, fluxo de controle e loops, variáveis, muita coisa. E variáveis de vetores multidimensionais. Sem falar que tinha outra matéria só de estrutura de dados. Haja memória.
No segundo semestre começamos com Pascal. Quando Pascal já estava gastado, fomos para C. Ahhhhh a liberdade, tenho o poder para fazer o que quiser.
E como o falecido Ben Parker dizia para seu sobrinho:
"Com grandes poderes vêm grandes responsabilidades"
E dá-lhe segfaults, tiros no pé, vazamentos, matemática de ponteiros. A melhor maneira de aprender a não brincar com fogo é se queimando. E quebrar a cara funciona muito bem.
Olha, Ruby, C#, Java, PHP, Python, são todas ótimas linguagens, mas não são linguagens para aprender a programar. Ótimo se VOCÊ aprendeu a programar nelas, muito bom mesmo, mas a sua base não é sólida enquanto você não mexer com linguagens de nível bem mais baixo.
É essa experiência, esses cuidados, essa economia de recursos que fazem bons programadores em qualquer linguagem.
Sem falar que um curso de estrutura de dados te fará um bem maior que aprender a mexer nas entranhas de uma linguagem.
Acho que se deve começar logo com C++ estruturado e depois partir para OO. Isso, claro, após escrever muito pseudocódigo, aprender sobre arquitetura de sistemas operacionais, lógica etc.
ps. C++ é sexy ;)
MIT ensina Python no curso introdutório, antigamente era o clássico curso de Scheme. E no Brasil tem gente ensinando Pascal! :/
Eu pessoalmente não vejo problema nenhum nisso. Para ensinar princípios básicos e boas práticas de programação Pascal é excelente.
DEPOIS, o cidadão pode decidir por aprender qualquer outra linguagem, mas primeiro deve aprender (bem) algoritmos e estruturas de dados, e Pascal foi feita para praticar isso.
Apesar de gostar muito de C eu não a recomendo como primeira linguagem, principalmente por causa dos ponteiros, que dão nó na cabeça de muita gente experiente, que dirá um iniciante.
---
Tecnologia deve ser o meio, não o fim.
Em meio à tantos cabeças, tenho uma duvida "simples".
O que é "linguagem orientada a objetos" ? Não entendi...
pesquisar faz bem ;]
http://pt.wikipedia.org/wiki/Orienta%C3%A7%C3%A3o_...
Oi
Em primeiro lugar creio que as faculdades deveriam se preocupar em fortalecer a base ou seja aumentar a carga horária de lógica de programação e dentro dessa disciplina usar linguagens base com c por ex de uma forma prática utilizando os laboratórios na realização dos exercícios para assim o aprendizado ocorrer de forma gradual e espontãnea
Att
Juliana Prado Uchôa
quando comecei comecei no C
nao achei dificil nao.
acho que C deveria ser a liguagem primaria
--
so sei que nada sei x)
Lendo tudo isso; posso dizer que fico satisfeitíssimo em fazer uma análise e dizer que o Visual FoxPro domina ainda com muita competência tudo isso que foi explicitado por todos: Aprendizado de Lógica, Programação, Modelagem de Dados (qualquer SGBD, não somente DBF), Linguagem SQL diretamente na Linguagem, Orientação a Objetos unido ao Procedural e integração total com C/C++.
Minha opnião (para sistemas comerciais desktop) é continuar com o Visual FoxPro 9.