BayHac 2017!

BayHac 2017!

原文:https://medium.com/hackernoon/bayhac-2017-5ae29c196cd0

上周末,我大部分时间都在 BayHac,Bay Area Haskell Hackathon!它在旧金山的总部举行。我期待这个活动已经很久了,我没有失望。我玩得很开心,遇到了很多聪明有趣的人。我还第一次在一个活动上发言,这很有趣。

该活动有两个主要部分。首先,有一个紧凑的发言者日程,谈论广泛的主题。讲座的范围从一些基本的栈用法一直到一些令人大开眼界的范畴理论。第二,几个开源维护者在他们的项目上协调了一些黑客行为。

现在,考虑到这次活动是一次“黑客马拉松”,我也许应该比以前更关注第二部分。也就是说,一连串引人入胜的话题让会谈变得困难。我在最后做了一点,但我将从我对会谈的观察开始。有几个主题很突出。我的许多文章和帖子试图强调其中的一些主题。但是看到这些具体的例子会有很大的帮助。

语言安全

第一个主题是哈斯克尔的安全作为一种语言。本次活动的第一个发言人是 Greg Horn,他讨论了他在 Kittyhawk 的工作。他一直在哈斯克尔为小型飞机开发飞行控制系统。在处理高空飞行的物体时,不会有太大的误差。一个涉及任何种类的崩溃的小错误都可能是非常昂贵的。这是他使用 Haskell 的很大一部分动机。

正如我经常对 Haskell 强调的那样,他相信自己可以编写和重构 Haskell 代码,而不会破坏任何东西。此外,甚至还有编译时保证,其他人不能破坏的东西。他的代码还包括将 Haskell 代码编译成 C 语言,以便在嵌入式系统上运行。但是他设法使他的大部分代码变得纯净。因此,生成的 C 代码是排除了许多不安全活动的子集。

不用说,看到 Haskell 被用在这么酷的应用程序上是很酷的。更酷的是知道它不仅仅是为了使用 Haskell 而被使用。有真正的语言级别的概念来区分 Haskell,使它更适合某些任务。

表现力和简单性

另一个谈话来自吉洪·杰尔维斯。他讨论了他优化 Target 供应链的工作。他的工作以解决一些涉及非确定性概率的迷人的数学问题而闻名。他成功地用单子表达了复杂的概率数学。最终代码的简单性令人难以置信。

但另一个更平淡无奇的问题也给我留下了深刻印象,它真正展示了哈斯克尔更简单的想法的力量。目标的数据库对他们的物品有一个奇怪的识别模式。一个对象可能有三个不同的标识符。在动态类型的语言中,你可能会坚持对它们都使用字符串。让不同的标识符保持一致是一件非常痛苦的事情。你很可能在某个时候用错了。追踪臭虫几乎是不可能的。即使您创建了包装器对象,您仍然可能无法获得编译时保证。开发新手很可能会出现不正确的用法。

Haskell 用新类型避免了这一点。我们可以简单地将每种类型的 ID 包装成不同的类型。这为我们提供了编译时保证,我们不会比较不同的 ID 类型。这个例子坚定了我的信念,即使是哈斯克尔的简单概念也能给你一些大优势

前端哈斯克尔的崛起

泰特·斯缇格曼、格雷格·黑尔和道格·比尔兹利(曾在《周一早晨哈斯克尔》中出演)组成的塔克三人组。)都对 Haskell 中与前端 web 开发相关的各种话题进行了有趣的演讲。Luite 讨论了 GHCJS 的一些复杂性。道格分享了他在使用反射玻璃钢过程中遇到的一些问题,以及他是如何解决这些问题的。我没有机会听太多 Greg 的演讲(尽管它们很快就会被上传到网上)。但是我从标题中推断,它展示了当我们使用 Haskell 全栈并在任何地方使用相同类型时,我们的生活是多么美好和容易!

全栈 Haskell 应用已经存在一段时间了。但是我对我在前端社区看到的进步感到非常鼓舞,尤其是在 FRP 方面。似乎有很多新的想法和解决方案。而且他们不断变得越来越好。我祈祷 Haskell 很快会被广泛认为是全栈 web 语言的有力竞争者。

分解复合体

哈斯克尔有很多复杂的想法。但是几位发言人做了很好的工作,将它们分解并展示了具体的例子。有几个讲座完成了一些范畴理论的概念。Julie moron uki(Haskell 书的合著者)讨论了幺半群、半群以及它们与布尔代数的联系。罗纳·比雅纳松(这本 Scala 书籍的合著者)讲述了一些关于附加语的细节,并展示了它们有多普遍。

与此同时,Jon Wiegley 和 Sandy Maguire 解决了几个在我的学习清单上很重要的概念:透镜和自由单子。我以前绝对尝试过学习镜片。但是除了玩“猴子看,猴子做”和从代码库中复制其他示例之外,我仍然没有什么能力。但是现在,它可能终于被点击了。我们走着瞧。我是费曼技术的坚定信徒。所以你可能很快就会看到我写的关于镜片的博客。

宝宝的第一次说话!

除了这些疯狂聪明的人,BayHac 还让我做了一个演讲!我介绍了奇妙的仆人图书馆。在我编写的所有语言中,它是我见过的构建甚至调用 API 的最佳工具。您首先将您的 API 描述为一个类型。然后编写服务器端处理程序。一旦你做到了这一点,Servant 可以为你生成许多其他代码。你将得到像客户端功能和文档这样几乎现成的东西。一旦发布,我会链接到演示视频。但与此同时,你可以查看我在演示中使用的幻灯片和代码样本。他们应该给你一个像样的仆人图书馆的味道,这样你就可以开始了!

张量流和一些黑客技术

在这中间,我设法做了一些接近“黑客”的事情。在之前列出的项目中,对我来说最突出的是 Haskell 张量流。最近我一直在关注 Haskell 语言。这意味着我没有太多机会专注于其他一些技能,特别是机器学习和人工智能。因此,我非常兴奋能够更多地了解这个库,它允许你使用 Haskell 的 Google 的令人敬畏的 Tensor Flow API。我没有设法一起破解任何东西。我大部分时间都在思考张量流概念和相关的 Haskell 类型。犹大·雅各布森的演讲在这方面帮助很大。我希望对这个图书馆有足够的了解,以便将来开始做出贡献。

结论

总而言之,BayHac 是一次了不起的活动。从好的方面来说,我学到了很多关于 Haskell 不同领域的知识。在 Haskell 社区中认识更多的人是一次很棒的经历。期待以后有更多的机会和别人分享知识。唯一的缺点是我现在有太多我想学的东西,而没有足够的时间。我可以应付让我处于那种境地的语言。

从 BayHac 学到的最后一点是社区对新来者的开放和邀请程度。如果你以前从未写过一行 Haskell,你应该看看我们的入门清单。它将引导您完成语言的安装,并为您提供一些基本的工具来帮助您完成安装!

黑客中午是黑客如何开始他们的下午。我们是 @AMI 家庭的一员。我们现在接受投稿并乐意讨论广告&赞助机会。

要了解更多信息,请阅读我们的“关于”页面在脸书上点赞/给我们发消息,或者简单地说, tweet/DM @HackerNoon。

如果你喜欢这个故事,我们推荐你阅读我们的最新科技故事趋势科技故事。直到下一次,不要把世界的现实想当然!


本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除