转眼间,来广州快半年了,感觉还不错。广州如死鱼所说的那样,是个包容并且很有活力的城市,习惯了周末煲汤,去天河公园跑跑步,这生活还是挺舒适的,除了比较潮的天气。
最近跟公司闹了点不愉快,在转正时间上,其实不是多大的事,只是心里不舒服罢了,干起活来也没什么激情了,呵呵。当然,手头的工作咱还是要高效率地完成,
做完两个游戏后,现在转到棋牌类,棋牌类游戏核心就两个算法:随机发牌和出牌判断。随机发牌算法,学习了云风的blog上提到的方法,感觉还可以接受;出
牌规则判断,倒是没想象中的复杂,建立牌型的OO模型,一切都很简单了。搞完了之后,时间有点空闲,就想学点新东西,最后选择了Prolog。Yep,非
常地有趣,真正的声明式编程语言。Prolog本质上就是两个东西:规则和事实,由事实和规则出发,Prolog的推理系统将回答你的查询
(query)。有点类似现在流行中的规则引擎的概念,在对效率不是很考虑的场景中,嵌入一个Prolog引擎做规则引擎完全是可以的,java中有个
tuProlog项目,可以关注一下。然后就是一直在读的sicp,延时求值模拟无穷级数实在是相当地cool,大开眼界。这两天一直在理解
continuation这个概念,小有所得。一个表达式的求值可以分为两个阶段:“What to evaluate?”和“What to do
with the value”,“What to do with the
value”就是计算的Continuation。例如,scheme求值下列表达式:
(if (null? x) (quote ()) (cdr x))
先求值表达式(null? x),(null? x)就是“What to evaluate”,当(null?
x)求值后,需要根据这个值来决定是执行(quote ())还是(cdr
x),这个根据值来决定的过程就是Continuation。如果在每次函数调用时,同时传入当前的continuation,那么就完全可以不要堆栈。
call/cc就提供了这样的一个语法糖,call/cc全称就是call-with-current-continuation,要求参数是一个过程,
调用这个过程,并且向这个过程传入当前的continuation(一般称为k,kont,或者Ruby中一般是c,cont),这就是call/cc为
我们做的。call/cc是实现Continuation的方式之一,coroutine/fiber/yield也是实现continuation的方
式。《The Scheme Programming Language》给出的轻量级进程机制的例子比较有趣:
(define lwp-list '())
(define (lwp thunk)
(set! lwp-list (append lwp-list (list thunk))))
(define start
(lambda()
(let ((p (car lwp-list)))
(set! lwp-list (cdr lwp-list))
(p))))
(define pause
(lambda()
(callcc (lambda(k)
(lwp (lambda () (k #f)))
(start)))))
(lwp (lambda () (let f () (display "h") (pause) (f))))
(lwp (lambda () (let f () (display "e") (pause) (f))))
(lwp (lambda () (let f () (display "y") (pause) (f))))
(lwp (lambda () (let f () (display "!") (pause) (f))))
(lwp (lambda () (let f () (newline) (pause) (f))))
(start)
实现了代码级的进程调度。
分享到:
相关推荐
为此,深度学习加速器、图形处理单元(GPU)、现场可编程门阵列(FPGA)和专用集成电路(ASIC)等硬件平台应运而生,它们可以为深度学习工作负载提供必要的计算能力。 此外,本书还将探讨深度学习技术如何影响...
深度学习是机器学习的一个分支,它模拟人脑神经网络的工作方式,构建多层的神经网络结构,如深度神经网络(DNN)、卷积神经网络(CNN)和循环神经网络(RNN),用于图像识别、语音识别和自然语言处理等多种任务。...
在深度学习中,这通常涉及到卷积神经网络(CNN)用于图像识别,循环神经网络(RNN)或长短时记忆网络(LSTM)用于序列数据的识别,以及最近的Transformer模型在自然语言处理中的应用。识别任务的目标是使模型在测试...
机器学习工作原理主要通过两种技术:监督式学习和无监督学习。监督式学习需要一组已知的输入和输出数据,通过训练使模型能够预测未来的数据输出。这种方法通常用于分类(如垃圾邮件检测、肿瘤良恶性预测)和回归(如...
在机器学习、深度学习、自然语言处理以及统计学习方法等领域,Python已经成为不可或缺的工具,因为其简洁的语法和丰富的库支持。...对于想要深入学习这些领域的读者,可以尝试复现作者的工作,以此作为学习的起点。
深度学习的关键技术包括卷积神经网络(CNN)用于图像处理,循环神经网络(RNN)用于序列数据,以及最近大热的生成对抗网络(GAN)用于生成新的数据。 在学习笔记中,可能涵盖了以下主题: 1. 数据预处理:包括数据...
机器学习是近年来最热门的技术之一,已经广泛应用于各个领域,而环境评价工作作为环境保护的重要组成部分,也逐渐引入机器学习技术,以提高环评的准确性和效率。基于机器学习的预测算法模型在环评领域的应用,旨在...
半监督学习是同时使用大量的未标记数据和标记数据,进行模式识别工作。无监督学习是无类别标签的学习,只给定样本的输入,自动从中寻找潜在的类别规则。强化学习是通过学习可以获得最大回报的行为,强化学习可以让 ...
KNN(K-Nearest Neighbors,K最近邻)算法是一种基本且易于理解的分类与回归方法。它的工作原理非常简单:通过测量不同特征值之间的距离来进行预测。 ...- **懒惰学习**:KNN算法通常被认为是一种
在接下来的几十年里,机器学习领域取得了许多重要的进展,包括最近邻算法、决策树、随机森林、深度学习等算法和技术的发展。 机器学习有着广泛的应用场景,如自然语言处理、物体识别和智能驾驶、市场营销和个性化...
但是,最近的研究表明,学习学习收益的分布要比学习其预期价值具有不同的优势,如在不同的RL任务中所见。 从使用传统RL的收益期望到分配RL收益分配的转变,为RL的动力学提供了新见解。 本文基于我们最近的研究RL...
Flash CS3是一款强大的动画制作软件,其工作区的布局和基本操作对于初学者来说至关重要。本教程将详细介绍Flash CS3的工作界面及常用功能,帮助用户快速上手。 首先,打开Flash CS3,用户会看到几个主要区域。在...
操作系统课程设计报告书的核心任务是设计一个虚拟存储区和内存工作区,并实现三种页面置换算法:最佳淘汰算法(OPT)...这有助于提升学生的实践技能和解决问题的能力,为将来在操作系统领域的学习和工作打下坚实基础。
K 最近邻 (KNN) 算法是一种用于解决分类和回归问题的监督式机器学习方法。Evelyn Fix 和 Joseph Hodges 于 1951 年开发了此算法,随后由 Thomas Cover 扩展。本文探讨了 KNN 算法的基本原理、工作原理和实现。 • ...
本次出差学习总结报告PPT课件...此次出差学习《 Global MMOG/LE 》,收获了许多有价值的经验和知识,对供应链管理和物流策划有了更深入的理解,希望在今后的工作中能够更好地应用这些知识和经验,提高自己的职业能力。
- 神经网络与深度学习:模拟人脑神经元工作原理,用于解决复杂分类和回归问题,尤其在图像识别和自然语言处理中有突出表现。 - 聚类算法(如K-Means):无监督学习,将数据自动分为不同组或簇。 - 强化学习:通过...
在接下来的几十年里,机器学习领域取得了许多重要的进展,包括最近邻算法、决策树、随机森林、深度学习等算法和技术的发展。 机器学习有着广泛的应用场景,如自然语言处理、物体识别和智能驾驶、市场营销和个性化...