![]() |
1
24
在我的业务(粒子物理学)中,我们几乎从Fortran 77直接移动到C++和Python。我们中那些 照顾 关于编程,大家都知道C,但它只是为特定的应用程序(嵌入式DAQ板、专用驱动程序等)编写的。 但是,学习C会给你一个坚实的编程基础,和教授争论很少是有利可图的。 |
![]() |
2
12
我不认为你教授的回答对你有好处,即使它是正确的。 在我作为科学计算和数据系统的顾问的经验中,C确实被使用了很多,但是FORTRAN和C++也是如此。到目前为止,Python是最常用的脚本语言。 我想这会改变的。现在最大的问题是并行计算,这很痛苦(MPI有人吗?)在我提到的传统语言中。我的猜测是,许多并行化将(也应该)被移动到虚拟机:Java或.NET;也就是说,我认为并行化应该是JIT的工作。是否会启用,比如, Fortress 或者传统语言中的一种,我不知道。英特尔正在努力 parallel tools 对于C/C++,我想知道像TeLaCtTa这样的东西在将来是否会更好(我还没有听说过科学界的任何人尝试过它——大金融都有,但它们不是那么开放)。 如果问题是你应该学习什么才能在科学计算领域找到一份工作,那么我想说的第一件事是,你更可能因为你的科学技能而被雇佣,而不是你的编程技能(这部分解释了许多科学代码的糟糕状态,更多关于这方面的信息,请参见 this SO topic )如果你 是 因为你的编程技能(可能是hpc)而被雇佣,然后考虑到在这位教授看来,在不远的将来,那些对于新项目来说可能是过时的。不过,了解一些巨蟒并不伤人,包括 NumPy . |
![]() |
3
7
据我所知,FORTRAN在科学上是非常常见的,但是C的通用性已经足够,对于某些人来说,对于大多数任何类型的编程来说,它都是一个很好的解决方案。 |
![]() |
4
5
对于生物信息学和计算生物学来说,C是非常流行的。 |
![]() |
5
4
许多“科学计算”都是用mathematica、matlab等类似工具来处理的。 好。。。在引擎盖下,MATLAB是用C或C++编写的,但是Mathematica的许多部分都是用Mathematica自己编写的。可以肯定的是,由于历史的原因,也因为C的内在特性,许多科学和高科技计算软件库等都是用C/C++编写的。 我猜想C/C++将继续为许多实时和高性能应用提供有利的优势,也许对于原始计算本身(这不能用高级语言来表达),但对于紧环的局部优化,以及与各种组件的接口,它们是物理设备或软件。重新定义元素,例如并行计算框架。 正如DMCKE指出的,C的研究为大规模程序设计提供了良好的基础,至少是程序化编程。它也有实际的应用,所以你的教授的观点在这个时候有一些强有力的支持。但是,做吧!尊重地继续挑战你的教授和长辈们的智慧,了解到有时候像好的禅师一样,他们会让你走上一条道路,不是为了目的地,而是为了旅行/过程。 |
![]() |
6
1
C在编程中被广泛使用。我们中的大多数人曾经用C语言编码,尤其是在大学时。这只是你对教授的偏好,我想是:—) |
![]() |
7
1
科学计算包含许多不同的东西,因此,科学计算使用许多不同的编程语言。 传统上,科学计算意味着高性能的计算,其范围主要局限于线性代数和一些谱方法(如ffts),并且主要在Fortran中完成。从那时起,科学计算的范围扩大了很多,现在许多人都在考虑技术计算(如海量数据、图形绘制、原型制作)的问题,而其他人则选择了符号计算等高性能计算的新形式。 诸如python、r、mathematica和matlab等语言通常用于技术计算。像C、C++和FORTRAN这样的语言仍然用于数字压缩。像ocaml这样的语言用于大规模符号计算。 |
![]() |
8
1
作为一个为科学家和工程师开发软件的专业程序员,我可以说几乎所有的数值方法都是用C语言编写的,所以在我们的例子中,这是真的。我们有C++和FORTRAN的口袋。在性能方面,很难击败编码良好的C和良好的编译器。我们偶尔也会进行组装。 但是世界已经改变了很多。python是一种很好的语言,是最好的语言imho,可以称为本地库。然后,R又是源解释语言,但是大量的数值方法库全部编译为C或C++。然后添加所有新的硬件加速方法,如opencl和许多绑定…C或Fortran不再是唯一的答案。但是对于传统的CPU来说,处理C和ASM是最好的。 |
![]() |
9
0
根据我在不同实验室和研究机构工作的经验,我认为学习一门计算机语言只会给你一个基础和编程入门。C或Java将是一个很好的语言,作为介绍,所以你的教授是正确的,一定程度上。 在计算/开发工作环境中,能够将您在一种语言中的知识应用到另一种语言是成功的关键。当你走访不同的公司/研究所/实验室小组时,你会发现他们中的每个人在语言/软件方面都有自己的偏好。快速学习新事物比记忆一种特定语言的语法更重要。 当然,如果要为项目选择一种语言,请选择1,该语言具有所需的库。 |
![]() |
10
0
是的,带MPI的是ANSI C。 有时人们希望使用“目标C”,这意味着他们将函数放入大类的方法中,它的每一个示例都将在单独的核心上运行。注意,这不是C++,而是“带有对象的C”。除了方法对象模型之外,没有使用C++特征。这只是将同一个旧的C包装成“Rational对象模型”,允许使用中间层等等。 上面的好例子:lammps。 魅力++是另一个获得“现代方式的好旧C”的好方法。 在科学语言的另一个山丘上是lisp、haskell和其他元语言群。这是另一个“软”的科学规划世界,在那里时间不是问题,而是答案的存在。 |
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |