编程需要考虑的问题

摘要

编程更像是作文的写作过程,而编程的语法规则更像是好的汉字,好的代码就像是一种优秀的模板示例作文。编程的难点可以从以下几个角度进行论述,其中分别是编程语言的分类、编程的面向性、编程的逻辑性、编程的安全性、编程的重用性。

一、编程语言的分类

编程语言的种类有非常非常的多,就像是各国语言一样,都存在其特定的规则和语法,但从与计算机的角度来说,其根本上可以分为机器汇编语言和高级语言。我们都知道对于计算机而言,其底层都是01的机器码表示,那么对于特殊的机器码进行特定的含义赋予就变成了汇编语言。而高级语言类似于C++、JAVA、PYTHON等,他们在原始的汇编语言的基础上添加了一层编译,通过将高级编程语言进行翻译成汇编语言后在进行汇编语言的执行过程。从本质上讲,其本身的原理就是将一些基本的操作在进行封账分层,这样子原本10步的汇编语言映射到高级语言的一个关键字,极大的减少了编程的难度,同时加入了一些上下文的耦合关联性控制,更符合人类的串行逻辑思维。

但是无论是那种编程语言,其本质上是一种机器语言,写成可以让计算机的明白的东西就需要把所有的细节逻辑点都想通,比如对于人思维中我需要存一些数据的一个很泛的概念,对于机器计算机而言就需要明确存储的地址、存储的大小、存储的类型等等。但很幸运,有一些很底层与硬件逻辑交互的细节已经被计算机系统屏蔽了,我们在编程时更多的只需要关注业务逻辑所以没有感受到编程很难,但这些更本质的与硬件适配的逻辑是相当复杂的。(试想一下每次在进行变量赋值时,我都需要获取其地址大小,变量数据大小,存储位置,比特变化的翻转逻辑那可是很复杂的)

二、编程的面向性

随着科技的发展与时代的进步,很大的一个区别就是各个领域之间存在愈来愈大的领域壁垒,各个领域之间专业的鸿沟也越发明显。这种问题带来的现象就是任何一个换领域工作的人都不能在很短的时间内完全引领这个行业,个人的天赋智力的左右占比将受限于行业的经验积累(个例除外)。

编程的面向性就是面向于特定行业领域,行业工作的定制化编程。这个时候编程的代码很大一定程度上取决于你对这个领域的功能逻辑、安全逻辑的经验理解。如果你完全不理解这个领域系统的功能需求是什么,那么代码肯定是可以写的无非就是不断的修修改改、改改修修。总是在修补的路上但却一直出问题。

三、编程的逻辑性

编程的逻辑很多类别,根据编程语言的风格可以分为同步编程和异步编程。从进程与线程的角度可以分为单线程、多线程、分布式。从时间域上数据交互可能在一秒内有100M次,那么留给自己考虑如何分配和处理的代码逻辑就是划分的时间片很小。同时对于并发模式下,你个人需要同时思考很多个闭环逻辑才能确保代码是正确的。

四、编码的安全性

安全性是很多程序员都会忽略的一个问题,安全性又可以分为代码的逻辑语法安全性、数据安全性、通信安全性。

  • 语法安全性又可以分为静态安全性和动态安全性,静态安全性在静态分析中很大程度上可以被检查出来;动态安全性是在程序运行时动态变化的;
  • 数据安全性:都听说过破解这个名词,如果你使用vs2015编程,那么生成的exe通过逆向软件解析可以很轻易地反算出你的软件功能,这样辛辛苦苦开发的代码就变成别人的了;
  • 通信安全性:数据在交互的过程中是否会被篡改;

 

五、编程的重用性

代码的重用性是一个代码走向成熟的重要标志,可以被重用的代码一般都经过了大量的验证。其实代码的重用性就像是类的继承一样。如果我们把机器码作为一个代码编程类Class code,那么后续的继承关系可以表示如下:

  1. class code
  2. class code汇编
  3. class code高级语言
  4. class code领域一功能类---class code 领域二功能类

如此新的系统架构只需要在工程文件里导入上述4便可,这样将会极大的加速软件开发过程。

总结

总的来说,编写代码是一个大工程,需要从功能实现、代码速度优化、数据安全、代码复用等角度不断的优化升级。如果你只想写一个函数实现一个小功能,那也需要考虑怎么让机器实现。

你可能感兴趣的:(每日一个C++基础系列,c++,vscode,开发语言,设计规范)