why is C gaining popularity?

x
xy18
楼主 (未名空间)

诸位大侠,我必须请教一下,
我就不懂啊,C语言为啥用得越来越多了哪?
我刚看到这个,https://www.tiobe.com/tiobe-index/
要是C/C++合在一起,我还可以理解,
毕竟近几年C++改进了很多,好用了很多,于是大家就越来越爱用了吗,
但是C是单列出来的,
难道现在大家都去写单片机驱动啦?还是怎么回事?
有什么事情是就偏偏C 能做, C++就不行?
请指教,多谢!

g
guvest

你的问题可以改为:
什么事偏偏是别的语言可以做,C不能做的。

【 在 xy18 (家琪) 的大作中提到: 】
: 诸位大侠,我必须请教一下,
: 我就不懂啊,C语言为啥用得越来越多了哪?
: 我刚看到这个,
: https://www.tiobe.com/tiobe-index/
: 要是C/C++合在一起,我还可以理解,
: 毕竟近几年C++改进了很多,好用了很多,于是大家就越来越爱用了吗,
: 但是C是单列出来的,
: 难道现在大家都去写单片机驱动啦?还是怎么回事?
: 有什么事情是就偏偏C 能做, C++就不行?
: 请指教,多谢!

e
edmca

过去三十年创造的电脑软件归根结底都是基于
上世纪七八十年代的用C语言写的系统软件。
i
iDemocracy

汽车驾驶。

【 在 xy18 (家琪) 的大作中提到: 】
: 诸位大侠,我必须请教一下,
: 我就不懂啊,C语言为啥用得越来越多了哪?
: 我刚看到这个,
: https://www.tiobe.com/tiobe-index/
: 要是C/C++合在一起,我还可以理解,
: 毕竟近几年C++改进了很多,好用了很多,于是大家就越来越爱用了吗,
: 但是C是单列出来的,
: 难道现在大家都去写单片机驱动啦?还是怎么回事?
: 有什么事情是就偏偏C 能做, C++就不行?
: 请指教,多谢!

s
somehow

我靠,终于看到java going down,大快人心!

【 在 xy18 (家琪) 的大作中提到: 】
: 诸位大侠,我必须请教一下,
: 我就不懂啊,C语言为啥用得越来越多了哪?
: 我刚看到这个,
: https://www.tiobe.com/tiobe-index/
: 要是C/C++合在一起,我还可以理解,
: 毕竟近几年C++改进了很多,好用了很多,于是大家就越来越爱用了吗,
: 但是C是单列出来的,
: 难道现在大家都去写单片机驱动啦?还是怎么回事?
: 有什么事情是就偏偏C 能做, C++就不行?
: 请指教,多谢!

x
xy18

我理解的C就是那种裸C,STL都属于C++吧,
理论上C确实啥都能做,但是太不方便,
照这么说,汇编也啥都能做,

我就是不理解,为啥这么raw个语言,不但没有fade out,
反而在过去的一年里有更多的人用,
用C的场合,为啥不用C++?
嗯,

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 你的问题可以改为:
: 什么事偏偏是别的语言可以做,C不能做的。

x
xy18

那过去两三年里,新增的C用户都是干嘛的?
重写七八十年代的软件?
那既然重写,为啥不用C++?

【 在 edmca (革命象暴风雨) 的大作中提到: 】
: 过去三十年创造的电脑软件归根结底都是基于
: 上世纪七八十年代的用C语言写的系统软件。

x
xy18

我看了一下C在2017年8月到低点6.5%,
然后在过去两年迅速重新崛起,到现在17.4%,
过去这三年多的时间,新用户都是汽车驾驶?好像有点儿多,
为啥汽车驾驶不用C++?

【 在 iDemocracy (DEMO) 的大作中提到: 】
: 汽车驾驶。

i
iDemocracy

人才市场可能领先消费市场。电动车、无人驾驶、无人机送货、机器人、deep
learning等处于研发热潮,股市已经反应了这点,至于用户爆发是接下来的事情。

【 在 xy18 (家琪) 的大作中提到: 】
: 我看了一下C在2017年8月到低点6.5%,
: 然后在过去两年迅速重新崛起,到现在17.4%,
: 过去这三年多的时间,新用户都是汽车驾驶?好像有点儿多,
: 为啥汽车驾驶不用C++?
n
netghost

1. C這個坑只要你入了,看別的語言都不會爽(除了匯編)。所以這個坑里的人非常穩定。
2. 這幾年出了一堆新的語言,成天搞出一堆特性,最後人發現其實都不好用,所以回
歸了
3. embeded business,IOT,MCU裏面基本上只能用C。

C++已經搞成了100個人寫出來100個樣子的程序的語言,所以每個人會的都是一種
dialect,理論上什麼都可以做,其實什麼都不好做。

【 在 xy18 (家琪) 的大作中提到: 】
: 诸位大侠,我必须请教一下,
: 我就不懂啊,C语言为啥用得越来越多了哪?
: 我刚看到这个,
: https://www.tiobe.com/tiobe-index/
: 要是C/C++合在一起,我还可以理解,
: 毕竟近几年C++改进了很多,好用了很多,于是大家就越来越爱用了吗,
: 但是C是单列出来的,
: 难道现在大家都去写单片机驱动啦?还是怎么回事?
: 有什么事情是就偏偏C 能做, C++就不行?
: 请指教,多谢!
: ...................

