c语言和java对于网络编程技术而言是通用的吗?

道德专判


c语言的场景是偏硬件,跨硬件平台,嵌入式,资源敏感的场景等。

操作系统,交换机,防火墙,基站,光猫等等一些传统IT CT厂家喜欢用的。

现在互联网用java c++ golang甚至Python node.js的都多。c语言语法本身太简单,操作原生套接字和原始报文,要做点什么高级点的事情都要自己花很大经历造轮子,要不就用别人开源的东西。

一般公司能hold吗,光字符编码,内存泄露,踩内存,这些经常出现的问题就玩死一票小公司了,还别说极度依赖各种第三方库了,还有c语言是极度不安全的编程语言,因为极度灵活,所有安全性基本上全靠程序员自身的约束。

还有人说效率问题,开发效率也是效率。

阿里巴巴用大量java做后端,腾讯百度大量用c++做后端。gmail用java,知乎用Python。

c的性能强是强在计算,网络这种io密集型,语言间的计算性能差异根本就不是很重要。

说完了企业方面,再说个人方面,用c语言写个最简单的echo服务器,因为c语言没有网络功能,win平台和linux mac都需要使用对应平台的api从socket层面开始写,select epoll kqueue都需要自己实现,而且你没有大公司那一套编程规范,内存安全函数,已经内存调试手段,出问题都很难找。这些东西在其他原生支持网络库的语言都是一句话的事情。要是自己写着玩,用c写就是找罪受,而且业界也用得不多。为了找工作也不受待见。每个语言擅长面是不一样的,拿java写软交换,一样蛋疼。

如何你想学习网络,学习报文底层的收发,用c没问题,因为高级语言屏蔽了细节,但并不说这是适合。


分享到:


相關文章: