编程软件基础知识——杂记

1 电脑知识

2 编程语言——编译型和解释型

2.1 编译型语言

C和C++这两种语言是编译型语言,编译型语言的特点是执行速度快,缺点是什么呢?编译型语言需要编译器处理,主要工作流程如下:

源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)

编译器调用预处理器进行相关处理,将源代码进行优化转换(包括清除注释、宏定义、包含文件和条件编译),然后,通过将经过预处理的源代码编译成目标代码(二进制机器语言),再通过调用链接器外加库文件(例如操作系统提供的API),从而形成可执行程序,让机器能够执行。在这个工作流程中,目标代码要和机器的CPU架构相匹配,库文件要和操作系统相匹配。如果想在不同CPU的机器或者系统上运行C语言的源代码,就需要针对不同的CPU架构和操作系统进行编译,这样才能够在机器上运行程序。所以,编译型语言的缺点我们就看到了,它不适合跨平台。而且,到这里大家应该能知道,为什么CPU一样,但是exe程序只能Windows中运行,而不能在Mac中运行了。

2.2 解释型语言

解释型语言源代码无需预先编译成可执行程序,在程序执行时,解释器读取一句源代码之后,先进行词法分析和语法分析,再将源代码转换为解释器能够执行的中间代码(字节码),最后,由解释器将中间代码解释为可执行的机器指令。所以,编译型语言的可执行程序产生的是直接执行机器指令,而解释型语言的每一句源代码都要经过解释器解释为可以执行的机器指令,相比之下解释型语言的执行效率会低一些。

例如:Python程序运行时,先将源代码完整的进行转换,编译成更有效率的字节码,保存成后缀为“.pyc”的字节码文件,然后,翻译器再通过这个文件一句一句的翻译为机器语言去执行。

2.2.1 JIT即时编译器(Just-In-Time Compiler)

无论是使用解释器进行解释执行,还是使用编译器进行编译后执行,最终源代码都需要被转换为对应平台的本地机器指令。那么,一些重复出现的代码,就可以将其编译为本地机器指令,重复使用,从而提高效率。这些重复出现的代码包括多次调用的方法和多次执行的循环体。

JIT即时编译器比较典型的例子是在JVM(Java虚拟机)中。Java程序最初是通过解释器进行解释执行的,当Java虚拟机发现某个方法或代码块运行特别频繁的时候,就会认为这是“热点代码”(Hot Spot Code)。JIT即时编译器会将这些“热点代码”编译成与本地机器相关的机器指令,进行各个层次的优化。

3 操作系统、环境变量、服务器

3.1 为什么你需要操作系统

假设你是一个程序员, 你写了一个C程序,如下所示:

1
2
3
4
5
6
7
int main() {
int a = 1;
int b = 2;
int c = a + b;
printf(%d, c);
return 0;
}

你的程序经过编译大概变成了这样的CPU指令

1
2
3
4
5
6
7
8
9
10
11
12
# 初始化a和b , mov指令把前一个操作数的值赋值给后一个操作数
Mov 1, a
Mov 2, b
# %开头的是CPU寄存器, 你可能还记得它是最快最小的存储设备, 我们要把a和b从内存里拿出来, 放进寄存器里
# 接下来Add指令才能工作
Mov a, %eax
Mov b, %ecx
# 加两个寄存器的值, 和写入后一个寄存器中, 在这里是写入eax寄存器
Add %ecx, %eax
# 把这个值写回内存
Mov %eax, c
#打印, 即把内存里的值送到显示器,这里涉及一系列系统调用,现在先不管

指令送进内存,CPU从内存里读取指令(读取指令和执行指令是CPU硬件实现的),执行访问内存,执行计算。 一起看起来都很美好,看起来我们不需要一个操作系统。

没错!恭喜你发现一个惊天大秘密!我们就是不需要操作系统!

如果我们的程序就一直这么简单的运行,那可能的确不需要。可这不符合我们对现代计算机的认知。浏览器和音乐播放器是两个不同的程序,为什么你能一边刷网页一边听歌?一定是这两个程序一起运行了,可是按说你只有一个CPU, 一套内存,只能跑一个程序,为什么你能同时运行好几个程序呢?是的, 这就是操作系统最基本的功能,操作系统负责管理CPU和内存,让每一个程序都觉得自己是独立运行的。

3.2 环境变量

环境变量的作用就是指明操作系统的重要具录在哪里

参考链接:『教程』什么是环境变量 哔哩哔哩 bilibili

3.3 服务器

3.3.1 什么是服务器

首先可以很明确地说服务器也是电脑,服务器是为电脑提供服务的电脑,既然是电脑,那么它也一样是由CPU,主板,内存条,硬盘,机箱,电源等硬件组成。

还是拿人类来举例子,如果说电脑是人类的话,那么,服务器就是人类中的医生或者公务员或者其他不同的角色,也就是说,都是人类,只是不同人通过学习一些专业技能然后赋予了不同的角色。

