我想学习编程应该先学什么

我想学习编程应该先学什么,第1张

随着软件技术的发展,软件编程语言走过了一个由原始社会向工业社会发展的过程,从机器码编程到汇编语言,从汇编语言到各种高级语言;编程思想由面向过程发展到面向对象;同时编程工具也变成了可视化的。编程门槛随着技术和工具的发展变得越来越低,现在用delphi,vb等工具很快就可以做一个数据库系统、媒体播放器等在过去足以傲人的软件。但我要说,不要为你能在几分钟之内做一个软件而沾沾自喜,更不要因为工具的先进就丢掉了程序员的基本功。不管你是在校的大学生,还是自学的爱好者,如果想在程序员这条路上走的更远,一定要学好计算机的专业课。

二、语言的选择不重要,编程思想才是根本

经常在论坛里看到初学者问,“学什么语言好?什么语言最吃香,最有前途?”,早几年,还有许多比较各种语言和编译器的文章。这种思想也深深的影响了我,使我走了许多弯路。所以我要说,选择什么语言不是最重要的,编程思想才是程序员要学的根本。各种语言发展到今天都有它存在的原因。比如现在各种高级语言都有各自的优点,delphi最让人称道的是他在编写数据库系统方面的便捷,c/c++则在于它的灵活和高效性,vb的优点在于他最方便入门,Java的跨平台性是最好的。对于初学者学什么都好,因为这一阶段学习的重点在于语言和编译器本身,毕竟书上的例子和一个实用的工程相差是在太远。

当你走过了这个阶段,语言已经不是困扰你的重要问题时,那么你选在一个平台吧。(当然我的建议是Windows,一方面是学习的资料比较多,另一方面就是使用的人也多,好的软件是不愁每人使用的。)了解在这个平台编程的方法,就Windows来说就是学习API函数,并逐渐深入到它的内核。

如果你走过了这一阶段,那我告诉你你已经是最初你佩服的那种高手了。在这个平台上能够游刃有余,无论是开发各种应用软件,还是开发深入系统的系统软件,你都会得心应手。

三、编程不是单纯的对技术的追求,软件的灵魂是服务

作为技术人员,往往比较单纯和执著,一心想着怎么学好技术,不要落后于他人。殊不知,自己完全背离了软件的宗旨,软件(包括一切技术)的产生都是为了更好的为人服务。用户是不会在意你是否使用了更先进的技术,他只关心你是否为他提供了完整的解决方案和便捷的服务。所以在写程序前,一定要调查一下,你所写的软件会有多少用户,他们想让你提供那些服务。

以上是整体的思路,在此我以Windows平台上的学习为例,说一说学习之路。

首先以你的个人爱好或工作方向,选择一门语言。一般来说,只需要这几方面的书就够了。一种是语言入门和开发工具使用的书,之后是语言的参考大全,最后一种就是编程指南或开发指南。如学习vb,按顺序应该看《vb开发指南》《vb中文版参考祥解》(清华大学出版社);学习c/c++,则看《C语言程序设计(第二版)》(谭诰强)或《C++程序设计》(钱能),《Visual C++技术内幕(第4版)》(潘爱民),

然后看些计算机专业课程和深入Windows编程的书。如:《编码的奥秘》(Charles Petzold),《数据结构》(严蔚敏吴伟民),《编译原理和技术》,《Windows程序设计》(Charles Petzold),《深入浅出MFC(第2版)》(侯捷),《Win32多线程程序设计》(侯捷),《Windows核心编程》(jeffrey Richter)。

最后就是些深入系统内核源码和设计模式方面的书。如:《莱昂氏UNIX源代码分析》(John Lions著,尤晋元译),《STL源码剖析》(侯捷),《计算机程序设计艺术》(苏运霖译),《设计模式》( Erich Gamma等著,李英军等译)。

1先学习C语言的基础知识。现在正在学C语言的在校学生可以直接进入第2步学习。

2按照《C语言程序设计入门学习六步曲》进行上机练习。

3在上机练习时要养成良好的编程风格。C语言的编程风格

4积极参加C、C++兴趣小组,养成和老师与同学交流习惯,从而相互收益。有时别人不经意的一句话可能使你茅塞顿开--“一句话点醒梦中人”。

5及时总结自己的学习经验,养成写C语言日记的习惯。软件有编程日记功能。

6从网上或教材上找一个自己感兴趣的题目(选题时根据自己的能力,可先易后难,培养自己的成就感,如果有了成就感,即使再苦再累还是感觉C语言学习是一件快乐的事,同学们喜欢打游戏,经常通宵达旦地玩游戏也乐而不疲就是这个道理)进行实战训练,提高自己的C语言综合应用能力。

