NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

关于“时间”的各种编程与 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:172124

评论

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

自营电商渠道转化率的简单设计思路

boshi

推广

苦修月余,斩获bigo、腾讯offer,面经奉上!

艾小仙

Java 腾讯 面试 腾讯大厂

二、关于大型复杂系统

数列科技杨德华

线上数据被回滚两次我都做了哪些不正确的操作

Gopher指北

MySQL 后端

程序员有必要读研吗?

Java架构师迁哥

Redis 为什么这么快?这才是最完美的回答

Java架构师迁哥

架构师视角 | 分布式缓存如何选择 ?

Java架构师迁哥

系统稳定性建设实践总结

架构精进之路

系统架构 自我思考 系统稳定性

我摊牌了,大厂面试Linux就这5个问题

艾小仙

Java Linux 面试 大厂

区块链防伪溯源平台开发解决方案

t13823115967

区块链+ 区块链产品溯源

架构师训练营第三周学习总结

Geek_xq

分布式搜索引擎Elasticsearch的架构分析

vivo互联网技术

elasticsearch 分布式 分布式搜索引擎

话题讨论 | Vue凭什么成为2020的一匹黑马?

黑马腾云

话题讨论

vivo官方商城架构演进之路

vivo互联网技术

中台 架构演进 服务化

LeetCode题解:45. 跳跃游戏 II,贪心正向查找,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

架构师训练营第十一周命题作业

一马行千里

极客大学架构师训练营 命题作业

DeFi质押挖矿APP系统开发|DeFi质押挖矿软件开发

系统开发

K8s 将弃用 Docker;TypeScript 超越 C++ 成第四大语言

京东科技开发者

程序人生

传销组织的CTO | 法庭上的CTO(4)

赵新龙

CTO 传销 法庭上的CTO

Spock单元测试框架实战指南三 - f esle 多分支场景测试

Java老k

单元测试 spock

福利 | 这些网站有免费代理IP!

前嗅大数据

大数据 代理IP 网站反爬 免费代理ip 封ip

甲方日常 63

句子

工作 随笔杂谈 日常

让战略不再”空虚“的战略描述

Alan

战略思考 战略

大型团队实践敏捷开发管理的挑战与应对

万事ONES

敏捷开发 研发管理 敏捷开发管理 开发管理

计算机网络基础

Minar Kotonoha

node.js 大前端 计算机网络 HTTP

JVM垃圾回收?全面详细安排!

程序员的时光

JVM GC

软件开发中的防呆方法总结

张明云

DevOps 软件开发 技术架构 防呆 模式

蕃茄田宋姝梦:科技赋能时代,儿童在线艺术教育的思考

ZEGO即构

《程序员数学:使用Python进行3D图形,机器学习和仿真》PDF免费下载

计算机与AI

Python 学习 数学

架构师训练营第十一周学习笔记

一马行千里

学习 极客大学架构师训练营

智慧公安大屏可视化决策系统搭建

t13823115967

智慧公安 智慧大屏可视化

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