详解编程语言之发展趋势

近十年来,互联网发生了翻天覆地的变化。新的联网方式、新的通讯方式,乃至新的支付、交易方式深刻地影响了人们的生活,在浪潮的冲击之下,传统编程语言经受住了考验,并焕发了新的生机,同时也涌现出了很多优秀的新型编程语言。

编程语言趋势图
编程语言趋势图

这是近十年来各编程语言的发展趋势图(数据源自 IEEE-spectrum 和 Stack Overflow),中间一栏是语言的应用领域,如 Web、移动端、企业应用、嵌入式等,右侧是语言相关的新项目数量趋势图。

可以看到 C++、C#、Java 等传统语言已经覆盖了各个领域,仿佛一门语言什么都可以做,Javascript 也早已走出了浏览器,Python 也正式步入嵌入式领域。如果十年前有人说要用 PHP 搞 AI 是不可思议的,但现在各种由 PHP 实现的更亲合 Web 环境的深度学习平台也进一步推进了人工智能的发展。

随着软件系统越来越复杂,为了有效控制从业人员的学习成本,编程语言全栈化将是一个大的趋势。而企业的营收突破了信息传播、交易方式等业务模式的限制后,软件技术的发展会更偏向算法、硬件乃至基础理论的研究,既可满足 CPU 密集型程序的开发又可使产品快速落地的编程语言将会胜出。

回顾以往的变革,从电脑到手机,从传统硬件到智能家居,从互联网到物联网,可以看到当今互联网的显著特征:

  • 设备智能化
  • 软件服务化
  • 多领域协作密切化

而各种丰富的软件服务之间又是紧密相关的,对产品的质量和安全性也提出了更高的要求。Rust 等新兴语言将安全性提升到了一个新的高度,同时又保证多种编程范式的灵活应用,这是新兴语言生命力旺盛的根本原因之一。

而对于传统语言,在这种历史的契机之下,有必要集结、整合各领域的安全编写规则,形成综合规范体系,以实现两个目标:

  • 企业对产品代码质量进行统一管控
  • 使从业人员形成完善的安全知识体系和严谨的工作态度

三大领域

同一门语言在不同的领域有不同的侧重,嵌入式系统更注重在有限资源下的专用性和实时性,由于专有硬件更加多样化,所以嵌入式软件也更注重可移植性。对于桌面软件来说,其环境是灵活多变的,还需要防止其他程序的恶意干扰,所以桌面软件往往更强调健壮性。在通用架构下桌面与服务端的本质区别实际上并不是特别明显,但在桌面的基础之上,服务端软件更注重稳定性以及其专有的网络安全措施。

举个例子,在资源管理上,嵌入式系统和服务端系统有较大差异,“动态内存分配”这种资源管理方式在服务端可能完全不是问题,但在嵌入式等环境中可能就是需要规避的原则性问题了。

再比如进程崩溃这种问题,在服务端会造成“拒绝服务”这种安全漏洞,造成业务瘫痪,在桌面端除了给用户造成不好的体验外,还可能会遭到恶意调试,导致隐私泄露等安全问题,在嵌入式环境中甚至会导致设备的损毁,总之,产品的健壮性和安全性是紧密相关的。

360 质量工程部集结整合了 C 和 C++ 语言在各领域的注意事项,总结成《360 安全规则集合》,已在 Github 上开源,也为其他语言的相关工作提供参考模式。

360 安全规则集合

项目地址:

360 安全规则集合icon-default.png?t=N7T8https://github.com/Qihoo360/safe-rules

Web 版:

360 安全规则集合icon-default.png?t=N7T8https://saferules.github.io/

其特点有:

  • 严格遵循编程语言的 ISO 标准
  • 融汇多种权威规范体系,符合国家审计标准
  • 适用于桌面、服务端及嵌入式等多种应用场景
  • 满足规范、审计、培训等多方面需求
  • 注重自动化代码审计的实现方法

保障软件安全、提升产品质量是宏大的主题,需要多方面地学习、探索与实践,欢迎提供修订意见和扩展建议。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值