C / C++ para Programação Científica

310 views
Skip to first unread message

ChicoHydro

unread,
Apr 11, 2011, 10:49:28 PM4/11/11
to ccppbrasil
Preciso fazer um programa científico (numérico) que tenha bastante
eficiência. Dessa forma estou pensando em desenvolvê-lo em C/C++.
Tenho algumas noções em C e gostaria de expandi-las para C++. Como
editor/compilator escolhi o MS Visual Studio. Nesse contexto tenho as
seguintes questões:

> 1) Qual biblioteca numérica (avançada) seria uma boa escolha. Através de algumas pesquisas cheguei até a GSL (GNU Scientific Library), porém ela é toda em C e necessita de alguns 'truques' para compatibilização com o MSVS. Isso pode comprometer a programação de uma forma geral?!

> 2) Geralmente os livros de C/C++ que leio não falam do ambiente de programação que vou precisar (programação científica). Alguém conhece alguma bibliografia voltada para a programação C/C++ específica para problemas científicos?

> 3) É dificíl encontrar também uma referência que explique como construir bibliotecas (estáticas e/ou dinâmicas) e como fazer a leitura e/ou gravação de arquivos com resultados de processamento. Alguma recomendação nesse sentido?

Fabrício Cabral

unread,
Apr 11, 2011, 11:14:13 PM4/11/11
to ccppb...@googlegroups.com, ChicoHydro
Eu não sei se vai ajudar:


Olhe o Numerical Recipes for C++.

Atenciosamente,

2011/4/11 ChicoHydro <fpro...@hotmail.com>
--
Antes de enviar um e-mail para o grupo leia:
                    http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
--~--~---------~--~----~---------------------------------~----------~--~----~
[&] Colabore com a Pesquisa de Preferência de Conteúdo
             para Eventos do Grupo C & C++ Brasil:
                       http://www.surveymonkey.com/s/GBBGTXN
------~----~-------~---~---~---~---~----------------~------------~---------~
[&] C & C++ Brasil - http://www.ccppbrasil.org/
Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Para mais opções, visite http://groups.google.com/group/ccppbrasil
--~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
Emprego & carreira:  vag...@ccppbrasil.org
http://groups.google.com/group/dev-guys?hl=en



--
--fx

Eric Chiesse

unread,
Apr 11, 2011, 11:17:49 PM4/11/11
to ccppb...@googlegroups.com
1) Não sei bem. Só presta atenção na licensa da GSL. Se ela for somente GPL você pode ter problemas se o seu programa não for. Quanto ao MSVS ele tem trabalhado bem com código ansi C/C++. Não tenho experiência com GSL mas não creio que o esforço de porting seja grande.

2) Numerical Recipes in C. Joga no google tem uma versão online. Não sei se cobre o que você quer. Lá tem os métodos numéricos básicos, mas não sei se chega a solução de autovalores por exemplo.

3) Cara eu já achei difícil esse ponto também. Bom, se você quer entender bem disso dá uma olhada no MSDN e procura por DLL's. Está tudo lá. Esse caminho é se você quer ter um bom controle da sua compilação, fazer linkagem explicita (com LoadLibrary e GetFuncAddress), ... . Se quer um caminho mais fácil cria um projeto do tipo DLL dentro de uma solution que já tenha executável existente que o seu executável já vai enxergar usar as funções da DLL (nesse caso ele usa uma import library e linkagem implicita o que pode te consumir uns milisegundos). Eu já fiz uns testes no Visual Studio Express e foi na boa.
Para entrada de dados e saída de resultados de simulação eu criei minhas próprias interfaces. Normalmente funções que esperam receber um texto e já populam um vetor ou uma matriz dão uma boa ajuda e são fáceis de implementar.

Boa sorte.

---
Eric
www.twitter.com/echiesse
br.linkedin.com/in/echiesse



Ivan lopes

unread,
Apr 12, 2011, 1:47:35 AM4/12/11
to ccppb...@googlegroups.com
*Tenho algumas noções em C e gostaria de expandi-las para C++.*

eu acho que vc deveria usar python e não c++ ...
quanto ao numerical recipes eu não indico, use matlab com c++ e boost.