n
netghost

匯編沒法portable。有一層抽象去屏蔽硬件特性是必要的,問題是再加一層有多大
point就不好說了。

目前現在位置,portability沒有能超過純C的。我可以非常容易寫一段C code,10年之後一個字不改所有主流編譯器都能通過,同時性能在各種實現裏面還是10%。別的什麼
語言可以做到這一點?Python沒戲,Java也沒戲。
【 在 xy18 (家琪) 的大作中提到: 】
: 我理解的C就是那种裸C,STL都属于C++吧,
: 理论上C确实啥都能做,但是太不方便,
: 照这么说,汇编也啥都能做,
: 我就是不理解,为啥这么raw个语言,不但没有fade out,
: 反而在过去的一年里有更多的人用,
: 用C的场合,为啥不用C++?
: 嗯,

x
xy18

多谢您老的回答,基本解决了我的疑问,
我的经验里,C++在所谓每个人都有自己的dialect这个问题上应该还算好,

我上一份工作是用scala,跑起来巨慢不说,
一到code review就成了茴字四种写法还是8种写法的争论,
把code发给两个不同的人review,得到的回复完全不同,
大家都痛苦不堪,
反正我将来是再不用scala,写程序费力气写得慢,
程序跑起来更慢,几乎一无是处的语言,
为了偶尔的一点点所谓elegancy 实在不值得,

【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: 1. C這個坑只要你入了,看別的語言都不會爽(除了匯編)。所以這個坑里的人非常穩
: 定。
: 2. 這幾年出了一堆新的語言,成天搞出一堆特性,最後人發現其實都不好用,所以回
: 歸了
: 3. embeded business,IOT,MCU裏面基本上只能用C。
: C++已經搞成了100個人寫出來100個樣子的程序的語言,所以每個人會的都是一種
: dialect,理論上什麼都可以做,其實什麼都不好做。

x
xy18

机器人,电动车等等和硬件比较近的用C还算合理,
deep learning也用C? 这个是第一次听说,
现在AI那套东西不是都用C++做底层,然后pythong做个接口?

【 在 iDemocracy (DEMO) 的大作中提到: 】
: 人才市场可能领先消费市场。电动车、无人驾驶、无人机送货、机器人、deep
: learning等处于研发热潮,股市已经反应了这点,至于用户爆发是接下来的事情。

s
sanwadie

嗯,我最近也用回c了。xxx k内存,用别的上个web server就爆了。刚开始还是很不适应。

【 在 xy18 (家琪) 的大作中提到: 】
: 诸位大侠,我必须请教一下,
: 我就不懂啊,C语言为啥用得越来越多了哪?
: 我刚看到这个,
: https://www.tiobe.com/tiobe-index/
: 要是C/C++合在一起,我还可以理解,
: 毕竟近几年C++改进了很多,好用了很多,于是大家就越来越爱用了吗,
: 但是C是单列出来的,
: 难道现在大家都去写单片机驱动啦?还是怎么回事?
: 有什么事情是就偏偏C 能做, C++就不行?
: 请指教,多谢!

s
sanwadie

好像都是这样

【 在 xy18 (家琪) 的大作中提到: 】
: 机器人,电动车等等和硬件比较近的用C还算合理,
: deep learning也用C? 这个是第一次听说,
: 现在AI那套东西不是都用C++做底层,然后pythong做个接口?

o
omgpop

Linux kernel还都是c啊,这个不变,c就永远时髦。

s
sanwadie

不敢同意。目标不一样

python/java,跨平台,只要解释器或vm版本匹配,运行肯定没问题,换言之只要能够
安装某个版本的vm,所有基于该版本的软件都能运行。

编译型的软件必须每个,在不同平台上都重新编译一下,所有平台编译代价太高。另外,c 维护 portability 开发开销很高,而且一般只针对已知系统。新系统来了,很难
保证。

但是这些都是在变化的,比如有了vm和container技术,可以直接运行指定的os和版本
,从另一个维度解决了portability。

考虑到c和go软件的性能和开销,java和python优势可移植性优势就小了

【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: 匯編沒法portable。有一層抽象去屏蔽硬件特性是必要的,問題是再加一層有多大
: point就不好說了。
: 目前現在位置,portability沒有能超過純C的。我可以非常容易寫一段C code,10年之
: 後一個字不改所有主流編譯器都能通過,同時性能在各種實現裏面還是10%。別的什麼
: 語言可以做到這一點?Python沒戲,Java也沒戲。

s
sanwadie

我记得dos时代,为了性能和载入尺寸,经常干c 加 inline assembly。现在属于坏典型

【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: 匯編沒法portable。有一層抽象去屏蔽硬件特性是必要的,問題是再加一層有多大
: point就不好說了。
: 目前現在位置,portability沒有能超過純C的。我可以非常容易寫一段C code,10年之
: 後一個字不改所有主流編譯器都能通過,同時性能在各種實現裏面還是10%。別的什麼
: 語言可以做到這一點?Python沒戲,Java也沒戲。

