Dart语言语法特性简介(1)

来源:互联网 发布:天猫和淘宝的盈利模式 编辑:程序博客网 时间:2024/06/01 10:04

dart是一个新的全栈式语言,主要目标是为了替代js,ts,但是也可以开发app,native的程序。嘛反正现在新语言很多都是全栈的js自己也是所以没什么新奇的,就不多说了。
这一篇主要说说他的一些语法特性

1.强面向对象,和ruby,python类似,所有元素都是对象,和java/c++这些基础数据类型不能当对象来用的相反。(不过java/c++也一直在改进只是因为历史遗留原因肯定没有一个新出的语言那么自然)

大家都清楚面向对象相比过程式编程会有些许的性能损失毕竟计算机本身是面向过程的。
但是看起来未来编程语言的发展趋势都是更快更容易的开发程序,而不是在意细枝末节的性能,不过也不是说性能不重要,只是相比于架构,算法的改善,在语言级别的优化在大多数场合下都是微不足道了(你看现在有人开发一个普通应用会用内联汇编去优化性能吗?但是在几十年前这种做法相当普遍)


2.静态类型,和java/c++类似,静态类型比较适合于开发大型程序,不过这个也是仁者见仁智者见智的说法,很多动态语言例如python的书上都提到说,静态类型根本不能提升多大程序开发中的安全性,同时又牺牲了灵活性。然后很多静态程序语言书上在提到动态语言的时候又会说动态语言不适合构建大型程序,因为很多错误在编译阶段难以捕获。
我个人还是倾向于静态语言做架构,动态语言写一些粘合脚本的。


3.全局方法,全局变量
这个也是很多语言都有的,除了java非常蛋疼的包系统(例如强制类名和文件名一致,然后文件结构也要一致…..),其他许多语言的包系统都要比java灵活很多。例如学过c#的应该对全局变量方法什么的有感觉。

4.嵌套方法,这个也是很多新的语言都有,可以更好的划分程序块,有时候一个方法可能比较复杂,比较长,常见的做法是划分为多个private的子方法,然后去调用。不过基本上这些private的方法只会被一个主方法调用,此时如果与主方法同级不仅逻辑不符,而且还容易被误调用。把这些子方法嵌套进主方法是最好的。


5.没有编译器级别的访问控制符,而只有和python一样需要人去遵守的惯例。例如_开头的变量默认为私有变量。

嘛这个东西我也不知道怎么评价。就拿python来说,虽然在很多ide中都有针对这一点惯例的提示。如果仔细点的话基本上也不会有什么问题。但这个就是把编译器要做的工作依赖到ide了,而且也没法完全阻止误调用。更不用说在有些平台上工作根本没法有好用的ide。

虽然这样调用私有变量是容易了点,,但是私有变量逻辑上就不是给外部直接访问的啊。个人还是不太喜欢这种基于惯例的访问控制模式。


6.内置类型

  1. 数字
  2. 字符串
  3. 布尔
  4. 列表
  5. 哈希表
  6. 符号(不知道咋翻译,原文是symbols,直译是符号但是感觉这个名词太常见了…)

可以看到,dart如同ruby/python等动态语言一样,为两种最常见的数据结构list和map提供了内建支持,这里也可以看到他的定位就是倾向于快速开发。

(可能有人不懂,内建支持的意思不是说有个list,map的库。。意思是支持直接字面量的list和map以及诸多语法糖,从而可以少写很多模板代码。学过python的应该感触比较深)


7.函数作为一等公民,匿名函数,函数作为对象,闭包…
近年来函数式编程的概念真的是越来越热门了,不论是一些之前不太支持的语言,例如java,都为了更好的支持函数式编程,而在java8进行了一次大升级。而且还有一些完全以函数式编程作为卖点的语言,例如scala,Clojure。
最古老的函数式编程语言以及第二古老的编程语言,lisp直到今日也在编程语言界中占有重要的一席之地。
函数式编程对于普通的编程人员来说,可能刚开始比较难于上手,所以很多人把它看成是一种纯粹的智力活动,其实不应该这样想。一些语言正是融入了函数式的概念,才让他的代码可以那么简洁,例如ruby/python。
个人感觉是,整个项目完全由函数式编程主导,对大多数人来说可能吃不消,也不容易维护,但是合适的使用一些函数式编程的概念,可以使代码语句需要表示的意图更加清晰,而且也更容易修改。(例如在ruby/python就很少会出现for对数组的循环,而代之与对数组使用each 然后传入方法)
函数式编程再深入说下去,个人感觉是一种哲学的概念,就如同lisp认为世界只由数据和过程构成一样。
回到dart,函数作为一等公民就是为了更好的在代码中使用函数式编程的思想。
基本上比较新的语言就是不是纯函数式,也是比老旧的编程语言更加注重函数式编程的思想。例如groovy,kotlin,rust


8.函数的可选参数和命名参数
秒杀java/c++蛋疼的函数重载,不解释了。也是一个在新语言中比较广泛采用的特性。

原创粉丝点击