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. 活跃性问题.正确的 ...
随机推荐
- 简单的函数——Min_25筛
%%yyb %%zsy 就是实现一下Min-25筛 筛积性函数的操作 首先要得到 $G(M,j)=\sum_{t=j}^{cnt} \sum_{e=1}^{p_t^{e+1}<=M} [\phi ...
- CSU 多校训练第二场 J Pinemi Puzzles
传送门:http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=2279 题意: 代码: #include <set> #incl ...
- 8.Android_UiAutomator 报告查看
一.Android UiAutomator报告查看 1.错误类型 1)断言错误:就是断言这个用例的成功或者失败(AssrtionFailedError) 2)脚本错误:UiObjectNotFound ...
- mongodb replica set 和 nodejs中使用mongoose连接replica
一.mongodb replication 介绍 官网上的第一句话就是Replication is the process of synchronizing data across multiple ...
- Python基础之文件处理、函数、内置函数 (三)
内置函数 一 详细见python文档,请点击 文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = file('文件路径', '模式') 注:python中打开 ...
- SpringCloud学习(6)——Hystrix熔断器
分布式系统面临的问题 复杂的分布式体系结构中的应用程序有数十个依赖关系, 每个依赖关系在某些时刻不可避免的失败. 服务雪崩效应 多个微服务调用的时候, 假设微服务A调用微服务B和微服务C, 微服务B和 ...
- CSS3方法总汇
PS:CSS3的3D和我做研发时的3D不一样他们只能旋转180度 横为X竖为Z高为Y transfrom:2D3D转换 rotareX:绕着X轴旋转 rotareY(-180deg):绕着Y轴旋转- ...
- HTML不常用的表单属性-fieldset
这是代码 这是生成的样子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
- Codeforces 797 F Mice and Holes
http://codeforces.com/problemset/problem/797/F F. Mice and Holes time limit per test 1.5 ...
- HDU6127 简单几何 暴力二分
LINK 题意:给出n个点,每个点有个权值,可以和任意另外一点构成线段,值为权值积.现问过原点的直线中交所有线段的权值和的最大值,注意直线必不经过点. 思路:直线可以将点集分为两侧,此时的权值为两侧点 ...