现在理解一些了么?也就是说一台电脑,如果它安装某些特殊的软件用于某种专业的用途,那么它就可以叫做是某种服务器。这是软件层面的,硬件层面的后面再说。

比如最常见的网站服务器,当你在浏览器里敲入http://www.baidu.com的时候,最终你的电脑是访问到的另外一台电脑,这台电脑会被安装网站服务的软件,并且会有网站方面的网站程序,最终起作用的是这些软件跟程序,这台电脑啥事情都不干,专门用来响应大家的访问请求,于是乎,他就叫做网站服务器,也叫web服务器,现实中并不是一台电脑,而是很多很多台电脑专门干这个事情,因为全球这么大的用户量,如果都访问一台电脑,不光是网络带宽问题,就这一台电脑早就累死掉了,这背后有很深层次的技术问题。

再说两种服务器,一种是文件服务器,一种是数据库服务器,直观一些的你可以把百度网盘理解为文件服务器,虽然背后其实更加的综合,但是这种专门用来做文件存储的电脑就可以称为文件服务器了。

跟另外两种服务器一样,数据库服务器也是专门只干一件事情,就是存储数据,数据库服务器一般不对外,它再为网站服务器或者其他的程序来提供服务,而且它会安装专门的数据库管理软件,来进行数据管理,这些数据的组织形式有点像excel表格里面的数据,其他电脑对他进行操作的时候,就好像跟他吼一声: “hey,帮我查查那个谁的什么什么信息。”,数据库服务器的软件就会把需要的数据给它返回回去。

所以当你访问百度搜素某个关键词的时候,首先你访问到的是百度的某台网站服务器,网站服务器只是负责请求的处理跟结果的反馈,具体的数据它得更数据库服务器要去,数据库服务器把数据反馈给网站服务器,网站服务器再把结果组织输出成为你看到的模样。

3.3.2 为什么要为深度学习配置专门的服务器

首先解释一下深度学习为什么需要显卡计算,GPU是为大规模的并行运算而优化,GPU上则更多的是运算单元,GPU往往拥有更大宽带的显存,因此在大吞吐量的应用中也会有很好的性能,所以显卡选择最重要。专门的深度学习服务器可以方便实现实验室计算资源共享,多用户可以在个人电脑编写程序,远程访问到深度学习服务器上排队使用计算资源,减少购买设备的开支。因此准备基于CUDA计算是NVIDIA开发的GPU并行计算环境,英伟达产品系列是个不错的选择,或者选择英伟达国内代理商。

  • 深度学习需要大量的并行计算资源,而且动辄计算几天甚至数周,而显卡(GPU)恰好适合这种工作,提供几十上百倍的加速,性能强劲的GPU能在几个小时内完成原本CPU需要数月完成的任务,所以目前深度学习乃至于机器学习领域已经全面转向GPU架构,使用GPU完成训练任务。
  • 如今即使使用GPU的深度学习任务也要持续数天乃至数月(取决于数据规模和深度学习网络模型),需要使用单独的设备保障保证训练任务能够7x24小时长期稳定运行。
  • 独立的深度学习工作站(服务器)可以方便实现实验室计算资源共享,多用户可以在个人电脑写程序,远程访问到深度学习服务器上排队使用计算资源,减少购买设备的开支且避免了在本地计算机配置复杂的软件环境。
3.3.3 如何免费使用Google colab服务器训练网络

4 Pycharm的基本使用

4.1 Python安装前必须知道的三个概念

4.1.1 Python解释器

Python解释器是将Python源码高级语言解析(翻译)为二进制机器语言的工具。通常说安装Python就是指安装Python解释器。目前最新的Python解释器版本是Python 3.8x。另外,Python 2.x和Python 3.x不兼容

4.1.2 Python编辑器

正如在电脑上编辑文档需要用Word、处理数据需要用Excel、做演示文稿需要用PPT、修图需要用PS一样,编写代码也需要特定的工具,而这个用来编写代码的工具就叫做编辑器。Python的编辑器有很多,有Python解释器自带的IDLE、基于iPython的Jupyter Notebook、也有如PyCharmSpyderWinglDE等主要针对Python代码编辑的编辑器;还有很多编辑器,如Sublime Text、Vim、VSCode等适合各种编程语言的编辑器

4.1.3 包管理工具

Python最大的优点之一就在于其丰富的库,pip ( package installer for Python)就是库管理工具,通过pip就可以安装、卸载、更新众多的库。

Python3.4以后的版本的解释器自带pip功能

4.1.4 小结
  • 一般说的安装python就是指安装python解释器,因此python解释器必须安装。
  • 出于编写代码效率的考虑,有必要安装专业的代码编辑工具,最常用的包括Python解释器自带的IDLE、Anaconda中的Jupyter Notebook以及专门针对Python的PyCharm。
  • Python 3.4以后版本的解释器自带pip工具,因此不用自行安装。
  • Copyrights © 2015-2024 wjh
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信