技术在更迭,科技在变化。20 年前,或许只是处于概念型的技术,如今早已深入落地我们的日常生活中,而从计算机编程角度来看,在互联网发展的 20 年间,究竟有哪些根本性的变化?本文即将揭晓答案。

作者 |  Sedat Kapanoglu

译者 | 明明如月,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下为译文:

我在 Quora 上看到了 “现在的计算机编程和 20 年前有何不同?” 这个问题 ,就开始思考答案。由于答案太长,现在将其整理成一篇文章发表在此。

以下是我总结的过去 20 年计算机编程的变化,将这些变化以随机的顺序列举出来:

  • 一些 20 年前还是理论性的概念,像不可变性、尾部递归、集合的惰性求值、模式匹配、一级函数(如 lambda 表达式)等函数式编程范式,现在已经成为主流。

  • “桌面软件”的含义也发生了变化,现在桌面软件指能够在浏览器中显示的 WEB 页面。

  • 虽然面向对象编程(OOP)依然是最流行的编程模型,但现在也失去了些许威望。基于特质的新的编程模型在像 Go、Rust 和 Swift 这些现代编程语言中更为普遍。组合优于继承。

  • 除非你能参加一个价值 2000 美元门票的会议,并分享一张参会的自拍,否则你都不好意思说自己是一个专业程序员。

  • 由于 CPU 核心的大量增加,现在编程语言级别大都支持并行编程,而不是20年前的原始系统调用。引入了异步编程原语 (async / await)、并行协同程序(如 Go 语言中的 goroutine) 或 D语言中的通道 (channels)、可组合语义 ( 如响应式编程中的 observable)。

  • 像素不再是统一的度量单位。

  • 垃圾回收已经成为保证编程安全的常见方式,但新的安全模型正在出现,如 Rust 的生命周期语义和代码审查中的尖锐笑话。

  • Java 有 30 亿个设备上运行。这个数字在过去的十年里没啥变化。

  • 20 年前,我们常需要访问网站,搜索类库,下载压缩包,复制到正确位置并将其添加到构建配置的路径中。而现在对编程语言而言,包管理的生态系统必不可少。人们已经不再想手动搜索、下载和安装类库了。

  • 现在软件开发团队早上都会开 15 分钟的站会,还会用一些便利贴画一些奇怪的符号。

  • 现在的编程工具更加丰富。一个编程语言通常包括一个编译器或者调试器。现在它们通常会带有链接程序、源代码格式化程序、模板创建程序、自更新能力。你还可以在编程语言中使用一些启动参数。

  • 甚至编程语言也在制表符 vs 空格符的争论中站队。

  • Adobe Flash 曾经是提供 web 流畅交互的唯一方式,幸运的是,现在这种现象已经不复存在。现在不同的平台上要使用不同的编程模型进行开发,从而能够实现相同级别的交互。

  • IDE 和编程语言的绑定关系越来越弱。20 年前,通常 IDE 会和某种编程语言绑定,如 Eclipse for Java,Visual Basic,Delphi for Pascal 等。现在,有了像 VS Code 这样的文本编辑器,它几乎可以支持任何需要 IDE 特性的编程语言。

  • 代码现在至少在三层虚拟化之后运行,代码不必在裸机上执行。

  • 20 年前几乎只有 PC。现在,各种架构的跨平台(移动设备、云服务器和嵌入式物联网系统)开发已经成为标配。

  • 现在你几乎不需要在本地运行代码。

  • 现在文档总是在线的,如 Google 文档。现在已经没有离线文档了,即使有,也没人知道了。

  • 如果教程不是视频形式的,理解成本比文本还高几个数量级,那就意义不大了。

  • 当 StackOverflow 还不存在时,编程问题需要向同事请教。

  • 现在,人们在 Mac 上开发软件。

  • 联网是常态,断网是例外。20 年前正好相反。

  • 现在,必须考虑安全性问题。

  • 现在,移动设备已经可以显示常规的 WEB 页面,不再需要在单独的子域名上创建 WAP 页面。现在我们在不同的子域名上创建移动页面。

  • 现在默认情况下,代码都是开源的,除了有些代码会让我们感到尴尬。

  • 多亏那些反对歧视的人,更多聪明的女性、有色人种和同性恋都能成为计算机编程从业者。虽然我不敢说已经完全平等,但是现在已经好了很多。

  • 被黑客攻击已经是家常便饭。现在用户数据的丢失,写一篇提示用户修复密码的文章即可,无需道歉。

  • 我们不再需要使用因特网中继聊天( IRC)进行沟通。因为不想输入服务器地址,我们便倾向于使用臃肿的 Slack。

  • 我们用显卡运行程序。

  • 虽然集中式和规则为基础的版本开发效率更高。现在,如果你的项目不涉及到区块链或人工智能,就很难创造商业价值。

  • 由于某些原因, 现在 1G 存储空间已经不够用了。

  • 由于边信道攻击(side channel attack 简称SCA) 我们甚至无法完全信任物理处理器。

  • 很大一部分计算机编程任务是在足球桌上完成的。

  • 虽然我们的 CPU 运行速度更快,但是用 Python 实现数值计算仍然比 Fortran 慢得多。现在数值计算和 20 年前耗时几乎一样。

  • 现在创建一个编程语言甚至创建新的硬件已经成为一个普遍的嗜好。

  • 单元测试被大肆炒作,和一些其他有用的东西一样,单元测试的的好处被夸大,不可避免的成为了一种信仰。

  • 虽然现在禁止用明文存储密码,但是依然还有人这么做。