quando eu ainda brigava com tipos e não sabia oo,  stl nem boost 
achava nr muito bom, hj acho uma mistureba macarronica. 

Todavia acho bom vc ler o livro do nr para entender mais c/c++




2011/4/12 Eric Chiesse <echi...@gmail.com>

Psycho Mantys

unread,
Apr 12, 2011, 10:06:22 AM4/12/11
to ccppb...@googlegroups.com
Em 12 de abril de 2011 02:47, Ivan lopes <lopesi...@gmail.com> escreveu:
> *Tenho algumas noções em C e gostaria de expandi-las para C++.*
> eu acho que vc deveria usar python e não c++ ...
########################################################################

Discordo.

Continue em C++, normalmente você consegue fazer facilmente a
conversão de C++ para tipos de C para usar essas bibliotecas.


--
Mi blog eres su blog: https://www.lccv.ufal.br/~psycho/
@psycho_mantys : http://twitter.com/psycho_mantys
http://www.slackware.com
U.L. : 450347
Fnord

Fabio Diniz

unread,
Apr 12, 2011, 10:16:19 AM4/12/11
to ccppb...@googlegroups.com, Psycho Mantys
Eu também acho mais fácil ir de C para Python do que de C para C++.

Não existe C/C++. C++ é uma linguagem completamente diferente e incrivelmente complexa. Como o próprio criador da linguagem diz, não é preciso saber C para aprender C++ (http://www2.research.att.com/~bs/bs_faq.html)

Python tem ótimas bibliotecas científicas e pode "conversar" com bibliotecas em C tranquilamente.

2011/4/12 Psycho Mantys <psycho...@gmail.com>

Fabio Diniz

unread,
Apr 12, 2011, 10:19:29 AM4/12/11
to ccppb...@googlegroups.com, Psycho Mantys
Há...e dá pra usar desenvolver em Python no Visual Studio (link)

2011/4/12 Fabio Diniz <fabiomac...@gmail.com>

Otávio Basso Gomes

unread,
Apr 12, 2011, 10:31:52 AM4/12/11
to ccppb...@googlegroups.com, ChicoHydro
Olá

1) Existem várias bibliotecas que são direcionadas para um determinado campo. Por exemplo, existe a LAPACK que é para algebra linear, a libFEM para Elementos Finitos, tem a GDAL que é voltada para Geografia (processamento de imagens de sensoriamento remoto) e Medicina (ITK). Além de bibliotecas para cálculo, existem para visualização de dados, como volumes, terrenos, moléculas. 

Achei esse link com bastante delas: http://www.oonumerics.org/oon/

O que eu vejo em alguns projetos que demandem muito processamento, dependendo do problema, é fazer uma versão inicial no Matlab e depois paralelizar em Cluster ou GPU (este último é mais para gerar paper).

2011/4/11 ChicoHydro <fpro...@hotmail.com>

CCR CCR

unread,
Apr 12, 2011, 11:01:47 AM4/12/11
to ccppb...@googlegroups.com
ate pode ser que ir de c para python seja mais facil...

porem como no meu caso, uso programação para programar pic's...
acredito que as engenharias usam isso tbm, mas pra quem fica mesmo soh na programaçao de computadores no
desenvolvimento de aplicativos, talvez seja melhor mesmo pir pro python

mas c++ é bem otimizado pra quem ja conhece c e naum fica dificil


===========================================
===========================================
==                                       ==
==        Cleriston Cleber Rôa           ==
==         45 - 9992 - 3759              ==
==   Engenharia Eletrônica - UTFPR       ==
==                                       ==
===========================================
===========================================





From: fabiomac...@gmail.com
Date: Tue, 12 Apr 2011 11:19:29 -0300
Subject: Re: [ccppbrasil] C / C++ para Programação Científica
To: ccppb...@googlegroups.com
CC: psycho...@gmail.com

Rodrigo Madera

unread,
Apr 12, 2011, 11:15:42 AM4/12/11
to ccppb...@googlegroups.com
Clerison,

Você esqueceu de assinar teu email.

=P

