java - 作为 Java 开发人员,C 还是 C++?

标签 java c++ c java-native-interface

<分区>

在过去的 5 年里,我一直在专业地编写 Java。最近,我不得不深入研究 JNI 以调用一些 Windows 特定的函数。

这段经历凸显了我对 C(或 C++)语言的糟糕掌握。我对 C 的唯一介绍是我 11 年前在高中读到的一本简短的“傻瓜”书。

我知道这两种语言在那个时间范围内都取得了进步,尤其是 C++ 和标准库。

我学 C 还是 C++ 合适?哪些书最好?

大家对 Windows 编程也有什么建议吗?我可以很好地阅读 MSDN 以找出某些 API 调用,但我觉得我在“大局”方面遗漏了一些东西。

谢谢

最佳答案

好问题。从表面上看,推荐 C++ 是显而易见的,因为“它像 Java 一样面向对象”。唯一的问题是,这不是真的。C++ 允许 OOP,是的,但这只是 C++ 支持的几种范例之一。将 C++ 视为 OOP 语言(尤其是将其视为 Java)只会导致挫败感。

问题是 Java 和 C++ 实际上并没有太多共同之处。 Java 程序员通常认为 Java 是受 C++ 启发的,但只有当 C++ 指的是 C++ 的最早版本时,这才是正确的,它可能更恰本地称为“C with classes”。 从那时起,C++ 以自己的做事方式完全转变为自己的语言。从那时起,它的变化可能比 Java 大得多。那时的 Java 程序员仍然能够理解今天的 Java 代码。 C++ 不是这样。所以我认为 C 实际上比“现代 C++”更接近 Java。如果你采用 Java 并剥离 GC 和类的概念以及一些其他抽象,你将得到 C。要实现 C++,您还必须向我们假设的精简版 Java添加类似数量的功能。

此外,C++ 是一种非常复杂的语言,学好它需要很长时间。如果你学得不好,你就会一遍又一遍地搬起石头砸自己的脚。

最后,这取决于您的目标。 C++ 是一种比 C 更现代的语言,一旦你学习了它,它就会非常有表现力和强大,令人惊讶的是,它甚至可以非常优雅和简洁。但是学习曲线很糟糕。因此,从长远来看,对于 native 编程,我建议使用 C++ 而不是 C。

但是如果您的目标主要是与 Win32 API(或与此相关的其他 native API)交互,则不需要 C++。 Win32 和大多数其他 API 是用 C 而不是 C++ 编写的,并且在任何情况下您很可能不需要非常复杂的代码来连接它和 Java。

关于学习Win32,你说的对,MSDN上有你需要的所有细节。如果你想要大图,Petzold是关于这个主题的书。

关于java - 作为 Java 开发人员,C 还是 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/463618/

相关文章:

c++ - [C++] 将一个字符串分割成由另一个字符串中给出的符号以外的任何分隔符分隔的字符串?

c++ - 将库与较新的 GLIBC 依赖项链接起来

c99 转到过去的初始化

C++ gettimeofday() 返回相同的值

java - 如何从Function接口(interface)返回Consumer

java - 使用 commandId 检索 Activity 键绑定(bind)

java - 这些表达式的解析器语法

C++ 主循环抽象

c++ - 什么时候将 double 转换为整数是未定义的行为

java - JAXB 将不需要的 namespace 声明附加到标记