ScalaConf 2019-John Preacher,圣杯和Haskell教授

11月26日,面向Scala开发人员的专业会议ScalaConf 2019将在Infospace举行 。 也许是俄罗斯第一。 在活动前夕,我们请ScalaConf 2019 PC负责人Vadim Chelyshovdos65 )讨论会议的报告和概念。



这是我们学到的东西:在会议上,我们正在等待函数编程的讲师,四份英语报告,将解决数据工程师问题的新工具,关于Scala插件为何与Scala编译器不兼容的报告,Haskell教授以及许多函数编程。 我们还讨论了Scala开发人员的发展边界,为什么没有人喜欢琼斯,Scala和Haskell之间的“ holivar”以及社区的信息性“泡沫”。 细节剪下。

概念图


哈V,瓦迪姆! 零问题-向我们介绍会议概念吗?

我很失望-没有一般性的概念。 我们对在俄罗斯的Scala会议并不满意。 在组织之前,没有太多的事情发生来思考令人惊讶的异常情况。 这是一个Scala会议,并且有很多。

这是否意味着参加会议的社区没有期望?

有期望。 这些都是Scala的期望,这些报告和演讲者会很酷。 这些期望使您不必去参加有关Haskell或Java的相关报告即可参加我参加的两个半演讲。

是因为在俄罗斯很少有Scala会议吗?

我们可以说这次会议是零次 。 当我写有关Scala运动的调查文章时,我发现在圣彼得堡发生了一些事件。 人们称其为会议,但这只是一小步-3-4位发言人的单曲。 9月举行了一次会议,宣布有400人参加,这被视为会议。 没有别的了。 其余的则是莫斯科的圣彼得堡,新西伯利亚的一些,其他城市的几乎为零。

在俄罗斯的Scala会议已经是一个活动。

注意事项 调查的第一部分和第二部分。 最后一个即将推出-敬请期待。

事实证明,ScalaConf 2019是第一个关于Scala的专业会议?

是的,有一些假设。 特殊之处在于,在此之前,没有专门针对Scala的站点。 通常,这些会议是Java会议,在这里,摇滚乐人们是败类,在FP上有各种各样的事件,还有mitaps。 如果这不是莫斯科或圣彼得堡,那么混搭也混在一起。

ScalaConf 2019是第一个针对洛矶山脉的岩石平台。

在集会或混合会议上,Scala的演讲者必须适应听众的需求,删除许多主题,并降低报告的复杂性。 顽固的演示文稿出现在FP会议上,但您不能仅谈谈Scala。

ScalaConf 2019将没有任何限制。 只有Scala,只有铁杆。

Scala.js


Scala统治着两个领域:大数据和后端。 因此,没有基本的任务来准备N个部分,每个部分中都有一定数量的发言人。 我们从报告中挑选了一些很酷的报告并标记为:一些有关后端的信息,一些有关FP的信息。 分成几部分是名义上的,来自“语言/调优”块的报告将与来自大数据的报告一样清晰。 演讲者将为大家发言。

唯一的例外是Scala.js,很少有人在前端以及前端编写。 为了获得某些优势,这通常是一个实验,很少是有意义的决定。 如果要在浏览器中使用Scala.js,则它适用于基于Scala的复杂代码。 我看到了使用此工具的区块链语言的良好编译器示例。 开发人员能够以交互方式将其直接添加到浏览器中:您使用该语言编写,编译器检查有效性并突出显示。

我们添加了报告“ Scala.js-该工具适合您吗? “让人们看到一个使用的例子。 完全没有编写后端和前端的全栈开发人员不存在。 一般的开发人员很少编写前端,并且他不想使用JS或TypeScriprt。 他认为:“我可以尝试Scala.js吗? 是的,不是那是我,没有人会理解我。”

当有来自前端世界的工具和库时,无需使用Scala.js。 因此,很少有人尝试使用Scala.js,并且这个话题非常有趣。 Alexander Sharikhin只会讲讲他在eLama中使用Scala.js的经验。

Scala.js利基技术已经成熟,有效并且具有特定的社区。 流行的JS库的集成存在一些问题,但是在实际项目中使用Scala.js的每个人都会做出积极响应。
Evgeny Tokarev是PC ScalaConf 2019的成员

后端


此块中有两个报告-关于搜索和索引以及关于Akka。 Andrei Korzinev的第一份报告-在Auto.ru中使用索引的方法是否会像“案例”一样?

从历史上看,他们首先在Java中使用Apache Lucene,然后将其扔掉并用Java编写了自己的YoctoDB 。 现在,他们正在Scala上进行第三次迭代,以更好地控制查询结果。