2011/4/12 CCR CCR <cleri...@live.com>

Eric Chiesse

unread,
Apr 12, 2011, 11:54:00 AM4/12/11
to ccppb...@googlegroups.com
Comentários em linha.


Em 12 de abril de 2011 02:47, Ivan lopes <lopesi...@gmail.com> escreveu:
*Tenho algumas noções em C e gostaria de expandi-las para C++.*

eu acho que vc deveria usar python e não c++ ...

Dependendo do problema eu não acho boa idéia. Se for resolver um sistema de equações diferenciais muito grande e com passo de integração muito pequeno escrever a derivada em python será bastante ineficiente. Se ele quer eficiência o caminho é C/C++ ou o bom e velho Fortran. E no caso de C++ fugir de OO como paradigma de programação (nesse caso específico).
 
quanto ao numerical recipes eu não indico, use matlab com c++ e boost.

quando eu ainda brigava com tipos e não sabia oo,  stl nem boost 
achava nr muito bom, hj acho uma mistureba macarronica.
 

Todavia acho bom vc ler o livro do nr para entender mais c/c++

Matlab é bom para prototipagem e prova de conceito. Na hora de falar sério temos que vir para C/C++. Tenho um código para simulação de amplificador óptico em C++ que simula em 2 a 3 min o que o de um colega em MATLAB leva 2 horas.

O NR é basicamente um livro de métodos numéricos. Para aprender a programar é melhor procurar outro livro. Eu usei o "C++ How to Program" e gostei dele.
Não acho que o conhecimento de boost seja fundamental nesse caso. STL pode ajudar um pouco. Mas para o algoritmo numérico mesmo, o que importa é entender de memória, usar boas estruturas de dados e algoritmos eficientes.

---
Eric
www.twitter.com/echiesse
br.linkedin.com/in/echiesse

Edison Ribeiro Araújo

unread,
Apr 12, 2011, 9:45:03 PM4/12/11
to ccppb...@googlegroups.com
Eu endosso o que nosso amigo falou:
Para aprender c++ melhor um livro específico.
Quanto a bibliotecas: blas,nr(com ressalvas),openmp(pois tem muitas
facilidades para usar varios cores) e o boost. Uma coisa muito
interessante tambem é usar MPI para trabalhar usando um conjunto de
máquinas.
Bem como você pode ver tem muito recurso para se trabalhar com
computação científica, mas não se limite a estes.. Em C++ tem muitas
bibliotecas prontas para uso.

Um grande abraco e bom trabalho.
Edison.

> --
> Antes de enviar um e-mail para o grupo leia:
>                      http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
> --~--~---------~--~----~---------------------------------~----------~--~----~
> [&] Colabore com a Pesquisa de Preferência de Conteúdo
>               para Eventos do Grupo C & C++ Brasil:
>                         http://www.surveymonkey.com/s/GBBGTXN
> ------~----~-------~---~---~---~---~----------------~------------~---------~
> [&] C & C++ Brasil - http://www.ccppbrasil.org/
> Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
> Para mais opções, visite http://groups.google.com/group/ccppbrasil
> --~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
> Emprego & carreira:  vag...@ccppbrasil.org
> http://groups.google.com/group/dev-guys?hl=en
>


--
---------------------------------------------------
--- EDISON RIBEIRO ARAÚJO ---
--- CEL : +55 11 9621 - 8336 ---
---------------------------------------------------

ChicoHydro

unread,
Apr 12, 2011, 9:50:31 PM4/12/11
to ccppbrasil
Nos últimos tempos tenho usado bastante o Matlab. É uma ferramenta
fantástica e fácil de utilizar. Porém concordo também que o seu uso
para programas que exigem eficiência não é muito adequado. O ideal
mesmo é utilizá-lo como prototipagem numérica.

Atualmente estou justamente realizando a concepção da estruturação dos
dados do programa que devo desenvolver. Pretendo utilizar estruturas/
classes para tal fim, mas vi abaixo um comentário para tentar fugir de
OO em programas numéricos. É isso mesmo? Esse tipo de programação pode
mais atrapalhar do que ajudar em softwares desse tipo?

