Java门派的风险
正在看周思博(www.joelonsoftware.com)的新文章。这次是疯狂攻击Java。主要论点是:Java不够难,作为工业语言不错,但作为学校的教学语言,就忒差了。学校应该用指针和递归这类东西把真正的程序员筛选出来。对指针(代表系统底层)和函数编程(代表高层抽象)的学习是脱胎成优秀程序员的必经之路。看这种滔滔雄辩的文章最爽了。摘取一段哈:
不了解泛函编程,你不可能发明MapReduce -- 让Google获得超大规模扩展能力的算法。Map和Reduce这两个术语就是来自Lisp和函数编程。现在看来,MapReduce对每个记得6.001等同课程的人都是显而易见的选择:纯函数编程没有副作用,所以才能让并行处理出奇地容易。恰恰是Google而不是微软发明了MapRequest在某种程度上说明了为什么微软还在努力追上Google的基本搜索功能的时候,Google已经开始需求解决另一个问题:开发天网^H^H^H^H^H^H这个世界上最大规模的并行超级计算机。我觉得微软还不清楚他们到底落后了多少。
还有这一段:除开指针和递归本身的重要性以外,他们的真正价值在于开发大型系统需要某种思维上的灵活性。而这种灵活性得从学习指针和递归得来。开发大型系统也需要一种思维上的天赋,这种天赋可以通过教授指针和递归被筛选出来。指针和递归要求一定的推理能力,抽象思维的能力,和更重要的在不同抽象层次上看待问题的能力。因此,理解指针和递归的能力和当优秀程序员的能力直接相关。
还有这一段:计算机科学是证明(递归),算法(递归),语言(lambda 算子), 操作系统(指针),编译器(lambda 算子) -- 所以底线是不教C和scheme的Java派也没有真正地教你计算机科学。
注解一下哈:6.001是MIT CS入门第一课,用著名经典SICP(早就有中文版了),用scheme(LISP的一种)讲各种编程思想。网上也有授课录像。这个课第一堂就基本讲完Scheme所有语法(当然,lisp本来就是非常简单但深刻的语言),并开始谈论定点理论。第二节课就用短短数行写出了找平方根算法,干净漂亮,让人叹为观止。
天网是终结者里发动核攻击消灭人类的超级计算机,第三集里说天网其实不是一台机器,而是通过互联网变得拥有智能的程序。
^H^H^H^H是在Unix的基本配置下,命令行输入按Backspace出现的效果。也就是说,作者暗示自己本来想说的是天网,但改成后面的说法了。一种技术文章里常用的强调/幽默写法。
Java门派的风险的更多相关文章
- Java学习----有风险的代码(异常)
Exception继承了Throwable,但是它本身是有异常类的父类. RuntimeException:运行时异常 Exception->RuntimeException->NullP ...
- java线程入门知识
为什么需要多线程? . 模型的简化,如某些程序是由多个相对独立任务的运行: . 图形界面的出现,输入.输出的阻塞 . 多核CPU的更好利用 . 异步行为的需要 Java多线程的特性: . 程序的入口m ...
- Java江湖之设计模式
Java江湖之设计模式 ps:最近在学习设计模式,感觉这个是个装逼神器呀,就跟武功一样. 某日,senior同学看见rookie同学在练功. 问,"你练得什么武功?" ...
- 【安全开发】Android安全编码规范
申明:本文非笔者原创,原文转载自:https://github.com/SecurityPaper/SecurityPaper-web/blob/master/_posts/2.SDL%E8%A7%8 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- java实现风险度量
X星系的的防卫体系包含 n 个空间站.这 n 个空间站间有 m 条通信链路,构成通信网. 两个空间站间可能直接通信,也可能通过其它空间站中转. 对于两个站点x和y (x != y), 如果能找到一个站 ...
- Java开发笔记(七)强制类型转换的风险
编码过程中,不但能将数字赋值给某个变量,还能将一个变量赋值给另一个变量.比如下面代码把整型变量changjiang赋值给整型变量longRiver: // 长江的长度为6397千米 int chang ...
- Java并发编程原理与实战七:线程带来的风险
在并发中有两种方式,一是多进程,二是多线程,但是线程相比进程花销更小且能共享资源.但使用多线程同时会带来相应的风险,本文将展开讨论. 一.引言 多线程将会带来几个问题: 1.安全性问题 线程安全性可能 ...
- Java 并发系列之十一:并发线程带来的风险
1. 概述 在并发中有两种方式,一是多进程,二是多线程,但是线程相比进程花销更小且能共享资源. 线程带来的风险: 1. 安全性问题.错误的问题永不发生.竞态条件(顺序敏感). 2. 活跃性问题.正确的 ...
随机推荐
- bzoj2054: 疯狂的馒头(并查集)
每个区间只被覆盖一次,求每个点被哪种区间覆盖或者某个区间是否已经被覆盖过都可以用并查集做. 做法:每个点都指向当前被覆盖区间的右端点+1的位置,某个点的下一个没被覆盖的点是gf(i),同理如果某个区间 ...
- APIO2017
商旅 在广阔的澳大利亚内陆地区长途跋涉后,你孤身一人带着一个背包来到了科巴.你被这个城市发达而美丽的市场所 深深吸引,决定定居于此,做一个商人.科巴有个集市,集市用从1到N的整数编号,集市之间通过M条 ...
- 【agc003E】Sequential operations on Sequence
Portal -->agc003E Description 给你一个数串\(S\),一开始的时候\(S=\{1,2,3,...,n\}\),现在要对其进行\(m\)次操作,每次操作给定一个\(a ...
- 【learning】中国剩余定理
问题描述 "今有物不知其数,三三数之余二,五五数之余三,七七数之余二.问物几何?" emmm这是..最开始这个问题被提出来的描述 其实说白了就是求解一次同余式组 然后还可以..解决 ...
- 框架----Django框架(进阶篇)
一.Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层 ...
- win7右键新建文件夹不见了
http://zhidao.baidu.com/question/175786636169796084.html 看下注册表文件:reg add "HKEY_CLASSES_ROOT\Dir ...
- django2.0 uwsgi nginx
[TOC]# 1.安装pip```sudo apt-get updatesudo apt-get install python-pip```# 2.使用pip 安装virtualenv 和 virtu ...
- Mac 开发装机必备
==============设置=========================== Mac 启动台图标大小调整 1.终端运行命令:10代表一行显示10个图标,几个可以自定义 defaults wr ...
- 对java中继承、接口、组合的思考
1.在c++中有继承和多重继承,而java中只有单继承.继承的好处在于可以复用一些东西,但缺陷在于后续不好扩展.此外,可读性方面继承也不好. 2.java中多了一个接口的概念,而接口的功能和其名字表达 ...
- js_beautifier && css_beautifier for emeditor
// // Unpacker for Dean Edward's p.a.c.k.e.r, a part of javascript beautifier // written by Einar Li ...