A onda dos proc. de multiplos núclelos vai deixar a programação ainda mais complicada?  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
eduacsp
GUJ Ranger
[Avatar]

Membro desde: 29/03/2006 21:29:35
Mensagens: 897
Offline

Pessoal,

Vcs acham que essa onde de core2duo, i3,i5,i7 etc...vai deixar a programação Java ainda mais complicada? Pq pelo que sei, a divisão do processamento entre núcleos não ocorre assim de forma tão natural. Por exemplo, para preencher ou ler um simples Map<String,String>, temos que dividir o preenchimento entre os núcleos de forma programatica usando Threads, já que o processador não faz isso. Sei que 99,9% dos desenvolvedores não fazem isso, mas algum dia terão de fazer quiserem softwares performaticos.

This message was edited 2 times. Last update was at 30/12/2010 15:24:20


Pois também eu te digo que tu és Pedro, e sobre esta pedra edificarei a minha igreja, e as portas do inferno não prevalecerão contra ela;
Mateus 16:18
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Quem tem que se preocupar com isso em primeira instância é o compilador e depois o SO.

Se você precisar "controlar" o processamento paralelo, ai sim, vc tem que colocar a mão na massa, mas como falei, quem tem que se preocupar em usar todo o poder do processador é o SO e o compilador.

Posso estar muito enganado, mas ficar se preocupando com esse tipo de coisa, pelo menos para mim, é perdade tempo caso você não precise lidar com processamento paralelo diretamente. É a mesma coisa você ter que ficar se preocupando se o motor do seu carro tem x ou y cilindros.

[]'s

This message was edited 1 time. Last update was at 30/12/2010 12:27:09


Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
mochuara
GUJ Master
[Avatar]
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline

eduacsp wrote:Pessoal,

Vcs acham que essa onde de core2duo, i3,i5,i7 etc...vai deixar a programação Java ainda mais complicada? Pq pelo que sei, a divisão do processamento entre núcleos não ocorre assim de forma tão natural. Por exemplo, para preencher ou ler um simples Map<String,String>, temos que dividir o preenchimento entre os núcleos de forma programatica usando Threads, já que o processador não faz isso. Sei que 99,9% dos desenvolvedores não fazem isso, mas algum dia terão de fazer quiserem softwares performaticos.


Programação OO vai ficar mais complicada, nao só em Java.

Ainda bem que temos Scala, e pricipalmente Clojure, pra nos salvar quando essa hora chegar.
mochuara
GUJ Master
[Avatar]
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline

davidbuzatto wrote:Quem tem que se preocupar com isso em primeira instância é o compilador e depois o SO.

Se você precisar "controlar" o processamento paralelo, ai sim, vc tem que colocar a mão na massa, mas como falei, quem tem que se preocupar em usar todo o poder do processador é o SO e o compilador.

Posso estar muito enganado, mas ficar se preocupando com esse tipo de coisa, pelo menos para mim, é perdade tempo caso você não precise lidar com processamento paralelo diretamente. É a mesma coisa você ter que ficar se preocupando se o motor do seu carro tem x ou y cilindros.

[]'s


Acho que vai demorar um bocado para ser algo transparente assim para o usuário.
otaviojava
GUJ Master
[Avatar]

Membro desde: 14/12/2010 10:09:09
Mensagens: 1192
Localização: Salvador,Bahia
Offline

Existem cada vez mais linguagens que trabalham com scabilidade.
É o caso do scala.
Muitas outras linguagens e frameworks devem chegar para isso, já que se tem notícias dos multi-processadores chegando nos celulares também.

twitter- https://twitter.com/otaviojava
java -http://home.java.net/blogs/otaviojava
blog - http://otaviosantana.blogspot.com/
javabahia - http://javabahia.blogspot.com/
linguagil - http://javabahia.blogspot.com/
Desenvolva aplicações com Cassandra de uma maneira mais fácil com o EasyCassanra: https://github.com/otaviojava/Easy-Cassandra

[WWW]
eduacsp
GUJ Ranger
[Avatar]

Membro desde: 29/03/2006 21:29:35
Mensagens: 897
Offline

davidbuzatto wrote:Quem tem que se preocupar com isso em primeira instância é o compilador e depois o SO.

Se você precisar "controlar" o processamento paralelo, ai sim, vc tem que colocar a mão na massa, mas como falei, quem tem que se preocupar em usar todo o poder do processador é o SO e o compilador.

