《编程导论(Java)》道&理
文章平均质量分 80
yqj2065
《编程导论(Java)》作者
展开
-
函数式编程之根-拉姆达运算/演算(λ-calculus)
学习函数式编程的大图(big map)/鸟瞰图原创 2016-05-08 14:38:26 · 12232 阅读 · 0 评论 -
一切皆对象,X
柏拉图(Plato)原则的第一个批判目标:一切皆对象。原创 2012-12-17 00:25:42 · 1850 阅读 · 0 评论 -
1.3.3 什么是好莱坞法则
好莱坞法则:请上层模块(不限于你),不要轮询/骚扰我,我通知你。原创 2016-06-25 12:42:29 · 3077 阅读 · 1 评论 -
别了,DIP、IoC
参考 什么是好莱坞原则原创 2013-01-25 14:50:43 · 2739 阅读 · 1 评论 -
命令式编程范式简介
命令编程范式的核心观念和观念范式:以机器的运作方式看待一切。原创 2016-10-16 23:35:59 · 1536 阅读 · 0 评论 -
漫谈顺序、分支和循环
顺序(sequencing),分支/选择(alternation)和循环(iteration)这三种流程结构就足以表达所有程序的本质。三种流程结构如同万花筒中的彩纸,构成无穷无尽极富变化的程序。原创 2021-03-03 20:25:45 · 2761 阅读 · 2 评论 -
编程范式[paradigm]
编程范式也许是学习任何一门编程语言时要理解的最重要的术语。原创 2005-02-28 23:57:00 · 6019 阅读 · 0 评论 -
0.3.1 一切皆概念/类型
本文介绍柏拉图原则。1.由来面向对象编程范式的核心观念是:以概念/类型建模一切。从编程的问题域(problem domain)中抽象/提取各种概念,符合人们的心智模型,而所有的概念被映射为解域中的类型。面向对象编程范式的思考单元,(毕竟,基于类的语言是主流)是概念/类型,而不是实例化的对象。只有喜欢进程的人、现实的人、生活在内存中的人,才喜欢说面向对象。编写源代码的人/神,喜欢...原创 2017-05-22 17:03:08 · 548 阅读 · 0 评论 -
《编程导论(Java)·12.1基本位运算》
能抓住和定位单个原子的机器将能制造任何东西…当然,一次一原子地造个大物体会很慢。——Eric Drexler《Engines of Creation: The Coming Eraof Nanotechnology》位运算(Bitwise operations)在bit层面上对操作数进行按位操作。集成电路的逻辑门(logic gate)能够在bit上执行与、或、异、反操作,因而位运原创 2015-07-09 07:29:47 · 1508 阅读 · 0 评论 -
[SICP]数据意味着什么?
What Is Meant by Data?何谓数据、数据意味着什么?《SICP•2.1 数据抽象简介·2.1.3数据意味着什么?》,yqj2065表示没有看懂,。一本大学入门的教材,有什么看不懂的?其实,我真的不知道作者为什么要这样写!1.数据 Vs. 函数从汇编语言开始,我们知道“正是这种简单的代码“MOV AX,1234H”刻画出程序的最为底层的构造单元:指令和数据”。按...原创 2016-06-19 16:01:33 · 881 阅读 · 0 评论 -
《编程导论(Java) ·10.3递归思维》
递归基础原创 2014-10-04 00:32:03 · 3036 阅读 · 0 评论 -
Java8对《编程导论(Java)》的影响
What's New in Java 8原创 2015-07-11 16:42:34 · 913 阅读 · 0 评论 -
关于垃圾回收
垃圾回收器(Garbage collectors、GC),我们所需要知道的:GC是软件工程工具。1958年John McCarthy 发明Lisp语言时,为了解决堆的手工管理问题而首创了垃圾回收器。它杜绝了内存泄漏和悬挂引用。注:Java与C++的泄漏是两个概念,C++如同遗失了存折(假设不能够挂失),Java如同在家里收藏了一大堆不用的存折(有人有这个怪癖,咋整)。没有GC支持的语言原创 2016-07-08 16:58:00 · 616 阅读 · 0 评论 -
《编程导论(Java)·1.1.2 颠倒的世界(柏拉图法则)》
面向对象范式的第一原则,yqj2065称之为柏拉图法则原创 2015-07-01 05:06:42 · 1869 阅读 · 0 评论 -
[SICP]函数定义
接学习函数式编程,从了解变量开始(Scheme之变量)以丘奇的λ演算为根基的函数式语言,函数是重要的程序单元。例如λx.( x+1),即“对于参数x,(计算)x+1”。Scheme中,使用lambda表达式定义函数,重点为函数的形式参数列表(formal arguments list)和函数体。格式为:(lambda ( arguments ) (body))1. la...原创 2016-05-07 17:40:10 · 1018 阅读 · 0 评论 -
使用Java API文档
Java API文档原创 2016-10-22 15:28:24 · 2055 阅读 · 0 评论 -
实参求值的副作用
作为函数的调用方,你自己愿意在函数调用表达式中产生副作用,这个参数化机制管不了。原创 2016-06-26 16:58:24 · 538 阅读 · 0 评论 -
《编程导论(Java)·3.3.2 按值传递语义》
Java语言与C语言一样,采用唯一的参数传递方式:按值传递。原创 2015-07-04 01:37:39 · 1723 阅读 · 1 评论 -
《编程导论(Java)·前言》
谢谢你翻阅这本书。在2005年出版《Java程序设计》(宋中山,严千钧编著,清华大学出版社)时,有一个目标没有完成:以Java作为大学本科的入门级语言构建教学体系。虽然早早就着手进行相关研究,这么多年过去了,其难度超出我的预计。翻阅本书,你很容易发现它与传统的《Xxx程序设计》之类的书籍有太多的不同。这些不同,并非我刻意为之,而是这些年来本书的结构经过不断地重构而自然形成的。时间的积淀,对于本原创 2012-12-16 23:26:57 · 2351 阅读 · 0 评论 -
《编程导论(Java)·2.1.2 啊,我看到了多态》-什么是多态(polymorphism)
杀猪杀屁股,各有各的刀法原创 2014-07-02 11:12:08 · 3484 阅读 · 3 评论 -
ADT、C和Java
先谈谈《数据结构》课程与实现语言的事。原创 2014-10-02 14:05:51 · 2460 阅读 · 0 评论 -
《编程导论(Java)·9.3.1回调·3》回调的实现
Java8 编程导论 匿名类 λ表达式原创 2014-06-16 21:52:22 · 2790 阅读 · 0 评论 -
Java异常的概念
异常的概念程序运行的环境是复杂的,程序在执行过程中可能遇到各种错误。如程序打开的文件不存在、网络连接遇到中断、除零操作、操作数越界等等。方法执行中遇到意外/例外/异常的情况/条件,称为异常(事件)。意外情况可能是不恰当的外部环境,可能是方法调用者传递了不恰当的实参——即错误环境或非法参数。作为方法的设计者,通常希望方法被调用时满足其前置条件,但是,不能够因为调用者没有遵守契约——如在网络服原创 2016-06-09 02:06:17 · 2454 阅读 · 0 评论 -
《编程导论(Java) ·10.3》补充:递归的优化
递归强大、优雅、易实现...问题是效率和栈溢出(java.lang.StackOverflowError)。为什么Scheme不需要迭代结构如while、for呢?在Java编译器不直接支持尾调用优化 tail-call optimization (TCO)的情况下,如何使用lambda表达式的延迟计算或者直接使用流来优化递归?递归会导致Java中迭代的消失吗?原创 2016-06-21 12:11:51 · 2004 阅读 · 0 评论 -
《编程导论(Java)·2.1.1里氏替换原则》什么是LSP
你可以不知道继承、多态,但是必须知道里氏替换原则(Liskov SubstitutionPrinciple、LSP)。原创 2014-09-10 17:30:08 · 2538 阅读 · 0 评论 -
《编程导论(Java)·6.1封装性》-什么是封装
Parnas原则-类的接口-封装原创 2015-09-05 09:46:34 · 1855 阅读 · 0 评论 -
《编程导论(Java)》Home
严千钧 著.编程导论(Java).北京:清华大学出版社。2013.4原创 2012-12-09 02:00:28 · 5944 阅读 · 1 评论 -
1.1 回调机制(Call back)
一门编程语言,使得下层模块/库可以调用(或执行)上层模块定义的代码的机制,即为回调(call back,一个动词词组)机制。而上层模块所定义的、被(下层模块)调用的代码,则被称为回调函数 (简称回调、callback,一个名词)。原创 2016-10-28 18:04:23 · 11712 阅读 · 8 评论 -
异步回调
从下层获得数据,可以是同步的,也可以是异步的。原创 2016-11-07 21:25:36 · 567 阅读 · 0 评论 -
面向对象的最重要的概念
如果选择一个面向对象的最重要的概念,你认为是( )原创 2016-12-31 14:32:06 · 773 阅读 · 0 评论 -
《编程导论(Java)2.3.1》-重量过载 == 重载
Java重载(Method overloading)的定义、用途和匹配算法原创 2013-05-23 18:11:46 · 1711 阅读 · 2 评论 -
打包后的工具类 God+BlueJ+ClassLoader
工具类 God为什么NetBeans环境可以但是BlueJ中不行?原创 2017-07-06 22:15:47 · 1440 阅读 · 1 评论 -
什么是开放封闭原则(The Open-Closed Principle 、OCP)
我通常强调抽象依赖原则:为了应对需求变化,代码中要尽可能地使用(依赖)抽象类型,而非具体类。而不把开放封闭原则(The Open-Closed Principle 、OCP)作为重点加以介绍,主要是因为开放封闭原则涉及的议题较多,容易引起一些误解。★Software entities(classes ,modules,functions,,etc.) should be open for ex...原创 2016-12-07 18:01:36 · 4028 阅读 · 1 评论 -
《编程导论(Java)·2.3.2 方法同名问题》
方法名的作用域是整个类。方法同名问题包括:两个无关类中方法同名父子类中方法同名无关重载(包括一个类中的重载)改写隐藏其他语言中的同名两个无关类中方法同名,因为它们属于各自的作用域,所以它们和平共处。但是,静态导入(import static)会打破和平。【另外参考:动态类型语言中的duck typing】父子类中方法同名,(1 )父类的pri原创 2016-06-25 16:47:51 · 801 阅读 · 0 评论 -
编程类课程的问题
本文已经纳入编程语言应该学些什么,作为引子。在讲授一门语言时,应该介绍什么呢?我认为,简单地说,三大抽象(如果是面向对象的语言)+其编程范式。我国绝大多数高校,是从C语言教学开始的。从数据抽象、行为抽象的角度看,C语言并不是合适的入门级编程语言(后面再解释)。现行教学体系中,编程类课程有一个存在很久的问题:语法派的教学。教学方式上,很多人不是在讲授如何编程,而是在讲一门语言的语法。以谭浩...原创 2018-01-18 19:43:08 · 625 阅读 · 1 评论 -
编程宗派的融合
每一门编程语言,都有一群粉丝和一些黑子; 争论语言的好坏,可能导致网络互喷大战。更大规模的争论,则发生在编程范式之间。比如“函数式编程”(FP)Vs.“面向对象编程”(OOP),谁更好?范式、编程范式,也是yqj2065非常关心的问题。我喜欢看网络互喷大战,热闹谁不喜欢啊。但是,我不喜欢其中出现的调和派——“语言只是解决问题的工具”等等。这些调和派说的,都是没有自己观点的“真理”,其实是废话(原创 2016-07-09 11:26:30 · 760 阅读 · 1 评论 -
什么是面向对象编程范式
面向对象编程范式是以人们熟悉的、习惯的现实世界和思维方式为隐喻(metaphor),以概念/类型或其实例化的对象为思考单元,进行程序组织的编程范式。原创 2013-01-14 23:04:52 · 8103 阅读 · 1 评论 -
侃侃Thinking In Java
跟yqj2065看《Thinking In Java》原创 2014-07-05 20:36:31 · 1718 阅读 · 0 评论 -
按值传递的意义
按值传递的意义,使得函数对形参的赋值,不对外界造成副作用。原创 2017-01-15 16:11:48 · 837 阅读 · 2 评论 -
《编程导论(Java)·0.2.2 操作符和操作数》first-class
程序的最为底层的构造单元:指令和数据。本文对《编程导论(Java)·0.2.2 操作符和操作数》进行扩展。原创 2016-10-23 18:09:54 · 1288 阅读 · 0 评论