Atitit 最近十年来until2018软件开发领域的趋势 艾龙总结 attilax大盘点总结历史与趋势

1. Keyword sec title 2

2. 语言本身: 2

2.1. 工业标准 2 2

2.2. 2.第三方模块走红 3 2

2.3. 3.模块化编程和依赖管理 3 3

2.4. 4. 框架使用 3 3

2.5. 5. 测试代码 4 3

2.6. 6.跨设备,跨平台 4 3

2.7. Dsl 声明式编程 函数式编程兴起 3

3. 工程方面的: 3

3.1. 1.工具化 4 3

3.2. 2. 工程化 5 3

3.3. 3. 自动化 5 更进一步的自动化。  4

3.4.  Web已经开始工程化、模块化开发;  5

4. 其他方面: 5

4.1. 1. 版本控制,git,github 6 5

4.2. 2.生态圈意识 6 5

4.3. 1. WEB技术的桌面化和JavaScript的全栈化 7 5

4.4. 2. Web API的全面发展 7 5

4.5. 3. 语言之间的相互借鉴 8 5

4.6. 4. 语言解析器的工具化 8 5

4.7. 5. 数据交换语言的发展 8 5

5. 其他补充 5

5.1. 开源软件、开源社区的发展大大减少了程序员的重复劳动 5

5.2. 软件开发变得无比敏捷。瀑布开发模型已然是历史遗迹 5

5.3. 大数据 数据挖掘 6

5.4. 云计算的普及。10年间,云服务从一个云里雾里的概念发展成为软件产品交付的主要模式。 6

5.5. 分布式 程序运行范式的变化。 从中心化走向分散化 6

5.6. DSL  ui  h5 db sql 6

5.7. 浏览器是一个平台,重要性不亚于操作系统本身。 6

5.8. 前端,还有了全栈 6

5.9. 十年前只有网站和网页,十年后一切都成了Application, 6

5.10. 单元测试 7

5.11. Web2.0 ugc在线知识库 7

5.12. 云 vps 7

5.13. 云与服务化  DBaaS服务 xaas 7

5.14. Msa架构微服务架构 7

5.15. mobile 开发的流行 7

5.16. 版本迭代加快 8

5.17. dogfood 等概念的成熟,大家对于测试的界限越来越模糊。 8

5.18. 十年前 Github 和 Stack Overflow 都还不存在。 8

5.19. Web 取代 cs 8

5.20. 关系型数据库已经衰落了。 mongodb崛起 redis 8

5.21. Js崛起 vm编译型语言开始衰落 8

5.22. 并发 多核处理器的兴起,编程语言需要更好的利用并发以提高性能 8

5.23. 基础理论没有重大发展,工程化,模块化发展迅速。端与端的分离,各种框架 8

5.24. 引擎的横空出世,让游戏开发也变得轻巧许多 8

5.25. Ui dsl分离 h5 8

5.26. other 9

1. Keyword sec title

十年来软件行业的大进步

从这个角度来看,今天的测试驱动开发,它提升效率的根本就是把测试用例变得

2. 语言本身:

2.1. 工业标准 2

网页标准有w3c控制,尤其是浏览器的开发,所有主流的浏览器都会自觉符合这个组织的标准,当然这些开发商本身就是这个组织的成员。所以新的HTML5,CSS3,ES6 javascript的新特性的得到顺利推动,让大部分主流浏览器都支持它,w3c功不可没.

PHP有PHPFIG组织,虽然不是强制性的,但是很多新的框架和库都自觉遵守这个组织的编程标准

2.2.  2.第三方模块走红 3

各种语言的框架和库,可能比自己的语言还出名,比如css的Bootstrap,javascript的jQuery;一个好的框架和库甚至可以推动这个这个语言的发展,比如说PHP的Laravel框架,Javascript的jQuery.

2.3. 3.模块化编程和依赖管理 3

2.4. 4. 框架使用 3

2.5. 5. 测试代码 4

2.6. 6.跨设备,跨平台 4

2.7. Dsl 声明式编程 函数式编程兴起

3. 工程方面的:

3.1. 1.工具化 4

Ruby社区贡献的自动化工具链,大量地被移植到其他语言平台上

我觉得工具化非常突出了,凡是能工具完成的事情,绝对不手工完成。以下几个方面都是可以找到相应工具,帮助开发者管理代码质量

