一,前言

对我来说,C语言应该可以算得上是世界上最伟大的编程语言。全中国口气最大的程序员,业界称之为“垠神”,曾经发过文章吐槽过业界各种主流的编程语言(对Java,的Python稍微宽容一些),他说Go语言设计有错误,Ruby是垃圾,JavaScript是垃圾中的垃圾。但我看他对C语言却没发表过什么负面言论。

C语言

之前参加Go大会,演讲的人许多都在说受不了C语言了,它动不动就爆内存,为了提高系统稳定性与可维护性他们把原有的逻辑用Go语言重写了一遍,这应该是一个正确的策略,并不是C语言不适合大项目,而是要掌控好这门编程语言实在太困难,一个公司很难保证招聘的所有员工都牛逼到考虑到如此之多的内存管理情况,难免引入一些有内存泄露隐患的代码,与其在这里面死磕还不如换一种更好掌控的语言,这或许更符合公司的发展需要。

C语言没有垃圾回收,需要自己去管理内存释放内存,而这点对于现代程序员来说确实有点难以接受。除此之外语法过度严谨,定义方法之前都需要预先声明,指针操作难以理解这种种麻烦事也导致了C语言的市场份额(应该这样说)渐渐被其他语言所占去。不过我觉得以上种种麻烦事也是C语言的魅力之处吧。它能让我们可以更加直观地与计算机系统打交道,让我们可以更加清晰地了解到一个程序运行的时候发生了什么事情,我们哪些方面需要系统的接口支持,我们能够清楚自己需要分配多少内存空间等等等等。

二、我们往往忽略了它的存在

对于许多计算机系的同学来说C语言可能就是噩梦,以至于他们遇到Java的时候就如同找到一根救命的稻草。经济快速发展的今天C语言似乎渐渐失去了昔日的荣光,在语言排行榜上的第一名的位置已经让给了Java,游戏领域C++已经占有了一席之地,Web领域,Ruby,Go,Python,JavaScript这些语言各自占着不同比例的“市场份额”。那问题来了,C语言是否还有市场?。

让我们透过现象来看看更本质一点的东西,目前承载着我们生活的大部分技术其实都跟C语言脱不了关系。比如,Python,Ruby这些流行编程语言的解析器,目前使用最广泛的服务端操作系统--Linux的内核,以及我们目前用得最多的版本管理系统Git,他们都是大神们用C语言编写而成,只是我们平时看不到C的存在罢了。或许它已经被编译成二进制代码,可以直接在命令行直接运行,或许有些人给你提供了友好的用户界面,让你们看不到在背后默默支撑他们的人。或许有人用它实现了其他更加高级的编程语言(如Ruby,Python,Lua),让你沉迷于这些语言的语法糖的时候忘记了它的解析器是由谁来实现。

如此看来就有点像是前端开发跟后端开发的关系那样,个人觉得后端工程师往往需要承担比前端更加大的工作压力,他们编写的代码支撑着我们系统最关键的部分,但是人们往往只能关注到他们能够直接触碰的东西(可供用户使用的UI界面),却忘记了为了支撑他们所见的这个页面背后默默运行着的服务端代码。C语言实现了许多主流语言的解析器,而我们基于这些编程语言实现了很多了不起的网站,App,而它自己(C语言)却渐渐淡出了人们的视线在背后默默运行着。

三、你可以学会它

C语言难,是真的难,他是很多大学教计算机课程的“守门”语言,为何说是守门语言?大学老师美其名曰:“用它来吓跑那些对在计算机领域混水摸鱼的人(说得好像他自己不是在摸鱼似的)。”这确实有点用,说实在这也吓走了一些人,我自己也被它吓跑过。

C语言是难,但个人觉得并没有老师说得那么玄乎,如果真如老师所说理解不了指针的人就不适合干这行的话,那我早就该转行了,事实是每个人的智力水平不一样,有些人只是接收得慢而已,凭什么要因为这些老师的几句话就打退堂鼓?

它没有垃圾回收还有异常处理,我们需要自己去分配内存,它甚至连对象都没有。以至于很多人都黑那些学C语言的人找不到对象(好吧,这点我承认,所以我现在更多在写Ruby)。C语言看起来更像是手动挡的汽车,虽然比起自动挡的汽车有点难以把控,但熟练之后的那种操作感还有成就感是无与伦比的。这也导致了我在大三别人都在苦学Java的时候选择了C跟Linux,只是就业机会堪忧只能暂时放下了,最后为了不随Java的大流投入了动态语言的怀抱。如今看来甚好,学习了动态语言之后更加明白了C的重要性,以及Java的非绝对必要性,哪怕现在我用C语言就只能写出"Hello World"也没关系,只要用心,愿意花时间研究,C语言并没有想象中那么难,你一定可以掌控它。