On 12 abr, 12:54, Eric Chiesse <echie...@gmail.com> wrote:
> Comentários em linha.
>
> Em 12 de abril de 2011 02:47, Ivan lopes <lopesivan....@gmail.com> escreveu:
>
> > **Tenho algumas noções em C e gostaria de expandi-las para C++.**
> > *
> > *
> > eu acho que vc deveria usar python e não c++ ...
>
> Dependendo do problema eu não acho boa idéia. Se for resolver um sistema de
> equações diferenciais muito grande e com passo de integração muito pequeno
> escrever a derivada em python será bastante ineficiente. Se ele quer
> eficiência o caminho é C/C++ ou o bom e velho Fortran. E no caso de C++
> fugir de OO como paradigma de programação (nesse caso específico).
>
> > quanto ao numerical recipes eu não indico, use matlab com c++ e boost.
>
> > quando eu ainda brigava com *tipos* e não sabia oo,  stl nem boost

Eric Chiesse

unread,
Apr 12, 2011, 10:31:20 PM4/12/11
to ccppb...@googlegroups.com
Olha essa questão de fugir de OO é um pouco de opinião pessoal minha e um pouco de fato.

Fato porque OO insere um pouco de overhead em certas operações.

Opinião pessoal porque acho que atrapalha um pouco na resolução dos problemas introduzindo complexidade desnecessária. Eu acabei usando OO para a parte de entrada e saída de dados de um simuador (o que a priori não é um problema) e acho agora que se usasse apenas matrizes e vetores desde o início teria ficado mais simples.

Note que falo do paradigma de programação orientada a objetos (herança, polimorfismo, classes abstratas, interfaces) e não do fato de se usar classes nos programas, o que é diferente. Enquanto o uso de classes e structs pode ajudar a organizar os dados do programa, a criação de uma hierarquia de classes por herança pode complicar as coisas em vez de facilitar.

Agora, eu tenho certeza de que há bastante gente que discorda dessa opinião. Eu já vi uma pesquisadora defender o Java com unhas e dentes para resolver problemas de FDTD. Só não sei se ela defendia especificamente o Java ou também OO no pacote.

A lição que tenho aprendido é: "foco no núcleo do modelo". Depois disso pensar no que vem por fora.

---
Eric
www.twitter.com/echiesse
br.linkedin.com/in/echiesse



Helio Perroni Filho

unread,
Apr 12, 2011, 10:37:41 PM4/12/11
to ccppb...@googlegroups.com
Sobre o uso de Python:

Atualmente estou desenvolvendo um projeto de visão artificial em Python usando numpy / scipy [ http://scipy.org/ ], e é como o Eric descreveu – bastante rápido sempre que o processamento fica todo por conta das bibliotecas, mas ouse inserir código Python em um loop de processamento e adeus desempenho.

Estive investigando formas de contornar esse problema; a melhor alternativa que encontrei foi a Cython [ http://cython.org/ ], que promete possibilitar a escrita de extensões nativas em uma linguagem bastante semelhante à própria Python. Pela documentação parece ser mesmo muito boa, combinando a leveza de sintaxe da Python com o controle da C, mas ainda tenho que fazer um test-drive – estou um pouco incomodado com a aparente dificuldade de debugar o código.

Quanto a programar para PIC's, há projetos como o p14p [ http://code.google.com/p/python-on-a-chip/ ] que buscam portar a linguagem para plataformas embarcadas. Mas realmente essa não é minha praia, então não sei se atenderia suas necessidades.

--
Ja ne,
Helio Perroni Filho
http://machineawakening.blogspot.com/

Helio Perroni Filho

unread,
Apr 12, 2011, 10:57:24 PM4/12/11
to ccppb...@googlegroups.com
2011/4/12 Eric Chiesse <echi...@gmail.com>

> Note que falo do paradigma de programação orientada a objetos
> (herança, polimorfismo, classes abstratas, interfaces) e não do
> fato de se usar classes nos programas, o que é diferente.
> Enquanto o uso de classes e structs pode ajudar a organizar os
> dados do programa, a criação de uma hierarquia de classes por
> herança pode complicar as coisas em vez de facilitar.

Na verdade o uso de hierarquias de herança complexas saiu de moda há
alguns anos. Polimorfismo continua sendo importante, mas ou ele é
implementado através de interfaces (ou classes virtuais puras em C++)
ou se apela logo para uma liguagem de tipagem dinâmica como Python,
onde só o que importa é a interface dos objetos, não suas classes.

Eu sempre trabalhei bastante com OO, e nos últimos tempos cheguei à
conclusão de que a melhor estratégia é usar classes para definir o
domínio do problema – encapsulando dados, implementando as operações
mais básicas, impondo restrições de consistência, etc. – e funções
top-level para implementar os algoritmos mais complexos. Dessa maneira
venho conseguindo implementar arquiteturas concisas, de baixo
acoplamento, com bem pouca repetição de código e reuso intenso.

Eric Chiesse

unread,
Apr 12, 2011, 11:17:08 PM4/12/11
to ccppb...@googlegroups.com
Bom saber da sua experiência.

Atualmente tenho olhado com muito carinho também os conceitos de programaçao genérica e programação funcional. Acho que são ferramentas que se bem usadas podem ajudar muito na implementação de modelos científicos.

As linguagens de script tb são muito interessantes. Estou me preparando para mudar a entrada de dados do meu simulador para Lua. E a partir daí dá pra começar a investigar o uso nos modelos numéricos também, com a mesma idéia que vc colocou em relação ao Python.

---
Eric
www.twitter.com/echiesse
br.linkedin.com/in/echiesse



--

ChicoHydro

unread,
Apr 13, 2011, 10:30:42 AM4/13/11
to ccppbrasil
Pessoal, achei alguns livros que podem ser interessantes:
- Robinson, J.A., Software Design for Engineers and Scientists
- Shapira, Y., Solving PDEs in C++
- Oliveira, S., Stewart, D., Writing Scientific Software - A Guide
to Good Style.


Para o meu problema em específico, estou pensando na seguinte
organização:

1) criar classes para armazenar todas as informações (propriedades de
entrada e outputs calculados) relacionadas com os nós (malha do meu
problema). Por exemplo: criar uma classe chamada NO e posteriormente
um array (ou uma outra classe) que armazena vários objetos do tipo NO
que irão constituir minha malha. Para cada objeto do tipo NO estarão
armazenadas todas as informações do mesmo: posição global,
propriedades, coef. para os processos iterativos, variáveis
calculadas, etc.

2) no núcleo do programa que deverá ter alguns processos iterativos,
estou pensando colocar todas as informações necessárias para tal
cálculo em matrizes ou talvez trabalhar diretamente com ponteiros.
Após a convergência de um dado step, volto com as novas variáveis
calculadas para os respectivos objetos do tipo NO (para manter a
organização). O que acham desse procedimento? O fato de trabalhar
diretamente com ponteiros no núcleo iterativo do problema e depois
transferir os resultados calculados para os objetos seria uma maneira
de ganhar eficiência? Ou não faz diferença, ou seja, posso trabalhar
diretamente com os objetos dentro do processo iterativo?




On 13 abr, 00:17, Eric Chiesse <echie...@gmail.com> wrote:
> Bom saber da sua experiência.
>
> Atualmente tenho olhado com muito carinho também os conceitos de programaçao
> genérica e programação funcional. Acho que são ferramentas que se bem usadas
> podem ajudar muito na implementação de modelos científicos.
>
> As linguagens de script tb são muito interessantes. Estou me preparando para
> mudar a entrada de dados do meu simulador para Lua. E a partir daí dá pra
> começar a investigar o uso nos modelos numéricos também, com a mesma idéia
> que vc colocou em relação ao Python.
>
> ---
> Ericwww.twitter.com/echiesse
> br.linkedin.com/in/echiesse
>
> Em 12 de abril de 2011 23:57, Helio Perroni Filho <xperr...@gmail.com>escreveu:
>
>
>
>
>
>
>
> > 2011/4/12 Eric Chiesse <echie...@gmail.com>
> > [&] C & C++ Brasil -http://www.ccppbrasil.org/
> > Para sair dessa lista, envie um e-mail para
> > ccppbrasil-...@googlegroups.com
> > Para mais opções, visitehttp://groups.google.com/group/ccppbrasil
> > --~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
> > Emprego & carreira:  vaga...@ccppbrasil.org
> >http://groups.google.com/group/dev-guys?hl=en

