计算机概念篇
目录
文章目录
一、介绍
本教程针对计算机纯小白(不会开关机的另说)和小萌新程序员,解释一些有关计算机的基本概念,包括但不仅限于两种操作系统(Windows和类Unix)中的路径、命令行、shell、编辑器、编译器、cmd、环境变量等令小白混淆困惑的知识。本人也在学习中,如文中有错误的概念,请大佬高手指出,不胜感激!
二、概念解释
路径(PATH)
经常在水群的我常发现新人们会提问某某路径是什么,路径在哪,什么是路径……所以此放在第一个讲。所谓路径,就是指文件系统中文件或目录的位置。路径描述了文件或目录在文件系统层次结构中的位置,以便操作系统能够找到并访问它们。在常见的操作系统(如Windows、Linux和macOS)中,路径可以分为两种类型。
-
绝对路径(Absolute Path)
绝对路径是文件或目录在文件系统中的完整位置。它**从文件系统的根目录开始,一直描述到目标文件或目录的位置。**例如,在Windows系统中,一个绝对路径可能类似于 C:\Users\Username\Documents\file.txt。在类Unix系统(如Linux和macOS)中,绝对路径可能类似于 /home/username/documents/file.txt。发现区别了吗,Windows中的路径是反斜杠,类Unix系统中的路径是斜杠,并且对于所谓的根目录,两个系统间有不同的解释,详看文件系统小节。
-
相对路径(Relative Path)
相对路径描述文件或目录相对于当前工作目录的位置。当前工作目录是执行命令或程序的当前目录。相对路径不需要完整的文件系统路径,而是通过参照当前工作目录来指定文件或目录的位置。例如,相对路径可能是 Documents\file.txt,表示文件位于当前工作目录下的Documents子目录中。在两种系统间,都可以使用
.
表示当前目录,使用..
表示上一级目录,这种表示方法是文件系统中的一个标准概念。
路径在文件系统中的使用是非常常见的,例如在命令行中执行命令、编写脚本或程序时,指定要操作的文件或目录的位置。路径的正确使用对于文件系统的管理和操作是至关重要的。
文件系统(File Syetem)
- Windows 文件系统
Windows系统使用的主要文件系统是NTFS(New Technology File System)。在较早的Windows版本中,如Windows 98和Windows ME,使用的是FAT32(File Allocation Table)文件系统。NTFS具有强大的权限控制功能,支持更精细的安全设置,如文件级别的权限和加密。
- Linux 文件系统
大多数Linux发行版使用的是扩展文件系统(Ext),其中最常见的是Ext4。其他常见的文件系统包括Ext3和Ext2。 Linux文件系统强调权限控制,使用文件和目录的权限位来定义对文件的读、写、执行权限。Linux文件系统遵循类Unix的层次结构,根目录表示为/,并采用类似目录结构的文件组织方式。
-
区别和注意事项
-
根目录:
在Windows系统中,通常使用多个逻辑盘符(如C:、D:等)来表示不同的存储设备或分区。每个逻辑盘符都有自己的根目录,例如C盘的根目录为C:\,D盘的根目录为D:\,以此类推。每个逻辑盘符都是一个独立的文件系统树结构,有自己的文件和目录层次结构。因此,从操作系统的角度看,Windows系统中有多个根目录。
在Linux系统中,只有一个根目录,表示为
/
(斜杠)。无论系统中有多少个存储设备或分区,它们都被挂载(mount)到根目录下的不同子目录中,而不是作为独立的根目录。这种方式统一了整个文件系统的层次结构,使得所有的文件和目录都能够通过单一的根目录来访问。 -
路径分隔符: Linux使用正斜杠
/
作为路径分隔符,而Windows使用反斜杠\
。 -
文件路径表示: Linux区分大小写,而Windows文件系统默认是不区分大小写的。因此,在Linux中,/home/User和/home/user是不同的路径,而在Windows中它们被视为相同的路径。
-
权限控制: Linux的权限控制更加基于用户和组,而Windows NTFS文件系统提供更为复杂和灵活的权限设置。
-
文件命名规则: Windows文件系统不允许使用某些特殊字符作为文件名,而Linux文件系统对文件名的限制较少。
-
文件路径长度: Windows系统中文件路径的长度限制较短,而Linux系统中路径长度的限制较大。
-
这些是两种操作系统文件系统的一些主要区别。虽然它们有不同的设计和特点,但各自都有适用于其用途的优势。
命令行(Command Line)
命令行 是指通过文本界面(命令行界面)输入文本命令来与计算机进行交互的方式。在这个文本界面中,用户可以输入命令来执行各种操作,例如运行程序、管理文件、执行系统命令等。
Shell 是一种命令解释器,负责解释用户在命令行中输入的命令并将其转化为操作系统能够执行的指令。因此,命令行中的命令实际上是由Shell解释执行的。**所以,虽然命令行和Shell通常在讨论时被一起提到,但它们并不是完全相同的概念。命令行是用户用来输入命令的界面,而Shell是解释和执行这些命令的程序。**在不同的操作系统中,可能会使用不同的Shell,例如在Linux系统中常见的Bash Shell或zsh shell。