i
iDemocracy

你说的是training吧?训练完的model不还得跑在机器上么?那些time-critical的业务不还得上C么?游戏服务器大量使用C+lua,一台好点的服务器能跑10万人在线。

【 在 xy18 (家琪) 的大作中提到: 】
: 机器人,电动车等等和硬件比较近的用C还算合理,
: deep learning也用C? 这个是第一次听说,
: 现在AI那套东西不是都用C++做底层,然后pythong做个接口?
c
cckyle2001

我会inline assembly....
也会 MIPS assembly
【 在 sanwadie (三娃爹) 的大作中提到: 】
: 我记得dos时代,为了性能和载入尺寸,经常干c 加 inline assembly。现在属于坏
典型

s
sanwadie

抱歉,很多年没由玩 c 了,不知道现在还有人这么干 :-)

【 在 cckyle2001 (谦虚的狼) 的大作中提到: 】
: 我会inline assembly....
: 也会 MIPS assembly
: 典型

c
cckyle2001

我以前是做embedded processor, simulation 和IDE开发
【 在 sanwadie (三娃爹) 的大作中提到: 】
: 抱歉,很多年没由玩 c 了,不知道现在还有人这么干 :-)

s
sanwadie

做这个需要扎实的技术功底,ppt失效的地方 :)

【 在 cckyle2001 (谦虚的狼) 的大作中提到: 】
: 我以前是做embedded processor, simulation 和IDE开发

c
cckyle2001

不好的工作.
很难,工资又较低
【 在 sanwadie (三娃爹) 的大作中提到: 】
: 做这个需要扎实的技术功底,ppt失效的地方 :)

d
daemonself

因为cuda, 你写gpu code, C还是最方便得。java还得降,java开发周期太jb长了,cto,cio们都等不及了。很快就被python扫地出门了
【 在 xy18 (家琪) 的大作中提到: 】
: 诸位大侠,我必须请教一下,
: 我就不懂啊,C语言为啥用得越来越多了哪?
: 我刚看到这个,
: https://www.tiobe.com/tiobe-index/
: 要是C/C++合在一起,我还可以理解,
: 毕竟近几年C++改进了很多,好用了很多,于是大家就越来越爱用了吗,
: 但是C是单列出来的,
: 难道现在大家都去写单片机驱动啦?还是怎么回事?
: 有什么事情是就偏偏C 能做, C++就不行?
: 请指教,多谢!

h
helpme

C的主要增长应该还是来自IoT和深学GPU之类的吧。而且国内大互联网公司像百度腾讯
啥的,他们的底层libs都是把C code存为.cc file,是假C++,只有美国大公司Google/Facebook/Microsoft在认认真真地写C++。

【 在 xy18 (家琪) 的大作中提到: 】
: 诸位大侠,我必须请教一下,
: 我就不懂啊,C语言为啥用得越来越多了哪?
: 我刚看到这个,
: https://www.tiobe.com/tiobe-index/
: 要是C/C++合在一起,我还可以理解,
: 毕竟近几年C++改进了很多,好用了很多,于是大家就越来越爱用了吗,
: 但是C是单列出来的,
: 难道现在大家都去写单片机驱动啦?还是怎么回事?
: 有什么事情是就偏偏C 能做, C++就不行?
: 请指教,多谢!

n
netghost


這麼說吧,我沒有在真實項目裏面看到過如果是能用C,會用C的人維護,移植比別的所謂high
levellanguage開銷大的。

當然,不是說別的語言沒用,第一你不是總能找個合適的開發人員,而且99%的時候你
找不到。第二,有些環境你必須要用別人給的環境,比如你開發IoS app,你只能用
swift或者
Object C. 搞windows你也只能用WTL,MFC,.NET這些東西。

【 在 sanwadie (三娃爹) 的大作中提到: 】
: 不敢同意。目标不一样
: python/java,跨平台,只要解释器或vm版本匹配,运行肯定没问题,换言之只要能够
: 安装某个版本的vm,所有基于该版本的软件都能运行。
: 编译型的软件必须每个,在不同平台上都重新编译一下,所有平台编译代价太高。另外
: ,c 维护 portability 开发开销很高,而且一般只针对已知系统。新系统来了,很难
: 保证。
: 但是这些都是在变化的,比如有了vm和container技术,可以直接运行指定的os和版本
: ,从另一个维度解决了portability。
: 考虑到c和go软件的性能和开销,java和python优势可移植性优势就小了

n
netghost

那些DOS程序的健壯性和性能,還有兼容性,不是今天這些全堆搞出來的東西能比的。

Turbo C的source code拿到今天機器上面編譯也沒任何問題。
【 在 sanwadie (三娃爹) 的大作中提到: 】
: 我记得dos时代,为了性能和载入尺寸,经常干c 加 inline assembly。现在属于坏
典型

r
ratzinger

那以后IoT的芯片硬件便宜下来,内存大大增加,c不是又要失宠?
h
helpme

经常和hardware打交道的,还是用C比较好。

【 在 ratzinger (周星星) 的大作中提到: 】
: 那以后IoT的芯片硬件便宜下来,内存大大增加,c不是又要失宠?

