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

准备了半年后,终于决定在这里开始我的scala编程技术学习体验撰写之旅。初步打算在这里把我学习、体验、掌握scala编程的过程与有兴趣的朋友分享。我想,虽然我这不是正式论文或者教课书之类的,但写个开场白总是好的。以后都是技术性的表述了,还是把握最后机会唠叨一下吧。。。

刚好完成了一个行业云平台项目,决定暂停下来仔细思考一下下一步应该怎么走,是不是要改改方向?在之前的项目里,作为项目开发负责人,为了保证项目的成功率,必须完全依赖公司现有的技术、技能资源,绝不能轻易引进新的技术线路和手段,所以眼睁睁的看着外面的应用和开发技术不断发展却又无能为力。眼看着但又抓不住新事物发展的节奏,心里总是憋屈的慌。现在终于有个机会可以放慢脚步仔细考虑清楚该何去何从了。

外面的世界到底变成什么样了?

短短数年,电子商务俨然已成为了商业社会的主流模式。交易模式的网络化,移动化改变了整个社会人们的生活、工作模式。网络和移动的特质使小微企业及个人可以直接参与交易,造就了电子商务的大面积普及、几何级增长。在这个大潮流下,信息技术的发展方向和实际应用发生了根本的变化,主要体现在数据的产生和使用模式;一是数据产生泛滥,数据飞速膨胀。二是传统信息系统模式已经无法适应现代电子商务需要,必须由封闭的企业内部计算模式转换到社会数据资源共享模式。商务系统也从传统的重交易记录模式变成更重视交易决策过程支持模式。电子商务决策需要从更广泛的信息源头对海量杂乱无章的的各类数据进行精准的分析提取才能形成。大数据技术由此得以发展来应对海量数据的收集、存储、处理、使用。

下一步会发生什么?

电子商务模式造成了信息行业大数据环境。随着电子商务普及化的推进,商业社会对计算能力的要求也变越来越高。计算机软硬件技术的创新发展必须满足电子商务发展的需要。大数据的存储、加工、使用将不是任何大企业甚至政府部门能够独立承担的了。只有像公共电力系统一样,通过高度的资源集中形成强大的计算资源中心,然后再分配给大众终端用户这种形式才能使广大的弱小用户也能拥有与大企业相比拟的强大计算能力、避免重复建设。所以,云计算的发展将是信息技术行业发展的主要方向。电子商务系统对商业社会中的大数据资源将越加依赖。针对各类行业特点的行业信息平台将会逐渐形成,为行业内企业提供交易平台及计算能力。可以预见的是企业内部的服务器将会被迁移到云端,数据库被行业信息平台替代。电子商务交易只需用移动终端连接云端信息平台就可以实现了。当然,一些大型企业的生产、办公这些内部数据闭循环模式的系统还是会保留一段时间,但后台服务器逐渐向云端迁移还是不可避免的。信息系统开发将从我们熟悉的面向企业内部服务器数据库SQL编程变成需要面向云端服务器,针对信息平台用NOSQL编写网络电子商务软件这种新的模式,数据处理应用模式也会从企业内部数据处理转换到信息平台大数据应用方式了。可以肯定,未来IT行业需要的是:分布式数据、高并发处理、并行运算、NOSQL及超大型互动复杂的网络平台编程。可能某天一觉醒来,突然意识到我们所熟悉掌握的技能已经是过去式了,再也无法为我们谋取一份像样的差事了。按现在的发展趋势,这并不算是危言耸听。那么大家为什么还没动起来呢?这也许是所谓的“慢火煮青蛙”吧:大家都对目前的环境很适应,感觉掌握的技能足够应付,干嘛杞人忧天;而那些行业领军企业也没有充足的投入准备对正在运行中的产品进行升级替换,甚至推倒重来。待到电子商务真正发展普及全民皆商的那一天,后果将肯定是可悲的。

我们该怎么应对?

现在谁也无法确定将来会怎样。但考虑的长远些总是有好处的。如果抱着这种想法,那么在有条件的情况下升级一下自己的技能总是值得的。 我将在下面发表的博客中把我是怎样筹划技术选型、学习掌握、实际应用整个过程和大家分享。

时间: 2024-10-13 06:20:51

新一代编程:scala泛函编程技术-唠叨的相关文章

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

既然是泛函编程,多了解一下函数自然是免不了的了: 方法(Method)不等于函数(Function) 方法不是函数但可以转化成函数:可以手工转换或者由编译器(compiler)在适当的情况下自动转换.反向转换则不然:函数是无法转换到方法的.先看看下面的例子: 1 scala> def aMethod(x: Int): Int = x + 10 2 aMethod: (x: Int)Int 3 4 scala> val aFunction = (x: Int) => x + 10 5 aF

泛函编程(6)-数据结构-List基础

List是一种最普通的泛函数据结构,比较直观,有良好的示范基础.List就像一个管子,里面可以装载一长条任何类型的东西.如需要对管子里的东西进行处理,则必须在管子内按直线顺序一个一个的来,这符合泛函编程的风格.与其它的泛函数据结构设计思路一样,设计List时先考虑List的两种状态:空或不为空两种类型.这两种类型可以用case class 来表现: 1 trait List[+A] {} 2 case class Cons[+A](head: A, tail: List[A]) extends

Scala 深入浅出实战经典 第67讲:Scala并发编程匿名Actor、消息传递、偏函数解析

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2土豆:http://www.tudou.com/programs/view/LwsfuGIsWEk/优酷:http://v.youku.com/v_show/id_

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

泛函编程方式其中一个特点就是普遍地使用递归算法,而且有些地方还无法避免使用递归算法.比如说flatMap就是一种推进式的递归算法,没了它就无法使用for-comprehension,那么泛函编程也就无法被称为Monadic Programming了.虽然递归算法能使代码更简洁易明,但同时又以占用堆栈(stack)方式运作.堆栈是软件程序有限资源,所以在使用递归算法对大型数据源进行运算时系统往往会出现StackOverflow错误.如果不想办法解决递归算法带来的StackOverflow问题,泛函

泛函编程(21)-泛函数据类型-Monoid

Monoid是数学范畴理论(category theory)中的一个特殊范畴(category).不过我并没有打算花时间从范畴理论的角度去介绍Monoid,而是希望从一个程序员的角度去分析Monoid以及它在泛函编程里的作用.从这个思路出发我们很自然得出Monoid就是一种数据类型,或者是一种在泛函编程过程中经常会遇到的数据类型:当我们针对List或者loop进行一个数值的积累操作时我们就会使用到Monoid.实际上Monoid就是List[A] => A的抽象模型.好了,我们就不要越描越黑了吧

泛函编程(9)-异常处理-Option

Option是一种新的数据类型.形象的来描述:Option就是一种特殊的List,都是把数据放在一个管子里:然后在管子内部对数据进行各种操作.所以Option的数据操作与List很相似.不同的是Option的管子内最多只能存放一个元素,在这个方面Option的数据操作就比List简单的多,因为使用者不必理会数据元素的位置.顺序.Option只有两种状态:包含一个任何类型的元素或者为空.或者这样讲:一个Option实例包含 0 或 1 个元素:None代表为空,Some(x)代表包含一个任意类型的

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

经过了一段时间的学习,我们了解了一系列泛函数据类型.我们知道,在所有编程语言中,数据类型是支持软件编程的基础.同样,泛函数据类型Foldable,Monoid,Functor,Applicative,Traversable,Monad也是我们将来进入实际泛函编程的必需.在前面对这些数据类型的探讨中我们发现: 1.Monoid的主要用途是在进行折叠(Foldable)算法时对可折叠结构内元素进行函数施用(function application). 2.Functor可以对任何高阶数据类型F[_]

泛函编程(11)-延后计算-lazy evaluation

延后计算(lazy evaluation)是指将一个表达式的值计算向后拖延直到这个表达式真正被使用的时候.在讨论lazy-evaluation之前,先对泛函编程中比较特别的一个语言属性”计算时机“(strict-ness)做些介绍.strict-ness是指系统对一个表达式计算值的时间点模式:即时计算的(strict),或者延后计算的(non-strict or lazy).non-strict或者lazy的意思是在使用一个表达式时才对它进行计值.用个简单直观的例子说明吧: 1 def lazy

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

编程即是编制对数据进行运算的过程.特殊的运算必须用特定的数据结构来支持有效运算.如果没有数据结构的支持,我们就只能为每条数据申明一个内存地址了,然后使用这些地址来操作这些数据,也就是我们熟悉的申明变量再对变量进行读写这个过程了.试想想如果没有数据结构,那我们要申明多少个变量呢.所以说,数据结构是任何编程不可缺少的元素. 泛函编程使用泛函数据结构(Functional Data Structure)来支持泛函程序.泛函数据结构的特点是”不可变特性“(Immutability), 是泛函编程中函数组