当前位置: 首页 > 后端技术 > Node.js

如何学习一门计算机编程语言

时间:2023-04-03 21:18:57 Node.js

前言计算机编程是一个非常实用的“游戏”。对于新人来说,很多人都在思考,哪种编程语言最好,应该从何入手?我的回答是:语言不重要,理解编程思想最重要!所有编程语言都支持的语言特性部分(核心子集)是核心部分。所以从实际出发,选择一门看起来顺眼,目前更接近你的工作或学习计划的计算机语言,开启你的编程之旅。观点解释语言核心子集的哪些部分包括基本数据类型和运算符,包括常量、变量和数组的定义和使用(所有语言都支持一种基本数据结构);数学运算符和逻辑运算符等知识。分支和循环,这是语言的流程控制部分。对于基本库函数的使用,不可能从头开始编程。每一种语言都有一个基本的函数库来帮助我们处理基本的输入输出、文件读写等有用的操作。行业中有一条28条规则。其实编程也是一样的。回过头来看,我们写了那么多代码,难道大部分都属于这门语言的核心子集吗?也就是说,只要我们掌握了一门语言的核心子集,我们就可以开始工作了。常用的编程范式有面向过程编程(最早的范式,即命令式)面向对象编程(设计模式的概念是从其实践活动中总结出来的)函数式编程(基于纯函数,函数可以任意组合,和集合可以实现集合流式数据处理)声明式编程(以数据结构的形式表达程序执行的逻辑)事件驱动编程(其分布式异步事件模式,常用于设计大型并发应用程序)方面-面向编程(avoidingduplication,Separationofconcerns)我们需要尽可能多地学习不同的编程范式,这样才能扩展我们的思维。在学习一门语言的时候,有时候我们可以同时学习两种编程语言。通过比较两种语言的相同概念,我们可以更容易、更深入地理解它。在学习javascript的闭包的时候,一开始看不懂;找了一本python的书对比了一下,才渐渐明白。编程语言的分类编译型语言VS解释型语言编译型:C、C++、Pascal、Object-C、swift解释型:JavaScript、Python、Erlang、PHP、Perl、Ruby混合型:java、C#、C#、javascript(基于V8)动态结构语言VS静态结构语言动态语言:Python,Ruby,Erlang,JavaScript,swift,PHP,SQL,Perl静态语言:C,C++,C#,Java,Object-C强类型语言VS弱类型语言StronglyTypedWeak类型:Java、C#、Python、Object-C、Ruby弱类型:JavaScript、PHP、C、C++(C、C++,有争议,强弱之间)我们必须了解各种类型的语言,只有这样才能充分了解编程语言的各种特性,并在面对特定问题时做出正确的选择。通过实际项目学习语言(以Typescript为例)项目要求:统一不同图形(圆形、矩形、长方形等)的面积计算。面向对象的三个原则1、Circle类解释了数据封装的概念,在类内部封装了半径和名称,并提供了一个访问方法exportdefaultclassCircle{privater:numberprivatename:stringconstructor(r:number){this.r=rthis.name='Circle'}getName():string{returnthis.name}area():number{returnMath.pow(this.r,2)*PI}}2.矩形和rectangle解释继承的概念//rectangle.tsexportdefaultclassRectangle{privatea:numberprivateb:numberprivatename:stringconstructor(a:number,b:number,name?:string){this.a=athis.b=bif(name===undefined)this.name='Rectangle'elsethis.name=name}getName():string{returnthis.name}area():number{返回this.a*this.b}}//正方形。tsexportdefaultclassSquareextendsRectangle{constructor(a:number){super(a,a,'Square')}}3.实例统一处理不同的形状,一起计算面积,解释多态的概念letshapes=数组<任意>()shapes.push(newCircle(2))shapes.push(newRectangle(5,4))shapes.push(newSquare(3))shapes.forEach((element)=>{console.log(`shapename:${element.getName()};shapearea:${element.area()}`)})接口概念说明添加接口,规范shape的外部部分操作要求,让编译阶段更早发现错误exportdefaultinterfaceIShape{getName():string;area():number}函数式编程讲解用例子来说明如何理解函数是一等公民,去掉我们习惯的函数外包装。让printData=function(err:any,data:string):void{if(err)console.log(err)elseconsole.log(data)}letdoAjax=function(data:string,callback:Function):void{callback(null,data)}//我们习惯的方式doAjax('hello',function(err,result){printData(null,result)})//真正明白函数是一等公民之后,你将使用doAjax('hello',printData)来分享异步处理的经验。在实践中,处理异步调用时很容易误解一个重要的概念,异步函数执行的具体过程是怎样的?letpf=function(data:string,n:number,callback:Function){console.log(`beginrun${data}`)setTimeout(()=>{console.log(`endrun${data}`)回调(null,数据)},n)}letp=Promise.promisify(pf);(async()=>{letps=Array()ps.push(p('1111',2000))ps.push(p('2222',1000))ps.push(p('3333',3000))等待Promise.all(ps)})()视频课程地址以上是《运用typescript进行node.js后端开发精要》视频课程的总结,感兴趣的童鞋可以去观看视频传送门:快来学习Typescript,加入编程、编程、编程的行列吧好玩的编程吧!资源地址https://github.com/zhoutk/sifou