i
iambright

你要明白driver之类的东西是不会运行于vm里面的。。。这不是内存大小的问题

【 在 ratzinger (周星星) 的大作中提到: 】
: 那以后IoT的芯片硬件便宜下来,内存大大增加,c不是又要失宠?
s
sanwadie

你已经指出问题,培养一个合格的c开发者,成本远高过java和python。所以如果不是
迫不得已,我不会用c。

【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: 這麼說吧,我沒有在真實項目裏面看到過如果是能用C,會用C的人維護,移植比別的所
: 謂high
: levellanguage開銷大的。
: 當然,不是說別的語言沒用,第一你不是總能找個合適的開發人員,而且99%的時候你
: 找不到。第二,有些環境你必須要用別人給的環境,比如你開發IoS app,你只能用
: swift或者
: Object C. 搞windows你也只能用WTL,MFC,.NET這些東西。

s
sanwadie

我最近做些嵌入开发,发现在特定领域,轮子完备,其实 c 的代码量和其他语言差得
不多。不知大家有同感吗

【 在 ratzinger (周星星) 的大作中提到: 】
: 那以后IoT的芯片硬件便宜下来,内存大大增加,c不是又要失宠?

x
xy18

我原来还一直抱怨,cuda咋不推出个C++ style的api,
人家opencl就有C++版的,

【 在 daemonself (新晋川粉,前mit行为艺术专业博士后导师) 的大作中提到: 】
: 因为cuda, 你写gpu code, C还是最方便得。java还得降,java开发周期太jb长了,
cto
: ,cio们都等不及了。很快就被python扫地出门了

x
xy18

认认真真写C++到底是好事还是不好,
我原来一直认为C++优于C,
现在有点儿糊涂,

【 在 helpme (名虚胖字满肥) 的大作中提到: 】
: C的主要增长应该还是来自IoT和深学GPU之类的吧。而且国内大互联网公司像百度腾讯
: 啥的,他们的底层libs都是把C code写在.cc files的假C++,只有美国大公司Google/
: Facebook/Microsoft之类的,认认真真地写C++。

h
helpme

需要high performance的business software和middleware之类的,用C++比较好,这方面C总是要重造不少轮子。C++的问题是,一个大codebase里面只能设一种standard,只能用一种coding style,千万不能混在一起,更不能让半懂不懂的人去玩那些所谓高级的东东。

【 在 xy18 (家琪) 的大作中提到: 】
: 认认真真写C++到底是好事还是不好,
: 我原来一直认为C++优于C,
: 现在有点儿糊涂,

n
netghost

看誰寫。自己寫就是C,自己組長期團隊也是C,合作者就看情況了。

也可以用C++,GO這些,有時候把東西寫得太好用是給自己找事。蛋這個顯然不是技術
層面的考量。

【 在 sanwadie (三娃爹) 的大作中提到: 】
: 你已经指出问题,培养一个合格的c开发者,成本远高过java和python。所以如果不是
: 迫不得已,我不会用c。

n
netghost

首先程序開發的速度,一定不是打字的速度,這個事情大家應該都知道。

第二,C語言熟手自己都有一堆自己的library,這東西literally等於自己有一套自己
定製的庫,這種人別的高級語言所謂那點可憐的輪子,沒發比的。

【 在 sanwadie (三娃爹) 的大作中提到: 】
: 我最近做些嵌入开发,发现在特定领域,轮子完备,其实 c 的代码量和其他语言差得
: 不多。不知大家有同感吗

o
omgpop

你拿了别人的轮子出了问题也要知道在哪里找,不会写c的人碰上问题就立刻抓瞎

【 在 sanwadie (三娃爹) 的大作中提到: 】
: 我最近做些嵌入开发,发现在特定领域,轮子完备,其实 c 的代码量和其他语言差得
: 不多。不知大家有同感吗

t
tomwho

我这的firmware都是c++,也混用一点c,啥场合得只能用c而不能用c++?

q
qknight

说的好,我用python的,十年改动不要太多,最近一直在做迁移
【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: 匯編沒法portable。有一層抽象去屏蔽硬件特性是必要的,問題是再加一層有多大
: point就不好說了。
: 目前現在位置,portability沒有能超過純C的。我可以非常容易寫一段C code,10年之
: 後一個字不改所有主流編譯器都能通過,同時性能在各種實現裏面還是10%。別的什麼
: 語言可以做到這一點?Python沒戲,Java也沒戲。

c
chebyshev

还有一条就是没有合适的类库,只能用别的语言。
例如多维数组的处理,除了matlab,python。其实很少有别的选择。
【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: 這麼說吧,我沒有在真實項目裏面看到過如果是能用C,會用C的人維護,移植比別的所
: 謂high
: levellanguage開銷大的。
: 當然,不是說別的語言沒用,第一你不是總能找個合適的開發人員,而且99%的時候你
: 找不到。第二,有些環境你必須要用別人給的環境,比如你開發IoS app,你只能用
: swift或者
: Object C. 搞windows你也只能用WTL,MFC,.NET這些東西。

b
bihai

我以前公司就是用C++但是有些人水平不行,写的读写文件的类还不如Python快。

