如何提高学习效率student.csdn.net任其伟Neusoftrenqiwei@tom.comrenqw@neusoft.com谈编程语言的学习起因•校园与职场学习环境和方式的不同•分享自己的学习心得•工作中遇到的问题•语言优劣讨论的见解分享内容•学习编程的经历•如何学好编程语言•学习的建议学习经历备份的重要性大学之前大学学习经历(续)大学为什么学C语言?如何学C语言?学习经历(续)大学汇编培养你的耐心还有用么?从程序员的角度理解计算机系统学习经历(续)大学VCVBVBA学习经历(续)工作VCAccessSQLServer大学工作大学学习经历(续)工作OraclePL/SQLUnix/LinuxC/C++Unix/LinuxshellTuxedogrepsedawknm学习经历(续)工作如何选择语言600多种语言,如何选择?图片出自:如何学会600多种编程语言TIOBE?RIA快速部署核心系统嵌入式Andriod大型系统AndriodIOS语言特点:编程语言种类://en.wikipedia.org/wiki/List_of_programming_languages_by_type如何学会600多种编程语言://漫画:如果用编程语言来写作文如果编程语言是一条船…://mendel.soup.io/post/138357929/If-a-programming-language-was-a-boat编程最佳实践://如果编程语言是部车…年8月“我最喜爱的编程语言”排行榜只有懂这种编程语言人才能看懂这个笑话国外PHP大师给初学者的8条建议学编程语言要学什么语言元素的种别如何通过语言元素的组合,解决问题从实践中来,到实践中去。类定义/继承重载构造方法入门学什么基本数据类型静态类型语言在编译期间做数据类型检查C/C++inti=0;doubled=0.0f;stringstr=;Javaintresult=0floatf=0.0f;Stringstr=“”;C#intresult=0floatf=0.0f;stringstr=“”;…动态类型语言在运行期间做数据类型检查JavascriptPythonPHP/Ruby/…基本数据类型动态类型语言Javascripthtmlxmlns==javascripttype=text/javascriptfunctiontestDataType(){varvar1;alert(typeofvar1);//undefinedvar1=renqw;alert(typeofvar1);//stringvar1=1;alert(typeofvar1);//numbervar1=1.1;alert(typeofvar1);//number}/script/headbodydivinputtype=buttonvalue=testDataTypeonclick=testDataType();/div/body/htmlPythonimporttypes#ifisinstance(aaa,int):x=1printx,type(x)#1type'int'/type(x)istypes.IntTypex=renqwprintx,type(x)#renqwtype'str'/type(x)istypes.StringTypex=1.2printx,type(x)#1.2type'float'PHP/Ruby/…integer/float运算C/C++JavaC#JSPythonintegerx++/x—x+=1x++/x—x+=1x++/x—x+=1x++/x—x+=1x+=1floatx+=1x+=1x+=1x++/x—x+=1x+=1x=x+yx=x-yx=x*yx=x/y建议:减少乘除运算,变乘除为加减减少浮点运算,尤其是浮点乘除,例子:x*3.5*2.0+y*0.54x*7.0+y*0.54(x*350*2+y*54)/100(x*700+y*54)/100x*7+y*54/100注意:先转换后运算/先运算后转换的区别intx=2(float)(x/2)和(float)x/2.0f的结果是不同的String运算C/C++char*C/C++stringJavaC#JSPython查找strstrstrchrfindindexofIndexOfindexOfindex子串strcpystrcatSubstrsubstringSubStringsubstringstr[0:3]分割NGsplitSplitsplitsplit拼接s1=s2+s3s1=s2+s3concats1=s2+s3s1=s2+s3concats1=s2+s3归零memsetbuf[0]s=“”s=“”s=“”s=“”s=“”替换NGreplacereplaceReplacereplacereplace长度strlenlengthlengthLengthlengthlen不安全的strcpy/strcat/memset数组String[]ArrayListvectorvoidtest1(){ charstring[10]; char*str1=0123456789; strcpy(string,str1);}基本表达式C/C++JavaC#JSPythonifif(){}elseif(){}else{}if(){}elseif(){}else{}if(){}elseif(){}else{}if(){}elseif(){}else{}if():passelif():passelse:passbooleanExp&&||==!=&&||==!=&&||==!=&&||==!=andor==!=loopfor(i=0;i10;i++){}for(i=0;i10;i++){}for(i=0;i10;i++){}for(i=0;i10;i++){}foriinrange(0,10):passLoop的种类以及变种while/dowhile/foreach/for的变种如Java中的for(Strings:List)简单的就是最好的。尽可能采用一种循环部分公司可能会有相应的代码规范CodeStructure•基本语句•注释–一般是采用单行采用//多行采用/*注释内容*/–特例:如Python采用#/‘’’注释内容‘’’•代码段–{}–特例:如Python采用tab•变量命名规则–一般采用字母组合或者字母组合+数字–代码规范–避免ijk现象•方法(函数)定义形式publicclassProgram{staticvoidMain(string[]args){/*这个程序是用来在屏幕上*循环打印1百万次”IRule!”*每次输出一行。循环计数*从0开始,每次加1。*当计数器等于1百万时,*循环就会停止运行*/for(inti=0;i1000000;i++){Console.WriteLine(“IRule!”);}}}摘自:个最“优秀”的代码注释://stackoverflow.com/questions/184618/what-is-the-best-comment-in-source-code-you-have-ever-encountered?page=1&tab=votes#tab-topclass定义基本定义继承类种类public/protected/private重载覆盖重载构造方法定义/种类外部如何使用内部如何使用子类如何使用父类构造方法classComplex{private:doublem_real;doublem_img;public://无参数构造函数Complex(){Complex(0,0);}//一般构造函数(也称重载构造函数)Complex(doublereal,doubleimag){m_real=real;m_img=imag;}//复制构造函数(也称为拷贝构造函数)Complex(constComplex&c){Complex(c.m_real,c.m_img);}//类型转换构造函数Complex::Complex(doubler){Complex(r,0.0);}};intmain(intargc,char*argv[]){//调用了无参构造函数Complexc1;//调用一般构造函数Complexc2(1.0,2.5);Complexc3=Complex(1.0,2.5);//拷贝构造函数Complexc4=c1;Complexc5(c1);//调用类型转换构造函数Complexc6=5.2;return0;}class•类种类–interface/abstract/class•方法修饰符–virtual/abstract/static/const•权限–public/protected/private•重载–类内重载–类间重载–类间覆盖•子类如何调用父类构造方法进阶需要实战,大量练习IDE操作如何调试多进程和多线程应用?调试:断点、条件断点、单步执行,变量查看升级(知其然,知其所以然)语言的编译过程语言的编译原理,实现原理内存如何分配相关课程升级OpenSource的解析深入理解系统运行原理可以补充实战的经验欣赏和借鉴好的设计思路如何能够更加快速的看懂源代码:1.运行查看结果,对系统有一个感性的认识,2.找到一个合适的分析入口点3.系统如何划分4.系统如何协作5.单步跟踪理解核心算法(涉及领域知识时,需要充电)6.做好笔记7.画示意草图加深理解8.UML图(类图和时序图)从整体上理解源代码上穷碧落下黄