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.mzph.cn/news/190578.shtml

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

相关文章

1094. 拼车(差分堆排序)

Problem: 1094. 拼车 文章目录 题目思路Review 差分数组定义区间加法减法更新差分数组:为啥这样更新 思路1 Code思路2 Code 题目 车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向) 给定整…

高级前端面试中的三个 “送命题” !!!

原型与原型链 说到原型,就不得不提一下构造函数,首先我们看下面一个简单的例子: function Dog(name,age){this.name name;this.age age; }let dog1 new Dog("哈士奇",3); let dog2 new Dog("泰迪",2);首先创造空的…

机械臂运动规划、抓取末端执行器、抓取开源项目

运动规划 1.1已有抓取点 假设抓取点已检测到。这些方法设计了从机器人手到目标物体抓取点的路径。这里运动表示是关键问题。虽然存在从机器人手到目标抓握点的无限数量的轨迹,但是由于机器人臂的限制,许多区域无法到达。因此,需要对轨迹进行…

python etree.HTML 以及xpath 解析网页的工具

文章目录 导入模块相关语法实战 导入模块 from lxml import etree相关语法 XPath(XML Path Language)是一种用于在XML文档中定位和选择元素的语言。XPath的主要应用领域是在XML文档中进行导航和查询,通常用于在XML中选择节点或节点集合。以…

UiPath学习笔记

文章目录 前言RPA介绍UiPath下载安装组件内容 前言 最近有一个项目的采集调研涉及到了客户端的采集,就取了解了一下RPA和UIPATH,记录一下 RPA介绍 RPA(Robotic Process Automation:机器人处理自动化),是…

pta模拟题(7-15 BCD解密、7-16 数列求和-加强版、7-17 出租、7-18 反向数相加、7-19 一帮一、7-20 连续因子)

7-15 BCD解密 BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制…

JS 实现一键复制文本内容

1、演示&#xff1a; 2、代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>一键复制</title&g…

羊大师分析,鲜羊奶对健康的影响与作用

羊大师分析&#xff0c;鲜羊奶对健康的影响与作用 你是否曾经听到过“羊奶比牛奶更健康”的说法&#xff1f;而鲜羊奶作为最纯正的羊奶形式&#xff0c;其营养价值更是不可小觑。除了拥有传统奶类所包含的营养成分外&#xff0c;鲜羊奶还含有更多人体必需的氨基酸和微量元素&a…

更有效的问卷发布方法与必备问卷工具推荐

问卷怎么发&#xff1f;通过哪些渠道发&#xff1f;怎么发收集的数量更多&#xff1f;怎么获得有效数据&#xff1f;这些是做问卷的调查人员经常会遇到的问题。的确&#xff0c;问卷的发放是否有效不仅会影响到收集数据的体量&#xff0c;更会影响到最终结论的真实性。所以&…

centos7 yum安装mysql5.7

1.获取源 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 2.安装源 yum -y install mysql57-community-release-el7-11.noarch.rpm 3.安装mysql yum -y install mysql-server 4.如果出现下面错误&#xff0c;没有错误就忽略 使用以下命令解决…

数据结构-带头双向循环链表

文章目录 一.头结点二.双链表1双链表的概念与结构2.与单链表相比 三.循环链表1.关于循环链表2.循环链表的优点 四.带头双向循环链表1.带头双向循环链表2.结构图3.实现 五.代码一览 一.头结点 在链表中设置头结点的作用是什么 标识链表:头结点是链表的特殊节点,它的存在能够明确…

Mongodb安装及其使用

1.Linux系统上安装Mongodb 在usr/local文件夹下创建mongo文件夹 下载mongodb包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-6.0.5.tgz解压mongodb tar -zxvf mongodb-linux-x86_64-rhel70-6.0.5.tgz更改文件夹的名字 mv mongodb-linux-x86_64-rh…

RCE绕过

1.[SCTF 2021]rceme 总结下获取disabled_funciton的方式 1.phpinfo() 2.var_dump(ini_get(“disable_functions”)); 3.var_dump(get_cfg_var(“disable_functions”)); 其他的 var_dump(get_cfg_var(“open_basedir”)); var_dump(ini_get_all()); <?php if(isset($_POS…

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

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

B026-MySQL基础

目录 数据库概述数据库概念数据库的由来和发展常见的关系型数据库服务器&#xff08;DBMS&#xff09;SQL概述表的概念 数据库的安装与配置安装启动和连接MySQL启动MySQL服务连接MySQL MySQL图形化管理软件-Navicat数据库安装失败解决方案 MySQL数据库操作数据库操作和存储引擎…

8.ROS的TF坐标变换(二):动态坐标变换、多坐标变换代码讲解(以LIO-SAM为例)

目录 1 ROS的动态坐标变换及代码解释 1.1 什么是ROS的动态坐标变换 1.2 CMakeLists.txt、package.xml基础配置 1.3 发布方代码实现 1.4 接收方代码实现 2 ROS的多坐标变换及代码解释 2.1 什么是ROS的多坐标变换 2.2 发布方代码实现 2.3 接收方代码实现 3 L…

图解系列--功能追加协议,构建Web内容

功能追加协议 1.消除 HTTP 瓶颈的 SPDY 1.1.HTTP 的瓶颈 使用 HTTP 协议探知服务器上是否有内容更新&#xff0c;就必须频繁地从客户端到服务器端进行确认。如果服务器上没有内容更新&#xff0c;那么就会产生徒劳的通信。 若想在现有 Web 实现所需的功能&#xff0c;以下这些…

线程与多线程编程

1. 线程 1.1 概念 线程又可以称为轻量级进程 &#xff0c;在进程的基础上做出了改进。 一个进程在刚刚启动时&#xff0c;做的第一件事就是申请内存和资源&#xff0c;进程需要把依赖的代码和数据&#xff0c;从磁盘加载到内存中这件事是比较耗费时间的&#xff0c;有的业务…

matlab simulink 永磁同步电机PI调速控制

1、内容简介 略 27-可以交流、咨询、答疑 2、内容说明 永磁同步电机调速控制 永磁同步电机PI调速控制 永磁同步电机PI调速控制、PMSM 3、仿真分析 略 4、参考论文 略 链接&#xff1a;https://pan.baidu.com/s/1AAJ_SlHseYpa5HAwMJlk1w 提取码&#xff1a;rvol 路…

科研者的福利!一个集论文、代码、数据集为一体的网站

Papers with Code 是一个总结了机器学习论文及其代码实现的网站。大多数论文都是有GitHub代码的。这个网站最好的地方就是对机器学习做了任务分类&#xff0c;检索对应的模型非常方便。早在18年Paper With Code创立时就轰动一时&#xff0c;仅创立一年就被Facebook收购。 Pape…