博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(还原本质)编程基础: 基本原理
阅读量:5051 次
发布时间:2019-06-12

本文共 8174 字,大约阅读时间需要 27 分钟。

一,什么是编程

究竟什么是编程?你可能以前听过类似的词语。电脑编程是一套指令?这就是问题,这些声音就像说明就像人类的大脑80%是水。因为你听到他们,并且然后你看到一个复杂的程序如Photoshop或者Flash高清晰度的视频或者3D游戏。

是的,但不能仅仅是一组指令。但他们这些究竟是什么?每一个电脑程序是一系列的指令,一组单独的小命令,一前一后的序列。一个程序可能只包含5个指令,或者5000个,或者500万个。每一个指令告诉计算机做一件很小但很具体的,

把一个伟大的想法分解成个别的步骤的艺术。最精彩的是每个人都能这么做,让我们想象下,你坐在郊区的一个房子里,等待一个朋友来拜访你。你的电话响了,就是她,她问你路线,她告诉你她在附近的加油站,你知道那个加油站,

因为你每天就要经过那。所以有个点A到点B的路程,并滴到你的头里面,但你马上知道这条直线不能相通。你必须分解成简单的部分,这对你来说是自然的事情。因此你开始扣除,你告诉她,首先”向前行驶1公里后“,“右转”,然后

在“云栖路”的“第二个路口”,“右转”。具体,个别,简单,清晰的自包含指令。现在你知道顺序是至关重要的(vitally),你把这些单独的指令混淆能得到很多不同的结果。比如先”右转“,然后”向前行驶1公里“。顺序的不同,会让她到达

其他不同的地方。这些都是同级别的指令"左转",“右转”,“直行”。可以带你在拐角处,也可以带你去美国或者世界的某个地方,只是你需要更多的指令。所以编程就可以理解为给计算机方向,把复杂的想法或者复杂任务拆解到更小的个体指令中

并且使用一个编程语言写那些指令。当然如果你没有编过程,可能不太明白那些指令。你可能只知道右转,左转,直行。那些给计算机最基础的指令到底是什么?它们常常是些基础的东西,就像2个数字相加,屏幕上显示一个字母,检查用户

是否点击了空格键,改变一个单独像素的颜色。你把足够的指令串到一起它就能获得足够远。所以你编写复杂的游戏或应用程序时候,当你有100个人写这些指令,一周60个小时,然后相互协同合作,就能很快完成复杂的产品了。计算机处理指令是非常快的,

计算机会准备的执行指令,但指令是你告诉它的,如果出来的效果和你想要的效果不一样就表示你的指令有错误或者只是顺序上的错误。在编程语言中,我们通过statement来使用那些指令,statement就像中文和英语中的句子一样,使用单词,数字,标点(Punctuation)来表达

一个想法。大多数编程语言的statement是非常短的,就只有几个单词。具体是什么单词,就根据你使用的编程语言不同而不同,一些语言在statement结束后使用分号(semicolon)来作为结束,就像平常句子中的一个句号(period)。一些语言不需要分号结束,只

需要换行即可。一些语言全部是大写字母,一些语言全部是小写字母,一些不在意大小写。现在理解每个语言的规则和语法。所以编程是把你的想法分解成一些指令块,并且知道如何使用编程语言写那些指令块,注意正确的顺序,正确的语法。

二,什么是编程语言

到目前为止,已经有数百种编程语言,但在任何给定时间内,有十几种比较流行的语言,流行的语言表示被用于许多当前的软件,大量开发者使用的语言,并且有活跃的社区(community),某种语言显著(significant)的就业市场。随着时间的流逝

(as the years go by),以前流行的语言可能会没落或者更新,但时间会比较慢,大多数程序员在职业生涯(career)中学习和使用多种语言,一旦你了解基础知识,学习额外的语言是非常容易的,稍后(a little later),我们会更深入当前流行的语言。

但如果是你新手,你可能会思考,为什么有什么多语言,不能都使用最基础的计算机语言吗。其实(actually)这个语言是存在的,CPU的芯片中央处理单元,是不理解目前那些流行的语言的。我们可以非正式(informally)的说,当我们写代码编程时,

计算机能直接理解,但事实一般不是这样。那些是芯片理解的机器码或者叫机器语言,那些指令直接运行在电脑硬件中。那为什么我们不自己写机器码,因为这几乎是不可能的,这些数字的操作,微小的指令,工作于很小的内存块中。即使你能写它,但

其他人不一定会读。这是为机器而不是为人,因为机器码工作在CPU级别,不同的CPU型号对应不同的机器码。在机器码写一个完整的程序就像用钥匙在一座山中挖通隧道(digging a tunnel)一样,理论上(theoretically)可能,但会很长很乏味(tedious)。

因此不要去尝试。所以目前大多数流行的语言实际上是一个折中(compromise),它们是被发明(invented)的语言,就像一座桥来连接机器硬件和人类众生。现在有些语言其实相当靠近机器语言,最接近的被叫做(assembly language),大体上靠近

机器语言,这写起来是很困难的,并且你必须识别实际的硬件。所以被称为低级语言,现在让我看看被成为高级语言的编程语言,高级语言基本上不用让你关心硬件,并且写起来更容易,甚至能跨平台。但这些语言运行起来会相对慢一点,因为这些高级语言

不直接在CPU级别优化。话说回来(having said that)无论我们使用哪种语言,就会在它执行前被转换成机器码,不管我们写java,C++,ruby,python的源码,最后都会被转换成机器码在计算机上运行。写源代码需要知道三点:

1.怎么写代码,字面上(literally)其实就是打字

2.理解源代码如何被转换成机器码

3.怎么运行它,怎么执行我们的程序

三,写源代码

源代码写在一个空白文本中,你能打开一个简单的文本编辑器如Notepad或TextEdit。注意每个语言的源代码扩展名是不同的,比如java下是.java,javascript下是.js她们都不是.txt这样的扩展名。很多语言可以使用同样的statement。比如

print("Hello World") ALGOL68/Python3/Lua。有些需要吓人的(intimidating)大括号(curly brace),和怪异神秘的(weird esoteric)的关键字,比如java ,C++, C#。可能你记得多种语言的写法,并且一个个敲出来。但当你熟练后

我们需要一种更搞笑的方式来书写代码,这时候程序员的文本编辑器出现了,他方便你写代码,更高级的如IDE,它提供的功能更复杂,有些代码能自动生成。当然有些是免费的,有些是收费的。像行号,功能更强大的查找和替换这典型的功能。

他们往往有颜色编码。这是不一样的格式。彩色编码是自动发生的,它可以帮助你阅读和识别语言的不同部分。他们往往有语法检查,有点像在一个文字处理器的拼写检查。如果它发现了你代码的问题,语法检查将让你知道是什么问题。一些文本编辑器是面向

特定的语言,说的不仅仅是Java,以及一些其他人可能有几十个语言的支持。现在,如果你做任何web开发你可能会发现,你所选择的web开发应用也是一个可用的程序员的文本编辑器。集成开发环境的例子是苹果的Xcode或微软的Visual Studio和跨平台的Eclipse。

现在,在这个过程中,我们是不会担心的IDE。虽然IDE不是写代码必须的工具,但你最终很可能会想要的。然而,一旦我们开始写代码了,接下来需要了解如何将其转化为机器代码,以便它可以在电脑本身上运行。

四,编译型语言和解释型语言

因此,我们需要让我们的源代码转换成机器码,才可以运行,有这样的两个主要途径:什么叫做编译源代码的,什么是所谓的解释源代码。现在,幸运的是,这不是一个很大的决定,你不用担心。但它的差异是值得了解的。因此,让我们有一个简单的场景。比方说,

你和我。你有你的电脑,我有我的电脑,你会写一个要我运行的程序。现在,用一个编译语言,你写完源代码后会发生什么事?你有一个叫做编译器的程序将通过该源代码来创建一个包含机器代码的单独文件,你只要给我那个文件。这个最终的结果是有时被称为一个可

文件,因为我可以直接执行它。我现在可以运行你的程序。你不需要给我源代码,我从来没有看到它。现在,用另一方面解释型语言,你不用事先编译源代码。你只要给我一个副本我就可以运行了。所以,我需要我的机器来解释它,来运行你的程序。现在,解释器不同

于编译器。我们可以把它看作是通过你的源代码并一行一行当场处理它。它不会将其保存为一个单独的机器代码文件。现在,您已经使用解释语言,即使你不知道它。每当你看着一个使用JavaScript的网页,这是已经发生。JavaScript已发送到您在网上以及一堆其他文

件,如网页和图像,它已经作为源代码发送到你的机器,你的网页浏览器刚刚解释了JavaScript,因此它可以运行该代码。那么,哪一个是最好的?嗯,他们都有自己的好和他们的优缺点。编译的代码的好处。一旦它的编译,这是马上就可以运行,你可以将其发送给

100或1,000或100,000不同的人。这是蓄势待发。它可以用于CPU进行优化,所以它实际上可以更快,你没有给你的源代码发送给大家,这可能是一件好事。然而,缺点是如果我在Windows PC上编译它,该可执行文件将无法在Mac上工作。事实上,它往往需要单独

编译为不同类型的CPU,即使在同一个平台上,当你写代码是编译型的,你必须在每一个的步骤测试你的程序。现在,有了解释型的代码,一个很大的好处是我真的不关心在另一端是什么样的机器,因为我们不提供机器代码。我们只是发送源代码,我们让对方照顾它。

因此它可以是更轻便,在各种平台上也更加灵活。这也是一个比较容易测试,因为你只写你的源代码,然后运行它的时候,让解释器把它转换。没有在两者之间编译步骤。它出问题时更容易调试,因为你总是可以访问所有的源代码。然而,它有它的两面性,因

为大家都需要他们的机器上有一个解释器他们的机器上的语言。它会慢一些,因为你必须在每次程序运行时解释它,而源代码是公开的,因为你把它发送到需要运行该程序的人的机器上。现在,有关于编译语言和解释型语言的好东西,是两者兼而有之的第三条道路。

译模型,所有的工作就完成了前期,运行快,但就是不灵活。解释模型,所有的工作就完成了在接收端,很灵活,但可以稍微慢一点。所以像java这种语言就是同时有编译和解释性的特点,本地编译,跨平台运行。因此,举例来说,C,C + +和Objective-C,这些通

常是编译语言,所以你需要一个编译器。编译器可以免费下载,但它们通常内置在集成开发环境中的应用。现在,像PHP和JavaScript,这样是为解释语言,以及如Java,C#,VB.NET和Python(Python是一个解释型的语言。但是为了效率上的考虑,Python也提供

了编译的方法。编译之后是bytecode的形式)语言使用解释型和编译型的结合。现在,无论是语言是编译或解释,或介于两者之间你都可以根据你自己具体的需求。

五,核心编程语法

我们不想成为的概念(conceptual),我们希望得到的方法,我们希望一个良好的语言能做到这一点。我们希望对初学者友好,但不只是一个初学者的语言。它需要的是真实的。它需要的是流行,它需要的是相关的。总之它需要的是很好的解释这些概念的语言。现在有

很多的适合该法案的语言,但非常重要的并且我们也想要的是,尽可能操作简单,不用装太多东西因此,决定去用JavaScript。这不是最强大或最灵活的语言在,但它肯定受欢迎,它肯定是相关的,它是探索这些概念的一种伟大的语言。所以,即使你脑子里想一些其他

的语言,但你知道JavaScript是一种非常实用的语言就行。JavaScript是操作网页的语言。有人发明了它。我们不会使用JavaScript来说桌面应用程序,我会用C++或Java或C#或Objective-C语言。尽管名称Java和JavaScript类似,但他们是完全不同的语言,是不相

关的。现在,有可能你喜欢的ActionScript或AppleScript或VBScript。这些是脚本语言,脚本语言是被嵌入到另一个程序更有限的编程语言。因此,ActionScript中的例子是,我们使用内部Flash的编程语言。 VBScript中可使用在Microsoft Office应用程序,同样的

