当前位置:首页 » 编程软件 » 编程讲座标题

编程讲座标题

发布时间: 2022-12-22 14:41:18

‘壹’ c语言的问题一个

January 2006 日 一 二 三 四 五 六
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

热 点 日 志

基于VC++的OpenGL编程讲座之
VC与Matlab接口编程之Matc
基于VC++的OpenGL编程讲座之
基于VC++的OpenGL编程讲座之
如何编写对文件按字节写入的程序
VC++实现单文档程序的全屏显示及恢
使用内存映射文件来提高你程序的性能
编程实现关闭讨厌的弹出窗口
用VC实现特定编辑框上对回车键响应
让你的软件界面更漂亮

最 新 评 论

我 的 朋 友 圈

博 客 统 计

日志总数:13
评论数量:0
留言数量:0
访问次数:85
加为好友 发送短信

登 录 信 息

用户名:
密 码:
记住密码
用户注册 忘记密码

友 情 链 接

RSS内容聚合

首页 | 上一篇 | 下一篇 基于VC++的OpenGL编程讲座之坐标变换

--------------------------------------------------------------------------------
By nitte 发表于 2006-1-10 18:36:00

OpenGL通过相机模拟、可以实现计算机图形学中最基本的三维变换,即几何变换、投影变换、裁剪变换、视口变换等,同时,OpenGL还实现了矩阵堆栈等。理解掌握了有关坐标变换的内容,就算真正走进了精彩地三维世界。

一、OpenGL中的三维物体的显示

(一)坐标系统

在现实世界中,所有的物体都具有三维特征,但计算机本身只能处理数字,显示二维的图形,将三维物体及二维数据联系在一起的唯一纽带就是坐标。

为了使被显示的三维物体数字化,要在被显示的物体所在的空间中定义一个坐标系。这个坐标系的长度单位和坐标轴的方向要适合对被显示物体的描述,这个坐标系称为世界坐标系。世界坐标系是始终固定不变的。

OpenGL还定义了局部坐标系的概念,所谓局部坐标系,也就是坐标系以物体的中心为坐标原点,物体的旋转或平移等操作都是围绕局部坐标系进行的,这时,当物体模型进行旋转或平移等操作时,局部坐标系也执行相应的旋转或平移操作。需要注意的是,如果对物体模型进行缩放操作,则局部坐标系也要进行相应的缩放,如果缩放比例在案各坐标轴上不同,那么再经过旋转操作后,局部坐标轴之间可能不再相互垂直。无论是在世界坐标系中进行转换还是在局部坐标系中进行转换,程序代码是相同的,只是不同的坐标系考虑的转换方式不同罢了。

计算机对数字化的显示物体作了加工处理后,要在图形显示器上显示,这就要在图形显示器屏幕上定义一个二维直角坐标系,这个坐标系称为屏幕坐标系。这个坐标系坐标轴的方向通常取成平行于屏幕的边缘,坐标原点取在左下角,长度单位常取成一个象素。

(二)三维物体的相机模拟

为了说明在三维物体到二维图象之间,需要经过什么样的变换,我们引入了相机(Camera)模拟的方式,假定用相机来拍摄这个世界,那么在相机的取景器中,就存在人眼和现实世界之间的一个变换过程。

图一、相机模拟OpenGL中的各种坐标变换

从三维物体到二维图象,就如同用相机拍照一样,通常都要经历以下几个步骤:

1、将相机置于三角架上,让它对准三维景物,它相当于OpenGL中调整视点的位置,即视点变换(Viewing Transformation)。

2、将三维物体放在场景中的适当位置,它相当于OpenGL中的模型变换(Modeling Transformation),即对模型进行旋转、平移和缩放。

