程序员们不能错过的一次弯道超车机会 - 今日头条

本文由 简悦 SimpRead 转码, 原文地址 www.toutiao.com

引言纵观互联网发展历史,每隔一段时间就会有一个新兴的业务独领风骚,接着大量资本会涌入这个领域。一夜之间,那些小规模的创业公司会迎来指数级的增长。

纵观互联网发展历史,每隔一段时间就会有一个新兴的业务独领风骚,接着大量资本会涌入这个领域。一夜之间,那些小规模的创业公司会迎来指数级的增长。

风口论、赛道论往往会被用来解释这些现象。而对于身处热门公司的程序员们来说,则是一个梦寐以求的发展机会。这种感觉,估计和中彩票差不多。

不过,这种被资本追捧的 “热”,着实有些虚火。“千团大战”、“共享单车大战”、“共享打车大战” 等,只不过是借着资本的炒作,无谓地消耗资源而已。程序员们短期能获得一些回报,但热度一降,立马茶凉走人。

所以,与其盯着热门的商业概念,不如转变眼光,看向那些有真正价值的长远事业。那可能有人会提出疑问,现在能称得上好的机会,除了进大厂,还有什么呢?

还真有,如果能抓住这个机会,对程序员们来说,就是一次完美的弯道超车。让我们先从技术的趋势与现状说起。

https://p3.toutiaoimg.com/origin/dfic-imagehandler/3853a4df-dbe7-4b0f-98ea-285a5624683e?from=pc

我们知道,除了专业能力之外,看准市场和技术的发展趋势非常重要。只要走在一个上升的趋势中,自然就会水涨船高,这需要我们能够预判事物发展的方向。

那么,趋势会在哪里呢?一个判断原则就是,那些存在问题的地方,往往就蕴含着好机会。

在 PC 时代,Intel 的 X86 架构与微软的 Windows 操作系统,统治了整个江湖。在苹果推出石破天惊的 iPhone 之后,智能移动设备取代 PC 揭开了新世纪的大幕。苹果的 iOS 与谷歌的 Android 则占据了移动操作系统的最大份额。

现在硬件设备在摩尔定律的加持下,可以说是超速发展。我们身边的可计算式智能设备,每年是指数级的增长。而系统软件却存在标准不统一、厂商各自为战的状态。

时至今日,万物互联已经是各个大厂布局的重点,而底层系统软件却越来越成为一个技术上的鸿沟。观察一下我们手里的各种智能设备,只要是不同厂家的,它们之间必然是信息隔离的,这会带来诸多问题。

https://p3.toutiaoimg.com/origin/dfic-imagehandler/274ab316-2694-40d0-a49f-f3593bbf0bdf?from=pc

第一个问题是在系统层面信息无法流动。你可能买了一个 A 厂商的手机,然后喜欢 B 厂商的智能手表,但两个设备之间即使通过 APP 也只能进行有限的数据交换。这往往限制了产品的推广与发展。

第二个问题是每种设备的操作系统不同,其上运行的应用就要有不同技术栈的团队实现一次。这无形增加了应用开发的成本,这等于是多花了一倍的钱,却只是为了把相同的功能再实现一遍。即使有一些跨平台的开发技术,但也是还要在应用和系统之间再增加一层服务,付出的是性能损耗的代价。

第三个问题是对于厂家来说,即使是他们自己生产的不同设备,也无法做到应用完美的兼容,仍然有大量的调试和适配工作要做。

以上这些问题,从现在来看,并不利于行业的发展。如果有一种技术,可以解决上述三个痛点,那么它是不是会让你眼前一亮?

2020 年 9 月 10 日,华为公司发布了 HarmonyOS 2.0,它的另一个名字更为我们所熟知,就是鸿蒙操作系统。它的出现,宣告了在操作系统这一层面,迎来了全平台大一统的时刻。

华为公司将硬件种类定义为 “1+8+N”。“1” 就是居于中心位置的手机,它是用户使用最频繁,和其它设备产生连接也最多的。“8”则是指 PC、平板电脑、耳机、眼镜、手表、车载设备、音响、HD 设备等八种硬件。“N”则是除此之外的所有 IoT 设备。

