自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

倉頡開發(fā)入門體驗

企業(yè)動態(tài)
倉頡語言作為面向未來的下一代編程語言,當前已經(jīng)完成設(shè)計與實現(xiàn)并啟動了開發(fā)者預(yù)覽,未來將與 ArkTS 共同發(fā)展,為鴻蒙原生應(yīng)用開發(fā)者提供極致高效的開發(fā)體驗。

前言

在剛剛召開的華為開發(fā)者大會(HDC 2024)上,華為內(nèi)部研發(fā)已久的國產(chǎn)自主編程語言倉頡終于正式對外官宣!

當前在鴻蒙原生應(yīng)用的開發(fā)中,支持聲明式 UI 和一次開發(fā)、多端部署的 ArkTS 語言已經(jīng)被廣泛使用。倉頡語言作為面向未來的下一代編程語言,當前已經(jīng)完成設(shè)計與實現(xiàn)并啟動了開發(fā)者預(yù)覽,未來將與 ArkTS 共同發(fā)展,為鴻蒙原生應(yīng)用開發(fā)者提供極致高效的開發(fā)體驗。

倉頡的優(yōu)勢

倉頡的定位同樣如此,據(jù)官方介紹,它是一款面向“全場景”智能的新一代編程語言,主打原生智能化、天生全場景、高性能、強安全。

  • 原生智能化:倉頡編程語言內(nèi)嵌了 AgentDSL 的編程框架,實現(xiàn)了自然語言與編程語言有機融合。多 Agent 協(xié)同,簡化符號表達,模式可以自由組合,支持各類智能應(yīng)用開發(fā)。
  • 天生全場景:倉頡編程語言采用輕量化可縮放運行時和模塊化分層設(shè)計,即使在資源受限的設(shè)備上也能流暢運行。同時,它支持全場景領(lǐng)域擴展,元編程和 eDSL 技術(shù),可助力面向領(lǐng)域聲明式開發(fā)。
  • 高性能:倉頡編程語言采用全并發(fā) GC,應(yīng)用線程運行更加流暢,響應(yīng)速度更快。輕量化線程設(shè)計進一步提升了并發(fā)性能,降低了開發(fā)成本。
  • 強安全:倉頡編程語言將安全理念融入語言設(shè)計,幫助開發(fā)者專注于業(yè)務(wù)邏輯,減少安全漏洞的產(chǎn)生,實現(xiàn)“編碼即安全”的愿景。

當然好像每個新的語言都會這么說,而對于觀望的開發(fā)者來說,我們首先還是需要來了解一下倉頡的語法。

環(huán)境配置

可以直接使用HarmonyOS DevEco Studio或者VsCode進行開發(fā),但需要安裝倉頡插件,目前來看,需要報名倉頡語言開發(fā)者預(yù)覽版Beta招募,才能獲得對應(yīng)的Studio版本。在獲得對應(yīng)的Studio版本后,就可以體驗倉頡的語法特性了。

HelloWorld

和所有語言一樣,我們先來實現(xiàn)倉頡的HelloWorld程序。

新建腳本文件Hello,后綴名是.cj沒錯就是倉頡的中文??

main() {
  println("你好,倉頡")
}

> cjc hello.cj -o hello
> ./hello你好,倉頡

通過cjc命令運行,打印輸出“你好,倉頡”。emm... 只看main這個方法誰也不知道這是kotlin還是啥。

變量聲明

變量定義的具體形式為:

修飾符 變量名: 變量類型 = 初始值

其中修飾符用于設(shè)置變量的各類屬性,可以有一個或多個,常用的修飾符包括:

  • 可變性修飾符:let 與 var,分別對應(yīng)不可變和可變屬性,可變性決定了變量被初始化后其值還能否改變,倉頡變量也由此分為不可變變量和可變變量兩類。
  • 可見性修飾符:private 與 public 等,影響全局變量和成員變量的可引用范圍,詳見后續(xù)章節(jié)的相關(guān)介紹。
  • 靜態(tài)性修飾符:static,影響成員變量的存儲和引用方式,詳見后續(xù)章節(jié)的相關(guān)介紹。

如下程序所示,定義了兩個 Int64 類型的不可變變量 a 和可變變量 b,隨后修改了變量 b 的值。

main() {
    let a: Int64 = 20
    var b: Int64 = 12
    b = 23
    println("${a}$")
}

從這里來看,相當于把Kotlin中的“val”替換成了“l(fā)et”。接著我們來看它的struct 類型。

Struct類型

基礎(chǔ)結(jié)構(gòu)

struct Rectangle {
    let width: Int64
    let height: Int64

    public init(width: Int64, height: Int64) {
        this.width = width
        this.height = height
    }

    public func area() {
        width * height
    }
}

