Pergunta

Atualmente estou tendo uma aula de matemática na faculdade chamada "Scientific Computing" e o professor nos disse que C é a língua comum mais usado para, bem, computação científica e estou apenas perguntando a respeito de quão preciso este professor é?

Foi útil?

Solução

No meu negócio (física de partículas) que praticamente se mudou de Fortran 77 direto para c ++ e Python. Aqueles de nós que cuidado sobre a programação de todos sabemos c, mas só é escrito para aplicações de nicho (placas DAQ incorporado, motoristas de propósito específico, ...).

Mas aprender c lhe dará uma base sólida para a programação, e raramente é rentável para discutir com os professores.

Outras dicas

Eu não acho que a resposta de seu professor está lhe servindo bem, mesmo se ele está correto.

Em minha experiência como consultor de sistemas de dados de computação científica e C é, certamente, muito utilizada, mas assim são Fortran e C ++. Python é de longe a linguagem de script mais comumente usado.

Eu acho que isso vai mudar. O grande problema agora é a computação paralela e isso é doloroso (MPI alguém?) Nas línguas tradicionais que eu mencionei. Minha especulação é que um monte de paralelização vai (e deve) ser movido para máquinas virtuais: Java ou .NET; ou seja, eu acho que a paralelização deve ser o trabalho do JIT. Se isso vai ser habilitado com, digamos, Fortress , ou um um dos linguagens tradicionais, eu não sei. Intel está empurrando ferramentas paralelas para C / C ++, mas Gostaria de saber se algo como Terracotta pode melhor no longo prazo (eu não ouvi de ninguém na comunidade científica que tentou ele --- grande Finanças tem, mas eles não são tão abertos).

Se a questão é o que você deve aprender a conseguir um emprego em computação científica, então a primeira coisa que eu diria é que você é mais provável de ser contratado para as suas competências científicas do que suas habilidades de programação (o que explica parcialmente a estado lastimável de um monte de código científico, para saber mais sobre isso, veja este SO tópico). Se você são vai ser contratado para as suas habilidades de programação (provavelmente HPC), em seguida, considerar que, na opinião desta professora, aqueles pode ser obsoleto para projetos mais recentes em um futuro não tão distante. Não faria mal a conhecer alguns Python, embora, incluindo NumPy .

Pelo que tenho ouvido Fortran é muito comum para fins científicos, mas C é suficiente para uso geral que, para alguns, é uma boa solução para a maioria qualquer tipo de programação.

Para bioinformática e biologia computacional, C é muito popular.

Um monte de "computação científica" é tratado em Mathematica, Matlab e outras ferramentas semelhantes.

Bem ... sob o capô, Matlab é escrito em C ou C ++, eu acho, mas muitas partes do Mathematica são escritos em si Mathematica. Para ter certeza, por razões históricas, e também porque as características intrínsecas do C, muitos científica e computação bibliotecas de software oi-tech e tais são escritos em C / C ++.

Eu suspeito C / C ++ continuará a desfrutar de uma vantagem favorável para muitas aplicações de alto desempenho em tempo real e, talvez não tanto para a otimização local raw própria computação (que não pode ser expresso em linguagens de alto nível), mas para de laços apertados, e para fazer a interface com vários componentes, sejam eles peças físicas do seu equipamento, ou elementos de software, tais como, por exemplo paralelo quadros de computação.

Como dmckee apontou, o estudo da c fornece uma boa base para a programação em geral, pelo menos programação procedural. Ele também tem aplicações práticas, de modo a opinião do seu professor tem algum forte apoio neste momento. Mas faça! continuar a desafio, respeitosamente, a sabedoria recebida de seus professores e anciãos, entendendo que, por vezes, como bons mestres zen, eles colocá-lo em um caminho, não tanto para o destino, mas para a viagem / processo.

C é amplamente utilizado na programação. A maioria de nós programador nunca codificar em C, especialmente quando estamos na faculdade. É apenas a sua preferência professora eu acho: -)

é C realmente usado para uma série de Computação Científica?

Computação Científica engloba muitas coisas diferentes e, consequentemente, muitas linguagens de programação diferentes são utilizados para computação científica.

Tradicionalmente, computação científica significava computação de alto desempenho e foi limitado no seu âmbito a álgebra principalmente linear e alguns métodos espectrais (por exemplo FFTs) e foi feito principalmente em Fortran. Desde então, a amplitude de computação científica tem se expandido enormemente com muitas pessoas agora considerando computação técnica (dados eg Massing, traçando gráfico, prototipagem) caindo na mesma posição e outras pessoas pegando novas formas de computação de alto desempenho, tais como cálculos simbólicos.

Linguagens como Python, R, Mathematica e MATLAB são comumente usados ??para computação técnica. Linguagens como C, C ++ e Fortran ainda são usados ??para processamento de números. Linguagens como OCaml são usados ??para grande escala computação simbólica.

Como um software de construção programador profissional para cientistas e engenheiros que posso dizer que quase todas as nossas metodologias numéricos são escritos em C. Portanto, no nosso caso é certamente verdade. Nós temos bolsões de C ++ e Fortran. Em termos de desempenho, é difícil de bater C bem codificado e um bom compilador. Muito, muito ocasionalmente, podemos mergulhar em conjunto.

Mas o mundo mudou muito. Python é uma linguagem maravilhoso - o mais agradável IMHO linguagem e pode chamar bibliotecas nativas. Depois, há R novamente uma fonte interpretado língua, mas com uma enorme biblioteca de métodos numéricos todos compilados C ou C ++. Em seguida, adicione todo o novo hardware acelerado métodos como OpenCL e as muitas ligações ... C ou Fortran não é mais a única resposta. Mas para o número de CPU tradicional trituração C e ASM é o melhor da classe.

De minha experiência de trabalho em diferentes laboratórios e institutos de pesquisa, eu diria que a aprendizagem de uma linguagem de computador apenas dar-lhe uma fundação e uma introdução à programação. C ou Java seria uma linguagem favorável para pegar como introdução, assim que seu professor é correto certo ponto.

Ser capaz de aplicar seus conhecimentos em uma língua para outra língua é a chave para o sucesso no ambiente de trabalho computacional / desenvolvimento. Como você se move através de empresas / institutos / grupo de laboratório diferente, você verá que cada um deles teria suas próprias preferências em linguagem / software. Ser capaz de aprender coisas novas rapidamente é mais importante do que tentar memorizar a sintaxe de uma língua particular.

Claro que, se você começa a escolher um idioma de sua escolha para um projeto, escolha um que tem as bibliotecas que você precisa.

Sim, ANSI C acompanhada por MPI.

Às vezes, as pessoas querem usar "C objetivo", o que significa que colocar funções em métodos de grande classe, e cada examplar de que será executado no núcleo separado. Note que este não é C ++, mas "C com objetos". Nenhuma das características C ++ é utilizada com excepção do modelo método objecto. Este é apenas embrulho mesma C velho em "modelo de objeto racional", permite o uso de camadas intermediárias e assim por diante.

Bons exemplos acima:. LAMMPS

Charme ++ é outra boa maneira de obter "bom e velho C de forma moderna".

Em outra colina de linguagens científicas são LISP, Haskell e outros grupos meta-lang. Esta é outra, mundo "soft" da programação científica, onde o tempo não é problema, mas a existência de resposta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top