3、选择相机镜头并调焦,使三维物体投影在二维胶片上,它相当于OpenGL中把三维模型投影到二维屏幕上的过程,即OpenGL的投影变换(Projection Transformation),OpenGL中投影的方法有两种,即正射投影和透视投影。为了使显示的物体能以合适的位置、大小和方向显示出来,必须要通过投影。有时为了突出图形的一部分,只把图形的某一部分显示出来,这时可以定义一个三维视景体(Viewing Volume)。正射投影时一般是一个长方体的视景体,透视投影时一般是一个棱台似的视景体。只有视景体内的物体能被投影在显示平面上,其他部分则不能。

4、冲洗底片,决定二维相片的大小,它相当与OpenGL中的视口变换(Viewport Transformation)(在屏幕窗口内可以定义一个矩形,称为视口(Viewport),视景体投影后的图形就在视口内显示)规定屏幕上显示场景的范围和尺寸。

通过上面的几个步骤,一个三维空间里的物体就可以用相应的二维平面物体表示了,也就能在二维的电脑屏幕上正确显示了。总的来说,三维物体的显示过程如下:

图二、三维物体的显示过程

二、OpenGL中的几种变换

OpenGL中的各种转换是通过矩阵运算实现的,具体的说,就是当发出一个转换命令时,该命令会生成一个4X4阶的转换矩阵(OpenGL中的物体坐标一律采用齐次坐标,即(x, y, z, w),故所有变换矩阵都采用4X4矩阵),当前矩阵与这个转换矩阵相乘,从而生成新的当前矩阵。例如,对于顶点坐标v ,转换命令通常在顶点坐标命令之前发出,若当前矩阵为C,转换命令构成的矩阵为M,则发出转换命令后,生成的新的当前矩阵为CM,这个矩阵再乘以顶点坐标v,从而构成新的顶点坐标CMv。上述过程说明,程序中绘制顶点前的最后一个变换命令最先作用于顶点之上。这同时也说明,OpenGL编程中,实际的变换顺序与指定的顺序是相反的。

(一)视点变换

视点变换确定了场景中物体的视点位置和方向,就向上边提到的,它象是在场景中放置了一架照相机,让相机对准要拍摄的物体。确省时,相机(即视点)定位在坐标系的原点(相机初始方向都指向Z负轴),它同物体模型的缺省位置是一致的,显然,如果不进行视点变换,相机和物体是重叠在一起的。

执行视点变换的命令和执行模型转换的命令是相同的,想一想,在用相机拍摄物体时,我们可以保持物体的位置不动,而将相机移离物体,这就相当于视点变换;另外,我们也可以保持相机的固定位置,将物体移离相机,这就相当于模型转换。这样,在OpenGL中,以逆时针旋转物体就相当于以顺时针旋转相机。因此,我们必须把视点转换和模型转换结合在一起考虑,而对这两种转换单独进行考虑是毫无意义的。
除了用模型转换命令执行视点转换之外,OpenGL实用库还提供了gluLookAt()函数,该函数有三个变量,分别定义了视点的位置、相机瞄准方向的参考点以及相机的向上方向。该函数的原型为:

void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble upx,GLdouble upy,GLdouble upz);

该函数定义了视点矩阵,并用该矩阵乘以当前矩阵。eyex,eyey,eyez定义了视点的位置;centerx、centery和centerz变量指定了参考点的位置,该点通常为相机所瞄准的场景中心轴线上的点;upx、upy、upz变量指定了向上向量的方向。

通常,视点转换操作在模型转换操作之前发出,以便模型转换先对物体发生作用。场景中物体的顶点经过模型转换之后移动到所希望的位置,然后再对场景进行视点定位等操作。模型转换和视点转换共同构成模型视景矩阵。

(二)模型变换

模型变换是在世界坐标系中进行的。缺省时,物体模型的中心定位在坐标系的中心处。OpenGL在这个坐标系中,有三个命令,可以模型变换。

1、模型平移

glTranslate{fd}(TYPE x,TYPE y,TYPE z);

该函数用指定的x,y,z值沿着x轴、y轴、z轴平移物体(或按照相同的量值移动局部坐标系)。

2、模型旋转

glRotate{fd}(TYPE angle,TYPE x,TYPE,y,TYPE z);

该函数中第一个变量angle制定模型旋转的角度,单位为度,后三个变量表示以原点(0,0,0)到点(x,y,z)的连线为轴线逆时针旋转物体。例如,glRotatef(45.0,0.0,0.0,1.0)的结果是绕z轴旋转45度。

3、模型缩放

glScale{fd}(TYPE x,TYPE y,TYPE z);

该函数可以对物体沿着x,y,z轴分别进行放大缩小。函数中的三个参数分别是x、y、z轴方向的比例变换因子。缺省时都为1.0,即物体没变化。程序中物体Y轴比例为2.0,其余都为1.0,就是说将立方体变成长方体。

(三)投影变换

经过模型视景的转换后,场景中的物体放在了所希望的位置上,但由于显示器只能用二维图象显示三维物体,因此就要靠投影来降低维数(投影变换类似于选择相机的镜头)。

事实上,投影变换的目的就是定义一个视景体,使得视景体外多余的部分裁剪掉,最终进入图像的只是视景体内的有关部分。投影包括透视投影(Perspective Projection)和正视投影(Orthographic Projection)两种。

透视投影,符合人们心理习惯,即离视点近的物体大,离视点远的物体小,远到极点即为消失,成为灭点。它的视景体类似于一个顶部和底部都被进行切割过的棱椎,也就是棱台。这个投影通常用于动画、视觉仿真以及其它许多具有真实性反映的方面。

OpenGL透视投影函数有两个,其中函数glFrustum()的原型为:

void glFrustum(GLdouble left,GLdouble Right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far);

它创建一个透视视景体。其操作是创建一个透视投影矩阵,并且用这个矩阵乘以当前矩阵。这个函数的参数只定义近裁剪平面的左下角点和右上角点的三维空间坐标,即(left,bottom,-near)和(right,top,-near);最后一个参数far是远裁剪平面的Z负值,其左下角点和右上角点空间坐标由函数根据透视投影原理自动生成。near和far表示离视点的远近,它们总为正值。该函数形成的视景体如图三所示。

图三、透视投影视景体

另一个透视函数是:

void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear, GLdouble zFar);

它也创建一个对称透视视景体,但它的参数定义于前面的不同,参数fovy定义视野在X-Z平面的角度,范围是[0.0, 180.0];参数aspect是投影平面宽度与高度的比率;参数zNear和Far分别是远近裁剪面沿Z负轴到视点的距离,它们总为正值。

图四、透视投影视景体

以上两个函数缺省时,视点都在原点,视线沿Z轴指向负方向。

正射投影,又叫平行投影。这种投影的视景体是一个矩形的平行管道,也就是一个长方体,如图五所示。正射投影的最大一个特点是无论物体距离相机多远,投影后的物体大小尺寸不变。这种投影通常用在建筑蓝图绘制和计算机辅助设计等方面,这些行业要求投影后的物体尺寸及相互间的角度不变,以便施工或制造时物体比例大小正确。

图五、正射投影视景体

OpenGL正射投影函数也有两个,一个函数是:

void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top, GLdouble near,GLdouble far)

它创建一个平行视景体。实际上这个函数的操作是创建一个正射投影矩阵,并且用这个矩阵乘以当前矩阵。其中近裁剪平面是一个矩形,矩形左下角点三维空间坐标是(left,bottom,-near),右上角点是(right,top,-near);远裁剪平面也是一个矩形,左下角点空间坐标是(left,bottom,-far),右上角点是(right,top,-far)。所有的near和far值同时为正或同时为负。如果没有其他变换,正射投影的方向平行于Z轴,且视点朝向Z负轴。这意味着物体在视点前面时far和near都为负值,物体在视点后面时far和near都为正值。

另一个函数是:

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)

它是一个特殊的正射投影函数,主要用于二维图像到二维屏幕上的投影。它的near和far缺省值分别为-1.0和1.0,所有二维物体的Z坐标都为0.0。因此它的裁剪面是一个左下角点为(left,bottom)、右上角点为(right,top)的矩形。

