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

news2025/3/7 2:03:28

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.coloradmin.cn/o/1277437.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高级算法设计与分析练习1-10

文章目录 7-1 锦标赛7-2 选我啊!7-3 朋友圈7-4 最短路径7-5 ICPC保定站7-6 填数字7-7 Werewolf7-8 球队“食物链”7-9 代码排版7-10 至多删三个字符 7-1 锦标赛 HBU有2 n名ACM选手,编号依次为1−2 n。他们现在要进行一场程序设计比赛,这个比…

规则引擎专题---1、什么是规则引擎

什么是规则引擎,为了更易大家理解,我们这边先抛出一个问题。 问题 现有一个在线申请信用卡的业务场景,用户需要录入个人信息,如下图所示: 通过上图可以看到,用户录入的个人信息包括姓名、性别、年龄、学…

基于51单片机的交通灯_可调时间_夜间+紧急模式

51单片机交通灯 1 讲解视频:2 功能要求3 仿真图:4 原理图PCB5 实物图6 程序设计:7 设计报告8 资料清单(提供资料清单所有文件):设计资料下载链接: 51单片机简易交通灯_可调时间_夜间紧急 仿真代…

三、Linux高级命令

目录 1、重定向命令 1.1 重定向 > 1.2 重定向 >> 该章节的所有操作都在/export/data/shell目录进行,请提前创建该目录。 mkdir -p /export/data/ 1、重定向命令 1.1 重定向 > Linux 允许将命令执行结果重定向到一个文件,本应显示在…

「Verilog学习笔记」自动贩售机1

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 自动贩售机中可能存在的几种金额:0,0.5,1,1.5,2,2.5,3。然后直接将其作为状态机的几种状…

HTTP 基本概念(计算机网络)

一、HTTP 是什么? HTTP(HyperText Transfer Protocol) :超文本传输协议。 HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。 「HTTP 是用于从互联网服务器传输超文本到本地浏览器的协议…

接口测试工具:Jmeter详解

安装 使用JMeter的前提需要安装JDK,需要JDK1.7以上版本 目前在用的是JMeter5.2版本,大家可自行下载解压使用 运行 进入解压路径如E: \apache-jmeter-5.2\bin,双击jmeter.bat启动运行 启动后默认为英文版本,可通过Options – C…

仿真的整体框架和类图设计

之前的写的模拟代码没有模块,没有对象,写的逻辑结构也很混乱。我花了些时间进行整理,首先所有的类如下图 在管理类中有统一的管理类的接口 ,提供所有管理类的虚拟初始化和关闭方法 然后事件的管理类 我希望在这个类中管理所有的脉…

匿名结构体类型、结构体的自引用、结构体的内存对齐以及结构体传参

文章目录 🚀前言🚀结构体✈️结构体类型的声明✈️结构体变量的创建与初始化✈️结构体类型的特殊声明✈️结构体的自引用✈️结构体的内存对齐🚁修改默认对齐数 ✈️结构体传参 🚀前言 在C语言中有着各种数据类型,这…

服务注册发现 配置中心 springcloud alibaba nacos

文章目录 0100 系统环境0200 nacos安装0201 下载0202 安装 0300 工程说明0301 结构说明0302 运行效果 0400 代码说明0401 服务提供者(Provider Service)0402 服务消费者(Consumer Service)服务提供者SDK(Provider Serv…

应用商店优化之利用季节性提高应用曝光

在应用商店中利用季节性优化,是提高应用和游戏的曝光度以及应用商店转化率的最有效策略之一。 1、季节性的影响。 用户消费来自许多不同渠道的新闻和信息,这会影响他们做出决策的方式。比如在节日期间,当用户寻找购物类型的应用时&#xff0…

springboot数据格式验证——自定义日期格式验证及list验证

我们在工作中经常需要对日期格式进行定义,如果客户端传来的日期字符串不符合要求,那么根本无法保存,但是已有的注解并没有日期格式的验证,那我们就自己实现一个 一、自定义日期格式验证的注解DateFormat import javax.validatio…

Linux--初识和基本的指令(3)

目录 1.前言 1.指令 1.1 cat指令 1.2 echo指令 1.3 more 指令 1.4 less指令 1.5 什么时候使用less和more 1.6 head指令 1.7 tail指令 1.8 wc指令 1.9 与时间相关的指令 1.9.1 date指令 1.9.2 cal指令 1.10 16.find指令:(灰常重要&#x…

熬夜会秃头——beta冲刺Day7

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云这个作业要求在哪里团队作业—beta冲刺事后诸葛亮-CSDN社区这个作业的目标记录beta冲刺Day7团队名称熬夜会秃头团队置顶集合随笔链接熬夜会秃头——Beta冲刺置顶随笔-CSDN社区 一、团队成员会议总结 1、成员工作…

蓝桥杯算法心得——小郑躲太阳(思维推导)

大家好,我是晴天学长,一道与平时的题型截然不同的题型,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪 1) .小郑躲太阳 问题描述 小郑一觉醒来发现起晚啦!现在需要从家里飞速前往公司…

服装行业中小企业零售数字化转型的工作目标和主要实施路径|徐礼昭

目标1:实现“人、货、场”的在线化和经营数字化 实施路径:中小企业可以选择商派的微信小程序商城系统,结合导购助手小程序,实现业务在线化,导购在线化,通过微信公众号、企微社群和视频号,开展私…

synchronized和volatile的区别是什么?

synchronized和volatile是Java中的两个关键词,分别用于实现线程同步和线程间的可见性。 synchronized用于实现线程之间的互斥同步,即同一时刻只能有一个线程访问被synchronized修饰的代码块或方法,其他线程需要等待。synchronized确保了线程…

在Android上搭建一个NDK项目

首先New Project,选择Native C,点击Next。 填入项目名称和包名,点击Next。 这里我们选择Cmake默认的C版本。 创建好的项目目录,里面比我们正常的Android项目多了一个cpp目录 打开MainActivity。里面定义了一个jni方法stringFromJN…

SOCKET、TCP、HTTP之间的区别与联系

SOCKET、TCP、HTTP之间的区别与联系 一、 Socket 1、什么是socket2、为什么需要socket3、建立socket连接 二、HTTP(基于TCP) 1、HTTP的概念2、HTTP连接的特点 连接请求:一次连接连接请求:短连接(socket是长连接) 三、TCP/IP协议簇 四、HTTP、Socket…

Linux中shell的运行原理

在Linux中,每次输入命令时,前面都会出现一串字母,我们称之为命令行提示符 实际上,命令行提示符是一种外壳程序 外壳程序的概念: 前面我们提到过,在Linux中,一切皆文件,所谓的命令就…