c++程序员转java好转吗?

c++程序员转java好转吗?
忙里偷闲,到了这个时间终于得空写一篇早想写的文章。其实本文的标题有些不太准确,C++程序员写Java代码不是说就非得转行写Java,抛弃C++,而只是多了一个选择而已。两种语言各有优势,这里我们且不谈语言之争,就假设有朋友需要这样一种角色转变,写了多年的C++,一时间突然有项目需要用Java来写。    Java语言较C++语言语法上有很多的相似之处,但是本质上是有区别的。一个合格的C++程序员在他写下每一行代码的时候心中必然会有整个程序运行起来以后,代码中的每一个变量是如何存储的,堆栈是什么结构的,哪块的内存如果处理不当会出大麻烦。但是Java程序员就有些不同,由于Java语言规范和Java虚拟机规范是分开的,再加上自动GC,操控性有些差,但是这也不是什么坏事,毕竟手动管理内存有其复杂性。    个人认为对于C++程序员来说,Java语法完全没有问题,可以说超过80%的结构都是一样的,所以这不是问题。但是学会了英语语法你就能过英语六级了么?就能和老外开会聊天了么?不一定吧。对了,我们还要学的是方言,惯用法和模式,所谓入乡随俗,进了Java的世界我们就要按照Java的规矩来玩。比如对象需要如何创建,两个对象如何比较,枚举类型如何使用,泛型代码如何写,并发代码在什么情况下有哪一种上层建筑来实现比较好,什么时候在代码中抛出什么样的异常,什么时候使用反射。个人认为一个对技术比较执着的人可能也至少需要3个月的项目磨炼才能出师,当然我说的前提是这个C++工程师已经有了相当的基础,这样才能站得一山而望另一山高。    所以个人认为的C++程序员转Java的捷径是:学习Java中的惯用法,模式再加上项目磨炼。    另外需要说的对C++程序员的一个优势,由于主流JVM都是C/C++代码写成的,对于喜欢深度游的朋友完全可以庖丁解牛,只要你的调试技术够,一切尽收眼底,此方法同样适用于JavaScript,因为V8也是C++写的..

