写点什么

关于“时间”的各种编程与 API 设计问题

  • 2019-08-24
  • 本文字数:1271 字

    阅读完需:约 4 分钟

关于“时间”的各种编程与API设计问题

QCon北京2018大会上,贺师俊讲师做了《关于“时间”的各种编程与 API 设计问题》主题演讲,主要内容如下。


演讲简介


我们编程时多少会遇到需要处理“时间”的情况,在各语言平台下通常也会内置时间相关的 API。“时间”作为一个问题领域:第一,非常常见;第二,往往比我们想象的要复杂!因此程序员常会因为轻视它而踩坑。实际上,就连语言和库设计者也不能例外。JavaScript 语言在 1995 年诞生时因为只有十天时间,并且因为管理层要求“像 Java”,所以内建的 Date 直接照搬了 Java 1.0 中 java.util.Date 的设计。然而该 API 却非常糟糕,以至于在 1997 年 Java 1.1 中就被 deprecated 了。不幸的是,因为种种原因,此 API 却一直在 JavaScript 中沿袭了 20 多年至今。这些年以来,在 JavaScript 社区中出现了许多非常优秀的类库和框架,2011 年诞生的 Moment.js 作为一个仅仅专门用于时间处理的库,也忝列其中。然而 Moment.js 至今仍然有一些重大缺陷。另一方面,Java 1.1 之后的 java.util.Calendar 也仍然一直被诟病,从而出现了如 Joda-Time 这样的库,并成为了事实标准。可是 Joda-Time 也不是没有问题。最终直到 2014 年发布的 Java 8,才包含了重新设计的 java.time 包。以 Java 和 JavaScript 为代表的主流工业语言及其社区的历史经验证明,设计一个好的时间 API 远比我们想象的要困难得多。本次分享将以 JavaScript 语言标准新的 Temporal 提案为核心,结合前述历史,探讨“时间”这一领域的各种编程问题和 API 设计问题。


讲师介绍


贺师俊


百姓网 前端工程师


贺师俊,网名 Hax,现就职于百姓网架构部;十多年来一直活跃在 Web 标准、前端开发和 JavaScript 社区,对 HTML 标准有微小的贡献。


Hax 精通 JavaScript,很早就通过 es-discuss 邮件列表参与标准讨论,并给 ECMAScript 标准提交过 issue。Hax 关注和参与了多项 ES 新草案的讨论,写过多个针对新特性的 Babel 转换插件,给 Babel、ESLint 等项目提交过 issue 和 pull request,并是 Atom 编辑器 js-refactor 插件的维护者。Hax 做过大量 JavaScript 相关的分享,包括题为「JavaScript — The World’s Best Programming Language」的演讲。


Hax 对其他编程语言也有广泛的兴趣,机缘巧合下对 Groovy 语言并间接对 Swift 语言的设计有微小的贡献。Hax 也给 PHP 提交过 issue,并撰有「PHP 黑系列」文章。Hax 还创造了 Jedi 语言,对 DSL 的设计和实现略有一点经验。


Hax 是 QCon 的老朋友,五次出任讲师,两次担任出品人并获得「优秀出品人」荣誉,还临时客串过主持人;也经常在其他众多技术活动中担任讲师、嘉宾或主持人,并是「BXT 技术沙龙」的组织者之一。


Hax 毕业于复旦大学,曾在上海交通大学工作,是教育部「中国大学生在线」创始团队成员,任技术负责人;后两次进入盛大,先后参与过盛大盒子与电子书项目;2012 年加入百姓网至今。可在 GitHub 上 @hax,或微博 @johnhax 与他交流。Hax 还是知乎的编程、前端开发、JavaScript、CSS 等话题的「优秀回答者」,可知乎 @贺师俊 向他提问。












完整演讲 PPT 下载链接


https://qcon.infoq.cn/2018/beijing/schedule


2019-08-24 17:172305

评论

发布
暂无评论
发现更多内容

(28DW-S8-Day14) 数据孤岛

mtfelix

28天写作 数据孤岛

LARAVEL SMTP 服务泄露,laravel env暴露

kaer

laravel 信息安全 漏洞 ENV SMTP

《不看后悔》38个JVM精选问答,让你变成专家

Java 架构 面试 JVM虚拟机原理

Flutter 2 来了

SamGo

flutter

正则表达式.01 - 元字符

insight

正则表达式 3月日更

麻木得那么快应不应该——韦伯-费希纳定律

Justin

心理学 28天写作 游戏设计

进程调度算法

鲁米

算法

该死的端口占用!教你用 Shell 脚本一键干掉它!

星安果

Shell 脚本 shell脚本编写 端口 端口占用

5个身份和访问管理的最佳实践

龙归科技

数字身份 身份认证 身份安全 统一身份认证

该不该签竞业协议?

石云升

程序员 话题讨论 28天写作 职场经验 3月日更

《经济学人》2021年3月6日刊精彩文章导读及资源下载

wbliu85

聊聊交易中台系统设计与思考

架构精进之路

中台 七日更

程序员之禅(四)

每天读本书

读书笔记 每天读本书

互联网信贷风险与大数据 风险管理&信贷准入

张老蔫

28天写作

架构大作业1

J

2021年阿里巴巴Java百亿级并发系统设计笔记(全彩版)

Java架构追梦

Java 阿里巴巴 面试 架构师 百亿级并发

两会热词“区块链”,打开传统溯源的一扇大门!

源中瑞-龙先生

区块链 两会

四、查询

Kylin

读书笔记 数据库开发 分布式数据库mongodb 读书总结 3月日更

Spark性能调优-RDD算子调优篇(深度好文,面试常问,建议收藏)

五分钟学大数据

大数据 spark 28天写作 3月日更

Git 常用记录

Leo

git 大前端

区块链电子合同应用平台-助力企业数字化转型

13530558032

区块链药品溯源解决方案-区块链技术监管医药溯源

13530558032

【LeetCode】下一个更大元素 II Java题解

Albert

算法 LeetCode 28天写作

总结近期腾讯+阿里+百度Java岗高频面试题,提问率高达98%,看到这篇文章基本offer稳了

Java架构之路

Java 程序员 架构 面试 编程语言

饿了么刚给我确认了p7的职位,对自己的经历,做一个面试总结。

Java架构之路

Java 程序员 架构 面试 编程语言

需要对未知保持敬畏「Day 14」

道伟

如何写 Go 代码

Rayjun

Go 语言

架构大作业2

J

智慧党建系统开发,智慧组工平台建设

13530558032

【回溯算法】借助最后一道「组合总和」问题来总结一下回溯算法 ...

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

说完列表说字典,说完字典说集合,滚雪球学 Python

梦想橡皮擦

28天写作 3月日更

关于“时间”的各种编程与API设计问题_QCon_贺师俊_InfoQ精选文章