【 在 helpme (名虚胖字满肥) 的大作中提到: 】
: 需要high performance的business software和middleware之类的,用C++比较好,这方
: 面C总是要重造不少轮子。C++的问题是,一个大codebase里面只能设一种standard,只
: 能用一种coding style,千万不能混在一起,更不能让半懂不懂的人去玩那些所谓高级
: 的东东。

s
sanwadie

python是特例,语言特性变化太多,2 到 3 变化很大。另外python 3想切入企业级开
发,还缺很多关键特性。比如: 缺乏immutable的数据结构,抽象类支持太怪异,
python的coro用起来总感觉不顺,ide支持太弱,编译前检查几乎没有 。估计以后还会有变化。

这方面java做得好。

【 在 qknight (小Q) 的大作中提到: 】
: 说的好,我用python的,十年改动不要太多,最近一直在做迁移

w
wdong

我也不懂。C++最近发展很好。昨天看pytorch都在推纯C++接口了。

【 在 xy18 (家琪) 的大作中提到: 】
: 诸位大侠,我必须请教一下,
: 我就不懂啊,C语言为啥用得越来越多了哪?
: 我刚看到这个,
: https://www.tiobe.com/tiobe-index/
: 要是C/C++合在一起,我还可以理解,
: 毕竟近几年C++改进了很多,好用了很多,于是大家就越来越爱用了吗,
: 但是C是单列出来的,
: 难道现在大家都去写单片机驱动啦?还是怎么回事?
: 有什么事情是就偏偏C 能做, C++就不行?
: 请指教,多谢!
: ...................

n
netghost

python這種語言設計上面本身並沒有什麼優勢,好處在兩點:
1.生態環境:只要你捨得用別人的輪子,你就很快速開發。
2.python core語言在2.0之前算穩定的。

問題就在於,你用了別人的輪子,你就沒資格不要別人動。所以

“一般人認爲好用的python"==“python core + whatrever dependent package”== "很多不同的python“

維護效率自然也就那麼回事了。
【 在 qknight (小Q) 的大作中提到: 】
: 说的好,我用python的,十年改动不要太多,最近一直在做迁移

n
netghost

python在作死強推3之前,core和別的語言比算是相當穩定的。

java就更扯了,這東西從96年開始就是從語言定位,特性,性能沒有一個是穩定的。

當然,有人上了賊船下不來也是真的尤其是:
1. 第一門語言就是有GC的人,用熟之後幾乎沒法換們了。
2. 語言句法不make sense的。

1的例子是Java和Python,2的是Python。

【 在 sanwadie (三娃爹) 的大作中提到: 】
: python是特例,语言特性变化太多,2 到 3 变化很大。另外python 3想切入企业级开
: 发,还缺很多关键特性。比如: 缺乏immutable的数据结构,抽象类支持太怪异,
: python的coro用起来总感觉不顺,ide支持太弱,编译前检查几乎没有 。估计以后还会
: 有变化。
: 这方面java做得好。

N
NGale

Kotlin会不会崛起?
l
lilylich

在您看来Scala作为工作语言有没有什么好的地方?
我对这个语言很感兴趣,看过一两本书,想多了解一些

【 在 xy18 (家琪) 的大作中提到: 】
: 多谢您老的回答,基本解决了我的疑问,
: 我的经验里,C++在所谓每个人都有自己的dialect这个问题上应该还算好,
: 我上一份工作是用scala,跑起来巨慢不说,
: 一到code review就成了茴字四种写法还是8种写法的争论,
: 把code发给两个不同的人review,得到的回复完全不同,
: 大家都痛苦不堪,
: 反正我将来是再不用scala,写程序费力气写得慢,
: 程序跑起来更慢,几乎一无是处的语言,
: 为了偶尔的一点点所谓elegancy 实在不值得,

h
helpme

扯蛋的语言,最好别碰。

【 在 lilylich (lilylich) 的大作中提到: 】
: 在您看来Scala作为工作语言有没有什么好的地方?
: 我对这个语言很感兴趣,看过一两本书,想多了解一些

m
md

Java 最大的优点是有stacktrace, threadDump和 log4j还有source code 能被Jad 出
来。
出问题的时候能有头绪去解决。

C和C++最操蛋的地方就是没有这些,基本上是unsupportable如果没有源代码。
出了问题就只能瞎MUCK,瞎猜,只能依靠原厂商提供靠谱的支持,这年头实在是hard
to come by.
x
xy18

scala是一种优美的语言,
当然,要先培养相应的审美情趣才能品味出其优美,
我基本算是培养出了那种审美情趣,但是对相关技术并不熟练,
所以写scala代码的时候经常要费很多时间反复修改才能写出符合那种审美的代码,

但是作为一个曾经写过assembly的程序员,
我理解,那种审美的代码执行会非常低效,
除了满足程序员的特殊情趣,没啥实际用处,
最终用户除了感觉程序慢之外,感受不到任何其他收益,

并且那种特殊审美并不代表程序员的水平就高明,
我原来组的几个老手,他们的设计往往连SOLID都不满足好几条,
但是他们确实可以写很优美的scala代码,这个我必须服气,