如上述代碼所示,通過struct關(guān)鍵字定義了一個Rectangle結(jié)構(gòu),聲明了變量width、height并提供了init、area兩個方法。我們完全把它當成一個class 即可,通過下列方法我們可以創(chuàng)建struct的實例并調(diào)用相關(guān)方法。

let r = Rectangle(10, 20)
let width = r.width   
let height = r.height
let a = r.area() 
let r = Rectangle(10, 20)
let width = r.width   
let height = r.height
let a = r.area()

但是倉頡也是有自己的class的,主要區(qū)別在于:class 是引用類型,struct 是值類型,class 之間可以繼承,但 struct 之間不能繼承。

struct Test {
    var i = 0

    public func add() {
        i += 1  
    }
}

我們是無法在add函數(shù)中修改成員變量i的值的,如果想要修改我們就需要借助mute函數(shù)。

mute函數(shù)

修改代碼如下所示:

struct Test {
    var i = 0

    public mute func add() {
        i += 1  
    }
}

在add函數(shù)前新增一個mute關(guān)鍵字,就可以在函數(shù)內(nèi)修改i的值了。需要注意的是mute關(guān)鍵字不能修改靜態(tài)函數(shù),如下列代碼無法正常編譯:

public mut static func g(): Unit {} 

 public mut static func g(): Unit {}

其他的語法如模式匹配、網(wǎng)絡(luò)編程等幾乎與Kotlin無異,我們可以在手機操作過程中了解。

跨語言操作

和大多數(shù)語言一樣,倉頡是支持跨語言調(diào)用的,當前支持倉頡-C語言與倉頡-Artks語言的互操作。這里我們以倉頡調(diào)用C語言為例。

在倉頡中要調(diào)用 C 的函數(shù),需要在倉頡語言中用 @C 和 foreign 關(guān)鍵字聲明這個函數(shù),但 @C 在修飾 foreign 聲明的時候,可以省略。舉個例子,假設(shè)我們要調(diào)用 C 的 rand 和 printf 函數(shù),它的函數(shù)簽名是這樣的:

// stdlib.h
int rand();

// stdio.h
int printf (const char *fmt, ...);

那么在倉頡中調(diào)用這兩個函數(shù)的方式如下:

foreign func rand(): Int32
foreign func printf(fmt: CString, ...): Int32

main() {
    let r = unsafe { rand() }
    println("random number ${r}")
    unsafe {
        var fmt = LibC.mallocCString("Hello, No.%d\n")
        printf(fmt, 1)
        LibC.free(fmt)
    }
}

foreign func rand(): Int32
foreign func printf(fmt: CString, ...): Int32

main() {
    let r = unsafe { rand() }
    println("random number ${r}")
    unsafe {
        var fmt = LibC.mallocCString("Hello, No.%d\n")
        printf(fmt, 1)
        LibC.free(fmt)
    }
}

在引入與 C 語言的互操作過程中,同時也引入了 C 的許多不安全因素,因此在倉頡中使用 unsafe 關(guān)鍵字,用于對跨 C 調(diào)用的不安全行為進行標識。

最后

同時,倉頡當前在嘗試支持AI Native原生智能應(yīng)用開發(fā)、DSL KIT、Actor和分布式編程等。不過,就目前來看感覺倉頡是一個所有語言的組合,不管你之前使用的是什么語言可能都會感覺得到很熟悉。但我覺得,開發(fā)者的腦子馬上就不夠用了。

現(xiàn)在又多了一個選擇,你會學(xué)嗎?

相關(guān)推薦:如何獲取倉頡編程語言通用版本SDK?一篇文章讓帶您了解清楚

責任編輯:張燕妮 來源: Android技術(shù)圈
相關(guān)推薦

2014-06-23 09:11:01

2010-04-21 17:07:54

Windows Pho

2011-07-25 18:43:54

iPad iPad開發(fā) UI

2017-09-19 15:55:04

Docker入門實踐

2014-04-04 11:06:02

微軟Microsoft A云開發(fā)

2010-08-01 16:11:53

Android

2010-07-01 10:15:27

UML開發(fā)工具

2010-12-14 18:56:12

微軟

2012-01-10 09:56:32

WPF

2011-09-09 14:09:17

Android Wid

2023-02-08 16:20:39

2009-10-21 12:45:07

linux程序開發(fā)基礎(chǔ)入門

2022-10-12 15:00:02

設(shè)備開發(fā)應(yīng)用開發(fā)

2010-07-02 09:54:32

Symbian開發(fā)

2013-04-08 14:12:03

Android開發(fā)googleMap入門SDK

2013-04-10 15:14:18

Web App開發(fā)WebApp

2011-05-03 15:13:23

BlackBerryWidget

2015-06-25 14:02:35

DockerOpenStack容器即服務(wù)

2010-05-23 10:29:29

Widget開發(fā)

2024-05-20 08:49:07

ArkUI鴻蒙應(yīng)用開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號