Pessoal, estou tendo um tempo livre durante a semana e gostaria de aprender uma nova linguagem. Sem ser java, qual vocês recomendariam ? Estava disposto a aprender C ou C++, mas será que vale a pena aprende-los agora ?
Bom, aguardo as opiniões.
Obrigado.
Se você já sabe Java, c/c++ não vai ser algo tão dificil de aprender. Sugiro alguma linguagem que faça sua cabeça doer de tanto pensar.
Nessa categoria eu pessoalmente recomendo LISP, Scheme e Caml. Essas linguagens são diferentes o suficiente de Java para te dar a sensação de que sabe patavinas de programação. Essa foi a minha experiência inicial com elas, pelo menos.
Bons estudos.
Se quer outra linguagem, eu iria para o C. Mas você pode também aprender algum framework, ou ferramenta.
struts, tiles, hibernate, junit, javamail, websphere, oc4j, etc…
Olá:
Neste momento a moda é falar de linguagens de script, visto a incorporação da API de scripting no Java. Se for basear-se nisso, talvez seja interessante dar uma olhada em Ruby (bastante valorizada pelo pessoal do GUJ), Groovy, Jython, entre outras.
Grato,
Bom, acho que primeiro estou mais necessitado de aprender C/C++, porque tenho perdido alguns projetos nele.
Sobre Lisp, eu dei uma olhada no Wikipedia me pareceu bastante diferente, só uma dúvida: ela “agrega” valor comercial ? Não ouço falar muito dela em projetos.
O tanto que aprendi de C++ e C em ambientes Unix e Windows me diz que é muita coisa para uma cabeça só, se quiser aprender o C++ direito.
Mas se quiser aprender apenas o trivial…
Eu diria que é sempre bom saber PHP e Python. Não se esquecer do Pascal (Delphi).
[quote=louds]
Nessa categoria eu pessoalmente recomendo LISP, Scheme e Caml. Essas linguagens são diferentes o suficiente de Java para te dar a sensação de que sabe patavinas de programação. Essa foi a minha experiência inicial com elas, pelo menos.[/quote]
E não se esqueça do PROLOG!
Veja que doidera a Torre de Hanoi nessa linguagem:
hanoi(N) :- move(N, left, centre, right).
move(0, _, _, _) :- !.
move(N, A, B, C) :-
M is N-1,
move(M, A, C, B), inform(A, B), move(M, C, B, A).
inform(X, Y) :-
write([move, a, disc, from, the, X, pole, to, the, Y, pole]),
nl.
Eu tive isso na faculdade, e realmente te abre novas maneiras
de pensar como resolver um problema…
Eu recomendaria ruby … nao tem forma melhor de gastar seu tempo livre …
[quote=Samuel_Pessorrusso]Se quer outra linguagem, eu iria para o C. Mas você pode também aprender algum framework, ou ferramenta.
struts, tiles, hibernate, junit, javamail, websphere, oc4j, etc…
[/quote]
estudar struts hoje em dia ??? vc por acaso estava dormindo em uma camara criogenica e acordou esse mes ?
Aprenda Brainfuck. Depois de aprender, provavelmente você vai querer tirar o “Brain” do nome, porém.
Se vc nao souber struts hoje em dia, acabou de perder cerca de 80% no mercado de java…
Se quiser pastar para tentar entrar nos 20% restantes, td bem…se nao, aprenda struts.
:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:
[quote=lucao]Bom, acho que primeiro estou mais necessitado de aprender C/C++, porque tenho perdido alguns projetos nele.
Sobre Lisp, eu dei uma olhada no Wikipedia me pareceu bastante diferente, só uma dúvida: ela “agrega” valor comercial ? Não ouço falar muito dela em projetos.[/quote]
Comercialmente quase nada, se você achar algum emprego aqui no pais que exija LISP te pago 2 cervejas.
Entretanto aprender LISP vai ter ajudar muito a ser um melhor programador.
Eu voltaria no Ruby, linguagem simples e prazeroza de aprender. Vale apena.
Esse site aqui é bem legal, tem a implementação do mesmo programa
em quase 1000 linguagens de programação:
http://www.99-bottles-of-beer.net
Exemplo em Java:
import java.util.*;
class Verse {
private final int count;
Verse(int verse) {
count= 100-verse;
}
public String toString() {
String c=
"{0,choice,0#no more bottles|1#1 bottle|1<{0} bottles} of beer";
return java.text.MessageFormat.format(
c.replace("n","N")+" on the wall, "+c+".\n"+
"{0,choice,0#Go to the store and buy some more"+
"|0<Take one down and pass it around}, "+c.replace("{0","{1")+
" on the wall.\n", count, (count+99)%100);
}
}
class Song implements Iterator<Verse> {
private int verse=1;
public boolean hasNext() {
return verse <= 100;
}
public Verse next() {
if(!hasNext())
throw new NoSuchElementException("End of song!");
return new Verse(verse++);
}
public void remove() {
throw new UnsupportedOperationException("Cannot remove verses!");
}
}
public class Beer {
public static void main(String[] args ) {
Iterable<Verse> song= new Iterable<Verse>() {
public Iterator<Verse> iterator() {
return new Song();
}
};
// All this work to utilize this feature:
// "For each verse in the song..."
for(Verse verse : song) {
System.out.println(verse);
}
}
}
Exemplo em LISP:
(labels ((foo (x)
(and (<= 0 x) (cons x (foo (1- x))))))
(format t (format nil
"~~{~~&~~@(~~%~~R ~A ~A!~~)~~:*~~&~~@(~~R
~0@*~A!~~)~~&~~@(~2@*~A!~~)~~&~~@(~~[~A~~:;~~:*~~R~~:*~~] ~0@*~A!~~)~~}"
"bottles of beer"
"on the wall"
"take one down, pass it around"
"no more"
)
(foo 99)))
Exemplo em PROLOG:
bottles :-
bottles(99).
bottles(1) :-
write('1 bottle of beer on the wall, 1 bottle of beer,'), nl,
write('Take one down, and pass it around,'), nl,
write('Now they are all gone.'), nl,!.
bottles(X) :-
write(X), write(' bottles of beer on the wall,'), nl,
write(X), write(' bottles of beer,'), nl,
write('Take one down and pass it around,'), nl,
NX is X - 1,
write(NX), write(' bottles of beer on the wall.'), nl, nl,
bottles(NX).
Exemplo em RUBY:
puts; puts " It's beer song time!"; puts
def bottles(n)
n == 1 ? "#{n} bottle" : "#{n} bottles"
end
@count = 99
@count.downto(1) {
puts <<BEERSONG
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#{bottles(@count)} of beer on the wall
#{bottles(@count)} of beer
Take one down, pass it around
#{bottles(@count -= 1)} of beer on the wall
BEERSONG
}
puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
puts; puts " No more beer on the wall :-("
Exemplo em SQL:
SELECT
CASE (bottlecount)
WHEN 0 THEN 'No more bottle of beer on the wall, no more bottles of beer. ' ||
'Go to the store and buy some more, 99 bottles of beer on the wall.'
WHEN 1 THEN '1 bottle of beer on the wall, 1 bottle of beer. ' ||
'Take one down and pass it around, no more bottles of beer on the wall.'
WHEN 2 THEN '2 bottles of beer on the wall, 2 bottles of beer. ' ||
'Take one down and pass it around, 1 bottle of beer on the wall.'
ELSE
rtrim (cast((BottleCount) as char(2))) || ' bottles of beer on the wall, ' ||
rtrim (cast((BottleCount) as char(2))) || ' bottles of beer. ' ||
'Take one down and pass it around, ' ||
rtrim (cast((BottleCount)-1 as char(2))) || ' bottles of beer on the wall.'
END
FROM
(
SELECT avalue * 10 + bvalue as bottlecount
FROM
(VALUES (9), (8), (7), (6), (5), (4), (3), (2), (1), (0)) a(avalue),
(VALUES (9), (8), (7), (6), (5), (4), (3), (2), (1), (0)) b(bvalue)
) as valuelist;
Bom, como estou perdendo alguns projetos, vou estudar nem que seja o básico de C/C++, Depois vou estudar provavelmente Lisp ou Ruby.
Só uma dúvida o Ruby, assim como o java é “Write once, run everywhere” ?
Obrigado pela atenção.
para estudar o Ruby você pode tentar ler o livro em:
http://www.rubycentral.com/book/
Se o Ruby é “Write Once, Run (ahem) Anywhere”? É mas também pode acessar coisas do seu sistema operacional preferido. Por exemplo, do Windows:
http://www.rubycentral.com/book/lib_windows.html
Curiosidade - embora o Ruby pareça ser novidade, ele é tão velho quanto o Java.
Then, I remembered my old dream, and decided to design my own language. At first I was just toying around with it at work. But gradually it grew to be a tool good enough to replace Perl. I named it Ruby---after the precious red stone---and released it to the public in 1995. ... Yukihiro Matsumoto, a.k.a. ``Matz''[quote=boaglio]
Esse site aqui é bem legal, tem a implementação do mesmo programa
em quase 1000 linguagens de programação:[/quote]
Legal, tem Brainfuck lá!
http://www.99-bottles-of-beer.net/language-brainfuck-776.html
:mrgreen:
Acho que voce deve partir do principio que é relativamente impossivel saber todas as linguagens ao mesmo tempo. Digo, relativamente por que a linguagem (semantica sintaxe) de todas é simples, geralmente a pessoa pega bem rápido. Mas todo o “ambiente” que envolve a linguagem é grande.
eu recomendaria:
- C (dá pra começar a ter noção do que é um computador, mas é para aprender messsmo saber o que é setjmp, etc)
- Java (Orientacao a Objeto, etc etc)
- Alguma coisa nova, tipo ruby, essas coisas são legais
- Por hobby, acho que entram varias outras, lisp, etc etc
- Asm basico de z80 e x86
Nao recomendaria:
- C++ (é simples, mas nem o sopa-de-pedra sabe tudo da stl)
- Pascal (isso ainda existe?)
- Se for iniciante, evite java, c# e similares - fora ruby, perl. (Eu acho que essas linguagens confundem muito quem está iniciando com computadores, principalmente nos conceitos de memoria, processo e agendamento)
No fim, acho que a linguagem que todos deveriam ser obrigados a saber é C e asm básico das maquinas onde ele trabalha. Asm é muito simples, pode ser muito util dependendo de que area de atuacao de software voce vai trabalhar.
[]s
Italiano, frances, espanhol, mandarim, japones e afrikaans sao linguas bacanas. Mas, faltando paciencia, Ruby eh o caminho.
Se vc nao souber struts hoje em dia, acabou de perder cerca de 80% no mercado de java…
Se quiser pastar para tentar entrar nos 20% restantes, td bem…se nao, aprenda struts.
:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: [/quote]
Fale por voce apenas.
Rafael
Se vc nao souber struts hoje em dia, acabou de perder cerca de 80% no mercado de java…
Se quiser pastar para tentar entrar nos 20% restantes, td bem…se nao, aprenda struts.
:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: [/quote]
E quem eh bobo de ser parte dos 80% da massa ignorante que ainda usa um framework retrogrado e, sem medir palavras, imbecil como o Struts!?