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

c和java哪个难_为什么说 C 语言比 Java 难?现有答案都提出了各个方面的观点 我觉得很多都挺有道理的 我这里努力总结整理一下 从学习角度上说 很多人认为 C 语言单纯简单 其实比 Java 要容易 我认为 如果要把本质学懂 确实如此 而且在学懂 C 语言的基础上再学 Java 的人往往会获得很好的效果 Java 中由于隐藏了内存分配的处理 反而不如 C 语言在内存管理上来的直观 从应用角度上说 还是 Java 要容易很多的 主要体现在以下几点 内存管理 C 语言需要自己申

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

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

从学习角度上说,很多人认为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语言难度要大一些了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217006.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:33
下一篇 2026年3月18日 上午10:34


相关推荐

  • 传统图像处理算法总结

    传统图像处理算法总结1.图像滤波目的:保证图像细节特征的条件下抑制图像噪声。1.1线性滤波1.11方框滤波原图像与内核的系数加权求和方框滤波的核:normalize=true时,方框滤波就变成了均值滤波。也就是说,均值滤波是方框滤波归一化(normalized)后的特殊情况。方框滤波的缺点:丢失了图像的边缘信息。opencv函数:boxFilter(src,dst,-1,…

    2022年5月16日
    39
  • 软件项目管理流程总结

    软件项目管理流程总结转自 风尘浪子项目管理与软件开发的质量 效率 最终成果息息相关 本文主要讲述软件项目的风险评估 成本预算 客户沟通 需要分析 开发管理 成品交付等多个流程 在现今国内的项目的管理形式十分零乱 对管理欠缺重视 以致很多项目因为失去管理而最终折腰 很多的实战形人才只重视于开发环节 而对其他的流程欠缺认识 包括本人 因而导致项目欠缺有条理的 阶段化的管理 本人是一个典型的只重视开发的管理者

    2026年3月17日
    3
  • _beginThread如何传递多个参数

    _beginThread如何传递多个参数PS 对于一个 C 渣来说 能在网上找到简单直白的解释真的是不容易 有时候给几个简单的例子才是直击心灵啊 翻了那么多篇介绍 beginThread 传递多个参数的文章看到这篇的时候我都要膨胀了 233 原文连接 http blog sina com cn s blog 5357c0af0100 html 再次感谢博主 include lt process h gt incl

    2026年3月19日
    2
  • httpclient4下载图片 java实现[通俗易懂]

    httpclient4下载图片 java实现[通俗易懂]有时候需要从网上抓取一下图片jpg、png等,也可以抓取zip等,这样就需要写程序才能达到想要的效果,下面是用httpclient4做一个工具类,非常的好用packagecom.wamei.tool;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.FileOutputStream;

    2022年7月22日
    15
  • javaScript动画项目案例

    javaScript动画项目案例javaScript 动画项目案例示例代码 我的 github1 动画库编写匀速运动案例一 DOCTYPE tml htmllang en head metacharset UTF 8 metacharset UTF 8 head htmllang en

    2026年3月18日
    2
  • archlinux安装教程2020(archlinux更换国内源)

    主要为以下步骤:1.下载ArchLinux安装镜像并制作U盘启动工具2.开机从U盘启动3.进行联网4.编辑镜像站文件(选择一个比较快的中国镜像源)5.开始分区(UEFI+GPT)6.格式化分区,并挂载7.开始安装基本操作系统8.配置基础系统9.引导系统10.用户管理11.网络配置12.安装桌面环境13.安装完后的工作开始:1.下…

    2022年4月17日
    967

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号