A. 想要成为一名程序员的话,都必须要掌握哪些技能
编码是软件开发人员的必备方面。在每个团队中,每个开发人员必须被同一技术面试过程雇用。因此,我们可以推断编程器或更少才能具有类似的编程技巧。在这种情况下,一个人如何成为一个好程序员?如果他们做与同龄人的努力做了什么,他们可以做些什么?如果你正在考虑这个问题,证明你已经超过了他人的团队,你知道你想在专业领域拥有长期的发展,并编程效率不好。成为一个优秀的软件开发人员必须拥有的技能。您可以编写一个干净整洁的代码来确定您是否是优秀软件开发人员的标准之一。通过查看代码结构,人们可以轻松判断您是一个能力的程序员。
只要有足够的时间,大多数开发人员都可以完成交付,但不幸的是,在软件行业中,时间是最有价值的东西,如果你公司在一个激烈的市场环境中,如果公司不能先进入市场或者与竞争对手同时进入市场,它将失去市场份额,这是至关重要的。因此,软件开发人员需要有效地管理他们的时间。为此,您需要知道如何准确评估您的时间效率。当你第一次时,你会在评估中犯错误,但它是正常的,每个人都会产生类似的错误,但聪明的开发人员应该能够来自他们。课程是学习和改进的。软件开发专业是激烈的竞争。开发人员的熟练程度可能有所不同,但每个软件开发人员都知道如何以一种或多种编程语言编写代码。在软件行业中,依靠编码技能来实现指数增长是不够的。不要让你的职业生长在几年内。在您职业生涯的每个阶段,实现您想要的目标,实现上面提到的七种技能,成为一个优秀的软件开发人员。
B. 要做程序员需要学会什么
首先要学习什么?
我觉得可以先选一门简单的语言进行学习,这样可以先对编程有一个初步的认识,我学习的第一门语言是c,学得不精,简直就是入门中的入门。我觉得c、java、Python都是不错的入门语言,书籍可以直接网络 ----入门书籍。
然后这样一边认识编程,一边去了解自己想开发的东西需要什么技术,比如开发安卓要用java,网站要http://asp.net或php。详细的了解之后需要的就是不断地去补充这些自己不懂的东西。我觉得没有必要在第一门语言选什么上纠结太久,就我个人而言,才学编程对时候连什么是面向对象编程都不知道,根本无法知道自己真正需要的技术是什么,又怎么选呢?
我认为最重要的就是尽快选一个语言开始学习吧!
给自学成才的新手程序员的六个建议
1、让编程成为一个习惯
想要培养一项技能的最好的办法,就是将他融入到我们的生活并成为我们的爱好。其实说白了,就是让这个爱好成为一个习惯,一天不去做这件事情,都会觉得少了什么。在不知不觉中,这个习惯会像滚雪球一样积累起来。
对我来说,养成这种习惯首先就是要对“拖延症”说不。比如,你想锻炼下自己的写作能力时,但是没有好看的本子,没有好的灵感,没有安静的环境....总之就是找各种理由一拖再拖,最后就不了了之了。但仔细想想等你有了好看的本子,舒适的环境....就能写出好的文章吗?不!我很明确的告诉各位,文章的功底是随着你不断的积累而成的。所以,当我们决定去做某件事情,请立刻!马上!现在就要开始行动!
6.保持耐心
对于人生来说,其中任何目标的实现都离不开耐心。编程学习就如其它任何学习任务一样,都需要反复努力并投入大量时间。
在这个过程中,您一定会经历高潮与低谷——别被这些曲线影响了心情。接受已经发生的一切,并尽可能避免其中不好的部分。就像打高尔夫球一样,我们的手感总在不断浮动,但只要坚持到底,您最终总能成为一个大神呢~
C. 脚本的知识
一、啥叫脚本呢?
其实就是一段代码,作用就是:这些代码通过你的浏览器来鼓捣一下你的机器。这样,你就能通过点一下鼠标就可以发点欢迎词、发点情话啥地了。
二、怎么在聊天室放脚本呢?
<script src=您的脚本存放地址></script>
把这段代码放你右下角链接里就可以了。
三、你浏览器咋会知道你放脚本了呢?
因为每段脚本务都放在<script>和</script>之间了。一见到<script>字样,浏览器就会当成脚本来分析了。纯属浏览器的条件反射之一。
四、我从寒江脚本里学到啥了?
1、定义一个变量:
var a=1 的意思就是:定义一个变量a,并给a赋值为1
2、为啥要定义变量呢?
这话说的,干活不用人哪行啊?其实定义变量就是事先找几个人来,留着以后派给任务。
3、定义一个数组变量
var a_name_filter = new Array(。。。);
其实数组变量也是相当于找人,只不过这个人可以干好几样活而已(属于能人类型的)。
4、定义功能函数
function a(){}
这相当于各项任务。事先定义的变量一般会在这里体现出来。当你在脚本里写上a()之后,浏览器就会条件反射了(执行a功能函数中的语句)。
五、脚本的说明文字
啥东西都得有个说明书不是,脚本也得有呀,而且这个说明书最好要写在代码里(要不过后自己都看不明白了,多丢人啊。)
那么怎么写说明呢?
1、某行代码的说明可以放在此行代码的最后面,在行尾打上//然后再写入文字说明就可以了。
例如:
var room_name="悠悠柠檬情"; //聊天室名字
2、如果文字太多,一行写不下那咋办啊?
在此特殊说明一下,其实尽管代码一般都是英文字符,但说明文字绝对可以兼容现代汉语以及文言文的,(←废话)
如果是多行说明文字,可以这样写
//---------------------------------------------
//孤鹤脚本0.9999版just for my Love
//
//失去,也是一种笃定。
//
//就算拥有的时光,是那麽短暂;
//
//能够无怨无悔地为一个人付出,就是幸福。
//---------------------------------------------
看着感觉还不错吧?(^!-)
当然,还有更方便的写法,就是在说明文字的第一行写上/*,再在最后一行写上*/。例子如下:
/*
孤鹤脚本0.9999版 just for my Love
小薇啊,你可知道我多爱你,
我要带你飞到天上去
看那星星多么美丽
摘下一颗,轻轻送给你。。。
*/
本人强烈建议,不要在脚本里写歌词,因为有可能导致看脚本人的情感波动。:-)
六、数据类型
数据类型包括:字符串、数值、布尔三种类型。
javascript带有数据类型强制转换功能,这对编写者(尤其是对喝完酒写代码的人)来讲是一个大大的好事。要不你还得记好多的数据转换函数。
七、JScript的运算符
关于运算符的讲解,将会涉及很多很多的知识,请小学没有毕业的同志自学完成小学课程之后再看。
计算 符号 位运算 符号
-------------------------------------
负值 - 逻辑非 !
递增 ++ 小于 <
递减 -- 大于 >
乘法 * 小于等于 <=
除法 / 大于等于 >=
加法 + 等于 ==
加法 + 不等于 !=
减法 - 逻辑与 &&
等于 =
例一:
x=1+2
=======
答案:x被赋值为3
例二:
if (mylove=="小薇") {
document.write("回答正确,您属于多愁善感型的")
} else {
document.write("回答错误!您属于没事找抽型的")
} ======
运行结果:
如果变量mylove的值为“小薇”,那么,程序会执行document.write("回答正确,您属于多愁善感型的")
否则,则执行document.write("回答错误!您属于没事找抽型的")
我学到的脚本知识(二)
今夜,让我静静地想你(诗配JS语句篇)
今夜,我怅坐一隅静静地想你,
想知道你在做什么,想知道你有没有在想我;
一、if...else 语句[根据表达式的值,有条件地执行一组语句。]
我想你,你想我吗?如果我不想你,那么你还想我吗?
用语句控制如下:
if 我想你 {你想我吗?} else{那么你还想我吗?}
通常都先定义一个变量来做为判断条件。
a='我想你';
if (a=='我想你') { b='你想我吗?'} else { b='那么你还想我吗?' }
二、do...while 语句[第一次执行一个语句块,然后重复循环的执行该语句块,直到条件表达式等于 false。]
折九百九十九只纸鹤我就会去睡的,
用语句控制如下:
i=1;
do
(折一只纸鹤;)
i=i++;
while(i<999)
三、switch 语句[当指定的表达式的值与某个标签匹配时,即执行相应的一个或多个语句。]
我想你,
(假设前面已经为a赋值)
switch(a){
case 想为你点亮一盏桔色的灯,:
静静守候着你疲惫的归来;
case 想为你递上一杯温热的香茗,:
缓缓驱散你脸上的倦容;
case 想用我温柔纤细的手指,:
轻轻抚平你眼角的皱纹;
case 想用我轻柔温情的呢喃,:
抚慰你驿动不安的心灵。;
}
然后静静地看着你……
我祈求,祈求这一刻的宁静、永恒。
四、for 语句[只要指定条件为 true 都执行语句块。]
(第二条语句也可以用FOR语句来表达)
用语句控制如下:
for (i = 1; i < 999; i++) {
(折一只纸鹤;)
}
五、while 语句[执行一个语句,直到指定的条件为 false。]
(第二条语句也可以用while语句来表达)
折九百九十九只纸鹤我就会去睡的,
用语句控制如下:
var i=1;
while (i < 999) {
(折一只纸鹤;)
i++;
}
我学到的脚本知识(三)
前二篇,已经把脚本的基本知识粗略地介绍了一下,基础知识也介绍得差不多了,再有一些不太常用的只能在实战中总结了。
以下结合寒江322脚本解释一下。
粗看了一下寒江322脚本,大概共分四个部分
第一部分:变量定义部分,前516行。
第二部分:加入新的界面元素
第三部分:重新设置原有界面元素的样式
第四部分:系统初始化
=====第一部分====
这部分内容于“我所学到的脚本知识(一)”中有介绍。
其实就是定义了一些变量(包括数组变量),这些定义好的变量会在下面的几个部分中使用。
例一:
var room_name="心梦如语";// 房间名称
定义了一个变量:room_name,并赋值为:心梦如语
注意写法:
var 变量名 = 变量值 ;
定义一个变量,前面一定要有var,每句结束时要有";"符号。
后面的“// 房间名称”部分为说明文字,在脚本执行时将被自动忽略。
例二:
// 按钮背景图片 宽度,文件名
var a_btn_pic = new Array
( 17, "btn17.gif",
18, "btn18.gif",
19, "btn19.gif",
35, "btn35.gif",
46, "btn46.gif",
70, "btn70.gif"
);
定义一个变量数组,每个值中间以“,”分隔。
其实也可以写成如下形式:
var a_btn_pic = new Array(17,"btn17.gif",18,"btn18.gif",19,"btn19.gif",35,"tn35.gif",46,"btn46.gif",70,"btn70.gif");
这样写的话,脚本的体积会减小,但脚本的可读性会差一些。
例三:
//——图片——
var a_picture = new Array
( "你好", "pic/p001.gif",
"鼓掌", "pic/p002.gif",
。。
。 )
与
//——背景色——
var a_bkcolor = new Array
( "FFFFFF",
"fdd242",
"f8fead",
"a0e4a0",
。。
。 )
只是写法的格式不同,其实都是定义变量数组。
好了,到现在为止,你已经完全理解了寒江322脚本的前516行的内容了(322脚本共1956行)。恭喜恭喜
我学到的脚本知识(四)
前三篇已经把脚本的基本知识粗略地介绍了一下,基础知识也介绍得差不多了,再有一些不太常用的只能在实战中总结了。
以下结合寒江322脚本解释一下。
以下内容由发布之日起执行,如有与国家法律法规相抵触,请按寒江322脚本之标准执行。
粗看了一下寒江322脚本,大概共分四个部分
第一部分:变量定义部分,前516行。
第二部分:加入新的界面元素
第三部分:重新设置原有界面元素的样式
第四部分:系统初始化
=====第一部分====
这部分内容于“我所学到的脚本知识(一)”中有介绍。
其实就是定义了一些变量(包括数组变量),这些定义好的变量会在下面的几个部分中使用。
例一:
var room_name="心梦如语";// 房间名称
定义了一个变量:room_name,并赋值为:心梦如语
注意写法:
var 变量名 = 变量值 ;
定义一个变量,前面一定要有var,每句结束时要有";"符号。
后面的“// 房间名称”部分为说明文字,在脚本执行时将被自动忽略。
例二:
// 按钮背景图片 宽度,文件名
var a_btn_pic = new Array
( 17, "btn17.gif",
18, "btn18.gif",
19, "btn19.gif",
35, "btn35.gif",
46, "btn46.gif",
70, "btn70.gif"
);
定义一个变量数组,每个值中间以“,”分隔。
其实也可以写成如下形式:
var a_btn_pic = new Array(17,"btn17.gif",18,"btn18.gif",19,"btn19.gif",35,"tn35.gif",46,"btn46.gif",70,"btn70.gif");
这样写的话,脚本的体积会减小,但脚本的可读性会差一些。
例三:
//——图片——
var a_picture = new Array
( "你好", "pic/p001.gif",
"鼓掌", "pic/p002.gif",
。。
。 )
与
//——背景色——
var a_bkcolor = new Array
( "FFFFFF",
"fdd242",
"f8fead",
"a0e4a0",
。。
。 )
只是写法的格式不同,其实都是定义变量数组。
好了,到现在为止,你已经完全理解了寒江322脚本的前516行的内容了(322脚本共1956行)。恭喜恭喜
下面我写一点题外的话。脚本做为一种解释性的语言,与真正的程序还是有一定的差距的,从我的感觉来看,写脚本是一种应用,而写程序是一种开发。没有脚本可以写成一个系统,而程序可以,另外,写程序有很多的艺术性在里面。就象画一幅山水画一样,创作的是一种意境,而不是一颗树的外形。写这些话的目的是想表达我的一个想法:脚本既然只是一种应用,那么就把它共享吧,不要让它带有更多的商业目的。
我所学到的脚本知识(五)附:出击代码
从第517行开始,会涉及到JS语句了。其实语句也没有什么,万事开头难,已经学会500多行了,还难个啥呀。
(部分同志可能还对第(三)篇的内容还晕乎着呢。今天开始就会让你一点点清醒了。)
先打个比方:
1、把寒江脚本看做一座楼(注意:是楼,不是平房,有住“别野”的一边凉快去)
2、这座楼分四层(就是我前所说的,332脚本的四个部分。)
3、每层楼会有多个房间(就是各个功能函数)
4、每个房间又会有具体的工作和职责(就是各子功能函数)
5、每个房间里的人,暂且看做各个变量吧。
下面以一段332脚本的函数来说明一下
function add_new_element()//加入新的界面元素
{ 。
。
。
write_button("","欢迎",409,60,35,20,"","快速欢迎","autosend(a_welcome)");
。
。
。
}
这段代码的add_new_element 是一个功能函数(也就是自己定制的一个任务,目的就是在聊天室的输入区加入新的界面元素。)
从“{”开始,到“}”结束
在“{”与“}”之间的内容是add_new_element 功能函数的各项具体工作。例如:write_button(...)、write_bkcolor_select(...)、
write_select(...)等等。
而write_button(...)这些又是一些功能函数,这一函数的具体功能是在脚本第1010-1014行的
function write_button(name,value,left,top,width,height,color,title,action) 中。
而1010-1014行的
function write_button(name,value,left,top,width,height,color,title,action)//加入执行一个函数的按钮
{ write_button_style(name,left,top,width,height,color,title,"");
document.write(' onclick="' + action + '">'+ value +'</button>');
}
这段代码又包含了write_button_style(...)功能函数。
这样一层套一层的,有时容易给人套迷糊,但其实这就象是一个大工作,里面又分很多小的工作,每一个小的工作里面又会分为几个小
的工作一样。
你晚上回家做饭的时候,不能光做饭不做菜吧?所以做饭其实是做饭和做菜两样工作。做菜也不能就一个菜吧?(那也喝不进去小酒啊
),标准再低,也得弄个四菜一汤啥的呀,这每道菜就又是一项工作了。[依吾政府提醒广大社员:喝多酒有害身体健康!]
那么为什么有些功能函数后面的括号里要加那么多字母、数字呢?这些字母和数字就是第一篇我们提到的变量,它的作用就好像某一项
任务在分配之前先指定几个人去做一样。
象 write_button_style(name,left,top,width,height,color,title,"");
的意思就是:write_button_style这个任务指派name,left,top,width,height,color,title,""这几个人去做,最后一个""的意思是空缺
,因为每个功能函数是事先定义好的,本来需要五个变量的,你非得派四个变量去,那对不起,你得写一个""来表示缺一个变量,(到
时候算奖金也得多给一份不是。)
至于具体的浏览器怎么去找那段代码,怎么去执行,你就不用操心了,浏览器会象领导查检劳动纪律一样,从头走到尾。(领导的事最
好别管,把自己的工作干好就成,出了事让领导去兜着。)
以上这段如果看明白了,那332脚本里面的功能函数你就都可以理出一个大体的思路了。至于细节问题如“typeof(parent.r.listhtml)
”“document.inputform.USER...”这些都先不用管。
D. 学习程序设计需要掌握哪些知识
首先要学好英语和数学 其次程序语言要掌握 软件应用 1:团队精神和协作能力 ,和基本的操作 常识,缺乏这种素质的人就完全不合格了 。 2.要有做文档的习惯,缺乏文档,一个软 件系统就缺乏生命力,在未来的查错,升 级以及模块的复用时就都会遇 到极大的 麻烦。 3:规范化,标准化的代码编写习惯 。 4.代码具有良好的可读性,是程序员基本 的素质需求。 5.程序员需要理解一个模块的需求,把性 能指标全部归结到硬件,操作系统和开发 环境上。 6.复用性,模块化思维能力 ,避免大部 分重复性工作无谓的浪费了时间和精力。 7. 测试习惯 ,作为一些商业化正规化的 开发而言,专职的测试工程师是不可少的 8..程序员是人才很容易被淘汰,很容易 落伍的职业,必须不断跟进新的技术,学 习新的技能。 计算机语言的种类非常的多,总的来说可 以分成机器语言,汇编语言,高级语言三 大类。
电脑每做的一次动作,一个步骤,都是按 照以经用计算机语言编好的程序来执行的 ,程序是计算机要执行的指令的集合,而 程序全部都是用我们所掌握的语言来编写 的。所以人们要控制计算机一定要通过计 算机语言向计算机发出命令。
计算机所能识别的语言只有机器语言,即 由0和1构成的代码。但通常人们编程时 ,不采用机器语言,因为它非常难于记忆 和识别。
目前通用的编程语言有两种形式:汇编语 言和高级语言。
汇编语言的实质和机器语言是相同的,都 是直接对硬件操作,只不过指令采用了英 文缩写的标识符,更容易识别和记忆。它 同样需要编程者将每一步具体的操作用命 令的形式写出来。汇编程序通常由三部分 组成:指令、伪指令和宏指令。汇编程序 的每一句指令只能对应实际操作过程中的 一个很细微的动作,例如移动、自增,因 此汇编源程序一般比较冗长、复杂、容易 出错,而且使用汇编语言编程需要有更多 的计算机专业知识,但汇编语言的优点也 是显而易见的,用汇编语言所能完成的操 作不是一般高级语言所能实现的,而且源 程序经汇编生成的可执行文件不仅比较小 ,而且执行速度很快。
高级语言是目前绝大多数编程者的选择。 和汇编语言相比,它不但将许多相关的机 器指令合成为单条指令,并且去掉了与具 体操作有关但与完成工作无关的细节,例 如使用堆栈、寄存器等,这样就大大简化 了程序中的指令。同时,由于省略了很多 细节,编程者也就不需要有太多的专业知 识。
高级语言主要是相对于汇编语言而言,它 并不是特指某一种具体的语言,而是包括 了很多编程语言,如目前流行的VB、VC 、FoxPro、Delphi等,这些语言的语法 、命令格式都各不相同。
高级语言所编制的程序不能直接被计算机 识别,必须经过转换才能被执行,按转换 方式可将它们分为两类:
解释类:执行方式类似于我们日常生活中 的“同声翻译”,应用程序源代码一边由相 应语言的解释器“翻译”成目标代码(机器 语言),一边执行,因此效率比较低,而 且不能生成可独立执行的可执行文件,应 用程序不能脱离其解释器,但这种方式比 较灵活,可以动态地调整、修改应用程序 。
编译类:编译是指在应用源程序执行之前 ,就将程序源代码“翻译”成目标代码(机 器语言),因此其目标程序可以脱离其语 言环境独立执行,使用比较方便、效率较 高。但应用程序一旦需要修改,必须先修 改源代码,再重新编译生成新的目标文件 (* .OBJ)才能执行,只有目标文件而没 有源代码,修改很不方便。现在大多数的 编程语言都是编译型的,例如Visual C+ +、Visual Foxpro、Delphi等
E. 想学写脚本, 开始我要学什么呢
学写脚本开始要学基础的编程和计算机原理。
F. 编程要学习哪些知识
1、首先要明确自己的学习目的,为什么要学习编程。如果是要考级,那么建议学VB,因为它语句比较简单,易上手;如果是真的要掌握一项技术搞研发之用,那么建议学习C++或Java,因为它们语句功能很强大,虽然难度大一点但很实用;
2、选择自己要学习语言种类,如VB,C++,Java等
3、最好找一个辅导班配合书本同步学习,因为程序的问题如果自己只是看书的话很难理解,有前辈指点会有事半功倍的效果;
4、语句和循环是最基本的结构,所以无论学习任何语言都要把它们掌握好,这是在学习过程中一定要注意的;
5、一定要多上机操作。程序是抽象的,有时看程序看的懂,但自己去编却不一定能编的出来;而有时候虽然程序没看懂,但如果经常着手去编,就会非常熟悉该程序用的时候应该怎么去处理,时间久了自然就理解了;
6、有了一点的操作基础以后,就要去背一些简单的语句体了,这些小的语句在你以后编的大程序里是基础的基础
7、最后就是独立编程了,看到一个编程要求之后,首先要在脑中有一个大体的轮廓,独立构思,不要看参考揭示,只有这样才可以达到真正的训练目的,才可以一步步地把思路培养出来
总之呢,学习编程一定要树立信心,首先从思想上就不要去害怕它,只有以此为前提,才可以学的更好。
G. 用java写,游戏脚本,需要学习哪方面
学习JSP、Servlet、JDBC、JavaBean(Application)四部分技术。
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
20世纪90年代,硬件领域出现了单片式计算机系统,这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意,因为使用它可以大幅度提升消费类电子产品(如电视机顶盒、面包烤箱、移动电话等)的智能化程度。
Sun公司为了抢占市场先机,在1991年成立了一个称为Green的项目小组,帕特里克、詹姆斯·高斯林、麦克·舍林丹和其他几个工程师一起组成的工作小组在加利福尼亚州门洛帕克市沙丘路的一个小工作室里面研究开发新技术,专攻计算机在家电产品上的嵌入式应用。
H. 电脑程序员要学什么知识
程序员的岗位需求很多,例如大型网络公司、软件开发公司等等都需要程序员。
程序员需要学习:
1、掌握数据及其转换、数据的机内表示、算术和逻辑运算,以及相关的应用数学基础知识;
2、理解计算机的组成以及各主要部件的性能指标;
3、掌握操作系统、程序设计语言的基础知识;
4、熟练掌握计算机常用办公软件的基本操作方法;
5、熟练掌握基本数据结构和常用算法;
6、熟练掌握C程序设计语言,以及C++、Java、Visual Basic中的一种程序设计语言;
7、熟悉数据库、网络和多媒体的基础知识;
8、掌握软件工程的基础知识,了解软件过程基本知识、软件开发项目管理的常识;
9、了解常用信息技术标准、安全性,以及有关法律、法规的基本知识;
10、了解信息化、计算机应用的基础知识;
11、正确阅读和理解计算机领域的简单英文资料。
程序员必备技能:
1、熟练开发工具
做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。
而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVAOne很可能会成为未来的主流开发工具之一。
其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。
另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
2、熟知数据库
作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。
虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。
3、了解操作系统
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。
要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。
Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。懂得网络协议TCP/IP。
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式。
从最早的客户/服务器结构,到今天的WEBServices,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,深入掌握TCP/IP协议是非常必要的。
至少,需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
4、明白DCOM/CORBA/XML/WEBServices存在的意义
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。
XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布式计算的基石之一。
5、不要将软件工程与CMM分开
大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员。
一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能。
如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。
6、需求理解能力
程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求。
要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
7、模块化思维能力
作为一个优秀的程序员,他的思想不能局限在当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。
这样做可以使代码能重复利用,减少重复的劳动,也能使系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
就业方向:
1、网络开发
现在网络已经成为世界通讯的一座桥梁,好像Javascript、PHP、Ruby这几类开发语言大部分是用作网络开发方面。
2、企业软件开发
JAVA、C#、VB这几类开发语言都实现了面向对象开发的目标,更多时候用于企业系统的开发。
3、系统软件
C语言、C++、Object-C这些软件更多是用在系统软件开发,嵌入式开发的方面。
当然,这分类不是绝对,像JAVA、C#、VB很多时候也用于动态网站的开发。在很开发项目都会使用集成开发的方式,同一个项目里面使用多种开发语言,各展所长,同步开发。
但所以在刚入门的时候,建议先为自己选择一种合适的开发工具,“专注地投入学习,全力一击”。
I. 编脚本 需要那些知识
如果是编写网站的话,脚本一般有:
javascript、vbscript、HTML语言等
这些编程语言都非常简单,如果有C语言基础,那么学起来就更好了。
J. 关于脚本的知识 详细点
游戏业中的脚本
脚本不是游戏业的新技术,但脚本为业外的人所知悉,却应归功于《魔兽世界》(以下简称Wow)在世界范围的流行。通过Wow伟大的自定义界面系统,Lua这一脚本语言一举成名天下知。
虽然Lua的出名有点横空出世的感觉,但游戏业内早就使用脚本来开发游戏了。即便是在国内,我们所熟悉的网游大多数是用脚本开发的。此前已有人士透露,网游的长青树《梦幻西游》和《大话西游2》就大量应用了脚本技术;特别是《大话西游2》,比Wow早几年做了基于Lua脚本的游戏开发。可以说,国内与国外在脚本技术上并不存在差距,大家都是站在同一起跑线上的,这为国内游戏行业赶超国际水平提供了强大的保障。
回顾过去,我们发现单机版游戏时代很少听到脚本这个词。那么,为什么在网游时代脚本成了业界宠儿?原因是多方面的。比如在单机时代,无论游戏机还是PC的性能都非常低下,需要具有更高执行效率的编译型语言来“压榨”机器性能。但硬件性能的提升并不是脚本流行开来的决定性因素,真正的原因是市场的需要。
网游时代的市场需求快速变化、竞争激烈,如果延用单机时代一年半载才出一个新版本的开发方式,那必然会被市场淘汰。正是这种快速变幻的市场需要和低效的开发工具之间的矛盾,引发了开发工具的革命——脚本语言风生水起。脚本的兴起因为游戏业中传统的编译型语言(asm/C/C++)的性能优势在硬件性能大幅攀升的今天已经不复存在。在网游时代,游戏业中的主要矛盾已经由性能低下的硬件与游戏执行效率之间的矛盾转变为快速变化的市场需要与低效的开发工具之间的矛盾,脚本在网游时代的辉煌是历史的必然。
除了市场和硬件因素外,还有一点不能忽略。那就是C/C++进行游戏开发的高成本性和高项目风险。随着java/.net逐年流行,大学生中学习C/C++编程语言的人越来越少。物以希为贵,人亦如是。C/C++程序员新鲜血液补给少,而网游开始流行,巨大的网游市场需求造成大量的人才空缺,这时也就带来了C/C++的高成本。即便是资本雄厚的公司,可以雇佣大量C/C++程序员开发游戏,也不能无视C/C++高级特性和高度的灵活性带来的高项目风险。C/C++是易学难精的编程语言,应用在大型项目的时候极容易因为程序员的水平参差不齐而引起沟通不畅,还有滥用的高级特性也容易引入大量的bug。游戏公司希望找到一个方案以解决高成本、高风险的问题——这个方案就是在游戏中使用脚本。
脚本的现状
脚本解决了C/C++无法解决的开发效率难题,而且降低了成本和风险。脚本在游戏业中就此蓬勃地发展了起来,现在脚本技术已经成为游戏业中不可或缺的一环。横看当前脚本技术,一片大好形势就如同八九点钟的太阳。不仅语言百家争鸣,而且书籍也层出不穷;不仅在游戏业开花结果,在web等其它应用也大放异彩。
首先,我们来看看现在比较流行的脚本: Python、Lua、ruby和Erlang。Python和Lua是网络游戏开发的中坚力量;ruby凭借ruby on rails的web开发框架的强劲力量,不可小瞧它在游戏业的前途;erlang在高并发性上的原生优势吸引了无数追求高性能的网游服务器的开发人员的目光。
然后让我们来看看书籍和资料方面。大家都知道,文档对语言的普及起到正向催化剂的作用,甚至可以看作是语言的有机组成部分,必不可少。Python经过基金会的多年经营和在NASA、Google得到重用的原因,书籍方面比较丰富;ruby随着RoR的流行水涨船高,这两年行情看好,书籍也出版得越来越多了;反观Lua,虽然流行度一直走高,但出来的书却没有几本,跟他苦涩的接口设计和缺乏针对大型应用的原生支持不无关系;Erlang是典型的少众语言,但随着多核时代的来临和高并发网络应用的需求,有着光明的发展前景,现在《Programming Erlang》等书已经在策划出版了。
最后把焦点重新聚集到游戏开发行业中来,可以发现脚本言语已经在游戏业中开发结果,硕果累累。除了前文提到的《魔兽世界》和网易经典“西游系列”都使用了脚本外,现在大多数流行程序都使用脚本,如腾讯的《QQgame》和搜狐的《天龙八部》等。现在的游戏引擎也都提供了脚本接口,无论是商业的Unreal引擎还是开源的OGRE,无一例外。
脚本的优势
脚本在游戏业中找到自己的一席之地,是因为网游市场需要一个快速开发方案来避免C/C++开发带来的项目高成本和高风险。那么,具体而言脚本相对于C/C++这类编译型语言有什么优势呢?
一、易于学习、代码可维护性强。通常脚本的语法都非常简单,也没有太多高阶的特性,学习的门槛较C/C++低得多。如Python号称只需要花一个下午即可学会。这使得游戏开发公司可以招聘完全没有脚本编程经验的新手,通过低成本的培训,迅速走上工作岗位。除易于学习外,脚本代码也有更好的可维护性(尽管写出没有人看得懂的Lua代码也非难事)。因为脚本不会有很多高阶特性(如C++里的模板元编程就是高阶特性),所以脚本程序员有更多精力关注架构、模式、重用和测试,从而提高了代码的质量;相应地,没有那么多让人困惑的高阶特性,也使得代码“简洁”不少。
二、降低开发成本。如第一点所言,脚本易于学习,使得游戏开发公司可以大量应用新手,是降低成本的有效手段。那么如何来保证新手写的代码的质量呢?这需要我们辩证地看问题。从经验上看新手写的程序无论用什么言语,bug肯定不少。但一个C新手编写的代码和Python新手编写的相同功能的代码相比,C版本应该会有更多的bug。由于C程序需要编译,而脚本程序(大部分)都可以直接解释执行,所以在排除bug方面脚本也有先天的优势,这使得脚本在低成本的同时能够更好地保证代码质量。
三、形成人才壁垒。软件开发行业是一个动荡的行业,无数的程序员都在跳槽和谋划跳槽的状态中过日子。使用脚本开发,形成人才壁垒是游戏业减少人才流动的有效手段。因为脚本现在除了在游戏业中大红大紫外,并没有在其它行业形成杀手级应用(虽然在web开发方面也有燎原之势,但终究不似在游戏业中的地位高尚)。这就让游戏程序员很少会考虑非游戏业的职位,而其它行业的程序员却可能会因为脚本的易学习性转投游戏业。脚本除了能有效形成行业间的人才壁垒外,也能有效地形成企业间的人才壁垒。因为现有的脚本种类繁多,不同公司往往有不同的选择,甚至有些公司使用自己开发的脚本语言。程序员从公司A跳槽到公司B可能就要学习使用另一种脚本,这提高了跳槽的成本,从而使人才流动减少。
脚本的发展趋势
依照目前的趋势来看,脚本语言也一定会更加普及开来,而且会渗透到其它行业中去。随着网游从业人员的增长,脚本程序员也一直相应地增长着,而且Web2.0热潮引起的网络需求,也促生了一批批新的脚本程序员。网游市场就像一个正在滚动的雪球,带动着脚本的普及。
随着脚本在游戏业中越来越流行,市场就会需要更高的生产效率。脚本虽然一定程度上缓解了市场与生产工具之间的矛盾,但仍然不够彻底。由于市场竞争趋于激烈,而网游在很多功能实现都相差无几:如网络、数据库、图形甚至部分逻辑。这必然会催生网游生产组装化——大量的中间件相互组合形成新的网游。从现在来看,Bigworld、PhysX和Unreal等都是比较流行的网游中间件。脚本语言是粘合各个中间件的良好胶水语言,所以随着网游生产组装化,脚本有良好的发展空间。
那么,当脚本发展到如日中天的时候,会取代C/C++这些编译型语言吗?我认为不会。脚本语言和编译型语言在生产效率和执行效率上各擅胜场,网络游戏既需要能快速应变的脚本,也需要能快速执行以提供更绚丽游戏效果的编译型语言,在未来,它们之间会保持长久的和谐互补关系,相辅相成。
结语
综上所述,网游时代是上帝赐予脚本语言的绝好时机,脚本语言很快将迎来自己光芒四射的世代。脚本语言拥有编译型语言无可比拟的生产效率优势,它们将并肩奋战在游戏最前线