或者在Windows系统中的Command Prompt(cmd.exe)或PowerShell

总结:命令行通常和shell一起运行,在命令行上输入命令,由shell负责解释执行。
ps:值得一提的是,在各种IDE或编辑器中会有终端这个概念,终端一词其实也是指代命令行终端+shell。
编辑器、编译器与IDE
-
编辑器
在计算机领域,“编辑器”(Editor)是指用于创建、查看、修改和保存文本文件或代码文件的软件工具。编辑器可以具有各种功能和特性,以满足不同用户和任务的需求。以下是编辑器的一些主要类型。
- 文本编辑器(Text Editor): 这种编辑器专注于处理纯文本文件,如普通文本文件、配置文件等。它们通常提供基本的文本编辑功能,如插入、删除、查找和替换文本等。一些常见的文本编辑器包括Notepad(在Windows中)、TextEdit(在macOS中)、Nano、Vim和Emacs等。
- 代码编辑器(Code Editor): 专门用于编辑计算机程序源代码的编辑器。它们通常提供语法高亮、自动缩进、代码折叠、代码补全等功能,以提高编码效率。一些流行的代码编辑器包括Visual Studio Code、Sublime Text、Atom等。
- 富文本编辑器(Rich Text Editor): 与文本编辑器不同,富文本编辑器允许用户编辑富文本,包括格式化文本、插入图像、链接等。Microsoft Word和Google Docs都是富文本编辑器的例子。
-
编译器
编译器是一种将高级程序代码(通常是源代码)翻译成目标代码(通常是机器代码或字节码)的软件工具。编译器是一种翻译程序,它接受程序的源代码作为输入,进行一系列的词法分析、语法分析、语义分析、优化和代码生成等步骤,最终生成可执行文件或其他目标文件。以下是主要的编译器工作步骤。
- 词法分析(Lexical Analysis):将源代码拆分为词法单元(token),例如关键字、标识符、运算符等。
- 语法分析(Syntax Analysis):根据编程语言的语法规则分析词法单元的结构,构建抽象语法树(Abstract Syntax Tree,AST)。
- 语义分析(Semantic Analysis):检查源代码是否符合语言的语义规则,捕捉一些语法上无法检测到的错误,例如类型错误。
- 优化(Optimization):对抽象语法树进行各种优化,以提高生成的目标代码的效率。
- 代码生成(Code Generation):将优化后的抽象语法树翻译成目标代码,这可以是机器代码、字节码或其他形式的中间代码。
- 链接(Linking):将生成的目标代码与库文件等进行链接,最终生成可执行文件。
编译器的作用是将高级语言编写的源代码转换为计算机能够执行的机器代码或其他形式的目标代码。这使得程序可以在不同的计算机上运行,而不需要重新编写源代码。流行的编程语言如C、C++、Java等都使用了编译器进行源代码的翻译和生成可执行文件。相对应的,解释器是另一种将源代码转换成可执行代码的方式,但它一行一行地解释源代码而不是一次性将整个程序翻译为目标代码。
故常见有vscode+gcc就是一对编辑器+编译器的组合啦,有此组合可以轻松的编写一些简单轻量的代码。下面以各位程序员敲下的第一段程序为例解释编辑器编译器相对路径绝对路径等概念:
-
IDE
所谓IDE就是集成开发环境(Integrated Development Environment)的缩写,它集成了以上提到的编辑器、编译器以及未提到的调试器、版本控制工具等功能,它是一种软件应用程序,提供了开发者在一个统一界面中进行软件开发所需的各种工具。以下列出IDE的主要组成部分。
- 代码编辑器: 提供代码编写功能,通常支持语法高亮、代码折叠、自动完成等功能,以提高开发效率。
- 编译器/解释器: 支持将源代码转换成可执行代码的工具,可以进行代码编译、构建和运行。
- 调试器: 用于调试代码,包括断点设置、变量监视、单步执行等功能,帮助开发者找出代码中的错误。
- 项目管理工具: 提供项目创建、组织和管理功能,支持多文件的协同开发。
- 版本控制集成: 与版本控制系统(如Git)集成,方便开发者进行版本管理和团队协作。
- 图形用户界面(GUI)设计工具: 用于创建图形用户界面,适用于需要GUI的应用程序开发。
- 性能分析工具: 用于分析和优化代码性能的工具。
IDE的目标是提供一个一体化的开发环境,使开发者能够更方便地进行软件开发、测试和调试。流行的IDE包括Visual Studio、Eclipse、IntelliJ IDEA、PyCharm等,它们适用于不同的编程语言和开发场景。使用IDE通常能够提高开发效率,减少开发过程中的重复性工作,以及简化复杂的开发任务。
环境变量(Environment Variable)
经常有小白问到什么是环境变量,怎么设置环境变量?其实环境变量就**是操作系统中用于存储配置信息和提供系统运行时信息的一种机制。**它们是在操作系统环境中定义的全局变量,可被系统和应用程序访问。环境变量通常包含有关系统配置、路径信息、临时数据等信息。
-
Windows的环境变量
- PATH: 指定可执行文件的搜索路径。
- TEMP 和 TMP: 指定临时文件的目录。
-
Unix/Linux的环境变量
- PATH: 指定可执行文件的搜索路径。
- HOME: 指定用户的主目录。
- LANG 和 LC_*: 指定语言和区域设置。
值得注意的是,网络上所说的修改环境变量在Windows一般指的是修改PATH

