既然谈到实用编程,就应该不单止了解试试一个新的编程语言那么简单了,最好通过实际的开发项目实例来演示如何编程。心目中已经有了一些设想;想用Scala泛函编程搞一个开源的数据平台应用系统,也就是在云平台PaaS层对上一层后台的数据应用平台。想想当电子商务和云应用真正普及后将会出现一大批没有云应用软件开发能力的用户。将来真正的云服务提供商,单提供虚拟机租赁服务是远不足够的,如果能提供一个具备计算资源自动扩展收缩、支持多种数据库以及一套简单的后台系统配置脚本语言(DSL:Domain Specific Language)的后台数据应用平台就能真正满足这些新用户对电子商务系统开发的需求。他们不需要掌握高深的分布式云应用软件开发技术,只要通过系统配置脚本语言就可以按所租赁虚拟机数量配置分布计算任务以及对各种数据库进行存取操作了。后台系统配置脚本语言DSL隐蔽了复杂的后台运行体系,用户面对的是抽象到Web Service层后面的一个应用层。这样他们可以沿用习惯的前台网页开发技术实现整个云应用软件系统的开发、实施。上面所提到的所谓开源项目是指在一定时间条件成熟后能有业内有共识的朋友一同参与到整个项目的开发。

顺便把这个数据平台应用系统的初步计划透露一下。因为整个开发过程是以Scala泛函编程为主体并且会涉及到许多新的软件、中间件、子功能、开发技术,所以在这里先过一下:数据应用平台是一个寄存在云端的通用数据应用后台系统,与云端虚拟环境紧密结合,以一套定制的API对外开放。数据管理包括了实时交易数据库管理以及批次型大数据HDFS(Hadoop类型)数据管理,通过搜索引擎钻取数据。下面是一些子系统和可能使用的开发技术清单:

1、交易型数据库:MySql(固定格式数据表), MongoDb(自由格式文件类型数据库),PosgreSql(近期走热的开源固定格式数据库)

2、交易型数据库中间件:Slick

3、大数据数据库:Hbase(取其通用)、Accumulo(取其安全)

4、大数据环境:Hadoop、Spark

5、应用平台:Akka,可以跨JVM的分布式应用平台

6、Search:Lucent,可以用Scala调研现成的Lucent java库;修改或增加一些新功能如定制行业字典

7、Web Server: Jetty, 一个功能全面又紧凑简洁的开源软软件

8、Web Service: Spray, 与Akka紧密集成的开发框架

9、前端:Play, 当今运行效率最高的前端网页应用架构

实用的Scala泛函编程的更多相关文章

  1. 怎样学习Scala泛函编程

    确切来说应该是我打算怎么去学习Scala泛函编程.在网上找不到系统化完整的Scala泛函编程学习资料,只好把能找到的一些书籍.博客.演讲稿.论坛问答.技术说明等组织一下,希望能达到学习目的.关于Sca ...

  2. scala泛函编程是怎样被选中的

    现在计算机技术发展现象是:无论硬件技术如何发展都满足不了软件需求:无论处理器变得能跑多快,都无法满足软件对计算能力的需要.按照摩尔定律(Moore's Law)处理器(CPU)每平方面积上包含的半导体 ...

  3. 新一代编程:scala泛函编程技术-唠叨

    准备了半年后,终于决定在这里开始我的scala编程技术学习体验撰写之旅.初步打算在这里把我学习.体验.掌握scala编程的过程与有兴趣的朋友分享.我想,虽然我这不是正式论文或者教课书之类的,但写个开场 ...

  4. 泛函编程(29)-泛函实用结构:Trampoline-不再怕StackOverflow

    泛函编程方式其中一个特点就是普遍地使用递归算法,而且有些地方还无法避免使用递归算法.比如说flatMap就是一种推进式的递归算法,没了它就无法使用for-comprehension,那么泛函编程也就无 ...

  5. 泛函编程(4)-深入Scala函数类

    既然是泛函编程,多了解一下函数自然是免不了的了: 方法(Method)不等于函数(Function) 方法不是函数但可以转化成函数:可以手工转换或者由编译器(compiler)在适当的情况下自动转换. ...

  6. 泛函编程(24)-泛函数据类型-Monad, monadic programming

    在上一节我们介绍了Monad.我们知道Monad是一个高度概括的抽象模型.好像创造Monad的目的是为了抽取各种数据类型的共性组件函数汇集成一套组件库从而避免重复编码.这些能对什么是Monad提供一个 ...

  7. 泛函编程(34)-泛函变量:处理状态转变-ST Monad

    泛函编程的核心模式就是函数组合(compositionality).实现函数组合的必要条件之一就是参与组合的各方程序都必须是纯代码的(pure code).所谓纯代码就是程序中的所有表达式都必须是Re ...

  8. 泛函编程(27)-泛函编程模式-Monad Transformer

    经过了一段时间的学习,我们了解了一系列泛函数据类型.我们知道,在所有编程语言中,数据类型是支持软件编程的基础.同样,泛函数据类型Foldable,Monoid,Functor,Applicative, ...

  9. 泛函编程(5)-数据结构(Functional Data Structures)

    编程即是编制对数据进行运算的过程.特殊的运算必须用特定的数据结构来支持有效运算.如果没有数据结构的支持,我们就只能为每条数据申明一个内存地址了,然后使用这些地址来操作这些数据,也就是我们熟悉的申明变量 ...

随机推荐

  1. 深入入门系列--Data Structure--04树

    终于有机会重新回头学习一下一直困扰自身多年的数据结构了,赶脚棒棒哒.一直以来,对数据结构的掌握基本局限于线性表,稍微对树有一丢丢了解,而对于图那基本上就是不懂(不可否认,很多的考试中回避了图也是原因之 ...

  2. JS原生第二篇 (帅哥)

    1.1 Javascript 作用  1.  网页特效 2. 用户交互 3. 表单验证 Js  就是可以用来控制   结构  和 样式 . 1.2  体验js   认识常用的三个输出语句.  都属于 ...

  3. 如果正确读取SQL Server中的扩展事件?

        SQL Server中使用扩展事件捕捉所需的信息后,可以选择存放的位置.比如说内存或文件中,但无论存在哪里,其本质都是一个大XML.因此在SQL Server中读取该XML就是解析扩展事件结果 ...

  4. 做网站用UTF-8编码还是GB2312编码?

    经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312. 经常我们打开外国网站的时 ...

  5. SQL-基础知识

    SQL Server中的关于时间转换和获取时间的方法 1.获取当前UTC时间 GETUTCDATE()

  6. jsoup简单的爬取网页数据

    /** * Project Name:JavaTest * File Name:BankOfChinaExchangeRate.java * Package Name:com.lee.javatest ...

  7. 深入理解javascript函数系列第二篇——函数参数

    × 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...

  8. hdu3339 In Action(Dijkstra+01背包)

    /* 题意:有 n 个站点(编号1...n),每一个站点都有一个能量值,为了不让这些能量值连接起来,要用 坦克占领这个站点!已知站点的 之间的距离,每个坦克从0点出发到某一个站点,1 unit dis ...

  9. maven -- 学习笔记(三)之搭建nexus私服

    下载和安装nexus (1)官网链接http://www.sonatype.org/nexus/archived/ (直接点击下载链接,发现下载不了,FQ+迅雷就可以下载) (2)解压到指定文件夹,然 ...

  10. Unity3D默认的快捷键

    shift +方向键             向“向方向键前进” Windows系统Unity3D中的快捷键 组合键 键 功能 File 文件 Ctrl   N New Scene 新建场景 Ctrl ...