说了这么多设备,其实它们全都只需要安装鸿蒙这一种操作系统。这意味着在系统底层,信息不再隔离,数据的孤岛将被打通。

鸿蒙在底层设计上使用的是微内核架构,这种架构的特点是内核代码可以相当精简,内核的主要功能就是处理进程间的通信工作。系统级的服务都运行在用户态。

这样设计的优点是操作系统可以非常方便地适配各类设备,只需要加载不同的模块,系统很容易做到可伸缩。与宏内核架构的 Linux 相比,要将 Linux 适配到全平台的设备上,内核的裁减与调整就是一件十分麻烦的事情。

对于应用开发来说,只需要编写一次代码,然后全平台可用,并且预期效果也是一致的。举例来说,就是同样一个调用方法,它只要是运行在 HarmonyOS 上,那么无论是在手机,还是手表里,其运行结果都是一致的,不需要做兼容性的工作。

应用开发者就只需要专注于一类技术栈即可。而硬件设备生产厂家,也不用再进行麻烦的底层系统适配工作,只要与鸿蒙兼容即可。

对于互联的理解,鸿蒙将其看作了操作系统的原生属性,即不互联则无 OS。所以分布式架构就与微内核架构一样,是鸿蒙的最基本特征。

https://p3.toutiaoimg.com/origin/dfic-imagehandler/df505bbf-e19d-4516-83bf-9dcb86a9287c?from=pc

接下来就对鸿蒙的分布式架构核心技术进行详细说明。

在 PC 架构体系中,数据的传输是在总线上进行的。CPU 通过总线从内存中读取数据,外部设备通过扩展插槽或者 USB 接口连接到总线上。可以看出来,总线是数据传输与交换的桥梁。

在安装了鸿蒙操作系统的各个设备之间,它们可以平滑地自动组网,从而构建为一个分布式系统。这样的系统所具有的数据传输通道,就是分布式软总线。

之所以被称为 “软总线”,它是借用了 PC 体系中硬件总线的概念,表明这是在软件之间建立的系统总线。而这一架构显然不只是用来为应用层传输数据,它还包括三项基础功能。

一是任务总线,即将应用在多个终端上快速分发。二是数据总线,这也是分布式软总线的核心功能,即在各个设备间传输数据。三是总线中枢,它负责将不同设备进行自动组网。

同时,得益于华为公司在 5G 技术上的领先优势,在自家研发的鸿蒙操作系统上,结合 5G 技术之后,分布式软总线更是获得了逼近于硬件总线的传输能力。

我们拥有了这样跨越式的技术之后,可以做什么?

想象的空间是巨大的,对于高带宽低延迟要求的 VR/AR 应用场景就会有许多需求。例如在线体感游戏,除了更好的沉浸式体验,还可实现接近真实场景的多人对战。

远程教育,通过可穿戴式设备与丰富的多媒体演示工具,接近于真实课堂的交互成为可能。这就解决了当下远程教学中,扁平化模式带来的手段单一、交流不畅等问题。

远程协同办公,只要在家中接入各种设备,就能实现可视化的协同工作。这使得组建跨地域的高效团队成为可能,借助丰富的应用工具,可以进行白板演示、视频会议、商务合作等。

https://p3.toutiaoimg.com/origin/dfic-imagehandler/c433a139-c3da-44f1-b53b-5d0bdfa643c0?from=pc

说了这么多,是不是已经等不及想知道怎么在鸿蒙上开发应用呢?我们现在就说怎么动手干。

华为公司提供了一个很好用的 IDE:DevEco Studio,专门用于为鸿蒙系统开发应用。这是基于 vscode 二次开发而成的。

https://p3.toutiaoimg.com/origin/pgc-image/9c95ee7636fb47ceb9b60234e29c4d7f?from=pc

  1. 下载安装包:http://developer.harmonyos.com/cn/home

https://p3.toutiaoimg.com/origin/pgc-image/4473bc0a382d4db59febf95cbe2a952a?from=pc

  1. 下载 node.js 安装包:

https://p3.toutiaoimg.com/origin/pgc-image/c9874d1f5fc3417eb25c8321dcdd1e07?from=pc

  1. 安装 node.js 与 DevEco Studio。
  2. 如果是在 windows 系统上,建议安装完成后重启一次系统。
  3. 启动 DevEco Studio 后会要求设置 node.js 的安装目录,其它选项都默认就可以。

开发工具目前只需要这两套,接下来我们以一个简单实例来讲解。

  1. 启动 DevEco Studio,建立新工程。我们选择智能手表设备,模板使用空白 js。

https://p3.toutiaoimg.com/origin/pgc-image/b77e3fba55e24637a5ec18dc08a5c17d?from=pc

  1. 第一次启动会耗时较长,因为工程会自动下载 gradle 工具并进行一次自动编译。当编译完成后,通过预览工具 Previewer 查看,默认会显示 “hello, world”。

https://p3.toutiaoimg.com/origin/pgc-image/c83714afe5c34e70b4a61b16c51c34b7?from=pc

  1. 增加一个按钮,并添加关联事件,实现一个点击功能。

如上图所示,我们看到在 pages/index 路径下,有三个文件,分别是 index.css, index.html, index.js。这三个文件就构成了智能手表应用的启动页面。做过微信小程序开发的同学,对这种架构想必是轻车熟路的。

index.html:描述页面中的组件元素。我们在此页面中添加按钮的代码。

1
2
3
4
5
6
<div class="container">
      <text class="title">
          Hello {{title}}
      </text>
      <input type="button" value="click me" class="btn" onclick="clickAction"/>
  </div>

index.js:执行 javascript 语句,构建数据模型,以及完成功能逻辑。我们在此处添加 clickAction 方法。

1
2
3
4
5
6
7
8
export default {
      data: {
          title: 'World'
      },
      clickAction() {
          console.log("yes, it's me");
      }
  }

index.css:定义页面元素的外观与样式。我们为按钮设置宽高。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
.container {
      flex-direction: column;
      justify-content: center;
      width: 454px;
      height: 454px;
      justify-content: center;
      align-items: center;
  }
  .title {
      width: 200px;
      font-size: 30px;
      text-align: center;
  }
  .btn {
      width: 200px;
      height: 50px;
  }
  1. 运行调试

点击工具栏中小甲虫形状的按钮,出现模拟器选择界面,选择智能手表模拟器,然后确定。

https://p3.toutiaoimg.com/origin/pgc-image/5ff15bcc70e94af6978b729d392b8035?from=pc

编译成功后,会显示模拟器界面。可以看到,我们添加的按钮已经显示在界面上了。

https://p3.toutiaoimg.com/origin/pgc-image/458875d85e404d5bb5269b9c835c15c3?from=pc

点击按钮 click me,可以在 debug 窗口看到输出结果。

1
2
3
4
5
6
01/28 22:52:02: Launching com.example.hellotwo
  [Info] Application onCreate
  [Debug] yes, it's me
  [Debug] yes, it's me
  [Debug] yes, it's me
  [Debug] yes, it's me

至此,我们看到鸿蒙的设计目标,就是面向万物互联时代而思考的。它没有既往的技术包袱,从系统底层进行了革新,解决了最关键的问题,必然是大势所趋。

学习这项未来的热门技术,如果全靠自己去查找线上文档,必然费时费力。幸好,现在已经有一本专门讲解鸿蒙应用开的好书上市了。

这就是《鸿蒙应用开发实战》,作者张荣超是华为官方首批认证的鸿蒙操作系统课程开发人员。这本书最大的特点,就是保姆式贴心示范,把一个功能并不算复杂的应用,分解成详细的 36 个过程。

换句话说,只要有点耐心,每天晚上抽出一个小时,一个月以内就能掌握鸿蒙应用开发的核心技术。说起来好像挺简单,其实也真的挺简单。

所谓弯道超车,并不需要我们在同一条道路上跑得比别人更快,而是能够发现一条不一样的道路。当这条新路上并没有什么人时,我们只要走上去就能领先于他人。

为什么不去做这件简单的、又能改变职业命运的事呢?

https://p3.toutiaoimg.com/origin/pgc-image/bce1b0915dd54991b57ca00274541477?from=pc