c*******v 发帖数: 2599 | 1 拿出来原来国内带来的k and r的书翻翻。这本书
和公司new grad的新人的年龄差不多。太有意思了。 |
w***g 发帖数: 5958 | 2 真有闲功夫...
【在 c*******v 的大作中提到】 : 拿出来原来国内带来的k and r的书翻翻。这本书 : 和公司new grad的新人的年龄差不多。太有意思了。
|
c*******v 发帖数: 2599 | 3 很难找到C程序员。多数都简历上有一点,后来很快转行了。
【在 w***g 的大作中提到】 : 真有闲功夫...
|
a*****g 发帖数: 19398 | 4 写得书不好懂
【在 c*******v 的大作中提到】 : 拿出来原来国内带来的k and r的书翻翻。这本书 : 和公司new grad的新人的年龄差不多。太有意思了。
|
c*******v 发帖数: 2599 | 5 以现在眼光看,ANSI C标准库里面一堆垃圾一样的string函数。用一个都要提心吊胆半
天。
我认为这样的语言系统,是绝对无法支持现在软件上亿数量级的装机量的。
反过来看,也不得不敬佩那时候人们乱枪打鸟的勇气。
: 写得书不好懂
【在 a*****g 的大作中提到】 : 写得书不好懂
|
n******t 发帖数: 4406 | 6 C的string函數沒有什麼問題,前提是你要知道怎麼用。
而且99%的去嘲笑C string函數設計的人都是自己不寫程序的。
【在 c*******v 的大作中提到】 : 以现在眼光看,ANSI C标准库里面一堆垃圾一样的string函数。用一个都要提心吊胆半 : 天。 : 我认为这样的语言系统,是绝对无法支持现在软件上亿数量级的装机量的。 : 反过来看,也不得不敬佩那时候人们乱枪打鸟的勇气。 : : : 写得书不好懂 :
|
c*******v 发帖数: 2599 | 7 我批评的是ANSI C标准库。现如今的大家生产上用的多数都是部分改装过。加了各种规
定和限制的。gcc也有给好多改动。
: C的string函數沒有什麼問題,前提是你要知道怎麼用。
: 而且99%的去嘲笑C string函數設計的人都是自己不寫程序的。
【在 n******t 的大作中提到】 : C的string函數沒有什麼問題,前提是你要知道怎麼用。 : 而且99%的去嘲笑C string函數設計的人都是自己不寫程序的。
|
c*******v 发帖数: 2599 | 8 給你看個東西
https://github.com/git/git/blob/master/banned.h
我基本上也把这几个函数办了。
: 我批评的是ANSI C标准库。现如今的大家生产上用的多数都是部分改装过
。加了
各种规
: 定和限制的。gcc也有给好多改动。
【在 c*******v 的大作中提到】 : 我批评的是ANSI C标准库。现如今的大家生产上用的多数都是部分改装过。加了各种规 : 定和限制的。gcc也有给好多改动。 : : : C的string函數沒有什麼問題,前提是你要知道怎麼用。 : : 而且99%的去嘲笑C string函數設計的人都是自己不寫程序的。 :
|
s**d 发帖数: 258 | 9 就这几个函数,然后就下结论 C 语言太糟糕了?
【在 c*******v 的大作中提到】 : 給你看個東西 : https://github.com/git/git/blob/master/banned.h : 我基本上也把这几个函数办了。 : : : 我批评的是ANSI C标准库。现如今的大家生产上用的多数都是部分改装过 : 。加了 : 各种规 : : 定和限制的。gcc也有给好多改动。 :
|
p***o 发帖数: 1252 | 10 strdup都不ban ...
【在 c*******v 的大作中提到】 : 給你看個東西 : https://github.com/git/git/blob/master/banned.h : 我基本上也把这几个函数办了。 : : : 我批评的是ANSI C标准库。现如今的大家生产上用的多数都是部分改装过 : 。加了 : 各种规 : : 定和限制的。gcc也有给好多改动。 :
|
|
|
n******t 发帖数: 4406 | 11 ansi C的標準庫其實也沒有問題。
這些函數從來就是給你操作程序中間長度清晰有定義的string的,不是用來操作任意
buffer的!
【在 c*******v 的大作中提到】 : 我批评的是ANSI C标准库。现如今的大家生产上用的多数都是部分改装过。加了各种规 : 定和限制的。gcc也有给好多改动。 : : : C的string函數沒有什麼問題,前提是你要知道怎麼用。 : : 而且99%的去嘲笑C string函數設計的人都是自己不寫程序的。 :
|
n******t 发帖数: 4406 | 12 爲什麼要ban?
雖然其實也沒什麼大用。
【在 p***o 的大作中提到】 : strdup都不ban ...
|
x*****2 发帖数: 117 | 13 那个年代的计算力宝贵,在标准函数中嵌入边界检查,让每次调用都过一遍太奢侈。防
范错误是程序员的责任,就像用汇编编程一样。
:以现在眼光看,ANSI C标准库里面一堆垃圾一样的string函数。用一个都要提心吊胆
半天。
:我认为这样的语言系统,是绝对无法支持现在软件上亿数量级的装机量的。 |
c*******v 发帖数: 2599 | 14 假如限定使用范围,那你总可以找到一个范围。说这才是ANSI c的使用范围。所以我前
面讲,装机量少的软件较合适。不然纯用ANSI c不可能。多数都要加改装和限定:
Coding 这个practice, 错误的扩散我觉得是有规律的。规模大的情况下,也许可以当
作数学物理对象来研究。所以我说的不是单个人的情况。
另一个很麻烦,也许更麻烦的事是,对这些string函数的各种改装。会导致不少实战的
兼容问题。
上面那个git 项目的ban list的思路是,与其修来修去,不如都转做memmove之类的操
作。
: ansi C的標準庫其實也沒有問題。
: 這些函數從來就是給你操作程序中間長度清晰有定義的string的,不是用
來操作
任意
: buffer的!
【在 n******t 的大作中提到】 : 爲什麼要ban? : 雖然其實也沒什麼大用。
|
c*******v 发帖数: 2599 | 15 这个程序员的责任这种说法,我无法认同。因为责任一词是政治术语。
改成: ANSI的string.h 假设程序员可以自己正确的追踪string的长度。
: 那个年代的计算力宝贵,在标准函数中嵌入边界检查,让每次调用都过一
遍太奢
侈。防
: 范错误是程序员的责任,就像用汇编编程一样。
: :以现在眼光看,ANSI C标准库里面一堆垃圾一样的string函数。用一个
都要提
心吊胆
: 半天。
: :我认为这样的语言系统,是绝对无法支持现在软件上亿数量级的装机量
的。
【在 x*****2 的大作中提到】 : 那个年代的计算力宝贵,在标准函数中嵌入边界检查,让每次调用都过一遍太奢侈。防 : 范错误是程序员的责任,就像用汇编编程一样。 : : :以现在眼光看,ANSI C标准库里面一堆垃圾一样的string函数。用一个都要提心吊胆 : 半天。 : :我认为这样的语言系统,是绝对无法支持现在软件上亿数量级的装机量的。
|
p***o 发帖数: 1252 | 16 这个跟其他的不一样,需要free。
【在 n******t 的大作中提到】 : 爲什麼要ban? : 雖然其實也沒什麼大用。
|
c*******v 发帖数: 2599 | 17 这个还是小问题。毕竟其他语言,也经常在函数内new一个。大家都适应了。
strcpy 还要确保source和target的memory block不重叠。
【在 p***o 的大作中提到】 : 这个跟其他的不一样,需要free。
|
p***o 发帖数: 1252 | 18 你太高看程序员了,要是手动free好用还要GC干啥,要是不要GC也没其他语言什么事了。
【在 c*******v 的大作中提到】 : 这个还是小问题。毕竟其他语言,也经常在函数内new一个。大家都适应了。 : strcpy 还要确保source和target的memory block不重叠。
|
m*****p 发帖数: 39 | 19 C語言簡單啊,該用C的地方不用C,其他語言更複雜。
不用C難道用Rust?用Go?用Cpp?
很多時候C非常鋒利好用,其他幾個缺點特別明顯。
: 你太高看程序员了,要是手动free好用还要GC干啥,要是不要GC也没其他语言什
么事了。
【在 p***o 的大作中提到】 : 你太高看程序员了,要是手动free好用还要GC干啥,要是不要GC也没其他语言什么事了。
|
c*******v 发帖数: 2599 | 20 我的意思是说。相对来讲。new比较容易适应。
这个要求src和tgt不能overlap,极其难用。
既然有memmove,strcpy这个函数我觉得实际上是作废了。
咱们考虑下真实生活。
假如我发现谁的code里有strcpy,
那我下一句问,tgt和src会不会overlap?
作者会怎么答?异常处理了?似乎有点匪夷所思。
了。
【在 p***o 的大作中提到】 : 你太高看程序员了,要是手动free好用还要GC干啥,要是不要GC也没其他语言什么事了。
|
|
|
p***o 发帖数: 1252 | 21 嗯,到处都是坑 。
【在 c*******v 的大作中提到】 : 我的意思是说。相对来讲。new比较容易适应。 : 这个要求src和tgt不能overlap,极其难用。 : 既然有memmove,strcpy这个函数我觉得实际上是作废了。 : 咱们考虑下真实生活。 : 假如我发现谁的code里有strcpy, : 那我下一句问,tgt和src会不会overlap? : 作者会怎么答?异常处理了?似乎有点匪夷所思。 : : 了。
|
c*******v 发帖数: 2599 | 22 硬件公司做CPU的时候,往往C compiler和CPU simulator就一起做。
不是软件的技术原因。
【在 m*****p 的大作中提到】 : C語言簡單啊,該用C的地方不用C,其他語言更複雜。 : 不用C難道用Rust?用Go?用Cpp? : 很多時候C非常鋒利好用,其他幾個缺點特別明顯。 : : : 你太高看程序员了,要是手动free好用还要GC干啥,要是不要GC也没其他语言什 : 么事了。 :
|
m*****p 发帖数: 39 | 23 我覺得其實就是語言設計的問題:
Cpp巨大無比,複雜的模板,無用的類抽象。。。
Go有runtime和GC,根本不能脫離OS單獨存在。。。
Rust我就不噴了,片面強調安全性,增加編譯器成本。。。
搞硬件的軟件語言只有C一種選擇,另一個相似領域是HPC:Infiniband、MPI和CUDA都
是C,純C
剩下的能搞定baremetal編程的就是兩個老古董:ada和fortran,估計年輕人更不知道了
總之:搞超算和硬件的,精通C是基本要求,因為世界上沒有人精通Cpp
: 硬件公司做CPU的时候,往往C compiler和CPU simulator就一起做。
: 不是软件的技术原因。
【在 c*******v 的大作中提到】 : 硬件公司做CPU的时候,往往C compiler和CPU simulator就一起做。 : 不是软件的技术原因。
|
n***p 发帖数: 110 | 24 搞Ada的老中估计没几个,国防部项目居多。
rust你是想说增加编译难度还是编译器难度?
道了
【在 m*****p 的大作中提到】 : 我覺得其實就是語言設計的問題: : Cpp巨大無比,複雜的模板,無用的類抽象。。。 : Go有runtime和GC,根本不能脫離OS單獨存在。。。 : Rust我就不噴了,片面強調安全性,增加編譯器成本。。。 : 搞硬件的軟件語言只有C一種選擇,另一個相似領域是HPC:Infiniband、MPI和CUDA都 : 是C,純C : 剩下的能搞定baremetal編程的就是兩個老古董:ada和fortran,估計年輕人更不知道了 : 總之:搞超算和硬件的,精通C是基本要求,因為世界上沒有人精通Cpp : : : 硬件公司做CPU的时候,往往C compiler和CPU simulator就一起做。
|
m*****p 发帖数: 39 | 25 Rust又難又小眾,編譯速度比Cpp更慢,無法跟C相提並論。語法也不兼容,甚至不如Go
: 搞Ada的老中估计没几个,国防部项目居多。
: rust你是想说增加编译难度还是编译器难度?
: 道了
【在 n***p 的大作中提到】 : 搞Ada的老中估计没几个,国防部项目居多。 : rust你是想说增加编译难度还是编译器难度? : : 道了
|
n***p 发帖数: 110 | 26 Rust卖点是safety without performance penalty. 比的不是编译速度啊。
Go
【在 m*****p 的大作中提到】 : Rust又難又小眾,編譯速度比Cpp更慢,無法跟C相提並論。語法也不兼容,甚至不如Go : : : 搞Ada的老中估计没几个,国防部项目居多。 : : rust你是想说增加编译难度还是编译器难度? : : 道了 :
|
m*****p 发帖数: 39 | 27 所以Rust不是銀彈,它就是個螺絲刀,皮實安全不出錯而已。
C是手術刀,出錯後輕則指頭削掉,重則立即斃命。
Cpp是超級瑞士軍刀,一般人用不了。
Go是電動剃鬚刀,全自動並行處理。
其實也可以用瑞士軍刀刮鬍子,大不了割頸自殺而已。
: Rust卖点是safety without performance penalty. 比的不是编译速度啊。
: Go
【在 n***p 的大作中提到】 : Rust卖点是safety without performance penalty. 比的不是编译速度啊。 : : Go
|
P****i 发帖数: 12972 | 28 abi兼容就行了。成熟的c lib直接用ffi就好了。
rust/c相互调用跟比c/c++之间还简单。
Go
【在 m*****p 的大作中提到】 : Rust又難又小眾,編譯速度比Cpp更慢,無法跟C相提並論。語法也不兼容,甚至不如Go : : : 搞Ada的老中估计没几个,国防部项目居多。 : : rust你是想说增加编译难度还是编译器难度? : : 道了 :
|
m*****p 发帖数: 39 | 29 搞笑,還ABI兼容,你以為是windows嗎,請列舉出各種POSIX系統的ABI來。。。光RHEL
就N種ABI,再加上大小端、32/64、各種float,ILP32、LP64、x86/arm/power,還有各
種處理器tune。。。這還是我隨便說說
: abi兼容就行了。成熟的c lib直接用ffi就好了。
: rust/c相互调用跟比c/c 之间还简单。
: Go
【在 P****i 的大作中提到】 : abi兼容就行了。成熟的c lib直接用ffi就好了。 : rust/c相互调用跟比c/c++之间还简单。 : : Go
|
c*******v 发帖数: 2599 | 30 除了ansi c + 标准库。没有什么语言系统可以兼容大小不同的芯片和板子。
rust支持的板子我以前看过。有个embedded rust项目。但是我觉得还不成熟。
RHEL
【在 m*****p 的大作中提到】 : 搞笑,還ABI兼容,你以為是windows嗎,請列舉出各種POSIX系統的ABI來。。。光RHEL : 就N種ABI,再加上大小端、32/64、各種float,ILP32、LP64、x86/arm/power,還有各 : 種處理器tune。。。這還是我隨便說說 : : : abi兼容就行了。成熟的c lib直接用ffi就好了。 : : rust/c相互调用跟比c/c 之间还简单。 : : Go :
|
|
|
P****i 发帖数: 12972 | 31 你不看上下文?这是跟golang比,相较而言的。
RHEL
【在 m*****p 的大作中提到】 : 搞笑,還ABI兼容,你以為是windows嗎,請列舉出各種POSIX系統的ABI來。。。光RHEL : 就N種ABI,再加上大小端、32/64、各種float,ILP32、LP64、x86/arm/power,還有各 : 種處理器tune。。。這還是我隨便說說 : : : abi兼容就行了。成熟的c lib直接用ffi就好了。 : : rust/c相互调用跟比c/c 之间还简单。 : : Go :
|
m*****p 发帖数: 39 | 32 誰看不懂上下文,這樓主要討論C語言,Rust和Go都是被提溜出來陪鬥的。我說C最精巧
,其他都是屎(包括Cpp),你非得說屎a比屎b香一點,那我能怎麼辦。。。
: 你不看上下文?这是跟golang比,相较而言的。
: RHEL
【在 P****i 的大作中提到】 : 你不看上下文?这是跟golang比,相较而言的。 : : RHEL
|
M********t 发帖数: 5032 | 33 这些东西比较底层,一般需要外包一下
【在 c*******v 的大作中提到】 : 以现在眼光看,ANSI C标准库里面一堆垃圾一样的string函数。用一个都要提心吊胆半 : 天。 : 我认为这样的语言系统,是绝对无法支持现在软件上亿数量级的装机量的。 : 反过来看,也不得不敬佩那时候人们乱枪打鸟的勇气。 : : : 写得书不好懂 :
|
P****i 发帖数: 12972 | 34 你说c最精巧,我又没反对。
说屎a比屎b香一点是你先说的:“語法也不兼容,甚至不如Go”。现在反倒倒打一耙了。
你到底是来讨论问题的,还是来抬杠的?
【在 m*****p 的大作中提到】 : 誰看不懂上下文,這樓主要討論C語言,Rust和Go都是被提溜出來陪鬥的。我說C最精巧 : ,其他都是屎(包括Cpp),你非得說屎a比屎b香一點,那我能怎麼辦。。。 : : : 你不看上下文?这是跟golang比,相较而言的。 : : RHEL :
|