小编推荐一个学C语言/C++的学习裙【 815393895】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

四、这东西有什么用?

学C语言可以找到什么样的工作?又是一个尴尬的问题,我要是知道答案当初我可能就不会跑去学Python了。我大学时候碰过壁,我以为如果我学会了C语言在外面一定可以找到好工作。后来我发现我错了,好不容易去了一家声称招C语言的公司实习,去了之后他们让我学C#,工作两个星期后跟他们老总接触之后发现,原来他们是分不清C跟C#的区别。

以前据说嵌入式领域会用到C语言,不过好像这个领域也被Python,C++这些语言占领得差不多了。C语言会不会演变成像Lisp那样只适合用来做教学语言了?

之前听过有些大神说过

写Lisp你很难找到相关的工作,但是它能让你成为一个更好的程序员。

现在看来这句话用在C语言上也挺合适的

写C你很难找到相关的工作,但是它能让你成为一个更好的程序员。

据我观察,函数式编程是越来越流行了,如今Java据说都支持一些Lambda相关的东西了,Clojure,Elixir这些编程语言也渐渐火起来了,Ruby,Python,JavaScript这些语言几乎统治了Web开发的半壁江山。后起之秀Go声称要击败C语言,把C语言能做的事情都做一遍。确实如今的C语言已经没有当年的那么无敌了,出现了许许多多的替代品,或者衍生品。但我觉得作为一个存活了几十年的语言,它自有它过人之处,作为一个系统级编程语言,它简单却难以掌控。

当然也可能并没有如上所说的那么玄乎,更多的是觉得学这个东西有什么卵用,只能用来撸撸算法题。哈哈,如果持有这种想法的同学,您还是继续写Java比较好一些。毕竟Java即可以用来撸算法题也可以用来找工作。不过个人更倾向于C语言,或许我自己也是追求“手动挡”操作感的那类人吧,想想你可以在黑窗口上,打开一个轻量级的文本编辑器,编写相关的代码,可以自己精确分配内存空间,直接往某个内存里面塞你想要的东西,当你塞的东西放不下的时候,程序会告诉你内存爆了,这个时候你得去思考自己塞了什么不应该塞的东西进去。个人觉得这或许也是动态语言所不能给予的编程体验吧。

学C语言确实很难找到相关的工作,除非你是资深专家,但它让我们更直接地与操作系统打交道,让我们对内存分配,线程调度这些概念有更清晰的理解。了解这些东西或者说磨练这方面的意识对于日常的工作可能没有什么直接的帮助,但我始终相信掌握C并借此了解更多底层的东西,可以让你在这条路上走得更远,也更开心。

五、尾声

小编推荐一个学C语言/C++的学习裙【 815393895】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

以上是本人对C语言的一些看法,或许有些片面(还望指正)。越来越多的语言妄想取代它的地位。但个人觉得无论这些语言再先进他们也无法完全取代C语言在许多程序员心目中的地位,特别是优秀的程序员。而C语言最终会走上Cobol那样消亡的道路呢,还是会走上不朽之路呢?我们拭目以待,但我个人觉得会是后者。

如果您觉得不错,请别忘了转发、分享、点赞让更多的人去学习, 您的举手之劳,就是对小编最好的支持,非常感谢!

