Programação - qual das linguagens devo aprender "C, C++ ou Java" ?

Autor Mensagem
SuperGeo
Veterano
# jan/10
· votar


guilherme_90
http://pt.wikipedia.org/wiki/Lisp

C C++ e Java é a pontinha do iceberg...

Guilherme 90
Veterano
# jan/10
· votar


SuperGeo

Vou dar uma lida aqui amigo, valeu.

:B

Alex Supertramp
Veterano
# jan/10
· votar


Bog
Como você acha que são implementados compiladores ou interpretadores de linguagens OO?


Estamos falando em linguagem de alto nivel

Pode te parecer estranho, mas eu já usava alguns conceitos de OO mesmo programando em C. Você se espantaria com o que dá para fazer com um punhado de structs e pointers (espeacialmente, ponteiros para funções).

Te digo com toda certeza que é impossivel implementar, por exemplo, uma herança numa limguagem estruturada. O Structs apenas cria um tipo de dado com os tipos primitivos. Já o objeto de uma classe possui atributos e MÉTODOS.

Bog
Veterano
# jan/10 · Editado por: Bog
· votar


Alex Supertramp
Te digo com toda certeza que é impossivel implementar, por exemplo, uma herança numa limguagem estruturada.

Você sabe como C++ implementa herança? Ponteiros. Aliás, se você procurar no Google, deve encontrar algo sobre gente que usa herança em C.

MÉTODOS.

Já ouviu falar de ponteiros para funções?

O Structs apenas cria um tipo de dado com os tipos primitivos.

Não cria. Não são apenas os tipos primitivos. Você pode criar uma struct com ponteiros para QUALQUER tipo de dado. Em especial, para funções e o nosso velho amigo void* (responsável pelo QUALQUER acima). EDIT: Pensando bem, void* e function pointers SAO tipos primitivos mesmo... Mas que podem apontar para qualquer coisa. ;)

Agora, como eu já disse, é ÓBVIO que não é simples implementar esse tipo de coisa "na mão". Eu também posso fazer um programa em C com coleta de lixo, mas isso daria trabalho - tanto trabalho que não valeria a pena.

O que você não respondeu foi o ponto mais importante: eu nunca disse que era a mesma coisa programar em linguagens estruturadas e OO, mas sim que OO é um jeito de conectar pequenos trechos de código estruturado (um bando de ifs, fors e afins).

adnz
Veterano
# jan/10
· votar


Bog
Alex Supertramp

Inclusive eu acho que eu fiz uma interface em C que acho que deveria ser feita em C++, pois em C ficaram uns ponteiros MUITO EXTREMAMENTE bizarros e complexos. o.o

Bog
Veterano
# jan/10 · Editado por: Bog
· votar


adnz

Hehe, pois eh. Se fosse a mesma coisa, eu nao trabalharia com Java e C++ ha anos. Mas quando fiz desenvolvimento para DSP, C-sem-bibliotecas-padrao era o nivel mais alto que dava para ir. Na epoca, eu aprendi a fazer alguns malabarismos com pointers que funcionavam, mas eram bizarros e aas vezes meio ilegiveis. Ou seja, eu sou o primeiro a afirmar que nao eh a mesma coisa.

Agora, isso nao quer dizer que programacao OO gere programas que nao poderiam ser gerados de outras formas, nem muda o fato de que uma funcao em Java ainda carrega no seu DNA os genes da programacao estruturada - ta tudo la, o for, o if, o while, o abre-chaves, o fecha-chaves...

Enfim, nem todo mundo que entende programacao estruturada programa em OO. Mas eh muito estranho programar em OO sem entender programacao estruturada. Por isso que eu discordo de quem vem dizer que nao vale aa pena aprender um C da vida porque "hoje em dia eh tudo OO" (a propria afirmacao eh falsa, como qualquer programador de DSP, microcontroladores ou device drivers pode constatar).

Guilherme 90
Veterano
# jan/10
· votar


Não to entendendo nada, mas continuem ae!

heaUhaEUAEHUAEHuAEHUAEHAEUHAEUHAEUhAEUhAEa

GProtti
Veterano
# jan/10
· votar


Papo chato bagarai. Falem de ciência aí.

adnz
Veterano
# jan/10
· votar


