Java 开发开始学习 C++开发的一点体会

147 天前
 liangkang1436

其实最大的体会就是,写 C++代码,思维方式跟写 Java 代码差别很大,C++强迫我以更底层的视角去开发,关注内存是引用和内存复制,关注指针指向的是变量还是另一个指针,而 Java 因为为开发者屏蔽了这些底层细节,所以写起来很快很轻松,直接实现业务即可。

2846 次点击
所在节点    程序员
14 条回复
hwdq0012
146 天前
cpp 有两套语言 模板元编程在编译期几乎图灵完备 ,但语法很怪 java 假泛型类型擦除 连 c# 真泛型都比不上 和 c++编译器都能区分的泛型就差得更多了
liangkang1436
146 天前
@hwdq0012 是的,所以我学 Java 泛型的时候,老觉得很别扭
anivie
146 天前
> Java 不愧是 C++的替代品

这是哪个次元的说法……
xtreme1
146 天前
「所以学习 C++中的这些概念,反而更容易理解」
「比如模板对应 Java 的泛型」
我不觉得你理解了
PTLin
146 天前
学新语言千万不要去找与你会的语言之间的对应关系。找到对应关系下一步就你就该用以前的范式代入新语言的程序开发中了。
例如 python 中写 getter/setter ,go 中把 err 转换成 panic 然后配合 recover 实现 try catch 。
liangkang1436
146 天前
@anivie 替代品确实不准确,应该 Java 是参照 c++设计并简化后的产物
liangkang1436
146 天前
@xtreme1 才刚学,说错了很正常,:-D
prosgtsr
146 天前
厉害了,长期写一种语言,学第二种的时候感觉太痛苦了,直接放弃了,我是废物
emSaVya
146 天前
@liangkang1436

c11 设计线程模型的时候是参考了 java 的 包括 std format 这种基本就是全套使用了。所以不存在谁替代谁

不过 java 确实是个不讨喜的语言 写了这么多年代码 最讨厌写 java
onikage
146 天前
同 java 学 c++,同感。
arielherself
146 天前
很赞同最后那段总结。对于第三点 C++ 标准库不够丰富的问题,可以试试 [boost]( https://www.boost.org/),它是一套非常成熟和丰富的 C++ 库,被各种大型项目广泛使用。
henix
146 天前
个人也学过这两种语言,感觉除了你说的这些,还有一个代码组织上的重要区别:
C++ 有编译单元( translation unit )的概念,每个 C++ 源文件跟其他 C++ 源文件之间存在隔离(比如 static 函数是属于单个编译单元私有的),因为每个 C++ 源文件都是单独编译成目标文件的
而 Java 只是将各种类组织成 package ,通过 private / public 关键字控制访问,但实际上即使是私有方法也可以通过反射访问,没有编译单元的概念
liangkang1436
146 天前
@henix 这个我还真没注意,感谢大佬不吝赐教,
CLMan
145 天前
@PTLin 这种说法我不太认同,人学习东西本来就是基于已有的经验,然后总结相同,区分不同,这是是人的硬件条件(大脑)决定的。
你说的,python 写 getter/setter,go 中写 try catch ,是简单的生搬硬套,意味学习者并没有正确的去对照学习新语言。

在学习新的编程语言时,对比已经学会的语言,语法可以从两方面进行比较:

- 语法的外形上,对于形式上类似的语法,对比它们在细节、功能性上的不同
- 语法的功能上,对于作用上类似的语法(上通常不同,如 try catch 对比 return err ),对比它们在设计理念、功能性上的不同

如果学习者会正确的对语言进行比较学习,他会带着“相同”与“不同”的好奇去研究新语言的语法,而非简单的生搬硬套。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1129461

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX