程序设计方法的范式演进及发展趋势
The Paradigm Evolution and Development Trend of Programming Methods
摘要: 文章回顾了软件开发方法的范式演进,将之大致划分为三个大的阶段。首先从基于机器指令编程发展到使用计算机高级语言编程,这隔离了指令集的差异,使得面向过程编程得到广泛应用。然后随着软件规模的膨胀,为提高数据的封装性和代码的简洁性,发展了基于对象和面向对象编程,而对不同对象的共同属性进行操作,就称之为面向概念编程,这可协调封装性和灵活性的矛盾。为消除编程语言之间的差异,程序设计中大量采用二进制层面的面向对象编程,即面向组件编程,如果软件的组件可在运行时灵活替换,软件运行环境也从单机状态扩展到整个互联网,则称之为组件市场编程。进入人工智能时代,大型语言模型也将迅速应用于软件开发领域,编程助手可将人类自然语言翻译为程序代码,编程将从面向程序语言转为基于自然语言,隔离了编程语言的差异,使每个人都可成为程序员。编程助手智能化程度提高后就成为数字员工,将进入计算机自主进化编程阶段。程序员还可训练出“数字替身”,让软件开发更为轻松惬意。
Abstract: This paper reviews the paradigm evolution of software development methods, which can be roughly divided into three major stages. Firstly, the development from machine instruction based programming to programming using advanced computer languages has isolated the differences in instruction sets, making procedural programming widely used. Secondly, with the expansion of software scale, in order to improve data encapsulation and code simplicity, object-based and object-oriented programming have been developed. Operating on the common properties of different objects is called concept-oriented programming, which can reconcile the contradiction between encapsulation and flexibility. Lastly, in order to eliminate the differences between programming languages, binary level object-oriented programming is widely used in program design, which can be called component oriented programming. If the software components can be flexibly replaced at runtime, and the software running environment extends from the stand-alone state to the entire Internet, it can be called component market programming. Entering the era of artificial intelligence, large language models will also be rapidly applied in the field of software development. Programming copilots can translate human natural languages into program codes, and programming will change from programming languages oriented to natural languages based, isolating the differences between programming languages and enabling anyone to become a programmer. After the intelligence level of programming copilots improves, they will become digital employees and enter the stage of computer autonomous evolution programming. Programmers can also train “digital avatars” to make software development easier and more enjoyable.
文章引用:徐明毅. 程序设计方法的范式演进及发展趋势[J]. 软件工程与应用, 2024, 13(5): 651-659. https://doi.org/10.12677/sea.2024.135067

参考文献

[1] 杨芙清. 软件工程技术发展思索[J]. 软件学报, 2005, 16(1): 1-7.
[2] 杨芙清. 从软件工程入手[J]. 软件世界, 2005(1): 40-41.
[3] 梅宏, 申峻嵘. 软件体系结构研究进展[J]. 软件学报, 2006, 17(6): 1257-1275.
[4] 梅宏, 黄罡, 刘譞哲, 等. 网构软件研究: 回顾与展望[J]. 科学通报, 2022, 67(32): 3780-3792.
[5] 赵永升, 宋丽华. 程序设计方法SPP与OOP的比较[J]. 烟台师范学院学报(自然科学版), 2002, 18(3): 229-233.
[6] 刘琴. 软件工程中程序设计方法的比较[J]. 计算机时代, 2017(7): 53-55.
[7] Lippman, S.B. 深度探索C++对象模型[M]. 侯捷, 译. 武汉: 华中科技大学出版社, 2001.
[8] 皮德常, 王宁生. 一种基于可扩展对象的程序设计方法[J]. 计算机应用研究, 2002(1): 113-114, 120.
[9] 陈叶旺, 余金山. 泛型编程与设计模式[J]. 计算机科学, 2006, 33(4): 253-257.
[10] 孙斌. 面向对象、泛型程序设计与类型约束检查[J]. 计算机学报. 2004, 27(11): 1492-1504.
[11] 潘爱民. COM原理与应用[M]. 北京: 清华大学出版社, 1999.
[12] 李志辉, 崔洪芳. 组件化程序设计方法和面向对象程序设计方法的比较[J]. 福建电脑, 2004(11): 21, 11.
[13] 李杰, 韩建敏. 组件化程序设计方法的探讨[J]. 福建电脑, 2006(4): 66-67.
[14] 黄罡, 梅宏, 杨芙清. 基于反射式软件中间件的运行时软件体系结构[J]. 中国科学: 技术科学, 2004, 34(2): 121-138.
[15] 张伟, 梅宏. 基于互联网群体智能的软件开发: 可行性、现状与挑战[J]. 中国科学: 信息科学, 2017, 47(12): 1601-1622.
[16] Koenig, A., Moo, B. C++沉思录[M]. 黄晓春, 译. 北京: 人民邮电出版社, 2008.
[17] 古思山, 蔡树彬, 李师贤. 从面向方面程序设计的定义到面向方面程序设计语言[J]. 计算机科学, 2011, 38(10): 133-139.
[18] 左正康, 刘志豪, 黄箐, 等. Apla与程序设计语言泛型特性比较研究[J]. 江西师范大学学报(自然科学版), 2019, 43(5): 454-461.
[19] Vandevoorde, D., Josuttis, N.M. C++ Templates中文版[M]. 陈伟柱, 译. 北京: 人民邮电出版社, 2004.
[20] Plauger, P.J., 等. C++ STL中文版[M]. 王昕, 译. 北京: 中国电力出版社, 2002.
[21] 侯捷. STL源码剖析[M]. 武汉: 华中科技大学出版社, 2002.
[22] 徐敏, 周定康. 组件技术在软件开发中的应用[J]. 计算机与现代化, 2002(2): 1-3.
[23] 徐春晓, 孙涌. 一种嵌入式轻量级GUI构件的实现方法[J]. 苏州大学学报(工科版), 2009, 29(3): 1-4.
[24] 茅正冲, 叶臻, 黄芳. 基于构件的可配置嵌入式应用程序设计模式[J]. 计算机测量与控制, 2015, 23(4): 1432-1434, 1437.
[25] 高寅生, 扬志远. 跨越自然语言与编程语言的“鸿沟” [J]. 云南民族学院学报(自然科学版), 2002, 11(1): 552-555.
[26] 左燕. 自然语言与计算机编程语言的相通性微探[J]. 现代信息科技, 2019, 3(22): 28-29.
[27] 刘晋宇. 基于深度学习的自然语言编程任务分解研究[D]: [硕士学位论文]. 长沙: 国防科技大学, 2018.
[28] 马骋原, 李晓辉, 汪涵. 面向智能合约的可编程自然语言设计[J]. 电子设计工程, 2020, 28(4): 10-15, 22.
[29] 王羽, 葛唯益, 李青山, 等. 基于自然语言的跨编程语言微服务集成方法研究[C]//中国指挥与控制学会. 第九届指挥控制大会论文集. 2021: 354-358.