代码风格检查

工业标准检查

代码整理

代码复杂度检查

单元测试覆盖率检查

依赖管理

压缩代码

重复代码检查

无用代码检查

3.2. 2. 工程化 5

工程化是以工具化为基础的,没有工具,那么工程化也无从谈起。

工程的核心就是流程自动化,又称之为构建,这些包括了:代码质量检测,代码压缩,代码合并,代码优化,代码编译,单元测试等等部分。构建就是把这些以工作流程的方式组合起来,然后用一个命令行运行这整个流程。它有点像批处理,但是是程序开发中使用的特殊批处理

3.3. 3. 自动化 5 更进一步的自动化。

自动化是以工程化为基础的,工程化本身就是一种流程自动化。而自动化有在工程化的过程中更进一步的自动化。

持续集成就是全自动化的一个终极体现。他的主要流程是:版本控制库->构建->测试->报告.
持续集成有点像windows的定时任务,但是它是程序开发专用的定时任务。

另外还有个持续部署,其实就是持续集成在测试成功后部署上产品服务器上的流程。如今有些网站一天就要部署几十次,有了持续部署后,部署多少次都毫无压力。

工具化,工程化,自动化的关系挺有意思,前者是后者的基础,而后者却极大推动了前者的发展。它们是相互积极作用,相互推动了对方的发展,形成了一个很好的良性循环

从这个角度来看,今天的测试驱动开发,它提升效率的根本就是把测试用例变得可复用和可扩展。当代码变得更复杂时,测试用例可以很好地让开发速度稳定持续下去,而不是担心各种潜在的bug。
至于app store 的dogfood,服务器的快速部署,这些都是这些事情自动化以后的表面现象。

Dw就是可视化拖拽式h5 ide呀。

3.4. 
Web已经开始工程化、模块化开发;
 

4. 其他方面:

4.1. 1. 版本控制,git,github 6

4.2. 2.生态圈意识 6

4.3. 1. WEB技术的桌面化和JavaScript的全栈化 7

4.4. 2. Web API的全面发展 7

4.5. 3. 语言之间的相互借鉴 8

4.6. 4. 语言解析器的工具化 8

4.7. 5. 数据交换语言的发展 8

5. 其他补充

5.1. 开源软件、开源社区的发展大大减少了程序员的重复劳动

5.2. 软件开发变得无比敏捷。瀑布开发模型已然是历史遗迹

遗迹,持续集成、持续交付、微服务、DevOps这些工程实践,让软件的发布速率提高了一个甚至数个数量级

5.3. 大数据 数据挖掘 

数据成为新的宝藏。互联网的发展和智能手机的普及让人类累积了大量的数据,而这些数据的挖掘和探索,将会产生无法想象的价值

5.4. 云计算的普及。10年间,云服务从一个云里雾里的概念发展成为软件产品交付的主要模式。

AWS,Heroku, Saleforce,Slack这些公司的成功让IaaS/PaaS/SaaS/CaaS(容器云)的价值都得到了充分验证。对于互联网企业来说,开源降低了研发成本,而云服务进一步降低了运营成本,初创互联网公司如雨后春笋,大众创业成为可能。

5.5. 分布式 程序运行范式的变化。 从中心化走向分散化

虽然现在大部分互联网产品仍然遵循客户端-服务器的范式。但是分布式的软件产品已经初露端倪,区块链、比特币的出现不单是金融领域的创新,也可能预示着软件产品从中心化走向分散化的一种趋势

5.6. DSL  ui  h5 db sql

5.7. 浏览器是一个平台,重要性不亚于操作系统本身。

现在的普通JS程序动辄几万行,可能有着所有界面应用开发里最好用的调试工具:Chrome浏览器和它的developer tools。十年前主流的浏览器是IE6,只是一个浏览器,今天的浏览器是一个平台,重要性不亚于操作系统本身。

5.8. 前端,还有了全栈 

5.9. 十年前只有网站和网页,十年后一切都成了Application,

而application概念在十年前专指你从windows开始菜单能打开的那些。

5.10. 单元测试

十年前测试主要是人工的集成,单元测试在大多数开发团队里还只是道听途说的概念,更不要说Continuous Integration。经过十年,单元测试的实践已经深入人心。测试本身已经是一个单独的产业,各种工具,服务被创造出来,现在的软件,从操作系统到mobile app的质量,比十年前的产品已经不可同日而语。

