一、C++、C、Go 中的如下语句:
struct xxx s1;
vector<int> v; (甚至会调构造函数!)
var ABC someType
其实会创建一个 能用的 对象!!、之后用他们进行操作基本上没什么大问题
但是在 Java 里、如果写:
ArrayList arr;
但是不去 new 一块内存并且分配的话、一用 arr 就会报空指针错误、这样写是不能用的!!
所以写多了 Java 代码、写 C系列代码总觉得用栈变量很不舒服、总觉得很危险、不完整、但其实用栈而非堆,可以防止忘了释放指针(Java中随便new、有GC)
但C++、C中还有个风险就是返回局部变量的指针给外面使用、但这个风险在Go里是没有的、Go又有指针、又有垃圾回收、在确实没人引用某个变量的情况下才会释放、挺逆天的。
二、C++、C 导 “包” 比较困难、h、lib、dll基本上是三座大山
Java可以用maven
go就离谱了、一个 import 完事了
三、C++、C 里的“框架”看起来很low、而且根本不像是框架、比如Opengl和SDL、而且数据的类型都千奇百怪(有些人喜欢char数组、有些人喜欢string、每个框架还都喜欢定义自己的宏、枚举、甚至命名方法各式各样:匈牙利、m_xxx g_xxx SDL_xxx
namespace::
总之、C++的代码里奇怪的符号和命名和 API 层出不穷、Go 和 Java 相对好点、但Java里一个类名能长的离谱、也挺恶心的
而 Go 或者 Java、如果是Web开发、那就关注每个接口怎么写、传入什么、返回什么就行了、根本不需要想太多全局性的问题、程序的难点在于分布式、在于数据库设计、"架构"、在于数据库驱动开发、数据结构是什么不需要你管、数据的存储基本只需要和数据库打交道(你在内存搞个复杂数据结构、其实很少见)
但 C++ 或者 C 离了数据结构和算法什么东西差不多都没法写。