Eric Chiesse

unread,
Apr 13, 2011, 11:11:16 AM4/13/11
to ccppb...@googlegroups.com
Cuidado aqui para não duplicar as informações em memória. Se a sua malha for grande você vai precisar de bastante memória para fazer os cálculos.

Começa pelo núcleo e vê qual abordagem melhor vai se encaixar no seu caso. Se você perceber que está complicado mude a abordagem até achar uma simples. Esse é um princípio dos métodos de modelagem ágeis (agile) em que você resolve o que tem maior risco primeiro e evita mudanças grandes no futuro.
Tenta primeiro resolver o seu problema. Depois de algo feito e compreendido passe para a otimização se necessário. Pode ser que trabalhar diretamente com o teu NO seja suficiente.

---
Eric
www.twitter.com/echiesse
br.linkedin.com/in/echiesse



[&] C & C++ Brasil - http://www.ccppbrasil.org/

Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Para mais opções, visite http://groups.google.com/group/ccppbrasil
--~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
Emprego & carreira:  vag...@ccppbrasil.org
http://groups.google.com/group/dev-guys?hl=en

Ivan lopes

unread,
Apr 13, 2011, 11:18:29 AM4/13/11
to ccppb...@googlegroups.com
Eu trabalho com simulações matemáticas e uso python e c++, mas toma cuidado para não gastar muito com 
a linguagem e perder o foco.

Outra coisa ... vc falou q tinha noções de c ... acho q as chances de vc fazer um projeto macarrônico 
é bem grande, mas todavia, só se aprende fazendo. Boa sorte. 
 

2011/4/13 ChicoHydro <fpro...@hotmail.com>
[&] C & C++ Brasil - http://www.ccppbrasil.org/

Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Para mais opções, visite http://groups.google.com/group/ccppbrasil
--~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
Emprego & carreira:  vag...@ccppbrasil.org
http://groups.google.com/group/dev-guys?hl=en

Уθя¡ςκ

unread,
Apr 13, 2011, 11:27:02 AM4/13/11
to ccppbrasil
Dê uma olhada na SymbolicC++, os autores que a criaram também possuem
um livro sobre sua utilização e implementação. Existem várias
biblitecas, esta é uma que não é muito conhecida mas que é de fácil
uso e pode atender a sua necessidade neste sentido.

Att.

Vagner

unread,
Apr 13, 2011, 12:25:16 PM4/13/11
to ccppbrasil
Amigo,

Você conhece o SciLab ?
http://www.scilab.org/

Veja a pag 119 do livro abaixo ...
http://books.google.com.br/books?id=mpkznLUemMoC&dq=scilab+%2B+C+language&source=gbs_navlinks_s
Você pode trabalhar só com o SciLan, mas se necessário pode utilizar
C.

Abraços,

Vagner S. Vasconcelos
@vsvasconcelos

Thiago Adams

unread,
Apr 13, 2011, 12:33:18 PM4/13/11
to ccppbrasil


On 13 abr, 11:30, ChicoHydro <fprof...@hotmail.com> wrote:
> Pessoal, achei alguns livros que podem ser interessantes:
>    - Robinson, J.A., Software Design for Engineers and Scientists
>    - Shapira, Y., Solving PDEs in C++
>    - Oliveira, S., Stewart, D., Writing Scientific Software - A Guide
> to Good Style.
>
> Para o meu problema em específico, estou pensando na seguinte
> organização:
>
> 1) criar classes para armazenar todas as informações (propriedades de
> entrada e outputs calculados) relacionadas com os nós (malha do meu
> problema). Por exemplo: criar uma classe chamada NO e posteriormente
> um array (ou uma outra classe) que armazena vários objetos do tipo NO
> que irão constituir minha malha. Para cada objeto do tipo NO estarão
> armazenadas todas as informações do mesmo: posição global,
> propriedades, coef. para os processos iterativos, variáveis
> calculadas, etc.