而Linux中一般指的是是修改 .bashrc 或 .bash_profile文件,或修改 /etc/environment 文件(对所有用户生效)又或者使用 export 命令直接在命令行中设置临时环境变量。

编码错误(Encoding Error)
可能会有萌新看到过这种错误路径 C:\Users\ä¸æ–‡ç\›®å½•\file.c
,或打开过存在乱码的文件。这种错误路径一般是由于编码问题造成的。那么什么是编码呢?原来编码是一种将字符映射到数字的规则,它是为了在计算机中存储和传输文本信息而设计的。常见的字符编码包括ASCII、GBK、UTF-8、UTF-16、ISO-8859-1等。每种编码方案都给字符分配了一个唯一的数字标识,以便计算机能够正确地解释和显示文本。
在Windows系统中常使用的是一些针对特定语言的编码,如中文常用的 GBK 或 GB2312。而在Linux系统中,通常使用UTF-8。乱码错误常见于有些应用程序或工具在打开文件时会尝试自动检测文件的编码,但有时候它们的检测机制可能出错,导致错误的编码被应用于文件。如一些跨平台工具使用的是UTF-8编码,而Windows工具使用GBK居多,所以就导致在跨平台的工具编辑过的代码或路径加载于Windows环境下的工具时会出现乱码;反之使用Windows环境下的工具编辑过的文件在跨平台工具打开时也会出现乱码的原因就是如此。
为了避免乱码问题,通常需要在文本处理过程中确保一致的字符编码,以及在进行编码转换时采取正确的方法。使用通用的字符编码方式(如UTF-8)通常是一个良好的实践,因为它能够表示几乎所有的Unicode字符,并且在国际化和跨平台方面具有广泛的应用。
但是有令人不爽的一点是,由于Windows终端默认使用GBK作为默认编码,所以就有可能出现使用UTF-8编写的代码中存在中文时会使得代码程序运行在终端时出现乱码

所以此处我们修改一下终端设置(暂时)或修改注册表(永久),让万恶的终端达到编码大一统(UTF-8)!
修改cmd
-
方法1:终端直接设置。在终端直接输入chcp 65001(65001代表UTF-8编码)回车,即可立即修改编码,但是这是临时性的修改,当你重启终端后就会发现又变回GBK编码了。
-
方法2:修改注册表。
按下win+r输入
regedit
打开注册表,在注册表中找~到计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
这个目录,右键新建一个名为autorun
的字符串值,输入数值数据为chcp 65001
点击确定,随后打开任务管理器重启资源管理器即可获得永久使用UTF-8编码的命令提示符(cmd)。
修改power shell
-
方法1:同修改cmd一样临时修改chcp为65001,修改后临时性编码为utf-8,重启失效。
-
方法2:以管理员身份打开power shell,输入
New-Item $PROFILE -ItemType File -Force
回车,打开我的电脑找到路径我的电脑\文档\WindowsPowerShell
找到文件 Microsoft.PowerShell_profile.ps1 以记事本打开。加上这段代码:$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
然后保存退出,继续在power shell中输入
Set-ExecutionPolicy Unrestricted
回车选择 Y 运行,再次重启power shell后输入 chcp 发现是65001(utf-8),修改完成。注:该路径的文件不可删除,删除后power shell恢复GBK编码
再次使用UTF-8编写的代码中存在中文时代码程序运行在终端就不会出现乱码啦

总结:乱码通常就是由于字符编码的不一致或错误导致的。
三、总结
在计算机领域的基础概念中,路径是指文件或目录在文件系统中的位置,包括绝对路径和相对路径。文件系统在Windows和Linux中有差异,涉及根目录、路径分隔符、权限控制等。命令行是通过文本界面与计算机交互的方式,而Shell则是解释和执行命令的程序。编辑器用于编辑文本或代码文件,编译器将高级代码翻译为目标代码,而IDE集成了编辑器、编译器、调试器等工具。环境变量存储配置信息,Windows和Linux设置方式略有不同。这些概念对于理解计算机操作和软件开发至关重要。本文章可能还有许多未提及的基础概念,文章还会持续更新,如还有不了解不清晰的概念可在评论区提问(或在本人博客网站|鱼圆’s refrigerator留言,作者会酌情作答或添加进文章中,谢谢!