30天学会C语言: Day 0-第一篇不免俗的要来些基础知识

所以我说...程序是虾饺?

程序是可以直接在电脑上执行,以完成某个目的任务一连串指令

换句话说,程序就像是一本说明书,里面详细纪录了完成某个任务的每一个步骤以及顺序;或者你也可以想成我们要电脑做的任务是完成一道料理,那程序就是这道菜的食谱

电脑里面的所有讯息都是由代表 0 和 1 (二进位)的电流讯号组成的,为了让电脑可以直接看懂程序的内容,所以程序也是由一大堆的 0 和 1组成的
这个可以用 0 和 1 表示指令的规则就叫做机器语言

机器语言

机器语言不需要经过转换就可以直接被电脑解读,执行速度应该是最快的,但缺点也很多
除了规则非常复杂,不好学习和阅读,不同厂牌、甚至是不同型号的电脑,使用的机器语言不一定相同,所以一样的软件在不同的电脑上都要重新写一次,使软件开发变成一件相当困难的任务

程序语言

为了让软件开发更加容易,以前的工程师想到用人类较擅长的文字与符号代替原本是数字的机器语言

这类可以用文字符号编写程序的规则就是程序语言,用程序语言编写的就叫程序码

随着时代演进和更多不同的需求出现,越来越多更容易学习、功能更强大,或是专门解决特定问题的程序语言相继出现

我们可以把程序码当成是写食谱,食谱把一道料理分成好几步,只要照着食谱一个步骤接着一个步骤做就可以完成食谱上的料理

程序也是,程序会照着程序码一行接着一行的执行,所以编写程序时我们要把一个任务分成几个步骤,再把这些步骤转换成程序语言一行一行的打出来

学写程序和学外语一样,先学会单字和语法,再慢慢尝试将脑中的想法转换成实际的文字

转换

所以程序语言其实是给人看而不是给机器看的,为了让电脑看得懂我们写的东西,程序码必须转换成机器语言

转换的方式有编译和直译两种,同一种语言通常只使用其中一种方式,所以使用编译的程序语言又叫编译语言,使用直译的叫直译语言

编译和直译都是由软件进行,执行编译的就叫编译器,执行直译的叫直译器,每个语言都会有自己的编译/直译器

这个系列要介绍的C语言就是使用编译

编译

程序码会储存在文字类型(类似.txt)的程序码档案,执行前必须先进行编译
编译时会把整个档案的程序码都转换成机器语言,再把转换後的内容储存在可执行档案(例如Windows的.exe)

我们可以把写程序的人想成台湾厨师,电脑是日本厨师

台湾厨师用繁体中文写好一份食谱,日本书商的译者将整份食谱都翻译成日文,於是所有的日本厨师就都能看懂这份食谱

这边的台湾厨师就是人,繁中食谱是程序码,译者是编译器,日本厨师是电脑,日文食谱就是编译好的程序

  • 编译的优点:
    • 相同平台上,同样的程序码只要编译一次就可以重复使用
      就像前面讲的食谱一样,只要翻译一次就可以给所有日本厨师看
      程序码则是只要编译过一次就可以一直执行,除非程序码有更动才需要再次编译(这样程序码和程序内容相同)
    • 通常执行速度比直译快
  • 编译的缺点:
    • 同样的程序码要在不同的平台执行时需要用新平台的编译器重新编译(所以软件会有Mac版和Windows版)
    • 灵活性较直译差,如果有语法错误要整份程序码都修改好才能执行

直译

关於直译可以到这篇康康


<<:  Day 01 : 导言 - 知识是如何形成的?

>>:  CSS微动画 - 弹出来的选单 Part.1

Day 30 - 人生 Online 好难玩,技能到底要怎麽点才能最强呢?

前言 首先先恭喜我自己完赛。 今年本来是想写 Flutter 的,在我的 Day 1 那篇应该有提到...

【Day 28】 服务器监控 on AWS

那麽在先前实作中,我们业已将 WordPress 网站建筑在 AWS 环境中(可以详【Day 05】...

Day26 指派角色给使用者

昨天角色的 CRUD 功能都完成了,接着就是要把角色指派给使用者了,先建立一个 ViewModel ...

@Day30 | C# WixToolset + WPF 帅到不行的安装包 [最终回]

哈哈, 其实拖了很久了! 今天来把最後剩下功能给补齐,修复跟移除, 只是我在看InstallView...

Day [27] Azure 认知服务-Custom Vision

前言 我们已将Cahtbot与Azure 认知服务(Cognitive Services)中的LUI...