返回介绍

计算机语言之战

发布于 2025-01-22 00:38:47 字数 4314 浏览 0 评论 0 收藏 0

本文应读者邀请所写,讲一下各种编程语言的适用范围。 1 桌面时代 古老的 C 王国从 1972 诞生以后, 一直都非常强大, 这里的臣民对它又爱又恨, 因为它的法律允许它的臣民直接操作内存,执行效率极高, 但是又对内存分配回收不管不顾,全部扔给子民们去处理。

其实纯粹的 C 语言还是比较简单的, 只要你能真正的搞懂指针是怎么回事 , C++诞生以后,在 C 的基础上又加入了面向对象, 泛型编程等“时髦”概念, 让帝国的法律制度变的复杂无比, 外边的人都戏称”只有成为律师才能在 C++ 王国生存”。 但是这个世界所有人都离不开它, C/C++ 王国所生产的操作系统(Windows,Linux,Unix ),网络协议栈(TCP/IP) , 编译器, 数据库(Oracle, MySQL, SQL Server , Db2),构建了计算机世界赖以生存的最底层基础。

由于贴近机器运行, C/C++在嵌入式开发以及驱动开发领域根本就没有对手。

由于运行效率高, 它很适合去生产那些要求高性能的, 最好是没有图形界面的, 在服务器端运行的系统级软件, 比如说 Web 服务器(apache, nginx, IIS ), 缓存(redis, memcached) , 版本控制(git,svn), 邮件服务器 等等。

当然 C/C++在图形界面方面也非常强悍, 推出了像 QT 这样的 GUI 框架, OpenGL, DirectX 这样的图形 API, 以及 Windows 上的 GUI, Linux 上的 KDE, Gnome 等。

在这些图形框架和类库的推动下, C/C++王国几乎霸占了关键的桌面应用, 例如办公(Office), 上网(IE, Firefox, Chrome...) , 图像处理(Photoshop), 聊天(QQ), 视频(暴风影音,迅雷)...... 还有哪些数不清的游戏以及背后的游戏引擎。

C 王国的疆域之广阔, 可以说是前无古人, 如果计算机世界一直停留在桌面应用时代, 估计就没有别人什么事了, 除非出现一个新的语言, 具备 C/C++的性能, 又简单易学。 2 互联网时代 互联网时代给后来者带来了机会,整个世界开始往互联网上转移, 刚开始的时候是静态网页,没有什么交互, C/C++王国生产的 Web 服务器像 Apache 还能够轻松应对,可随后就进入了动态页面时代, C/C++尴尬的发现, 自己并不适合“ 快速的 ”去生产这些需要和浏览器打交道的, 后端有复杂多变业务的系统, 例如电子商务网站,社交网站 , 他们发现自己在处理 Web 请求和响应的时候显得异常笨拙。

Java 这个巨大的市场空白被 Java 率先抓住, 成功建立了 Java 帝国。 (参见 Java : 一个帝国的崛起)

Java 用 jsp, servlet, EJB, Spring, Hibernate, Struts, myBatis , Ant, Maven,Velocity , Freemaker, Ehcache 等数不清的工具和框架成功的占据了 Web 编程领域, 不仅如此, 他还成功的侵蚀了 C/C++帝国的地盘。

原来那些高性能的服务器端软件都是由 C/C++ 帝国生产的, 随着 Java 虚拟机不断的优化提升, 特别是网络应用是很多处理时间花在 IO 上, 对速度和性能要求不是非常高, Java 也适合来做服务器端软件了, 例如应用服务器(Tomcat, JBoss, Websphere, Weblogic) , 网络应用框架 Netty, 服务框架 Dubbo, 搜索 Elastic Search, 消息队列 ActiveMQ 等等。

机器性能的提高, 甚至让 Java 涉足桌面领域, 虽然没有 C++那么成功, 至少捕获了码农的心, 很多开发工具都是 Java 写的: IntelliJ IDEA, Eclipse , HBuilder 等等。

微软帝国的.NET 和 C#也不得不提,虽然不如 Java 生态圈这么成熟和强大, 但是在 Windows 领域绝对是站主导地位, C#可以开发 Web 系统和桌面系统, Visual Studio 是个非常强大的开发工具,很多开发靠拖拖拉拉就能搞定。 只是这个圈子有些封闭,无法吸引更多的人尤其是大牛的加入, 比较可惜。

但是我们得知道, Java 和.Net 他们的底层 Java 虚拟机和.NET 虚拟机, 也是由 C/C++帝国生产的, 虽然老帝国的疆域大大缩小, 但在系统级软件的地位依然无可撼动!

JavaScript

