-
前端的主要编程语言为JavaScript。
-
JavaScript做为一种融合了多种编程范式的语言,灵活性非常高。
-
前端开发人员需要根据场景在不同编程范式间自如切换。
-
进一步需要创造领域特定语言抽象业务问题。
编译常用语言 1、PHP语言,是一种通用开源脚本语言;
2、C语言,一门面向过程的、抽象化的通用程序设计语言;
3、JAVA语言,一种可以撰写跨平台应用软件的面向对象的程序设计语言;
4、Go语言,是开源编程语言;
5、Python,一种跨平台计算机程序设计语言等。
过程式编程 过程式编程的核心在于模块化,在实现过程中使用了状态,依赖了外部变量,导致很容易影响附近的代码,可读性较低,后期的维护成本也较高。 主要是自顶向下和结构化编程两种思想。
自顶而下
结构化编程
js中的面向过程 面向过程:不具备类和对象这种结构,现实中表现为,我渴了想喝水,我得起身,然后去拿水杯,然后走向饮水机,然后.......这种繁琐的操作,最终达到一个目的
面向过程中的问题: 数据与算法关联弱
不利于修改和扩充
不利于代码重用
面向对象编程 三大基本特性:封装,继承,多态,还有一个高级特性:依赖注入
封装 封装,就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
将数据和算法封装到一个类里,对内部数据进行保护,防止无关数据的意外改变,动用了类的私有化成分
继承 继承,指可以让某个类型的对象获得另一个类型的对象的属性的方法。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
多态 多态,是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
不同的结构可以进行接口共享,进而达到函数复用
依赖注入 在面向对象编程中,我们经常处理处理的问题就是解耦,程序的耦合性越低表明这个程序的可读性以及可维护性越高。控制反转就是常用的面向对象编程的设计原则,使用这个原则我们可以降低耦合性。其中依赖注入是控制反转最常用的实现。
面向对象编程五项原则 •单一职责原则SRP(Single Responsibility Principle)
•开放封闭原则OCP(Open-Close Principle)
•里式替换原则LSP(theLiskovSubstitution Principle LSP)
•依赖倒置原则DIP(the Dependency Inversion Principle DIP)
•接口分离原则ISP(the Interface Segregation Principle ISP)
函数式编程 面向对象编程语言的问题在于,它总是附带着所有它需要的隐含环境。你想要一个香蕉,但得到的却是一个大猩猩拿着香蕉,而且还有整个丛林。此时我们会想到函数式编程。
函数式编程的思维方式:把显示世界的事务和事物之间的联系抽象到程序世界(对运算过程进行抽象)
函数式编程中的函数指的数学中的函数即映射关系,输入的值对应一个输出的值,例如 y = f(x)
相同的输入始终得到相同的输出(纯函数)
函数式编程用来描述数据(函数)之间的映射
函数式编程的特点 1、函数式“第一等公民”:*
函数可以存储在变量中
函数作为参数
函数作为返回值
2、纯函数/无副作用:
纯函数: 对于相同的输入永远会得到相同的输出,而且没有任何可观察的副作用
所有的外部交互都有可能带来副作用,副作用也使得方法通用性下降不适合扩展和可重用性
3、高阶函数/闭包
闭包的本质:函数在执行的时候会放到一个执行栈上,当函数执行完毕之后会从执行栈上移除,但是堆上的作用域成员因为 被外部引用不能释放,因此内部函数依然可以访问外部函数的成员
高阶函数可以把函数作为参数传递给另一个函数,也可以把函数作为另一个函数的返回值
函数式编程的好处:可缓存,可移植,可测试,可推理,可并行
响应式编程 是在异步/离散的数据中的函数式编程,主要包括两个概念:
1、数据流
2、操作符:过滤,合并、转化、高阶
主要是观察者模式和迭代器模式,还有Promise/EventTarget超集
领域特定语言是在特定领域下用于特定上下文的语言。
DSL 的目的是在某个领域中记录一些需求和行为,在某些方面(例如金融商品交易)中,DSL 的适用场景可能更加狭窄。业务团队和技术团队能通过 DSL 有效地协同工作,因此 DSL 除了在业务用途上有所发挥,还可以让设计人员和开发人员用于设计和开发应用程序。
DSL 还可以用于生成一些用于解决特定问题的代码,但生成代码并不是 DSL 的重点并不在此,而是对专业领域知识的结合。当然,代码生成在领域工程中是一个巨大的优势。