原文链接:

https://medium.com/swlh/how-is-computer-programming-different-today-than-20-years-ago-9d0154d1b6ce

作者简介:Sedat Kapanoglu,前微软 Windows 核心操作系统部门工程师,eksisozluk.com 网站的创始人。

译者:明明如月,知名互联网公司 Java 高级开发工程师,CSDN 博客专家。

推荐阅读 

☞阿里再发最严口罩禁令;铁路再次调整免费退票;iOS 13.4 测试版发布 | 极客头条

☞TIOBE 2 月编程语言排行榜:Objective-C 的出路在何方?

☞12 大 AI App 技术创意,教你如何在 2020 年赚到钱!

☞为什么说程序员做外包没前途?

☞大数据抗疫的“洪荒之力”:多地政府借力大数据技术,多家企业上马大数据产品

☞疫情当下,你是在家里躺着刷抖音?还是在做这些?

你点的每一个在看,我认真当成了喜欢

计算机编程的 20 年变迁!相关推荐

  1. 计算机编程技术的历史变迁以及未来发展

    技术在更迭,科技在变化.20 年前,或许只是处于概念型的技术,如今早已深入落地我们的日常生活中.随着大数据和AI人工智能时代的到来,计算机专业成为了最热门的专业之一,越来越多的孩子从小开始接触和学习计 ...

  2. 计算机编程领域最伟大的20个发明

    概述:本文收集整理了计算机编程领域的二十个突破历史的发明. 1 第一台计算机:"差分机"(1821年) "差分机"是1821年由英国政府委托科学家巴贝奇设计而成 ...

  3. 厉害!国内大学生计算机编程第一人,一人挑战一个队,百度最年轻 T10,现创业自动驾驶...

    作者 | 年素清 责编 | 王晓曼 封图 | CSDN付费下载自东方IC 出品 | CSDN(ID:CSDNnews) 他被公认为"大学生计算机编程第一人",是全球顶级黑客,是To ...

  4. 北理工 管理系统计算机仿真作业,20秋北理工《CADCAM原理与应用》--模拟3-答案 更…...

    20秋北理工<CADCAM原理与应用>--模拟3-答案 更- 2020-08-06 09:08:00 583 有学员问关于20秋北理工<CADCAM原理与应用>--模拟3-答案 ...

  5. 计算机算法对程序设计的作用,算法计算机论文,关于数学算法对计算机编程优化相关参考文献资料-免费论文范文...

    导读:本论文主要论述了算法计算机论文范文相关的参考文献,对您的论文写作有参考作用. (重庆人文科技学院 理工学院数学系,重庆 401572) 摘 要:数学算法是一种将很多问题进行归纳总结,然后采用统一 ...

  6. 南京 学计算机的学校,南京小学生暑假学计算机编程去哪家学校好

    南京小学生暑假学计算机编程去哪家学校好 南京小学生暑假学计算机编程去哪家学校好,推荐 南京童程童美专注于中国6-18岁青少儿编程教育的品牌.依托集团16年积累的互联网教育经验和百余名IT教研团队优势, ...

  7. 计算机编程入门语言哪个好?

    计算机编程入门语言哪个好?入门语言有基础的推荐C和JAVA语言,零基础的小伙伴推荐从web前端(网页开发)开始.编程已经没什么新鲜和陌生的了,编程已经进入我们生活的方方面面,那么你知道你编程适合学什么 ...

  8. AP计算机编程路上的照明灯----学校老师哈佛博士的伊利诺伊大学学生如何说

    AP计算机   AP微积分    A Level计算机   IGCSE计算机 支持远程现场互动教学 我叫孟睿,我是通过在微博上搜索找到的林振营老师,当时因为刚入伊利诺伊大学大学,又从没接触过编程,所以 ...

  9. 青少年计算机编程少儿编程小学生编程是否适合

    青少年少儿小学生是否适合学习计算机编程,今天遇到学校的群里面又在推荐免费计算机编程的教程.就自己的感悟说几句. 我觉得青少年小学生,少儿不适合学习编程. 1. 学生是学习各种基础知识为主. 以现在小学 ...

