首页 > 编程语言 >详解编程语言之发展趋势

详解编程语言之发展趋势

时间:2022-10-21 18:15:18浏览次数:81  
标签:桌面 语言 编程语言 嵌入式 发展趋势 详解 软件 服务端

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

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

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

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

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

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

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

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

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

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

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

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

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

项目地址:

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

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

 

标签:桌面,语言,编程语言,嵌入式,发展趋势,详解,软件,服务端
From: https://www.cnblogs.com/safe-rules/p/16814387.html

相关文章

  • 详解 RestTemplate 操作
    详解RestTemplate操作作为开发人员,我们经常关注于构建伟大的软件来解决业务问题。数据只是软件完成工作时要处理的原材料。但是如果你问一下业务人员,数据和软件谁更重要......
  • java 线程详解
    线程目录HelloWorld在Java中有两种方式创建线程,第一种方式是实现​​Runnable​​​接口,第二种方式是继承​​Thread​​类,下面是使用示例:publicclassRunnableDe......
  • Iperf参数详解
    IperfIperf是一个网络性能测试工具,可以测试TCP和UDP最大带宽,具有多种参数和UDP特性,可以根据需要调整,报告带宽,延迟,数据包丢失通用参数-b(bandwidth):指定UDP模式使用的带宽,此......
  • MP-SPDZ 之 semi-party流程详解
    为了进一步了解MP-SPDZ各个协议的运行流程,从semi-party协议分析入手,逐渐分析所有协议流程。semi-party协议流程如下图所示:semi-party协议流程总体分两个部分:网络部分......
  • Nagios配置文件nagios.cfg详解
    这里开始要讲一些Nagios的配置。首先要看看目前Nagios的主配置路径下有哪些文件。[root@nagiosetc]#ll总用量152-rwxrwxr-x.1nagiosnagios18259月2414:40cgi.cf......
  • 核心交换机相关技术参数详解
    核心交换机一般指三层交换机。三层交换机就是具有部分路由器功能的交换机,工作在OSI网络标准模型的第三层:网络层。三层交换机的最重要目的是加快大型局域网内部的数据交换,所......
  • 关于Android不同系统版本的市场占比情况详解
    一,google官方统计的不同Android版本市场的占比强开​​google统计的数据情况​​ 这个是google官方对于不同版本的市场占比情况。这个是针对全世界所有的Android手机占比情......
  • B/S架构详解
    资源分类1,静态资源:使用静态网页开发技术发布的资源特点:所有用户访问,得到的结果是一样的如: 文本,图片,音频,视屏,HTML,CSS......
  • java 入土--集合详解
    java集合集合是对象的容器,实现了对对象的常用的操作,类似数组功能。和数组的区别:数组长度固定,集合长度不固定数组可以存储基本类型和引用类型,集合只能存储引用类型使......
  • @PostMapping和@GetMapping用法详解
    publicclassApplyObject{privateStringid;privateStringname;}1、使用post方法调用前端传递参数如果是一个object的话,如{id:'1',name:'2222'}后......