GProtti
http://pt.wikipedia.org/wiki/Ci%C3%AAncia_da_computa%C3%A7%C3%A3o

Ciência da Computação.

GProtti
Veterano
# jan/10
· votar


adnz
E você acha que esse papinho que tá rolando é ciência da computação?

adnz
Veterano
# jan/10
· votar


GProtti
É programação de software, que é uma parte da ciência da computação.

Bog
Veterano
# jan/10 · Editado por: Bog
· votar


GProtti

A resposta longa:
Voce eh livre para, caso queira, abrir um topico sobre a modelagem da percepcao de pontos de interesse pelo cortex visual de primatas atraves da diferenca de Gaussianas, sobre a provabilidade da correcao de programas que usam goto, sobre as propriedades similares de diferentes metodos de clustering e ant colony optimization, ou qualquer outro assunto mais cientifico do seu interesse.

(soh nao sei quem vai participar)


A resposta curta:
Deixa de ser chato cara.

GProtti
Veterano
# jan/10
· votar


metodos de clustering é um bom assunto
Se tiver boas referências passe e vamos discutir. Estou interessado em implementações paralelas, mas outro foco também pode vir a calhar.

Bog
Veterano
# jan/10 · Editado por: Bog
· votar


GProtti

Se você estiver falando isso só para brincar de ver quem manja mais: parabéns, campeão, você venceu. Quando crescer quero ser tão sabidão quanto você.

Do contrário, se você estiver falando sério: abra um tópico para isso e seja um pouco mais específico. Eu nunca trabalhei diretamente com clustering, mas já usei algumas estratégias para agrupar certas coisas aqui. Infelizmente, não sou especialista na área, e não sei se poderia dar uma ajuda significativa.

Lembrando apenas que:

1. implementar abordagens de clustering - paralelas ou não - não é ciência (vide a tua reclamação para que falassem de "ciência" aqui).

2. Não garanto que alguém vai participar de um tópico no FCC sobre clustering. Eu incluso.

3. Claro, vir no OT e ficar seriamente reclamando da falta de conteúdo científico em um tópico proposto por alguém que quer começar a aprender a programar é sinal de que talvez você seja menos esperto do que parece acreditar que é. É como ir a um jogo de futebol e reclamar que a partida não tem arremessos de 3 pontos.

adnz
Veterano
# jan/10
· votar


Bog
A parte de programação de softwares não é ciência?

Gan
Veterano
# jan/10
· votar


adnz
A parte de programação de softwares não é ciência?
depende da abordagem , na minha opiniao

Sumerrew
Veterano
# jan/10
· votar


mas que putaria que virou isso aqui...

Bog
Veterano
# jan/10 · Editado por: Bog
· votar


adnz
A parte de programação de softwares não é ciência?

Desenvolver um software não é, em sua maioria, Ciência. Nem exatamente Engenharia. Está mais para Arquitetura. Já programar entra no que se chama de Técnica (como aplicação do conhecimento/ciência).

A parte "Ciência" da Computação aparece quando você propõe uma hipótese que pode ser testada pelo método científico. Normalmente, envolve demonstrações matemáticas ou testes empíricos com base em métricas bem definidas e objetivas.

Curiosamente, como a computação mistura vários tipos de coisas, o resultado é que muitas vezes temos alunos de Ciência da Computação que não gostam extamente da parte Ciência do curso!!!

adnz
Veterano
# jan/10
· votar


Bog
Eu não cheguei a ler sobre isso (o artigo ou artigos), mas um cara há muito tempo propôs o não uso do 'goto', por exemplo. Como ele "provou" que era melhor não usá-lo? Ele teve que usar algum método científico pra chegar nesas conclusão, não?

Então se ele conseguiu achar um método científico para descrever a fluência de um código, não existem outros métodos ou provas que possam descrever outras propriedades de um código, assim fazendo com que a arte de escrever um código seja mais científica?

Bog
Veterano
# jan/10 · Editado por: Bog
· votar


adnz
um cara há muito tempo propôs o não uso do 'goto', por exemplo. Como ele "provou" que era melhor não usá-lo?

Ele não "provou" de forma absoluta - tanto que o Knuth nunca deixou de defender que o goto pode ter o seu papel.