目前我最喜欢的语言是C++,虽然写得还不好,但是一直还算认真,
C++运行稳定高效,几乎不比C慢吧?不像Java,有时候就不那么靠谱,
另一方面C++正变得越来越好,还有很多的库支持,
并且不需要啥特殊审美,我写的C++ 框架业务逻辑连business analyst都能大致看下来,

【 在 lilylich (lilylich) 的大作中提到: 】
: 在您看来Scala作为工作语言有没有什么好的地方?
: 我对这个语言很感兴趣,看过一两本书,想多了解一些

x
xy18

要是不用source code就都能玩转程序,那我们吃啥?
要是能把我的source code都反编译出来,那和把我脱光了扔街上差别也不大了,

【 在 md (奥神姆老军医) 的大作中提到: 】
: Java 最大的优点是有stacktrace, threadDump和 log4j还有source code 能被Jad 出
: 来。
: 出问题的时候能有头绪去解决。
: C和C++最操蛋的地方就是没有这些,基本上是unsupportable如果没有源代码。
: 出了问题就只能瞎MUCK,瞎猜,只能依靠原厂商提供靠谱的支持,这年头实在是hard
: to come by.

s
sanwadie

这算忆苦思甜贴。我又想起个苦逼的事情,查看 apache httpd 和 linux kernel 的原代码,解决一些性能问题或者 ftp 在某个 xxxCom 1GB 网卡下的问题,简直是大海里
捞针。那时就需要一个工具 lxr,不知现在还流行不

【 在 xy18 (家琪) 的大作中提到: 】
: 要是不用source code就都能玩转程序,那我们吃啥?
: 要是能把我的source code都反编译出来,那和把我脱光了扔街上差别也不大了,

n
netghost

C/C++沒法stacktrac還是頭一次聽說。

Java沒源代碼你又能幹啥?
【 在 md (奥神姆老军医) 的大作中提到: 】
: Java 最大的优点是有stacktrace, threadDump和 log4j还有source code 能被Jad 出
: 来。
: 出问题的时候能有头绪去解决。
: C和C++最操蛋的地方就是没有这些,基本上是unsupportable如果没有源代码。
: 出了问题就只能瞎MUCK,瞎猜,只能依靠原厂商提供靠谱的支持,这年头实在是hard
: to come by.

n
netghost

scala這種語言是把主義放到了理性之上,一般來說有多強調主義你就得有多少的水平
去補償。

搞scala的人有Dennis Richtie水平高?顯然差了幾十條街。但是他要幹的事情對人的
要求卻更高,所以難用是必然的。
【 在 xy18 (家琪) 的大作中提到: 】
: 多谢您老的回答,基本解决了我的疑问,
: 我的经验里,C++在所谓每个人都有自己的dialect这个问题上应该还算好,
: 我上一份工作是用scala,跑起来巨慢不说,
: 一到code review就成了茴字四种写法还是8种写法的争论,
: 把code发给两个不同的人review,得到的回复完全不同,
: 大家都痛苦不堪,
: 反正我将来是再不用scala,写程序费力气写得慢,
: 程序跑起来更慢,几乎一无是处的语言,
: 为了偶尔的一点点所谓elegancy 实在不值得,

n
netghost

那個優美其實是假的,本質上是這種人不願意或者是沒有能力去deal with系統的複雜
性的同時還能保持優美。

【 在 xy18 (家琪) 的大作中提到: 】
: scala是一种优美的语言,
: 当然,要先培养相应的审美情趣才能品味出其优美,
: 我基本算是培养出了那种审美情趣,但是对相关技术并不熟练,
: 所以写scala代码的时候经常要费很多时间反复修改才能写出符合那种审美的代码,
: 但是作为一个曾经写过assembly的程序员,
: 我理解,那种审美的代码执行会非常低效,
: 除了满足程序员的特殊情趣,没啥实际用处,
: 最终用户除了感觉程序慢之外,感受不到任何其他收益,
: 并且那种特殊审美并不代表程序员的水平就高明,
: 我原来组的几个老手,他们的设计往往连SOLID都不满足好几条,
: ...................

g
guvest

从portable的角度来讲,唯一真理就是C89。
汇编是没有portable可言的。因为指令集以及汇编程序的启动方式有太多种。

【 在 netghost(Up to Isomorphism) 的大作中提到: 】

: 匯編沒法portable。有一層抽象去屏蔽硬件特性是必要的,問題是再加一層有多大

: point就不好說了。

: 目前現在位置,portability沒有能超過純C的。我可以非常容易寫一段C code,10年之

: 後一個字不改所有主流編譯器都能通過,同時性能在各種實現裏面還是10%。別
的什麼

: 語言可以做到這一點?Python沒戲,Java也沒戲。

g
guvest

发展快可能导致portablility下降。
C99动态数组很少人用。linus大骂这个所谓的feature 。要
不然社区分列,然后今天C可能就不会这么流行了。

【 在 wdong(万事休) 的大作中提到: 】

: 我也不懂。C 最近发展很好。昨天看pytorch都在推纯C 接口了。

n
netghost

