文章列表
函数概念
开始之前,我将列出一些必要的函数概念,以帮助理解为何 Scala 以这种方式操作和表现。如果您对函数语言 — Haskell、ML 或函数领域的新成员 F# — 比较熟悉,就请看看scala与java的区别吧。
函数语言的名称源于这样一 ...
如果 到目前为止 您一直紧随 Scitter 的开发,就会知道,这个库现在能够利用各种不同的 Twitter API 查看用户的好友、追随者和时间线,以及其他内容。但是,这个库还不具备发布状态更新的能力。在这最后一篇关于 Scitter 的文章 ...
Twitter 迅速占领了 Internet 市场。您肯定知道这个出色的社交网络工具允许订阅者提供关于他们自身以及当前正在执行的任务的简要状态更新。追随者将接收到他们的 “Twitter 提要” 的更新,这与博客将更新生成到博客阅读者的提 ...
Twitter 迅速占领了 Internet 市场。您肯定知道这个出色的社交网络工具允许订阅者提供关于他们自身以及当前正在执行的任务的简要状态更新。追随者将接收到他们的 “Twitter 提要” 的更新,这与博客将更新生成到博客阅读者的提 ...
2003 年,Herb Sutter 在他的文章 “The Free Lunch Is Over” 中揭露了行业中最不可告人的一个小秘密,他明确论证了处理器在速度上的发展已经走到了尽头,并且将由全新的单芯片上的并行 “内核”(虚拟 CPU)所取代。这一发现对编程 ...
Scala 显然是一门有趣的语言,很适合体现语言理论和创新方面的新思想,但最终它要用在 “现实” 环境中,它必须能满足开发人员的某些需求并在 “现实” 环境中有一定的实用性。
了解 Scala 语言的一些核心功能之后,就能认识到 Scala 语言的一些灵活性,并能放心使用 Scala 创建 DSL。现在我们进入实际应用程序使用的环境,看看 Scala 如何适应环境。在本系列的新阶段中,我们将首先讨论大部分 Java™ 应用程序的核心:Servlet API。
servlet 回顾
回忆一下 Servlet 101 课程和教程,servlet 环境的核心实际上就是通过一个套接字(通常是端口 ...
欢迎勇于探索的读者回到我们的系列文章中!本月继续探索 Scala 的语言和库支持,我们将改造一下计算器 DSL 并最终 “完成它”。DSL 本身有点简单 — 一个简单的计算器,目前为止只支持 4 个基本数学运算符。但要记住,我们的目标是创建一些可扩展的、灵活的对象,并且以后可以轻松增强它们以支持新的功能。
继续上次的讨论……
说明一下,目前我们的 DSL 有点零乱。我们有一个抽象语法树(Abstract Syntax Tree ),它由大量 case 类组成……
清单 1. 后端(AST)
package com.tedneward.calcdsl
{
// ...
...
回忆一下我们的英雄所处的困境:在试图创建一个 DSL(这里只不过是一种非常简单的计算器语言)时,他创建了包含可用于该语言的各种选项的树结构:
•二进制加/减/乘/除运算符
•一元反运算符
•数值
它背后的执行引擎知道如何执行那些操作,它甚至有一个显式的优化步骤,以减少获得结果所需的计算。
最后的 代码 是这样的:
清单 1. 计算器 DSL:AST 和解释器
package com.tedneward.calcdsl
{
private[calcdsl] abstract class Expr
private[calcdsl] case class Vari ...
特定于领域的语言
可能您无法(或没有时间)承受来自于您的项目经理给您的压力,那么让我直接了当地说吧:特定于领域的语言无非就是尝试(再一次)将一个应用程序的功能放在它该属于的地方 — 用户的手中。
通过定义一个新的用户可以理解并直接使用的文本语言,程序员成功摆脱了不停地处理 UI 请求和功能增强的麻烦,而且这样还可以使用户能够自己创建脚本以及其他的工具,用来给他们所构建的应用程序创建新的行为。虽然这个例子可能有点冒险(或许会惹来几封抱怨的电子邮件),但我还是要说,DSL 的最成功的例子就是 Microsoft® Office Excel “语言”,用于表达电子表格单元格的各种计算和内容。甚至 ...
系列的过程中我遗漏了 Scala 的语言的一个重要方面:Scala 的包和访问修饰符功能。所以在研究该语言的函数性元素 apply 机制前,我将先介绍包和访问修饰符。
打包
为了有助于隔离代码,使其不会相互冲突,Java™ 代码提供了 p ...
对于学习 Scala 的 Java™ 开发人员来说,对象是一个比较自然、简单的入口点。在 本系列 前几期文章中,我介绍了 Scala 中一些面向对象的编程方法,这些方法实际上与 Java 编程的区别不是很大。我还向您展示了 Scala 如何重新应 ...
近十几年来,面向对象语言设计的要素一直是继承的核心。不支持继承的语言(如 Visual Basic)被嘲讽是 “玩具语言” ,不适合真正的工作。与此同时,支持继承的语言所采用的支持方法五花八门,导致了许多争论。多重继承是否真的必不可少(就像 C++ 的创作者认定的那样),它是否不必要而丑陋的(就像 C# 和 Java 的创作者坚信的那样)?Ruby 和 Scala 是两种较新的语言,采取了多重继承的这种方法 — 正如我在上期介绍 Scala 的特征时所讨论的那样(参见 参考资料)。
关于本系列Ted Neward 将和您一起深入探讨 Scala 编程语言。在这个新的 developerWork ...
著名科学家、研究学者艾萨克.牛顿爵士有这样一句名言:“如果说我看得比别人远一些,那是因为我站在巨人的肩膀上”。作为一名热心的历史和政治学家,我想对这位伟人的名言略加修改:“如果说我看得比别人远一些,那是 ...
迄今为止,在此 系列 中,我们已经讨论了 Scala 对生态环境的保真度,展示了 Scala 如何将众多的 Java 核心对象功能合并在一起。如果 Scala 只是编写对象的另一种方式,那么它不会有任何引人注意的地方,或者说不再那么功能强 ...
写了这么久的理论实战一下吧。欢迎大家一起交流,很多朋友说数据结构很多疑问.那我把自己QQ放这吧,9956164.欢迎大家随时敲门。
数据结构教程 第七课 实验一 线性表的顺序存储实验
本课主题: 实验一线性表的顺序存储实验
教学目的: 掌握顺序表的定义及操作的C语言实现方法
教学重点: 顺序表的操作的C语言实现方法
教学难点: 顺序表的操作的C语言实现方法
实验内容:
利用顺序表完成一个班级的一个学期的所有课程的管理:能够增加、删除、修改学生的成绩记录。
实验要求:
在上机前写出全部源程序。
上一课,举了一个例子,主要实现了一个顺序表的相关操作,现在做个小小的实验,即实现一个 ...