小白发问,都说 C++开发效率比 Java 低,但 C++的 hello world 也没多几行代码啊

6 天前
wanmyj  wanmyj

#c++

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

vs

#java

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
5457 次点击
所在节点   程序员  程序员
60 条回复
henix
henix
5 天前
看看 https://www.v2ex.com/t/1063354 C++ 连一个简单的接口都要考虑内存释放问题,Java 就没这么多事
junkun
junkun
5 天前
把输出换成"你好世界!",有的时候 hello world 就能踩到坑。
kaedeair
kaedeair
5 天前
@jones2000 #28 没有反射,如何获得一个特化模板对象的模板参数?
Pony69
Pony69
5 天前
op 是来骗币的🤣
linzyjx
linzyjx
5 天前
心智负担大,而且由于能直接操作内存,还没有 GC ,有的时候一个不小心就踩坑了,调试还麻烦。
kinkin666
kinkin666
5 天前
想锻炼自己分析 coredump 的能力,尽管用去吧
levelworm
levelworm
5 天前
写了一段自己的 C++项目,几个坑,都比较初级,大家见笑了。

第一,尽量不用 unsigned integers 作为循环的 index ,或者是任何可能需要做减法的地方,因为到了负数的时候就会溢出。这个问题其实我很早就知道,架不住有些地方没第一时间发现。比如说 if (i - 0xff > 0) 这种地方,根本就不应该用 unsigned integers 。

第二,stringstream 对 char 的处理有点特殊,不会自动转换成整数,所以如果需要显示为整数而不是字符的话,需要显式转换成整数。

第三,文件夹架构最好上来就弄好,不然改 Makefile 也蛮麻烦的。

还有几个 ImGui 的问题,因为没啥文档,只好靠搜索和读源代码解决,这里就不说了。但是基本上两三个礼拜写下来,就适应了。

内存的问题倒是没碰到,因为我都没用 new ,直接就是堆栈上建立对象,所以不担心泄漏或者指针的问题。
bao3
bao3
5 天前
解释器的语言,帮开发者处理好了一堆乱问题,但像 C++ 这种,就需要开发者自己考虑。这就特别影响效率,即使不看项目的维护升级,光是前期的调试,真的会让人头秃。
sofukwird
sofukwird
5 天前
开发生态,以前我用 nodejs 开发后台各种需要自己造轮子,换到 go 之后轮子都有,直接用就行
greygoo
greygoo
5 天前
@wanmyj #31 conan 上面的包太少了,相比与 Rust 最初就是用 crates.io 实在是太少了,
还不如 sudo apt install lib***-dev ,但是还是问题一大堆。
sir283
sir283
5 天前
c++给你来个段错误就老实了,gdb 调试半天看不出问题,只能自己一行一行打印执行顺序排查,Java 好歹能调试看看是哪个变量出问题,能定位到哪个函数。
再说了,c++都没有直接能用的网络库,发个 get 还得自己手搓,要是发 https 请求,还得自己去 rebuild openssl 进行集成,还得自己写 ssl 通讯协议,你指望全部靠 libcurl?要是项目不让用 libcurl 呢?比如我现在做的这个,全静态,跨平台,直接爆炸。
ivvei
ivvei
5 天前
C++ 的生态不太好。没有 Java 那么多现成的包可以用。干点啥都需要自力更生。这样就很拖慢速度了。
网上开源的包,一是未必敢用,二来有各种环境、版本问题,未必能直接用的上。
ivvei
ivvei
5 天前
再就是语言风格上也对协作产生了不少麻烦。不同的 C++程序员写的程序差异大得能不像同一个语言。
azarasi
azarasi
5 天前
哪个编程语言写 helloworld 麻烦
GaoNengwWw
GaoNengwWw
5 天前
你不能只看 hello world 啊,得上实战
jones2000
5 天前
@zjsxwc 你说的这些反射,跟语言没什么关系, 这些不都是编译的时候, 直接都可以获取到。 只是 c++没有保存起来。改 c++编译器, 在编译的存一份函数和类信息,不就可以了。只是 c++没人这么搞而已。
jones2000
5 天前
@zjsxwc 根据字符串来 eval 执行, 执行 eval 的时候把 eval 里面的代码动态编译成一个随机的 dll ,然后动态调用也是可以搞定的。 高级点就直接在 c++写一个小的解释执行器, 把 eval 里面的代码生成抽象语法树, 执行下。
cnuser002
4 天前
说说我的体会,
1. 写刷法题,完成小作业,这种场景 C++和 Java ,没有太多区别。
2. 有 IDE 的加持下,用 C++写 windows 桌面程序,和用 Java 写 Android 移动端程序,体验也差不多。同样的模式,都是在预设的框架里按套路写。
3. C++写网络编程,就比较麻烦了,Java 写则很简单,或者说,不简单的地方,已经有高手为你写好了。
4. C++写完了并不算完。头文件管理,交叉编译,调试等等都费劲。尤其一个叫 cmake 的东西,当年把我狠狠干住了,发现没有 Visual Studio ,咋干啥都不顺。Java 这块就轻松多了。

后面用 JS ,Python ,又体会到一种语言在“领域内的垄断”。 比如 JS 在前端,Python 在科研,JAVA 在网络,那 C++呢,则在所谓的高性能领域,什么游戏引擎,网游服务器,音视频处理,高性能硬件开发等等,这个领域本来就费脑子,开发效率天然就低。
levelworm
4 天前
@azarasi #54
Brainfuck?
deetincelle
4 天前
c++刚开始试着用了三个月, 学习了

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

https://www.v2ex.com/t/1118729

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

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

© 2021 V2EX