2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

陈皓谈对待技术的态度

  • 2012-08-18
  • 本文字数:2327 字

    阅读完需:约 8 分钟

最近在酷壳上,陈皓撰文阐述了对待技术的态度,如何面对技术的快速更新?是否做软件开发比以前更加困难了?他都给出了自己的见解。

陈皓首先针对“如何看待日新月异的新技术”做出了回答:

遇到新技术我会去了解,但不会把很大的精力放在这些技术(如:NoSQL,Node.js,等)。这些技术尚不成熟,只需要跟得住就可以了。技术十年以上可能是一个门槛。有人说技术更新换代很快,我一点儿都不觉得是这样想。虽然有不成熟的技术不断地涌出,但是成熟的技术,比如 Unix,40 多年,C,40 多年,C++,30 多年,TCP/IP,20 多年,Java 也有将近 20 年了……,所以,如果你着眼成熟的技术,其实并不多。

他的核心观点是——要了解技术就一定需要了解整个计算机的技术历史发展和进化路线。你要朝着球运动的轨迹去,而不是朝着球的位置去,要知道球的运动轨迹,你就需要知道它历史上是怎么跑的。

然后,他简要回顾了 IT 技术的脉络,并列出了几条关键的主线:

70 年代 Unix 的出现,是软件发展方面的一个里程碑,那个时期的 C 语言,也是语言方面的里程碑。(当时)所有的项目都在 Unix/C 上,全世界人都在用这两样东西写软件。Linux 跟随的是 Unix, Windows 下的开发也是 C/C++。这时候出现的 C++ 很自然就被大家接受了,企业级的系统很自然就会迁移到这上面,C++ 虽然接过了 C 的接力棒,但是它的问题是它没有一个企业方面的架构,而且太随意了,否则也不会有今天的 Java。C++ 和 C 非常接近,它只不过是 C 的一个扩展,长年没有一个企业架构的框架。而 Java 在被发明后,被 IBM 把企业架构这部分的需求接了过来,J2EE 的出现让 C/C++ 捉襟见肘了,在语言进化上,还有 Python/Ruby,后面还有了.NET,但可惜的是这只局限在 Windows 平台上。这些就是企业级软件方面语言层面就是 C -> C++ -> Java 这条主干,操作系统是 Unix -> Linux/Windows 这条主干,软件开发中需要了解的网络知识就是 Ethernet -> IP -> TCP/UDP 这条主干。另外一条脉络就是互联网方面的(HTML/CSS/JS/LAMP…)。

同时,他还分析了架构领域的发展:

  • 从单机的年代,到 C/S 架构(界面,业务逻辑,数据 SQL 都在 Client 上,只有数据库服库在 S 上)
  • 再到 B/S 结构(用浏览器来充当 Client,但是传统的 ASP/PHP/JSP/Perl/CGI 这样的编程也都把界面,业务逻辑,和 SQL 都放在一起),但是 B/S 已经把这些东西放到了 Web Server 上,
  • 再到后来的中间件,把业务逻辑再抽出一层,放到一个叫 App Server 上,经典的三层结构。
  • 然后再到分布式结构,业务层分布式,数据层分布式。
  • 再到今天的云架构——全部移到服务器。

陈皓针对“忽视关键核心技术,盲目追逐新技术”的现象做出了回应:“如果连技术主干都可以不学的话,还有什么其他的好学呢?这些是计算机发展的根、脉络、祖师爷,这样的东西怎么可以不学呢?”

那么,现在做一个软件开发者是否更加困难了?陈皓认为“更简单了”:

因为现在互联网很发达,你可以找到很多共享的知识——相对于我那个时候。第一,知识你容易查到,然后社区很多,文章、分享的人也越来越多。我们那个时候没有的。上网一查,什么都没有。都得去自己琢磨,自己去调查。所以我觉得相比我们那个时候更容易了。第二,工具变多了。现在的工具比那个时候好用多了。我们那个时候就是一天到晚在 vi 里面,连个自动提示都没有,连个版本库管理都没有。不光工具变多,框架也多了,各种各样的编程框架。我们那时候都是生写。写 JavaScript,生写,连个 jQuery 都没有。没有这些辅助性的、让你提高生产力的东西。J2EE 那时候也没有。而且整个(开发环境)都很不成熟。一个服务器的最高配置就 1GB 的情况下,一个 WebSphere 起来就占了 900 多 MB——这还能跑什么应用?所以只能去用最基础的系统。所以我觉得现在,无论是环境,还是开发的过程,都更规范了。以前我做开发的时候就是,什么都不懂就上了,瞎搞,没有什么开发规范,没有人理你,反正你搞得好就搞好,搞不好就搞不好了,全靠自己,包括做测试维护等等。我觉得现在的软件开发就很好,你一上去,就有好的工具,有好的知识库,有好的社区,有好的开发框架,还有好的流程,方法,甚至还有人帮你做测试,还有人告诉你应该怎么做。幸福得很。现在好多人还说这个不好那个不好,开发难什么的。其实容易多了。

