Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

quitZAUMMM

Indicando Linguagens para Iniciantes

Recommended Posts

INDICANDO LINGUAGENS PARA INICIANTES

É inevitável. Se você está num fórum, vai surgir a pergunta "Com qual linguagem eu começo?". E incrivelmente indicam C,C++ ou Java. Particularmente já desisti de estudar tanta linguagem e vou me focar em banco de dados e teoria, afinal de contas, quando se entra numa empresa, as escolhas já foram feitas.

Uma das poucas matérias da faculdade que posso citar que é uma verdadeira mão na roda é Estruturas de Linguagens de Programação. À parte a semelhança com construção de compiladores, estuda-se as propriedades das linguagens sem desconsiderar o momento no qual elas surgiram.Também se conhece os podres de todas elas. E é isso que deveria ser levado em conta ao se indicar uma linguagem de programação para iniciantes.

 

 

A BASE DE TUDO

 

Lógica. Se você não sabe fazer chocolate quente ou cozinhar, de quê adianta ter um fogão? Obviamente você pode pegar uma receita e segui-la,mas se não souber o que está escrito (eg.: banho-maria) não vai sair do lugar. É o primeiro passo para alguém que deseja saber programar. Porque mandar os outros fazer seu trabalho de faculdade e pedir para ficar online na hora da prova é fácil. Quando você estiver estagiando numa empresa ou trabalhando numa pesquisa dentro da universidade, a coisa começa a ficar difícil, pois o cérebro não consegue perceber nem mesmo estruturas simples envolvidas no problema.

 

Não recomendo apostilas. Prefira os autores "clássicos" como Donald Knuth, por mais que os livros te façam sentir burro.Geralmente apostilas são feitas por alunos, que podem conter interpretações erradas. Se são feitas por professores,pode apostar que no máximo são notas de aulas. Isso normalmente significa informações espalhadas,sem explicação (apenas frases soltas).

 

E ao contrário do que alguns falam, não tem como dissociar completamente estudo de algoritmos do estudo de lógica.

 

 

LINGUAGEM

 

Ao estudar algoritmos e lógicas já se utiliza uma linguagem: a linguagem natural. Infelizmente a linguagem natural é ambígua e nem sempre possui os mecanismos para expressar corretamente alguma idéia de forma que seja simples entender. Existem as pseudo-linguagens, que são uma espécie de Portugol (semelhança com o ALGOL não é mera coincidência).

 

Considerar somente o que o mercado usa também não é uma boa idéia. Cobol, que muitos pensam estar morta, ainda existe, mas sofre da aversão dos novos programadores. O motivo é clássico: porque ninguém usa. Smalltalk também é uma linguagem antiga, presente no primeiro computador com GUI, na Xerox PARC. Mas dê uma olhada na lista das empresas que ainda utilizam ou já usaram Smalltalk, desde 1998:

 

- Northrop (fabricante de aviões e helicópteros)

- IBM (para monitoramento de rede)

- Globosat

- Honda

- Departamento de Defesa dos EUA

- Fuji

- DaimlerChrysler

- Siemens

- Lucent

- HP

- American Express

- Texaco

- Ford

- General Motors

- Texas Instruments

 

Haskell, linguagem funcional, é diferente de tudo o que você vai ver na vida e provavelmente muito pouco utilizada fora do ambiente acadêmico. Mas alguns nomes associados são conhecidos: ABN AMRO Bank, Nokia Research Center, Linspire e Galois Inc.

 

Linguagens web estão no limbo. Já modifiquei o form de um firewall onde as páginas eram geradas utilizando Perl, já mexi um pouco com PHP e no entanto não vejo muita diferença entre uma e outra. Javascript teve um boom novamente por causa do AJAX (lembro-me da época de 1997 quando comprava revistas com apostilas de Javascript), Ruby está crescendo e Python, por causa do Django e da filosofia de ter somente o que é necessário para os programadores, virou uma mão na roda, mesmo para aplicações que não sejam web-based,como meu trabalho de graduação, por exemplo. Quando a Sun lançou o Java, começou a febre dos Java applets. Pobres demônios de internet discada. Os primeiros compiladores são horríveis. Isso é fato. Naquela época, Java era lento demais. Hoje quem faz a linguagem ser lenta é, em grande parte, o programador. Ano passado a Sun lançou o JavaFX, que possui uma sintaxe muito mais limpa p/ se fazer tanto applets como aplicações desktop. Isso quer dizer que você vai evitar todos os milhares de new AlgumaCoisaLayout e setQualquerPropriedadeMaluca.

 

 

QUE LINGUAGEM ESCOLHER

 

Comece pelo mais fácil: procedural. É como fazemos as coisas. Repare nas embalagens de gelatina e Tang. Não recomendo C porque é a prima direta do Assembly. Além disso, o material de C é muito vasto e as explicações sobre temas como ponteiros, ponteiros p/ funções e variadics nem sempre são claras o suficiente e na maioria das vezes fazem com que a pessoa queira pular alguns passos no meio do caminho, é permissiva, as funções de I/O não são padronizadas e os livros normalmente ensinam vícios de programação dos autores. O clássico exemplo é o system("pause"), getche() ou main declarado como void.

 

Esqueça C++, Java e qualquer coisa que funcione no .NET. Mantenha os pés no chão. Se você não sabe nem identificar estruturas num problema, a combinação "conhecimento inexistente + API complexa e gigante" não vai ajudar em nada. Se o assunto for Java, ainda existe o problema de se entender o que são classes abstratas, interface, contexto do sinal de atribuição,entre outros. A coisa fica mais confusa porque Java mistura tipos primitivos e wrappers. Diferente do Groovy, onde não existem tipos primitivos. Além disso, a API do Java normalmente é tão mais gostosa de usar do que implementar aquela lista circular chata ou hash na mão que você deixa de estudar estruturas de dados por comodidade.

 

Não estude Perl sem ter noção de expressões regulares e boas práticas de programação. Livros que favorecem o estilo Perl de programar (one-liners confusos e compridos) são suspeitos. Aí começa a entrar a noção de manutenibilidade do programa, que foi o que dificultou a vida do Aurélio para revisar as FunçõesZZ. Isso vale para qualquer linguagem. Posso ler um inteiro em C como segue:

 

#include <stdio.h>
int main(void) {
  int D,i;
  i = 0;
  while((scanf("%d",&D),i++,i == 0));
}
Pascal, apesar de todo mundo dizer que é ruim porque não é usado, é boa para começar. Antes de começar com xiitismos desse tipo, conheça a história da linguagem. Niklaus Wirth não projetou a linguagem para ser um sucesso de mercado.

Quando já estiver entendo estruturas de dados, vá para Orientação a Objetos e passe um bom tempo nisso. No caso do Java, é mais comum ver a separação das interfaces. Mas se você quer algo diferente que trabalhe com listas de modo simples, estude um pouco de Flavors. Linguagens como PHP, Ruby, Groovy, Python, Jython e Smalltalk também servem.

 

Os principais problemas para um iniciante são:

 

- Legibilidade

- Simplicidade

 

Se a linguagem não ajuda em nada, como por exemplo a tal Brainfuck, esqueça. Sintaxe se aprende depois, mas se você nem ao menos consegue entender o que o programa faz para absorver uma idéia diferente, jogue fora. A simplicidade faz bem. C não é simples. Java só é simples quando se aproveita a API. Existe uma coisa chamada ortogonalidade, que resumidamente, é a "quantidade" de exceções existentes numa linguagem. Em C K&R, um exemplo de ortogonalidade é o bloco de declaração de variáveis, que obrigatoriamente deve ser o primeiro de toda função. Ainda em C, dois exemplos de falta de ortogonalidade é a passagem de parâmetros (tipos primitivos são passados por valor, enquanto arrays são passados por referência) e valores de retorno de funções (pode-se retornar um tipo primitivo, mas não um array, somente um ponteiro para o primeiro elemento do array). Quando se tem pouca ortogonalidade na linguagem, existe um número muito grande de construções não permitidas que o programador deve memorizar porque não tem outro jeito.

 

 

OS PARADIGMAS MARGINALIZADOS

 

Então você de repente se dá conta que sabe 2 linguagens que suportam programação imperativa, 2 orientadas a objetos e daí? Acabou? Não. Por mais que seja necessário prestar atenção nos padrões para não ficar defasado, o mundo não é feito somente de C,C++ e Java. O motivo que me levou a ter vontade de estudar Haskell foi o algoritmo do quicksort:

 

qsort [] = []
qsort (x:xs) = qsort(filter(< x) xs)) ++ [x] ++ qsort(filter(>= x) xs)

Compare com a implementação em C:

void qsort(int[] a,int lo,int hi) {
  int h,l,p,t;
  if (lo < hi) {
	  l = lo;
	  h = hi;
	  p = a[hi];
	  
	  do {
		 while ((l < h) && (a[l] <= p))
			l++;
		 while ((h > l) && (a[h] >= p))
			h--;
		 if (h < l) {
			t = a[l];
			a[l] = a[h];
			a[h] = t;
		 }
	  } while (l < h);
	  t = a[l];
	  a[l] = a[hi];
	  a[hi] = t;
	  
	  qsort(a,lo,l-1);
	  qsort(a,l+1,hi);
  }
}
Precisa falar alguma coisa? A afirmação "linguagem X é de alto nível" só tem sentido real quando se compara o X com outra linguagem.

 

Estude Prolog, LISP ou Scheme. Scheme possui uma sintaxe mais fácil e o único problema são os parênteses. Um exemplo de código para remover o último elemento de uma lista:

 

(DEFINE (remove_ultimo lista)
  (IF (NULL? (CDR lista))
	  '()
	  (CONS (CAR lista) (remove_ultimo (CDR lista)))
  )
)

 

MAS MEU PROFESSOR DISSE QUE LINGUAGEM TAL É RUIM

 

Esqueça o que a maioria dos professores fala. Tem um na faculdade que diz que Java é lento, mas conheço muita gente que faz programas em C que demoram uma eternidade para rodar e não se recuperam de falhas. Novamente: conhecer estruturas de dados e API faz muita diferença. Implemente a seqüência de Fibonacci em Java usando recursão com e sem mapas para ter uma idéia.

Se você quiser e tiver paciência para ler livros, procure estudar projeto de linguagens de programação. Pode até ser com o livro do Robert Sebesta. Talvez depois de um ano ou dois você esteja menos radical ou maria-vai-com-as-outras.

 

 

Este foi um texto escrito pela membra Import java.Isis

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela contribuição Isis http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Bom galera eu naum gosto muito de dizer também por qual linguagem começar, eu mesmo quando comecei o Técnico de Informática aprendi direto Visual Basic 5, e antes não foi me passado nada de Lógica de Programação ou Portugol, aprendi algoritmos programando em alguma linguagem direta mesmo, depois aprendi Linguagem C e depois PHP. Só que sempre fiz coisas quem mechem com a lógica como aqueles joguinhos de Lógica da revista "Coquetel", e também Sudoku e várias coisas que você acha na internet.

Agora na faculdade recordei um pouco de C e concordo com o que a Isis disse em um trecho do seu texto que ela diz sobre ponteiros,

e na maioria das vezes fazem com que a pessoa queira pular alguns passos no meio do caminho

, eu mesmo não entendo muito de ponteiros apesar de estudar C uns 3 anos, mas o que eu entendo já acho que está bom pelo menos sei fazer meus programas acadêmicos, caso um dia necessite saber mais com certeza me empenharei. Hoje em dia vejo Java uma Linguagem que estou gostando muito e junto com Java estudo Estrutura de Dados, o que acho ótimo, assim concilio uma matéria com a outra.

