现有答案都提出了各个方面的观点,我觉得很多都挺有道理的。

我这里努力总结整理一下。

从学习角度上说,很多人认为C语言单纯简单,其实比Java要容易。

我认为,如果要把本质学懂,确实如此,而且在学懂C语言的基础上再学Java的人往往会获得很好的效果。

Java中由于隐藏了内存分配的处理,反而不如C语言在内存管理上来的直观。

从应用角度上说,还是Java要容易很多的。主要体现在以下几点。

内存管理

C语言需要自己申请内存,自己归还内存,总之什么事儿都得自己操心。你得记得自己在哪里借了内存,还得搞清楚自己现在这个指针是指向Stack里的内存还是Heap里的,Stack里的还得记得啥时候作用域没了……总之,步步惊心,一不小心就要年底被黄世仁讨债了。

而Java的内存管理,有了垃圾回收这个大妈帮着管了,你就只管借不用管还了。用完了往门口一扔,到时候自己就有人来拿回去了。

应用库

C语言相关的应用库也不能说不多,但比较杂,而且由于C语言的应用领域跟Java本身就不一样,所具有的应用库也不同。从提问者的说明来看,主要是指Web开发。那么要用C语言写一款应用服务器的话,通常可能要自己来学习HTTP协议、XML/JSON解析、还要自己研究内部的路径路由……总之一大堆破事儿等着处理。

Java在这方面优势要明显很多。你提到的JavaEE,Struts2,Hibernate,Spring等等都是现成的框架,你只需要按照框架规定填写业务逻辑就好了。解析HTTP协议之类的底层处理,框架都给你做了。所以,这里你的问题里提的不对等,C语言不学这些,只是老师没打算让你用C语言做Web应用罢了。如果做,你要学的知识会成倍增长的。

跨平台

C语言是不具有二进制级别的跨平台性的。你在Linux上使用C语言和在Windows上使用C语言,所用到的编译器不同,涉及到与系统相关的调用,涉及到的函数、数据结构都会不同。这让C语言在跨平台开发的时候工作量成倍增加。不仅仅是跨操作系统,即便是同一种操作系统,总线位数不同,也会影响C语言的表现。早期电脑都是16bit的操作系统(当然更早期还有8bit等更古董的),后来普及了32bit,现在基本都过渡到了64bit。每次升级,都可能让很多当年设计的不是很好的C语言代码完蛋。

Java语言自诞生之日起就以跨平台为宣传口号。虽然实际效果没有宣传的那么美好,但也确实大大降低了开发工作量。虽然随之而来的性能问题也一直被各方面诟病。在跨平台上,Java的优势极其明显。

规则

C语言的规则相对简单,规矩相对少。而这恰恰加大了使用难度。

围棋和象棋比较,围棋的规则相对简单,就两种棋子,棋盘上哪里都可以放子,一片子没有气就死了。虽然为了解决争议还有例如打劫之类的规则,但比起象棋兵种众多,每个兵种移动方式还不同,遇上国际象棋那种同一个兵种走路和杀人的时候步法还有差异的,动不动老王跟城堡就瞬间移动一下的规则,围棋的规则不可谓不简单。然而,AI在象棋上战胜人类是在1997年,AI在围棋上战胜人类是在去年?我觉得是否真的战胜了可能目前还有争议。足可见两者难度的差异。

C语言和Java也是类似的,越是规则简单的C语言越是难以掌握。

综上来看,C语言在使用上的难度要大大高于Java。在学习时,因为计算机是一门使用科学,如果学了不会用,基本等于没学,所以最终还是会落到使用难度上,如果要学到能做出同类东西的水平,自然是C语言难度要大一些了。

c和java哪个难_为什么说 C 语言比 Java 难?相关推荐

  1. c++和java哪个难_为什么说C语言比Java难?

    C/C++,它和Java确实不太一样.C语言和C++,语言性能虽然高,但语言本身确实很难,我们更愿意称它"造轮子"的语言!也正是因为C语言和C++性能好.粒度细,所以什么都能做,只 ...

  2. c和java哪个好学_编程入门学习c++和Java哪个比较好

    编程入门学习c++和Java哪个比较好 发布时间:2020-04-25 16:54:41 来源:亿速云 阅读:231 作者:栢白 编程入门学习c++和Java哪个比较好?如今这些都是小白比较关心的,如 ...

  3. java自学难点_分享在达内教育培训Java的感受

    刚在达内教育培训完java,给即将来培训以及已经在培的学员分享下我的感受 回想一下在达内教育学习Java时的情景,我仍然兴奋不已,其实在刚接触Java时,自己确实有点晕,但经过一段时间学习,逐渐走出了 ...

  4. java俄罗斯方块视频_[VIP视频]【A0233】java面对对象编程-俄罗斯方块视频教程 高清视频 百度云 百度网...

    Java视频教程名称:java面对对象编程-俄罗斯方块视频教程  俄罗斯方块视频教程 $ X0 X1 Z: W4 P3 T  e. m3 q百度网盘下载链接: . M% x- I- V5 p( J 游 ...

  5. java设备发现_使用wifi发现移动设备 - java

    我正在为网络论文做一些工作,但遇到了一个小问题.我必须做的第一步工作之一是让一台计算机作为AP工作(为此我正在使用hostapd),并使用它来检测房间中当前打开了wifi的所有设备(不需要与任何AP关 ...

  6. java火箭应用_从C++入手,探寻java的特点

    java的特点 java语言建立在成熟的算法语言和坚实的面向对象理论的基础上,具有强大的应用系统设计能力,其具备的跨平台特型,其具备的跨平台特型.面向对象和可靠性.安全性等特点是它能够充分适应网络需要 ...

  7. java 底层运行_从表面到底层丨Java和JVM的运行原理,现在带给你

    Java,编程语言,被创造于90年代初,在经历了这么多年的风风雨雨,Java已经成长为世界第一的编程语言,根据往期以及目前的数据来看,Java的使用频率为全球第一,即使偶尔会有第二第三的情况,但是这依 ...

  8. java xslt 数据转换_如何将xslt结果转换为Java对象?

    我有一个 XML文件: Empire Burlesque Bob Dylan USA Columbia 10.90 1985 而这个XSL文件: 现在我想将结果转换为Java类. Java的: @Xm ...

  9. java测试开发_测试开发系类之Java常用知识点

    测试需要的两门语言:Java,Python 测试开发:开发测试脚本->开发测试框架 Java需要掌握内容:基础语法.Java面向对象相关概念.Java常用类.基础测试框架 Java常用类:IO相 ...

最新文章

  1. Python 打包 exe 程序避坑指南:没有安装包也能运行小程序啦~开心
  2. Android读取/dev/graphics/fb0 屏幕截图
  3. Python读取Json字典写入Excel表格的方法
  4. 华为云技术开放日(第三季)话题介绍和直播群入口
  5. npm 开发中 常用依赖包
  6. 信息安全系统设计基础第四次实验报告 201352012013530620135307
  7. 《设计模式》模板设计方法——面条非常香
  8. 新人学习web前端必须要知道的基础知识,让你轻松入门
  9. (一)Nand FLASH 原理讲解
  10. 巧用“搜索”解决自学编程遇到的难题
  11. [开源]快速构建验证码
  12. 一个产品经理的工作经历与总结
  13. 2017年终总结——恍恍惚惚又一年
  14. ASML即将陷入困境,该对中国市场下定决心了
  15. 初来乍到,余生请多指教
  16. native数据类型 react_react-native中使用realm数据库
  17. 互联网“晒娃”安全须知
  18. IDEA主题配置--- 炫酷的主题字体颜色设置(基于Intellij IDEA 2018)
  19. 【SpringBoot教程】SpringBoot开发HTTP接口GET请求实战
  20. 单模光电转换器怎么接_光纤收发器怎么连接?光纤收发器安装图解大全!

热门文章

  1. 【计算机科学】【2013.05】轮式机器人路径规划与进化优化
  2. 免root安卓11也可以用的闪照获取软件
  3. 去掉U盘写保护 30D00:请使用特殊版本量产工具
  4. 智能宠物玩具行业调研报告 - 市场现状分析与发展前景预测
  5. 全国信息联赛c语言,【NOI】全国青少年信息学奥林匹克竞赛
  6. 计算机信息技术奥赛实践,我校计算机科学与信息技术学院学生在黑龙江省大学生程序设计竞赛中取得优异成绩...
  7. [ros基础] --- roslaunch使用详解
  8. MySQL数据库自动生成大批量数据
  9. html打开本地xml文件怎么打开,如何导入打开xml文件?xml文件怎么打开?
  10. 在字符串中找出连续最长的英文字符串