但是,有个东西我觉得是现在的软件开发者比我们那时候变得更难的。就是,你享福了以后,人就变懒,变娇气了。对很多东西的抱怨就开始多了。我们那个时候哪有什么好抱怨的?没啥好抱怨的,有活就干,有东西学就赶快学。现在呢,学个什么东西还挑挑拣拣的,抱怨这个语言太扯,那个 IDE 不好,这个框架太差,版本管理工具太扯,等等。这就好像以前我没东西吃,只有个糠吃,要是有面包有馒头,我就觉得非常非常好了。现在是,好吃的东西多了我们还学会挑食了,这也不好用,那也不好用。

根本就不是技术变难了,环境变差了,是程序员变娇气了。所以软件开发变难,归根结底还是程序员们自己变娇气了。

陈皓认为“任何一门技术玩深了,都是很有意思的”:

另外,任何一门技术玩深了,都是很有意思的。有些人形成了一个价值取向,“我只做什么,绝不做什么”。前段时间有一个刚来亚马逊的工程师,他原来做的是数据挖掘推荐系统,原来的公司重组要让他做前端,他不肯就离职了,他说他不想做前端。我觉得,前端后端都是编程,Javascript 是编程,C++ 也是编程。编程不在于你用什么语言去 coding,而是你组织程序、设计软件的能力,只要你上升到脑力劳动上来,用什么都一样,技术无贵贱。你可以不喜欢那个技术,但是还是要了解了解,也没有必要完全不用,完全抛弃。

如果你没有兴趣,什么都是借口,如果你有兴趣了,什么都是好玩的。

详细的内容,读者朋友可以查看陈皓的原文,也欢迎大家发表自己的看法。

2012-08-18 09:293459
用户头像

发布了 501 篇内容, 共 270.8 次阅读, 收获喜欢 62 次。

关注

评论

发布
暂无评论
发现更多内容

科技前沿:一张图数字孪生北京大兴国际机

一只数据鲸鱼

数据可视化 智慧城市 指挥交通 智慧航空

「2021中国峰会同行记」第一回 | 与埃森哲一同追溯技术合力的本源

亚马逊云科技 (Amazon Web Services)

【源码篇】ThreadLocal的奇思妙想(万字图文)

小呆呆666

Java 源码 架构 源码分析 设计

网络攻防学习笔记 Day59

穿过生命散发芬芳

网络攻防 6月日更

百度AICA迎来毕业季,55位新晋“首席AI架构师”推进产业智能化

百度大脑

人工智能 百度 架构师

北鲲云超算平台如何加速生命科学研究

北鲲云

领域驱动设计101 - 模块

luojiahu

领域驱动设计 DDD

混合推荐系统介绍(二十二)

Databri_AI

推荐系统 计算

三个维度,透视5G价值的持续点亮之旅

脑极体

如何优雅的设计DWS层?

云祁

大数据 数据仓库 维度建模

快手封停多个内容侵权账号:如何严打短视频内容侵权行为

石头IT视角

人工智能应用架构的思考

金科优源汇

高性能计算与人工智能何处去?英特尔剑指XPU

E科讯

DNS劫持该如何处理

网络安全学海

程序员 运维 网络安全 信息安全 DNS

JavaScript中的Set数据操作:交集、差集、交集、对称差集

devpoint

set JavaScrip 6月日更

为什么很多时候,我们会感觉企业越大,效率越低呢?

石云升

职场经验 管理经验 6月日更

建信金科大咖访谈:地方特色产业互联网建设思考与实践

金科优源汇

Flutter 改善套娃地狱问题(仿喜马拉雅PC页面举例)

小呆呆666

flutter android 大前端 iOS Developer

【源码篇】Handler那些事(万字图文)

小呆呆666

Java android 源码 Android Studio Android进阶

新常态下的CMDB系统规划与落地

云智慧AIOps社区

CMDB 智能运维

《原则》(二十九)

Changing Lin

德勤基于Amazon WAF 云原生安全服务为客户交付价值

亚马逊云科技 (Amazon Web Services)

为你的身份证“加盾”,鉴伪更精准,传输更安全

百度大脑

人工智能 数据安全 身份证

解放生产力,自动化生成Vue组件文档

vivo互联网技术

Vue 自动化 大前端 组件

Dubbo 3.0.0 来了!还学得动吗?

青年IT男

dubbo

前端面试中有趣的题目(一)

空城机

JavaScript 大前端 6月日更

「2021中国峰会同行记」第二回 | 探索店匠从0到1出海的技术密码

亚马逊云科技 (Amazon Web Services)

迪士尼将亚马逊云科技作为首选的公有云基础设施供应商,支持 Disney+ 全球扩展

亚马逊云科技 (Amazon Web Services)

5分钟速读之Rust权威指南(三十二)互斥体

wzx

rust

前端 JavaScript 中 JSON.stringify() 的基本用法

编程三昧

JavaScript 大前端

如何设计恒流源输出电路?

不脱发的程序猿

嵌入式 电路设计 硬件研发 恒流源输出电路

陈皓谈对待技术的态度_语言 & 开发_崔康_InfoQ精选文章