segunda-feira, novembro 03, 2008

Java ou C#?

Qual linguagem o profissional deve aprender para ganhar mais? Por Nivaldo Foresti.

Java ou C#? Qual a linguagem que devo aprender para ganhar mais? Essa é pergunta que mais me fazem por onde ando. Deve valer milhões de reais, pois ela é feita em reuniões, para indicar ao filho do amigo, para uma reportagem etc. Enfim, todos querem saber que linguagem será mais lucrativa para um profissional.

Minha resposta? Qualquer uma delas. Vale a pena saber a linguagem da moda? Claro! Mais oportunidades de emprego aparecem, os salários são maiores, mas é isso mesmo o que mais importa? Acredito que não. O que mais importa, no final, é ter conceitos sólidos de algoritmos, na programação orientada a objetos, em sintaxe SQL, na arquitetura em multicamada e, em pelo menos, uma linguagem de programação.

Na atualidade, com a internet, alguns outros conceitos são importantes, como estas sopas de letras HTML, XML, CSS, XAML, SOAP. Não esqueça de acrescentar Javascript, Ajax e Actionscript (este vindo do Flash) e um pouco de Photoshop. Além disso, mesmo conhecendo tudo isso seu trabalho pode demandar freqüentemente o conhecimento de uma nova linguagem com pouco tempo de estudo. Como fazer isso?

A primeira dica é buscar, entre diversos tutoriais na internet, aquele que mais se adapta a seu objetivo, já que uma linguagem serve a inúmeras aplicações. Eis aqui uma pequena receita, que pode servir como exemplo. Leia o manual com o tutorial da linguagem. Geralmente ele é pequeno e rápido de se fazer. Mantenha o manual de referência da sintaxe à mão, entenda como funciona o compilador, suas opções e, se houver, seu ambiente de desenvolvimento (IDE), comece com um programa simples, como imprimir uma linha no navegador. Compile-o e use as funcionalidades básicas de debugging como break points, inspeção de variáveis etc.

Depois, crie uma lista, como essa abaixo, para entrar na maioria dos recursos da linguagem e entender como el funciona. Comece, por exemplo, por aumentar a complexidade do seu programa básico em uma ordem como esta:

1) Mostre uma série de números em um looping infinito usando uma tecla especifica para parar o programa;

2) Crie um programa com uma série Fibonacci, encontre o máximo e o mínimo em uma lista de números;

3) Aceite caracteres ou números do teclado e ordene a lista em ordem ascendente e descendente;

4) Crie um programa para calcular um número Reynolds. Ele deve aceitar os valores necessários em suas unidades apropriadas. Se o número for menor que 2100 mostre a mensagem Fluxo Laminar, se estiver entre 2100 e 4000 mostre a mensagem Fluxo Transiente, se foi maior que 4000, mostre a mensagem Fluxo Turbulento. Você irá usar os desvios If, else, then etc.;

5) Modifique o programa para perguntar se deseja calcular de novo. Com a resposta S, pergunte novamente pelos parâmetros, com a resposta N saia do programa (Do while loop). Informe números que podem dar erro no cálculo. Exemplo: coloque um=0, ele dá um erro de DIVIDE BY ZERO? Como a linguagem trata essa situação? Existe tratamento de exceção? (exception handling)

6) Faça cálculos científicos, tais como raiz quadrada, fatorial, seno, coseno etc.;

7) Imprima o resultado em diferente formatos, com casas decimais, truncando após a terceira casa, colocando zeros à esquerda ou direita, justificando etc. (operações com strings);

8) Abra um arquivo texto e o converta em HTML;

9) Pegue a data e hora do sistema e o converta em outro formato;

10) Crie arquivos com a data e hora no nome do arquivo;

11) Pegue uma tabela HTML e grave um arquivo separado por vírgulas;

12) Extraia palavras em maiúsculas ou palavras únicas de um arquivo;

13) Implemente quebra de linha automática conforme o tamanho da janela mostrada (veja o programa Notepad do Windows);

14) Adicione ou remova itens no começo, meio ou fim de um array;

15) Verifique, por fim, se esses recursos são suportados na sua linguagem: funções virtuais, referencias, pointers? Existem coisas como namespace, package, module, estude então o assunto name mangling.

Java ou C#? Você responde.

Nivaldo Foresti é programador há 30 anos, desde a jurássica era do mainframe. Foi consultor e desenvolvedor de produtos na internet como o BOL e hoje tem uma empresa de webcasting, com software nacional. Neste espaço, o colunista revela o que os desenvolvedores podem esperar da profissão, além de analisar as novas eras tecnológicas que se aproximam. E-mail: nforesti@yahoo.com .

Copiado de: idgnow

Um comentário:

Chris Benseler disse...

A maior vantagem do java, ao meu ver, é ter uma comunidade muito ativa e aceitar contirbuição de todos os lados - logo, é está sempre se desenvolvendo. Além do que, uma aplicação java pode ter preço de partida 0 em termos de software (usando SO gratuito, webserver gratuito, application server gratuito, e a próprio JDK). Já o C# requer uma instalação do Windows e o .Net.
E ficar preso em uma tecnologia proprietária é sempre complicado.