为什么函数式编程很重要:不一样的白板图

为什么我们要学习函数式编程?为获得更好的软件设计技术!

一天,我们设计了一个流程,来校对款项的收支平衡。下面这张图就是我们在几年前设计出的结果:

命令式编程

那以后我们开始学习函数式编程。函数式编程让我们以数据流的方式思考过程处理:数据进来,做变换,过滤,计算,最终的结果就是输出。不仅软件是这样工作的,每段代码,每个函数,都模型化成数据输入,数据输出。中间没有状态的变换。

按这种方式思考问题使我们得到了这样的流程图:

函数式编程

把程序当成数据管道的思考方式使我们关注结果应该是什么,而不是每一步应该如何做。这种更高层次的思考问题的方式使得我们在系统设计阶段避免陷入细节实现的泥潭中。

不管用什么语言写成解决方案,这样的方式思考能让我们获得下面的好处:

* 功能细化。(黄色的框代表JIRA任务)需求在图上已经显得非常明白:输入什么,输出什么。每项任务都能独立的开发。

* 每个字节都可测试。涉及到数据库的代码已经放到了外面;不仅如此,每个方框都完全由输入输出来定义。对于测试来说这是一种最简单的单元组件。

这样一来,函数式的思考方式对敏捷编程(任务分解),TDD,和程序的可维护性都有好处。代码变的模块化。问题变得更容易分析,因为我们能够知道每一步骤数据的样子。

相互独立,易于测试的组件:这就是函数式的。

新的编程技巧是有趣,但新的画白板的技术却是一件大事。

[本文英文原文链接:Why Functional Matters: Your white board will never be the same ]

恶意程序同时现身苹果与谷歌应用商城

俄罗斯资讯安全厂商卡巴斯基实验室本周四(7月5日)透露有一款名为Find and Call的恶意程序同时登上了苹果的App Store与Google Play移动应用程序商店,该恶意程序会窃取用户的联系人名单并寄送垃圾短信,而这也是App Store上首次出现恶意程序,目前苹果与Google都已经移除该程序。

Find and Call为一可搜索用户联系人名单并拨打电话的俄罗斯语言的程序,卡巴斯基实验室是在收到俄罗斯移动厂商的通知后展开调查。安全专家Denis Maslennikov说明,Find and Call是一支木马程序,可将用户的GPS坐标与其联系人名单上传到远程服务器上,再由远程服务器传送含有该程序下载链接的垃圾短信给这些联系人,而且短信所显示的发送方即为受感染的用户。

此外,Find and Call不仅要求用户输入电话号码及电子邮件账号,其所属的网站也要求用户输入社交网络账号,并提供PayPal充值功能。

Maslennikov说,Google Play上有恶意程序并非什么新鲜事,不过这却是他们首次在App Store上发现恶意程序;此外,即使曾看到许多用户个人数据外泄的事件,这也是首次证实用户的数据遭到外泄并被滥用。

App Store与Google Play都在这条消息曝光的同一天就将Find and Call从应用程序商店中移除。

编译/中文IT资讯站

戴尔收购 Quest Software 获 FTC 批准

北京时间7月24日消息,据国外媒体报道,美国联邦贸易委员会(FTC)周一表示,已经批准戴尔收购Quest Software的协议。今年7月初戴尔曾宣布,将以2.40亿美元收购Quest Software,以扩大其软件业务,减少对正在下滑的PC市场的依赖。

FTC已将该协议列入其和司法部反垄断司能迅速批准的一份名单中。这种名单每周要公布数次。6月在戴尔提出以25.50美元每股提出收购Quest Software的报价,超过了私募基金公司Insight Venture Partners在3月提交的每股23美元报价后,引发了一场竞购战。

近年来戴尔一直在努力使业务多元化,放弃低利润的消费业务,进入利润更高的业务领域,如满足公共部门和医疗保健行业的中小型企业技术需求的领域。

淘宝应用市场即将上线,首批仅含安卓应用

6月20日消息,淘宝网将在6月29日正式推出淘宝应用市场,目前,该产品正在内测,并已收到开发者上传的应用产品。

目前,淘宝应用市场暂用域名为yy.taobao.com,官方页面显示,正式上线后域名将调整为app.taobao.com

从淘宝应用市场相关负责人处获悉,淘宝应用市场第一期只收录安卓应用。有关数据显示,目前手机淘宝累计用户已经过亿,拥有安卓智能机的淘宝用户也已超过6000万。

用户可以通过网站、手机淘宝、淘宝安卓客户端等多个入口进入应用市场浏览下载,也能直接在淘宝主搜索框里搜索并找到相关应用,继而推送到装有淘宝客户端的安卓手机。

该负责人表示,淘宝应用市场上线后,将为所有新发布的应用提供免费展示机会,同时只要开发者有好的活动方案,都能免费申请推广资源联合举办活动。正式运营后,淘宝应用市场将形成以新应用首发、移动电商应用为特色的应用市场。

开发者向淘宝应用市场发布应用的流程图:

联通回应: 宽带上网限制一根网线连多台电脑

昨天,关于一则“北京联通限制宽带接入”的消息在网上风传,令家里拥有笔记本、iPhone及各种平板电脑、手机的用户们大惊失色与不解,纷纷拍出板砖。不过记者采访发现,原来联通限制的是一根网线连多台电脑的行为,在家里用无线路由器WiFi上网的用户不影响使用。

网友大呼不解

最近有网友反映,由于自己家里宽带接入终端数过多,北京联通对其上网行为进行了限制,并弹窗提示需尽快减少终端数至约定水平,称当接入终端数符合约定数 量后,20分钟内上网将恢复。随后有人翻出了北京联通今年宽带大提速时的一项新规:2M及以下速率的宽带同时最多使用2台终端接入互联网;2M以上、 10M以下同时最多使用3台终端;10M以上、20M以下同时最多使用4台终端。这一情况迅速引起了网友的围观,并表示对于运营商这种做法倍感不解。

电信观察家付亮听到这一消息后,也发出了如下的问号:“像我这样俩笔记本、仨手机、一个PAD的,怎么办?”也有网友指出,现在一般家庭怎么也有两台电脑,两部手机,再多几个移动终端也很正常,对于运营商的这种举动很不理解。

无线路由器不受限

北京联通的客服人员告诉记者,公司的确有相关规定,不过情况不是网友们想像的那样。据了解,北京联通规定中所说的“终端”指的是用网线连接的PC终端, 而以无线路由方式接入网络的笔记本电脑、手机、平板等设备,都不包含在内。就是说,这里限制的是通过有线的方式,用一根网线直连多台PC的行为。而据了 解,联通在实际执行这一规定时放宽了条件。比如规定称,2M宽带用户最多用同一个接入账号使用2台终端,而在实际操作中只要不超过三台PC就不会被断网, 以满足一个三口之家的上网需求。

实际上,随着智能手机的普及以及笔记本电脑、平板电脑的流行,普通家庭对于WiFi上网的需求很大。而 多数消费者家里安装的也是无线路由器,在家里搭建了一个小型的WiFi无线上网环境,在这个WiFi网里上网的终端数量并没有什么限制。记者家里使用的无 线路由器,一台台式机、一个笔记本电脑、两台手机都可以同时上网。

不过,因为带宽所限,运营商并不赞同和支持无线路由器的做法,也不提供相关的服务。有运营商人士告诉记者,2M的宽带建立的WiFi一般能支持2至4个终端同时上网,否则超出网络承受,很容易出现无法同时上网、或网速缓慢的情况,影响网络质量。

晨报记者 焦立坤