文档章节

学习编程,从何入手

空空-Renzo
 空空-Renzo
发布于 2013/01/17 00:00
字数 3867
阅读 100
收藏 3
点赞 0
评论 0

    计算机语言的种类非常的多,总的来说可以分成机器语言汇编语言高级语言三大类。

    电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行的,计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 计算机所能识别的语言只有机器语言,即由0和1构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。

    目前通用的编程语言有两种形式:汇编语言高级语言

    汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。

    高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。 高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的VB、VC、FoxPro、Delphi、Python等,这些语言的语法、命令格式都各不相同。 像最简单的编程语言PASCAL语言也属于高级语言。

    高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行。按转换方式可将它们分为两类:

    解释类执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。

    编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(*.o)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如Visual C++、Visual Foxpro、Delphi等。

    如果您想学习编程,却又不知从何入手,那么您不妨看看下面的几种学习方案,可能会给您一些启示吧!

方案一 :Basic语言 & Visual Basic

    

    (1)Basic 简单易学,很容易上手。

    (2)Visual Basic 提供了强大的可视化编程能力,可以让你轻松地做出漂亮的程序。

    (3)众多的控件让编程变得象垒积木一样简单。

    (4)Visual Basic 的全部汉化让我们这些见了English就头大的人喜不自禁。

    缺点:

    (1)Visual Basic 不是真正的面向对象的开发文具。

    (2)Visual Basic 的数据类型太少,而且不支持指针,这使得它的表达能力很有限。

    (3)Visual Basic 不是真正的编译型语言,它产生的最终代码不是可执行的,是一种伪代码。它需要一个动态链接库去解释执行,这使得Visual Basic 的编译速度大大变慢。 (Visual Basic 5以及以前的版本产生的代码是伪代码,Visual Basic 6 编译出来的代码是真正的可执行代码。)

    综述:方案一适合初涉编程的朋友,它对学习者的要求不高,几乎每个人都可以在一个比较短的时间里学会VB编程,并用VB 做出自己的作品。对于那些把编程当做游戏的朋友来说,VB 是您最佳的选择。

方案二:Pascal语言 & Delphi

     优点:

    (1)Pascal语言结构严谨,可以很好地培养一个人的编程思想。

    (2)Delphi是一门真正的面向对象的开发工具,并且是完全的可视化。

    (3)Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。

    (4)Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。

    缺点:

    (1)Delphi几乎可以说是完美的,只是Pascal语言的过于严谨让人感觉有点烦。      

    综述:方案二比较适合那些具有一定编程基础并且学过Pascal语言的朋友。

方案三:C语言 & Visual C++

    优点:

    (1)C语言灵活性好,效率高,可以接触到软件开发比较底层的东西。

    (2)微软的MFC库博大精深,学会它可以让随心所欲地进行编程。

    (3)VC是微软制作的产品,与操作系统的结合更加紧密。

    缺点:

    (1)对使用者的要求比较高,既要具备丰富的C语言编程经验,又要具有一定的WINDOWS编程基础,它的过于专业使得一般的编程爱好者学习起来会有不小的困难。

    综述:VC是程序员用的东西。如果你是一个永不满足的人,而且可以在编程上投入很大的精力和时间,那么学习VC你一定不会后悔的。

方案四:C++语言 & C++ Builder

    优点:

    (1)C语言的优点全部得以继承。

    (2)完全的可视化。

    (3)极强的兼容性,支持OWL、VCL和MFC三大类库。

    (4)编译速度非常快。

    缺点:

    (1)由于推出的时间太短,关于它的各种资料还不太多。

    综述:我认为C++ Builder 是最好的编程工具。它既保持了C++语言编程的优点,又做到了完全的可视化。

方案五:易语言 & 易语言.飞扬

    优点:

    (1)全中文编程语言,易学易用

    (2)易语言.飞扬支持记事本编程

    缺点:

    (1)易语言.飞扬对编码格式要求较高,且编译需手工输入命

 

