我们在写什么代码
以前专业学习的时候,老师教我们使用 Java Spring 框架写功能,老师没讲明白或者自己有没搞懂的,就到 bilibili 上面看看在线教程
有一天突然想了一个问题,自己到底在写什么,我写的是 Java 代码还是 Spring 代码
Spring 是一个 Java 前后端一体开发框架,你可以用它写一个带后端服务的网站,也可以单纯只写服务端,Web 再写一套。内容很多,很复杂。它包罗万象,无所不能,培训班提供的课程都是零基础入门、入门到精通等一条龙服务
那时自己有点搞不明白,开始掉入哲学思考的深渊。但得益于大脑的遗忘机制,没几天就淡忘了这件事情,从深渊中归来
如今参与工作,实践了几年后,再来看这个问题,面貌终于清晰了一些。可能它的问题本质是:代码是什么
我想,计算机语言是沟通工具,代码是沟通产物
最初,我们想和计算机沟通,让它能够执行一些计算任务,于是根据计算机的实体结构设计了语言,让人能使用语言和计算机沟通,代码也随之诞生
后来,计算任务变得复杂,我们发现一台计算机能被分割成一些程序,不同的程序表达不同的计算任务,于是我们想让不同的程序相互沟通,把他们组合起来,一些用于计算机内部交流的代码出现了
后来,计算任务越来越复杂,代码越来越多,人逐渐看不懂代码的含义。回头再看,原来当初设计的语言有问题,需要不断改进,甚至实现多个新的语言用于不同的沟通场景。于是 Programming language theory 开始了它蓬勃发展的时代。各式各样的语言如雨后春笋般冒了出来
不同的代码驱动了不同系统的运行,然后再需要一定量的代码保证不同系统之间能和谐共处。
问题得到了探索:我写的代码在什么系统下执行任务、解决问题
问题也得到了解答:我说我写 Java ,是指我在 Java 的知识领域内解决问题。我说我写 Spring,是指 Spring 在 Spring 的知识领域内解决问题。只是恰好 Spring 为 Java 的一个子领域或子集,逃不出去,看不到边界,我们才会为此所困扰,而 Spring 的代码也成为了事实上的 DSL