最新文章

  1. PHP CURL方法,GETPOST请求。
  2. nginx图片服务器性能,搭建nginx图片服务器
  3. Machine Learning week 10 quiz: Large Scale Machine Learning
  4. 在DropboxEdge网络上评估BBRv2
  5. matlab提示未定义wc,WooCommerce 教程:修复致命错误调用未定义的函数wc_get_order() - WooCommerce 微站...
  6. android checkbox监听另一个checkbox选中和不选中_一个真正0基础小白学习前端开发的心路历程...
  7. linux 根目录分配多少好,Linux下硬盘怎么分区才合适:根分区(/)交换分区(/swap)和/boot分区需要多大...
  8. Python3学习日志 函数参数
  9. Java 相关计数问题及其实现
  10. java web 开发分层
  11. 100万个不重复的8位的随机数
  12. _splitpath / _wsplitpath 将绝对路径分割为盘符、路径、文件名、扩展名。
  13. qt最大化和还原实现_Qt 窗口操作函数(置顶、全屏,最大化最小化按钮设置等)...
  14. MATLAB/Simulimk 光伏发电+boost+储能+双向dcdc+并网逆变器控制(低压用户型电能路由器仿真模型)
  15. 【ZYNQ】petalinux包含自定义的动态库
  16. 【Unity3D日常开发】Unity3D中实现屏幕坐标和3维空间坐标的转化
  17. 做自适应网站专业乐云seo_广州网站设计【乐云seo】
  18. 计算机课堂教学改革培训心得体会,课堂教学改革心得体会范文(精选6篇)
  19. 800道Java后端经典面试题,希望你找到自己理想的Offer呀~
  20. 自动化学报latex模板使用说明

热门文章

  1. SAP销售订单状态修改(审核) 计划行自动产生需求,产生MD04需求
  2. sql2005通用分页存储过程
  3. 有关send()和recv()函数的理解
  4. 检测c/c++中内存泄露
  5. 千古奇闻!明朝就已成功试爆两万吨原子弹?
  6. 特征工程之自动特征生成(自动特征衍生)工具Featuretools介绍
  7. [vscode] python debugging
  8. 华为鸿蒙系统适合机型,华为鸿蒙os2.0系统适用哪些机型
  9. yolo模型部署——tensorRT模型加速+triton服务器模型部署
  10. win10下安装多个cuda(cuda9.0和10.0),并自由切换版本