补充一:机器语言

    机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义。例如某台计算机字长为16位,即有16个二进制数组成一条指令或其它信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。 如某种计算机的指令为1011011000000000,它表示让计算机进行一次加法操作;而指令1011010100000000则表示进行一次减法操作。它们的前八位表示操作码,而后八位表示地址码。从上面两条指令可以看出,它们只是在操作码中从左边第0位算起的第6和第7位不同。这种机型可包含256(等于2的8次方)个不同的指令。

    特 点:

    机器语言或称为二进制代码语言,计算机可以直接识别,不需要进行任何翻译。每台机器的指令,其格式和代码所代表的含义都是硬性规定的,故称之为面向机器的语言,也称为机器语言。它是第一代的计算机语言。机器语言对不同型号的计算机来说一般是不同的。

    缺 点:

    (1)大量繁杂琐碎的细节牵制着程序员,使他们不可能有更多的时间和精力去从事创造性的劳动,执行对他们来说更为重要的任务。如确保程序的正确性、高效性。

    (2)程序员既要驾驭程序设计的全局又要深入每一个局部直到实现的细节,即使智力超群的程序员也常常会顾此失彼,屡出差错,因而所编出的程序可靠性差,且开发周期长。

    (3)由于用机器语言进行程序设计的思维和表达方式与人们的习惯大相径庭,只有经过较长时间职业训练的程序员才能胜任,使得程序设计曲高和寡。

    (4)因为它的书面形式全是“密”码,所以可读性差,不便于交流与合作。

    (5)因为它严重地依赖于具体的计算机,所以可移植性差,重用性差。

     范例:

    (1)指令部份的范例

        0000 代表 加载(LOAD)

        0001 代表 储存(SET)

    (2)暂存器部份的范例

        0000 代表暂存器 A

        0001 代表暂存器 B

    (3)内存部份的范例

        000000000000 代表位址为 0 的内存

        000000000001 代表位址为 1 的内存

        000000001000 代表位址为 16 的内存

        100000000000 代表位址为 2^11 的内存

    (4)整合范例

        0000,0000,000000001000 代表 LOAD A, 16

        0000,0000,000000000001 代表 LOAD B, 1

        0000,0001,000000001000 代表 STORE B, 16

        0000,0001,000000000001 代表 STORE B, 1

 

补充二:汇编语言(符号语言)

    汇编语言(Assembly Language)是面向机器的程序设计语言。汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。

    在汇编语言中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。因此汇编语言亦称为符号语言。

    使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言编译器把汇编程序翻译成机器语言的过程称为汇编

    汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。

    汇编语言的特点:   

    (1)面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。

    (2)保持了机器语言的优点,具有直接和简捷的特点。

    (3)可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。

    (4)目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。

    (5)经常与高级语言配合使用,应用十分广泛。

    汇编语言的应用:

    (1)70%以上的系统软件是用汇编语言编写的。

    (2)某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。

    (3)某些高级绘图程序、视频游戏程序是用汇编语言编写的。

    人们经常认为汇编语言的应用范围很小,而忽视它的重要性。其实汇编语言对每一个希望学习计算机科学与技术的人来说都是非常重要的,是不能不学习的语言。 所有可编程计算机都向人们提供机器指令,通过机器指令人们能够使用机器的逻辑功能。所有程序,不论用何种语言编制,都必须转成机器指令,运用机器的逻辑功能,其功能才能得以实现。机器的逻辑功能,软件系统功能构筑其上,硬件系统功能运行于下。

    汇编语言直接描述机器指令,比机器指令容易记忆和理解。通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。

    学习汇编语言,向上可以理解软件,向下能够感知硬件,是我们理解整个计算机系统的最佳起点和最有效途径。

 

    @ 以上内容搜集于网络,本人仅是整理。如有侵权,请告知! @

© 著作权归作者所有

共有 人打赏支持
空空-Renzo
粉丝 0
博文 6
码字总数 20511
作品 0
南京
项目经理
Android入门从何入手

都需要了解什么,如何入手,我现在做J2EE的。 需要先弄清J2ME,然后再开始Android编程学习吗? 给个大概的学习流程吧

智商已暴露
2011/03/31
338
1
如何开发IE插件

小弟想学习开发IE插件,但一时又不知从何入手。盼高手能指点迷津。给个教程地址就行,给个源代码地址更好。

周侗
2010/05/03
7.2K
2
作为一个新手该如何学习汇编

我是一个小菜鸟 想学习linux环境下的汇编 我买了王爽的汇编语言第二版和32位汇编语言程序设计and80x86汇编语言程序设计 很遗憾没有看明白 可能是我太笨了 我想知道我该从何入手 望有人来指点...

Lasetcr
2011/03/13
255
4
基于ASIO驱动的多通道音频播放控制

@欧阳左至 你好,想跟你请教个问题: 看到您写的关于PortAudio入门编程博客,想必您对这方面比较了解。 我的情况是这样:目前我们有一块基于ASIO驱动的多通道声卡,想利用这个硬件设备来播放...

lsgTHU
2012/09/13
1K
3
JAVA,CS结构的房屋租赁系统

没做过项目,不知道该从何入手,希望大神们指点一二 要求做一个CS结构的房屋租赁系统,没做过项目,有种一脸蒙逼的感觉,不知从何入手

松梓
2016/09/12
1K
18
零基础Python新手应该怎么去学习?

