龙空技术网

C#编程初探(2)走近编程

自由践行 673

前言:

此刻姐妹们对“华为c语言编程基础”大体比较关怀,看官们都想要剖析一些“华为c语言编程基础”的相关文章。那么小编也在网摘上搜集了一些关于“华为c语言编程基础””的相关内容,希望同学们能喜欢,各位老铁们一起来学习一下吧!

上节我们是从远处观望C#编程,对它有了一点了解,这节让我们继续走近它。

什么是编程?

很多时候,别人一听说你是编程的,哇!好高大上!其实这是不了解的人对编程的一种误解,我们程序员都自嘲自己是码农。就比如我今天教大家编程,其实跟教大家种地没啥本质区别:)

我们都说编程,那什么是编程呢?

单从编程这两个字来看,很好理解。编程就是编制程序的缩写。编制是动作,程序是结果。

既然编制是动作,就跟做其他事一样,需要明白用什么编?怎么编?用什么涉及到材料、工具的选择,怎么编涉及到流程、工艺的要求。

既然程序是结果,也跟做其他事一样,需要明确最终结果是什么?能干什么?是什么决定了方向,能干什么决定了标准。

我觉得编程跟写作文很相似。比如我们分别把写作文和编程,按上面的路子套用一下:

用什么语言?汉语(C#)

用什么材料或工具?纸、笔(Visual Studio)

流程:审题、立意、选材、提纲、修改(需求、功能、架构、编制、调试)

工艺:总分总(WinForm)

是什么?记叙文(Windows下的应用程序)

能干什么?通过评分标准获得分数(采集某网站数据)

不加括号写作文的部分大家都能看懂是什么意思,括号内的编程术语大家可能就一脸懵。其实这些字母不过就是行业的一些专有概念或名词,你不了解这些概念或名词,当然就很难理解,但道理却都是相通的,无非就是像写作文一样写出一堆代码来嘛。写作文的成果是文章,编程的成果就是程序嘛。所以,不需要把编程想得那么神秘或高深,这就跟我们平时做其他事一样,大同小异。

剥开了编程的外纱,我们再看什么是C#编程。这里C#指的是一门编程语言,那什么是编程语言呢。

什么是编程语言?

要解释清楚编程语言,就必须先了解什么是机器语言。

我们说见人说人话,见鬼说鬼话。那么见到电脑,就得说电脑能懂的话,电脑能懂的话就是机器语言。但机器语言都是0101这种机器码构成的,对我们人来说简直就是天书。

这太难沟通了,那如何来解决呢?

我先举个例子,比如我们表达爱对方:

对中国人说:我爱你;对英国人说:I Love you;对日本人说:あなたのことが好きです(百度翻译的)

虽然不同国家的语言发音、书写都不同,但最终目的都是为了表达一个意思。

所以,伟大的计算机先驱们就发明了各种编程语言,每种编程语言都有自己各自的语法、规范,也就是我们上一节提到的各种编程语言,Python、C/C++、Java等。不过无论是哪种语言,最终都将被翻译成为机器语言。

那这个翻译工作谁来做呢?这就不得不提到编译器了。

什么是编译器

我们把从编程语言翻译成机器语言的过程,叫做编译。这种有编译能力的软件,就被称为编译器。

虽然我们说编译就两个字,好像也不过就是把“我爱你”替换成“I love you”这么简单的事,但实际上为了能够满足对复杂社会的抽象解释,它的工作原理还是挺复杂的,不过大部分知识相对都比较深奥,也跟我们日常编程没太大关系,这里我就不展开了。

需要提及的是编译器与操作系统的关系。

什么是操作系统

我们都知道软件要想运行,必须依赖于硬件,硬件的核心就是CPU,也就是我们经常说的芯片。不同架构或型号的CPU有不同的指令集,这个指令集就是我们前面说的机器码。正常我们编程,就是面向硬件的编程。比如我们在大学学单片机的时候用的是8051芯片,那都是直接面向硬件写汇编代码(基本等价于机器码),就没有操作系统这个概念。

但随着科技的发展,不同类型、不同功能的硬件厂商有很多,对一些复杂的设备,比如电脑或手机,需要不同的供货商提供不同类型的设备。拿电脑CPU来说,就分Intel和AMD。如果每种不同的硬件都编写不同的程序那就没法玩儿了。所以聪明的人类,为了解决这个问题,很早之前就在程序与硬件之间增加了一个媒介,专门用来管理和调配这些硬件的,我们把这个媒介称之为操作系统。操作系统对程序说:程序,你不用关心硬件是什么以及怎么工作,你只要告诉你想干什么,我来指挥他们去做。然后回头对那些硬件们说:硬件,你们甭搭理软件是怎么设计的,你们就按我的指令来执行,我让你往东你们别有的偏往西。当然操作系统做的事情不止于此,这里我只是做个简单的比方。这种规范化的约定使得软件和硬件的沟通成本大大降低,IT行业也随之高速发展。

于是乎,对电脑、手机这种硬件和软件品类都极其丰富的设备,我们面向硬件的编程就变成了面向操作系统的编程。

目前主流的操作系统Windows、MacOS和iOS、Android、Linux、Unix,当然还有我们华为的Harmony。不同的操作系统能够执行不同类型的程序,这种可以执行的程序就被称为可执行程序,程序的存储表达就是可执行文件。比如windows支持的是exe格式文件,安卓是apk格式文件等。以前这些操作系统都是互相独立的,谁都不能互相识别。但是现在windows11可以直接打开apk文件,这绝对是个进步,以后如果能继续互通,走向大一统那可是美事一桩。

回到主题,把我们编写的代码转换成操作系统能够识别的可执行文件,就是编译器的核心工作之一。

到这里,我把编程、编程语言、编译器、操作系统之间的关系大概讲了一下,了解了这些关系,你也许大概就明白了我们用各种语言编制的代码是怎样能够在不同操作系统上运行的了。相信因果、追求本源,这对我们以后的问题查找和吹牛B都大有好处。

可能有些文字稍微晦涩难懂,看明白的观众老爷们请在评论区扣一下,我给你们点个赞,没有白费我手打这么多字的苦心。没看明白的就多看几遍!看不明白的可以评论区提问。

当然实在看不明白的也无所谓。在实际开发过程中,我们与编译器直接打交道的机会很少,不足以影响实际的编程成果。黄狸黑狸,得鼠者雄。能编出实用的软件,就比什么理论都强!

标签: #华为c语言编程基础