JavaScript也只能在其他应用程序,就是Web浏览器。您的浏览器是否是Internet Explorer或Safari或Firefox或Chrome或Opera,他们都有一个JavaScript引擎,它们内部有JavaScript解释器。一般脚本语言并不比这些通用编程语言更有限制,他们往往更容易拿来

用和他们非常善于做些他们领域的事情。因此,JavaScript的最像的脚本语言是一种解释型语言。我们不必手动将其编译成机器代码。它会自动通过Web浏览器来完成,当我们试图运行我们的JavaScript。操作系统上运行的Web浏览器并且Web浏览器中运行我们的

JavaScript。JavaScript的很重要的是区分大小写的语言。当我们看到一些其他编程语言,大量的使用这些花括号,当我们看到语句似乎都以一个分号结束,和一些其他的事情,这种语言是由C语言编程的影响。自20世纪70年代初周围许多最流行的语言和像C的形状

。有些人甚至共享名称为C++,C#,Objective-C语言,而有些则没有。Java是一种C风格的语言,还有如ActionScript中,因JavaScript。并知道一个C语言风格可以更容易地跳进任何其他语言。因此,JavaScript是一种基于C语言的解释型区分大小写的语言。这

是高度相关的,它是对初学者很友好。因此,让我们看看如何在JavaScript中创建我们的第一个程序。

六,创建JavaScript

新建一个container.html文件和script.js

container.html的内容如下:

             simple                    

this is a very simle HTML

script.js的内容如下

alert("Hello World");

然后双击container.html即可看到效果

七,变量和数据类型

当我们使用任何编程语言编写哪怕是最简单的程序,我们必须跟踪信息。如果我们正在写一个贷款计算器,我们需要保存贷款金额的,月数,利率。如果我们正在编写一个游戏程序,我们可能需要知道当前的得分,玩家在屏幕上的位置,有多少生命值,我们要用我们的球

员是什么形象。这所有的数据,我们需要创建变量来保存数据。变量只是容器。我们的程序正在运行,正在使用计算机内存并抓住其中一小片,给它一个名称使用。我们抓住这个空间,我们命名它,然后我们把一个值放在里面,像一个电子邮件地址或一个日期或位置或数

字,然后根据我们需要,我们可以改变这个值。变量可以变化,因此而得名。所以在JavaScript中创建这样的一个变量。变量名都是小写,这是JavaScript语言的一部分,然后我们将其命名变量。变量的名称是由我们和它应该代表我们要保持一段数据。因此,一个叫

year变量,或者一个叫customerEmail,或todaysDate,或如foo或如x甚至一个单一的字母这样无意义词汇。现在,你的变量名称由字母,数字,美元符号和下划线组成。其他字符不允许,但你不能以数字开头。因此,例如,这个33dom变量名是行不通的,但

dom33就可以。当我们以后谈论命名变量的风格时,我们将更多地讨论。但我现在只是要使用简单的名字。var year=2011;  var 表示声明变量  year表示变量名 =表示赋值  2011是给year变量赋值。变量名和变量的值注意分清楚。现在,在JavaScript中,一旦你

创建了一个变量,你可以在里面放任何东西。数字,文字,日期,那听起来并不寻常,但很多其他语言不会让你做到这一点。在许多语言中创建一个变量并不仅仅意味着定义一个容器,还会给他定义变量类型,虽然目前在JavaScript中不需要,但其他有些语言需要,而

且等你用时就知道了。

八,强类型和弱类型

在许多编程语言中,当你创建一个变量,你不只是给它一个名字,你还要确定它的类型信息。你必须事先决定,如果它要存储一个整数,这意味着它只能存整数,而不能存小数点,或者单个字符,或者多个字符(叫做字符串),或者是一个布尔值,表示真或假,也可能

是更加复杂的数据类型,但你必须选择该数据类型。一旦你选择了它,你不能改变它,这就是所谓的强类型语言。每个变量必须是一个特定的类型。但在JavaScript中,我们不这样做。JavaScript是所谓的弱类型语言。我们不需要定义数据类型,我们只需要创建一个通