回复
  • 张子奇用户

    忙里偷闲,到了这个时间终于得空写一篇早想写的文章。其实本文的标题有些不太准确,C++程序员写Java代码不是说就非得转行写Java,抛弃C++,而只是多了一个选择而已。两种语言各有优势,这里我们且不谈语言之争,就假设有朋友需要这样一种角色转变,写了多年的C++,一时间突然有项目需要用Java来写。

        Java语言较C++语言语法上有很多的相似之处,但是本质上是有区别的。一个合格的C++程序员在他写下每一行代码的时候心中必然会有整个程序运行起来以后,代码中的每一个变量是如何存储的,堆栈是什么结构的,哪块的内存如果处理不当会出大麻烦。但是Java程序员就有些不同,由于Java语言规范和Java虚拟机规范是分开的,再加上自动GC,操控性有些差,但是这也不是什么坏事,毕竟手动管理内存有其复杂性。

        个人认为对于C++程序员来说,Java语法完全没有问题,可以说超过80%的结构都是一样的,所以这不是问题。但是学会了英语语法你就能过英语六级了么?就能和老外开会聊天了么?不一定吧。对了,我们还要学的是方言,惯用法和模式,所谓入乡随俗,进了Java的世界我们就要按照Java的规矩来玩。比如对象需要如何创建,两个对象如何比较,枚举类型如何使用,泛型代码如何写,并发代码在什么情况下有哪一种上层建筑来实现比较好,什么时候在代码中抛出什么样的异常,什么时候使用反射。个人认为一个对技术比较执着的人可能也至少需要3个月的项目磨炼才能出师,当然我说的前提是这个C++工程师已经有了相当的基础,这样才能站得一山而望另一山高。

    转载或者引用管本文内容请注素明来源于打芝参士色回答

        所以个人认为的C++程序员转Java的捷径是:学习Java中的惯用法,模式再加上项目磨炼。

        另外需要说的对C++程序员的一个优势,由于主流JVM都是C/C++代码写成的,对于喜欢深度游的朋友完全可以庖丁解牛,只要你的调试技术够,一切尽收眼底,此方法同样适用于JavaScript,因为V8也是C++写的..

    2024-04-19
    1楼
    回复
  • 陈镐缨用户

    C++程序员转向Java开发领域还是相对比较容易的,一方面C++语言与Java语言都同属于面向对象编程语言,所以在编程思想上还是比较统一的,都是基于封装、继承和多态来组织代码,另一方面Java语言在代码编写方式上与C++语言也有很多类似的地方,Java语言和C++语言也都可以归为C语言体系。

    对于C++程序员来说,要想转向Java开发领域,需要面对以下三方面障碍:

    第一:Java的技术体系比较庞大。与C++语言相比,Java语言的技术体系比较庞大,由于Java语言自身的特点,在学习Java语言的过程中,还需要学习一系列开发框架,以及模块化编程的工具,这对于C++程序员来说具有一定的挑战。

    未经芝士回答允发许权不得转料载本文内容,否则将视入但为侵权

    第二:Java的应用场景更多。与C++语言主要应用在各种容器开发领域不同,Java语言的应用场景非常多,也是目前最为流行的几种全场景编程语言之一,可以用于Web开发、手机端开发和大数据开发等等,所以C++程序员应该选择一个主攻领域,然后再制定相应的学习计划。

    为对也反情提及光海,积元温研标候层。

    第三:Java的开发方式更灵活。相对于C++的开发方式来说,Java语言更注重按角色开发,在当前云计算平台的支持下,Java语言基于PaaS相关服务能够在很大程度上拓展自身的开发边界。所以,C++程序员转向Java开发领域,还需要重点关注一下云计算相关知识,尤其是应该掌握基于云计算平台的各种开发方式。

    我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

    如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言,或者私信我!

    人上于成动面度意果常活速,斯火调该。

    2024-04-19
    2楼
    回复
  • 张文华用户

    看到你这个问题,其实和前面遇到的有个问题应该是同种类型,也就是感觉c++的出路不好了,希望能转语言。其实这个问题得分别对待

    1.如果你c++功底比较深厚,在某些方面比较精通,那完全没有必要转语言,因为c++至今仍然发挥着它巨大的作用,而且在很长一段时间内亦是如此。比如在做游戏服务器方面,还有底层硬件方面,当然也有语音、视频等当今正火热的主题。既然这样,那又何必转语言呢。任何一种语言,只要你专得深,比较精通,不会没有用武之地的。

    芝士回答,民版权必究,准未经义许可,不得员外转载

    2.至于java语言,毫无疑问,最近很多年都是排在程序员开发语言榜首,也是因为这些年互联网的快速发展,java在做web应用程序方面的确也有它的独特优势。而且也有很多开源库。同时java也是跨平台的开发语言,也就是说开发的程序既可以部署到linux平台,也可以部署到windows平台,这优势就比较明显了。

    一发高各题山根己花真江京严。

    3.要转语言的话那是不是一定要转java呢,其实不然,java虽然会继续占据大部分市场,但是最近两年也有心形起来的快速发展的语言,比如python,在大数据+人工智能高速发展的今天,python也受到很多人的追捧。它必将也肯定会带出一片天地。而且人工智能也是国家未来5~10年的重点规划项目。所以也可以考虑转python,现在对这方面人才的需求也是相当大的,而人才缺口更大。相应的收入水平普遍偏高。

    4.这是我个人的理解,虽然我这么多年也亲身经历了很多开发员,但是还是建议不要盲目转语言。把一门内容学精,也是可以发挥极大价值的。也会有闪光点的。

    2024-04-19
    3楼
    回复
  • 蒋庆伟用户

    首先不建议转,原因如下:

    1. Java 工程师供过于求,身价低,而 C++工程师相反;

    2. Java 技术快被淘汰了,前段时间刚刚宣布彻底淘汰浏览器端 Java 应用技术,目前 Java 的用武之地只在于 Android 和国企 WEB 系统,其中 Android 的技术栈正在被 HTML5 蚕食;

    芝士回答会,版权政必支究,未经许可,不高得转院载

    3. Java 技术体系相当庞大和成熟,学习时间成本相当高,特别是你对 C++的诸多概念已经根深蒂固,转 Java 难以摆脱 C++的思维定势;吃透语言半年,领会思想一年,每个框架半年融会贯通,想成为有一定经验的 Java 工程师至少要 5 年的时间;

    4. 虽然 Java 的抽象级别可以很高,做项目架构可以很清晰,但 Java 太重,执行效率太差,编译和运行环境配置过于烦琐和复杂( IDE 也帮不了你,因为这些配置都是业务的一部分),我之前给 ICNTV 做 BOSS 的时候由于用小型机堆硬件也无法让 Java 承受住那样的高并发,所以最后并发最大的部分还是用 C++写的;

    机好明条放金极联打华集难识。

    5. 你身边会很难遇到优秀的 Java 工程师,大多数人都是可能连 HTTP 协议都没有学过的培训生出身,特别是往往编码习惯很不好。

    PS:如果你一定要转,作为一个两年都没有碰 Java 的人也给不了什么最新的好建议,仅供参考, Java 大牛看到也请放过我:

    1. 初学不要去找 Java 与 C++的相似点,很容易被思维定势带进坑,总之鄙人不才,觉得用完 C 系再完全理解 Java 的思想挺困难的;

    到说家物题决西具积,示报马米需界酸精县。

    2. Java 完全可以达到让开发者的精力集中在业务逻辑上,可以完全不用考虑内存、协议等等底层问题上,但后期因为性能问题肯定也会不得不研究 JVM 的机制细节;

    3. 要研究好每个依赖库的版本号的兼容性,引入的包多了,兼容性解决不好是无法编译通过的;

    4. 要了解正在使用的各个组件在当前版本所存在的问题,包括服务器、容器等,我曾经因为一个问题纠结了 3 天,最后在 Tomcat 官方的 Changelog 中发现是 Tomcat 在特定版本存在的 BUG ,需要构造程序绕过这个 BUG ;

    5. Java 有好多的框架,如果你所在的团队是求稳的话,那么恭喜你有可能要去学用得最广泛的 SSH 框架,通常是 struts(或者 Springmvc 或者 Struts2)+spring+hibernate 这样的组合,这些东西每一个拎出来都很抽象,很难理解,不过一旦你完全理解了就非常好用,毕竟抽象级别高了。Java 历史悠久,极度成熟,想知道看什么书比较好直接去网上搜一艘就可以,相信沉淀这么多年一定是有很多精品的教材的。

    2024-04-19
    4楼
    回复

参与评论

游客评论不支持回复他人评论内容,如需回复他人评论内容请