互联网时代的应用基本是 B/S 结构, 即浏览器/服务器, 服务器端 Java 当仁不让, 但是在浏览器端, Java 虚拟机就没有任何优势了, 这里是 Javascript 的天下, 从前的 VBScript, JScript 早就被码农抛弃。

Javascript 一家独大, 这里充斥着令人眼花缭乱的框架和库 Dojo, JQuery, Prototype, ExtJS, AngularJS , React , Backbone ...... , 码农们在这里能深深的体会到选择太多的幸福烦恼。

单单是 Javascript 还不够, 还需要 HTML 和 CSS 才能构建起完整得浏览器端页面,于是 Javascript+HTML +CSS , 这三兄弟联手把浏览器端给统治了, 现在的统治异常稳固, 短期内还看不到可以任何被推翻的迹象。

在原来 Javascript/HTML/CSS 还得寄人篱下, 主要是通过 JSP, Veclocity ,Freemaker 等视图技术生成 Web 界面, 现在前后端分离, javascript 通过 AJAX 的方式只调用服务器端的接口,界面的生成完全放在浏览器端, 他们彻底独立了。

Javascript 不仅仅贪恋浏览器这一亩三分地, 它的攻势咄咄逼人, 还在不断的攻城掠地, 在 Chrome 的 javascript 引擎 V8 的协助下, Javascript 用 Node.js 成功进驻了服务器端编程, 在 React Native 的支持下, 竟然杀入了在手机端开发领域 !

这个最初看起来不怎么样的语言风头一时无两, 一个帝国开始隐隐成型。

脚本语言 Web 编程领域实在是太大, 强如 Java, .NET 也无法通吃,特别有很多码农批评 Java 笨拙,臃肿,发展慢, 不灵活, 这就导致了很多小王国的蓬勃发展, 最具代表性的是 PHP, Python 和 Ruby。

这三位都是脚本语言,由解释器解释执行(解释器自然也是 C/C++帝国生产) , 他们对 Java Web 编程领域的进攻极为猛烈。

PHP 专门做 Web 编程, 它快速灵活,和 Linux,Mysql 堪称绝配, 很多论坛(Discuz), 内容管理系统(WordPress), 网店(Magento),还有很多大型网站(例如 Facekbook, Yahoo,Wikipedia,新浪微博等) 都是用 PHP 搞定, PHP 是很多码农的最爱。

Ruby 漂亮的语法和强大的元编程能力对码农们有着巨大的吸引力, Ruby on rails 这个 Web 编程框架是很多人的挚爱, 像 Twitter(现已转向 Scala), Hulu (在线视频租赁), AirBnb(房屋分享租赁), GitHub 等都是构建于 Ruby on rails 之上。

Python 做 Web 编程也是一大利器, 但绝不仅仅是 Web 编程, 它简直就是个万能工具,啥都能做,爬虫,桌面程序,科学计算,数据挖掘 样样都行。

Python 和 Ruby 都简单易学, 并且表达能力强, 随手写几行代码就能完成很多功能,所以非常适合做运维, 有很多自动化运维工具, 像 Ruby 的 Chef , Puppet , Python 的 Saltstack。 3 移动互联网/大数据/云计算时代 Java 帝国在 Web 编程领域受到了 PHP, Python, Ruby 持续攻击, 被搞的灰头土脸, 但是帝国的基因和运气实在是好, 竟然又搭上了手机开发和大数据快班车, 成功开辟了新战场。

在手机领域, Android 选择了 Java 作为开发语言, 用来对抗苹果 iOS 的 Objective-C 和 Swift , 占据了手机开发的大部分江山。

大数据领域, Java 和 Java 虚拟机更是笑傲群雄, Hadoop 是 Java 开发的, Spark 是 Scala 开发的, Storm 则由 Java 和 Clojure 共同组成。 Scala 和 Clojure 都运行在 JVM 之上, 可是说是函数式编程的语言在 JVM 上的新生, 估计渐渐老去的 LISP 会很欣慰的。

在云计算领域,Ruby 和 Python 令人吃惊的渗透了进来, 成功的扩大了自己的领地, IAAS 平台 Openstack 是 Python 写的, PAAS 平台 Cloudfoundry 是 Ruby 写的, 这再次证明了 Python/Ruby 适合对性能要求不高的管理,监控等领域。

Google 推出的 Go 语言也要进来分一杯羹, 它号称是云计算时代的 C 语言, 能达到 C 的运行效率和 Python 的开发效率。 只是还很年轻,用 Go 语言开发的系统知名的有 Docker, 七牛云存储, 容器集群管理系统 Kubernetes 等等, 至于能不能建立一个像 C,Java 那样的帝国, 就看它的造化了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文