Ⅰ 电脑怎么编程
随着信息技术的发展,很多人都想要学习电脑编程。其实学习编程最重要的是入门,如果你入门的时候有一个好的方法和思路,打下比较扎实的基础,对今后的编程工作是很有益处的。即使再学习新的编程语言,也会轻松的多。下面,北大青鸟长安街总校资深编程导师就为大家详细讲解如何学习电脑编程。
首先,我们可以先学习一下pascal,这个语言比较严谨,适合初学者。当然了,学习什么语言也要看你具体准备从事什么行业。例如你要进行嵌入式开发,C就是很好的选择,如果是Windows开发,那么VC就不错。还有数据库方面的开发、网络开发等等。不同的语言适合不同的方面。要看自己的选择的。
还有很多人说自己的基础很差,甚至中学毕业什么的。其实这个并不重要,比较说英语,在计算机语言里所用到的单词量很少,而且都是常用词,经常使用就记住了。至于数学什么的,其实数学只是培养你一个逻辑思维能力,在初学编程的时候影响不是很大。况且,作为一个基础编程人员来说,上面还有系统分析师、项目经理,他们会把需求分析、概要设计和详细设计做好的,你只要按照文档写代码就OK了。不过,要上更上一步的话,其他基础知识就非常重要了,毕竟你不能写一辈子代码。
接下来,很多人就会考虑自己究竟选择什么语言来学习。是C#、PHP还是JAVA?哪个语言更有发展?在学习好C语言以后,建议大家好好学习一下数据结构和软件工程。特别是软件工程,它能够使你按照科学的工程方法进行软件开发,对今后的发展很有好处。
其实,北大青鸟长安街总校老师认为,无论你学习什么语言,只要坚持和努力,都会把这个语言学精,而只要学精,就一定会有发展。语言不是最重要的,应该把思想放在首位。要领悟思想,那首先学习语言是必然的,语言是思想的一种体现形式,就像一个人,如果不经常常使用语言,他又如何去表达自己的思想呢?编程也一样,要领悟其精髓,必须先不断地看,不断地使用,才能在这种过程中慢慢有所体验,当然有的人可能快些,有的人可能慢些,但是不管快慢,能够达到就是进步。
以上只是北大青鸟长安街总校的老师对软件开发学习方法的一些分析,当然,学好软件编程,最重要的是通过真正的项目来锻炼自己的操作能力。随着项目经验的增加,你才会感觉自己对这门语言的掌控能力真正提高了。
如果你想更深层的学习软件开发,欢迎你来杭州北大青鸟校区学习软件培训课程。我们的老师会帮助你一步步的学好编程,成为令人羡慕的软件工程师!
如何学习电脑编程?你了解清楚吗?北大青鸟长安街总校“学历+技能”双赢教学模式,帮你找到你的优势,给你成功的信心。在这里,不需要你的学历起点有多高,不需要你的语数外成绩多优秀,面对学员我们一视同仁。我们相信,你还有需要挖掘的潜力,你还有没有体现得优点。未来不需要泄气,选择北大青鸟长安街总校,成就你的好未来
1.
工具:电脑、isualC+++6、0。
2.
具体步骤:1、打开软件,先新建一个工程,在新建一个C++源文件。2、在建好文件之后,在源文件处,输入需要实现的代码。3、然后编译这个程序,点击软件右上角有红色边框的按钮。4、最后运行这个程序,点击软件的右上角的红色框里的按钮,查看运行结果
Ⅱ 电脑怎么打开编程
编辑程序让电脑执行的过程就叫编程。
编程语言很多,具有代表性的计算机语言有Java,BASICC,C++,VB,VF,SQL,网页编程JSP,ASP,PHP。Java是目前应用最广泛的编程语言之一,大学中则常常以C语言作为编程的入门语言。
很多软件都可以编程,主要有eclipse,MicrosoftVisualStudio,MicrosoftVisualBasic,MicrosoftSQLServer等等。
Ⅲ 怎样在电脑里学编程
1、如果你能够熟练的使用Windows的话,你就已经可以开始你的程序生涯了,打怪升级走起来!(PHP网站开发在线培训课程)
2、首先从C语言开始。有的朋友可能认为C语言太难了,应该从VB开始。虽然,对于一个初学者来说,用一些控件堆砌成一个小软件会有一些成就感,但是,基础才是最重要的!C语言对于数据类型的描叙,远比VB更全面、明白,而这些正是编程中的根本!
3、学C语言,从数据类型,基本表达式,再到条件语句,循环语句,然后学习函数,再加上一些简单的数组知识,足矣。到现在为止,你只要理解结构化程序设计的思想也就够了!
4、有了以上的基础,就要开始学汇编了。汇编刚开始学的时候很难,那些各种各样的寄存器,分段的内存地址,很难理解,可是这些知识理解了以后,后面的内容就简单了,学习8086的那些指令,再加上一些伪操作,还有DOS和BIOS中断的调用,就可以看懂书上的汇编程序了。到此,你会对计算机有更深一层的理解!
5、有了汇编的基础,再来学习C语言中的精华部分——指针,可谓是如鱼得水了。现在你要对C语言全全面面的学一遍了。
6、学完以上的内容,有必要研究一下数据结构了,线性表,堆栈,队列,树,图,二叉树,等等。
7、请时刻牢记:浮躁是学习编程的大忌。
8、当然,你还应该学习一些数据库的知识,以及一些常用的算法。
9、如果以上的知识你都达到精通的程度后,就可以开始C++的课程了,找本C++上,然后找一本VC上手的书,再花一个星期的时间学习VC的界面和用法,就可以做一些简单的应用了!
10、要想学好VC,没有扎实的C++知识是不行的,以下书籍是VC程序员必须翻的烂熟的:C++Primer;Effective C++;Thinking in C++;More Effective C++;深入浅出MFC。【推荐阅读:2018年5本经典的编程入门书籍推荐】
11、深刻理解C++面向对象的思想。
12、编程的时候,出错是难免的,所以,MSDN一定要熟练使用;好的代码风格会使调试的时候,更加简单的查错,所以,一定要养成良好的编程风格。
Ⅳ 计算机怎么编程
1、如果只是单纯辅助的编写一些小软件来辅助自己的主要工作,那么学习编程就相对来说学得简单一些。先了解目前的开发语言和环境,结合自己需要做什么小软件,然后找一门开发语言来学习就可以达到目的。但如果比较复杂的软件,因为基础和学习的深度不够,要开发这个软件就有些难度了。如果辅助性质的小软件,推荐使用VB.net,特别是桌面软件。这个开发环境比较容易入手,控件拖动,使用的语法比较容易理解,很容易上手。或C#.net,对于新手而且相对VB.net来说,个人感觉没有这么容易好理解。花一个月时间可能就能做一个小软件了。当然要参与到大型项目中,完全新手那就不是一个月的时间能解决的了。
2、如果是要从事软件开发的工作,那么学习时间就比较长了。对于软件开发者来说,不只是开发语言,还有计算机、网络的相关基础知识才行。
①:先说开发语言。确定好自己今后要从事的主要的开发语言,然后开始学习。比如:选择.net系列、或者Java、或者python等等。可以在网络上搜索一些成套的基础教程(一定从成套的教程,因为是由浅入深,学起来系统性而且容易上手),开始学习。配置好环境,一步一步按照教程进行实践。
②:基础知识。作为软件开发者来说,单纯只具有开发语言的知识是很难有大的发展的。因为对于计算机、软件、系统、数据库、网络等等不深入了解的话,一旦涉及到深入的开发,你就没辙了。比如网络协议、接口、API等等相关知识。
那么基础知识要学习哪些呢?这里建议最基本的基础知识至少还是要学习的。比如:计算机组成与原理、操作系统、计算机网络、数据库原理、数据结构、编译原理、软件工程、软件测试等等。不一定要专门花时间到外培训,但至少自己花一些时间自学也是好的。万丈高楼从地起,没有基础就不可能高。
从事软件开发行业是一个不断持续学习的过程,从事到老还要学到老。行业更新的知识太快,如果不学就跟不上。基础知识不牢靠,今后工作学习中不能理解的就更多,会形成障碍的。
Ⅳ 用电脑怎么编程
给你pascal编程吧..第一章 PASCAL程序设计介绍1.1 PASCAL介绍1.1.1 PASCAL语言介绍PASCAL语言是由瑞士的沃斯(N.Wirth)教授于1971年提出来的。它的命名是为了纪念法国数学家Pascal。它是世界上第一个结构化的高级程序设计语言。结构化程序设计主要由三种基本结构(顺序结构、选择结构、循环结构)组成。后来有人把函数和过程作为第四种基本结构。这四种结构对外看都有一个入口,一个出口,结构清晰,避免了由GOTO语句所引起的混乱。另外在程序设计方法方面,主张采用自顶向下,逐步求精的方法。即将一个大的复杂问题,划分成若干少的易解决的问题。每个小问题,又可划分成一些更小的更易解决的问题。这样,每个小问题解决了,整个大问题也就解决了。这种方法也为多个人合作编程提供方便。由于PASCAL语言具有良好的结构程序设计特性,适合于教学,特别是适合于培养学生掌握自顶向下逐步求精的结构化程序设计思想和方法,并养成良好的程序设计风格和习惯,因此,国内外许多大学都将PASCAL作为一门程序设计教学语言。1.1.2 PASCAL程序设计的编辑、保存、调试例1-1:输入半径求园的周长和面积?program circle; const Pi=3.14; var r,L,s:real;begin write('r='); readln(r); L:=2*pi*r; s:=pi*r*r; writeln('R=',r:8:2,' L=',L:8:2,' S=',s:8:2);end .1.2 PASCAL基本组成1.2.1 PASCAL中使用的常量与变量程序中数据分为两类:一类是在程序执行过程中其值保持不变的量,称为常量;另一类是在程序执行过程中,其值可以改变的,这类数据称为变量。1.常量说明在程序中,如果一个常数反复多次出现在程序中,用户可以通过说明语句来定义一个标识符来代表这个常量。如: const pi=3.14; country='China'; success=true;2.变量说明PASCAL程序中数值可以改变的量称为变量,由于变量可以取不同的值,因此变量必须通过标识符来代表。程序中出现的每个变量都必须在程序的变量说明部分进行类型说明.变量说明语法图如下:如: var x,y,z:real; i,j,k:integer; ch:char; t,f:boolean; name:string;1.2.2 Turbo Pascal中标准数据类型介绍数据的类型确定了该类数据的表示形式和取值范围,而且确定了其所能参加的各种运算。1.整型名称类型标识符数据表示范围占用存储空间整型integer-32768 ~ +327671byte短整型shortint-128 ~ +1272byte长整型longint-2147483648 ~ +21474836474byte字节型byte0 ~ 2551byte字型word0 ~ 655352byte2.实型:实型有4种类型,如下表示实型名称类型标识符数据表示范围有效位占用存储空间实型real-2.9*10^39~+1.7*10^3811~126byte单精度型single-1.5*10^45~+3.4*10^387~84byte双精度型double-5.0*10^-324~+1.7*10^30815~168byte扩展型extended-1.9*10^-4932~+1.1*10^493219~2010byte装配十进制型comp-2^63+1 ~ +2^63 –1 19~208byte例:var x:real;当x的数学值为2时,在计算机中的值为:2.0000000000E+00当x的数学值为-25时,在计算机中的值为:-2.5000000000E+01当x的数学值为0.05时,在计算机中的值为:5.0000000000E-023. 字符型和字符串型名称类型标识符说明字符型char单个字符用一对单引号括起的数据。字符串型string一个或一串字符用一对单引号括起来的数据。例: var ox:char; note:string; name:string[5];4.布尔型名称类型标识符说明布尔型boolean值只有true和false,分别表示真和假或对与错。1.2.3 运算符、标准函数及标准过程1.运算符2.标准函数和过程PASCAL中提供了很多标准函数和过程给用户直接使用,方便了我们编程,下面介绍一些常用的标准函数和标准过程,其它函数和过程可以在Trurbo Pascal的帮助文件中查阅。(1) 算术标准函数函数名称X类型结果类型说明abs(x)绝对值整型,实型整型,实型Abs(-25)=25sqr(x)平方值整型,实型整型,实型Sqr(5)=25sqrt(x)平方根整型,实型实型sqrt(25)=5.0000000000E+00trunc(x)取整整型,实型整型截取整数部分。trunc(-2.3)=-2round(x)取整整型,实型整型四舍五入取整。trunc(-2.6)=-3trunc(-2.3)=-2int(x)取整整型,实型实型截取整数部分int(2.5)=2.0000000000E+00int(-2.5)=-2.000000000E+00frac(x)取小数整型,实型实型frac(2.5)=5.0000000000E-01exp(x)指数整型,实型实型例:求e3 即,e为2.718exp(3)=2.0085536923E+01ln(x)对数整型,实型实型例:求log10(2)ln(2)=6.9314718056E-01random随机数无实型随机产生(0,1)间的随机数random(x)随机数整型整型随机产生[0,x-1]间的随机数其它函数还有正弦函数sin(x),余弦函数cos(x),反正切函数arctan(x),自然对数函等等,请需要时从Turbo Pascal中的帮助文件查阅。注:在PASCAL中没有定义幂运算函数xn 。但可采用下面式子计算:exp(n*ln(x)) 。(2) 算术标准过程[1] dec(x) 相当于 x:=x-1[2] dec(x,n) 相当于 x:=x-n[3] inc(x) 相当于 x:=x+1[4] inc(x,n) 相当于 x:=x+n(3) 字符处理标准函数为了说明方便,设s,str,str1,str2为字符串型(string),ch为字符型(char)变量。[1] concat(str1,str2)作用:把两字符串连接成新字符中串。例:concat('abc','def') 结果:'abcdef'[2] (str,a,b)作用:从字符串str的左边第a(整数)位开始截取b(整数)位字符串。例:('abcdef',2,4) 结果:'bcde'[3] length(str)作用:求字符串str的长度。例: length('abcdef') 结果:6 ;length('') 结果:0 ;length(' ') 结果:1[4] chr(x)作用:求x(x为整数1--255)表示的ASCII代码对应的字符例:chr(65) 结果:'A' ;chr(66) 结果:'B'[5] ord(x)作用:求x的序号,其中x必须为有序类型。有序类型如:字符型、布尔型、整型、枚举型、子界型等。例:ord('A') 即'A'的ASCII码值为:65 ;ord('B') 即'B'的ASCII码值为:66 ord(true) 结果:1; ord(false)结果:0 ord(13) 结果:13;ord(0)结果:0[6] pos(str1,str2)作用:求字符串str1在字符串str2中的开始位置,结果为整数。例:pos('abc','efabcdg') 结果:3 ;pos('abc','efabfgh') 结果:0[7] upcase(ch)作用:把ch对应的字符转为大写字母。例:upcase('a') 结果:'A' (4) 字符串处理标准过程[1] delete(str,a,b)作用:从字符串str的左边第a(整数)个字符开始向右连续删除b(整数)位字符,并把剩余字符串赋给str例:str:='abcdefgh';delete(str,4,3); 最后str结果为:'abcgh' str:='abcdef';delete(str,8,3); 最后str结果为:'abcdef'[2] insert(str1,str,a)作用:把字符串str1插入字符串str中由第a(整数)位字符之前,并把新字符串赋给字符串变量str。例:str:='efghy';insert('abc',str,3);最后str结果为:'efabcghy' str:='efghy';insert('abc',str,8);最后str结果为:'efghyabc'[3] str(x,s)作用:将x(x为整数或实数)转化为数字字符串,结果存入S。例:str(12.4,s) s的结果为:'1.2400000000E+01' str(124,s) s的结果为:'124'[4] val(str,a,code)作用:将数字字符串转换成数字,并将该数字存入实型或整型变量a中,code为返回的错误代码,code=0 表示转换成功,无错误。 例:val('12',a,code) 若a为实型,a的结果为:1.2000000000E+01;若a为整型,a的结果为:12(5) 布尔型标准函数[1] odd(x)作用:判断自变量x的奇偶特性,其中x为整型。奇数为true,偶数为false。例:odd(13) 结果:true ;odd(10)结果:false 。[2] eof(x)作用:判断文件x是否处于结束状态。其中x为文件型变量。文件结束为true,否则为false 。[3] eoln(x)作用:判断文件x是否处于行结束状态。其中x为文件型变量。行结束为true,否则为false 。(6) 顺序类型函数[1] pred(x)作用:求x的前一个量值,其中x为字符型、布尔型、整型、枚举型、子界型等有序类型。例:pred(6)=5 ;pred('b')='a' ;pred(true)=false ; pred(false)=true[2] succ(x)作用:作用:求x的后一个量值,其中x为字符型、布尔型、整型、枚举型、子界型等有序类型。 例:succ(5)=6 ;pred('a')='b' ;pred(true)=false; pred(false)=true(7) 标准单元中常用标准过程Turbo Pascal中系统提供了八个标准单元,分别是:system(系统单元)、printer(打印单元)、dos(dos单元)、crt(显示单元)、overlay(覆盖单元)、graph(图形单元)、turbo3(与3.0版兼容单元)、graph3(3.0海龟图形单元)。这些单元中分别定义了大量的函数和过程供用户使用。但注意在使用标准单元的函数和过程前,除system单元可省略说明外,其它要在程序开头说明。说明格式如下:use 标准单元; 或 use 标准单元1,...,标准单元n;另外,前面介绍过的标准函数和过程都在system单元中。下面补充一些常用标准函数和过程。[1] clrscr 过程 在crt单元 格式:clrscr 作用:清文本屏幕,并将光标移到屏幕左上角。[2] delay 过程 在crt单元 格式:delay(ms) 作用:延迟ms毫秒数,其中ms为word型。[2] gotoxy 过程 在crt单元 格式:gotoxy(x,y) 作用:称光标到y行x列上,其中x,y为byte型。[3] sound 过程 在crt单元 格式:sound(hz) 作用:按hz(word型)指定的频率发音,调用该过程后会一直响,直到调用nosound过程将其关闭。[4] nosound 过程 在crt单元 格式:nosound 作用:关闭扬声器。[5] readkey 函数 在crt单元 格式:readkey 作用:从键盘读入一个字符,函数类型结果为char。[6] exit 过程 在system单元 格式:exit 作用:退出当前过程或模块。[7] halt 过程 在system单元 格式:halt 作用:停止程序执行。[8] getdate 过程 在dos单元 格式:getdate(y,m,d,dw) 作用:返回当前日期(年,月,日,星期),其中y,m,d,dw为word型。1980<=y<=2099,1<=m<=12,1<=d<=31,0<=dw<=6(星期日为0)。[9] gettime 过程 在dos单元 格式:gettime(h,m,s,se) 作用:返回当前时间(时,分,秒,毫秒),其中h,m,s,se为word型。0<=h<=24,0<=m<=59,0<=s<=59,0<=se<=99秒。还有setdate(y,m,d,dw),settime(h,m,s,se),请读者查阅Turbo Pascal的帮助文件。[10] read或readln过程 在system单元格式:read(f,v1,v2,...,vn)或readln(f,v1,v2,..vn) 其中f为文件型变量,标准输入文件input(如键盘输入)时可省,v1,v2,...,vn为变量名表。作用:从标准输入文件(如键盘输入)或磁盘文件中读入数据到变量中,多个变量时,要用逗号分隔。 read与readln的区别是:readln会掉丢当前输入行中多余的数据。而read不会,多余的数据可留待下一个read或readln使用。[11] write或writeln过程 在system单元 格式:write(f,v1,v2,...,vn)或writeln(f,v1,v2,...,vn) 其中f为文件型变量,标准输出文件OUTPUT(如显示器)可省,v1,v2,...,vn为表达式,且每个表达式的必须有唯一确定值,类型为标准类型。write与writeln区别是:writeln输完所有数据项后,光标自动移动到下一行,即自动换行。1.2.4 一个较完全的PASCAL程序结构一个较完整和PASC程序结构如下:program 程序名(程序参数表)label 标号说明;const 常量说明;type 类型说明;var 变量说明;function 函数说明;procere 过程说明;begin 语句; ... 语句;end .本 章 练 习练习1:指出下面PASCAL表达式的错误,并改正。 (1) 7>2 AND (8<>6) (2) NOT 3>2 (3) 3+3/2+1 要求结果为4 (4) sqr 4 / 2 (5) sqrt(4-6)/2 (6) 1/(3-6/2) (7) 3.0 div 2 (8) a(b+c)/d练习2:补充完成程序,实现计算下面两条数学表达式的运算结果,存盘文件用lx1_2.pas 。(1) (2)(5>2) and not (3<>1) program rzy1;begin writeln( ); writeln( );end .正确运行结果:练习3:补充完成程序,实现输入长方形两边,求周长及面积。存盘文件用lx1_3.pasprogram rzy2;var a,b,L,s:real;begin write('a='); readln(a); write('b='); readln(b); L:=( )*2; s:= ; writeln('L=',L); writeln('S=',s);end .运行输入数据 a= 4 ←┘ b= 5 ←┘正确运行结果:试把writeln('L=',L);改为writeln('L=',L:5:2);输出结果有什么不同?试输入不同数据,结果如何?
Ⅵ 计算机编程如何入门
计算机编程最重要的是入门,如果入门的时候有一个好的学习方法及思路,有比较扎实的编程基础,对今后的学习都是十分有帮助的,最重要的是学习计算机编程前,需要了解计算机语言有哪些,选择一门语言进行系统的学习。目前,计算机语言分为JAVA、python、html5、C++等,建议你可以选择JAVA这门语言,比较热门,也是需求量、前景较光明的语言。
把一种计算机语言掌握后,想要学习别的语言也是比较简单的,因为计算机语言都是互通的。还有很多人说自己的基础很差,高中毕业什么的。其实这个并不重要,比如说英语,在计算机语言里所用到的单词量很少,而且都是常用词,经常使用就记住了。
当然,如果要看原文资料或者帮助的话,专业词汇比较多,不过在老师、同学的帮助下,也是没什么太大问题的。至于数学的学习,只是培养一个逻辑思维能力,在初学编程的时候影响不是很大。
学习计算机语言一般分为两种方法,一种是自学,一种是报班学习,对于零基础的学员建议报班学习,学习周期根据个人的实际情况而决定,一般在6个月到1年之间,如果基础不扎实,只能多加练习。
关于计算机编程的学习可以到达内了解一下,达内目前已在北京、上海、广州、深圳、大连、南京、武汉、杭州、西安、苏州、成都、沈阳等70个大中城市成立了342家学习中心,拥有员工超过10000多人,累计培训量已学员已达100万人次。
达内集团凭借雄厚的技术研发实力、过硬的教学质量、成熟的就业服务团队,为学员提供强大的职业竞争力,在用人企业中树立了良好的口碑。。
Ⅶ 程序员如何在电脑上编程的
说到如何在电脑上编程。首先需要知道下面这个问题的答案:“程序到底是什么?”计算机程序是指令集,它告诉计算机如何执行特殊的任务。VB~VC~VF~C~C#~C++~JAVA~.NET~这些都是编程 ASP~CGI~PHP~JSP这些是WEB编程。。 虽然都是编程,但编出来的程序可是不一样的。 目标是什么?开发?创业?还是去公司上班?还是业余爱好? 如果想业余编小程序,推荐VB~VC~容易上手。简单。也蛮强大。 如果想学好了去企业上班,推荐C++~~~.net~~~JAVA之类的大型项目开发。 如果想做网站,就学ASP~CGI~PHP~JSP,这4个就JSP最最最难,先学ASP。现在是人工智能时代,国家出台了很多政策鼓励人工智能发展,无人超市、无人驾驶、无人银行、AI人脸识别层出不穷,我觉得以后人工智能渗透的领域肯定也会越来越多,所以我推荐让孩子学习Python语言,python语言适合做人工智能的开发。简单容易上手,学好了以后对学习、出国留学、就业什么的也会有好处。首先,工程师根据你的需求给你一个合适的方案,这个方案包括硬件搭建、软件架构。 然后,在你满意的方案下为你选用设备 最后,程序员按照你的要求编写软件 各种设备有自己的命令解释器,程序员写出来的软件是可以按照机器能解读的编码编写的,这些不需要用户知道,用户只要知道怎么使用,怎么维护就可以了,如果知道的更多,那就可以成了开发者
Ⅷ 你怎么在电脑上编程,而不用任何软件
40267">
我从编程写软件学到的 7 件事,其实学习编程不难,写软件也不你那,就看我们如何看待了!
我正在一点一点的从一个工程师转型为管理者。别弄错了,虽然我在转管理,但我仍然在每天写代码。不过我发现自己在会议和电话中会花越来越多的时间去分析讨论,试着去组织团队,并且为全局部署而不是具体战术而烦恼。
当然这不是一件坏事。高层次的决策往往比单个的类和函数的细节更有影响。让一个团队更有效率,比仅仅让自己更有生产力有更高的杠杆作用。但我想我已经从我多年来的编程中吸取到了一些经验。我希望大部分经验可以应用于管理方面。
1、没有规定(rules),只有公案(koans)
译注:公案(Koan)有五种重要的涵义: 作悟禅的工具; 作考验的方法; 作权威的法范; 作印证的符信; 作究竟的指点。)
举个例子:DRY,意思是“不要重复你自己”。作为软件的基本规则这很好理解,因为很多话可以证明:“我做 X 是因为它没有重复。”这说得通,不是吗?如果你有两个或者两个以上部分的代码在做相同的事情,说明你正在浪费。而且如果当你需要改变它们其中一个的时候,你可能也需要改变其他的,并且你很可能会忘记这么做。当它们不同步时,你会得到一个怪异的 bug。因此很显然你不能重复你自己。
然而,在使用了几年之后,人们开始怀疑它的普遍适用性。假如你的两个方法中包含相同的代码块,所以你将其拿出来形成一个单独的函数。通常那些方法会开始朝不同的方向发展…接着你发现自己要在函数中加入更多的参数,很可能为结果立了更多 flags……然后下一个接手的程序员会因为分离出来的函数以及它所带的特定的参数和结果,而出现认知负载。你会意识到如果当初允许自己重复,并让两块代码自然的发展为不同的个体,你生成的代码将会更简单直观。
这意味着 DRY 不好吗?当然不是!通常在合适的环境下使用 DRY 是正确的…好吧,也许。我个人的经验是:“重复一次是可以的,超过一次就不太好了…当然这取决于所处的环境。”因为所有事都取决于环境。DRY 的目的并不是为了 DRY。如果你迷信于此,小孩儿,那你还有太多要学。DRY 的目的为了让你了解 DRY。那当然不是规定,仅仅是公案。
(让我重申一遍:我在讨论的是软件。在我的经验中,硬件规定的确更倾向于是我们所理解中的规定。这就是我为什么要从电气工程转到软件的原因)
细想我最喜欢的两个计算机科学“定律”。第一:“计算机科学中没有一个问题是不能通过添加另一层抽象来解决的!”这句话完全正确吗?当然不。这在现象学上是正确的吗?实际上,的确是。这是否意味着抽象是解决任何问题的正确途径?不,不是。它是一个公案,可以启发思想。
还有我历来最喜欢的:“第一优化定律:不要这样做。第二优化定律(对专家而言):不要又这样做。”这显然是一个公案,却称自己为法规。是时候让你的代码运行的更快吗?不。是时候让你的代码运行的更快吗?还不是。什么意思?意思是要考虑到时间,复杂性,认知负载,具体结果,生活意义,人类存在的意义。并且三思而后行,小孩儿。但不要花太长时间,我们还有工作要做。
2、要想得到他人的信任,先信任他人
这不仅仅针对于管理者。虽然它对管理者尤其重要。信任是你真正拥有的唯一价值。如果你的公正、判断、理解、诚实不被信任。接下来你组织的成员将把你视为祸害并绕着你走。然而,如果你是个有能力但不被信赖的开发者,你可能还有一些价值。虽然你在每个决定上做的努力都会被大大消减。
不过更重要的一点是:一个团队的成员需要互相信任。当 Natascia 说:“我来解决那个问题单(ticket)”,你必须相信她会去做。当你说:“Peter 能在截止时间前完成的。”,你必须相信那会实现。当某人说,“我有一个疯狂的点子”,他们必须信任他们会被尊重和认真对待,尽管那点子的确很疯狂。
你是如何建立和得到信任的?答案很简单:你去信任他人。你相信那个说他可以学会这个新库并且在周一前会整合完的人。你相信那个说他需要提前离开,因为家里有事而会错过明天工作的人。你相信那些想在截止日期前一个月休假的人,因为他们觉得自己已经开始筋疲力尽了。你相信说想要解决难题的初级程序员。
但你不总是正确的。有些时候人在工作上存了坏心。你需要揭露这些人的真面目,让他们尽早离开。有时候你要信任那些真心想成功的人,虽然他们会失败。但违反常识的是,长远来看这通常是个胜利。因为那些人会记住你的信任,他们会尽一切努力来报答你。
3、简单比优雅重要的多
我也喜欢紧凑优雅的代码。我喜欢灵活的框架,有如此多抽象层次随时待命,无论抛出什么改变的需求都能解决。我喜欢使用位向量、位位移、略微复杂的数据结构和不太流行且古怪的小语言特性,但在特定环境下十分实用。
然而你并不只是为了你自己写代码。即使它只是个“原型”。(我已经记不清我有多少“原型”在多次对层操作和润色的过程中出现问题。)而且你不仅仅是为了解决当前的问题编写它。你正在为了下一个接手的开发者可以使用它来解决下一个问题而编写。把你写到那五行代码扩充为十行可以增强其可读性,你知道吗,也许扩展为十五行效果会更好。
你可以提前尝试并用灵活且充满抽象的框架解决它们。但是也许预言不是你的强项,也许你关于下一个问题的概念的想法完全是错误的。也许仅仅编写足够简单的代码才是最佳选择。有一个命名约定和一个编码风格,让它读起来像英语一样。也许不是添加一个类,而是下一个开发者在试图跟随你的控制流程时必须保持另一个文件的开放。你应该用愚蠢的方式,不雅的方式,简单的方式。
4、动力比大多数事都重要
我们都曾见过这种情况。一周里每个人都在检查代码,构建显而易见的雏形,每天不断增加特性,测试覆盖率越来越高。疏忽也随着生产的想法和解决方案而出现。不知怎么的下一周所有事都变得缓慢起来。关于 A 的决定,会影响到 B、C和 D。当人们可以运行D、E 和 F 时,它们不是逻辑序列发展上的一部分。于是需要做更多的假设,认知负载加重,你不得不模拟出一堆东西来写出非模仿代码。一些人需要做这个决定。
或许不是决定会瘫痪,是你上周所做的一切都在错误的基础上,是一个“地震多发区”的技术负债。你需要停止所有事返回并重构它。而且你必须马上开始,因为等的时间越长,事情会变得越糟糕。没人想看到这种事发生 。但他们宁愿现在面对也比下个月知道的好。让暴风雨来的更猛烈些吧。
也许上周每个人都拼劲全力,现在实在撑不住了。你知道该怎样吗?得让他们休息一下,每个人,休息一整天。我保证,这会给你接下来的“长跑”节省时间。
I我们很难定义、衡量以及说明动力。但它在软件开发中是真实存在的东西。而且它的缺失会成为造成首要影响,导致我们需要去解决很多根本问题。别忽略它,也别期望或假装它会神奇地回来。察觉警报并迅速采取行动。
5、与和你互补而不是像你一样的人一起工作
每当我看到人们根据“文化契合度”来找人的时候,我就会拼命翻白眼。你知道大多单一栽培会发生什么吗?他们遭遇了他们不知如何解决的病原体,然后嗝屁死翘翘了。
你不会希望你的所有开发者、设计者、 QA人员、产品人员、销售人员和执行官是彼此的克隆人。你肯定不想。每个人都有自己的长处和短处、优点和缺点。你想要雇佣的是他们的长处,让其他人的长处弥补他们的短处。
比如说我,写代码非常快,擅于沟通,读写文章都奇快。我在任何时候都能熟悉很多编程语言和框架。我理解东西透彻且迅速,有丰富的经验。然而我还是一个在特定领域、框架和语言缺乏深刻专研、精通掌握的全才。我是一个真正从别人身上获益的建筑师,跟踪所有需要,在骨骼构建好之后添加肉体和润色。我还是个 UX 盲(等一下,你说那些还没对齐?),这一直被当作同事之间的玩笑。
像我这样的人非常难找到也是及其被需要的。但一个由我和九个像我一样的克隆人组成的公司是从一开始就注定要失败的。唔,我们会把很多事情做好,但只需要一个集中的盲点,一个灾难性的空隙就足以毁灭公司。大多数人承认有些事情他们做不好,另一些人可能需要照应。这些人往往是寻找“文化契合度”的人,并试图雇佣和他们一样的人。真令人哭笑不得。
6、任何决定都比没决定强
别犹豫,当你拿不准主意时,去做就好了。当然,这可能不适用在生产代码的时候。但它可以应用于除此之外在软件开发里的任何方面。我们在历史上发展最快的行业里工作。我们生活在以指数形式发展的世界里。时间不等人,别浪费它。
这与低级决策的高级讨论一样真实。在高水平的讨论里,比如“我们应该实现特性 A 还会说 B?我们要用哪种方式实现呢,X 还是 Y?“,常常会产生这样的对话,”让我们先跳过这个…下周再对它进行讨论…“,或者更阴险的,”让我们先研究一下其他人做了什么再来讨论一次。“这样的问题极少情况下会有正确答案。大多时候,像这么说才是正确的,”我会在今天之前决定尝试哪一个,这样我们就可以明天开始行动了。
甚至 A 选项基本上是错误选择,开始进行 A 大概也比啥都不做强。这和直觉是相悖的,但它通常也是正确的。以实际上手的方式去理解 A 的本质是一个更好的办法,这个道理始终是正确的。这样的理解可能会引导你做出更好的决定。
对于低级决策,那就更应该如此了。“规范没有说明我们应该如何处理错误条件 X,或者错误信息应该是什么。”(规范似乎是为一个有抱负的乌托邦写的,在这种乌托邦中,错误条件和独角兽一样罕见。)“我知道,我只是想插一句,回去问问他们在这种情况下想做什么!”
这非常诱人。如果你这么做,没人能指责你哪里做错了。但这么做是错误的。宁愿继续自己做决定,尽管有些鲁莽,也不要什么都不做等着问别人。让它们在你做已经写好的程序和你学到的教训里迭代,虽然你知道这并不完美,也好过从头开始错误认知。它们和项目将会变得更好。快速尝试,快速改变方向。
7、保持谦虚,但要自信
你不需要所有的答案。甚至是我也不得不勉强承认我不会有全部的答案。可恶,我甚至连它们的大多数也没有,不过我有自信,只要给我足够的时间和精力,我能弄清楚大部分。并且你也可以。
我们无法都成为 Jeff Dean(谷歌大牛)、中本聪(比特币创始人) 或是 Margaret Hamilton(登月计划中的女程序员)。我们在一个充斥着真正的天才和自称天才的地方工作。没人知道所有的事情,每个人都敏锐地意识到他们所不知道的一切。幸运的是,大多数情况下,我们不是科学家。我们的工作不是去寻找新突破。我们的工作是实践他人的发现,使东西运转,希望服务于人们真正想要的东西。也许你永远不会发明任何东西,像是布隆过滤器或默克尔树。不过大多与你共事的人们也不会。而且这不是重点,重点是使用布隆过滤器和默克尔树,亦或是在它们之上建个抽象层,来实际的完成它们。
所以假设你懂的会比在座的人都多是错误的,就算你觉得他们违背直觉的想法很疯狂,他们的语言选择很糟糕。假设人家比你懂的多也是错误的,即使真是那样,也没关系。世界上多的是聪明人因为一些不可思议的原因什么实际东西也没做出来。(开个廉价的玩笑╮(╯▽╰)╭:这就是为什么我们有学术界的原因。)
如果你真的做出了一些东西,在面对那些令人眼花缭乱的理论知识,或是和你相似甚至比你做的更糟糕的人时大可不必谦虚。在一天结束之时,正是那些在战壕中的开发者——构建、测试和开发了代码的人,真正做了事情。话说那些发现自己远离战壕的人,那些没有和你一起并肩作战的逃兵,你有权利鄙视他们。并且向你的伙伴致敬,而不是上司。
原文标题:做好这7件事 让你学编程写软件不在难
原文链接:http://www.epx365.cn/peixun/software/201840267.html
Ⅸ 怎样用自己的电脑进行编程练习
1.首先,打开Microsoft Visual C++6.0这个软件。(没有的安装一个,在网上有很多免费下载),点击如图图标。