当前位置: 首页 > article >正文

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.kler.cn/a/154691.html

相关文章:

  • [Linux]多线程详解
  • 使用Python实现深度学习模型:智能食品配送优化
  • web——sqliabs靶场——第六关——报错注入和布尔盲注
  • 网络原理-网络层和数据链路层
  • Unity图形学之Blend指令
  • Android 项目依赖库无法找到的解决方案
  • vmware系列:【VMware篇】8-vCenter的安装与配置(一)以IP地址安装
  • Eaxyx 让圆球跟随鼠标移动
  • 《功能磁共振多变量模式分析中空间分辨率对解码精度的影响》论文阅读
  • postman打开白屏
  • 目标检测YOLO系列从入门到精通技术详解100篇-【图像处理】图像预处理方法
  • 怎么通过邻接矩阵求图的通路总数和回路总数?
  • SpringSecurity工作原理
  • Spring MVC常用的注解, Controller注解的作用,RequestMapping注解的作用 @ResponseBody注解的作用
  • 制作一个RISC-V的操作系统二-RISC-V ISA介绍
  • ZLMediakit-method ANNOUNCE failed: 401 Unauthorized(ffmpeg、obs推流rtmp到ZLM发现的问题)
  • 利用Python爬虫爬取豆瓣电影排名信息
  • 阶段三:Web开发(如何部署和优化Web应用)
  • 传纸条(算法题)
  • 开关电源的电感选择和布局布线
  • 面试--各种场景问题总结
  • 图论|684.冗余连接 685. 冗余连接 II
  • c语言练习13周(6~10)
  • 汇编语言实现音乐播放器
  • 计算机网络——传输层
  • 实用工具网站合集值得收藏![搜嗖工具箱]