5.11. Web2.0 ugc在线知识库

十年前博客还方兴未艾,Youtube还只是一个玩具。十年里博客已经是数字生活的常态,WordPress的安装覆盖全世界,Youtube不再是一个网站,而是地球上史无前例的多媒体平台。十年前学编程主要看书,十年后的今天,学任何技术都能找到优质的在线免费内容,自我教育只受限于意愿而不是金钱

5.12. 云 vps

十年前中小企业架设网站的唯一选择是虚拟主机,当时新网一个很烂的虚拟主机一年卖几千块。十年后的今天,绝大部分的中小企业业务已经迁移进某个云里。懂点技术的人可以在十分钟内完成主机购买到网站上线的操作。

5.13. 云与服务化  DBaaS服务 xaas

十年前面对数据库编程就是mysql,十年后互联网上你能找到一堆成熟的的DBaaS服务。

5.14. Msa架构微服务架构

十年前教科书上还在大讲特讲三层结构,十年后的今天,一切都是服务,服务,服务。面向服务而架构,面向服务开发,面向服务来部署,硬件是服务,软件也是服务。

5.15. mobile 开发的流行

5.16. 版本迭代加快

5.17.  dogfood 等概念的成熟,大家对于测试的界限越来越模糊。

5.18. 十年前 Github 和 Stack Overflow 都还不存在。

5.19. Web 取代 cs

5.20. 关系型数据库已经衰落了。 mongodb崛起 redis

5.21. Js崛起 vm编译型语言开始衰落

5.22. 并发 多核处理器的兴起,编程语言需要更好的利用并发以提高性能

5.23. 基础理论没有重大发展,工程化,模块化发展迅速。端与端的分离,各种框架

5.24. 引擎的横空出世,让游戏开发也变得轻巧许多

5.25. Ui dsl分离 h5

用户界面不再是写死在代码里,而是将界面描述,与呈现进行了分离。

比如网页的描述语言就是HTML,浏览器作为HTML的呈现引擎。

桌面程序界面的描述语言就是XAML(WPF编程技术)

报表的描述语言就是RDL。

5.26. other

当年以为计算机专业的,没有其他的行业知识会很难找工作,现在发现任何行业都招计算机专业的人。

7.当年以为,软件这东西像写小说,写着写着就没什么可写了。现在发现,软件这东西,像拍电影,拍了再多次还可以拍续

十年前国内一线城市应届程序员起薪2-3k遍地都是,十年后,北上广一线毕业生码农起薪5-6k起,不过我可能还是太保守,据说8-10k了。