Scala用于分发,在多线程应用程序中使用,很少用于类似项目。 Scala开发人员更可能专注于正确性,而几乎不用担心性能。 对于一般任务,开发人员无需付出任何努力即可获得高性能。

Avto.ru项目是兼具正确性和性能的项目之一。 因此,安德烈的报告是独一无二的。 他将讨论对性能很重要的索引:字节缓冲区,varhandless。 这种格式的报告很少。 搜索引擎是一个不同级别的任务,与平均水平有很大不同。

很少有人编写自己的搜索引擎,甚至很少有人在Scala上做。

Nikita Melkozerkov将“大致”告诉与Akka合作的方法之一?

他将谈论Akka Persistence和FoundationDB 。 Akka Persistence是为Akka配置的库,可让您方便地存储所有事件,保存,提取而不用担心。 对于她来说,还编写了其他库,这些库将Akka Persistence链接到任何数据库。

Akka Persistance只能与LevelDB一起使用。 所有其他存储后端都是来自社区的插件。 它们并不经常更新,并且担心将它们纳入一个严肃的项目中。 因此,很难选择使用Akka Persistance的方式。

一年前,Apple 打开了 Foundation Source OpenDB库,每个人都很兴奋。 由于每晚开发人员都会模拟一万亿次测试,因此它非常酷,分布式,超级正确且可靠。 每个人都受到该事件的启发,Nikita为FoundationDB编写了Akka Persistance插件。

Nikita会在40分钟内讲述FoundationDB及其优势,Cassandra为什么不起作用,Event Sourcing,Akka Persistance编写插件的主要阶段和功能。 我希望Nikita能够说服所有人,修复或编写用于必要存储的插件并不可怕,也不困难,并且稳定性问题将消失。

Scala开发人员开发和函数式编程


奥尔加·马克哈苏耶娃(Olga Makhasoeva)的报告是唯一一项软技能报告,它在FP领域中。 它是怎么发生的:软技能不像技术技能那么重要,或者社区还不准备接受此类报告?

在第一届Scala会议上,我们负担不起许多关于软技能的讲座。 这将浪费时间和资源。 事实证明,我们可以用可以在其他会议上收听的报告代替可以向我们介绍技术和有用知识的人员。

同时,我们想在该程序中添加主题演讲,而Olga帮助了我们。 她关于软技能的讲座“ 提问艺术 ”非常完美。 他支持AF的报告,因为无法为它创建单独的块。

我想提出一个假设,即Scala开发人员更注重技术。

Scala有很多要讨论和发现的技术问题。 在主流语言中,您可以快速学习语言,熟悉生态系统并达到技术极限。 仅在管理,软技能或低水平的学习工作上进一步发展。 在Scala和FP中,还有很多需要深化的空间:如何从代码中获得更多保证,如何更正确地,简而言之,更快,更可靠地编写代码,以使其更加简洁。

Scala有许多永无止境的技术和方法。

您可以研究相关领域,阅读其他语言,并为Scala添加最好的语言。 我们拓宽视野,以便更有可能找到有用和有趣的东西。 去年,无论他们谈论Tagless Final都没有会议。 一年过去了,每个人都在冷静下来,并正在研究ZIO中使用的方法。 在FP和Scala中学习的新鲜事物永无止境。 如果您看起来足够深入,即使在一个拉取请求Scala的框架内,也可以一整天地进行挖掘。

主要新闻资源是专门的聊天, Scala中心之类的公共Twitter帐户以及Akka或Scala-lang团队之类的个人博客,它们发布有关重要语言解决方案的帖子。 但是,由于信息量惊人,因此很难掌握所有信息。 唯一节省的资源是Scala Times 。 这些是每周新闻通讯,其中包含Scala世界和社区中的帖子,发行,推文和新闻的摘要。 我已经被《斯卡拉时报》订阅了三年了。 但是我很少去浏览标题和简短的描述。 当需要时,我会记得我曾经看到并搜索过,但仅此而已。

有一次,我尝试开发Scalanews.org摘要。 我们试图以新闻工作者的身份与信息打交道:我们研究了各种来源,不仅是《斯卡拉时代》(Scala Times),也曾阅读,分解和撰写眼线笔。 我们希望读者从这篇文章中受益并记住一些东西。 但是信息是大海,这个项目正在逐渐消失。

在Scala中,您可以无限期地学习所有内容,但是是否有成长的步骤?

长期以来,Scala 的分级系统一直存在 。 不知道是谁发明的,但它描述了开发人员的水平:自信的用户,库编写者等等。 在John LambdaConf会议的特殊页面上,绘制了从6到8级的概念掌握程度。 有级别,但是我不确定它们是否正在使用。

