快速业务通道

冒号课堂§4.1:函数范式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
匆匆,若能感受到途中景色带来的感官冲击,便算是不枉此行了。其实,把编程范式类比旅游景点并不十分准确,或许比作当地的风俗文化更确切些。”

句号立刻会意:“景点是具体的,背后的风俗文化是抽象的;编程语言是具体的,背后的编程范式是抽象的。”

“此乃其一。”冒号右手伸出食指,“其二,如果不了解景点的历史文化和风俗人情,仅仅满足于表面的奇观异景,一切很快便会淡忘。比如说,你若不了解圣经文化、不了解文艺复兴史,则欧洲之行至多只是视觉的盛宴,而非文化的洗礼,收获将是有限的,印象将是肤浅的。同样,如果你不了解编程范式,那么眼中的编程语言只是语法、语义、核心库、规范等组成的集合,写出的代码虽能编译、能工作,却会显得生硬、别扭。就像中式英语,语法正确、表达也正确,可就是不正宗、不地道。其症结我们在第一节课中已经提过了,即所谓的语感缺失。”

问号实话实说:“可我还是不明白编程范式如何提高我们的编程语感。”

“那就让我们再说说范式吧。”冒号并不着急,“范式可以粗略理解为模范、模型、模式、风格、流派等等。软件中的范式除了编程范式外,还有架构范式[1]、数据库范式[2]等。比如,对象导向式(Object-Oriented)可以应用于编程、架构和数据库中,分别成为OOP(Object-Oriented Programming)、OOA(Object-Oriented Architecture)和OODB(object-oriented database);类似地,事件驱动式(Event-Driven)可以是一种编程范式,可以是一种架构模型,也可以是一种设计模式。总之,每种范式都代表着一套独特而有效的解决问题的思想和方法。掌握范式对编程语感的提高至少有两层作用:首先,编程语言的语法、语义等都是从编程范式的树根衍生而出的枝叶,把握了这种脉络和节奏,代码才会如音乐舞蹈般韵律有致;其次,每种范式擅长的问题领域不尽相同,只有博闻广识,方可扬长避短,程序才会如行云流水般流畅自然。”

逗号添油加醋:“武功练至化境,一定是博采众长,就像杨过融合了东邪、西毒、南帝、北丐、中神通等各派武功,才能随心所欲地打出黯然销魂掌来。”

提起武侠人物,众人俱是逸兴遄飞,哪能体会到半点黯然消魂之伤?

冒号道:“天下之理,殊途同归。我们停止玄玄之论,用实例来说明吧。谁来介绍一下快速排序法(quicksort)?”

众人飞舞的思绪渐渐收敛,终于由引号作答:“快速排序法的思想是:在列表中找一个基准元素,将所有小于它的元素划归一个子列,置于其前;将所有大于等于它的元素划归另一子列,置于其后。然后递归地对前后两个子列作同样处理,直至最终。”

冒号课堂§4.1:函数范式(3)

时间:2011-06-25 BlogJava xyz98

“很好,让我们用Java来实现一下该算法。”冒号显示出一段代码——

/** 快速排序法的Java实现 */ public class Sorter {    public static <T extends Comparable<? super T>> void qsort(T[] list)    {      qsort(list, 0, list.length - 1);    }    private static <T extends Comparable<? super T>> void qsort(T[] list, int low, int high)    {      if (low >= high) return;      int i = low - 1, j = high + 1;      T pivot = list[low]; // 基准元素      for ( ; ; )      {        do { ++i; } while (list[i].compareTo(pivot) < 0);        do { --j; } while (list[j].compareTo(pivot) > 0);        if (i >= j) break;        // 交换        T tmp = list[i]; list[i] =

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号