De toda forma, empiricamente é possível tentar quantificar o número de erros cometidos quando uma mesma especificação é implementada com e sem goto. Tendo experimentos de escala suficientemente grande e com repetições independentes, podemos dizer que é um resultado "científico" - embora ainda assim exista discussão, visto que isso não é hard science (e é só ver a discordância do Knuth para constatar isso).

Mas a parte "ciência" da história foi esta. O que vem depois - programar sem usar goto - é técnica, aplicação disso. Não é ciência, da mesma forma que aplicar cálculo estrutural para construir uma casa é engenharia, e não ciência. Entende a diferença?

a arte de escrever um código seja mais científica?

Não. Isso tornou a "arte" (ou técnica) de escrever um código mais segura, menos confusa e menos sujeita a erros. Mas programar - com ou sem goto - continua sendo diferente de fazer ciência.

shoyoninja
Veterano
# jan/10 · Editado por: shoyoninja
· votar


adnz
Atravessando a conversa :P.

O goto, na verdade, é usado. Mas a proposta da programação estruturada é justamente ocultá-lo e organizar esses saltos na execução do programa de forma que o código se torne mais compreensível e organizado para quem lê.

Na verdade, programação linear, estruturada e OO são níveis diferentes de abstração da mesma coisa.

Por exemplo: Uma estrutura de decisão ou repetição, como o While, tem de fazer um desvio da execução, que no código de máquina, é linear, então não passa um belo goto disfarçado :P.

Edit: Disfarçado não é bem a palavra, talvez: "melhor organizado".

Bog
Veterano
# jan/10 · Editado por: Bog
· votar


shoyoninja

Hehhe, pois é, no fim das contas tudo acaba virando goto (ou melhor, JMP) mesmo. Mas ainda assim, dá para tentar formular uma hipótese como "abstrair o goto na forma de loops e chamadas para funções reduz o número de erros e o tempo gasto na procura de bugs na prática" e testá-la seguindo uma abordagem científica. Só que parou aí: usar while em vez de goto definitivamente não é ciência!

shoyoninja
Veterano
# jan/10
· votar


Bog
Ah sim!

São conjuntos de técnicas diferentes apenas, não teorias.

adnz
Veterano
# jan/10
· votar


Bog
shoyoninja
Saquei.

GProtti
Veterano
# jan/10
· votar


Se você estiver falando isso só para brincar de ver quem manja mais
Não.

Eu nunca trabalhei diretamente com clustering
Também não.

implementar abordagens de clustering - paralelas ou não - não é ciência
Confusão de terminologia aqui. Por "implementar" não me refiro a escrever código e sim a elaborar versões paralelas dos algoritmos. Esses métodos normalmente precisam de muita sincronização, por isso a brincadeira fica interessante.

Não garanto que alguém vai participar de um tópico no FCC sobre clustering. Eu incluso.
:( pensei que ia receber indicações de leitura de lambuja

Koisa
Veterano
# mai/10
· votar


Up na beterraba



Gostaria de saber se tem algum software que testa a velocidade do código feito, com o intuito de se comparar qual o melhor método de programar.. Ainda estou um pouco confuso sobre fazer uma função que calcule tudo, e chama-la, ou fazer varias funções e chama-las pouco a pouco..

Guilherme 90
Veterano
# mai/10
· votar


A ressurreição do tópico.
Bog, agora é com você!

haeuahuaEHuAE

izzystradlin
Veterano
# mai/10
· votar


Koisa
tu quer o desempenho deles?

tem uns softwares de qualidade que executam o algoritmo pra ver qual a função que executa mais rapido e medir a complexidade do codigo...mas nunca procurei...

ZakkWyldeEMG
Veterano
# mai/10
· votar


Eu faria isso com um breakpoint no início e outro no fim do trecho de código a ser medida a velocidade, e uma ferramenta de debug (ou um step-by-step).

/embedded n00b

ZakkWyldeEMG
Veterano
# mai/10
· votar


eu discordo de quem vem dizer que nao vale aa pena aprender um C da vida porque "hoje em dia eh tudo OO" (a propria afirmacao eh falsa, como qualquer programador de DSP, microcontroladores ou device drivers pode constatar).

oi

Enviar sua resposta para este assunto
        Tablatura   
Responder tópico na versão original
 

Tópicos relacionados a Programação - qual das linguagens devo aprender "C, C++ ou Java" ?