我还记得6月中旬,高级四年级的等级。 有这样的事吗?

是的,但不常见。 如果他们在空缺时写标签,那就是高级。 很少是中级甚至是初级。 通常,已经用其他语言编写的开发人员会去Scala。 他们选择了具有开发经验的Scala,这显然不是6月。

高级开发人员移至Scala。

因此,开发人员的平均年龄很高。

英文报告:丑闻,递归,API


功能编程块中有四位外语发言人。 让我们从John A. De Hus开始。

每个人都认识约翰。


约翰非常活跃:他参加了所有活动,参与了他的ZIO库并正在积极推广它,他最近在Scala Meetup上演出。 约翰提倡AF,他成功了。 他是吸引注意力的大师。

结果,他参加了许多丑闻。 例如,在2019年发生了几起世界大戏:ZIO和Scalaz从Scala版本中移除Typelevel.scala禁止John 参加他们的项目, Skills Matter关闭了所有活动的入口。 与Typelevel.scala相关联的特拉维斯·布朗(Travis Brown)发布了一篇帖子,他指控约翰犯了所有罪过。 例如,甚至在远离Scala的人们中,在Radio-T播客中也讨论了这些事件。

从某种意义上说,约翰做的一切正确-视野开阔,可以向群众宣扬AF。 他目前正在2019年底在伦敦组织他的Scala会议,并且已经邀请了许多很棒的演讲者。 在ScalaConf 2019上,他将与Snake Oils&Elixirs主题演讲一起演出。

John与Scalaz Sparta的有趣故事。 他发起了一场马拉松比赛,为未参与开源的开发人员提供指导,组织和帮助创建Scalaz生态系统。 响应了300人,成立了利益相关工作组,打开了30个存储库。 几乎没有开火。 人们不太可能会聚在一起,并且长期以来仍然有动力编写可能在当前工作中不需要的库。

瓦伦丁·卡萨斯(Valentin Kassas)也参加了马拉松比赛。 也许他的项目将成功发布-他仍在参与其中。 Valentine的“ 报告 ”将处理递归模式。 这是高级主题,但很少有人理解。 多年来,开发人员一直在努力克服方案。 也许情人会最终帮助理解这个话题。

功能编程会议,但不提及递归方案-钱花在了事上。

第三位发言人是亚当·沃斯基Adam Warski) 。 他是软件开发公司的联合创始人参与开源和商业项目。 去年已经发布了许多库,例如通过API。 他正在定性地研究它们,并在社区中推广。 每个关注Scala社区生活的人都应该认识他。

他的演讲将关于Tapir库。 Swagger文档对它有很大帮助。 写Swagger通常很痛苦。 我们从中得到的最好的结果就是在一堆注解上的可怕的可怕构造,它可能仍然不符合您在此处编写的内容。

Tapir解决了此问题,并免费提供Swagger描述。 唯一类似的项目是来自ScalaConf 2019 PC的Oleg Nizhnikov ,但Tapir更具公关能力,因为Adam精通这一点。

但是产品的质量没有受到影响。 您必须做出很大的妥协,组织一个API以涵盖所有情况很方便,而且手指不会钩住。 亚当似乎已经成功。

在学习了语言并解决了实际问题之后,Scala开发人员将目光投向了FP。 在过去的四年中,国外会议上的大多数报告都与FI及其解决实际问题的方法有关。 因此,我们对外国演讲者感兴趣-他们主要谈论FP。
Evgeny Tokarev,2019年PC ScalaConf成员


最后一位外国演讲者是Wojtek Pitula 。 他在Sony的信息安全部门工作。 在报告“ 集成的魔力-生态系统比任何框架更好 ”的报告中他将告诉他如何创建一个应用程序,并在其中放置所有工作库。

外国报告将使用英文。 请问有翻译字幕吗?

不,什么都不会发生。 开发人员经常遇到技术术语,阅读文档,手册,英语研究-所有主要资源。

我们假设我们所有人都懂英语。

如果完全无法理解,那么屏幕上会出现一个代码,从中可以了解正在发生的事情。 如果根本没有,那么隔壁总是会有另一种俄语的替代报告。

只是替代。 达尼尔·斯米尔诺夫(Daniil Smirnov)还会谈瓦伦丁(Valentin)这样的计划吗?

差不多了 他们都编写与模式相关的库。 两者都使用相同的灵感来源-Xenomorph 。 但是库是完全不同的,就像一组功能一样。 Daniel的图书馆更简单,更有效-使用和使用。 情人有更多的花招,她自己的特定DSL,更多的功能,而且她与Xenomorph的距离更远。