(四)视口变换。

视口变换就是将视景体内投影的物体显示在二维的视口平面上。运用相机模拟方式,我们很容易理解视口变换就是类似于照片的放大与缩小。在计算机图形学中,它的定义是将经过几何变换、投影变换和裁剪变换后的物体显示于屏幕窗口内指定的区域内,这个区域通常为矩形,称为视口。OpenGL中相关函数是:

glViewport(GLint x,GLint y,GLsizei width, GLsizei height);

这个函数定义一个视口。函数参数(x, y)是视口在屏幕窗口坐标系中的左下角点坐标,参数width和height分别是视口的宽度和高度。缺省时,参数值即(0, 0, winWidth, winHeight) 指的是屏幕窗口的实际尺寸大小。所有这些值都是以象素为单位,全为整型数。

(5)裁剪变换

在OpenGL中,除了视景体定义的六个裁剪平面(上、下、左、右、前、后)外,用户还可自己再定义一个或多个附加裁剪平面,以去掉场景中无关的目标,如图六所示。

图六、附加裁剪平面

附加平面裁剪函数为:

1、void glClipPlane(GLenum plane,Const GLdouble *equation);

函数参数equation指向一个拥有四个系数值的数组,这四个系数分别是裁剪平面Ax+By+Cz+D=0的A、B、C、D值。因此,由这四个系数就能确定一个裁剪平面。参数plane是GL_CLIP_PLANEi(i=0,1,...),指定裁剪面号。

在调用附加裁剪函数之前,必须先启动glEnable(GL_CLIP_PLANEi),使得当前所定义的裁剪平面有效;当不再调用某个附加裁剪平面时,可用glDisable(GL_CLIP_PLANEi)关闭相应的附加裁剪功能。

下面这个例子不仅说明了附加裁剪函数的用法,而且调用了gluPerspective()透视投影函数,读者可以细细体会其中的用法。例程如下:

#i nclude "glos.h"
#i nclude <GL/gl.h>
#i nclude <GL/glu.h>
#i nclude <GL/glaux.h>
void myinit(void);
void CALLBACK myReshape(GLsizei w, GLsizei h);
void CALLBACK display(void);
void CALLBACK display(void)
{
GLdouble eqn[4] = {1.0, 0.0, 0.0, 0.0};
glClear(GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 0.0, 1.0);
glPushMatrix();
glTranslatef (0.0, 0.0, -5.0);
/* clip the left part of wire_sphere : x<0 */
glClipPlane (GL_CLIP_PLANE0, eqn);
glEnable (GL_CLIP_PLANE0);
glRotatef (-90.0, 1.0, 0.0, 0.0);
auxWireSphere(1.0);
glPopMatrix();
glFlush();
}
void myinit (void)
{
glShadeModel (GL_FLAT);
}
void CALLBACK myReshape(GLsizei w, GLsizei h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
}
void main(void)
{
auxInitDisplayMode (AUX_SINGLE | AUX_RGB);
auxInitPosition (0, 0, 500, 500);
auxInitWindow ("Arbitrary Clipping Planes");
myinit ();
auxReshapeFunc (myReshape);
auxMainLoop(display);
}

阅读全文(32) | 回复(0) | 引用通告(0) | 编辑 | 推荐

发表评论:昵称:密码: (游客无须输入密码)主页:标题: 字号1234567

心中的梦想 导航 : ChinaITLab | Cisco | Windows | Linux | java | Oracle | 论坛

中国IT实验室博客首页我的首页 我的相册VC随写(13) 心情随笔(0)

人们回眸本世纪的沧桑巨变,心中栖息着许多期盼和梦想,其中最宏伟
壮丽、最朴实纯真的梦想之一莫过于人类不再被拖入战争的深渊,化干戈为
玉帛,营造和维护一个和平、稳定、繁荣的世界.......

‘贰’ 歪歪的网络公益讲座有哪些啊,免费的编程方面的 拜托各位大神

