包含各种偏见和武断,请谨慎阅读。

为什么在学校学习的C,拿到企业生产中不起作用?

而为什么企业级的程序员,依然对C/C++无法掌控?在算法各方面不够精湛?

根本原因还是应用场景的不同。企业级的开发,主要是为了能够快速出活,能够快速将业务需求转换为可执行的代码,立马部署上线开始工作。这就需要Java这样的重型机枪。在这里,重点是能够快速地做出一个“转换”,把复杂的business model快速转换为代码的“表达能力”。

而C/C++所解决的问题,其实更多的是底层,也就是为上面的“快速构建”和“客户需求的转换能力”,提供底层库的支持。所以,它的视角和范围,根本不是去关心如何表述客户的业务需求,它也不擅长去表述业务需求关系。

它真正擅长的是表述计算机的运转关系!所以在这个层级,你的算法各方面就开始有了用武之地。因为在这个层次上,你的优化、算法的效率,都和计算机如何运转息息相关。例如:你的代码如何被加载进内存,在CPU内又是如何调用相应的指令集,内存分配上又会经历哪些过程,这一个个的环节都关乎你想要去追求的效率。

另一方面,高层语言和底层语言又是相互结合的:上层的Java这些确实善于描述business model,但是,没有底层库的支撑,它的表述无异于一纸空文。

而下层的库,如果没有上层的语法糖和high level的抽象,就不得不一直局限在计算机无尽的运转细节里,永远无法跳出来,为经济生产、为解放生产力、发展生产力的现实用途服务。

所以,回到最初那个问题,为什么你学校学习的C那些在企业级生产中不管用?因为它的适用范围是为了解决计算机底层的问题。而企业级应用的高级程序员,他擅长的其实是快速准确地把现实的客户诉求,转换为可工作的代码,并能够掌控大规模的代码量,这是他的核心竞争力。但他其实少有关注底层的实现,少有去关心如何配合计算机的机械性地运作方式。

基于此,很多人对语言的评价是极其不中肯的。

有的人说,Java真是简单,傻瓜式的语言,没啥意思。可这就完全搞错了重点,简单易学,正是能够快速表达客户需求的一个大前提。而精髓呢?精髓是看你如何运用这个工具,一方面能够精准地表述出实际的业务模型,另一方面是看你能够用这个工具,能够如何巧妙地组织各个模块,使得它们能够具备扩展性、可重用性,从而能够应对快速变化需求的挑战。

另一部分人说,C太不安全了、没法做好的异常、没法做精准的泛型、更无法做漂亮的继承。可是,C的应用范围就是底层啊。这里提到的一堆面向对象的理念,其实是现实世界的运作思维模式,但这个不是计算机机械式的思考方式。机械式的思考模式,就是汇编、就是语句跳转、就是内存分配。在这个体系里,其重点就是为higher level制造工具,为你设想的那些面向对象的思维概念制造工具。

这就好比是,你拿到的是一块原木,你非得去抱怨,它怎么不长成圆盘形,为什么不长成方形,为什么不长成螺丝帽的形状,这都不能用好吧?!这TM不废话么!你的工作不就是对这些天然的原木做工,把它们制作成可以供其它生产环节使用的工具么。

一个是快速地开发出一个程序,另一个是开发出快速的程序。这就是本质的差别。

前者需要的是贴近人的、现实的思维模式,需要用到的从现实到计算机的转换越少越好。

后者需要的是贴近计算机的思维模式,越是能够从计算机运转机制角度思考问题越好。

近期回顾

减法 、认知、核心
一次艰难debug的反思
J2EE导论 | 疑惑篇

如果你喜欢我的文章或分享,请长按下面的二维码关注我的微信公众号,谢谢!

更多信息交流和观点分享,可加入知识星球:

编程语言吐槽之Java与C的更多相关文章

  1. 2016年1月编程语言排行榜:Java荣获2015年度冠军

    Java因于2015年人气增幅最大(+ 5.94%),故获得2015年的TIOBE指数的编程语言奖,同时成为15年年度冠军, Visual Basic.NET(+ 1.51%)和Python(+ 1. ...

  2. 【转载】2015年8月编程语言排行榜:Java遥遥领先

    Java以4.5%的差距遥遥领先于第二名,回顾以前Java有这样的成绩还是在2008年.Java version 8的成功主要是因为函数式编程习语的添加.Java出现下滑是在2010年 Oracle收 ...

  3. 5 月编程语言排行榜:Java第一,R跌出Top20

    我们都知道,最近,TIOBE 发布了 5 月份编程语言排行榜.其中,前三名依然健稳不变,他们分别是 Java.C.C++,第四则为: Python ,第五则为 VB .NET. 下面两张图,我们可以看 ...

  4. 少儿编程崛起?2020年4月编程语言排名发布——Java,C,Python分列前三,Scratch挤进前20

    前三并没有什么悬念,依然是Java,C,Python.C与Java的差距正在缩小,不过我们不用担心,在大数据分析领域Java,Python依然都是不可或缺的. 基于图形的基于块的编程语言Scratch ...

  5. 吐槽,Java 设计的槽点

    今天不灌水,直接上干货!希望下面的讲解,能与你产生一些共鸣. 1. 求长度各有千秋 你是否曾经在面试的时候,经常被问到:数组有没有 length() 方法?字符串有没有 length() 方法? 集合 ...

  6. 卧槽!最新编程语言排名,Java 沦为老二。。

    2020 年 9 月刚过去,栈长看了下最新的 tiobe 编程语言榜,牛逼啊,C 语言居然登顶了,Java 下降 3 个点,沦为老二的位置. 数据来源TIOBE: https://www.tiobe. ...

  7. 编程语言拟人化:Java、C++、Python、Ruby、PHP、C#、JS!--隆重推荐转

    http://next.rikunabi.com/tech/docs/ct_s03600.jsp?p=002412 Java.C++.Python.Ruby.C#.PHP.JavaScript.7つの ...

  8. 打字练习-编程语言关键字系列-java

    小编整理的java关键字,内容如下:abstract, assert, boolean, break, byte, case, catch, char, class, const, continue, ...

  9. C#与.NET Framework c#编程语言,和java是一样的。(c#,java) -->javaweb,asp.net

随机推荐

  1. SUBMIT WITHOUT ALV

    data:seltab type table of rsparams, seltab_wa like line of seltab. define add_seltab. if &1 is n ...

  2. 4-21 嵌套选择器 、块级元素和内联元素、光标、布局-overflow

    1.嵌套选择器 p{ }: 为所有 p 元素指定一个样式.(默认,,也就是说可以被改变样式) .marked{ }: 为所有 class="marked" 的元素指定一个样式. . ...

  3. Linux(centos)下安装JDK

    安装 JDK是运行java程序必不可少的环境,服务器上跑程序也不例外.首先在安装之前,要知道Linux下安装软件有两种,一种是使用yum等命令直接下载,一种是使用上传下载工具,上传至Linux下使用, ...

  4. 53-java中的queue

    java.util 接口 Queue<E> 类型参数: E - collection 中所保存元素的类型. 所有超级接口: Collection<E>, Iterable< ...

  5. .Net圈子里的一些看法

    金三银四招聘季,不一定一定要跳巢,但是出去看看行情还是有必要的,所以就有这篇随笔. 首先,这里说的.Net圈子是只两个方面 第一,技术人才,属于人的圈子 第二,技术本身,技术的圈子,也就是技术所涵盖的 ...

  6. Redis分布式缓存

    Redis 主 slave 数据库优化-- 加inex, 分区 JVM调优--参数设置,比如偏向于计算的如何设置? 线程池:queue放满了之后,有什么方式能让他不拒绝掉?blockqueue就等在那 ...

  7. MUI手势锁

    通过mui提供的手势锁插件实现,手势锁样式.存储需要自己完成. 1.样式展示 2.实现 2.1 html 需要一个div容器 <div class="mui-content" ...

  8. 有关在Eclipse中安装STS(Spring Tool Suite)的若干问题总结

    1.之前说明 在网上找了很多安装的方法,每次在线安装总会出现各种各样的问题,本地安装也是出现同样的问题(后来发现是下载的包有问题) 还有其他问题(忘记截图了,上图来自网络),大概就是这些各种各样的错误 ...

  9. 快速解决PL/SQL Developer过期问题(无需注册码等复杂操作)

    第一步:在开始菜单中输入 :regedit  的指令,点击回车,进入注册表编辑器界面 第二步:在注册表里按HKEY_CURRENT_USER\Software\Allround Automations ...

  10. 如何方便的在windows测试python程序

    听说python的网页抓取模块很强大,我想试试看看能给我的网络优化工作带来什么大的帮助,于是跟随廖雪峰老师开始学习python(地址查看),因为我用的是window系统,这就给程序的测试带来了很多麻烦 ...