Posso estar muito enganado, mas ficar se preocupando com esse tipo de coisa, pelo menos para mim, é perdade tempo caso você não precise lidar com processamento paralelo diretamente. É a mesma coisa você ter que ficar se preocupando se o motor do seu carro tem x ou y cilindros.

[]'s


Concordo, mas algum dia todos nós vamos ser requisitados para deixar o software o mais rápido possível, e se vc fez todas as refatorações possíveis, a única coisa que vai restar é refatorar para deixar compatível com o número de núcleos do processador.

Pois também eu te digo que tu és Pedro, e sobre esta pedra edificarei a minha igreja, e as portas do inferno não prevalecerão contra ela;
Mateus 16:18
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Oi mochuara, não é bem isso que falei.

Por exemplo, estou falando que não é pq seu código não é multithread que ele vai rodar em apenas um núcleo. Quem vai cuidar disso é o SO, não você. Se você quer "garantir" a execução em paralelo, então você programa dessa forma, mas como falei, o SO vai fazer o que ele achar melhor, além do compilador otimizar o código. É claro, se você programar de forma a usar os recursos do processador, realmente o desempenho vai ser maior, mas mesmo assim, duvido que o SO não tente usar o poder do processador. Acredito até que o próprio processador possa tomar algumas deciões. Acredito que o pessoal que trabalha mais perto do hardware, ou mesmo que conheça mais esses tipos de detalhes, possa nos dar algumas respostas mais perto da realidade.

[]'s

This message was edited 1 time. Last update was at 30/12/2010 12:35:58


Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

eduacsp wrote:Concordo, mas algum dia todos nós vamos ser requisitados para deixar o software o mais rápido possível, e se vc fez todas as refatorações possíveis, a única coisa que vai restar é refatorar para deixar compatível com o número de núcleos do processador.


Sim, não estou dizendo o contrário. Concordo que hajam softwares que precisam utilizar o máximo do poder do processador, mas não concordo com você no ponto que cada programa vai precisar saber quantos núcleos tem o processador. Como falei, acho que os processadores atuais devem ser espertos o bastante para direcionar as instruções que passam pelo processo de adminissão para o núcleo apropriado. Já pensou se a gente tivesse que compilar um código para um processador de 2 núcleos, para um de 4, 8, etc?

[]'s

This message was edited 1 time. Last update was at 30/12/2010 12:40:11


Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
eduacsp
GUJ Ranger
[Avatar]

Membro desde: 29/03/2006 21:29:35
Mensagens: 897
Offline

davidbuzatto wrote:
eduacsp wrote:Concordo, mas algum dia todos nós vamos ser requisitados para deixar o software o mais rápido possível, e se vc fez todas as refatorações possíveis, a única coisa que vai restar é refatorar para deixar compatível com o número de núcleos do processador.


Sim, não estou dizendo o contrário. Concordo que hajam softwares que precisam utilizar o máximo do poder do processador, mas não concordo com você no ponto que cada programa vai precisar saber quantos núcleos tem o processador. Como falei, acho que os processadores atuais devem ser espertos o bastante para direcionar as instruções que passam pelo processo de adminissão para o núcleo apropriado. Já pensou se a gente tivesse que compilar um código para um processador de 2 núcleos, para um de 4, 8, etc?

[]'s


Mas e em alguns casos onde nem o processador, nem o compilador pode dividir o processamento? como o preenchimento de alguma Collection? Nesses casos não tem como, tem que dividir pelo código.

Pois também eu te digo que tu és Pedro, e sobre esta pedra edificarei a minha igreja, e as portas do inferno não prevalecerão contra ela;
Mateus 16:18
drigo.angelo
Virtual Machine Man
[Avatar]

Membro desde: 19/11/2009 12:17:08
Mensagens: 744
Localização: Uberlândia - MG
Offline

davidbuzatto wrote:
eduacsp wrote:Concordo, mas algum dia todos nós vamos ser requisitados para deixar o software o mais rápido possível, e se vc fez todas as refatorações possíveis, a única coisa que vai restar é refatorar para deixar compatível com o número de núcleos do processador.


