之前在一直学习的是java语言,众所周知,多年来一直使用Java来作为主要使用的语言,主要是因为它的代码通常可读性很强,对于大型的企业级项目,体现在代码和众多接口中的设计,能良好的反应项目的架构。但是,不得不承认,Java并不是一门纯粹的面向对象语言,static的存在以及基本数据类型的支持,都有悖OO的理念。除此之外,越来越感觉到,使用Java和丰富的资源虽然几乎能开发出任何目的的程序,但其繁琐的代码量,非常让人恼火。
而Scala是一门十分有趣又非常实用的语言,它以JVM为目标环境,将面向对象和函数式编程有机地结合在一起,带来独特的编程体验。它既有动态语言那样的灵活简洁,同时又保留了静态类型检查带来的安全保障和执行效率,加上其强大的抽象能力,既能处理脚本化的临时任务,又能处理高并发场景下的分布式互联网大数据应用,可谓能缩能伸。
下面我们就一个常见的快排算法来对比一下两种语言:
先是java:

 public static void Quick_Sort(int[] arr, int begin, int end){
        if(begin>end)
            return;
        int temp=arr[begin];//temp为基准位
        int i=begin;
        int j=end;
        while(i<j)
        {     while(arr[j]>=temp&&i<j)//右边的总比基准大
            j--;
            while(arr[i]<=temp&&i<j)//左边的总比基准小
            i++;



        if(j>i)
        {
            int x=arr[i];
            arr[i]=arr[j];
            arr[j]=x;
        }

        }
        arr[begin]=arr[i];
        arr[i]=temp;
        Quick_Sort(arr,begin,i-1);
        Quick_Sort(arr,i+1,end);

    }

下面是scala实现:

 def qsort(list: List[Int]):List[Int]=list match {
      case Nil=>Nil
      case ::(pivot,t)=>qsort(t.filter(_<=pivot)) ++ List(pivot) ++ qsort(t.filter(_>pivot))
    }