logo

面向接口/协议?看DuerOS的技能开发

作者:沙与沫2023.02.08 20:25浏览量:306

简介:内存分配函数alloc源码分析

一般地,开发一个对话系统或者机器人问答系统会涉及诸多领域的技术,除了硬件系统之外,还包括语言识别,自然语言处理/识别,知识图谱的搭建,自然语言生成及TTS播报等等,这对于企业及开发者个人而言,几乎是难以完成的任务。
有幸的是,对话式AI操作系统例如DuerOS的诞生,使我们可以直面业务逻辑,相对轻松地完成语音类服务的开发与实现。在过去的研发中,经常使用的往往是面向接口的设计方法,那么,面向对话式操作系统的开发,是如何实现的呢?

接口

在OO的时候,通常会讲到SOLID原则:

  • 单一职责
  • 开闭原则
  • 里氏替换
  • 接口隔离
  • 依赖反转
    其中接口隔离是其中的一项重要原则。接口的概念外延较广泛,wiki上的解释是这样的:

    An interface is a shared boundary across which two or more separate components of a computer system exchange information. The exchange can be between software, computer hardware, peripheral devices, humans, and combinations of these.

接口大体上从载体上分为硬件接口和软件接口,从交互上可以分为人机接口和机-机(M2M)接口。软件中的接口为组件可以提供了常量、数据类型、过程类型、异常规范和方法签名等。有时,公共变量也被定义为接口的一部分。接口是一种很高的抽象,很多时候都会涉及到接口,因此要注意上下文和具体的应用场景。

在面向对象的编程语言中,尤其是不支持多继承的编程语言,往往有着特殊的具体含义,interface 一词成为了关键字,例如Java。Java接口中所用的方法一般都是抽象方法和常量,但是在Java8及以后的版本中,开始支持静态成员以及默认的函数实现,例如:

public interface MyTestInterface {
    int MAX_STORAGE_SIZE = 1024;

    default void doTest() {
        System.out.println("Hello, Test!");
    }
}

尽管如此,作为一个从Java 1.2 开始使用的老程序员而言,Java的发展还是略显迟缓。

关于接口描述语言(IDL),大约最早出现在是CORBA的规范中,自己在1999年初次使用IDL的时候,非常感叹它的神奇,在当时简直就是跨平台开发的基础。实际上,OMG IDL不是作为程序设计语言体现在CORBA体系结构中的,而是用来描述产生对象调用请求的客户对象和服务对象之间的接口的语言。IDL文件描述数据类型和方法框架,而服务对象则为一个指定的对象实现提供上述数据和方法。一般地,IDL文件描述了服务器提供的服务功能,客户机可以根据该接口文件描述的方法向服务器提出业务请求。在大多数CORBA产品中都提供了IDL到相关编程语言的编译器。 在Android的应用开发中,AIDL实际上就是IDL的一个领域应用而已。

那么接口和协议有什么联系和区别呢?

相关文章推荐

发表评论