程序员怎么看待C语言?最伟大?最落后?相关推荐

  1. 程序员应该学习C语言的十个理由

    程序员应该学C语言的十个理由的文章说:每个程序员在他们的编程事业生涯当中都应该学C语言.C语言有太多不容忽视的好处.它不仅可以带来更多的工作机会,而且也会在总体上让你对计算机有更多的了解. 1)相对于 ...

  2. 好程序员Java分享SQL语言之索引

    好程序员Java分享SQL语言之索引,前言:本章我们将学习MySQL中的索引,本文将从索引的作用.索引的分类.创建索引的语法.索引的使用策略以及索引的实现原理等方面带大家了解索引. 索引的作用 索引的 ...

  3. 直击招聘程序员面试笔试C语言深度解析,直击招聘 程序员面试笔试C++语言深度解析(直击招聘) pdf epub mobi txt 下载...

    直击招聘 程序员面试笔试C++语言深度解析(直击招聘) pdf epub mobi txt 下载 图书介绍 ☆☆☆☆☆ 李春葆,李筱驰 著 下载链接在页面底部 发表于2021-05-18 类似图书 点 ...

  4. 非专业c语言,非专业程序员如何学好C语言

    原标题:非专业程序员如何学好C语言 什么是C语言?怎么学好C语言?C语言能做什么? 想到那些对C语言刚入门的朋友,对很多知识还一知半解,今天就给大家推荐一本书! 你以为我说的是这本? 骗你的,怎么可能 ...

  5. 【初涉C语言】程序员欢迎来到C语言的世界!

    计算机发展史 机器语言 所有的代码里面只有0和1 优点:直接对硬件产生作用,程序的执行效率非常高 缺点:指令又多又难记.可读性差.无可移植性 汇编语言 符号化的机器语言,用一个符号(英文单词.数字)来 ...

  6. go语言和java比_Go VS Java:一位资深程序员对两种语言的解读

    导读:对于软件开发的编程语言,其实没有万能灵药. 本文作者详细介绍了他使用Java和Go这两种编程语言,一个是传统语言,一个是新兴语言的工作方式. Go VS Java 实话说,我很喜欢Java这门语 ...

  7. @程序员,为什么选择 Racket 语言?

    Racket 作为众多 Lisp 方言中的一种,是一种可编程的计算机程序设计语言 ,同时也是一个程序设计环境.其也曾一度被列入教科书的素材,但是对于这门小众化语言,是否有必要上手? 作者 | beau ...

  8. python语言为何不受待见_程序员为什么讨厌这些语言

    全球著名的 IT 网站 Stack Overflow 根据数百万开发者项目标签的使用频率,发布了一份编程语言的调查报告,试图找出最不受欢迎的编程语言.没想到开发者最想规避的编程语言中,PHP.Obje ...

  9. 1024这天,马蜂窝程序员选出的最好语言是…

    最好的语言是什么? 能带给别人快乐的语言,就是最好的语言. 在马蜂窝,程序员们希望用幽默的方式的方式促进沟通,撕掉程序员的标签,并且在笑声之外,直面工作中的问题,推动技术为马蜂窝带来更多改变. 能实现 ...

最新文章

  1. 支持 gRPC 长链接,深度解读 Nacos 2.0 架构设计及新模型
  2. 我的博士之路(壮根美颜-康亚龙):五年读博路,苦熬曙光明
  3. plotly可视化绘制多子图(subplots)共享坐标轴
  4. numpy中reshape,multiply函数
  5. linux打开图形化命令,在Linux命令行中以图形化窗口打开文件夹
  6. Mr. Kitayuta‘s Technology CodeForces - 505D(并查集+拓扑排序或dfs找环) 题解
  7. cocos之观察者模式应用实例
  8. 大数据算法_【中科大】大数据算法(2020年春季)
  9. Play静态文件调用
  10. 从一个例子看频率学派与贝叶斯学派的不同(Python)
  11. input text 输入即可识别
  12. 浅谈JobExecutionContext JobDataMap
  13. python 释放内存_python深入之python内存管理机制(重点)
  14. 手把手教你搭建属于自己的服务器
  15. 超详细的Python实现新浪微博模拟登陆(小白都能懂)
  16. 苹果关闭iOS 16.1.2 验证通道,iPhone升级 iOS 16.2 后无法降级
  17. m3u8视频格式转换
  18. Cordova徽章插件
  19. JavaWeb权限管理
  20. 通过Logstash实现mysql数据定时增量同步到ES

热门文章

  1. cdr 表格自动填充文字_做平面广告设计,AI和CDR如何选择?
  2. python 水仙花_python 水仙花
  3. Maven 操作手册
  4. SonarQube上传分析报告失败
  5. js判断一个字符串 是否存在在另一个字符串
  6. JavaScript-操作DOM对象-获得dom节点
  7. linux modbus工具,基于ARM-Linux的Modbus串口服务器设计
  8. fiq中断的入口地址_嵌入式技巧:ARM的三种中断调试方法介绍
  9. mysql range用法_MySQL中Explain的用法总结(详细)
  10. Pycharm设置开发模板/字体大小/背景颜色 - Python零基础入门教程