其實C99動態數組比起別的語言的坑爹特性也不是什麼大問題。不過也沒什麼人用。
【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 发展快可能导致portablility下降。
: C99动态数组很少人用。linus大骂这个所谓的feature 。要
: 不然社区分列,然后今天C可能就不会这么流行了。
:
: 我也不懂。C 最近发展很好。昨天看pytorch都在推纯C 接口了。
:

g
guvest

问题是不大。但是会造成版本分裂。其他的问题,例如for 里面能不能写int i ,要不
要单独写函数 signature在前面什么的,
那些很容易改或者ide搞定。

【 在 netghost(Up to Isomorphism) 的大作中提到: 】

: 其實C99動態數組比起別的語言的坑爹特性也不是什麼大問題。不過也沒什麼人
用。

n
netghost

我覺得int i這種東西最噁心,其實基本上沒用,編程序的人沒幾個打字是瓶頸的。
但是C99裏面的int i,現在到處都是。

不過我說實話,有一些extension其實是有用的,gcc的很多attributes可以讓人基本上躲掉絕大部分C語言的坑。完全沒有爲了所謂的高級特性去學一門另外的語言。
【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 问题是不大。但是会造成版本分裂。其他的问题,例如for 里面能不能写int i ,要不
: 要单独写函数 signature在前面什么的,
: 那些很容易改或者ide搞定。
:
: 其實C99動態數組比起別的語言的坑爹特性也不是什麼大問題。不過也沒什麼人
: 用。
:

g
guvest

最大的区别其实是有没有GC.有GC开发速度快。

Stackoverflow的founder以前有个blog,也有相同的看法。他说java, Visual Basic
的革命性的地
方是GC。大概也是同时发生的。他那时候在MSFT负责VBA。

当初cpp出来的时候讲OO能提高开发效率。但那并未发生。真正管用的是GC。有GC的话
程序结构和设计和一很不一样。例如你不用担心函数compose飞指针。
【 在 netghost(Up to Isomorphism) 的大作中提到: 】
<br>: 我覺得int i這種東西最噁心,其實基本上沒用,編程序的人沒幾個打字
是瓶頸
的。
<br>: 但是C99裏面的int i,現在到處都是。
<br>: 不過我說實話,有一些extension其實是有用的,gcc的很多attributes可以讓人
基本上
<br>: 躲掉絕大部分C語言的坑。完全沒有爲了所謂的高級特性去學一門另外的
語言。
<br>

n
netghost

應該是這麼說,需要GC才能寫出一定規模的程序和不需要GC的是兩種程序員。

對前面一種人來說沒有選擇,後面一種人GC沒什麼用。本質上GC是一個高檔的語法糖,但是開發速度的瓶頸不是打字。

【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 最大的区别其实是有没有GC.有GC开发速度快。
: Stackoverflow的founder以前有个blog,也有相同的看法。他说java, Visual Basic
: 的革命性的地
: 方是GC。大概也是同时发生的。他那时候在MSFT负责VBA。
: 当初cpp出来的时候讲OO能提高开发效率。但那并未发生。真正管用的是GC。有GC的话
: 程序结构和设计和一很不一样。例如你不用担心函数compose飞指针。
: <br>: 我覺得int i這種東西最噁心,其實基本上沒用,編程序的人沒幾個打字
: 是瓶頸
: 的。
: <br>: 但是C99裏面的int i,現在到處都是。
: ...................

c
chebyshev

以前历史上出现过所谓的软件危机的。
人不是机器,行数多则bug多,这对任何人都一样的。
例如C比python多好几倍的行数。所以python还会流行很多年的。
不少场合python是最佳的。
【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: 應該是這麼說,需要GC才能寫出一定規模的程序和不需要GC的是兩種程序員。
: 對前面一種人來說沒有選擇,後面一種人GC沒什麼用。本質上GC是一個高檔的語法糖,
: 但是開發速度的瓶頸不是打字。

n
netghost


【 在 chebyshev (......) 的大作中提到: 】
: 以前历史上出现过所谓的软件危机的。
: 人不是机器,行数多则bug多,这对任何人都一样的。
: 例如C比python多好几倍的行数。所以python还会流行很多年的。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
這裏面邏輯有一堆問題。當然賣東西的時候這種看起來"一目瞭然"其實純扯蛋的說法的確管用,不過技術討論還是省了吧。
別的不說,[email protected][email protected]去比[email protected][email protected]沒有任何意義。
: 不少场合python是最佳的。

c
chebyshev

写程序这个实践。一方面取决于设计,用的工具等等。另一方面取决于
体力和注意力。这些不同的因素虽然不能完全单独分开。但是体力和注意力也是不可忽视的。
而且其实人与人之间,体力和注意力的差别很大的。
大致来说,我怀疑相对来说身强体壮的才能写比较大的无gc程序。
【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: 這裏面邏輯有一堆問題。當然賣東西的時候這種看起來"一目瞭然"其實純扯蛋的說法的
: 確管用,不過技術討論還是省了吧。
: 別的不說,[email protected][email protected]去比[email protected][email protected]沒有任何意義。

l
lilylich

