- 主题:cpp大佬亲自搞了个cpp2
我都不敢确认有没有这句了……哈哈哈 掩面而逃
【 在 sixue1999 的大作中提到: 】
: 这个nothing special happen,我还以为是路易十六的梗呢
: 但是查了一下好像不是
: 路易十六的「无事发生」似乎只是一个单词rien
--
FROM 61.185.186.*
看你说的我差点信了cpp混得很差的样子。。。
【 在 sixue1999 的大作中提到: 】
cpp最初的使命非常明确,就是给c加上oop
对此,cpp给出的路线是,「给c做加法的方式来实现‘c风格+oop’」
但是,历史证明,这条路的正确答案是java,即「用给c做减法的方式来实现‘c风格oop」
所以,虽然cpp在历史上得到了一批初始用户
但并没有吃到多少历史的红利,因为大多数用户都是在这过路的,最后全都跑到java去了
事实上,事后看来,cpp的这批初始用户反而成了cpp最大的历史包袱
因为这批用户,本来就是一批不是很理解oop,技术栈又落后的老古董
所谓cpp的垃圾程序员主要就是这帮人
【 在 lvsoft 的大作中提到: 】
: cpp一开始就是c的超集,直到越来越复杂...
: 这种超集的思路可以获得一个很好的起步,解决获得原始用户的问题,最起码在刚开始可以有很高的成功率,比如ts之于js也一样。
: 但这种思路也没法解决根本性问题,只能在演变中去逐步改良。而改良对生态活跃度有很高的要求。
: ...................
--
FROM 58.34.53.*
这个说法不对吧....
只能说cpp和java的时代oop这个概念还比较时髦,算是当时的一个时代特征。就跟下一个十年的语言都喜欢整个lambda一样。
但java的普及绝对不是什么「用给c做减法的方式来实现c风格oop」带来的。java吸引人的地方从来是“一次编译,到处debug”....
java的j2se,j2me都失败了,真正让java胜出的是j2ee。而让它胜出的核心原因也是因为java是同时代不多的,没有segment fault问题的高性能语言。
oop对于java的成功我觉得贡献很小,可以忽略不计。
此外,cpp最初在「给c做加法的方式来实现‘c风格+oop’」这条路上做的也蛮好的。事实上很多初学者都会把oop=cpp,能有这样的影响力本身就说明了它的成功。说“cpp的这批初始用户反而成了cpp最大的历史包袱”,说他们是“不是很理解oop,技术栈又落后的老古董”有点太过了。oop又不是什么很复杂很难理解的概念,我觉得甚至可以说连vue都比它复杂...
【 在 sixue1999 的大作中提到: 】
: cpp最初的使命非常明确,就是给c加上oop
: 对此,cpp给出的路线是,「给c做加法的方式来实现‘c风格+oop’」
: 但是,历史证明,这条路的正确答案是java,即「用给c做减法的方式来实现‘c风格oop」
: ...................
--
修改:lvsoft FROM 49.93.80.*
FROM 49.93.80.*
main:() -> int = 比 int main() 好在哪? 方便理解? 稍微入点门也不会对后者的理解有问题吧, 又不是需要人人都是coder, 但是论输入时间, 前者可能是后者的N倍
--
FROM 113.116.30.*
java 并不是正确答案啊……我觉得上个世纪的语言里,最终交出完美答卷的是 go。虽然它是2009年才发明的语言,但 c# 都比它现代多了。
这个世纪的新语言里,除了必须保证兼容性的情况外(kotlin、swift),大多数语言都在去 oop。而 immutable、closure、pattern matching 这些在 fp 里常见的概念大行其道,从语言到各种框架,都表现出向 fp 学习的趋势。甚至连前端 component 这种看起来似乎更适合 oop 的地方也是如此,比如 react 一开始是 class 的设计,现在已经不用了
【 在 sixue1999 的大作中提到: 】
: cpp最初的使命非常明确,就是给c加上oop
: 对此,cpp给出的路线是,「给c做加法的方式来实现‘c风格+oop’」
: 但是,历史证明,这条路的正确答案是java,即「用给c做减法的方式来实现‘c风格oop」
: ...................
--
FROM 203.184.25.*
c++和java完全是不同的东西,不能光从语法上比较。。
【 在 sixue1999 的大作中提到: 】
: cpp最初的使命非常明确,就是给c加上oop
: 对此,cpp给出的路线是,「给c做加法的方式来实现‘c风格+oop’」
: 但是,历史证明,这条路的正确答案是java,即「用给c做减法的方式来实现‘c风格oop」
: 所以,虽然cpp在历史上得到了一批初始用户
: 但并没有吃到多少历史的红利,因为大多数用户都是在这过路的,最后全都跑到java去了
: 事实上,事后看来,cpp的这批初始用户反而成了cpp最大的历史包袱
: 因为这批用户,本来就是一批不是很理解oop,技术栈又落后的老古董
: 所谓cpp的垃圾程序员主要就是这帮人
--
FROM 101.84.198.*
写下int后,可能是变量,可能是函数返回值
写下main:,后面是(),就可以判断是函数了;再加上->int就知道是返回值了
编译器解析时可以简单点,方便开发自动提示工具、lint工具。
这是社区/官面的说法。我个人觉得变量名放前面,可以自己控制变量名字母数一样,对齐看起来很舒服。像我这种起名大师、对齐强迫症患者来说,非常舒服。
如果是int float在前,咋也对不齐。
类似的还有构造函数初始化列表:
ctor::ctor()
: a
, b
, c
{
i}
【 在 jesce 的大作中提到: 】
: main:() -> int = 比 int main() 好在哪? 方便理解? 稍微入点门也不会对后者的理解有问题吧, 又不是需要人人都是coder, 但是论输入时间, 前者可能是后者的N倍
--
FROM 124.114.151.*
但确实,第一眼很难接受
a:int = 1;
感觉赋值像递东西,中间夹了别的东西。
【 在 DoorWay 的大作中提到: 】
: 写下int后,可能是变量,可能是函数返回值
: 写下main:,后面是(),就可以判断是函数了;再加上->int就知道是返回值了
: 编译器解析时可以简单点,方便开发自动提示工具、lint工具。
: ...................
--
FROM 124.114.151.*
类型声明后置也是这个时代的标准了
c 的类型声明方式的确不好读……
【 在 jesce 的大作中提到: 】
: main:() -> int = 比 int main() 好在哪? 方便理解? 稍微入点门也不会对后者的理解有问题吧, 又不是需要人人都是coder, 但是论输入时间, 前者可能是后者的N倍
--
FROM 203.184.25.*
【 在 DoorWay 的大作中提到: 】
: 但确实,第一眼很难接受
: a:int = 1;
: 感觉赋值像递东西,中间夹了别的东西。
明显是被语言规范忽悠了,这种时候写 var a = 1 是最地道的,或者 var a: int, 或者 var a = i64(1)
--
FROM 112.124.57.*