- 主题:C语言的优势是啥? (转载)
出现的早(1972年)就是最大的优势,无数系统软件都是用C语言来实现的,你要进行系统编程,就必须学会C语言,才能进入到系统编程的世界之中。。。
【 在 sqsl 的大作中提到: 】
: 发信人: sqsl (12345), 信区: Circuit
: 标 题: C语言的优势是啥?
: 发信站: 水木社区 (Fri Jan 15 14:13:14 2021), 站内
: ...................
--
FROM 113.232.145.*
想一想,“不变”其实是一种优势,比如,自然语言也在演变,但是速度极其缓慢,如果每几十年语法和关键字都变一遍,人类就不可能有任何百年以上的文化传承了。。。
【 在 Dieken 的大作中提到: 】
: 主要是遗老不用学新语言,遗码不用重写,说白了,最大的优势就是”不变”,甭管每年新造多少漏洞出来。
: 解决办法很简单,等着吧,再来三代人,C 可绝。
--
FROM 113.232.145.*
我写过C语言的parser,但是也经常看不清楚复杂的声明,C语言牺牲了易读性,使用递归定义来换取语法定义的简洁和统一。。。
【 在 chaobill 的大作中提到: 】
: typedef 的语法 加个关键词就容易读多了。
: typdef int (myfunc*)()[5]; => typedef myfunc int function()[5]
: 还有数值的隐式转换也应该变成显式的
: ...................
--
修改:siegfried415 FROM 113.232.145.*
FROM 113.232.145.*
和其他“现代”编程语言相比,我能够非常强烈地感受到golang的设计者希望能够保持C语言的优势(比如和机器语言的线性映射,生成高效二进制代码)的同时,还希望引入一些现代编程特性(比如类型判断、interface、slice等),尤其是为了适应并发和并行编程,引入的channel和go routine等等。
Golang的设计者之一就是Ken Thompson,他也是C语言设计者之一,对,就是那个和Ritchie 一起设计C语言和UNIX、并且得了图灵奖的那个老头,所以golang是所有“现代”语言中和C语言最优渊源的一种语言也就一点都不奇怪了。
【 在 z16166 的大作中提到: 】
: Go 的作者Rob Pike:
: 我们发布 Go 的时候将其称为系统编程语言。这个词似乎不太恰当,因为很多人以为它是写操作系统的语言。我们觉得它更应该叫做“写服务器的语言”。现在 Go 成为了云平台语言,这样系统语言又可以定义为“跑在云上的语言”。
: 到底什么是系统编程?
: ...................
--
FROM 60.16.236.*
支持遗产代码,降低移植的难度,对于新语言来说,这是非常重要的一环。。。
【 在 z16166 的大作中提到: 】
: go好多低层的还是通过cgo来调用c更方便,Rust也有不少。
:
--
FROM 60.16.236.*
好多年前,我曾经做个一个类C语言的编译器,后来,为了将用C语言实现的大量字符串算法引入,不得已实现了支持外部语言调用,我那时比较早,还没有跨语言调用的通用方法,我是通过解析C语言库函数的stab段来实现的,很丑,现在应该有更好的方式了吧?
【 在 z16166 的大作中提到: 】
: 所以要完全代替还早啊,能替代多少算多少。
: 而且go的一次gc大概需要几毫秒,有些场合是不能有这个的,那这些场合就无法替代了。
:
--
FROM 60.16.236.*
?
【 在 iMx 的大作中提到: 】
: 为什么不用C语言实现一遍外部语言库呢?
:
:
--
FROM 60.16.236.*
和UNIX的孪生关系,以及早期UNIX采取的开放策略是C语言能够流行的重要原因吧。。。
【 在 superisaac 的大作中提到: 】
: 要论早fortran, algol, lisp 上个世纪50,60年代出现了, 流行度曾经很好,但现在不行了。
:
--
FROM 60.16.236.*
我就是学的dlopen,加了一些我们自己的逻辑。。。
【 在 hgoldfish 的大作中提到: 】
: .so 文件以前没有符号表吗? dlopen() 和 LoadLibrary() 我记得很早就有的啊。
:
--
FROM 60.16.236.*