Daniel 将展示他的Morphling项目。 但是这个项目可能吓跑一个没有准备的人:散布带有漏洞的类型,像“ HMutu”这样的奇怪短语-恐怖。 因此,该报告的目的是克服这种恐惧并发现方案的简单性和易用性,即使采用这种形式也是如此。

为了实验目的,我们特意将报告数量减少到20分钟。 丹尼尔的报告就是其中之一。 我参加了丹尼尔(Daniel)最近的一次竞选,可以说他由于时间限制而在报告方面做得很好。 Daniel和Valentine的主题相交,但是在不同的时间出现,涵盖了递归和模式的整个主题。

Alexandra Golubitskaya比较ZIO和Future。 这是约翰的产品。 他们协调了吗?

当然可以 亚历山德拉积极参与编写ZIO,他们互相协助以提供报告。 当约翰在会议上展示某些功能时,他感谢亚历山大所做的准备。 她还是伦敦活动的组织者之一。 现在他们正在准备ZIO中的一项新功能-块。 如果准备好召开会议的日期,那么亚历山德拉将讨论它们

接下来是Artem Seleznev和Scala Without JDBC。

JDBC是JVM语言中使用的一种旧标准,用于处理关系数据库。 为特定的数据库编写了特定的实现。 JDBC尚未开发,它是一种固定的标准,没有人可以拒绝它。 每个人都会吐口水,不高兴,但会继续咀嚼仙人掌-别无选择。 有一些提供异步驱动程序的库,但它们并不流行。 Rob Norris听说过Skunk库 ,但已经开发了一年多,尚不清楚何时发布。

Artyom将告诉您如何使用JDBC。 为此,他在“膝盖”上写下了驱动程序-这些工具足以自己动手并具有实用性。 在报告中,他将展示如何编写驱动程序,并且“跪在地上”不再比每个人都惯于思考的困难和糟糕。

JetBrains,工具和大数据


在下一个“语言/调优”区域中,Andrey Kozlov和Mikhail Mutsianko的第一份报告。 他们会谈论JetBrains产品之一吗? 在程序中,我计算了来自JetBrains发言人的18份报告中的3份。 它与某物有关吗?

当我开始制作时间表网格时,我也注意到了这一点。 这是偶然发生的,没有人故意提升JetBrains。 该公司雇用了许多接近AF的员工,尽管他们的主要产品并非如此。 Andrey KozlovMikhail Mutsianko正在开发我们都使用的Scala插件。 他们在这里绝对不是多余的。

Scala插件与Scala编译器不完全匹配是一个老问题。 插件中编写了一个替代的Scala代码编译器,以使其IDE能够正常工作。 因此,产品中存在差异-在某些地方,该代码实际上是有效的,正确的,由Scala编译器编译,但在IDE中为红色。 这令人沮丧,但是随着时间的流逝,红色区域会越来越少。

显然,情况不是很好,但是Scala编译器并不是最简单的事情。 大多数开发人员都不知道IDE开发人员面临的问题和挑战。 这种情况很可能会继续下去,但是安德烈·科兹洛夫(Andrey Kozlov)和米哈伊尔·穆特西安科(Mikhail Mutsianko)只想说出他们的观点。 他们想解释为什么会发生这种情况,为什么会发生这种情况,对编译器的要求是什么,为什么要编写它以及为什么以这种方式编写插件。 我们曾尝试揭露这个秘密,他们来找我们录制播客,但目前还不清楚。

继续使用JetBrains,然后跳到大数据。 «» - — , IDE. ?

, Big Data. . : , , , , . . , - .

JetBrains — . AppsConf . ScalaConf 2019 ?

, « Haskell» DOT — . DOT, . , «» Haskell Scala. , - , — .

?

, :)

, «» Haskell Scala?

, . Scala Java — . Haskell Scala. Haskell ( ), Scala , , .

. Scala Haskell .

«» . , - :)

, , Haskell, , , , Scala.

Scala?

, . . , , ensime, scalafix , fastparse. Scalafix .

, Open Source, . , , .

«» GraalVM. , ?

GraalVM . — Scala Native , Java . , JVM.

-, GraalVM — . , . . . GraalVM, , , . , GraalVM. , , , , . .

, GraalVM ?

. , GraalVM . . — GraalVM . .

, - GraalVM . . GraalVM « ». , , , . .

? , Big Data?

, . Big Data, , . , ..

Yupana — HBase time-series , . , . , — Yupana, , . Open Source .

ScalaConf 2019 . , -. 12 — . , . ScalaConf 2019!

Source: https://habr.com/ru/post/zh-CN474322/


All Articles