Ⅰ 对程序员来讲,HelloWorld代表什么
是对自己这大半辈子“伴侣”的初次相识;
Ⅱ 程序员学算法到底有什么用
算法是编程的基础,可以提升自己的逻辑能力,好的算法可以使编程更简单,减少冗余,用最短的代码实现功能,学好算法是很有必要的
算法是计算机的灵魂,是解决所有问题的根源,所以计算机与数学关系非常密切。
程序是算法加编程语言。其中,编程语言是很多程序员都熟知的。但说到算法部分程序员觉得跟自己关系不大。实际上,所有的程序都要用到算法。下面举几个算法的例子帮您理解一下算法的作用。
HelloWorld里的算法
学过编程的人,接触到的第一个程序大概都是着名的“Helloworld”了。这么简单的程序会有算法吗?当然有啦,请思考一下计算机是只认识数字的,怎么让它能识别文字呢?聪明的人类给每一个文字都制定了一个编码,配合数据类型的定义,计算机就能识别文字了。这种编码的方式就是一种算法了。您在键盘上输入文字本身就是一种算法的实现。英文还好就一两百个字母数字和符号。汉语博大精深有几万个字符,用101个按键组合来体现所有的文字这本身就是一种了不起的算法。
经典的算法-割圆术
割圆术跟程序的关系不大,但它却凝聚了编程的思想。我们知道所谓程序运算是由四则运算加上逻辑运算组成的。割圆术正是反复使用用了这些基本运算,经多次循环不断接近圆周率的。这个方法在算法中叫递推法。在只能用算筹的年代,就能想到这么时尚的方法,我不得不说老祖宗真的很聪明。从另一个角度上说,哪亮氏算法其实是超越了编程的一种思想。
一个关于算法的故事
这个故事有点悲伤。我们知道法律规定一个人去逝后,他的遗产要由直系亲属继承。有这样一个家庭夫妇二人和一个孩子。有一天丈夫带着孩子二人坐飞机旅行,不幸的是飞机坠毁了二个人都遇难了。现在出现了一个遗产继承的问题。
丈夫的父母都健在,如果丈夫先于孩子去世,那么按照法律他的遗产要由父母妻子和孩子四人继承,每人分得四分之一。之后孩子去世,妻子将继承孩子的全部财产。结果是父母每人分得四分之一,而妻子一人独得二分之一。
如果孩子先于丈夫去世,则结局就是父母和妻子每人得三分之一。
到底该怎么分呢?没人能知道,因为谁都没有办法搞清楚丈夫和孩子哪个先去世。这说明了前面那个关于继承的法律有点问题。这个问题是一个关于时间的算法问题。这种现象在互联网的世界里很普遍,很多人都在发信息,但互联网不能保证先发的信息就能先到。因此,必须要设计出算法来解决这种时间上的冲突。
我们可以把计算机程序想象成用数字去模拟现实世界,算法则对应了现实世界中的各种规则。不李散懂得算法,我们便无法确定写出来的程序能否满足需求。
很高兴回答您提出的,程序员学好算法到底有什么用?
1、首先算法学好的话,不论对你思考问题的方式还是对你编程的思维都会键拍有很大的好处。
2、编程算法只是算法的一种表达形式,还可以用表格或流程图来表达算法。
3、各种算法在不同领域扮演不通角色,本质上没有区别,一通百通。
4、一些基础算法的话,没必要找资料书籍,也没有太多要求,随便在网上搜索一下,就能找到很多详细的资料。
其实,一般初级甚至中级程序员在日常开发中是用不了算法的,要么接触不到,要么别人帮你封装好了,你可以用现成的
但是时间一长,你就会发现不会算法,就很难变得更加优秀,你会发现优秀框架的源码,部分是需要用到算法,你不懂,有些存储原理,也用到算法,用到这些算法,你的代码执行的效率更高,这个时候你就需要去了解这些东西,否则你就很难再上一层楼
千万不要觉得算法不重要,其实这个是一种宝贵财富,在日常的开发中,对你有潜移默化的影响,所以,想成为一个优秀的程序员,算法数据结构是必不可少学的,一起加油学习算法吧
Ⅲ 什么是VB什么是VC它们有什么区别
VB 是Visual Basic编程语言
1991年,美国微软公司推出了Visual Basic(可简称VB),目前的最新版本是VB 2005(VB8)中文版。
Visual 意即可视的、可见的,指的是开发像windows操作系统的图形用户界面(Graphic User Interface,GUI)的方法,它不需要编写大量代码去描述界面元素的外观和位置,只要把预先建立好的对象拖放到屏幕上相应的位置即可。
Basic指的是Beginners all_purpose symbolic instruction code 初始者通用符号指令代码语言。
Visual Basic有学习版、专业版和企业版三种版本,以满足不同的开发需要。学习版适用于普通学习者及大多数使用Visual Basic开发一般Windows应用程序的人员,但是;专业版适用于计算机专业开发人员,包括了学习版的全部内容功能以及Internet控件开发工具之类的高级特性;企业版除包含专业版全部的内容外,还有自动化构件管理器等工具,使得专业编程人员能够开发功能强大的组骨子里分布式应用程序。
VB是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。它简单易学、效率高,且功能强大可以与Windowsr专业开发工具SDK相媲美。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,以用动态链接库(DLL)、对象的链接与世隔嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。随着版本的提高,Visual Basic的功能也越来越强。5.0版以后,Visual Basic推出了中文版,与前个版本相比,其功能有了很大提升。
在二十一世纪初,microsoft公司推出Visual Studio 2003与Visual Basic之间有了重大变化,Visual Studio为各种编程工具做了一个平台,Visual Basic.NET可在这种平台上运行。相对于传统VB,有很大的不同。VB.Net,首次使用.Net构架进行可视化编程,并且能很好地与COM构架兼容。2005年Visual Studio 2005则运用了NET 2.0的技术,更加的方便了程序员的工作。可是新的程序对系统配置要求也较高,需要微软.Net Framework 2.0以上的.Net构架支持。
另外VB(V代表Vitamin)还有一个意思:维生素B
维生素B包括维生素B1、维生素B2、维生素B6、维生素B12、烟酸、泛酸、叶酸。这些B族维生素是推动体内代谢,把糖、脂肪、蛋白质等转化成热量时不可缺少的物质。如果缺少维生素B,则细胞功能马上降低,引起代谢障碍,这时人体会出现怠滞和食欲不振。相反喝酒过多等导致肝脏损害,在许多场合下是和维生素B缺乏症并行的。
以下是含有丰富维生素B的食品:
①含有丰富维生素B1的食品:小麦胚芽、猪腿肉、大豆、花生、里肌肉、火腿、黑米、鸡肝、胚芽米等。
②含有丰富维生素B2的食品:七腮鳗、牛肝、鸡肝、香菇、小麦胚芽、鸡蛋、奶酪等。
③含有维生素B6、维生素B12、烟酸、泛酸和叶酸等食品: 肝、肉类、牛奶、酵母、鱼、豆类、蛋黄、坚果类、菠菜、奶酪等。其中的维生素B1在人体内无法贮存,所以应每天补充。
B族维生素若想全部摄取比较困难,但是认真选择食物就可以简单且方便的摄取。上述含有维生素B的食物可以分为①和②③两组。看看上述分类就可以明白,②和⑧全都含在大体相同的食物中。因此①作为一组食物,②和③合在一起形成一组食物,组合选择两组食物,基本上可以把B族维生素摄取到手。
VB的还有第三种意思
价键理论
valence-bond theory
一种获得分子薛定谔方程近似解的处理方法。又称电子配对法。历史上最早发展起来的化学键理论。主要描述分子中的共价键和共价结合,其核心思想是电子配对形成定域化学键。
1927年W.H.海特勒和F.W.伦敦首次完成了氢分子中电子对键的量子力学近似处理,这是近代价键理论的基础。L.C.鲍林等加以发展,引入杂化轨道概念,综合成价键理论,成功地应用于双原子分子和多原子分子的结构。
价键理论是海特勒伦敦处理氢分子方法的推广,要点如下:①若两原子轨道互相重叠,两个轨道上各有一个电子,且电子自旋方向相反,则电子配对给出单重态,形成一个电子对键。②两个电子相互配对后,不能再与第三个电子配对,这就是共价键的饱和性。③遵循最大重叠原则,共价键沿着原子轨道重叠最大的方向成键。共价键具有方向性。原子轨道通常在某个特定方向上有最大值,只有在此方向上轨道间才有最大重叠而形成共价键。不同原子轨道有不同成键能力。原子轨道的最大值作为原子轨道成键能力的度量,鲍林给出s、p、d、f等原子轨道成键能力依次为1、3、5、7。在主量子数相同时,成键能力大的轨道形成的共价键较牢固。
价键理论与化学家所熟悉的经典电子对键概念相吻合,一出现就得到迅速发展。但价键理论计算比较复杂,使得后来发展缓慢。随着计算技术日益提高,该理论还会有新发展。
在以太网技术中,VB称做:虚拟网桥(Virtual Bridge)
VB其实是为了管理方便对管理域的一个划分,相当于一个虚拟的L2 Lanswitch。在城域网的应用中,VB是基于用户划分的。即:每个用户都有自己独立的VB,其中包含多个vlan标签和mac地址。由于各个VB之间相互隔离,不同的VB可分配相同的vlan而互不影响,而基于vlan划分VB的L2芯片不能区分不同用户的相同vlan。
一、VC是什么?学VC是学什么?
首先VC是一个软件(IDE集成开发环境)(编译、编辑、调试)
C和C++。但C++中的有些特性是不用的,例如I/O流,多态继承
WindowsSDK(软件开发工具)
VC的灵魂:MFC(微软基础类库)
ATL(ActiveX模板类库)
其他的SDK,如OpenGL,DirectX,ActiveMoive,DrawDib(WinG)
VC是许许多多技术的综合,就好像少林72般绝技,一般在应用中学会其中很少一部分就够了。我们的现在目的,其实不过是学一套少林长拳。这套长拳应包括:
1、养成一种严谨的软件开发习惯,熟悉软件工程的基本原则。
2、C语言基础
3、C++最基本内容:类、继承性、封装性、多态性的概念
4、如何用向导建立一个程序框架
5、设计菜单
6、设计工具条
7、设计和使用对话框,熟悉最常用的对话框控件:按钮、静态文本、编辑框等
8、知道怎样新建类、成员函数、成员变量、消息处理函数。
9、了解最常用的Windows消息:如WM_PAINT(重绘窗口),鼠标按下、弹起、移动,初始化对话框,等。
10、了解最简单的GDI(图形设备接口):写文字、画框、画点、画线、画圆,设置画笔、画刷。
11、熟悉最常用的MFC类:
CWnd
CDocument
CView
CDC
CDialog
CWinApp
CGdiObject及子类
CString、CPoint、CRect、CSize等简单数据类型
CFile
以上提到的这些内容,是每个人都会用到的内容。
二、MFC简介
上述主要内容都是与实际操作关系非常密切的,在此不可能讲清楚;而且,这些在一般的书里都会讲到。我主要将最重要的MFC介绍一下。
MFC是对WindowsAPI的封装,大大简化了我们的工作;学VC主要就是要学MFC,大约有100多个类,但常用的也就二三十个。应该象背4级单词一样将这些常用类搞懂;当然不要死记,要通过看帮助、看例子、动手练习来学会它们;而且,并非每个类的内部的所有函数都要学会,要日积月累。如果真的想成为高手,做个笔记本把自己认为重要的类、函数记下来,随时学习,也是很好的突击方法。
下面介绍最重要的MFC。
CWnd:窗口,它是大多数“看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生的。该类很大,一开始也不必学,知道就行了。
CDocument文档,负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写)
CView视图,负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd::Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。你自己的许多功能都要加在里面,你打交道最多的就是它。
CDC设备文本。无论是显示器还是打印机,都是画图给用户看。这图就抽象为CDC。CDC与其他GDI(图形设备接口)一起,完成文字和图形、图像的显示工作。把CDC想象成一张纸,每个窗口都有一个CDC相联系,负责画窗口。CDC有个常用子类CClientDC(窗口客户区),画图通常通过CClientDC完成。
CDialog对话框
CWinApp应用程序类。似于C中的main函数,是程序执行的入口和管理者,负责程序建立、消灭,主窗口和文档模板的建立。最常用函数InitInstance():初始化。
CGdiObject及子类,用于向设备文本画图。它们都需要在使用前选进DC。
CPen笔,画线
CBrush刷子,填充
CFont字体,控制文字输出的字体
CBitmap位图
CPalette调色板
CRgn区域,指定一块区域可以用于做特殊处理。
CFile文件。最重要的不外是Open(打开),Read(读入),Write(写)
CString字符串。封装了C中的字符数组,非常实用。
CPoint点,就是(x,y)对
CRect矩形,就是(left,top,right,bottom)
CSize大小,就是(cx,cy)对(宽、高)
三、用好MSDN和例子
作为提高,推荐看的例子有:
nHello最简单的程序框架
nScribble鼠标绘图。教程:编程基础,GDI
nDiblook图像处理最简单范例
nMFCIE因特网浏览器
nEnroll数据库
nDaoviewDao(数据访问对象)范例。树型和列视控件
nCubeOpenGL范例,画一个不断旋转的方块
nHierSvrOLE服务器
nOclientOLE包容器
nDrawcli鼠标绘图。也包括OLE。
nWordPad写字板。OLE
四、几点经验
A.为什么要用Windows而不是DOS编程
Windows编程并不比DOS编程难很多,只是在刚刚接触的时候感到头绪繁多,不知从何下手。实际上,如果你会C语言,你会发现Windows编程的难度并不比当年学C语言时大。DOS编程要想成为高手,也需要学习几百个函数(无论是TC、BC、MicrosoftC),并要深入了解汇编语言级的DOS功能调用。而现在在Windows下,付出相同的工作量,你却可以获得几倍的收益。如果你以前熟悉DOS编程,现在再搞Windows编程,只要两个星期肯定会感到巨大的优越性:在DOS下,每一件事都要自己干,而且还有64K内存、显示精度等的限制,实在是事倍功半了。
B.为什么要用VC而不是其他Windows编程语言
n大多数大型软件(包括Windows自己)都是用C、C++编的,所以可以利用的源代码特别多。例如Photoshop,就有VC的编程接口。的其他的语言都不如VC有历史优势。而且VC的开发工具特别多,从控件公司到硬件开发商,其产品很少敢不提供VC接口的。
nVC适合组织大工程(VB就不行)
nBorlandC++或C++Builder也很不错,并不比VC差。但BC的版本兼容性不好,从3.1到4.0就出现“代沟”,而且VC提供了极为丰富的文档和范例,VC的参考资料也远比BC多。并且VC与其他的VisualStudio成员可以协调工作,对软件工程有利。
n
C.开始不要学WinAPI编程,但以后最好学学WinAPI
特别要注意,开始不要买讲WindowsSDK编程的书。一个臭名昭着的例子就是“HelloWorld”。各种计算机语言在入门课中往往都给出一个例子,显示一行文字“HelloWorld”,无论是在Basic、C、Pascal,甚至汇编中,这个最简单的小程序都几行就可以写完。但在早期的Windows编程中,刚才讲到的“HelloWin”这个有名的例子就要组织一个工程、写上几百行代码才能实现。这就吓跑了很多想学Windows编程的人。实际上,在Windows下显示“Helloworld”,最简单的方法只要5行就够了:
#include“windows.h”
voidWinMain()
{
MessageBox(NULL,”HelloWorld!”,”MyFirstWindowsApplication”,MB_OK);
}
当然这个程序只建立了一个最简单的对话框,但这已经够了。
如果你没有SDK编程的经验,学VC就是要利用MFC绕过Windows编程的许多细节。有好的工具为什么不用呢?现在你在VC写一个”HelloWorld”,只要写一行代码就可以了。
voidCYourView::OnDraw(CDC*pDC)
{
//…….其他的代码
pDC->TextOut(100,100,”HelloWorld!”);
}
但MFC不是万能的,WinAPI和VC中有很多功能在MFC中并不能反映出来。在入门后,要想发挥VC的完全能力,WindowsAPI还是非常重要的。而且,这些API在其他Windows语言中也用得到。
学语言,与练武道理也差不多。VC、VB、Dlphi、VFP,以及其他的Windows编程语言,都属于同一个门派:Windows门,虽然招式不同,但内功都是一样的,这就是WindowsAPI(应用编程接口),大概是两千个函数。任何武功,招式即使再复杂,通常也能在很短时间内记下来;但内功就不是一朝一夕的事。而且,各门派的内功不同,Unix、Linux门有Uinx的内功,Apple(苹果)门有Mac的内功,Java更是自成一派。我们这里说的学VC,只是学招式,学招式一个月差不多就够了,聪明的两个星期就可以掌握。光学招式,吓唬人是够了,但和高手一过招,非出丑不可。要想精通VC,必须熟悉WindowsAPI。
D.高级语言与自然语言
一门高级语言与一门自然语言是类似的。关键要素有三:
语法:了解C和C++基本语法,这是比较容易的。
修辞:编程的艺术和风格。通常,这是与软件工程联系起来的。算法上的小伎俩并非是关键的。严谨,严格按照规范去做,同时又能发挥出极大的创造性,才是语言学家的本色。
词汇:如何利用别人的工作?如何利用自己以前的工作?这是一个软件工程师成功的关键。如果词汇量不丰富,就写不出好文章,就会有想法表达不出。一个人的语法在上小学之前就基本上学成了,修辞水平也在年轻时就确定了,惟有词汇量需要根据需要不断学习、不断扩充。VC编程中,拥有大的词汇量就意味着要掌握较多的类、函数和其他编程组件。如:WindowsSDK,MFC,以及你所专攻的领域的现成的SDK,比如3D编程中的OpenGL,多媒体编程中的DirectX,图像处理中的Victor库。另外,ActiveX控件的掌握往往也是成败的关键。我们这几年的工作也总结成了一个类库,叫IPX(图像处理框架),大大简化了图像处理的工作;不过现在还有很多细节问题要解决,如果有同学感兴趣可以参与这方面的工作。
学习VC,千万不要用我们在学校里学英语的方法,而要用小孩学说话的方法。所谓学英语的方法,就是我们在本科时学C语言的那种模式:详细搞懂每一个细节,背大量的规则,很少上机实践,没有实际问题供解决,最后由考试来断定学习成果。这种模式的后果大家都清楚:我们学了十几年英语,可有不少人还只会四五千个单词,写百把字的文章,不会说,不能听;尤其要命的是,看不懂VC的帮助文档。我们要象婴儿一样,在使用中学会语法、修辞和词汇;一开始肯定只能编出最糟糕的,就好像小孩开始只会说:“爸爸坐车车”;但“爸爸”“车车”这些词对小孩是最需要的,学习的效率反而最高。学VC的时候,应从我的需要出发,先做一个最简单的东西,然后一点一点复杂起来,象滚雪球一样。
学习VC尤其要和别人交流,你苦苦思考不明白的,也许别人早就解决了。一定要善于学习:从书店找出有用的书;向身边的高手学习;寻找可以利用的源代码、类库、组件、控件、库;如果能上互连网,那就更加能解决问题了。
================================================
Lchrennew:
以下内容由于曾经进行编辑替换(Replace)不让通过,所以采用附加(Append)的方式,在下面把我的版本加上,请大家对比:
VC是英文的缩写形式,其完整形式基本上包括如下几方面:
1. 医学、药品学、生物化学:Vitamins C,简写VC,音译“维他命C”,中文意译为维生素C,又被称为抗坏血酸。
[摘自http://..com/question/5925454.html]
1907年挪威化学家霍尔斯特在柠檬汁中发现。1934年才获得纯品,是无色晶体,属于水溶性维生素,易溶于水,水溶液呈酸性,所以称它为抗坏血酸。在酸性溶液中稳定,在中性或碱性溶液中易被氧化分解。铁、铜等金属离子能够加速其氧化速率。
维生素C在人体内的主要功能是:参加体内的氧化还原过程,促进人体的生长发育,增强人体对疾病的抵抗能力,促进细胞间质中胶原的形成,维持牙齿、骨骼、血管和肌肉的正常功能,增强肝脏的解毒能力。当人体中缺少维生素C时,就会出现牙龈出血、牙齿松动、骨骼脆弱、粘膜及皮下易出血、伤口不易愈合等症状。近年来,科学家们还发现,维生素C能阻止亚硝酸盐和仲胺在胃内结合成致癌物质——亚脱胺,从而减低癌的发病率。
2. 软件,计算机科学,Windows开发:Visual C以及Visual C++,由微软开发的可视化集成开发环境(IDE)Visual Studio中重要的一员,其编程规范符合ANSI C/C++标准,而其集成了微软开发的基础类库(MFC,即Microsoft Foundation Classes)以及可视化开发环境,VC提供了微软Windows操作系统的大量API,从而使得开发效率较其他语言大大提高。但是使用其MFC编写的程序只能运行在Windows操作系统下。
3. 经济金融领域、公司运作:Venture Capitalist,风险投资商,风险投资也叫“创业投资”,一般指对高新技术产业的投资。 作为成熟市场以外的、投资风险极大的投资领域,其资本来源于金融资本、个人资本、 公司资本以及养老保险基金和医疗保险基金。就各国实践来看, 风险投资大多采取投资基金的方式运作。
风险投资具有与一般投资不同的特点,表现在:
1)高风险性。 风险投资的对象主要是刚刚起步或还没有起步的中小型高新技术企业,企业规模小,没有固定资产或资金作为抵押或担保。由于投资目标常常是“ 种子”技术或是一种构想创意,而它们处于起步设计阶段,尚未经过市场检验, 能否转化为现实生产力,有许多不确定因素。因此,高风险性是风险投资的本质特征。
2)高收益性。风险投资是一种前瞻性投资战略,预期企业的高成长、高增值是其投资的内在动因。一旦投资成功,将会带来十倍甚至百倍的投资回报。 高风险、高收益在风险投资过程中充分体现出来。
3)低流动性。风险资本在高新技术企业创立初期就投入 ,当企业发展成熟后, 才可以通过资本市场将股权变现,获取回报,继而进行新一轮的投资运作。因此投资期较长,通常为4~8年。另外,在风险资本最后退出时,若出口不畅,撤资将十分困难, 导致风险投资流动性降低。
从本质上来讲, 风险投资是高新技术产业在投入资本并进行有效使用过程中的一个支持系统,它加速了高新技术成果的转化,壮大了高新技术产业, 催化了知识经济的蓬勃发展,这是它最主要的作用。当然,对于整个国家经济而言, 风险投资在推动企业技术创新,促进产业机构的调整、改变社会就业结构、 扩大个人投资的选择渠道、加强资本市场的深度等方面都有重要的意义。
VC 德国vision components公司的缩写,在业界名气很大。
德国vision components公司是世界上公认的智能摄像机领导厂商。其摄像机产品将图像采集、处理、I\O控制及通信集于一体。并且采用了当前性能最强大的图像处理专用DSP,智能化程度高,搭建系统成本低,是用户构造机器视觉系统的理想选择。
VC智能摄像机特征:
1.与PC机相匹敌的运算速度
2.与生产线上其它设备连接方便
3.能直接在显示器上输出SVGA或SXGA的视频图像
4.提供高度开放的图像处理库和一些常用库
5.能进行源码级的二次开发
6.工作过程可完全脱离PC机
VC还是NBA着名球员文斯-卡特(Vince Carter)的缩写
Ⅳ 如何成为一名合格的程序员
很多人想要成为程序员,在学习编程的过程中,面对各种bug和源源不断的问题,有时会对自己是否适合编程这一问题产生困扰。
作为一名教授全栈Web开发的教育工作者,我已经带领很多新手成为了程序员。好消息是,我发现没有任何人是不能学习编程的。我把它看作是一种基本的人类技能,就像阅读、写作和算术一样,任何人都可以做到。它是我们人类能力的一部分,只是需要学习。
在过去的几年的教学中,我目睹了不同的学生在学习过程中的斗争,以及在他们的挣扎中出现的一些共同问题。
下面的列表将帮助你了解你是否喜欢编程
1、缺乏好奇心
如果你对计算机是如何工作的缺乏好奇心,那么,作为一个程序员,你将永远不会成功。
学习的一个基本要求是对你所学的东西有积极的兴趣。如果你没有一个对技术好奇的头脑,你就没有精力去坚持学习要成为一个成功的程序员所需要的广博而深入的知识。相比之下,技术的世界就像一个巨大的海洋,里面充满了各种有趣的领域、相互联系的思想和各种可能,它们可以激发人们的想象力。想要潜入这片海洋并发现你所能发现的一切,需要内在的动力。
找到你的好奇心:问问你自己,编程是否真的让你感兴趣?如果没有兴趣,去找你感兴趣的东西,以节省时间和精力。但是如果你的答案是感兴趣,那么就强迫自郑袜己去发现一些你以前没有注意到的新事物,认识到浩瀚的技术海洋,再往下潜一点。
2、缺乏自主性
如果你不培养自己解决问题的能力,你就永远不会成为一个成功的程序员。
毫无疑问,要成为一个成功的开发人员,你必须对自己的学习能力充满信心。这实际上是一项基本的生活技能,如果你年满18岁,没有人有义务教你任何东西。这就是现实。当你想学习技术所需的技能时,首先要学会的是,在谷歌中输入你想要的任何东西并获取你需要的信息。除此之外,所有编程语言都有文档和规范,这些文档和规范对语言的工作方式解释的非常清楚,它们就像字典一样。作为一个程序员,最快速、最可靠的学习方法就是简单地阅读这些文档。
当你有问题的时候,在问别人答案和查阅官方文档之前,强迫自己先搜索一下,节省别人的时间。
3、面对问题缺乏毅力
如果你在遇到问题时轻易放弃,作为一个程序员,你将永远不会成功。
编程的本质是解决问题,这也是计算机产生的全部原因!每当你开始编写一个程序时,你总是会遇到一大堆问题。一旦你解决了一个问题,那么几乎总是有另一个问题在后面等着你。你在进步,但总是会有新的问题要面对。
这堆问题会让人望而生畏,令人感到沮丧。如果你觉得程序应该“能用就好”,那么你就没有精力坚持下去,因为问题还在继续出现,它们会一点一点地击溃你的情绪和决心。从字面上来说,你的工作就是找出程序为什么不能跑起来。
从我在授课上的经验来看,通常每个班都有一两个学生,和其他学生相比,他们似乎更容易遇到更多的问题——通常是非常随机和模糊的问题。我提醒学生,他们面对的问题越多,学习越深入、越彻底的可能性就越大。如果他们能通过这些问题获得深刻的理解,他们会很快发现他们变得更加自信了,因为他们面对和解决的问题比普通学生多。
你需要认识到,问题不仅仅只是问题,它实际上也是挑战。你所面临和克服的每一个挑战都能让你更深入地理解技术,更好地面对新的挑战,并迅速解决旧的挑战。
4、解决问题之后没有成就感
如果你在解决一个问题后没有兴奋感和成就感,作为一个程序员,你将永远不会成功。
与上一个问题相关的是,你成功地解决了一个问题,却缺乏“良好的感觉”。当修复bug和问题变成了一个永远不会结束的事情时,你会失去与克服问题的动力。
当你解决一个问题时,你需要的是多巴胺的释放。这类似于在电子游戏中完成了一个关卡,或者解决了一个像纵横字谜或数独这样的挑战。我们都知道,坚持通过一项挑战,然后最终赢得比赛,一般都会有成就感和兴奋感。但是如果你失去了感受这些快乐的能力,或者从一开始就没有真正有过这些感受,你将无法体验到编程带来的快乐。如果你把编程看作是一种磨砺,你只想尽可能容易地得到结果,那么你永远不会真正成为一个成功的程序员。
无论何时,当你解决了一个一直在努力解决的问题时,无论这个问题多么微小,你总是为你的成就感到骄傲。你需要休息一下,祝贺你自己完成了一项出色的工作,让成功的感觉渗透进你的心里,为你即将面临的下一个问题注入活力。
5、无法独立思考
如果你期望别人为你着想,并且主动看到你自己所在的处境喊纯激的细节,你将永远不会成为一个真正成功的裤脊程序员。
当你在学习新的东西时,很容易感到缺乏知识和经验,并没有自己的观点。主动做事或者说错话似乎是有风险的。对于错误,我们的内心都有一种恐惧感。当对错误的恐惧抑制了你的探索和好奇心时,你会扼杀开发真正知识、从经验中获得的知识和“失败”的能力。当你需要依靠“权威”的观点、一个受欢迎的博客、一个最佳实践或“教科书”的答案时,那么你就没有真正地整合编程的知识。你需要对什么有效,什么无效形成自己的观点。你需要理解为什么你认为你的解决方案有效,以及使用这个方案有什么好处。你需要建立一个微妙的视角,超越那些显而易见的东西。你需要能够“证实”你的立场。
为自己着想。通过你的经验和批判性思维技巧,发展出你自己的思想体系。做出合理的猜测,坚定立场,并愿意随着新信息的出现而改变立场。
6、僵化、狭隘、混乱的思维
如果你的思维僵化,并且难以保持代码的条理化,那么你将永远无法成为一名真正成功的程序员。
我有时在学生中看到两个极端。第一种是僵化和狭隘的思维方式。拥有这种态度的人拒绝帮助,尽管会有反馈,但不会有改变。他们看事情只从一个角度看,别人给的建议被忽略。
我看到的第二个极端是思维混乱。学生们似乎使事情变得更加复杂,他们的代码杂乱无章,难以理解。他们过度思考问题,写100行代码,而其中只有10行是有用的。
当这两种心态结合在一起时,结果就是一种用蛮力的方法去设计程序。我们需要的是回顾解决方案,重新评估它,放弃最初的方法,并重新组织方法。
无法看到其他可能性或无法反思反馈会抑制成长的能力。思维杂乱无章会减慢你的成长速度,阻止你看到那些原本显而易见的模式。你的工作质量也会下降。
自我反省。你需要退后一步,看看你是接触的事物的大局是什么样子的。你要怎样才能做得更好?你能做些什么让你的生活更轻松吗?你需要什么来帮助你?
7、需要“正确”的答案,而不是识别一系列“好”和“坏”的答案的方法
如果你认为编程的最终目标是找到正确的解决方案,而不是一系列解决方案,那么作为一个程序员,你将永远不会真正成功。
当开始学习技能或编程时,学生往往想知道他们所做的是否“正确”,而答案总是“视情况而定”。
计算机科学是一门评估权衡的科学。在不同的环境下,哪条路更好,这完全取决于所处的环境和目标。当你把编程看作是一个有正确答案或错误答案的测试时,你就失去了对全局的认识,放弃了你的创造力。任何答案都可以是“正确的”,前提是你能根据具体情况证明这一点。现实情况是,编程更像是写诗或写短篇小说(如果程序很大,则可能是小说)。在你的代码中可以看到一种美学和美丽,这些东西有时只有你和其他程序员能够识别出来。你决定解决方案的原因,以及你对答案的设想,比“正确的方式”或“错误的方式”更重要。拥有一个艺术家的头脑可以让你编的程序具有选择和可能性,而不是认为只有一种处理方式。这就是编程的美——有很多方法可以解决问题,考虑不同的可能性,然后决定哪种方法最适合当前的情况。
创造性很重要。你要认识到,解决问题的方法有很多种,通过经验和积累,你会对哪些解决方案比其他解决方案感觉更好产生细微的理解。纵观全局,想象不同的可能性,相信你的直觉,你会得到更满意、更好的解决方案
如果你对学习编程感兴趣,我鼓励你开始这段旅程。记住提到的七条,并开始学习、探索在线资源,这些资源可以让你快速学习。你不会后悔的!
合格程序员,对于一种计算机程序设计语言,我们将其分为语法、语义、语用三个层面。仅仅掌握语法是不够的,不算学好。但是很多人,在履历上写自己掌握(甚至精通)了某种语言,其实就是解了语法,会写简单的程序而已。这就是为什么我们行业特别不喜欢“精通”这个词的原因。
现代软件开发,规模都比较大,不是写个HelloWorld那么简单,也不可能每个项目每件事都从头开始造轮子,我们都是站在前辈、同行们的肩膀上工作的。也就是说,语言之外,还有“库”这个东西需要掌握,不然就寸步难行。库有语言级别支持的BuildIn的库,比如JAVA里面的util、concurrent,CPP的IOSTREAM、STL等等;更多的更丰富的还有第三方提供的库,比如JDBC、Servlet、EJB的implementations等等。这些东西掌握了,干活儿才可能得心应手,不然寸步难行。
比Libaray更高层一些的,是Framework。框架的作用在于,将某一方面开发的BestPractices搞到一起,给你提供一个更易用的、不关注底层的脚手架。比如做企业应用的,SpringFramework是标配了;访问数据,Hibernate或者MyBatis也离不开,很少直接用JDBC去干活的了;做WEB的,各种MVCFramework起码得掌握一两个(springmvcorstruts2?);做网络的,Netty,MINA怎么也得掌握一个......总而言之,框架是绕不过去的一个门槛。
然后呢,就是环境、辅助工具。应用服务器,怎么也得会调试配置那么两个吧。TOMCAT是入门标配,JBOSS,WEBLOGIC之类,起码要弄得跑得起来;针对不同应用场景,还要会选择。开发/管理工具,ECLIPSE是标配、GIT和SVN起码要搞熟一款;其它比如单元测试工具、Build工具、测试覆盖率、CodeReview这些插件...也得知道怎么用。
最后,通用的,计算机科学的基础,不说多扎实,至少不能一窍不通。说起来就那几大件,操作系统、数据结构&算法、编译原理、体系结构。要懂一点点,你才知道你编的程序是怎么run起来的,哪儿可能存在效率问题性能瓶颈,除了问题知道怎么debug。如果仅仅把计算机当作一个黑盒子,那也不算学好了。
最最后,还有一样,就是你要训练一下,快速理解领域知识的能力。你参与做一个项目,你懂的只是上面这些专业知识,但并不懂客户的行业知识。如何尽快地理解业务,并用你手头的工具实现业务逻辑,这点对程序员而言是非常重要的,否则你做的东西客户总不满意,GET不到重点,很麻烦。
我觉得这是一个合格的程序员的基本要求。你看,我并没要求你懂需求工程、懂项目管理、懂架构设计、懂很多算法、模式,甚至更深的专业知识。
Ⅳ 作为程序员,是否需要去阅读源代码原因是什么
答案是肯定的,程序员从学习编程那一刻开始就需要阅读别人的源代码,工作以后则更不可避免的要阅读大量的源代码了。
阅读源代码对程序员来说至少有以衡巧运下几点原因:
第一,程序员的学习往往都是从阅读源代码开始的。从第一个程序HelloWorld开始,程序员在学习的过程中就需要阅读大量的源代码,以了解程序的语法。程序语言的每一个概念几乎都需要通过源代码来呈现,而程序员当然需要通过阅读这些源代码来理解这些概念,同时还需要通过实验来验证这些源代码。很多计算机专业的学生都是通过阅读Linux源代码来学习操作系统体系结构的,这是一个非常好的学习方法。
第二,工作过程中需要通过阅读源代码来学习新的解决方案。计算机领域的新技术层出不穷,作为程序员来说需要不断学习这些新的技术方案,而阅读源代码是最直接的方式之一。很多程序员在学习新技术时宽档,往往都是从直接搭建开发环咐梁境并运行demo开始,通过运行的结果建立对新技术的一个直观理解,而这个过程大部分的时间都是在阅读源代码。
第三,阅读源代码是程序员之间交流的一个重要方式。现在大部分开发团队都会对项目进行CodeReview,CodeReview的过程既是一个总结的过程,也是一个互相学习的过程,Review的过程一个重要的内容就是阅读别人的源代码。
大部分初级程序员需要掌握的第一个能力就是阅读源代码的能力,按照历史经验来看,具有较强代码阅读能力的初级程序员往往能够更快速的融入开发团队。同样,很多最终没有走向开发岗位的程序员,代码阅读能力不强是一个重要的原因,当然,代码阅读能力差的原因是多方面的。
我从事软件开发工作多年,目前也在带软件开发团队,我会陆续在头条写一些关于软件开发方面的文章,感兴趣的朋友可以
Ⅵ 经典 HelloWorld 程序是什么
“Hello, world"程序是指在计算机屏幕上输出“Hello,world”这行字符串的计算机程序。
Hello World 中文意思是”你好,世界“。Hello World 一直都是每一门语言经典的第一课,1978年,Brian Kernighan写了一本名叫《C程序设计语言》的编程书,在程序员中广为流传。
他在这本书中第一次引用的Hello World程序,源自他在1973年编写的一部讲授B语言的编程教程,非常着名,所以后来的程序员在学习编程或进行设备调试时延续了这一习惯。
产生由来和趣闻
“hello, world”的中文意思是“你好,世界。”这个例程在Brian Kernighan 和Dennis M. Ritchie合着的《The C Programme Language》使用而广泛流行。因为它的简洁,实用,并包含了一个该版本的C程序首次出现在1974年Brian Kernighan所撰写的《Programming in C: A Tutorial》。
但是非常不幸的是,当 Forbes India 杂志采访他的时候,他自己对这段传奇故事中一些记忆已经有点儿模糊了。当他被问及为什么选择“Hello, World!”时,他回答说,"我只记得,我好像看过一幅漫画,讲述一枚鸡蛋和一只小鸡的故事,在那副漫画中,小鸡说了一句"Hello World"
Ⅶ 程序员工作要做什么
程序员(英文Programmer)是从事程序开发、维护的专业人员。一般我们将程序员分为程序设计人员和程序编码员,但两者的界限并不非常清楚,特别是在中国。
作一个真正合格的程序员,应该具有的素质。
1:团队精神和协作能力
团队精神和协作能力是作为一个程序员应具备的最基本的素质。软件工程已经提了将近三十年了,当今的软件开发已经不是编程了,而是工程。独行侠可以写一些程序也能赚钱发财,但是进入研发团队,从事商业化和产品化的开发任务,就必须具备这种素质。可以毫不夸张的说这种素质是一个程序员乃至一个团队的安身立命之本。
2:文档习惯
文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高,如果缺乏文档,知识就没有继承,公司还是一个来料加工的软件作坊。作为代码程序员,必须将30%的工作时间写用于技术文档。没有文档的程序员势必会被淘汰。
3:规范化的代码编写习惯
知名软件公司的代码的变量命名、注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。 一些所谓的高手甚至叫嚣高手写的代码一般人看不懂,我只能说他不是一名合格的程序员。
4:需求理解能力
程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
5:模块化思维能力
作为一个优秀的程序员,他的思想不能在局限当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。这样做可以使代码能重复利用,减少重复的劳动,也能是系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
6:测试习惯
测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要结合需求理解能力。
7:学习和总结的能力
程序员是很容易被淘汰的职业,所以要善于学习总结。许多程序员喜欢盲目追求一些编码的小技巧,这样的技术人员无论学了多少语言,代码写起来多熟练,我们只能说他是一名熟练的代码民工,他永远都不会有质的提高。一个善于学习的程序员会经常总结自己的技术水平,对自己的技术层面要有良好的定位,这样才能有目的地提高自己。这样才能逐步提高,从程序员升级为软件设计师、系统分析员。
作为高级程序员,乃至于设计师而言,除了应该具备上述全部素质之外,还需要具备以下素质:
1、 需求分析能力
2、 整体框架能力
3、 流程处理能力
4、 模块分解能力
5、 整体项目评估能力
6、 团队组织管理能力
一般招工时需要提供基础程序员证书,要参加考试的:
[编辑本段]考试说明
1、 考试要求:
(1) 熟练掌握基本算法和数据结构,用C语言编制程序;
(2) 掌握数据结构、程序变速器和操作系统的基础知识;
(3) 了解软件工程、数据库、多媒体和网络的基础知识;
(4) 掌握数制、机内代码及其算术运算和逻辑运算的基础知识;
(5) 了解计算机的体系结构和主要部件的基础知识。
2、 通过本级水平考试的合格人员能按照软件设计说明书编制程序,具有相当于助理工程师
的实际工作能力和业务水平。
3、 本级水平考试范围包括两个模块:模块1——程序编制能力(考试时间为150分钟);模
块2——基础知识(程序员级)考试时间为120分钟)。题型为:单项选择题十多项选择题。
Ⅷ 如何用一句话证明你是程序员
1、女朋友就是私有变量,只有我这个类才能调用
2、爱上一个人,就是内存泄露-你永远释放不了
3、编码间,bug灰飞烟灭
4、这句话老值钱了:Helloworld
5、1+2==3
6、老板凑个整数吧,1024
7、你说第一句? 从0算起还是从1算起
8、不管写什么,没事在后面加个分号;
9、真的勇士,敢于直面惨淡的warning、敢于正视淋漓的error。
10、神马,我打开firebug看看那玩意怎么实现的。
11、一同学问我,软件外包是什么。解释了几句还没明白,遂想了一下:包工头知道吧?顿悟!
12、继承,是幸福的延续;重载,是幸福的重生。
13、情人就是指针,用的时候一定要注意,要不然就带来巨大的灾难。
14、擦,没同步就覆盖了
15、UTF-8还是GBK?
Ⅸ 程序员你不知道的一面
我们想象中的程序员是:人傻差敏戚、钱多、不健康的。然而事实并不是这样。因为小编的程序员同事是钱多但人不傻,健康的IT男。北大青鸟http://www.kmbdqn.cn/分享几个小段子,看看程序员的日常。程序员你不知道的一面:
1、程序员最烦两件事,一是别人要他给自己的代码写文档,第二是别人的程序没有留下文档。
2、程序员问禅师:"大师,虚陵我身体健康思想端正,各方面都不错,为何没有女朋友?"禅师笑答:"原因很简单,不过若想知道,需先写一段ja代码。"青年略沉吟,写完了。"再写一段C#。"写完了。"再写一段php。"写完了。"这就是原因"拿判
3、一程序员家的水管坏了,他打电话叫来一个水管工修理。水管工鼓捣了一个小时,终于把管子修好了,他递给程序员一张600元的帐单。"600元!"程序员愤怒了:"我当程序员一天都赚不了这么多钱!""是啊。"水管工淡定地说,"我当程序员的时候也是。"
4、某程序员退休后决定练习书法,于是重金购买文房四宝。一日,饭后突生雅兴,一番研墨拟纸,并点上上好檀香。定神片刻,泼墨挥毫,郑重地写下一行字:helloworld!
5、网络聊天的时候,想表达对方是猪,一般人会打"xxx你这个猪。",程序员会打xxx。isPig=TRUE。