对于完全没有编程经验的初学者,在学习python的时候,面对的不仅仅是python这门语言,还需要面临“编程”的一些普遍问题,比如: 从零开始,不知道从何入手,找了本编程教材发现第二章开始就...

铁扇公主1
2017/04/27
759
1
我想提的问题很复杂,请各位老师点开详看~谢谢!

最近呢,时间很多,本身我对计算机很感兴趣,如果以后能进入IT行业就职就更好了。所以去网上查了很多东西,很多人都说网站建设这个的入门比较简单,可以从这个入手,但是我不知道从何学起。都...

panhao
2011/05/31
677
18
人工智能时代来临,新手如何学习Python?

看到Python如今这么火热,工资待遇如此的好,你是否心动了,是不是也有想学Python的冲动,介绍一下小编的学习交流的群,有什么不懂的问题,都可以在群里踊跃发言,需要啥资料随时在群文件里面...

python达人
2017/12/07
0
0
关于软件开发所需要学的内容

厚颜无耻请教诸位大大几个问题 本人在校生,比较了解c/c++,对于Java,Cisco(ccna),SQL,HTML,Javascript也有点接触 经常用vs2012;;;windows以外的系统都没接触过(苦逼的电脑性能不高,磁盘存储量...

劉ルーベン
2012/11/18
293
3
你是如何学python的

中国大学极少开设 Python 课程,故而国内 Python 程序员多属自学,那么你在自学 Python 的过程中有哪些值得分享的经验或者有趣的体验呢? 其实python非常适合初学者入门。相比较其他不少主流...

铁扇公主1
2017/03/26
111
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

RESTful API 设计规范

关于「能愿动词」的使用 为了避免歧义,文档大量使用了「能愿动词」,对应的解释如下: 必须 (MUST):绝对,严格遵循,请照做,无条件遵守; 一定不可 (MUST NOT):禁令,严令禁止; 应该 (S...

niithub
6分钟前
0
0
Spring Cloud云服务架构 - common-service 项目过程构建

我们将对common-service整个项目进行剖析,将整个构建的流程给记录下来,让更多的关注者来参考学习。 首先在构建spring cloud的common-service之前,我们需要准备的技术: Maven(项目构建)...

itcloud
7分钟前
0
0
oracle 如何查看日志?

Oracle日志查看一.Oracle日志的路径:登录:sqlplus "/as sysdba"查看路径:SQL> select * from v$logfile;SQL> select * from v$logfile;(#日志文件路径)二.Oracle日...

youfen
8分钟前
0
0
sap netweaver developer studio安装svn插件

问题 我现在在Sap的IDE(netweaver developer studio)上面安装svn插件。 步骤 确定IDE使用的eclipse版本 Help→About SAP NetWeaver Developer Studio→Installation Details→Features→F...

亚林瓜子
15分钟前
0
0
大数据开发学习的内容介绍,成都大数据培训机构哪里好?

大数据开发培训已经成为了越来越多人的选择,大数据开发工程师也是各公司争相争夺的金领人才之一了,在当今科技发展非常迅速的社会里,越来越多人把职业规划投向了大数据开发。这里为大家整理...

加米谷大数据
20分钟前
2
0
函数

函数 函数是Python中最主要也是最重要的代码组织和复用手段。作为最重要的原则,如果你要重复使用相同或非常类似的代码,就需要写一个函数。通过给函数起一个名字,还可以提高代码的可读性。...

火力全開
21分钟前
0
0
gulp-webserverf启动服务,局域网无法访问

如题,gulp-server启动的服务,只能本机访问,局域网通过ip无法访问; 启动的其它项目,均可以访问成功; 网上资源,很多说什么防火墙之类的问题,都无果; 只需要给启动服务添加参数即可, ...

littleFaye
23分钟前
0
0
RabbitMQ实战:5种模式和示例

应用RabbitMQ的5种队列 一、简单队列 P:消息的生产者 C:消息的消费者 红色:队列 生产者实现思路: 创建连接工厂ConnectionFactory,设置服务地址127.0.0.1,端口号5672,设置用户名、密码...

spinachgit
24分钟前
0
0
mysql常见报错标号对应原因以及处理方法

mysql常见报错标号以及对应解决方法 报错标号 报错现象 解决方法 原因 1449 Cause: java.sql.SQLException: The user specified as a definer ('authplat_dev'@'%') does not exist 在控制台...

ChinaHYF
26分钟前
0
0
Java 监控系统技术选型

(1)操作系统监控 Sigar oshi (2)Tomcat监控 JMX 日志 (3)Oracle监控 日志 直连SQL查询 基于Druid连接池 (4)拓扑图 jtopo http://www.jtopo.com/demo/statictis.html...

cccyb
28分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部