程序员能力提升需要掌握哪些语法基础

2019/7/10 16:28:30 作者:互联网发布企业:晋中达内科技有限公司[打印]

随着互联网的不断发展,大多数的程序员都开始通过学习其他的编程语言来让自己更好的发展,而这些都是需要通过语法基础来实现的。下面我们就一起来了解一下具体情况吧。

任何一门编程语言的学习都需要从基本的表达式(Expression)语法开始学习,我们需要了解如何去声明与使用变量、如何为这些变量赋值、如何使用运算符进行简单的变量操作等等。在很多语言之中都有所谓的传值还是传引用的思量,譬如Java与JavaScript本质上就是Pass-by-Value的语言,只不过会将复杂对象的引用值传递给目标变量。这个特性又引发了所谓浅复制与深复制、如何进行复合类型深拷贝等等需要注意的技术点。除此之外,作用域与闭包也是很多语言学习中重点讨论的内容,在JavaScript与Python的学习中我们就会经常讨论如何利用闭包来保存外部变量,或者在循环中避免闭包带来的意外变量值。表达式是一门编程语言语法基础的重要组成部分,接下来我们就需要去学习流程控制与异常处理、函数定义与调用、类与对象、输入输出流、模块等内容。流程控制的典型代表就是分支选择与循环,譬如不同的语言都为我们提供了基础for循环或者更方便地for-in循环,而在JavaScript中我们还可以使用forEach与for-of循环,Java8之后我们也可以基于StreamAPI中的forEach编写声明式地循环执行体,而Python中的列表推导也可以看做便捷的循环实现方式。异常处理也是各个编程语言的重要组成部分,合理的异常处理有助于增强应用的鲁棒性;不过很多时候会出现滥用异常的情况,我们只是一层一层地抛出而并未真正地去处理或者利用这些异常。Java中将异常分为了受控异常与不受控异常这两类,虽然JavaScript等语言中并未在数据类型中有所区分,但是却可以引入这种分类方式来进行不同的异常处理;有时候LetitCrash也是不错的设计模式。

EricElliott曾在博文中提及,软件开发实际就是FunctionComposition与DataStructureDesign;函数或者方法是软件系统的重要基石与组成。我们需要了解如何去定义函数,包括匿名函数以及Lambda表达式等;尽管Java中的Lambda表达式是对于FunctionalInterface的实现,但是鉴于其表现形式我们也可以将其划归到函数这个知识类别中。接下来我们需要了解如何定义与传入函数参数,在C这样的语言中我们会去关心指针传递的不同姿势;而在JavaScript中我们常常会关心如何设置默认参数,无论是使用对象解构还是可选参数,都各有利弊。Objective-C与Swift中提供的外部参数就是不错的函数自描述,Java或Python中提供的不定参数也能够帮我们更灵活地定义参数,在JavaScript中我们则可以通过扩展操作符实现类似的效果。然后我们就需要去考虑如何调用函数,典型就是就是JavaScript中函数调用的四种方式,我们还需要去关心调用时函数内部的this指针指向。而装饰器或者注解能帮我们更好地组织代码,以类似于高阶函数的方式如洋葱圈般一层一层地剥离与抽象业务逻辑。后在函数这部分我们还需要关心下迭代器与生成器,它们是不错的异步实现模式或者流数据构建工具。

近几年随着前端富客户端应用的迅猛发展与服务端并发编程的深入应用,函数式编程以及Haskell这样的函数式编程语言也是引领风骚。尽管面向对象编程也有着很多其他被人诟病的地方,但是在大型复杂业务逻辑的应用开发中我们还是会倾向使用面向对象编程的范式;这就要求我们对于类与对象的基本语法有所掌握。我们先要去了解如何定义类,定义类的属性、方法以及使用访问修饰符等方式进行访问控制。其次我们需要了解如何从类中实例化出对象,如何在具体的语言中实践单例模式等。然后我们就需要去了解面向对象的继承与多态的特性,应该如何实现类继承,子类与父类在静态属性、静态方法、类属性、构造函数上的调用顺序是怎样的;以及如何利用纯虚函数、抽象类、接口、协议这些不同的关键字在具体语言中实现多态与约定。后我们还需要去关注下语言是否支持内部类,譬如Java就分为了静态内部类、成员内部类、局部内部类与匿名内部类这四种不同的分类。在整个语法基础部分的后,我们还需要去了解下输入输出流与模块化相关的知识,譬如Java9中即将推出JPMS模块化系统,而JavaScript的模块化标准则历经了CommonJS、AMD、UMD、ES6Modules等多轮变迁。

【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。


关键字:晋中达内,IT培训,程序员
免责声明:以上所展示的信息由网友自行发布,内容的真实性、准确性和合法性由发布者负责。行业信息网对此不承担任何保证责任。任何单位或个人如对以上内容有权利主张(包括但不限于侵犯著作权、商业信誉等),请与我们联系并出示相关证据,我们将按国家相关法规即时移除。

其他新闻

关于我们 | 服务条款 | 网站指南 | 免责声明 | 友情链接 | 给我们留言
红盾
COPYRIGHT @ 2001-2017 CNlinfo.net ALL RIGHTS RESERVED
深圳市信息行业协会商务网站 运营商:深圳市兴讯信息技术有限公司 粤ICP备:05039908
营业执照