- 我是一个线程(修订版)
- 我是一个 Java class
- Javascript:一个屌丝的逆袭
- Java : 一个帝国的诞生
- JSP 一个装配工的没落
- TCP/IP 之 大明王朝邮差
- TCP/IP 之大明内阁
- TCP/IP 之蓟辽督师
- CPU 阿甘
- CPU 阿甘之烦恼
- CPU 阿甘:函数调用的秘密
- 我是一个网卡
- 我是一个路由器
- 我是一个进程
- 我是一块硬盘(上)
- 我是一块硬盘(下)
- 我是一个键盘
- 张大胖的 socket
- 张大胖学递归
- 学习面向对象的令狐冲
- 张大胖学数据库
- 数据库村的旺财和小强
- 小李的数据库之旅(上)
- 小李的数据库之旅(下)
- 漫画:什么是机器学习?
- 那些烦人的同步和互斥问题
- IE 为什么把火狐和 Chrome 给打伤了?
- 对浏览器村的第二次采访
- 节约标兵 IE 的自述
- EMail 诞生记
- Email 诞生记(下)
- Http 历险记(上)
- Http 历险记(下)-- Struts 的秘密
- 动物王国的面向对象
- 冯·诺伊曼计算机的诞生
- Http Server : 一个差生的逆袭
- 张大胖的加法器
- 从 1 加到 100:一道简单的数学题挑战下你的大脑
- 编程语言
- Javascript:一个屌丝的逆袭
- 计算机语言之战
- 我和编程语言的爱恨情仇(上)
- 我和编程语言的爱恨情仇(下)
- Android 为什么选择了 Java
- iOS 为什么选择了 Object-C?
- Basic : 一个老兵的自述
- Node.js : 我只需要一个店小二
- 命令式编程 vs 声明式编程
- 编译还是解释?
- 程序人生
- “架构师"小赵
- 师兄说
- 师姐说
- 小王的架构师之路
- 小李的版本管理系统
- 小超穿越记
- 小李的 Build 之路(上)
- 小李的 Build 之路(下)
- 张大胖改 Bug
- 我的编程之路--大学趣事
- 码农小王的一天
- 小李在外企
- 张大胖的需求估算
- 从厨师到码农
- 聊一聊那些神一样的程序员们(上)
- 聊一聊那些神一样的程序员们(中)
- 聊一聊那些神一样的程序员们(下)
- 谁是互联网之父?
- 一个价值百万的创业教训
- 让自己与众不同 - 提升工作的价值
- 看看你的“易燃性”
- 从无聊的工作中寻找价值
- 什么样的学生适合报考计算机?
- 谈谈程序员的职业方向(上)
- 谈谈程序员的职业方向(中)
- 谈谈程序员的职业方向(下)
- 谈谈培训班的作用
- 码农需要知道的“潜规则”
- 学习编程的加速度
- 码农在工作中的必备能力
- 码农和英语
- 老司机经验
- 假如时光能够倒流, 我会这么学习 Java
- 假如我是计算机系老师
- 学会编程, 而不是学会 Java
- 从增删改查中突围
- 抽象:程序员必备的能力
- 懒就一个字
- 编程的自学方法
- 小王买房记
- 从一道面试题谈谈一线码农应该具备的基本素质
- 想写框架的看过来
- 苹果手机变砖头以后
- 如何快速的学习一门技术?
- 唯一不变的是变化: 谈谈微信应用号
- 什么是企业应用?
- 勿以浮沙筑高台
- 为什么敏捷开发难于成功?
- localhost vs 127.0.0.1
- GitHub/Stackoverflow 找工作时有什么用?
- 动词 or 名词 :这是一个问题
- 如何选择入行语言
- 有时候,沉默是金
- 零 Bug 的代码是怎么炼成的?
- 浮点数为什么不精确?
- 文章错误大全
- Open Source--不要为了开源而开源
- 一不留神,代码就腐化了
- 先做个“键盘侠”, 再来写程序
- 不加断点调试的程序员是好程序员
- 码农必备技能:烂代码的处理之道(上)
- 码农必备技能:烂代码的处理之道(下)
- 学习数据结构有用吗?
- 从现在开始,丰富你的简历
- 那些永不过时的书,你看过几本吗?
- 学好编程必备的一个品质你知道吗?
- 你最爱的 Java
- 搞懂了这几点,你就学会了 Web 编程
- Spring 的本质系列(1) -- 依赖注入
- Spring 本质系列(2)-AOP
- 三层架构和 MVC 那点事儿
- Java 帝国之拨云见日识回调
- 小张的 Duck Typing
- JDBC 的诞生
- JDBC 后传
- 一个不安分的 JDBC 驱动
- Java 帝国之 Java bean (上)
- Java 帝国之 Java bean(下)
- Java 帝国之函数式编程
- Java 帝国之函数式编程(下)
- 关于 Java 初学者需要知道的 10 件事
- JUnit 你不知道的那些事儿
- 圣诞礼物:Java EE 的历史
- Java EE 读书指南
- 给小白的 Java EE 指南
- 给小白的 Java EE 指南(2)
- 给小白的 Java EE 生存指南(3) : XML
- 给小白的 Java EE 生存指南(4) : 一只叫 Tom 的猫
- 给小白的 Java EE 指南(5) : AJAX
- 给小白的 Java EE 生存指南(6) :Java 反射
- 闲聊
- "饿了么"初体验
- 来自大脑的控诉
- 一个高中生是怎么玩自媒体的?
- 尝试 分答
- 到底应不应该上培训班?
- 自学编程中遇到问题怎么办?
- 据说 99%的初级程序员看完后都不迷茫了
- 一行代码引发的“血案”
- 对一个死锁问题的思考
- 通过外包进入名企
- 请开往十年前的今天
- 为什么自学中最好有个师傅指导一下?
- 这个网站值得你花时间投入
- 为什么你无法坚持自学编程?
计算机语言之战
本文应读者邀请所写,讲一下各种编程语言的适用范围。 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论