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

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

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

从应用角度上说,还是Java要容易很多的。

主要体现在以下几点。

1.内存管理

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

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

2.应用库

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

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

3. 跨平台

C语言是不具有二进制级别的跨平台性的。你在Linux上使用C语言和在Windows上使用C语言,所用到的编译器不同,涉及到与系统相关的调用,涉及到的函数、数据结构都会不同。这让C语言在跨平台开发的时候工作量成倍增加。不仅仅是跨操作系统,即便是同一种操作系统,总线位数不同,也会影响C语言的表现。

早期电脑都是16bit的操作系统(当然更早期还有8bit等更古董的),后来普及了32bit,现在基本都过渡到了64bit。每次升级,都可能让很多当年设计的不是很好的C语言代码完蛋。

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

为什么说 C 语言比 Java 难?

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

围棋和象棋比较,围棋的规则相对简单,就两种棋子,棋盘上哪里都可以放子,一片子没有气就死了。虽然为了解决争议还有例如打劫之类的规则,但比起象棋兵种众多,每个兵种移动方式还不同,遇上国际象棋那种同一个兵种走路和杀人的时候步法还有差异的,动不动老王跟城堡就瞬间移动一下的规则,围棋的规则不可谓不简单。

然而,AI在象棋上战胜人类是在1997年,AI在围棋上战胜人类是在2018年?我觉得是否真的战胜了可能目前还有争议。足可见两者难度的差异。 C语言和Java也是类似的,越是规则简单的C语言越是难以掌握。

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

但是C语言的重要性依然还是不言而喻,作为编程语言的基石语言,想要深入了解编程,想要学习其他编程语言,你在先学好C语言之后,再入手学习其他编程语言就是相当于你掌握了武学的精义,其他的你都能够快速的掌握学习。

是我的个人经验分享,谢谢你的阅读,希望能帮到你呀!

大学想提升你的编程能力,成为一个强大的程序员找到一份好工作吗?不妨和一些志同道合的小伙伴一起学习成长!

学习C/C++编程知识,提升C/C++编程能力,欢迎关注UP一起来成长!另外,UP在主页上传了一些学习C/C++编程的视频教程,有兴趣或者正在学习的小伙伴一定要去看一看哦!会对你有帮助的~

java语言c语言基础_新手入门选什么:有些人说C语言要比Java更难!你应该怎么办?...相关推荐

  1. JAVA中的request用法_新手入门:介绍JSP中request属性的用法

    一.request.getParameter() 和request.getAttribute() 区别 (1)request.getParameter()取得是通过容器的实现来取得通过类似post,g ...

  2. java实现子序列最大和_算法入门:最大子序列和的四种算法(Java)

    最近再学习算法和数据结构,推荐一本书:Data structures and Algorithm analysis in Java 3rd 以下的四种算法出自本书 四种最大子序列和的算法: 问题描述 ...

  3. 第87节:Java中的Bootstrap基础与SQL入门

    第87节:Java中的Bootstrap基础与SQL入门 前言复习 什么是JQ? : write less do more 写更少的代码,做更多的事 找出所有兄弟: $("div" ...

  4. ps基础教程新手入门第一篇:ps界面的介绍

    欢迎来到慕恬瑶平面设计,今天给大家介绍PS基础教程新手入门第一篇: ps界面的介绍.目的让第一次接触ps的小伙伴通过ps基础教程新手入门来了解ps界面的菜单栏,工具栏已方便日后使用. 首先,打开PS ...

  5. java基础代码怎么学_新手入门Java,如何能学好

    原标题:新手入门Java,如何能学好 零基础学生只要方法得当,完全可以掌握Java编程.下面总结出来的几点学习Java的方法,仅供大家参考. 01.理解Java思想 Java是一门面向对象编程语言.向 ...

  6. Java基础 (适合新手入门保姆级)

    基础1 1.进制的转换 1. 十进制数据转成二进制数据:使用除以2获取余数的方式 2. 二进制(0B/b开头)转换为十进制:1001 = 1*2^0+0*2^1+0*2^2 +1*2^3 = 9 3. ...

  7. C语言学习笔记知识点齐全——新手入门必看【建议收藏】

    终身受益的700个网站[史上最全]--建议收藏"卑微的小丑"总有一个可以帮助你!!! https://blog.csdn.net/liu17234050/article/detai ...

  8. c语言遍历文件内容_编程语言安全性排行榜:Ruby 最佳,C 语言漏洞最多

    来源|WhiteSource 译者|田晓旭 编辑|Debra AI 前线导读:IT 技术圈有一个永远无解且有争议性的问题,那就是"谁是最好的编程语言?"事实上,由于各种编程语言的特 ...

  9. c语言goto语句用法_硬件工程师必知的10个C语言技巧

    硬件设计师最常见的工作内容是通过写代码来测试硬件.这10个C语言技巧(C语言仍然是常见的选择)可以帮助设计师避免因基础性错误而导致某些缺陷的产生并造成维护方面的困扰. 为了成功的推出一个产品,软件开发 ...

最新文章

  1. 用了这么多年 Spring Boot 你知道他爹有多大背景吗?
  2. 【51nod】2590 持续讨伐
  3. lisp xy轴不等比缩放_不就是用Python做个动态图吗?看招
  4. C++ 如何一次在堆上申请4G的内存?如何设计一个类只能在堆或者栈上创建对象?
  5. js中类型识别的方法
  6. 我们边吃曲奇边聊——Cookie与Session那些事
  7. oracle exp调过坏块,无备份坏块处理(跳过方式)
  8. mysql在bin下运行mysqld_关于MySQL安装目录bin下工具的详解
  9. RabbitMQ学习笔记:安装环境
  10. php监控nginx,zabbix php nginx 监控搭建
  11. ionic引用自定义html,pipe - Ionic 4自定义管道可以在app.component.html中正常工作,但不能在其他.html页面上工作(在.ts文件下工作) - 堆栈内存溢出...
  12. 如何按行政区划下载谷歌卫星地图并裁剪
  13. 【盘点】电影中八大邪恶的超级计算机
  14. 计算机管理能看到移动硬盘,我的移动硬盘 在我的电脑和 磁盘管理 中都看不到,只能在设备管理器的磁盘驱动器中能看到,怎么恢復啊...
  15. xpwifi热点设置android,笔记本xp系统wifi热点设置教程(图文)
  16. ANSYS 有限元分析 修改与编辑
  17. pta 循环——首字母大写
  18. vue 微信html,vue 实现微信端网页分享
  19. 中小型企业Web开发框架
  20. 【杂烩】各种MarkDown 符号

热门文章

  1. 开源监控系统Prometheus介绍
  2. 排序sort,统计wc
  3. linux下编译C++程序无法链接Mysql的问题
  4. 重温数据结构——(1)
  5. 完美解决IE6不支持position:fixed的bug
  6. 两个ExtJs可视化设计器
  7. 将视图状态存入数据库(3)
  8. Link error 1112
  9. hdu(杭电oj)输入输出练习题目总结
  10. [转]WTL的windows mobile环境的配置(vs2008)[最终版,验证通过]