我看了天轰穿老师的歪歪的网络公益讲座,听风趣的,具体你可以去他学云网的博客的上看看的。

‘叁’ 新生入学教育系列讲座标题怎样吸引

新生入学教育系列讲座标题这样写吸引:在写的时候,开场白(即前几句)应该尽量的有些调侃,否则新生通常不会对你这后文感兴趣。还有,一些道理尽量举几个有趣而且现在最流行的例子,贴近大家距离。

‘肆’ 健康教育讲座有哪些标题

健康姐与讲座有哪些标题江南教育讲座有很多标题犀利。心理健康与能力。健康的重要性。

‘伍’ 华为自研编程语言“仓颉”开启内测

华为自研编程语言“仓颉”开启内测

华为自研编程语言“仓颉”开启内测,华为2022年将推出自研的编程语言仓颉,将鸿蒙和欧拉在应用开发生态上进行打通,拓展系统的可能性。华为自研编程语言“仓颉”开启内测。

华为自研编程语言“仓颉”开启内测1

备受关注的华为自研编程语言“仓颉”,又火上热搜了。

这次是因为“仓颉”正式开启了内测,目前已经有部分开发者拿到源代码。

前不久,华为编程语言实验室发布了一份“新语言试用报名-202203”问卷,正式征集一小批开发者对“仓颉”编程语言进行小范围测试。

从问卷内容来看,开发者们需要填写Gitee主页、职业和公司等信息,然后等待邮件通知。

现在,随着更多细节被透露出来,之前对于“仓颉”猜测的一些传言,也有了明确的答案。

英文名Cangjie,并非中文编程

事实上,早在去年10月,华为官方就明确透露过“将发布自研鸿蒙编程语言”。

对此,华为消费者业务软件部总裁龚体表示,它将“为鸿蒙生态基础设施建设补上最后一环”。

同时,华为也已经申请注册了“华为仓颉”、“仓颉语言”等商标,分类包括科学仪器、设计研究等,而部分“仓颉”商标则还在驳回复审、注册申请的阶段。

这里看到华为还注册了一个叫“仓杰”的商标,目前也已经通过申请(手动狗头):

△图源@企查查APP

时间来到今年3月份。

随着内测的开启,部分开发者在拿到“仓颉”的源代码后,也对此前漫天飞的猜测和传言进行了一些回应。

其一,“仓颉”的英文名就是Cangjie,而不是此前传闻的“char”。

当时华为被曝研发“仓颉”后,知乎就传出过这门编程语言英文名是“char”的消息:

目前这个传闻已经被辟谣。

其二,“仓颉”不是中文编程,也不存在所谓的“套壳”。

据知乎一位匿名用户表示,体验后发现“仓颉”编程语言“跟中文半点关系没有”,语法类似go+java。

其实,现在随手一搜还是能搜到一大堆关于“仓颉”是中文编程的假消息……

其三,之所以还在内测,是因为包括团队和内测成员都还在改进代码。

嗯,问就是还在修bug(手动狗头)。

但其实,大家最好奇的还是“仓颉”这门编程语言究竟长啥样。

事实上,此前华为编程语言实验室主任、南京大学冯新宇教授,已经开设过一门关于《编程语言的设计和实现》的课程,目前华为官方已放出B站视频。

华为官方开设过编程语言课程

在讲座一开始,冯教授就透露了自己目前进行的一些工作。

具体来说,学术上的研究主要包括PL理论及应用等,而工业方面的研究,则主要是带领华为编程语言实验室进行工业编程语言的设计和实现:

在冯新宇教授给出的课件中可以看见,目前的编程语言类型主要可以分为以下几种,其中着重提到了平台型语言:

像C#、Go、Swift这些开源编程语言,也都是由像谷歌、微软和苹果这样的公司自己投入去做的`,以此掌控语言的技术演进策略和方向。

但华为“仓颉”究竟是一门怎样的语言,目前还有待官方正式公开信息。

华为自研编程语言“仓颉”开启内测2

