编程基础: 基本原理

一,什么是编程

究竟什么是编程?你可能以前听过类似的词语。电脑编程是一套指令?这就是问题,这些声音就像说明就像人类的大脑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中创建我们的第一个程序。

还有大量内容后续继续更新。。。。。

时间: 2024-11-06 18:12:24

编程基础: 基本原理的相关文章

LINUX下C语言编程基础

实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理及语法规范 7. 掌握静态库和动态库的生成 二.实验步骤 1. 快捷键 Ubuntu中: 2. vim VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM,可以浏览参考一下普通人

Linux CGI编程基础【整理】

Linux CGI编程基础 1.为什么使用CGI? 如前面所见,任何的HTML均是静态网页,它无法实现一些复杂的功能,而CGI可以为我们实现.如:a.列出服务器上某个目录中的文件,对目录中的文件进行操作:b.通过CGI实现串口通讯:c.实现数据库接口:d.实现从摄像头读取一张图片显示在网页上… 等等 2. CGI是什么? CGI全称是 Common Gate Intergace ,在物理上,CGI是一段程序,它运行在Server上,提供同客户端 Html页面的接口. 3. CGI编程语言 你可以

linux下c编程 基础

1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理及语法规范 7. 掌握静态库和动态库的生成 一:Vim 1.使用vim命令进入vim界面 $ vim practice_1.txt  或    $ vim 2.游标移动 按键 说明 h 左 l 右(小写L) j 下 k 上 w 移动到下一个单词 b 移动到上一个单词 3.进入插入模式 命令 说明 i

1.5编程基础之循环控制_29:数字反转

/* 1.5编程基础之循环控制 29:数字反转 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个整数,请将该数各个位上数字反转得到一个新数. 新数也应满足整数的常见形式,即除非给定的原数为零, 否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入 输入共 1 行,一个整数N. -1,000,000,000 ≤ N≤ 1,000,000,000. 输出 输出共 1 行,一个整数,表示反转后的新数. 样例输入 样例 #1: 123 样例 #2: -380 样例输出 样

网络编程基础

网络编程基础 1.套接字概念 Linux环境下使用套接字进行进程之间的通信.用过套接字的接口,其他进程的位置对于应用程序来讲是透明的.相互通信双方端点都有一个套接字,双方如果要进行通信,通过套接字建立桥梁,双方就可以通信了. 类似文件一样,套接字也有一个套接字描述符,应用程序可以像操作文件一样操作套接字.在进行网络通信的过程中,用户感觉就是在操作文件一样,这是Linux将外部设备抽象为一个文件的好处. 2.字节序 不同主机的体系结构不同,所采用的数据存储方式不同.网络中,进程之间的通信是跨主机的

多线程编程基础知识

多线程编程基础知识 http://www.cnblogs.com/cy163/archive/2006/11/02/547428.html 当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力.用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义.现在的大型应用软件无一不是多线程多任务处理,单线程的软件是不可想象的.因此掌握

shell 脚本编程基础

一.编程基础 程序:指令+数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 1.程序的执行方式 计算机:运行二进制指令: 编程语言: 低级:汇编 高级: 编译:高级语言–>编译器–>目标代码 java,C# 解释:高级语言–>解释器–>机器代码 shell, perl, python 2.编程基本概念 编程逻辑处理方式: 顺序执行 循环执行 选择执行 shell编程:过程式.解释执行 编程语言

DAY9:bash脚本编程基础(1)

内容主要为: 一.编程基础 二.shell脚本及其基本格式 三.变量 四.运算 五.条件测试 六.流程控制 一.编程基础 1)程序 程序:指令+数据 程序编程风格: 过程式:以指令为中心,数据服务于指令(C,bash) 对象式:以数据为中心,指令服务于数据 (java,C++,Python) shell程序:提供了编程能力,解释执行 2)程序的执行方式 计算机:运行二进制指令: 编程语言: 低级:汇编 高级: 编译:高级语言-->编译器-->目标代码 java,C# 解释:高级语言-->

iOS开发网络篇—网络编程基础

iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力 (3)如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据 新闻:网易新闻.新浪新闻.搜狐新闻.腾讯新闻 视频:优酷.百度视频.搜狐视频.爱奇艺视频 音乐