Dart编程基础 - 一种新的编程语言

Dart编程基础 – 一种新的编程语言

Dart Programming Essentials - A New Type of Programming Language

By Jackson@ML

Dart is a client-optimized language for fast apps on any platform

  • From dart.dev

在1999年之前,和我一样对计算机技术感兴趣的伙伴们,都曾研讨过Visual Basic, Delphi,Java哪个在未来会更先进; 或者说FoxPro、Access数据库比ForBase有哪些更好的特性的等等。那个时代还没有Internet,所见的报章里,这方面知识和信息匮乏。

时光荏苒。

我也因此在学习了Visual Basic、Visual C++过后,于2001年迅速转向Java。

当时对于支持的可选类型而言,我自己没有深刻的理解,但听说不同类型的语言已经形成战场。例如:C属于严格的强类型语言;而Java属于静态类型的语言,而快速发展的JavaScript又会在今后如何呢?

这期间,Python悄然开始了动态语言的旅程,直到八年前我才接触它;又过了一些年,发现市场上流行的编程语言,特别是新兴的一些语言,都选择了渐进类型,如:TypeScript, Hack和Dart等。

Dart语言类型是严格的,还是非严格的?究竟怎么来理解这种新兴的语言?

本文简要介绍Dart的概念和基本特性。同时,尝试用一个简单的Dart程序开启这门语言的学习之旅。希望对初学者或者高校学生有所帮助。

1. Dart是什么样的编程语言?

显而易见,Dart是一门通用的编程语言。

Dart的语法看似C语言,但实质上不同。Dart被定义为纯粹面向对象、基于类、使用可选类型、支持混入式继承及Actor模式、且支持并发的编程语言。

既然是面向对象的语言,那么Dart在运行时所处理的值都是对象,甚至包括数字、布尔值等。
Dart关注对象的行为,而不是它的内部实现,这是面向对象编程语言的核心原则。Dart维护这个原则,通过几种方式:

  • Dart类型基于接口,而不是类。任意类都隐含了一个接口,能够被其它类实现,无论其它类是否使用了同样的底层实现。
  • Dart没有final方法,但允许重写几乎所有的方法。
  • Dart将对象进行抽象封装,确保所有外部操作都通过存取方法来改变对象的状态。
  • Dart的构造函数允许对对象进行缓存,后者从子类型创建实例,因此使用构造函数不意味着绑定具体的实现。

2. Dart有哪些特性?

Dart编程语言有很多种描述,从不同的角度。这里想从核心功能做简单小结。

根据官网的简介,Dart有以下主要特性:

1) 优化过的UI

它使用专门针对用户界面创建需求的编程语言进行开发;

2) 高效

它以迭代方式进行更新,用热重载立即查看正在运行的app的结果;

3) 快速运行在所有平台

它将移动端、桌面和后端应用程序编译为ARM & X64机器码;或者编译为JavaScript for Web;

另外,Dart灵活的编译器技术,允许你以不同方式运行Dart代码,具体取决于你的应用平台和运行目标;

1) Dart Native: 对标设备(移动、桌面、服务器设备等)的程序,Dart Native包括一个带有JIT的Dart虚拟机和一个用于生成代码的AOT(提前)编译器;
2) Dart Web: 对于面向Web的应用程序,Dart Web包括开发时编译器dartdevc和生产时编译器dart2js.

3. 尝试第一个Dart程序 – Hello World

实际上,每个应用程序都需要一个顶级的main()函数,因为程序就从该函数开始执行。如果需要在控制台显示文本,则可以直接使用print()函数。

看到函数的简洁样貌,就会明白,不显式返回值的函数具有这个void返回类型。

根据这个原则,我写一段Dart代码,像下面这个程序一样。

void main() {print('Hello, World!');
}

看上去如此简洁!

将程序命名后(什么名字不重要),在Visual Studio Code里执行结果如下图所示:

在这里插入图片描述
程序运行成功!这是第一个Dart程序。

关于Dart,才刚刚开始……

技术好文陆续推出,敬请关注和点赞。

您的认可,我的动力。😊

相关阅读:
  1. Javascript编程基础 - 闭包
  2. Shell编程基础 - for循环
  3. Python编程技巧 - Lambda函数
  4. 什么是时间序列预测?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/208036.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试篇spark(spark core,spark sql,spark 优化)

一:为什么学习spark? 相比较map-reduce框架,spark的框架执行效率更加高效。 mapreduce的执行框架示意图。 spark执行框架示意图 spark的执行中间结果是存储在内存当中的,而hdfs的执行中间结果是存储在hdfs中的。所以在运算的时…

基于通义千问和向量数据构建问答知识库

参考:Java从0到1构建基于ChatGPT向量数据库的检索增强生成模型RAG-02 - 知乎 (zhihu.com) 1、先开通 阿里云的向量检索服务 如何开通向量检索服务并创建API-KEY_向量检索服务-阿里云帮助中心 (aliyun.com) 按流程申请 最后需要申请API-KEY 安装DashVector SDK M…

Nacos2.x配置中心源码分析

概述 源码注释参考 git 仓库,对应流程图后续补充; 启动 nacos nacos 启动类: // com.alibaba.nacos.NacosSpringBootApplication(scanBasePackages "com.alibaba.nacos") ServletComponentScan EnableScheduling public class…

关于安科瑞AAFD-40型故障电弧探测器的功能介绍-安科瑞 蒋静

1 概述 故障电弧探测器(以下简称探测器)对接入线路中的故障电弧(包括故障并联电弧、故障串联电弧)进行有效的检测,当检测到线路中存在引起火灾的故障电弧时,可以进行现场的声光报警,并将报警信…

单片机实验(三)