7 由于C语言灵活、强大,初学者要全面地掌握它是不可能的,因此在学习C语言的过程中,不要在细枝末节上浪费精力(比如++、--用于表达式的计算,实际上是没有意义的),但一定要熟练掌握C语言的流程控制语句、数组、函数、指针等基础知识的应用,为学习面向对象程序设计打下坚实的基础。如果这些知识你学不好,要后续学习好C++、可视化的程序设计Visual C++或C++Builder就像空中楼阁,是不现实的。

C语言程序设计入门学习六步曲

笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:

一、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?

二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。

三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。

出现问题原因清楚了,那么如何学习呢请你看C语言学习六步曲

在程序开发的过程中,上机调试程序是一个不可缺少的重要环节。“三分编程七分调试”,说明程序调试的工作量要比编程大得多。这里以如何上机调试C程序来说明C语言的学习方法。

第一步、验证性练习

在这一步要求按照教材上的程序实例进行原样输入,运行一下程序是否正确。在这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭C程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的C语言编程风格)。

初学者最容易犯的错误是:

1、没有区分开教材上的数字1和字母l,字母o和数字0的区别,造成变量未定义的错误。另一个易错点是将英文状态下的逗号,分号;括号()双引号""输入出入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。

2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等)不区分大小写、漏掉“;”、“{”与“}”、“(”与“)”不匹、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应的头文件、调用未C声明的自定义函数、调用函数时实参与形参不匹配、数组的边界超界等。

3、修改C语言语法错误时要注意以下两点:

(1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提示第10行发生错误时,如果在第10行没有发现错误,从第10行开始往前查找错误并修改之。

(2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一次程序。

第二步、照葫芦画瓢

在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结果发生了什么变化,分析结果变化的原因,加深新学知识点的理解。事实上这和第一步时同步进行的,实现“输入”加深知识的记忆,“修改”加深对知识的理解。记忆和理解是相辅相成的,相互促进。

例如:将最简单的Hello World!程序

#include "stdioh"

int main()

{

printf("Hello World!\n");

return 0;

}

中的

printf("Hello World!\n");

中的Hello World!改成你的姓名,运行一下程序,看有什么变化?

再如求1+2+3+100的和的程序

#include <stdioh>

main()

{

int i,sum=0;

for(i=1;i<=100;i++)

{

sum=sum+i;

}

printf("sum=%d\n",sum);

}

第1次将for(i=1;i<=100;i++)中的100改成50,运行一下程序,看有什么变化?

第2次将for(i=1;i<=100;i++)中的i++改成i=i+2,运行一下程序,看有什么变化?

找出程序结果变化的原因,就加深了对C语句的理解。

第三步、不看教材看是否能将前两步的程序进行正确地输入并运行。

在这一步要求不看教材,即使程序不能运行,看能否将其改正,使其能正确运行。目的是对前两步的记忆、理解进一步强化。

第四步、增强程序的调试能力

在教材中每章都有C语言初学者易犯的错误,按照易出错的类型,将教材中的正确的程序改成错误的程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成正确的,运行一下程序。这样反复修改,就能够学习C语言程序发生错误的原因和修改错误的能力。

注意:每次只改错一个地方,目的是显示发生该错误的真正原因,避免一次改动多个地方,搞清发生错误的真正原因,切记!!!!

注意:上机调试程序时要带一个记录本,记下英文错误提示信息和解决该错误问题的方法,积累程序调试经验,避免在编程犯同样的错误,切记!!!!。

例如,将Hello World程序中语句

printf("Hello World!\n");

中的;改成中文的分号;

运行一下程序,看有什么结果?

调试程序是一种实践性很强的事,光纸上谈兵是是没用的,就像游泳运动员只听教练讲解示范,而不亲自下水练习,是永远学不会游泳的。

即使在优秀的程序员编写程序也会犯错误的,可能事最低级的语法错误,但他能快速发现错误并改正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正,这就事差别。

第五步、研究典型的C语言程序,提高程序设计能力

C语言初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因是:所谓的看懂听明白,只是很肤浅的语法知识,而没有深刻地理解C语言的语句的执行过程(或流程)。

计算机是按照人的指令(编写的程序)去执行的,如果不知道这些C语句在计算机中是如何执行的,你怎么回灵活运用这些知识去解决实际问题呢?

解决问题的方法是要先理解C语言各种语句的流程(即计算机是如何执行这些语句的过程),然后研读现成C语言经典程序,看懂别人事如何解决问题的,以提高自己的程序设计能力。

第六步、研究课程设计源成序,提高C语言的综合应用能力

选择一门语言

确定你感兴趣的领域

你可以开始学习任何编程语言(尽管其中一些被描述地比其他的更加“易学”),你得去问自己自己想用通过学习这门语言完成什么样的工作。这将会帮助你确定你应该追求的编程方式并且提供一个良好的开始。

如果你想进入Web开发行业,那你将会有一堆语言需要去学习,这和开发计算机程序相反。移动App的开发需要比PC等的开发更多的技巧。所有的这些决定将会影响着你的发展方向。

考虑从一个“易学”的语言开始

无论你做了什么样的决定,你可能只会希望从一门高水准又易学的语言开始。这些语言对于初学者非常有用,因为它们教授基本的概念和适用于几乎任何语言的思维过程。

在这种语言中最流行的两种是Python和Ruby。它们都是使用着易读的句法的面向对象的Web应用开发语言。

“面向对象”因为着这个语言是围绕着“对象”、数据收集和 *** 作的概念来打造的。这一概念被用在许多先进的编程语言上,比如C++、Java、Objective-C和PHP。

通读大量语言的基本教程

如果你还不确定你应该开始学习哪一门语言,那么就去阅读一些不同语言的基本教程吧。如果一门语言比别的更有意思,那就多去看看是不是真的那样。在网上对于所有的编程语言有无数个基本教程。

Python——一个非常适合初学者的语言 ,而且当你掌握它的时候它会变得更加强大。被用来开发了许多Web应用、甚至一些游戏。

Java——被无数个项目所使用,从游戏到Web应用再到ATM软件。

HTML——对于任何Web开发者必不可少的起航点。在从事其他一系列Web开发之前掌握好HTML非常重要。

C——最古老的语言之一,它已经是非常强大的工具,也是一些更现代的语言的祖先,比如C++,C#和Objective-C。

从简单的开始学起

学习语言的核心概念

虽然这一步中适合的部分将取决于你所选择的语言,但所有编程语言都有对建立有用的程序至关重要的基本概念。尽快的学习和掌握这些概念,将会使你更容易地解决问题和创建强大而有效的代码。下面只是一些在不同语言中的核心概念:

变量——一个变量就是一个去存储和应用以改变代码片的方式。变量可以被 *** 作,并且经常被定义成“整数”、“字符”,还有其他的确定可以存储的数据类型。进行编码时,变量通常具有让它们对于我们有种某种含义的名称。这样一来我们就容易理解该变量如何与其余的代码进行交互了。

条件语句——条件语句是基于条件是否为真的一种行为。对于一个条件语句最常见的形式是“如果-那么”。如果这个条件为真,那么就有一件事发生,如果条件为假,那么就会发生另一件事情。

函数或子例程——这个概念的实际名称可能取决于不同的语言。它也可能被叫做“过程”、“方法”或是“可返回单元”。它本质上是一个大程序中的一个小程序。一个函数可以被别的程序“调用”多次,运行程序员去有效的创建复杂的程序。

数据输入——这是在几乎所有语言中都使用的一个宽泛的概念。它涉及到处理用户的输入以及存储这些数据。这些数据怎样收集则取决于程序的类型以及对于用户的可用的输入方式。它和关于显示在屏幕上还是打印在文件上的输出有着精密联系。

安装一些有必要的软件

许多的编程语言都要求有被程序员设计来讲代码转换成机器能理解的语言的编译器。其他一些语言,比如Python,使用可以立即转换成程序而不需要编译。

一些语言有自己的往往包含着代码编辑器、调试器和/或者翻译以及调试的IDEs(集成开发环境)。这些程序员在同一个地方去执行任何必要的功能。IDEs可能还包含着包含对象层次结构和目录的可视化界面。

在网上有许多的代码编辑器可以用。这些程序都提供不同方式的语法高亮和提供其他开发人员友好的工具。(译者推荐用Emacs)

创建你的第一个程序

每次只专注于一个概念

几乎学习任何语言时被教的第一个程序就是“Hello World”。这是一个仅仅在屏幕上显示“Hello,World”的简单程序。这个程序教会初学者一些简单的语法来创建一个可以运作的基本程序,以及如何处理显示输出。通过改变文本,你还可以学习到这些基本数据是怎样被程序处理的。

通过在线示例的片段来学习

在网上几乎每个编程语言都有数以千记得在线代码示例。用这些例子来学习不同部分如何与语言协同工作,以及各个部分之前的差别。用这些在不断示例中取得的碎片来创建你自己的程序。

检查语法

语法就是一门语言被写得让编译器或解释权能够理解的方法。每种语言都有自己独特的语法,虽然有些元素可能在不同的语言中共享。学习语法对于学习怎样编程是非常重要的。在现实中,它只是更高级的概念赖以建立的基础。

试验性的更改

对你的示例程序做些修改,然后测试结果。通过试验你可以学到什么有用、什么没用,这比多阅读一本书或指南在任何时候都要快得多。不要害怕破坏了你的程序,学习去修复错误是任何开发过程中最重要的一步,并且新的事物永远不可能在第一次就正确运行。

开始练习调试

当你在编程时,你总会碰到bug。它们存在程序中,并且可能随时随地的出现在程序中的任何一个地方。漏洞可能会破坏程序,或者只是让程序不能编译/运行。捕捉和修复这些错误在软件开发周期中这是一个主要的过程,所以要早早地习惯于这么做。

当你快要修改程序时,你可能会碰到它们不能运作的情况。想办法弄清楚,并且采取不同的方式来解决,这将会成为你作为一个程序员最宝贵的技能之一。

给所有代码添加注释

几乎所有编程语言都有一个允许你包含未被解释器或编译器处理的文本的“注释”功能。也就允许了你可以留下短小但清晰的关于这段代码是用来做什么的人类语言的解释。这将不仅仅帮助你记住你的代码在这个大型程序是做什么的,在协作环境中因为它允许其他人也能够明白你的代码是做什么的,所以也是非常重要的做法。

不断练习

每天都要敲代码

花大量的时间对于掌握一门语言是最重要的。即便是像Python这样的简单语言,它可能也要画上一两天去了解它的基本语法,花大量的时间才能真正精通。想任何其他的技巧一样,练习是变得更加娴熟的关键。尽量每天都要花一些时间去敲代码,即便是在工作之后和晚餐之前的一小时。

给你的程序设定目标

通过设定能够实现但又有挑战性的目标,你将能够开始解决问题并拿解决方案。尝试着去设想去一个基本的应用程序,比如一个计算器,然后想办法去做出来。使用你一直学习的语法和概念,然后将它们应用到实际中。

和别人交流并且阅读他人的程序

有很多编程社区致力于特定的语言或学科。找到并参与到这些社区会为你的学习创造奇迹。你将会获得能够帮助你的学习过程的各式各样的示例代码和工具。通过阅读他人的程序代码不仅可以激励你,还可以帮助你回忆那些还没有掌握的概念。

为你所选择的编程语言找到论坛或在线社区。确保自己是真正参与进去而不是不断地问问题。这些社区往往看着做协作和讨论的地方,而不仅仅是简单的提问-回答问题。请随时寻求帮助,但要准备好你的程序以及尝试用不同的途径。

一旦你已经有了一些经验,可以参加一些编程的活动。这些活动是个人或团队争分夺秒的开发功能的程序,通常会围绕一个特定的主题。这些事情都很好玩并且是一个认识其他程序员的很好的方式。

挑战自己并保持乐趣

去尝试着做一些你现在还不知道怎么做的事情。研究该怎样完成这个任务的方式,并且不断的将它们添加到你的程序中。一定要尽量避免勉强能运行的程序,你应该让各个方面都很完美。

分享你的知识

参加一些培训课程

许多的大学、社区学院、社区中心都提供了你可以参加的编程课程和工作室,而无需在学校注册。这里对于新手程序员是很有裨益的,因为你可以从其他有经验的程序员那里得到帮助,或者你也可以通过网络和其他地方的程序员一起交流。

买或者借一本书

有成千上万种你所能想象出的所有语言的教学书籍。虽然你的知识不应该全然来自一本书,但它们会给你提供许多的参考,而且往往内含了大量友好的示例。

学习数学和逻辑

大多编程都涉及了基本的算术运算,但可能你想要学习更先进的概念。如果你想写出复杂的模拟或者算法级别程序,这将是非常重要的。对于大多数日常编程而言,你并不需要太多先进的数学知识。但学习逻辑,尤其是计算机逻辑,将能帮助你理解处理更先进程序的复杂问题的最好方式。

永远不要停止编程

有一个流行的理论,成为一名专家至少需要10000小时的练习。虽然这个理论还处于辩论中,但它内含的原则永远是正确的:精通需要时间和奉献精神。不要指望一夜之间你就能学会一切,但如果你保持专注,并且不断的学习,很快你就会成为你的领域里的专家。

学习另一种编程语言

虽然你可以仅仅精通一门语言,但许多的程序员通过学习多种语言来提高在其领域内成功的机会。它们的第二或者第三个语言往往和第一个语言相辅相成,这就能帮助他们去写出更加复杂和有趣的程序。一旦你掌握了你的第一个语言,你就有时间来学习第二个语言。

你可能会发现第二个语言会学的比第一个更快。那是因为许多的核心概念对于多种语言都是相通的,尤其是如果这两个语言本身就是密切相关的。

现在主要的开发方向有:WEB开发、移动端开发、嵌入式开发等。首先要明确要选择哪个开发方向,Web开发是当前一个重要的开发领域;随着移动互联网的发展,目前移动端开发的任务也比较多;随着5G标准的落地应用,未来嵌入式开发领域也将释放出大量的开发任务。

Web开发分为前端开发和后端开发两大部分,前端开发需要学习三个基本知识,包括Html5、CSS3和JavaScript,其中JavaScript是重点也是难点。后端开发可以采用众多开发语言,其中比较流行的编程语言包括Java、PHP和Python。纵观现在的手机平台,已经可以说是安卓和苹果的天下了,所以Android开发、iOS开发成为了主力,小程序的爆火和流行也有了各种小程序开发。其中Android开发需要学习Java或者kotlin语言,而iOS开发需要学习OC或者Swift,小程序开发则需要掌握其对应的开发语言。嵌入式开发领域包括大量的可穿戴设备开发等等。嵌入式开发涉及到三方面内容,分别是设备(各种传感器等)、网络和平台,编程语言通常可以从C语言开始学起。

最后,不论从事哪个领域的开发,都应该具备扎实的计算机基础知识,包括 *** 作系统(体系结构)、计算机网络、数据库等。

开始基础的学习,不管定位是前端工程师,还是后端工程师,他们都需要从业者掌握基础的互联网 IT 知识。在具体的学习之前,需要先把这些基础的知识学习扎实,这些内容包括: HTML ,软件开发步骤,互联网请求响应过程( >

然后就是不同工种的学习了,先说前端工程师。前端工程师主要是对用户看到的界面上的内容进行调整,开发。主要包括的内容有: HTML , CSS , JavaScrit , Jquery 。其他的一些内容都是以这几项为基础而衍生出来的。

开发人员需要具备几项技能,其一是逻辑思维能力,其二数据分析能力,其三是问题表达能力,接下来是后端工程师的职业知识,后端工程师所作的事是用户看不到的,比如说进入网站你输入用户名,密码登陆,这个登录的功能就需要后端工程师去完成。主要涉及的知识有:编程语言 , 数据结构,数据库,服务器。

知识储备完毕,可以做一个简单的小软件去系统的应用一下自己所学的内容。比如做一个简单的学生管理系统,图书管理系统。最后你就可以去寻找相关的开发岗位了,由于没有实际的项目开发经验,可以先找一些工资少一点的。等工作一两年有了项目经验,这个时候你就有资本去谋求高薪水的工作了。

编程

这是每个游戏编程FAQ里都有的问题。这个问题每星期都会在游戏开发论坛上被问上好几次。这是个很好的问题,但是,没人能给出简单的答案。在某些应用程序中,总有一些计算机语言优于其他语言。下面是几种用于编写游戏的主要编程语言的介绍及其优缺点。希望这篇文章能帮助你做出决定。

1、C语言

如果说FORTRAN和COBOL是第一代高级编译语言,那么C语言就是它们的孙子辈。C语言是Dennis Ritchie在七十年代创建的,它功能更强大且与ALGOL保持更连续的继承性,而ALGOL则是COBOL和FORTRAN的结构化继承者。C语言被设计成一个比它的前辈更精巧、更简单的版本,它适于编写系统级的程序,比如 *** 作系统。在此之前, *** 作系统是使用汇编语言编写的,而且不可移植。C语言是第一个使得系统级代码移植成为可能的编程语言。

C语言支持结构化编程,也就是说C的程序被编写成一些分离的函数呼叫(调用)的集合,这些呼叫是自上而下运行,而不像一个单独的集成块的代码使用GOTO语句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的“空心粉式代码”代码要简单得多。事实上,C仍然具有GOTO语句,不过它的功能被限制了,仅当结构化方案非常复杂时才建议使用。

正由于它的系统编程根源,将C和汇编语言进行结合是相当容易的。函数调用接口非常简单,而且汇编语言指令还能内嵌到C代码中,所以,不需要连接独立的汇编模块。

优点:有益于编写小而快的程序。很容易与汇编语言结合。具有很高的标准化,因此其他平台上的各版本非常相似。

缺点:不容易支持面向对象技术。语法有时会非常难以理解,并造成滥用。

移植性:C语言的核心以及ANSI函数调用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。其他的东西都跟平台有关。比如说,为Windows和Mac开发可移植的程序,用户界面部分就需要用到与系统相关的函数调用。这一般意味着你必须写两次用户界面代码,不过还好有一些库可以减轻工作量。

用C语言编写的游戏:非常非常多。

资料:C语言的经典著作是《The C Programming Language》,它经过多次修改,已经扩展到最初的三倍大,但它仍然是介绍C的优秀书本。一本极好的教程是《The Waite Group's C Primer Plus》。

2、C++

C++语言是具有面向对象特性的C语言的继承者。面向对象编程,或称OOP是结构化编程的下一步。OO程序由对象组成,其中的对象是数据和函数离散集合。有许多可用的对象库存在,这使得编程简单得只需要将一些程序“建筑材料”堆在一起(至少理论上是这样)。比如说,有很多的GUI和数据库的库实现为对象的集合。

C++总是辩论的主题,尤其是在游戏开发论坛里。有几项C++的功能,比如虚拟函数,为函数呼叫的决策制定增加了一个额外层次,批评家很快指出C++程序将变得比相同功能的C程序来得大和慢。C++的拥护者则认为,用C写出与虚拟函数等价的代码同样会增加开支。这将是一个还在进行,而且不可能很快得出结论的争论。

我认为,C++的额外开支只是使用更好的语言的小付出。同样的争论发生在六十年代高级程序语言如COBOL和FORTRAN开始取代汇编成为语言所选的时候。批评家正确的指出使用高级语言编写的程序天生就比手写的汇编语言来得慢,而且必然如此。而高级语言支持者认为这么点小小的性能损失是值得的,因为COBOL和FORTRAN程序更容易编写和维护。

优点:组织大型程序时比C语言好得多。很好的支持面向对象机制。通用数据结构,如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。

缺点:非常大而复杂。与C语言一样存在语法滥用问题。比C慢。大多数编译器没有把整个语言正确的实现。

移植性:比C语言好多了,但依然不是很乐观。因为它具有与C语言相同的缺点,大多数可移植性用户界面库都使用C++对象实现。

使用C++编写的游戏:非常非常多。大多数的商业游戏是使用C或C++编写的。

资料:最新版的《The C++ Programming Language》非常好。作为教程,有两个阵营,一个假定你知道C,另外一个假定你不知道。到目前为止,最好的C++教程是《Who's Afraid of C++》,如果你已经熟知C,那么试一下《Teach Yourself C++》。

3、我该学习C++或是该从C开始

我不喜欢这种说法,但它是继“我该使用哪门语言”之后最经常被问及的问题。很不幸,不存在标准答案。你可以自学C并使用它来写程序,从而节省一大堆的时间,不过使用这种方法有两个弊端:

你将错过那些面向对象的知识,因为它可能在你的游戏中使得数据建模更有效率的东西。

最大的商业游戏,包括第一人称射击游戏很多并没有使用C++。但是,这些程序的作者即使使用老的C的格式,他们通常坚持使用面向对象编程技术。如果你只想学C,至少要自学OO(面向对象)编程技术。OO是仿真(游戏)的完美方法,如果你不学习OO,你将不得不“辛苦”的工作。

4、汇编语言

显然,汇编是第一个计算机语言。汇编语言实际上是你计算机处理器实际运行的指令的命令形式表示法。这意味着你将与处理器的底层打交道,比如寄存器和堆栈。如果你要找的是类英语且有相关的自我说明的语言,这不是你想要的。

确切的说,任何你能在其他语言里做到的事情,汇编都能做,只是不那么简单 — 这是当然,就像说你既可以开车到某个地方,也可以走路去,只是难易之分。话虽不错,但是新技术让东西变得更易于使用。

总的来说,汇编语言不会在游戏中单独应用。游戏使用汇编主要是使用它那些能提高性能的零零碎碎的部分。比如说,毁灭战士整体使用C来编写,有几段绘图程序使用汇编。这些程序每秒钟要调用数千次,因此,尽可能的简洁将有助于提高游戏的性能。而从C里调用汇编写的函数是相当简单的,因此同时使用两种语言不成问题。

特别注意:语言的名字叫“汇编”。把汇编语言翻译成真实的机器码的工具叫“汇编程序”。把这门语言叫做“汇编程序”这种用词不当相当普遍,因此,请从这门语言的正确称呼作为起点出发。

优点:最小、最快的语言。汇编高手能编写出比任何其他语言能实现的快得多的程序。你将是利用处理器最新功能的第一人,因为你能直接使用它们。

缺点:难学、语法晦涩、坚持效率,造成大量额外代码 — 不适于心脏虚弱者。

移植性:接近零。因为这门语言是为一种单独的处理器设计的,根本没移植性可言。如果使用了某个特殊处理器的扩展功能,你的代码甚至无法移植到其他同类型的处理器上(比如,AMD的3DNow指令是无法移植到其它奔腾系列的处理器上的)。

使用汇编编写的游戏:我不知道有什么商业游戏是完全用汇编开发的。不过有些游戏使用汇编完成多数对时间要求苛刻的部分。

资料:如果你正在找一门汇编语言的文档,你主要要找芯片的文档。网络上如Intel、AMD、Motorola等有一些关于它们的处理器的资料。对于书籍而言,《Assembly Language: Step-By-Step》是很值得学习的。

5、Pascal语言

Pascal语言是由Nicolas Wirth在七十年代早期设计的,因为他对于FORTRAN和COBOL没有强制训练学生的结构化编程感到很失望,“空心粉式代码”变成了规范,而当时的语言又不反对它。Pascal被设计来强行使用结构化编程。最初的Pascal被严格设计成教学之用,最终,大量的拥护者促使它闯入了商业编程中。当Borland发布IBM PC上的 Turbo Pascal时,Pascal辉煌一时。集成的编辑器,闪电般的编译器加上低廉的价格使之变得不可抵抗,Pascal编程了为MS-DOS编写小程序的首选语言。

然而时日不久,C编译器变得更快,并具有优秀的内置编辑器和调试器。Pascal在1990年Windows开始流行时走到了尽头,Borland放弃了Pascal而把目光转向了为Windows 编写程序的C++。Turbo Pascal很快被人遗忘。

最后,在1996年,Borland发布了它的“Visual Basic杀手”— Delphi。它是一种快速的带华丽用户界面的 Pascal编译器。由于不懈努力,它很快赢得了一大群爱好者。

基本上,Pascal比C简单。虽然语法类似,它缺乏很多C有的简洁 *** 作符。这既是好事又是坏事。虽然很难写出难以理解的“聪明”代码,它同时也使得一些低级 *** 作,如位 *** 作变得困难起来。

优点:易学、平台相关的运行(Dephi)非常好。

缺点:“世界潮流”面向对象的Pascal继承者(Modula、Oberon)尚未成功。语言标准不被编译器开发者认同。专利权。

移植性:很差。语言的功能由于平台的转变而转变,没有移植性工具包来处理平台相关的功能。

使用Pascal编写的游戏:几个。DirectX的Delphi组件使得游戏场所变大了。

资料:查找跟Delphi有关的资料,请访问:Inprise Delphi page。

6、Visual Basic

哈,BASIC。回到八十年代的石器时代,它是程序初学者的第一个语言。最初的BASIC形式,虽然易于学习,却是可怕的无组织化,它义无返顾的使用了GOTO充斥的“空心粉式代码”。当回忆起BASIC的行号和GOSUB命令,没有几个人能止住眼角的泪水。

快速前进到九十年代早期,虽然不是苹果公司所希望的巨人,HyperCard仍然是一个在Windows下无法比拟的吸引人的小型编程环境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂贵。为了与HyperCard一决高下,微软取得了一个小巧的名为Thunder编程环境的许可权,并把它作为Visual Basci 10发布,其用户界面在当时非常具有新意。这门语言虽然还叫做Basic(不再是全部大写),但更加结构化了,行号也被去除。实际上,这门语言与那些内置于TRS-80、Apple II及Atari里的旧的ROM BASIC相比,更像是带Basic风格动词的Pascal。

经过六个版本,Visual Basic变得非常漂亮。用户界面发生了许多变化,但依然保留着“把代码关联到用户界面”的主旨。这使得它在与即时编译结合时变成了一个快速原型的优异环境。

优点:整洁的编辑环境。易学、即时编译导致简单、迅速的原型。大量可用的插件。虽然有第三方的DirectX插件,DirectX 7已准备提供Visual Basic的支持。

缺点:程序很大,而且运行时需要几个巨大的运行时动态连接库。虽然表单型和对话框型的程序很容易完成,要编写好的图形程序却比较难。调用Windows的API程序非常笨拙,因为VB的数据结构没能很好的映射到C中。有OO功能,但却不是完全的面向对象。专利权。

移植性:非常差。因为Visual Basic是微软的产品,你自然就被局限在他们实现它的平台上。也就是说,你能得到的选择是:Windows,Windows或Widnows。当然,有一些工具能将VB程序转变成Java。

使用Visual Basic编写的游戏:一些。有很多使用VB编写的共享游戏,还有一些是商业性的。

资料:微软的VB页面有一些信息。

7、Java

Java是由Sun最初设计用于嵌入程序的可移植性“小C++”。在网页上运行小程序的想法着实吸引了不少人的目光,于是,这门语言迅速崛起。事实证明,Java不仅仅适于在网页上内嵌动画 — 它是一门极好的完全的软件编程的小语言。“虚拟机”机制、垃圾回收以及没有指针等使它很容易实现不易崩溃且不会泄漏资源的可靠程序。

虽然不是C++的正式续篇,Java从C++ 中借用了大量的语法。它丢弃了很多C++的复杂功能,从而形成一门紧凑而易学的语言。不像C++,Java强制面向对象编程,要在Java里写非面向对象的程序就像要在Pascal里写“空心粉式代码”一样困难。

优点:二进制码可移植到其他平台。程序可以在网页中运行。内含的类库非常标准且极其健壮。自动分配合垃圾回收避免程序中资源泄漏。网上数量巨大的代码例程。

缺点:使用一个“虚拟机”来运行可移植的字节码而非本地机器码,程序将比真正编译器慢。有很多技术(例如“即时”编译器)很大的提高了Java的速度,不过速度永远比不过机器码方案。早期的功能,如AWT没经过慎重考虑,虽然被正式废除,但为了保持向后兼容不得不保留。越高级的技术,造成处理低级的机器功能越困难,Sun为这门语言增加新的“受祝福”功能的速度实在太慢。

移植性:最好的,但仍未达到它本应达到的水平。低级代码具有非常高的可移植性,但是,很多UI及新功能在某些平台上不稳定。

使用Java编写的游戏:网页上有大量小的Applet,但仅有一些是商业性的。有几个商业游戏使用Java作为内部脚本语言。

资料:Sun的官方Java页面有一些好的信息。IBM也有一个非常好的Java页面。JavaLobby是一个关于Java新闻的最好去处。

8、创作工具

上面所提及的编程语言涵盖了大多数的商业游戏。但是也有一个例外,这个大游戏由于它的缺席而变得突出。

“神秘岛”。没错,卖得最好的商业游戏不是使用以上任何一门语言编的,虽然有人说“神秘岛”99%是使用 3D建模工具制作的,其根本的编程逻辑是在HyperCard里完成的。

多数创作工具有点像Visual Basic,只是它们工作在更高的层次上。大多数工具使用一些拖拉式的流程图来模拟流程控制。很多内置解释的程序语言,但是这些语言都无法像上面所说的单独的语言那样健壮。

优点:快速原型 — 如果你的游戏符合工具制作的主旨,你或许能使你的游戏跑得比使用其他语言快。在很多情况下,你可以创造一个不需要任何代码的简单游戏。使用插件程序,如Shockware及IconAuthor播放器,你可以在网页上发布很多创作工具生成的程序。

缺点:专利权,至于将增加什么功能,你将受到工具制造者的支配。你必须考虑这些工具是否能满足你游戏的需要,因为有很多事情是那些创作工具无法完成的。某些工具会产生臃肿得可怕的程序。

移植性:因为创作工具是具有专利权的,你的移植性以他们提供的功能息息相关。有些系统,如Director可以在几种平台上创作和运行,有些工具则在某一平台上创作,在多种平台上运行,还有的是仅能在单一平台上创作和运行。

使用创作工具编写的游戏:“神秘岛”和其他一些同类型的探险游戏。所有的Shockwave游戏都在网络上。

资料:Director、HyperCard、SuperCard、IconAuthor、Authorware。

9、结论

你可能希望得到一个关于“我该使用哪种语言”这个问题的更标准的结论。非常不幸,没有一个对所有应用程序都最佳的解决方案。C适于快而小的程序,但不支持面向对象的编程。C++完全支持面向对象,但是非常复杂。Visual Basic与Delphi易学,但不可移植且有专利权。Java有很多简洁的功能,但是慢。创作工具可以以最快的速度产生你的程序,但是仅对某一些类型的程序起作用。最好的方法是决定你要写什么样的游戏,并选择对你的游戏支持最好的语言。“试用三十天”的做法成为工业标准是件好事情。

网站

>

以上就是关于我想学习编程应该先学什么全部的内容,包括:我想学习编程应该先学什么、在C语言编程中应该注意哪些问题、请问初学者学习编程应该怎么办等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9709156.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存