16日,华为编程语言实验室发布了一份“新语言试用报名-202203”问卷,面向部分开发者发布了华为新语言的试用报名问卷,开发者们需要填写Gitee主页、职业和公司等信息,然后等待邮件通知。

同时,在问卷填写完成后,将通过邮件进行后续信息的通知。根据华为此前公布的内容来看,这款“新语言”,指的应该就是华为在2021年开发者大会上,公布的自研编程语言“仓颉”。

华为副总裁、计算产品线总裁邓泰华曾2021年 9 月在接受采访时表示,仓颉是华为根据HarmonyOS量身打造的编程语言,华为2022年将推出自研的编程语言仓颉,将鸿蒙和欧拉在应用开发生态上进行打通,拓展系统的可能性。华为消费者业务软件部总裁龚体表示,它将“为鸿蒙生态基础设施建设补上最后一环”。

随着内测的开启,部分开发者在拿到“仓颉”的源代码后,在网上对之前各种谣言进行了回应和澄清:

第一,不是中文编程;

第二,不存在所谓的“套壳”;

第三,内测的原因归根结底还是正在改进。

第四,“仓颉”的英文名是直译“Cangjie”,不是“char”。

我们国家也应该有自己的编程语言了…

苹果有Swift;

谷歌有Dart;

微软有 TypeScript,它的作者安德斯·海尔斯伯格,是C#的首席架构师;

连小小捷克的JetBrian“喷气脑”公司搞的Kotlin,这货上天入地无所不能,是我目前知道的应用范围最广泛的语言……还有Julia近来也是掀起一股热潮……我们国家也应该有自己的编程语言了…

9月初,微博博主“IT工程师”爆料华为正在研发自主编程语言“仓颉”,由南京大学的计算机科学与技术系博士生导师——冯新宇领衔开发。

华为自研编程语言并非秘密,华为在编译器与编程语言方面早有动作。

方舟编译器,就是华为在编译器方向的研究成果之一。

2019年8月31日,华为在开源平台上放出了方舟编译器的源代码,这是华为首个完全自主研发的编译器平台。

早前,在谷歌对华为封锁GMS的时候,华为以“先见之明”在制裁不久后就发布了HMS,如今HMS全球开发者已经达到180万,华为应用市场APP Galley全球活跃用户也达到了4.9亿,应用分发量达到2610亿,成为全球第三的应用商店。

让我们一起期待正式公布的那一天吧!

华为自研编程语言“仓颉”开启内测3

华为编程语言实验室,面向部分开发者发布了心得语言试用报名的问卷。在完成问卷的填写后,会根据邮件进行后续信息的通知。

早在2020年9月的时候,有微博博主就曝光了,华为正在研发自主编程语“仓颉”,带领整个团队的是南京大学的博士导师冯新宇。在20年的时候就网传“仓颉”是为了鸿蒙来的。

如今消息已经证实,确实“仓颉”是根据鸿蒙HarmonyOS量身打造的编程语言,通过“仓颉”鸿蒙和欧拉在应用开发生态上进行打通。

基于上面消息网友展开了广泛讨论,其中有一个网友说中文编程语言如果推广开,可以降低编程的门槛,这是好事。但是其他网友炸锅了:

也就是有网友认为我国编程语言是中文的,中文编程语言可以降低编程门槛。持反对意见的网友觉得“你学好中文了,你会写书写作文?”。

但是有一些表示自己是仓颉内测成员的网友来辟谣了。已经签订保密条款限制,目前只允许辟谣。首先非中文编程,从掌握的代码的来看也不存在网传的“套壳”。内侧的根本原因就是还在改进。所谓内侧人员不能泄露任何文档、代码风格,内侧群聊等等相关消息。

而且仓颉的英文直译是Cangjie;

‘陆’ 提高编程技能,你做过有效的事情是什么

在stackexchange网站上看到了一个非常好的问答,有人问:你做过的有效的提高你的编程水平的一件事情是什么?

回首作为一个程序员这些年来的生活和职业道路,我使用了很多种不同的方法来提高我的编程技能——阅读代码,编写程序,阅读书籍,听讲座,看视频,等等。

我的问题是:你做过的有效的提高你的编程水平的一件事情是什么?对于那些想提高水平的程序员,你的建议是什么?

我希望你们提供的答案是各种各样的,并且不是那种“放之四海而皆准”的答案——我希望得到适用于不同人的不同的答案。

有很多人给出了自己的答案,在这里,我将其中受认可的前三种答案选出来翻译给大家。

受欢迎的回答:学无止境

没有特别的先后次序?

和比自己更聪明的人一起工作

永远乐意听取他人的意见,不管对方是低级水平,一般水平,资深,还是大师。职称头衔并不代表一切。

学习其它的框架/语言,学习它们是的工作原理和思想,拿它们跟你已知的技术做比较。

学习各种设计模式,实践理论,然后用它们检查自己先前的知识,在需要的时候使用这些模式。

结对编程

反对Joel说的一切。


第二受欢迎的回答:成为多面手

争取成为一个‘多面手万事通’

在我职业生涯的早期,我在一种数据库和编程语言上是个专家。不幸的是,这种数据库在“数据库战争”中落败了,我才发现我的职业道路?很窄。在此之后,我下定决心以后决不能把自己封在一个小空间里。我开始学习所有手头上能接触到的东西:Windows,Unix,C,C++,Java,C#,Perl,Python,Access,SQLServer,Oracle,Informix,MySQL,等等。不管什么样的新的,不常见的工具或技术,我都成为“大拿”——“去问克雷格(作者自己),他要是不会,他会去学会的。”结果,我做了各种各样的项目,从为环境监测做嵌入式系统,到为导弹防御做命令和控制系统。

我在各种的公司里唯一遇到的问题是:它们坚持要把我固定在一个专门的研究方向内,而我的专门研究是要成为一个多面手。[编辑:也叫做学识渊博的人或多才多艺的人或多领域专家。]

有些事情需要留意?高科技界里知识的半衰期是多少?根据摩尔定律(Moore’slaw):18-24月内,半数你学到的知识都会过时。错误的遵循这种规律的专家会轻易的在这种技术发展的压力崩溃;一个多面手要做的事就是不断的丰富自己的技能,并从应用这些技能的经历中吸取教训。

第三受欢迎的回答:不要跟臭棋篓子下棋

我一直认为自己在不错的程序员中也算是个“灌篮高手”。直到有个家伙——我们叫他艾伦——被招进团队。艾伦很显然在很多方面都比我优秀。也比我年轻。他让我认识到,在过去的这些年里,我没有多少长进。我是一个特定技术方向的程序员,而且是水平一般。

这惊醒我应该自觉的不断提高自己的水平,特别是我写的代码的水平。

艾伦引导我学会了很多东西。他告诉我,大部分我写的代码在今后的数年里都将一直维护和进行扩展,写代码时要将这点铭记在心。我应该为我的代码写自动测试程序。艾伦说代码的开发一定不能停止在第一版上,应该不断的重构,提炼,让它达到完美。我发现,我对这些语言和工具的使用都还有还很大的改进空间。

从艾伦那我学到的重要的一件事情是:永远不要停止学习。

数年后,艾伦离开了公司。我的心里突然感觉空荡荡的。这些年与他为伴让我在技能上提升到了一个全新的水平,我知道现在我比团队里的其他人优秀很多。他们仍然写着糟糕的代码,犯着以前犯过的错误。我努力教育他们,但他们对此不感兴趣。事实上,他们讨厌有人这样傲慢自大的指出他们犯的错误。

于是,几个月后,我也离开这这个公司。我去了一个很小的公司,在一个很出色的团队里工作。那里每个人都渴望学习更多知识,我喜欢这样的。

我很幸运能遇到艾伦。没有他,我也许现在仍然待在那家死气沉沉的公司和那帮食古不化的家伙在一起,哪都去不了,想的全是自己的私利。