前言 实验一:利用定时器T1的中断控制P1.7引脚输出音频信号,启动蜂鸣器发出一段熟悉的与众不同的具有10个音节的音乐音频。 实验二:使用定时器/计数器来实现一个LCD显示年、月、日、星期 、时、分、秒的电子表,要求时和分可以方便…

Vmware17虚拟机安装windows10系统

不要去什么系统之家之类的下载镜像,会不好安装,镜像被魔改过了,适合真实物理机上的系统在PE里安装系统,建议下载原版系统ISO文件 安装vmware17pro 下载地址https://dwangshuo.jb51.net/202211/tools/VMwareplayer17_855676.rar 解…

04.PostgreSQL是如何实现隔离级别的?

PostgreSQL是如何实现隔离级别的? 事务有哪些特性? 事务看起来感觉简单,但是要实现事务必须要遵守 4 个特性,分别如下: 原子性(Atomicity):一个事务中的所有操作,要么…

Elasticsearch(ES)概述

文章目录 一.什么是Elasticsearch?1.正向索引和倒排索引2.Mysql和ES的概念对比3.安装elasticsearch、kibana 二.IK分词器三.索引库操作四.文档操作五.RestClient操作索引库1.初始化RestClient2.创建索引库3.删除索引库4.判断索引库是否存在 六.RestClient操作文档1.新增文档2.…

Elasticsearch 优化查询中获取字段内容的方式,性能提升5倍!

1、背景 集群配置为:8 个 node 节点,16 核 32G,索引 4 分片 1 副本。应用程序的查询逻辑是按经纬度排序后找前 200 条文档。 1、应用对查询要求比较高,search 没有慢查询的状态。 2、集群压测性能不能上去,cpu 使用未打…

Nat. Rev. Chem. | 一份关于用机器学习研究化学问题的评估指导

今天为大家介绍的是来自Tiago Rodrigues团队的一篇论文。机器学习(ML)有望解决化学领域的重大挑战。尽管ML工作流程的适用性极广,但人们通常发现评估研究设计多种多样。目前评估技术和指标的异质性导致难以(或不可能)比…

java设计模式学习之【单例模式】

文章目录 引言单例模式简介定义与用途实现方式:饿汉式懒汉式 UML 使用场景优势与劣势单例模式在spring中的应用饿汉式实现懒汉式实现数据库连接示例代码地址 引言 单例模式是一种常用的设计模式,用于确保在一个程序中一个类只有一个实例,并且…

计算机组成学习-数据的表示和运算总结

1、进制与编码 1.1 进位计数法 常用的进位计数法有十进制、二进制、八进制、十六进制等。十六进制每个 数位可取0〜9、A、B、C、D、E、F中的任意一个,其中A、B、C、D、E、F分别表示 10〜15。 八进制数字通常以前缀 "0"(零)加上数…

Ubuntu 2204 安装libimobiledevice

libimobiledevice是一个开源的软件,它可以直接使用系统原生协议和IOS设备进行通信,类似iMazing,iTunes,libimobiledevice不依赖IOS的私有库,并且连接IOS设备时用的都是原生协议,IOS无需越狱就能实现设备信息…

同旺科技 USB TO SPI / I2C --- 调试W5500_读写网关地址

所需设备: 内附链接 1、USB转SPI_I2C适配器(专业版); 首先,连接W5500模块与同旺科技USB TO SPI / I2C适配器,如下图: 这里的网关地址设置为192.168.1.1 先将网关地址写入寄存器,然后再读取出来:

Echarts 设备状态 甘特图

在做工厂智能化生产看板时,绝对会有设备状态看板,展示设备当天或者当前状态,设备状态数据一般是有mes 系统设备管理模块对设备信息进行采集,一般包括过站数据,设备当前状态,是否在线是否故障、检修、待生产…

Linux CentOS7 联网配置 | 安装中文输入法

参考视频:保姆式教学虚拟机联网liunx(centos)_哔哩哔哩_bilibili 配置网络:解决上网问题 第一步:选择网络模式 第二步:配置网卡命令:打开终端执行命令: 1、先切换到根目录下,防止在第执行cd …

css如何设置文本添加下划线

css文本添加下划线 text-decoration: underline;text-decoration相关属性参数 参数描述none默认。定义标准的文本。underline定义文本下的一条线。overline定义文本上的一条线。line-through定义穿过文本下的一条线。blink定义闪烁的文本。inherit规定应该从父元素继承 text-…

blue beacon rssi 指纹室内定位数据集

数据集是开展实验的基础,搜集并分享。如果你有关于室内定位的问题,请联系博主。 namedatesetpapercommentBLEBeacon: A Real-Subject Trial Dataset from Mobile Bluetooth Low Energy Beaconshttps://github.com/dimisik/BLEBeacon-Datasethttps://arxi…

matlab基于线性二次调节器(LQR)法实现机器人路径规划可变轨迹跟踪

1、内容简介 略 可以交流、咨询、答疑 2、内容说明 基于线性二次调节器(LQR)法实现机器人路径规划可变轨迹跟踪 3、仿真分析 略 load path.mat %% 轨迹处理 % 定义参考轨迹 refPos_x path(:,1); refPos_y path(:,2); refPos [refPos_x, refPos_y];% 计算航向角和曲率 …

Elasticsearch:ES|QL 函数及操作符

如果你对 ES|QL 还不是很熟悉的话,请阅读之前的文章 “Elasticsearch:ES|QL 查询语言简介​​​​​​​”。ES|QL 提供了一整套用于处理数据的函数和运算符。 功能分为以下几类: 目录 ES|QL 聚合函数 AVG COUNT COUNT_DISTINCT 计数为近…