n******7 发帖数: 12463 | 1 几年前发过一个贴
问java做科学计算如何
现在用java一段时间了,喜忧参半,更加纠结了
先说好的一面,java这玩意,
速度不慢(C一半速度大概)
不用自己管理内存
语法直白,容易学习,我第一次写个多线程的东西都很快搞定
IDE支持强大,很多时候就靠IDE学习语法
用户众多,资料齐全
跨平台,打个jar包就可以到处跑了
但是,感觉java的重点是商业,互联网这一块,所以很多设计上对计算方面的支持不好
比如没有操作符重载,写个公式丑到没法看,这直接导致java计算类的包很少
没有unsigned类型,bit操作很蛋疼
内存消耗有点大,有时候这比运算时间更关键
整个语言太啰嗦,没IDE写起来很痛苦
跟我主要使用的python,R互操作性也不是很好
觉得其实还是C/C++跟我平时用的python,R配合更好
docker也大致解决了deployment的问题
但也不想java就此烂尾了,不想学习太多语言,每门都不精通
很纠结要不要继续投点在java上。。。
我知道的是两个处理杀老鼠数据的公司,一个用的java,一个用的scala |
w**z 发帖数: 8232 | 2 Java 是用来写商业逻辑的。
【在 n******7 的大作中提到】 : 几年前发过一个贴 : 问java做科学计算如何 : 现在用java一段时间了,喜忧参半,更加纠结了 : 先说好的一面,java这玩意, : 速度不慢(C一半速度大概) : 不用自己管理内存 : 语法直白,容易学习,我第一次写个多线程的东西都很快搞定 : IDE支持强大,很多时候就靠IDE学习语法 : 用户众多,资料齐全 : 跨平台,打个jar包就可以到处跑了
|
d****n 发帖数: 12461 | 3 java讲的是大一统,意思就是用了java其他语言都可以不用了,好像每块都有些现成的
框架可以用,但很多又只是通用的性能不高。
但是这个大一统的思想其实也很害人,导致学习过程当中无法直奔问题核心而是先要去
接触一些通用框架,也导致了脱离了大团队协作开发的java开发很难持续。
如果能看到java在搭框架上的优越性,但是摒弃非java不可的思想,用好soa和中间件
的话,还是很好的。
【在 n******7 的大作中提到】 : 几年前发过一个贴 : 问java做科学计算如何 : 现在用java一段时间了,喜忧参半,更加纠结了 : 先说好的一面,java这玩意, : 速度不慢(C一半速度大概) : 不用自己管理内存 : 语法直白,容易学习,我第一次写个多线程的东西都很快搞定 : IDE支持强大,很多时候就靠IDE学习语法 : 用户众多,资料齐全 : 跨平台,打个jar包就可以到处跑了
|
d****n 发帖数: 12461 | 4 而且oo的思想害人不浅,导致一些java开发就是不管三七二十一先oo,造成性能低下。
这也是为啥python, lua, go之类还有市场而且市场在不断增加的原因。 |
n******7 发帖数: 12463 | 5 大牛说的太对了
我就是小作坊干活
用java总觉得有些绕圈,蛋疼...
【在 d****n 的大作中提到】 : 而且oo的思想害人不浅,导致一些java开发就是不管三七二十一先oo,造成性能低下。 : 这也是为啥python, lua, go之类还有市场而且市场在不断增加的原因。
|
x****u 发帖数: 44466 | 6 科学计算java何德何能和matlab比。。。
【在 n******7 的大作中提到】 : 几年前发过一个贴 : 问java做科学计算如何 : 现在用java一段时间了,喜忧参半,更加纠结了 : 先说好的一面,java这玩意, : 速度不慢(C一半速度大概) : 不用自己管理内存 : 语法直白,容易学习,我第一次写个多线程的东西都很快搞定 : IDE支持强大,很多时候就靠IDE学习语法 : 用户众多,资料齐全 : 跨平台,打个jar包就可以到处跑了
|
L*********s 发帖数: 3063 | 7 搞Java的牛人收入远高于开发科学计算, 所以很难有高质量的Java科学计算库被开发 |
x***4 发帖数: 1815 | 8 我还挺喜欢java的。我最喜欢的几点:
gc
static type,用IDE做refactoring非常爽。
用的人多,大部分问题都能stack over flow。
framework靠谱,尤其是最常用的那些,doc也算写得不错。
语法比较笨,所以烂人乱写code也勉强能读。
不过我现在主要scala了。fp写数据相关的business logic真是爽。
【在 n******7 的大作中提到】 : 几年前发过一个贴 : 问java做科学计算如何 : 现在用java一段时间了,喜忧参半,更加纠结了 : 先说好的一面,java这玩意, : 速度不慢(C一半速度大概) : 不用自己管理内存 : 语法直白,容易学习,我第一次写个多线程的东西都很快搞定 : IDE支持强大,很多时候就靠IDE学习语法 : 用户众多,资料齐全 : 跨平台,打个jar包就可以到处跑了
|
t*****n 发帖数: 2578 | 9 斯嘉丽是jvm based。跟爪洼比performance如何? |
n******7 发帖数: 12463 | 10 你说的我更纠结了
scala号称跟c++一样复杂
还没有c++的效率
要投入学习也是很难下决心的
我前几天还测试了一个小公司给我们客户scala写的东西
目前我了解的一些几个专门处理这杀老鼠数据的公司
全是java/scala,没有C++的
不知道是不是还是在写码效率和运行效率之间的一个妥协
【在 x***4 的大作中提到】 : 我还挺喜欢java的。我最喜欢的几点: : gc : static type,用IDE做refactoring非常爽。 : 用的人多,大部分问题都能stack over flow。 : framework靠谱,尤其是最常用的那些,doc也算写得不错。 : 语法比较笨,所以烂人乱写code也勉强能读。 : 不过我现在主要scala了。fp写数据相关的business logic真是爽。
|
|
|
t*****n 发帖数: 2578 | 11 没必要看C++了吧?充其量比爪洼快一倍,又如何?
算法写好了提高是数量级。C++快一倍真不值得花那么大力。 |
n******7 发帖数: 12463 | 12 还有内存使用
java需要的内存还是高很多
具体没有估计过
【在 t*****n 的大作中提到】 : 没必要看C++了吧?充其量比爪洼快一倍,又如何? : 算法写好了提高是数量级。C++快一倍真不值得花那么大力。
|
l*********s 发帖数: 5409 | 13 学好java专职成专业商务应用/互联网/android开发。 数值计算对大部程序员都是屠龙
技能 |
l**********0 发帖数: 150 | 14 你的例子似乎用scala写码效率会高一些,以过程和计算为主,不用oo,如果计算量如
此大连内存都不够用那要考虑分布式了,现在的常规思路是这样,换成c语言的想法不
多见了。 |
c*********e 发帖数: 16335 | 15 用python写个web services,用java来call.
【在 n******7 的大作中提到】 : 几年前发过一个贴 : 问java做科学计算如何 : 现在用java一段时间了,喜忧参半,更加纠结了 : 先说好的一面,java这玩意, : 速度不慢(C一半速度大概) : 不用自己管理内存 : 语法直白,容易学习,我第一次写个多线程的东西都很快搞定 : IDE支持强大,很多时候就靠IDE学习语法 : 用户众多,资料齐全 : 跨平台,打个jar包就可以到处跑了
|
D*******o 发帖数: 3229 | 16 说到科学计算,咋就忘了Fortran?现在的大型仿真计算,比如结构流体啥的,好像
Fortran和C各据半壁江山。
【在 x****u 的大作中提到】 : 科学计算java何德何能和matlab比。。。
|
e*******o 发帖数: 2271 | 17 Fortran 哪里还有半壁江山,五分之一都不错了
【在 D*******o 的大作中提到】 : 说到科学计算,咋就忘了Fortran?现在的大型仿真计算,比如结构流体啥的,好像 : Fortran和C各据半壁江山。
|
g****t 发帖数: 31659 | 18 那时候我记得我回过贴。如果哪个在校phd做个好的java多维数组库,
绝对扬名立万。
可能本版的学生不明白接地气的厉害,所以没人同意。
不然现在这DL的情况,如果都用的你的多维数组库。。。
【在 n******7 的大作中提到】 : 几年前发过一个贴 : 问java做科学计算如何 : 现在用java一段时间了,喜忧参半,更加纠结了 : 先说好的一面,java这玩意, : 速度不慢(C一半速度大概) : 不用自己管理内存 : 语法直白,容易学习,我第一次写个多线程的东西都很快搞定 : IDE支持强大,很多时候就靠IDE学习语法 : 用户众多,资料齐全 : 跨平台,打个jar包就可以到处跑了
|
g****t 发帖数: 31659 | 19 我觉得这个楼里面只有我一个是日常做科学计算的...
【在 e*******o 的大作中提到】 : Fortran 哪里还有半壁江山,五分之一都不错了
|
w***g 发帖数: 5958 | 20 我记得有这么回事。忘了是你发的,前两天还找过那贴没找着。java big endian怎么
破?
【在 g****t 的大作中提到】 : 那时候我记得我回过贴。如果哪个在校phd做个好的java多维数组库, : 绝对扬名立万。 : 可能本版的学生不明白接地气的厉害,所以没人同意。 : 不然现在这DL的情况,如果都用的你的多维数组库。。。
|
|
|
N*****m 发帖数: 42603 | 21 nd4j啊,你们咋都这么喜欢自己造轮子
【在 w***g 的大作中提到】 : 我记得有这么回事。忘了是你发的,前两天还找过那贴没找着。java big endian怎么 : 破?
|
n*******0 发帖数: 2002 | 22 scala的编译器就是辣鸡。
scala的性能跟java 比就是更加的辣鸡。(各种box/unbox,各种immutable
collection的傻逼实现)
scala这个傻逼语言除了写的爽之外就没有优点了。
【在 t*****n 的大作中提到】 : 斯嘉丽是jvm based。跟爪洼比performance如何?
|
h*********m 发帖数: 38 | 23
刚想说咋没人提 fortran,嘿嘿。平时我写MPI和OPENMP肯定用C或者Fortran,有时候
两个混一起用。验证算法用 matlab 更方便些。
【在 D*******o 的大作中提到】 : 说到科学计算,咋就忘了Fortran?现在的大型仿真计算,比如结构流体啥的,好像 : Fortran和C各据半壁江山。
|
e*******o 发帖数: 4654 | 24 语言互相抄 差不多都是想通的 有空就玩
真要深入还得做项目 光学语言是学不深入的
纠结语言是太闲的表现
【在 n******7 的大作中提到】 : 几年前发过一个贴 : 问java做科学计算如何 : 现在用java一段时间了,喜忧参半,更加纠结了 : 先说好的一面,java这玩意, : 速度不慢(C一半速度大概) : 不用自己管理内存 : 语法直白,容易学习,我第一次写个多线程的东西都很快搞定 : IDE支持强大,很多时候就靠IDE学习语法 : 用户众多,资料齐全 : 跨平台,打个jar包就可以到处跑了
|
g****t 发帖数: 31659 | 25 there was no nd4j when I talked about the scientific computation of Java
【在 N*****m 的大作中提到】 : nd4j啊,你们咋都这么喜欢自己造轮子
|
C*****5 发帖数: 8812 | 26 有numpy谁会做这种吃力不讨好的事?
【在 g****t 的大作中提到】 : 那时候我记得我回过贴。如果哪个在校phd做个好的java多维数组库, : 绝对扬名立万。 : 可能本版的学生不明白接地气的厉害,所以没人同意。 : 不然现在这DL的情况,如果都用的你的多维数组库。。。
|
g*****s 发帖数: 1288 | 27 井底之蛙。Google 那么多著名的open source是C++写的。
【在 t*****n 的大作中提到】 : 没必要看C++了吧?充其量比爪洼快一倍,又如何? : 算法写好了提高是数量级。C++快一倍真不值得花那么大力。
|
t*****n 发帖数: 2578 | 28 俺写C++的时候你还是娃娃吧
在lz这个情况下有啥必要学C++?
【在 g*****s 的大作中提到】 : 井底之蛙。Google 那么多著名的open source是C++写的。
|
n******7 发帖数: 12463 | 29 我说的是广义科学计算
科学研究中遇到的计算都算
很多时候就是数据处理
共性是对cpu,内存,硬盘资源都可能有要求
【在 g****t 的大作中提到】 : 我觉得这个楼里面只有我一个是日常做科学计算的...
|
n******7 发帖数: 12463 | 30 big endian有啥问题?
按wiki来说,好像不是个问题?
Optimization
The little-endian system has the property that the same value can be read
from memory at different lengths without using different addresses (even
when alignment restrictions are imposed). For example, a 32-bit memory
location with content 4A 00 00 00 can be read at the same address as either
8-bit (value = 4A), 16-bit (004A), 24-bit (00004A), or 32-bit (0000004A),
all of which retain the same numeric value. Although this little-endian
property is rarely used directly by high-level programmers, it is often
employed by code optimizers as well as by assembly language programmers.
On the other hand, in some situations it may be useful to obtain an
approximation of a multi-byte or multi-word value by reading only its most
significant portion instead of the complete representation; a big-endian
processor may read such an approximation using the same base-address that
would be used for the full value.
我记得有这么回事。忘了是你发的,前两天还找过那贴没找着。java big endian怎么
【在 w***g 的大作中提到】 : 我记得有这么回事。忘了是你发的,前两天还找过那贴没找着。java big endian怎么 : 破?
|
|
|
g****t 发帖数: 31659 | 31 求梯度不能立即口述5种变种的就别说自己是科学计算了。恐怕属于微积分都不常用了。
: 我说的是广义科学计算
: 科学研究中遇到的计算都算
: 很多时候就是数据处理
: 共性是对cpu,内存,硬盘资源都可能有要求
【在 n******7 的大作中提到】 : big endian有啥问题? : 按wiki来说,好像不是个问题? : Optimization : The little-endian system has the property that the same value can be read : from memory at different lengths without using different addresses (even : when alignment restrictions are imposed). For example, a 32-bit memory : location with content 4A 00 00 00 can be read at the same address as either : 8-bit (value = 4A), 16-bit (004A), 24-bit (00004A), or 32-bit (0000004A), : all of which retain the same numeric value. Although this little-endian : property is rarely used directly by high-level programmers, it is often
|
t*****n 发帖数: 2578 | 32 俺本科学的还真是计算数学,用的佛船
不过现在忘得精光 |
n******7 发帖数: 12463 | 33 我记得之前看到这个库的时候
它的benchmark显示比c++的库还快??
当时非常惊讶
现在网站改版了,死活找不到benchmark了
【在 N*****m 的大作中提到】 : nd4j啊,你们咋都这么喜欢自己造轮子
|
n******7 发帖数: 12463 | 34 确实微积分都用的不多
最近做个项目积不出来,就直接暴力近似了
不过你怎么定义不影响我用这个词:)
大家七嘴八舌已经帮我理清了不少事情了
了。
【在 g****t 的大作中提到】 : 求梯度不能立即口述5种变种的就别说自己是科学计算了。恐怕属于微积分都不常用了。 : : : 我说的是广义科学计算 : : 科学研究中遇到的计算都算 : : 很多时候就是数据处理 : : 共性是对cpu,内存,硬盘资源都可能有要求 :
|
n******7 发帖数: 12463 | 35 你不知道杀老鼠的难处
啥东西都要前瞻性学习
不然真的需要用的时候别人不带你玩了
【在 e*******o 的大作中提到】 : 语言互相抄 差不多都是想通的 有空就玩 : 真要深入还得做项目 光学语言是学不深入的 : 纠结语言是太闲的表现
|
n******7 发帖数: 12463 | 36 很多benchmark显示scala性能跟java很接近
你这个说法有参照吗?
【在 n*******0 的大作中提到】 : scala的编译器就是辣鸡。 : scala的性能跟java 比就是更加的辣鸡。(各种box/unbox,各种immutable : collection的傻逼实现) : scala这个傻逼语言除了写的爽之外就没有优点了。
|
n******7 发帖数: 12463 | 37 感觉jvm跟非jvm是两个世界啊
jvm世界的原则不久就是外面有的我也要有吗
【在 C*****5 的大作中提到】 : 有numpy谁会做这种吃力不讨好的事?
|
n******7 发帖数: 12463 | 38 谢谢,你说的这几点非常对症,我认真考虑一下scala
【在 l**********0 的大作中提到】 : 你的例子似乎用scala写码效率会高一些,以过程和计算为主,不用oo,如果计算量如 : 此大连内存都不够用那要考虑分布式了,现在的常规思路是这样,换成c语言的想法不 : 多见了。
|
w********m 发帖数: 1137 | 39 感觉跟人打工,或者多人项目,用java比较好。至少有个pattern,不用天天吵架。 |
T*******x 发帖数: 8565 | 40 我觉得这个说的对,至少对于码农是对的。
【在 e*******o 的大作中提到】 : 语言互相抄 差不多都是想通的 有空就玩 : 真要深入还得做项目 光学语言是学不深入的 : 纠结语言是太闲的表现
|
|
|
N*****m 发帖数: 42603 | 41 怎么可能
我的印象你是去年说的,nd4j 3年前就有了
【在 g****t 的大作中提到】 : there was no nd4j when I talked about the scientific computation of Java
|
s***o 发帖数: 2191 | 42 我觉得就目前来讲,除非有非常特殊的需要,否则不应该浪费时间在scala上
【在 n******7 的大作中提到】 : 谢谢,你说的这几点非常对症,我认真考虑一下scala
|
N*****m 发帖数: 42603 | 43 同意
【在 s***o 的大作中提到】 : 我觉得就目前来讲,除非有非常特殊的需要,否则不应该浪费时间在scala上
|
a*********y 发帖数: 63 | 44 握个手. 那时候学的还 Fortran 77, PC 上根本不能跑, 上机上的是 Fujitsu 的中型
机.
【在 t*****n 的大作中提到】 : 俺本科学的还真是计算数学,用的佛船 : 不过现在忘得精光
|
b***i 发帖数: 3043 | 45 Java科学计算如果需要大量内存,比如8G,能搞定吗?是需要启动jvm的时候指定吗?
另外,如果是显卡内存和显卡的计算,能管理吗?
【在 n******7 的大作中提到】 : 几年前发过一个贴 : 问java做科学计算如何 : 现在用java一段时间了,喜忧参半,更加纠结了 : 先说好的一面,java这玩意, : 速度不慢(C一半速度大概) : 不用自己管理内存 : 语法直白,容易学习,我第一次写个多线程的东西都很快搞定 : IDE支持强大,很多时候就靠IDE学习语法 : 用户众多,资料齐全 : 跨平台,打个jar包就可以到处跑了
|
h*i 发帖数: 3446 | 46 在Java世界里,8G算啥大量内存。调整JVM的各种GC参数是门学问,不过一般用户会个-
Xmx8G啥的也就够了。
Java搞GPU没有问题。
【在 b***i 的大作中提到】 : Java科学计算如果需要大量内存,比如8G,能搞定吗?是需要启动jvm的时候指定吗? : 另外,如果是显卡内存和显卡的计算,能管理吗?
|
b***i 发帖数: 3043 | 47 那应该适合啊。另外,我觉得java特别适合多计算机合作,比如hadoop等技术,还有我
用GAE,觉得后台文件系统和数据库都是无限大的,非常爽。要做科学计算,那些并行
计算的竞争技术能简单的把数据分到多个计算机上吗?
个-
【在 h*i 的大作中提到】 : 在Java世界里,8G算啥大量内存。调整JVM的各种GC参数是门学问,不过一般用户会个- : Xmx8G啥的也就够了。 : Java搞GPU没有问题。
|
h*i 发帖数: 3446 | 48 有两种分布式的。
一种叫数据分布,就是你说的这种,用Storm之类的技术,把数据分成小片小片的数据
流送到各个结点处理。
另一种叫计算分布,数据不动,代码分到各个结点上处理不同的数据,把结果再合起来
。比如Hadoop。
【在 b***i 的大作中提到】 : 那应该适合啊。另外,我觉得java特别适合多计算机合作,比如hadoop等技术,还有我 : 用GAE,觉得后台文件系统和数据库都是无限大的,非常爽。要做科学计算,那些并行 : 计算的竞争技术能简单的把数据分到多个计算机上吗? : : 个-
|
w**z 发帖数: 8232 | 49 数据自己不会跑到节点上,还是要写过去的。hadoop 每个步骤都要读写 hard drive,
spark rdd 就快多了。
【在 h*i 的大作中提到】 : 有两种分布式的。 : 一种叫数据分布,就是你说的这种,用Storm之类的技术,把数据分成小片小片的数据 : 流送到各个结点处理。 : 另一种叫计算分布,数据不动,代码分到各个结点上处理不同的数据,把结果再合起来 : 。比如Hadoop。
|
n******7 发帖数: 12463 | 50 具体说说?
因为spark火过了?
【在 s***o 的大作中提到】 : 我觉得就目前来讲,除非有非常特殊的需要,否则不应该浪费时间在scala上
|
|
|
t*****n 发帖数: 2578 | 51 我日,你不是我同学吧?我也用的小日本的中型机。计算中心的PC大部分连硬盘都没有
【在 a*********y 的大作中提到】 : 握个手. 那时候学的还 Fortran 77, PC 上根本不能跑, 上机上的是 Fujitsu 的中型 : 机.
|
V***l 发帖数: 2108 | 52 我现在的mini PC 也没有硬盘。
【在 t*****n 的大作中提到】 : 我日,你不是我同学吧?我也用的小日本的中型机。计算中心的PC大部分连硬盘都没有
|