É dificil ter uma opnião sobre o design de algo que não se conhece.
Mas parece que você está no caminho certo se definir um conceito unico
e bem especifico para cada coisa.
E fazer o encapsulamento certinho do que é detalhe de implementação.
Defina antes a interface de NO que voce precisa.

> 2) no núcleo do programa que deverá ter alguns processos iterativos,
> estou pensando colocar todas as informações necessárias para tal
> cálculo em matrizes ou talvez trabalhar diretamente com ponteiros.
> Após a convergência de um dado step, volto com as novas variáveis
> calculadas para os respectivos objetos do tipo NO (para manter a
> organização).

Seria bom (mas nem sempre eh possivel) que pudesse fazer com
temporarios e nao direto na estrutura de dados final.

>O que acham desse procedimento? O fato de trabalhar
> diretamente com ponteiros no núcleo iterativo do problema e depois
> transferir os resultados calculados para os objetos seria uma maneira
> de ganhar eficiência? Ou não faz diferença, ou seja, posso trabalhar
> diretamente com os objetos dentro do processo iterativo?

Depende do problema, mas a interface publica dos seus dados
dificilmente se usa ponteiros.
Sera preciso vc colocar mais detalhes aqui na lista ..

Marcelo Zimbres

unread,
Apr 13, 2011, 11:28:00 PM4/13/11
to ccppb...@googlegroups.com
Olá,

eu te aconselho a usar o ROOT. O progama foi desenvolvido no CERN para lidar com as quantidades enormes de dados que eles produzem cada vez que lidam com o acelerador. O ROOT tem aprximadamente 2 milhões de linhas de código com uma equipe que da um suporte praticamente imediato, usa LGPL, tem wraps para GSL e FFTW, commits diários, fortíssima orientação a objetos. Quando você o instala, um interpretador de C++ também é instalado assim você pode dispesar essas linguagens interpretadas para rápido prototipagem com matlab e matematica, python e usar diretamente c++. Possui facilidades que geram dicionários para seus próprios tipos, assim você pode usar suas classes em modo interpretado também, tem várias facilidades para I/O e processamento e armazenamento de grandes quantidades de dados.

http://root.cern.ch/drupal/

Abraços,
Marcelo



2011/4/13 Thiago Adams <thiago...@gmail.com>
--
Antes de enviar um e-mail para o grupo leia:
                    http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
--~--~---------~--~----~---------------------------------~----------~--~----~
[&] Colabore com a Pesquisa de Preferência de Conteúdo
             para Eventos do Grupo C & C++ Brasil:
                       http://www.surveymonkey.com/s/GBBGTXN
------~----~-------~---~---~---~---~----------------~------------~---------~
[&] C & C++ Brasil - http://www.ccppbrasil.org/

Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Para mais opções, visite http://groups.google.com/group/ccppbrasil
--~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
Emprego & carreira:  vag...@ccppbrasil.org
http://groups.google.com/group/dev-guys?hl=en

Leonardo Mello

unread,
Apr 19, 2011, 7:25:17 AM4/19/11
to ccppb...@googlegroups.com

Eu trabalho com métodos numéricos e desenvolvo em FORTRAN 90.
É uma linguagem pra cálculo certamente.


--
Antes de enviar um e-mail para o grupo leia:
                    http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
--~--~---------~--~----~---------------------------------~----------~--~----~
[&] Colabore com a Pesquisa de Preferência de Conteúdo
             para Eventos do Grupo C & C++ Brasil:
                       http://www.surveymonkey.com/s/GBBGTXN
------~----~-------~---~---~---~---~----------------~------------~---------~
[&] C & C++ Brasil - http://www.ccppbrasil.org/
Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Para mais opções, visite http://groups.google.com/group/ccppbrasil
--~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
Emprego & carreira:  vag...@ccppbrasil.org
http://groups.google.com/group/dev-guys?hl=en



--

Leonardo Fagundes de Mello
Graduando - Engenharia de Computação - FURG
Reply all
Reply to author
Forward
0 new messages