Atitit 最近十年来until2018软件开发领域的趋势 艾龙总结 attilax大盘点总结历史与趋势 1. Keyword sec title 2 2. 语言本身: 2 2.1. 工业标准 2相关推荐

  1. 十道腾讯软件开发工程师面试题

    本来在一加软件公司工作,三月初的时候无意中收到深圳腾讯云的电话(对方表明身份后,说看到我的简历,想和我聊聊.当时没有电面经验再加上也没有进来也没有投简历,爽快的答应聊就聊呗.上来就是技术问题,当时蒙了 ...

  2. Atitit 几大研发体系对比 Stage-Gate体系 PACE与IPD体系 敏捷开发体系 CMMI体系 艾龙 著 1. 3. 1.5:业界领先的研发管理体系简介 2 1 2. 《产品及生命周期

    Atitit 几大研发体系对比 Stage-Gate体系  PACE与IPD体系 敏捷开发体系 CMMI体系 艾龙 著 1. 3. 1.5:业界领先的研发管理体系简介 2 1 2. <产品及生命 ...

  3. python是一个免费开源的软件吗_Python是开源的吗?使用Python的软件开发领域

    Python是开源的吗?使用Python的软件开发领域.我们要清除的是Python开放源代码,因此Python是开放源代码,这意味着它是免费的,并且python开放源代码不是不同的编程语言,每个人都可 ...

  4. 人工智能在软件开发领域应用现状

    转载本文需注明出处:微信公众号EAWorld,违者必究. 江湖上一直流传着这样的传闻:"程序员们很快就要失业了,因为人工智能马上就能写出完美的代码了".人工智能是以软件形式存在的, ...

  5. Atitit 学习方法 补充 艾龙 著 attilax著 1. Atitit 学习的方法 attilax总结 1 1.1. 2. 基于学习策略的分类 2机械 示教 演绎 类比 解释 归纳 2 1.

    Atitit 学习方法  补充 艾龙 著 attilax著 1. Atitit 学习的方法 attilax总结 1 1.1. 2. 基于学习策略的分类 2机械 示教 演绎 类比 解释 归纳 2 1.2 ...

  6. 十年经历:软件开发的“三重门”

    自从上次写了"程序员技术练级攻略" 以来,就觉得似乎还有很多东西没有谈到,但当时没有继续思考了.而春节前有人问我,是做底层技术,还是做业务.这问题让我思考了很多,不由自主地回顾了一 ...

  7. 龙芯软件开发(6)--CPU龙芯2E

    在开发软件中,对于CPU的了解就是最重要的了.无论什么指令都需要CPU来执行.现在就来看看龙芯2E的具有什么特征了. 龙芯2号增强型处理器(简称"龙芯2E")是中国科学院计算技术研 ...

  8. 什么是软件开发领域的 obsolete 或者 deprecated 含义

    我们在学习一门编程语言或者说使用一些工具 API 时,经常会看到文档或者 API 参数说明里,标注了 obsolete,deprecated,deprecation 等字眼. 这些单词代表什么含义呢? ...

  9. 面试了10几家软件公司测试岗位,做的面试题大盘点,重点大合集

    马上就是金三银四了,不知道小伙伴们有没有准备好呢?希望这篇文章的内容可以帮助到大家! 另外文末给大家准备了资料(好几套面试题加学习资料等),需要自取! 项目的测试流程 1.拿到需求文档后,写测试用例 ...

  10. Delphi 和 TMS 控件在 ERP 软件开发领域的 20 年:访谈

    我们最近在我们的Youtube 频道(订阅!)发表了对Viasoft Korp技术总监Alexandre Henzen的采访.采访(葡萄牙语)可通过此链接获得,也可在下面的这篇文章中获得. 在这次采访 ...

最新文章

  1. XCode 导入头文件不提示解决
  2. MATLAB实战系列(五)-模拟退火(SA)算法求解旅行商 (TSP)问题MATLAB代码讲解
  3. bzoj2538: [Ctsc2000]公路巡逻
  4. 深入浅出MFC:DDX_Control本质探究
  5. php只显示一部分文章,typecho同一个页面下调用不同分类的文章但是却只显示一个分类文章...
  6. 万字好文 | 数字化转型之道——数据治理体系能力提升
  7. python获取网站图片_python获取网站图片
  8. Linux 2.6中基于Sysenter的系统调用机制
  9. 万字长文!Go 后台项目架构思考与重构
  10. expat 处理xml常用函数名
  11. ffmpeg系列-协议操作解析-AVIOContext,URLContext,URLProtocol,HTTPContext
  12. spark 安装与使用 educoder
  13. iOS UiCollectionViewtroller 间距清0
  14. 分布式系统常见的事务处理机制
  15. arm搭建云手机教程_云计算培训教程学习路线视频源码课件:seafile私有网盘搭建...
  16. android win10 驱动安装失败,解决在win10系统下小米手机驱动安装失败的具体步骤...
  17. 大学生发展规划与就业指导(三)万学网答案
  18. 计算机空格键作用,电脑键盘上的空格有什么用 键盘上空格的作用说明
  19. 练习STM32动态更改PWM波频率和占空比
  20. 某速的体育视频采集分析

热门文章

  1. hbase java 分页查询_HBase伪快速分页查询
  2. macos怎么装mysql80_Mac下MySQL安装配置教程
  3. 如何在scope图中标注_电机学习笔记: 变压器初级(原边)和次级(副边)的感应电动势、电压方向如何标注?...
  4. 微信头像失效_如何判断微信授权的头像是否失效
  5. 项目cookie优化之cookie数量限制和多页面共享污染数据问题
  6. 什么?吴宗宪在淘宝帮你买买买?
  7. Cygwin-安装和配置ssh服务
  8. iOS中书写代码规范35条小建议
  9. 一个比较完整的短信接口帮助类参考
  10. B/S VS C/S