c++转java,是什么感受?
刚开始,你会想,对象复用啊,怎么老是new啊,释放没有啊。arraylist内部怎么实现的啊,到底是连续内存,还是非连续啊,我怎么做回调函数啊,***,那个异步线程池是不是动态啊,妈的,定时器的线程是不是在无脑循环啊,我去,居然不用我写框架,有现成的spring……总之,当时,用的时候,是既不放心,又觉得爽。
我做了5年的C++和c 两个项目 。因为公司项目变更转到Java可 刚做客户端还好 ,后面做服务端了 感觉这里面变得很多 总要学人家的第三方的框架。 不舒服。 不过转起来到时很快 ,基本就是几天就转过去了。
搞C++的和搞JAVA的能在一起吗?
用c/c++可以按照一定的规则写出dll文件,而这个dll文件可以被j***a调用,这种技术被称为jni,可以实现j***a和c/c++的通讯,也可以让j***a访问底层,或者将对性能要求较高的逻辑用c/c++实现,综上所述,j***a和c/c++是可以在一起的。
J***A、C、C++、Python同样是高级语言,为什么只有C和C++可以编写单片机程序?
单片机能否提供程序所需的运行环境决定了某种语言能否用于单片机程序的开发。单片机的总线宽度决定了单片机存储空间的大小。其中,拥有32位总线的单片机的存储空间可达4GB,装个Linux差不多可以跑各种程序了。这里我们只讨论总线宽度在16位以下的单片机。
单片机上没有I/O设备,只有I/O接口,程序要以机器码的形式写入随机存储器(就是PC的内存)。主流单片机的总线宽度一般是16位,比如,51单片机。存储器空间最大能做到64K。一些单片机的存储空间只有256个字节甚至更小。这么小的存储空间容不下操作系统,所以能在单片机上跑的程序都得是原生的机器码。C/C++都能直接编译成原生的机器码程序,因此,广泛用于单片机程序开发。J***a需要虚拟机,基本上不能在单片上运行(JVM有几百M)。Python可以编译成C语言的原生程序,有可能在单片机上运行。但是,Python的程序里一般都带着一庞大的标准库,简单移植到单片机上不太可行,需要做一些定制化改造才有可能。这类语言不能移植到单片机上的原因主要是他们为了能在不同的操作系统上移植,使用了独立的运行环境,而这个环境的体量太大装不到单片机上。
最后科普一下高级语言的概念。机器码被称为第一代语言,汇编被称为第二代语言。其他语言都是高级语言。C/C++是第三代语言。J***a和Python被称为3.5代或者是第四代语言。主要是因为他们废除了内存操作指令。还有更高级的语言,SQL因为没有了变量定义(准备内存空间)被称为第四代或第五代语言。
C和CPP是编译型语言,也就是可以生成exe文件直接放在单片机内部运行的,其他解释型语言需要解释器放在单片机内部而且要与单片机对接才行。第一占空间,第二影响运行速度。
菜农从1981年开始就涉足与嵌入式领域的编程,开始是汇编语言和宏汇编语言,后来是C语言及C++语言,其他语言可能有,但很少且无大出路。
因为嵌入式领域的编程与硬件有关,特别是芯片里的中断向量即函数指针,而C和C++被其他编程语言攻击和被抛弃的就是函数指针!
而嵌入式领域最需要的就是函数指针,它与结构和联合,可以构成“COM接口技术”,为芯片的中断向量或函数指针即地址加密。
而其他编程语言大多没有函数指针,故无法满足嵌入式领域编程的特殊需要,故以后或永远不可能完全替代C或C++,除非他不想保护他的代码被篡改或产品的克隆。