Bom essa é minha mini-trajetória por enquanto no mundo da programação, agora sobre qual Linguagem realmente eu recomendo aprender a Pseudo-Linguagem e depois pensar muito pois opção é o que não falta!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Wow!

 

Belo texto.

 

Acho que depois que você tem uma Base forte e principalmente vontade qualquer linguagem que pegue, vai aprender. Agora qual linguagem? Diria que vai da sua necessidade atual. Se você precisa fazer uma janela se abrir, coçar suas costas ao mesmo tempo que ela lhe extrega um copo com sua bebida favorita, não faço idéia de qual linguagem vai usar, talvez C. Agora se precisa fazer um programa para somar 2 numeros porque não escolher Visual Basic. Ou então Delphi? Que tal Java? Dai você vê com qual linguagem você se "identifica" mais, e comece a estudá-la. Com o tempo você vai se acostumando com os erros que vão aparecendo e logo que aparecer o erro na tela você pensa: "Já sei o que é!". Depois de mais algum tempo você nem comete mais esses erros.

Mas não se prenda só nessa linguagem. Tenha a mente aberta sempre para novas coisas e esteja sempre aprendendo.

 

A é isso ai.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que maravilha de texto cara... nossa.

Mas acho que ainda fico meio vacuo a resposta de qual linguagem começar. Até o momento percebi claro que o melhor é ter a boa logica de programação, logo pegando o PASCAL que como eu sei é uma linguagem realmente mais academica.

 

eu sei muito "picado" das coisas.. :( as vezes fico querendo, tento, começar do zero e tal.. ver algoritmos.. fazer exercicios.. e outros... e sei que isso é certo, mas e tipo tudo tão "bobo" =( vamo ver.

Irei passar testo pra um amigo da mesma cituação.

 

abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bacana o texto. Mas vou deixar minha humilde opinião, boa parte do texto está 100%, agora a grande questão quando se indica C, acredito que seja pra já se ambientarem com uma linguagem mais digamos assim rustica, pois você tem que trabalhar na mao mesmo, e por ser uma linguagem procedural acredito que deva ser umas das primeiras sem dúvida.Lógico que sou adepto de que a pessoa deva aprender primeiro de tudo lógica, sem lógica para computação nada feito, como a Isis citou.Mas é claro que é tudo muito relativo, se você consegue dominar o tal do portugol e depois consegue se habituar com C, voce vai embora.Logo em seguida você está pronto pra entender orientação a objetos, ai é que muitos falam Java, pode ser porque não? Assim como pode ser outra linguagem que use o paradigma O.O.

Acredito que se há o dominio da logica de programacao, e você compreende os conceitos , você se dará bem em qualquer linguagem, é apenas uma questão de tempo e pratica.

 

Abs e parabéns pelo texto Isis

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mas acho que ainda fico meio vacuo a resposta de qual linguagem começar.

 

Eu não falei em momento algum que ia indicar uma linguagem p/ iniciantes. Leia o texto novamente.

O problema do povo que indica uma linguagem por ser fã dela é não pensar no que o outro quer e precisa segundo sua dificuldade em entender as coisas.

 

Um detalhe: quando enviei o texto p/ o Quit eu avisei que nem estava terminado. Era só p/ ler. Não sei porque foi postado "as is".

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito interessante mesmo o texto

 

parabéns Ísis

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom demais....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem palavras a isis caprichou no texto, parabens isis esta ideiologia irá ajudar muita gente que tiver a cabeça no lugar para começar com o pé direito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa o termo mais: "pulta que o pariOOO!!!"

Texto bom d++++ veio...mUUUUUUito bom mesmo.

 

Sou novo em Logica e tou começando com o Programa VisuALG e estudando PASCAL, pelo visto estou no caminho certo!!!

Espero no futuro estudar e aprender PHP para funcionalizar com o FLASH®...mais gostaria mesmo de ficar monstro em JAVA ate pq sempre me deixou de boca aberta.

 

Sinceramente Obrigado pelo Post mUUUito bom essa iniciativa sempre deveria acontecer ate pq quem esta iniciando assim como eu...A PALAVRA DE ORDEM E ORIENTAÇÃO!

 

VLW...MESMO!!!

 

aBRAÇOS A TODOS...SUCESSO E PAZ!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia!!!

 

Fala ai Galera mais uma vez...bem de ontem pra hj eu li bastante coisa no forum na area de logica de programação e na boa tem mUUUUUita coisa confusa que de certo ta forda pra entender EX: post com o assunto algoritmo e o cara posta pedido de ajuda. E meio dificil saber por onde começar saco!!!

 

Gostaria se possivel de ser avisado de um post assim: 1º aula de Algoritmo em PASCAL sei la ou algo do tipo.

 

OBRIGADO MESMO MAIS UMA VEZ PELA INICIATIVA DO FORUM E PARABEM PARA AQUELES QUE TIRAM NOSSAS DUVIDAS.

 

OBS: se eu estiver quebrando alguma regra do forum gostaria de se notificado vlw...

 

... [ ]sss a todos e sucesso!!!

 

PS: se algum post de aula inicial ja existe e eu nao o achei por favor mande-me o link se possivel!!!

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

realmente muito bom o texto

isso me remeteu ha dois anos atras, na faculdade....

nao vou citar por motivos eticos...

tivemos um professor de algoritmo muito fraco.

 

nao sabia passar, nao deu conceito de logica

nem portugol ele ensinou! so pedia fluxograma!

foi pessimo metade da classe aloprou....dai semestre

seguinte...........JAVA e C++ que piada

nao tinhamos noçao de nada....e o pau comendo....

fora trocentas materias e seminarios...resumo da opera?

me formei sem saber programar nada vezes nada!!!

 

um ano e meio depois to de volta na facu pra tentar

aprender sim. agora nao tenho mais pressao de me formar.....

quero fazer direitinho - logica primeiro, portugol, linguagem procedural, pascal...

e ver se me adapto com java.

os profs na facu sao um barato..dizem..'vcs tem q correr atras pq a materia é complexa')

complexa? eles nao tem didatica pra ensinar!

aff

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu também tive um professor fraco em lógica. Mas acho que é outro erro de quem esta começando, achar que o professor vai te ensinar tudo sobre lógica de programação ou outra coisa, acho que se o professor for bom ou ruim, o problema é dele. No meu caso tive que correr por fora, aprendi o que tinha para aprender lendo livros e fazendo os exercícios proposto nos livros. Outra coisa é a determinação da pessoa que o leva ao sucesso próprio. O texto esta de parabéns eu vou recomendar esse texto para o pessoal na faculdade onde estudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se todos tem em mente isso.. + na faculdade ou em um curso você só aprende 5% das coisas, as outras 95% você aprende pesquisando e treinando por conta propria.

Bom isso é uma opinião minha ;D

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse lance dos 5% é uma verdade. Mas isso não justifica certas asneiras que falam, por exemplo, com Java ("Aqui não ensinamos Java porque é mercadológico").

 

Oras, mesmo que o mercado em uma faculdade seja o de educação (sendo o cliente/empregador o Estado), ainda é o mercado que paga as contas.

 

Tem gente que usa esse argumento capenga de que o que vai pro mercado não é digno de se ensinar numa universidade p/ justificar a ausência de certas matérias numa grade curricular. Não é à toa que cansei de escutar em jornal que as empresas falam que não existem pessoas qualificadas. Lógico né...Se nem os 5% os professores tem a capacidade/vontade de ensinar p/ que o aluno tenha um ponto de partida...

 

Por outro lado, as empresas fazem exigências absurdas: 'procuramos estagiário no 2° ano com sólidos conhecimentos em .NET, Java, modelagem de dados, HTML, CSS, Javascript, Oracle, SOAP, SOA'. Eu vejo vagas assim até mesmo no mercado iMasters.E tenham em mente um detalhe: dizem que é fácil um bacharel aprender detalhes de linguagem em 6 meses, mas só vejo vagas que pedem 2 anos de experiência, no mínimo (vejam esse link: http://www.normasleg...11644_2008.htm), mesmo pra programador júnior.

 

Daí você tem a seguinte situação: 90% das linguagens no teu CV foi por vontade própria de estudar, mas você nunca trabalhou com elas (ou só viu na faculdade) e é recém-formado. Como normalmente entendem 'experiência comercial' quando contratam, mesmo que você saiba mais que 5%, você esbarra no tempo de serviço, porque dificilmente uma empresa cumpre lei trabalhista nesse país (ainda mais em TI, que é um bordel*) ou encara o funcionário como investimento (é sempre como gasto/despesa). As opções? Concurso ou freelancer. Mesmo que seja com os 5% da faculdade ou os 95% aprendidos por conta própria. Nessas horas eu lembro do "calouro concurso", que achava que concurso era p/ quem não confiava no taco e nomes seguram empresas (Microsoft, Google, Siemens -- vide reações à crise). Se alguém do tipo quiser sentir fortes emoções aos 50 anos com mulher, filhos e pais p/ cuidar, seja feliz. Eu prefiro trabalhar pro Estado com uma boa remuneração, plano de carreira garantido, aposentadoria, PLR e outros benefícios que só o Estado fornece (já que é um saco sem fundo, aparentemente), além da estabilidade. Pelo menos desse modo eu tenho certeza de que, como entra salário e não podem demitir, os 95% restantes eu tenho condição de pagar (livros, cursos, certificação, palestras, encontros,conferências,etc).

 

 

 

* Porque TI é um zonão eu sou a favor de uma regulamentação. Talvez assim parem de contratar gente como 'programador júnior' com atribuições extras de DBA e técnico em redes ou pagar qualquer coisa sem valorizar os 6 anos que você passou sentado num banco de faculdade simplesmente porque você não tem 3 anos de experiência na função.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bacana o último post da _Isis_. Como há poucos profissionais no país qualificados, as empresas tendem a escravizar os estagiários (principalmente os que detém menos conhecimento). Bem, ainda existem algumas empresas onde você consegue aprender durante o estágio, conseguir uma maturidade profissional, ter uma experiência profissional que acrescente algo, mais essas empresas são raras. Já recebi propostas no meu e-mail: Procura-se estagiário com conhecimento de C/C++, Java, SQL, PHP e com disponibilidade de 25 horas semanais (25 horas semanais???).

As empresas geralmente utilizam seus estagiários para aumentar seus lucros a curto prazo, já que colocando um jovem para programas simples ou dar suporte técnico ele dá retorno imediato. Entretanto, continua a carência de mão de obra qualificada. Caso fosse dado um treinamento adequado àquele jovem, ele não daria retorno imediato, mas dentro de algum tempo ele estaria dando retornos muito maiores, seria um excelente gerente mais à frente. Mesmo que aquele jovem não ficasse na empresa (o que aparentemente daria prejuízo total - treinar alguém pra este depois sair), se todas as empresas fizessem isso, quando esta empresa fosse contratar alguém que estagiou em outra empresa, não haveria problemas, visto que esta pessoa também aprendeu bastante em sua última experiência profissional (em vez de ser escravizado). Mas fazer o quê? Esse é o mercado (pelo ao menos por enquanto, até você ter uma empresa ou migrar para a política (sim, a mais alta autoridade da área de TI do Ministério de Minas e Energia tem poder político), e, nessa ocasião, se esforçar para mudar um pouco essa realidade).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa esse iMasters me surpreende a cada dia. Isis, muito bons seus comentários você é 10, to contigo e não abro.

 

 

Abraços e espero te ver por aqui mais vezes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parabéns por mais um texto claro e elucidativo. De fato, muitas pessoas só sabem seguir tendências. Talvez, mais importante do que a linguagem de programação que deveríamos começar, fosse melhor apenas começar.

Fica dica: Faça; Faça rápido; Faça bem e rápido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.