从我个人而言,我觉得第三个答案对我有价值,不知各位同行们有什么感受?


‘柒’ 讲座 欢迎标语我们公司请了一位教授来讲课,请问欢迎标语该怎么写

热烈欢迎某某教授亲临本公司演讲

‘捌’ c语言编程题 题目标题: 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就

c语言追求的是程序执行时间效率,题目给出立方之后是四位数,可以人为确定年龄范围在10-21岁,至于为什么不确定六位数再精确一点,个人觉得没什么必要。这个编程的核心在于如何分辨这10个数字不同,我定义了一个函数,用数组加循环判断。以下是具体代码。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

intsame(inta[10]);//判断10个数是否相等,相互不相等返回1
intmany(inta);//判断一个整型数是几位数

main()
{
inta[10],i,j,s,l;//a储存10个数字的数组,i年龄循环变量,j将数字存入数组,s储存四位数,l储存六位数
for(i=10;i<22;i++){
s=pow((double)i,3);
l=pow((double)i,4);
if(many(l)!=6)
continue;//如果不是六位数则退出当次循环
for(j=0;j<4;j++){
a[j]=s%10;
s=s/10;
}//存入四位数
for(j=4;j<10;j++){
a[j]=l%10;
l=l/10;
}//存入六位数
if(same(a))
printf("age=%d ",i);//输出
}
system("pause");
}

intmany(inta){
inti=0;
while(a>0){
a=a/10;
i++;
}
returni;
}

intsame(inta[10]){
inti,j,flag=1;
for(i=0;i<10;i++){
for(j=i+1;j<10;j++){
if(a[i]==a[j])
flag=0;
}
}
returnflag;
}

‘玖’ 给高一新生讲座的标题

看来你高中时代的表现不错,这种事我比较有经验,我看你的提纲好像和我这里的内容有点区别,我的这些题目看看你能不能用:《新高一·新天新地》《继往开来·成就梦想》《我的高中,现在开始》······
其实,你不准备标题也可以,在写的时候,开场白(即前几句)应该尽量的有些调侃,否则新生通常不会对你这后文感兴趣。还有,一些道理尽量举几个有趣而且现在最流行的例子,贴近大家距离。
祝你的演讲成功!

‘拾’ 编程必备课程有哪些

刚学,那么C语言肯定是不能不学的,【C】是基础的基础。先学C,一定要把C基础打牢!另外,【数据结构】是必学的。另外就是【计算机组成原理】也就是接近计算机硬件方面的东西也需要了解。了解了计算机的底层实现对编程是很有用的。你看是学我建议你就从C开始,没人会反对从C开始学的,给你推荐本书,谭浩强《C程序设计》,你可以去网上查查这本书。评价是比较高的。而且现在的很多高校都是用这本书做入门教材,不管计算机专业还是非计算机专业都是。学程,从C开始,这似乎是理所当然的事了。虽然说现在很大部分人说编程思想更重要,是,我承认这点,可是你一点程序都不会学怎么去体会思想,起码你得会写程序你才会有思想产生嘛,对于初学程序的来说,学会怎么编程是编程思想的前提。如有疑问,请补充!

热点内容
锐龙本编程 发布:2025-07-16 19:35:08 浏览:642
初学c语言用什么软件 发布:2025-07-16 19:29:12 浏览:337
编译原理实验分析子程序 发布:2025-07-16 19:28:06 浏览:458
长江存储宿舍有wifi吗 发布:2025-07-16 19:20:45 浏览:869
sqlservertrigger 发布:2025-07-16 19:08:19 浏览:399
android中权重 发布:2025-07-16 19:07:26 浏览:421
lol界面在哪个文件夹 发布:2025-07-16 19:01:53 浏览:936
php文件解压 发布:2025-07-16 19:01:08 浏览:883
日志中心服务器怎样搭建 发布:2025-07-16 19:00:27 浏览:603
硬盘加密保护 发布:2025-07-16 18:58:52 浏览:39