1开篇:应用系统源代码平台移植的理论指导思想

一:因工作需要一直在做不同平台间的代码移植,从最开始的对照旧系统代码手动翻译成新系统代码,到借助简单工具构建的编码框架,再到手动编写代码转换工具。手动编写代码转换工具经历了从截取文件字符串,在到借助语法分析工具转换代码。转换始终是按照就语言的语法规则一行对一行的方式翻译。

迁移的规则:新系统的功能和旧系统功能相同,使新系统和旧系统无缝迁移。

行对行的翻译导致了因编程语言的差异,为了和旧语言的功能,将新系统语言封装成和旧系统编程语言功能相同的编码,因此产生了如下的问题:

1 :新系统封装导致了新系统的编码风格和特征和旧系统很像。从而形成新语言封装成了旧系统的语言风格。

2 :新系统封装了大量处理,封装的内部执行占用的大量的运行时间,导致了新系统运行效率降低。

3 :新系统封装实现了旧系统特有的操功能,该功能和旧语言的功能相同,在使用新语言编程时,必须了解旧语言的功能才能正确理解代码功能,大大提高了学习和维护成本。

因上述种种原因,行对行翻译并不是客户最佳需求,客户更想转换后的代码编码按照新语言的编码规范进行转换。

为了实现将旧系统语言转换成新系统的新开发语言,并符合新语言的编码规范,在转换过程中转换过程在摸索前进,没有转换后的目标和转换的规则和转换的制定规则指导思想。

转换的思想是:分析旧语言编码规范和功能,将其成新语言。其中使用到了:分析,分类,归类,转换,生成的功能,该功能符合数学上的拓扑学的思想。可以将拓扑学做为转换的数学指导思想。

作为指导思想的可行性分析:

1 :先看一个示例:

1开篇:应用系统源代码平台移植的理论指导思想

左右两个图片是否为同一个图形,从在通常状态下的是两个完全不同的图形,但是在拓扑学结构中他们两个是同一个图形,这里使用到拓扑学中的同胚的概念。具体的转换过程参照拓扑学相关资料,本处只说明简要步骤:

1 :抽象,2 :变形,3 :回复。

同理:使用工具进行代码转换也是这个过程,解析代码,转换代码,生成新代码。该过程和上述拓扑学中变化过程完全切合,所有可以使用拓扑学做工具转换的数学理论基础。

二:为什么要用数学的方式进行分析,因数学还有自身的严谨性,抽象性。

  • 笔者文笔有限,必备强求文字逻辑,做说明问题即可。

Original: https://www.cnblogs.com/shenvsxian/p/16407047.html
Author: 大哉乾元万物资始
Title: 1开篇:应用系统源代码平台移植的理论指导思想

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/588718/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java你可能不知道的事(3)HashMap

    概述 HashMap对于做Java的小伙伴来说太熟悉了。估计你们每天都在使用它。它为什么叫做HashMap?它的内部是怎么实现的呢?为什么我们使用的时候很多情况都是用String作…

    Java 2023年6月13日
    087
  • idea 使用技巧之-多个project 启动idea时选择启动那个项目

    1File ->Settings-> Appearance & Behavior -> System Settings 取消勾选 Reopen proje…

    Java 2023年6月5日
    092
  • 使用Gradle自动创建Java项目结构

    D:\N3verL4nd\Desktop\java>tree 卷 本地磁盘 的文件夹 PATH 列表 卷序列号为 00000200 0006:08B0 D:. ├─.grad…

    Java 2023年5月29日
    085
  • 【Redis】Redis Cluster-集群故障转移

    集群故障转移 节点下线 在集群定时任务 clusterCron中,会遍历集群中的节点,对每个节点进行检查,判断节点是否下线。与节点下线相关的状态有两个,分别为 CLUSTER_NO…

    Java 2023年6月8日
    0100
  • 设计模式之迭代器模式

    迭代器模式又称游标模式,属于行为型模式;指提供一些方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表象。迭代器模式是通过将聚合对象的遍历行为分离出来,抽象成迭代器类来实…

    Java 2023年6月5日
    087
  • ssl生成以及nginx https配置

    https://blog.csdn.net/weixin_35884835/article/details/52588157 Original: https://www.cnblo…

    Java 2023年5月30日
    078
  • leetcode 513. Find Bottom Left Tree Value 找树左下角的值 (简单)

    给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root = [2,1,3]输出: 1 示例 2…

    Java 2023年6月14日
    088
  • 如何解决VMware 虚拟机不能铺满屏幕

    出现这种情况是因为分辨率设置问题,调整分辨率总能达到你想要的效果; 首先设置vmware为全屏模式 查看物理机的分辨率,然后再将虚拟机的分辨率设置了跟物理机的一致。完美解决 win…

    Java 2023年5月30日
    0191
  • 推荐几款最好用的MySQL开源客户端,建议收藏!

    一、摘要 众所周知,MYSQL 是目前使得最广泛、最流行的数据库技术之一,为了更方便的管理数据库,市场上出现了大量软件公司和个人开发者研发的客户端工具,比如我们所熟知的比较知名的客…

    Java 2023年6月9日
    094
  • 070_RabbitMQ的核心组成部分

    RabbitMQ的核心组成部分 RabbitMQ整体架构是什么样子的? RabbitMQ的运行流程 RabbitMQ支持消息的模式 简单模式 Simple 工作模式 Work 发布…

    Java 2023年6月7日
    0113
  • 集合框架(Collections工具类的方法使用—-ArrayList集合存储自定义对象的排序和去除元素重复值)

    Collections:是针对集合进行操作的工具类,都是静态方法。** 面试题:* Collection和Collections的区别?* Collection:是单列集合的顶层接…

    Java 2023年6月5日
    083
  • Ubuntu16桌面版编译和安装OpenCV4

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kuberne…

    Java 2023年6月8日
    0117
  • JavaWeb-Servlet(2)

    Web-Servlet(2)–Thymeleaf 视图模板技术,是做视图渲染的一个技术(静态页面和数据柔和在一起) 基本流程 在服务器端引入Thymeleaf环境 1….

    Java 2023年6月5日
    089
  • JS 模块化- 04 CMD 规范与 Sea JS

    1 CMD 规范介绍 CMD: Common Module Definition, 通用模块定义。与 AMD 规范类似,也是用于浏览器端,异步加载模块,一个文件就是一个模块,当模块…

    Java 2023年6月16日
    091
  • 泛型

    1.给泛型指向数据类型要求是 引用类型,不能是基本数据类型 2.在给泛型指定具体类型后,可以传入该类型或者其子类类型 3.泛型的写法 ​ 常规写法:HashSet set = ne…

    Java 2023年6月5日
    0131
  • ArrayList扩容机制

    写在前面 数据结构在面试中基本都是常问的,但是一般开发中基本上都是在使用没有去关心过怎么实现的。 在数据结构中,链表是一种线性存储结构,也就是常说的线性表。 概念:线性表,是数据结…

    Java 2023年6月5日
    088
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球