sounds like an acquired taste
【 在 xy18 (家琪) 的大作中提到: 】
: scala是一种优美的语言,
: 当然,要先培养相应的审美情趣才能品味出其优美,
: 我基本算是培养出了那种审美情趣,但是对相关技术并不熟练,
: 所以写scala代码的时候经常要费很多时间反复修改才能写出符合那种审美的代码,
: 但是作为一个曾经写过assembly的程序员,
: 我理解,那种审美的代码执行会非常低效,
: 除了满足程序员的特殊情趣,没啥实际用处,
: 最终用户除了感觉程序慢之外,感受不到任何其他收益,
: 并且那种特殊审美并不代表程序员的水平就高明,
: 我原来组的几个老手,他们的设计往往连SOLID都不满足好几条,
: ...................

a
anw

久走夜路必遇鬼

如果一个工具/技术不能被多数人适应,就是再好,
最多也就是放神坛上供起来。其他人接着用群众们
喜闻乐见的。

【 在 chebyshev (......) 的大作中提到: 】
: 写程序这个实践。一方面取决于设计,用的工具等等。另一方面取决于
: 体力和注意力。这些不同的因素虽然不能完全单独分开。但是体力和注意力也是不可忽
: 视的。
: 而且其实人与人之间,体力和注意力的差别很大的。
: 大致来说,我怀疑相对来说身强体壮的才能写比较大的无gc程序。

n
netghost

gc程序能cover的情況,不用GC基本上是一個可以train的skill。
不能cover的情況,GC是負value。

這就好比很多年前大家都開手動車,沒人覺得有問題,有了自動車之後很多人就覺得難了。

此外,C可以用GC,也可以RAAI,可以邊界檢查。沒有任何人擋着你。

【 在 chebyshev (......) 的大作中提到: 】
: 写程序这个实践。一方面取决于设计,用的工具等等。另一方面取决于
: 体力和注意力。这些不同的因素虽然不能完全单独分开。但是体力和注意力也是不可忽
: 视的。
: 而且其实人与人之间,体力和注意力的差别很大的。
: 大致来说,我怀疑相对来说身强体壮的才能写比较大的无gc程序。

i
iDemocracy

我觉得,研究语言的功夫不如多研究业务。有了热门业务,用三种语言写三遍又有何妨?
s
sanwadie

学习了。好久没用c,要补很多

【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: gc程序能cover的情況,不用GC基本上是一個可以train的skill。
: 不能cover的情況,GC是負value。
: 這就好比很多年前大家都開手動車,沒人覺得有問題,有了自動車之後很多人就覺得難
: 了。
: 此外,C可以用GC,也可以RAAI,可以邊界檢查。沒有任何人擋着你。

i
iDemocracy

顺便补充一个只用C/C++而不用Java更不用Python的业务,就是trading (stock,
option, futures, etc.)。其对速度的要求比竞赛类网游更高,特别是buy side软件,核心只用C/C++。这跟quantitative analysis不一样,trading行业用C/C++写的代码不是为了分析数据,而是已经有了策略之后的执行部分。这类软件为了提高执行速度一般是不用图形界面的,都是命令行操作。那些GUI做的很fancy的炒股软件,凡是界面比性能更好的,都是给外行散户用的。

只用命令行不用GUI的另一个好处,就是避免了雇佣杂七杂八的底层程序员,一个算法
科学家可以完全掌握交易算法的所有秘密,往往不会通过员工的离职泄露机密。
p
plebian

算法科学家能写高质量的c/c++? 他们不用code review?不用gui的好处是性能。交易系统恨不得减少一个cpu cycles

【 在 iDemocracy (DEMO) 的大作中提到: 】
: 顺便补充一个只用C/C++而不用Java更不用Python的业务,就是trading (stock,
: option, futures, etc.)。其对速度的要求比竞赛类网游更高,特别是buy side软件,
: 核心只用C/C++。这跟quantitative analysis不一样,trading行业用C/C++写的代码不
: 是为了分析数据,而是已经有了策略之后的执行部分。这类软件为了提高执行速度一般
: 是不用图形界面的,都是命令行操作。那些GUI做的很fancy的炒股软件,凡是界面比性
: 能更好的,都是给外行散户用的。
: 只用命令行不用GUI的另一个好处,就是避免了雇佣杂七杂八的底层程序员,一个算法
: 科学家可以完全掌握交易算法的所有秘密,往往不会通过员工的离职泄露机密。

g
guvest

fftw是数学家写的。你觉得质量不高,那给写个大家用
下。

【 在 plebian(达文西) 的大作中提到: 】
<br>: 算法科学家能写高质量的c/c ? 他们不用code review?不用gui的好处是性能
。交易
<br>: 系统恨不得减少一个cpu cycles
<br>

b
blueconifer


C gaining popularity 是因为 c 与 python 能搭配得好
i
iDemocracy

把数学分析翻译成算法,一般是数学专业做的事,普通程序员没有被培训来理解数学系统。换句话说,数学的门槛比编程要高不少,搞数学的给程序员解释数学函数就相当于上课而不是开会了,还不如自己来。另外trading的核心代码很少,一般不超过万八千
行,最少的百八十行,只要智商够,代码验证和优化不难处理。

【 在 plebian (达文西) 的大作中提到: 】
: 算法科学家能写高质量的c/c++? 他们不用code review?不用gui的好处是性能。交易
: 系统恨不得减少一个cpu cycles