Scalaz(0) - 写在前面

  面向对象编程范畴(OOP)从80年代C++到90年代java的兴起已经经历了几十年的高潮,是不是已经发展到了尽头,该是函数式编程(FP)开始兴旺发达的时候了吧。这样说似乎心眼儿有点坏,可能会得罪当今大多数的编程人员。不过计算机硬件技术的发展往往会催生新的编程技术,这倒是无可反驳的现象。当今世界上计算机行业中大数据、电子商务、多核CPU,高并发网络的普及使得C++,java这些OOP范畴的编程语言显得那么地不尽人意,函数式编程范畴的编程语言将成为主流,这应该是句大实话了吧。

  说到函数式编程(FP)我们常常会联想到以下几个方面:

1、不可变性 - Immutability

2、函数既值 - Function as value

3、无副作用 - No side effects

这几样特性可以很好地解决多核CPU、多线程、高并发问题。

scala是个OOP和FP混合范畴的编程语言。这是因为考虑到那么许多从OOP世界过来的编程人员可以尽快上手,而且有许多问题可能用OOP方式能得到更好的解决。但重要的是在使用scala编程中到底以OOP还是FP为主。如果我们采用scala的FP为主的话,scala标准库(sdandard library)中的数据类型和函数组件就显得不足够应付,我们必须在用scala FP开发软件前准备好一套较为完整的函数组件库(combinator library)。幸运的是我们现在有了scalaz,它使我们在泛函编程的道路上节省了一大段路程。

  scalaz是一套用scala语言编写的函数库。scalaz为用户提供了大量的数据类型和组件函数来支持函数式编程。实际上scalaz的代码贡献者们是受到了纯函数式编程语言haskell的启发,把haskell中的数据类型、结构、函数组件在scalaz中用scala进行了重新实现。既然我们打算采用scala的FP,我们可能必须把scalaz作为基础组件库来使用,那么我们必须首先了解scalaz的库结构、里面各种数据类型和组件函数、掌握它们的使用方式以及应用模式。

  当然,在学习和介绍scalaz的过程中我们还可以更多了解scala的函数式编程模式以及它所著名的贴切简洁的表现形式。

让我们期待这个系列的scalaz讨论能真正的把我们带入函数式编程范畴的世界。。。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT笔记

聊聊JAVA中 String类为什么不可变

前言 "我的风格比较偏传统和经典" 小明说,"我们在打扮自己的问题上还是蛮冒险的...我觉得当你是只狗的时候,穿什么都hold的住!" ? 哈哈哈,脱离单身狗快...

40719
来自专栏web前端教室

抽象是啥?就是一群人的特征;js中的call是啥?就是我想用你家的电饭锅

今天临时有事,下午没有上课。 上午在讲node的stream的时候,提到Stream是一个抽象的接口。这个抽象该怎么描述呢?我是按我自己的理解来说的,虽然并不严...

18410
来自专栏Java Web

秋招提前批小结(CVTE一面挂、阿里三面挂)

1.自我介绍 2.有没有做过JavaWeb相关的项目?你觉得难点在哪里呢? 3.你这个博客系统有没有加权限系统?如果被拦截封包获取了账号密码怎么办?(没加,...

1991
来自专栏海纳周报

如何学习Java

不要被什么科班出身之类的说法吓坏了。虽然我是科班出身,但我始终觉得,只要你肯努力,这里面并没有什么无法逾越的鸿沟,最重要的是不要好高骛远,也不要急于求成。学习和...

3496
来自专栏高性能服务器开发

从“成都-go-戒炸鸡”的面试题开始说起

今天晚上“高性能服务器开发”QQ群(群号:49114021,有兴趣的读者可以加一下)里面一名叫“成都-go-戒炸鸡”的群友提出了他最近面试的一些面试题,面试题内...

753
来自专栏企鹅号快讯

编程为什么入门首选C语言呢

为什么入门首选C语言呢 C语言除了能让我们了编程的大门,也让我们了解到程序的运行原理,和计算机底层是如何交互的,这些底层的知识决定了你的高度,也决定了你的未来的...

3296
来自专栏程序员互动联盟

【基础编程】侃侃数据结构与算法-扯扯概念

? 为啥扯淡,因为我们开发人员很少用到它,目前流行的android开发有数据结构么?没有,至少你在用api的时候基本上是看不见的。c++有在STL基本容器中s...

36613
来自专栏程序人生 阅读快乐

Java编程思想-第4版

本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性...

512
来自专栏牛客网

今日头条Android开发岗实习生面试

实习僧上投递的简历,6.25下午投递,当天被查看,6.26上午收到面试邀请,约定面试时间7.4  14:00

1741
来自专栏牛客网

网易内推(C++/C研发)offer之路

      看到大家都在牛客上写面经,我也来凑一下热闹,本人是一所普通高校的研究生(非211,985高校),自动化专业(非计算机)。

822

扫码关注云+社区