用的变量,一个空的容器,然后我们可以简单地把任何值赋予它。现在,如果我创建这个变量没有给它一个值,它开始了作为什么JavaScript调用未定义的。现在你可能会想,嗯,这弱类型语言可能更方便点,你可以在任何地方放东西。大多数时候,当你在编程的时

候,你将不再需要或更改数据类型。如果你有一个,你已经被称为score的变量,那么你会希望只存分数的数字类型,而不是存字符串或者是true或false。所以任何事情都有两面性,没有绝对的好,只有适不适合。

九,与数字工作

所以,任何时候,我们用变量处理的工作。我们有自己的变量,容器,桶,我们有,我们可能打算每时每刻的改变成不同的值。目前,最常见的计算机程序都是数值,号码,其实这不奇怪的。当然,当我们使用电脑这个词,我们也可以认为是一

个机器。但数百年来,电脑其实是一个工作。在17日,18日,19世纪,你就像一台电脑一样被别人雇佣。它只是意味着一个像电脑一样的人来做计算,谁做计算。那么这些机器做某些事情的时候远比人做得更好。我们认为计算机是指硬件。但他们被发明的原因,就是

一直对数字运算。但是,我们必须坦然面对我们使用的数字。当我们在写程序时,我们正在处理的银行结余及货币,屏幕上飞船的位置,Web浏览器窗口的高度和宽度,使用地理定位设备的坐标,播放毫秒级MP3歌曲,连颜色红,绿,蓝都代表了数值范围。

现在,与你遇到的其他编程语言不同,你必须非常清楚是什么是数据的类型,你有--整数,浮点数,正数,负数,一个很大的数字,它是一个小的数字 - - JavaScript的,有一个非常人性化的方式来表示数字。他们都只是考虑数字。因此,让我们来看

看如何与他们合作。我这里有一个空文件设置为写一些JavaScript,让JavaScript创建一个变量,并调用它。当执行这行代码时,这个变量的值是不确定的。因此,接下来,我将这个变量设置为5号。现在,你有一个崭新的值,像a= 5,b =10。这看起来有点怪异,

就像在学校学的方程。但请记住,当你看到等号,这是一个指令。把它变量的值设为5。

我不在乎以前是什么,但执行这行代码之后,它的值将为5。它分配一个值。这就是为什么“=”正式名称为赋值运算符。现在,请注意周围有一有有引号的数字5在这里被称为数字文字。它代表了固定值5。这条线的可变部分作为我们的程序运行时可以改变,但文字却没

有。5总是意味着5。如果我们想改变吗?如果我们希望有一个亿?好吧,我只是说=1000000,我们不要它使用逗号。我们只使用数字本身。而在其他的编程语言,我们必须非常清楚,如果值是整数,寓意完整的数字,JavaScript并没有在意。

如果我想打一个负数,把一个减号放在它的前面。比如,-500。下面让我们来谈谈下一个字符串。

转载于:https://www.cnblogs.com/tianjian/p/3870657.html

你可能感兴趣的文章
Android Toast
查看>>
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
iOS-内存管理
查看>>
docker固定IP地址重启不变
查看>>
hadoop的wordcount程序
查看>>
冲刺二阶段-个人总结07
查看>>
C语言 基础练习40题
查看>>
[Swift]LeetCode128. 最长连续序列 | Longest Consecutive Sequence
查看>>
[Swift通天遁地]一、超级工具-(9)在地图视图MKMapView中添加支持交互动作的标注图标...
查看>>
js版base64()
查看>>
poj3006---素数筛法
查看>>
c语言结构体排序示例
查看>>
openresty nginx systemtap netdata
查看>>
[Angular] Make a chatbot with DialogFlow
查看>>
javascript坐标:event.x、event.clientX、event.offsetX、event.screenX 用法
查看>>
genymotion不能启动模拟器的处理姿势
查看>>
vs2005下使用sql 2000或其他数据库作为membership的默认提供程序
查看>>
sd卡无法启动及zc706更改主频后可以进入uboot无法启动kernel的坑
查看>>
代理模式
查看>>
MongoDB 集合(Collection)对应的物理文件
查看>>