Sim, não estou dizendo o contrário. Concordo que hajam softwares que precisam utilizar o máximo do poder do processador, mas não concordo com você no ponto que cada programa vai precisar saber quantos núcleos tem o processador. Como falei, acho que os processadores atuais devem ser espertos o bastante para direcionar as instruções que passam pelo processo de adminissão para o núcleo apropriado. Já pensou se a gente tivesse que compilar um código para um processador de 2 núcleos, para um de 4, 8, etc?

[]'s

Realmente, isso perderia uma das características do Java (portabilidade) e dificultaria também o desenvolvimento em outras linguagens..

@drigoangelo

IE6 no more
[Email] [MSN]
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

eduacsp wrote:Mas e em alguns casos onde nem o processador, nem o compilador pode dividir o processamento? como o preenchimento de alguma Collection? Nesses casos não tem como, tem que dividir pelo código.


Uai, então não divide. Sei que você deu só um exemplo, mas este não foi um dos melhores. Pq eu dividiria o preenchimento de uma coleção?

This message was edited 1 time. Last update was at 30/12/2010 12:51:26


Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
eduacsp
GUJ Ranger
[Avatar]

Membro desde: 29/03/2006 21:29:35
Mensagens: 897
Offline

davidbuzatto wrote:Uai, então não divide. Sei que você deu só um exemplo, mas este não foi um dos melhores. Pq eu dividiria o preenchimento de uma coleção?


Motivo do ponto de vista do desenvolvedor: Para manter a segurança dos dados.

Motivo do ponto de vista do usuário: Se a Collection for mt grande, pode impactar na performance]

Motivo do ponto de vista do processador: Eu não vou dividir, pq senão posso fazer besteira e duplicar dados na Collection

Pois também eu te digo que tu és Pedro, e sobre esta pedra edificarei a minha igreja, e as portas do inferno não prevalecerão contra ela;
Mateus 16:18
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

eduacsp wrote:Motivo do ponto de vista do desenvolvedor: Para manter a segurança dos dados.

O que dividir ou não um determinado processo impacta na "segurança" de algum dado? Não entendi o que você quis dizer.

eduacsp wrote:Motivo do ponto de vista do usuário: Se a Collection for mt grande, pode impactar na performance.

Hummmm mas a coleção fica em memória, não no processador.

eduacsp wrote:Motivo do ponto de vista do processador: Eu não vou dividir, pq senão posso fazer besteira e duplicar dados na Collection

O processador não sabe o que é uma coleção. Uma coleção é uma abstração, feita em uma determinda linguagem (Java por exemplo), talvez gerenciada por uma determinada máquina virtual (JVM por exemplo, que por sua vez não sabe o que é uma coleção tbm). O que a JVM conhece são classes, tipos primitivos, etc. Uma coleção não é um tipo primitivo, mas sim um tipo criado não é mesmo? Se a gente for pensar dessa forma, o processador ou a máquina virtual teriam que conhecer todas as classes do JDK, além de conhecer as classes que criamos.

Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
mochuara
GUJ Master
[Avatar]
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline

davidbuzatto wrote:Oi mochuara, não é bem isso que falei.

Por exemplo, estou falando que não é pq seu código não é multithread que ele vai rodar em apenas um núcleo. Quem vai cuidar disso é o SO, não você. Se você quer "garantir" a execução em paralelo, então você programa dessa forma, mas como falei, o SO vai fazer o que ele achar melhor, além do compilador otimizar o código. É claro, se você programar de forma a usar os recursos do processador, realmente o desempenho vai ser maior, mas mesmo assim, duvido que o SO não tente usar o poder do processador. Acredito até que o próprio processador possa tomar algumas deciões. Acredito que o pessoal que trabalha mais perto do hardware, ou mesmo que conheça mais esses tipos de detalhes, possa nos dar algumas respostas mais perto da realidade.

[]'s


Claro que SO/JVM vai cuidar, mas o programador vai ter que especificar o processamento a ser feito em paralelo, por meio da API.
mochuara
GUJ Master
[Avatar]
Membro desde: 20/05/2009 11:21:32
Mensagens: 1776
Offline

davidbuzatto wrote:
eduacsp wrote:Mas e em alguns casos onde nem o processador, nem o compilador pode dividir o processamento? como o preenchimento de alguma Collection? Nesses casos não tem como, tem que dividir pelo código.


Uai, então não divide. Sei que você deu só um exemplo, mas este não foi um dos melhores. Pq eu dividiria o preenchimento de uma coleção?


Porque vc pode.
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team