Go Time: Golang, Software Engineering - Go与数据科学 封面

Go与数据科学

Go and Data Science

本集简介

在这期与Daniel Whitenack共同呈现的超信息量节目中,我们探讨了Go语言与数据科学。内容涵盖数据科学的本质、使用Go入门数据科学的工具与项目,以及Daniel今年在GopherCon大会上题为《Go for Data Science》的演讲前瞻。 加入讨论 Changelog++会员支持我们的工作,获得更深入的访问权限并去除广告。立即加入! 赞助商: Linode——我们首选的云服务器。仅需5美元/月即可获得高速高效的SSD云服务器,使用优惠码changelog2017额外赠送4个月! Fastly——我们的带宽合作伙伴。Fastly提供快速、安全且可扩展的数字体验。超越传统CDN,体验强大的边缘云平台。 嘉宾: Daniel Whitenack – 网站、GitHub、X Erik St. Martin – GitHub、X Carlisia Thompson – GitHub、领英、X Brian Ketelsen – GitHub、X 节目备注: AlphaGo - 由Google DeepMind开发的围棋程序 《大数据揭秘:数据科学家究竟做什么?》 Uber Argos - 通过数据科学识别系统故障 Apache Spark Hadoop InfluxDB Pachyderm为所有数据提供版本控制 《我的笔记本比Hadoop还快》 Go语言数据科学库 BoltDB - Go语言嵌入式键值数据库 Gonum Gota - Go语言数据框与数据清洗工具 有趣的Go项目与新闻 1.7版本冻结 Peter Bourgon《Go最佳实践一年回顾》 Dave Chenney的博客 Gafka - 管理Kafka集群的Go工具集 ChatOps - 当沟通至关重要时 The Micro Bot - 微服务ChatOps解决方案 Unik(发音同Unique)- 可将Go/Java/C/C++程序编译为unikernel 自由软件星期五 Brian推荐 - ngrok及Gophers Slack的#gopherjs频道 Erik推荐 - neovim Carlisia推荐 - Jupyter Notebook及Daniel的Go内核Gopher Notes Daniel推荐 - vim-go 发现遗漏或错误?欢迎提交PR!

双语字幕

仅展示文本字幕,不包含中文音频;想边听边看,请使用 Bayt 播客 App。

Speaker 0

我是丹尼尔·维特纳克,欢迎收听Go Time。

I'm Daniel Witenack, and this is Go Time.

Speaker 1

Go Time是一档每周播出的播客,我们在这里讨论围绕Go编程语言、社区以及相关的一切有趣话题。

It's Go Time, a weekly podcast where we discuss interesting topics around the Go programming language, the community, and everything in between.

Speaker 1

如果你目前正在使用Go,或者希望学习Go,那么这档节目非常适合你。

If you currently write Go or aspire to, this is the show for you.

Speaker 1

欢迎再次回到Go Time的另一期节目。

Welcome back for another episode of Go Time.

Speaker 1

这是第四期节目。

This is episode number four.

Speaker 1

今天,我们将讨论Go在数据科学中的应用,以及我们本周发现的其他有趣新闻和项目。

Today, we'll be talking about Go for data science and other interesting news and projects we've come across this week.

Speaker 1

我是埃里克·斯。

I'm Eric St.

Speaker 1

马丁,和我一起的依然是我们另一位出色的主持人布莱恩·凯特尔森。

Martin, and with me as always are our other amazing host, Brian Kettleson.

Speaker 1

打个招呼吧,Brian。

Say hello, Brian.

Speaker 2

你好。

Hello.

Speaker 1

还有Carlicia Campos。

And also, Carlicia Campos.

Speaker 1

打个招呼吧,Carlicia。

Say hello, Carlicia.

Speaker 3

很高兴来到这里。

Glad to be here.

Speaker 3

嗨。

Hi.

Speaker 1

对于今天已经收听的听众,我们今天还邀请到了Daniel Wightnack,他非常投入于Gopher数据科学领域。

And for anybody who's already listening today, we're joined by Daniel Wightnack, who is very vested in gopher data science.

Speaker 1

他今年还将在GopherCon上就这一主题发表演讲。

He's also going to be speaking at GopherCon this year about it.

Speaker 1

丹尼尔,你怎么样?

How are you, Daniel?

Speaker 0

很好。

Good.

Speaker 0

能来这里真是太好了。

Good good to be here.

Speaker 1

那我们先来聊聊这周大家在新闻、文章或各种事情中遇到的有趣内容吧。

So let's kick this episode off by talking about anything we've kind of run across this week in news and just random articles and things.

Speaker 1

大家都有什么发现?

What's everybody got?

Speaker 2

这周最大的事情是 Go 1.7 的功能冻结。

Hey, the biggest thing this week is the feature freeze for Go 1.7.

Speaker 2

这一消息已在 Golang Nuts 和 Golang Dev 邮件列表中公布。

It was announced on the Golang Nuts and Golang Dev mailing list.

Speaker 2

这次更新涉及 SSA 和编译器的大量改动。

There's a lot of changes in this with the SSA and compiler changes.

Speaker 2

所以,所有人在外面都需要下载 Go 1.7 并编译它,测试你们的程序,因为这是一个重大的变化,可能会导致程序出错。

So, everybody out there needs to download Go 1.7 and compile it, test your programs because this is a really big change, and there's opportunity for breakage.

Speaker 2

当然,我们的测试覆盖了所有内容,但对我们来说这是一个很大的改动,编译速度也大幅下降了。

Of course, our tests cover everything, but it's a big place for us and the compile speeds are down, down, down, down.

Speaker 3

我看到一些关于二进制文件的内容。

Saw something about binaries.

Speaker 3

二进制文件中是否包含依赖包?

Is it vendor in binaries?

Speaker 3

没来得及深入研究。

Didn't have a chance to investigate.

Speaker 3

我非常感兴趣。

Was super interested.

Speaker 3

有人知道吗?

Does anybody know?

Speaker 0

我觉得是只有二进制的包,对吧?

Think it was binary only packages, right?

Speaker 0

不提供源代码吗?

Without providing the source?

Speaker 2

没错。

Exactly.

Speaker 2

现在你可以获取一个仅包含二进制文件的包。

You can go you can go get a binary only package now.

Speaker 3

所以你可以两种方式都做?

So you can do it both ways?

Speaker 2

正确。

Correct.

Speaker 2

如果你想发布一个仅包含二进制文件而没有源代码的预编译包,你可以通过提供一个指向 GoGet 的 URL 来实现,或者使用 GoGet。

If you wanted to to release a precompiled package that was only a binary with no source, you could do that by by giving somebody a URL to a GoGet or to use GoGet.

Speaker 3

哦,我明白你的意思了。

Oh, I see what you're saying.

Speaker 3

明白了。

Gotcha.

Speaker 1

是的。

Yeah.

Speaker 1

所以更像是像Windows平台上可以购买的商业软件包和库那样的东西。

So kind of more along the lines of, like, the commercial packages and libraries that you can buy, say, for the Windows side of the world.

Speaker 3

那么,如果我使用你的包的二进制版本,我可以把它直接放进我的项目里并作为二进制文件使用吗?

So then if I'm using your bind your package as a binary, I can pop it in my project and use it as a binary?

Speaker 2

我不确定这是否适用于预编译的库。

I don't know if it applies to precompiled libraries.

Speaker 2

我觉得这只适用于命令,但看看它是否也适用于库文件(.a文件)会很有趣。

I I think it was only commands, but it would be interesting to see if it it actually applied to the, library files, the a files.

Speaker 1

我得再深入研究一下。

I'll have to look more into that.

Speaker 1

我只是偶然看到过一点关于这个的内容,当时匆匆扫了一眼。

I just I briefly saw something about that, and I kinda breezed over it.

Speaker 1

这周我真的很忙。

I've been really busy this week.

Speaker 1

但那个版本还有大约300个已关闭的工单。

But there's also there's something like 300 closed tickets for that release.

Speaker 0

令人兴奋。

Exciting.

Speaker 0

我期待编译速度的提升。

I'm excited for the compile times.

Speaker 1

是啊,我也一样。

Yeah, me too.

Speaker 1

我迫不及待想回到1.4的速度了。

I can't wait to get back to, 1.4 speeds.

Speaker 2

我们越来越接近了。

We're getting closer.

Speaker 2

虽然还是比1.4慢,但我们已经恢复了大部分丢失的性能,这让大家都很高兴。

It's still faster it's still slower than 1.4, but we've regained a lot of that lost territory, and that makes everybody happy.

Speaker 1

这周我还看到了另一件有趣的事,就是布拉德和安德鲁的直播编码环节。

So the other interesting thing that I saw, this week too was, Brad and Andrew's live coding sessions.

Speaker 1

你们有没有看到,他们正在招募想要参与实时代码审查的人?

Did you guys see that, where they're, putting a call out for people who want live code reviews?

Speaker 2

这有点吓人。

Well, that's frightening.

Speaker 3

我没这么说,但听起来很棒。

I didn't say that, but that sounds great.

Speaker 0

是的。

Yeah.

Speaker 0

我也没看到,但我非常想参与这个活动。

I didn't see it either, but I would love to I would love to participate in that.

Speaker 3

我以前看过他们这么做,效果非常好。

I've seen it be I've seen them doing it in the past, and it's great.

Speaker 2

我不确定。

I don't know.

Speaker 2

如果你以前没有自我怀疑,想象一下布拉德和安德鲁把你的代码撕得粉碎。

If you didn't have impostor syndrome before, imagine Brad and Andrew tearing up your code.

Speaker 2

你知道,他们俩都是很棒的人,别误会我的意思。

You know, they're both great guys, so don't get me wrong.

Speaker 2

只是,你知道的,要让这群人满意可不容易。

It's just, you know, that is a tough crowd to please.

Speaker 1

我不知道,但我觉得这只会让我对自己的看法暴露出来,对吧?

I don't know, think that it would just make my own thoughts of myself come to light, right?

Speaker 1

就像,我知道,看吧?

Like, I knew it, see?

Speaker 2

我知道自己是个糟糕的程序员。

I knew I was terrible coder.

Speaker 2

Gotime.fm,我们花一个小时谈论自己的冒名顶替综合征。

Gotime.fm, where we talk about our imposter syndrome for an hour.

Speaker 2

这周还有另一个大新闻,那就是彼得·贝尔贡的文章,关于他更新了2014年的Go最佳实践演讲。

There's another big, news item this week, and that was, Peter Bergon's article about, his update of his Go Best Practices talk from 2014.

Speaker 2

他将内容更新到了2016年,里面有很多非常不错的收获。

He updated that to, 2016 and there's a lot of really good takeaways in there.

Speaker 2

我觉得我们节目里没时间把它们都讲完。

I don't think we have time on the show to cover them all.

Speaker 2

但里面确实有很多关于依赖管理、测试、如何组织你的库以及如何命名包的绝佳建议。

But, some really good tips in there about dependency management, about testing, how to structure your library, what to name your packages.

Speaker 2

你想得到的,里面都整理得非常好。

You name it, it's really nicely in there.

Speaker 2

就像我在推特上说的,我觉得这简直是经典。

Like I said on Twitter, think this is is really canon.

Speaker 2

每个Go开发者都应该读一读这篇文章,并努力把这些规则内化,因为它们真的非常有价值。

This should be, every Go developer should read this and try to internalize all of these rules because they're really good stuff.

Speaker 0

是的。

Yeah.

Speaker 0

我觉得我要花点时间才能完全消化,但我觉得这是那种我应该收藏起来、每周都回头看看的东西。

Think it's gonna take a while for me to unpack, but I think it's one of those things, you know, I have bookmarked and I'm gonna visit every week.

Speaker 0

当我实现不同功能时,我会参考它,看看自己是不是在以合理的方式做事,这会很有帮助。

And as I'm implementing different things, I think, you know, referencing that and just seeing if I'm doing things in a sane way is gonna be great.

Speaker 1

是的。

Yeah.

Speaker 1

我认为那场演讲至今仍然是我最喜爱的GopherCon 2014演讲。

Think that that talk was a favorite still to this day from, GopherCon twenty fourteen.

Speaker 1

我真的很喜欢,看到他回去反思自己的想法,甚至否定一些他曾经认为正确的观点,这很有趣;不过我不确定他是否完全否定了2014年提出的任何概念。

Really So loved that it's it's fun to see him go back and kind of reflect on his thoughts and and to shoot down the things that he thought, or the way although I don't know whether he he fully dismissed any of the concepts that he presented in 2014.

Speaker 1

我觉得他对一些观点变得没那么固执了,还新增了一些内容。

I think his his, he got a little looser on his beliefs on a couple of things, and then a couple of added new ones.

Speaker 1

我需要再仔细读一遍。

I need to read through it again.

Speaker 1

就像你说的,丹尼尔,你读一次会觉得:‘我刚读了什么?’

And like you said, Daniel, that it's like that you read it one time and you're like, what did I just read?

Speaker 1

你得反复回去看。

You kind of have to keep going back to it.

Speaker 2

是的。

Yeah.

Speaker 2

这么大的内容需要很长时间才能完全内化。

Something this big takes a long time to internalize all of it.

Speaker 2

我真希望能把这个演讲或者这篇文章,和一周前戴夫·钱尼关于错误处理的文章结合起来,每天晚上放在枕头上,希望我能一次性吸收所有这些内容。

I would love to take this talk or this this, this article, mix it with Dave Chaney's error handling article from a week or two ago, and, you know, just put it on my pillow and sleep on it every night, hoping that I could absorb all of that at once.

Speaker 2

那太好了。

That'd be great.

Speaker 3

我一直在克制自己,不想变成一个狂热的粉丝。

I'm holding myself back because I don't wanna be such a big fan girl.

Speaker 3

但对于刚加入这个社区的人来说,彼得绝对是值得学习的对象。

But for people new to the community and to go, Peter is definitely somebody to absorb.

Speaker 3

我认为彼得和戴夫·钱尼是我心目中最佳实践的前两名,是我认为非常值得追随的路径。

And I would say Peter and Dave Chaney are big on the top of my list as far as best practices and things that I think are very good paths to follow.

Speaker 0

是的,我同意。

Yeah, I would agree.

Speaker 0

而且我觉得,当我刚接触 Go 时,当然会去搜索各种 Stack Overflow 的回答之类的,但你会发现关于错误处理之类的问题,观点五花八门;而当我转向这些资源时,却为我在网络上看到的那些混乱观点带来了一些清晰的思路。

And I think coming into Go not too long ago, I think, of course, you search around different Stack Overflow responses and whatever and you can really get a mixed bag of ideas about, like Eric said, like about error handling or what have you, but kind of going to these resources I found gives some clarity on that mixed bag that you kind of find across the interweb.

Speaker 1

我也想看看更多最佳实践之类的内容,以便做个比较和对照,对吧?

I'm interested to see some more best practices and stuff too, just to kind of compare and contrast, right?

Speaker 1

因为我觉得人们对不同的方法有不同的成功经验,尤其是在依赖管理方面,这可能是个热门话题。

Because I think people have different success stories with different things, and especially when it comes to vendoring, that can be a hot topic.

Speaker 1

我的意思是,我们完全可以花一整集来讨论依赖管理。

I mean, we could probably talk for a full episode about vendoring.

Speaker 2

我觉得我们甚至可以办一场专门关于依赖管理的GopherCon,但仍然无法达成任何共识。

I think we could have an entire GopherCon on vendoring and still not get any consensus from anybody.

Speaker 3

谁需要共识?

Who needs consensus?

Speaker 2

没人需要共识。

Nobody needs consensus.

Speaker 2

说得好。

Good point.

Speaker 1

好吧。

All right.

Speaker 1

那么继续,一些有趣的 Go 项目。

So moving on, interesting go projects.

Speaker 1

说到睡觉和下载信息,布莱恩,你每晚都会下载一些酷炫的项目。

And speaking on sleeping and downloading information, Brian, with your nightly download of cool projects.

Speaker 2

所以,几周前我看到了一个项目,当时我不太确定,因为我没看到全部的代码。

So here's here's one that I saw a couple weeks ago, and I wasn't too sure about it because I just I didn't I didn't see all of the code there.

Speaker 2

但这个项目叫 Gafka,拼写是 g-a-f-k-a,是一套用于管理 Kafka 集群的 Go 工具。

But this one's called Gafka, g a f k a, and it's a suite of Go tools for managing Kafka clusters.

Speaker 2

它在 github.com/funkygao/gafka,现在看起来非常完整了。

It's at github.com/funkygao/gafka, and it looks really complete now.

Speaker 2

如果你管理 Kafka(很多人确实如此),这个项目非常有趣,它提供了一系列不错的 Go 命令和工具,帮你处理集群,避免了通常操作 Kafka 时不得不使用的繁琐的 Java 脚本。

Very interesting if you manage Kafka, which a lot of people do, and it's got a lot of nice little Go commands and Go tools for working with your cluster, things that will save you from, the ugly mounting of, Java shell scripts that you have to do generally when you're messing with Kafka.

Speaker 1

所以,这些只是用于在 Kafka 世界中进行管理的辅助工具,还是替代了 Serama 之类的客户端库?

So now this is just helpers for administering in kind of that world for Kafka, or this replaces Serama and some of those libraries for client libraries?

Speaker 2

我没看到里面有任何客户端库。

I didn't see any client libraries in there.

Speaker 2

这只是一个用于管理集群、消费者组等的工具套件。

This is this is only a suite of tools for managing the cluster, at, consumer groups, that sort of thing.

Speaker 2

所以里面至少有十几种不同的工具用于处理你的集群。

So lots of I I I want to say there are at least a dozen different utilities in there for dealing with your cluster.

Speaker 1

现在,丹尼尔,我猜你在Kafka方面非常熟悉,毕竟你来自数据科学领域。

And now, Daniel, you're, I imagine you're quite versed in Kafka, being from the data science world.

Speaker 0

是的。

Yeah.

Speaker 0

我们在生产环境中使用Kafka,我认为,有了这个工具,我完全可以给那些负责Java脚本的家伙们点颜色看看。

We, we we use Kafka in production and, I think, you know, with this, I might be able to give those, Java Scholar guys that run for their money.

Speaker 0

我还注意到它有一个功能,就是把健康信息上报到InfluxDB。

I also saw like, I I like the the part of it about, admitting health info to to InfluxDB.

Speaker 0

这在我这边想象中会非常有用。

That's something I can can imagine super useful on my end.

Speaker 1

好吧,还有别的吗?

All right, what else we got?

Speaker 3

这周我从两个不同的地方接触到了聊天运维这个概念。

Well, I ran into this concept of chat ops this past week from two different places.

Speaker 3

一个是远程 meetup 小组。

One was the remote meetup group.

Speaker 3

他们请了一位嘉宾做了一场关于聊天运维的演讲,使用的是 Hubbots GitHub 项目。

They had somebody come in and do a talk about chat ops, and they did it using Hubbots GitHub hub GitHub.

Speaker 0

Hubbot。

Hubbot.

Speaker 0

I

Speaker 1

我觉得应该读作 Hubbot。

think it's pronounced Hubbot.

Speaker 1

我觉得发音就是这样。

Think that's how you pronounce it.

Speaker 3

听起来没错。

That sounds right.

Speaker 3

他做得非常出色。

And he did a marvelous job.

Speaker 3

他解释了这是什么,进行了演示,并说明了如何使用它。

He said what it was, he demonstrated it, he did a demo, he explained how you can use it.

Speaker 3

这太棒了。

It was fantastic.

Speaker 3

我从未在使用过它的环境中工作过。

And I've never worked in a place that was using it.

Speaker 3

我甚至不知道这是否非常新颖。

I don't even know if this is super new.

Speaker 3

我知道聊天机器人的概念并不新,但将聊天运维直接融入你进行沟通的地方这个概念。

I know the concept of chatbots is not, but the concept of having chat ops right there where you are doing your communication.

Speaker 3

然后我还遇到了这个微库,它是一个 Go 库。

And then I also came across this micro library, which is a Go library.

Speaker 3

这是一个微服务工具包或库,具备聊天机器人功能。

It's a microservices kit or library, and it has capabilities for chatbots.

Speaker 3

我很喜欢他们做了这个。

And I love it that they make it.

Speaker 3

他们说他们有一个链接。

They say that they have a link.

Speaker 3

他们有一篇博客文章,我们会提供链接。

They have a blog post, and we'll have a link to it.

Speaker 3

他们说聊天机器人或聊天操作机器人应该成为第一等公民。

They said chatbots or chatops bots should be a first class citizen.

Speaker 3

我觉得这很棒。

And I think it's great.

Speaker 3

我经常在命令行上工作,我非常喜欢。

I work on the command line a lot and I love it.

Speaker 3

但我也很喜欢将操作融入你与人交流的地方这个理念。

But I also love the concept of bringing operations into the place where you are communicating with people.

Speaker 3

还有这些更新、更现代的工具所能提供的所有额外功能。

And also all the extra capabilities that you can get from these new, more modern tools.

Speaker 3

你得观看远程会议的视频,才能明白我在说什么。

You have to watch the remote meetup video to see what I'm talking about.

Speaker 3

我没法完全描述出来,但我用过这个工具,所以它就在我嘴边,就是说不出来。

I can't totally describe it, but I've worked with this, so it's not like, is at the tip of my tongue here to describe.

Speaker 3

我只是感到非常着迷,我真的很想用这个工具来工作,让它成为现实。

I was just fascinated and I definitely would love to work using this tool so that it is.

Speaker 0

是的。

Yeah.

Speaker 0

我觉得吸引我的一部分原因,是逐渐远离了在 Slack 里不断复制粘贴终端截图到聊天频道的做法。

And I think part of what, what I see that that's appealing is, is kind of moving away from the being in Slack and, and, always, always copy pasting screenshots of my, of my terminal into, into the Slack channel.

Speaker 0

而是通过聊天机器人直接执行命令,以一种人类易懂的方式将我的操作直接融入对话中,让所有人都在同一页面上,不再需要猜测我是在哪里执行的命令、我的环境是什么、为什么看起来这么奇怪,从而跨越这个障碍。

But rather, like, you know, executing the command via the chatbot and kind of having a human understandable version of what I'm doing and enter right into the conversation so everybody is on the same page and doesn't have to like wonder, you know, where where I executed that and what my environment is and why it looks weird and getting over that hurdle.

Speaker 1

这很难,因为我曾经很喜欢聊天应用,但后来我越来越远离它们,因为我尽量不再像以前那样频繁查看聊天频道,因为实在太分散注意力了。

It's hard though because I used to love the chat app stuff and then I've been kind of pulled more and more away from it because I'm I try not to look in the chat channels nearly as often as I used to, because it gets really distracting.

Speaker 1

这种干扰确实很烦人。

The distraction feels Yeah.

Speaker 1

你看到通知后点进去一看,哦,原来是有人在部署东西。

You kinda see your notification and then you look in there and it's like, oh, it's just somebody, you know, deploying something.

Speaker 3

没错,就是这样。

Yeah, exactly.

Speaker 3

很高兴你提到这一点,因为我本来就想说,结果给忘了。

And I'm glad you brought that up because I wanted to mention that enough I forgot.

Speaker 3

我在视频里看到的并不是通知,因为我们确实会收到通知,这些钩子也都存在。

What I saw on this video was not so it was not at all notifications because, yeah, we get notifications, we get these hookups and they are there.

Speaker 3

这更多是关于额外的功能。

This was more about having extra features.

Speaker 3

比如,查询某个内容并从你各个服务中获取响应。

For example, querying something and getting the response from different services across your services.

Speaker 3

这更像是你处于主导地位,进行查询并请求信息,也许还有其他人也在场,你可以共享这些信息,而不是被动地接收信息推送。

It's more like you're in command and you're querying and you're asking for information and maybe somebody else is there as well and you can share the information as opposed to being like just a passive consumer, just like being dumped information.

Speaker 3

我觉得这太酷了。

I thought that was extremely cool.

Speaker 2

是的,我认为从框架的角度来看,Micro 是2016年Go语言世界中最令人感兴趣的东西,因为它提供了——这话说得有点大胆。

Yeah, I think from a framework perspective, micro is probably the most interesting thing in the Go world that's come out in 2016 because it offers- That's bold.

Speaker 2

说得大胆,但你知道,我之前也说过Rails、Go和Docker。

Is bold, but you know, I called Rails, I called Go, I called Docker.

Speaker 2

你得相信我这一次。

You're going to have to trust me on this one.

Speaker 2

Micro 很重要。

Micro's big.

Speaker 2

它之所以重要,是因为它提供了对微服务更广阔的视角。

And it's big because it offers a much broader view of microservices.

Speaker 2

它不仅仅是一套帮助你构建微服务的工具,而是一个完整的生态系统。

It's not just a set of tools to help you make microservices, it's a whole ecosystem.

Speaker 2

我认为这很重要,因为单独构建微服务并不如部署、管理和运营以及使用这些微服务来得重要。

And I think that's important because, making microservices on their own is not as important as deploying and managing and operating, and consuming those microservices.

Speaker 2

因此,拥有这样一个庞大的框架和完整的工具生态系统,我认为会让微服务对每个人来说都更易用,也更易于管理。

So having that big framework, that whole ecosystem of tools, I think will make microservices more accessible to everyone and certainly more manageable.

Speaker 2

聊天运维是它的一个很棒的方面,但这恰恰体现了Go接口的强大之处,因为你可以通过Protobuf或网页使用相同的接口与之交互。

The chat ops is a great side of it, but it just goes to show the power of Go's interfaces because it's the same interface that you can use to interact with it by protobuf or by, a web page.

Speaker 2

因此,你可以使用微框架中的同一个微服务,通过命令行与之交互。

So you can take the same microservice in the micro framework and interact with it, from the command line.

Speaker 2

你可以通过网页与之交互。

You can interact with it from a web page.

Speaker 2

你可以通过Slack与之交互。

You can interact with it from Slack.

Speaker 2

而这一切都使用了相同的接口。

And it's all using that same interface.

Speaker 2

所以我认为这背后蕴含着巨大的潜力,你必须从GitHub开始关注它,因为这个项目前景广阔。

So I think there's a lot of power behind this, and, you need to start it in GitHub because this one's going places.

Speaker 2

他正在招聘。

He's hiring.

Speaker 2

今天早上我看到一条推文。

I I saw a tweet this morning.

Speaker 2

阿西姆·阿斯兰是目前负责Micro项目的人,他正在招聘人才。

Asim Aslam is the guy who's, running Micro right now, and and he's looking for people.

Speaker 1

太棒了。

Awesome.

Speaker 1

我很期待看到它会发展成什么样。

I'm interested to see what comes out with it.

Speaker 1

这周我遇到了一个叫Unique的项目,拼写挺特别的。

So one thing that I came across this week was a project called Unique, which is spelled interesting.

Speaker 1

它是 u n I k。

It's u n I k.

Speaker 1

我想这肯定不是我想到的唯一一种拼法。

I wouldn't be the first way I think to to spell it.

Speaker 1

但我知道,至少布赖恩和我之前讨论过,容器化、微服务等技术背后的动机之一,就是想看看单内核(unikernels)什么时候能开始兴起。

But it's so one of the things I know that at least Brian and I have discussed before was kind of this whole motivation behind containerization and microservices and things of that nature was how long before kind of unikernels started taking off.

Speaker 1

所以我发现了一个叫Unique的项目,它可以将你的Go应用编译成一个微内核,同时也支持Java、C和C++。

So one thing I came across was this project called Unique, which, allows you to compile your Go app, and it does Java and c and c plus plus as well, but compile it into a microkernel.

Speaker 1

我还没试过,或者抱歉,是单内核。

And I've not yet played with it, but or I'm sorry, a unikernel.

Speaker 1

所以你现在让我想到了微服务。

So you got micro on my mind here.

Speaker 2

抱歉。

Sorry.

Speaker 2

这是我的错。

It's my fault.

Speaker 1

所以我很好奇,那里会出现什么样的成果,人们会怎么使用它,以及单内核会如何发展。

So I'm interested to see, what kinda comes along there and what people do with it and, how unikernels evolve.

Speaker 1

但是

But

Speaker 0

你们之前有使用过单内核的经验吗?

Do do you guys have previous experience with unikernels in general?

Speaker 1

只是为了玩玩,构建过一些单内核,但除此之外没有了。

Only in in building some to play with for toy reasons, but I've Uh-huh.

Speaker 1

是的。

Yeah.

Speaker 1

至于生产环境的使用,我几乎没有过。

Not so much as far as, like, production usage.

Speaker 1

只是

Just

Speaker 3

我完全没接触过。

I don't at all.

Speaker 1

所以,基本上,单内核的概念就是它是一个经过高度精简的内核,是一个可启动的程序。

So, yeah, basically, the notion of the unikernel is just it's a really trimmed down kernel that it's a bootable program.

Speaker 1

对吧?

Right?

Speaker 1

所以,当你看一个容器时,对吧,PID 1 启动的那个进程就是你的应用程序。

So so when you look at your container, right, like PID one, the process that starts up is your application.

Speaker 1

但你仍然有一个操作系统来引导这个特定的进程。

So but you still have an operating system that bootstraps that particular process.

Speaker 1

而单内核基本上就是你的应用程序就是操作系统。

And then a unikernel is basically your app is the operating system.

Speaker 1

所以我认为它们在底层可能有一些关联的东西,但我也不是单内核专家,所以别太当真。

So and I think they have some stuff tied in under the covers, but I'm no unikernel expert either, so I wouldn't take my my word for it.

Speaker 0

是的。

Yeah.

Speaker 0

这是一个有趣的概念,我一直关注着想试试看,但还没真正去实践。

It's an interesting concept and something that's been on my radar to, to play around with, but, I haven't quite got there yet, so.

Speaker 2

所以对我来说,有趣的地方在于,从安全角度来看,最安全的代码就是根本不存在的代码。

So I think the interesting thing for me is, you know, from the security world, the most secure code is the code that isn't there.

Speaker 2

而单内核的理念就是,把你应用程序和与硬件通信所需的最小组件提取出来,编译成一个看起来像操作系统的东西来运行你的应用。

And the idea of a unikernel is that you take your app and only the pieces that you need to talk to the hardware and compile that down into something that that feels like an operating system to run your app.

Speaker 2

因此,你的应用程序的攻击面大大缩小了,因为你没有像Ubuntu发行版那样包含所有多余的组件。

So the attack surface of your application is significantly smaller because you don't have all of the extraneous stuff that comes in an Ubuntu distribution, for example.

Speaker 2

所以你只有一个端口是开放的,因为你只监听80端口。

So you've only got the one port open because you're only listening on port 80.

Speaker 2

攻击面显著减小,我认为这是无内核的主要优势之一。

There's a significantly smaller attack surface, and I think that's one of the main benefits of unikernels.

Speaker 2

至少在我看来是这样。

At least in my mind.

Speaker 1

所以我认为我们这期节目还剩大约三十分钟。

So I think we have roughly thirty minutes left in the show.

Speaker 1

那我们来和丹尼尔聊聊数据科学吧。

So let's, let's get chatting with Daniel about data science.

Speaker 2

哦,这太令人兴奋了。

Oh, this is exciting.

Speaker 2

我们已经好几个星期迫不及待想聊数据科学了。

We've been twitching for weeks to talk about data science.

Speaker 1

这很重要。

This is big.

Speaker 0

太棒了。

Sweet.

Speaker 0

我很兴奋。

I'm excited.

Speaker 1

布赖恩和我负责分析方面,不过不错。

Brian and I are on the analytics side of things, but Cool.

Speaker 1

我的意思是,我们在这个领域已经花了四五年时间,专注于分析工作并开发支持他们的软件。

I mean, we've we spent a good, what, four, five years in this space working with analytics side and building software to support them.

Speaker 2

所以处于边缘地带。

So on the fringe.

Speaker 2

你不能称我们为数据科学家。

You you couldn't call us data scientists.

Speaker 2

你可以称我们为赋能数据科学家的程序员。

You could call us the programmers that enable data scientists.

Speaker 1

我们就是实习生。

We're the we're the interns.

Speaker 2

没错。

That's right.

Speaker 2

也许你可以为我们所有人先做个介绍。

Maybe you could start for all of us.

Speaker 2

你知道吗?你能给我们简单介绍一下背景吗?

You know, can you give us kind of a background of of a primer?

Speaker 2

什么是数据科学?

What is data science?

Speaker 2

它处于什么位置?

Where does it fit?

Speaker 2

哪些属于数据科学,哪些不属于数据科学?

What are the things that are data science and what are the things that aren't data science?

Speaker 0

是的,我认为这确实是个很好的起点,因为根据你问的人不同,你会得到非常不同的答案。

Yeah, I think that's definitely a good place to start because there are depending on who you ask, you'll get very different answers.

Speaker 0

我认为一个有用的区分标准是:当人们在推特上谈论数据科学时,他们指的是什么,而那些受雇为数据科学家的人实际上在行业中做些什么。

I think one kind of useful differentiator that I like to keep in mind is kind of what is data science and what are people talking about when they say data science on Twitter and then what are data scientists, those employed as data scientists actually doing in industry.

Speaker 0

所以,我认为在第一种情况下,人们经常谈论的是像AlphaGo击败围棋大师这样的事情。

So I think in the first case, what people are talking about a lot are things like AlphaGo beating the Go grandmaster.

Speaker 0

如果你不熟悉的话,AlphaGo 是由谷歌训练的一个深度神经网络,他们基本上训练这个神经网络,使其能够击败围棋世界冠军——这里的围棋是指棋盘游戏,而不是编程语言。

So if you're not familiar, AlphaGo is deep neural network trained by Google and they basically train this neural network such that it could beat the grandmaster Go champion, Go being the board game, not the programming language.

Speaker 0

我觉得这真的非常了不起。

And I think that's this is really amazing.

Speaker 0

这是一个巨大的成就,值得被广泛讨论。

This is a huge achievement and should be talked about a lot.

Speaker 0

但另一方面,当你去看那些在业界受雇的数据科学家们,他们实际上在做什么呢?

But then on the other side of things, then you look at what do data scientists, most of them employed in industry, what are they doing?

Speaker 0

最近《福布斯》上有一篇有趣的文章,对众多数据科学家进行了调查,了解了他们平时都在做些什么。

There was an interesting article recently in Forbes actually polled a bunch of data scientists and found out what they spend their time doing.

Speaker 0

实际上,其中很大一部分——高达90%——都是在收集数据集,也就是获取数据、解析数据并从数据中提取模式。

So actually a lot of it, 90% of it, was gathering data sets, so collecting data sets, you know, parsing data and extracting patterns from data.

Speaker 0

因此,数据科学家所做的工作约有90%并不一定涉及什么高深的机器学习,而更多是数据的搬运、转换和提取模式,使其变得有用。

So about 90% of what data scientists do doesn't necessarily involve some nifty machine learning, but more of the process of moving data around, transforming it, and extracting patterns to make it useful.

Speaker 0

而剩下的那大约10%,则可能涉及各种其他事情。

Then that other kind of last 10% could be various things.

Speaker 0

所以其中一小部分是做一些有趣的机器学习技术,另一小部分是制作仪表板或可视化,还有其他各种任务。

So a little sliver of that is doing kind of interesting machine learning techniques, maybe another sliver of that is making dashboards or visualizations and then various other tasks.

Speaker 0

因此,总的来说,对我来说,数据科学就是将任何地方的数据转化为业务洞察的过程。

So I would say in general for me, data science is the process of transforming data wherever that might be into insights for your business.

Speaker 0

有时候这可能需要神经网络,但几乎总是需要一些问题解决、一些ETL,也许还需要一些算术。

And sometimes that might require, you know, a neural network but pretty much always it requires some problem solving and some ETL and maybe some arithmetic.

Speaker 0

所以我认为这些是数据科学的许多核心支柱。

So I think those are a lot of the, you know, kind of the pillars of data science.

Speaker 2

我有个问题想问你,这个问题可能有点粗俗,提前抱歉。

So I've got a question for you and this is a little bit crass, so forgive me in advance.

Speaker 2

但几年前,大概是两年前,我读到一篇文章,说塔吉特百货能比你更早知道你女儿怀孕了。

But I I read an article a couple of years ago, maybe two years ago, about how Target knows when your daughter's pregnant before you do.

Speaker 2

没错。

Yep.

Speaker 2

这这这

And it's it's it's

Speaker 0

我妻子他们曾在Target工作,这确实是真的。

just My wife they worked for Target, it's apparently true.

Speaker 2

是的。

Yeah.

Speaker 2

这真把我吓坏了。

It it scared the hell out of me.

Speaker 2

真的吓到我了。

It really did.

Speaker 2

因为,你知道的,人们购买的都是每天都会买的东西,我从未想过他们能通过分析我购买的商品模式,与其他模式进行对比,从而发现:嘿,这人要离婚了。

Because, you know, people buying just the things that you buy every day, it it never occurred to me that they could take the the patterns of things that I buy, compare them to other patterns, and realize, hey, this guy's getting a divorce.

Speaker 2

这个人怀孕了。

This one's pregnant.

Speaker 2

这些人下个月就要生孩子了。

These guys are having a baby next month.

Speaker 2

他们能通过这些数据了解我的生活。

They can tell by that data what my life is.

Speaker 2

这几乎就像是手机世界中的元数据问题。

It's almost the metadata thing from the cell phone world.

Speaker 2

这真的令人害怕。

It's really scary.

Speaker 2

数据科学中有多少是受商业驱动的,又有多少是被广告推动的?

How much of data science is powered by commerce or is is, how much of data science is being pushed because of commerce and how much of it is being pushed because of advertising?

Speaker 2

那么,这在整体格局中又处于什么位置呢?

Then, you know, where does that fit in the grand scheme of things?

Speaker 2

推动数据科学进步的真正动力是什么?

What's the real driver behind the advances in data science?

Speaker 0

是的,当然。

Yeah, sure.

Speaker 0

所以我认为,如果我们回溯一下过去几年,某些行业其实一直以某种方式参与着数据科学。

So I think, you know, if we look a little bit back, you know, over the years, maybe, I mean, there's been certain industries that have always kind of been involved in data science in some sense.

Speaker 0

如果我们看看保险公司或其他类似公司,它们关注的是根据个人经历等信息来评估风险。

If we look at insurance companies or other companies like that that are interested in assessing risk of a person based on things that have happened to them and other things like that.

Speaker 0

这种情况已经持续了一段时间,后来人们逐渐意识到,我们可以针对特定类型的人群进行广告投放,因此在那段时间里,许多数据科学职位都与广告相关。

So that's been going on for a while and then there was kind of this time where people learned, oh we can certain types of people with advertising and so for a while there, you know, a lot of the data science job postings were advertising related.

Speaker 0

现在我认为可以说,数据科学——或者说这种通过数据产生洞察的过程——已经渗透到企业各个层面。

Now I think it would be fair to say that data science or, you know, again I'm calling data science this process of creating like data driven insights is really permeating pretty much every level of businesses.

Speaker 0

因此,如今许多数据科学家的工作是为内部业务人员提供支持,而不仅仅是为了直接为公司创造更多利润,他们可能关注的是智能监控基础设施的故障,对吧?

So a lot of data scientists now are working to inform even internal business people, not even necessarily to make a company more money directly, they might be concerned about intelligently monitoring outages in their infrastructure, right?

Speaker 0

然后,从这种最基础的层面,一直延伸到直接与盈利相关的流程,比如优化营销广告等各个方面。

And then it goes all the way to, from that kind of lowest level all the way to the directly applicable processes to the money side of things having to do with marketing improving your ads and all of that.

Speaker 0

所以我认为,从最底层的后端流程,到面向外部世界的市场营销,你都能看到数据科学无处不在。

So I think from the very lowest level on the back end processes all the way up to marketing yourselves to the outside world, I think you're seeing data science permeate all of that.

Speaker 0

因此,我认为现在的理念是,数据科学家加入公司时,目的并不一定是说‘我要来优化广告’或‘我要来预测风险或欺诈’之类,而是许多公司正在组建数据科学团队,并将这些团队嵌入到组织的各个部门,思考如何让组织每个层级的流程都实现数据驱动。

So I think the idea is really that data scientists now, you're employed and you're coming into a company, the idea is not necessarily to say, I'm going to come in and I'm going to optimize ads or I'm going to come in and I'm going to predict risk or predict fraud or whatever it is, but a lot of companies are building data science teams and embedding even embedding data science teams across the organization to say how do we make our processes at each level of our organization data driven.

Speaker 2

你提到运维(DevOps)方面,这很有趣。

It's interesting that you mentioned the DevOps side of it.

Speaker 2

我虽然没看完整场演讲,但几周前参加的一个会议上的幻灯片我看过。

I didn't know see the whole talk but I saw the slides on a conference that happened a week or two ago.

Speaker 2

我记不清是哪一个了。

It escapes me which.

Speaker 2

我想说这家公司是像Uber、Halo这样的大公司之一,他们谈论了如何利用数据科学来减少监控系统中的误报。

And I want to say the company was one of the bigger companies like Uber or Halo or something like that and they were talking about how they use data science to reduce the false positives in their monitoring systems.

Speaker 2

他们根据监控的周期和模式,知道可以将90%的误报减少,从而在非真实故障期间将值班呼叫减少了90%。

They knew because of the cycles and the patterns of their monitoring, they could reduce the false positives, the pages 90% of the time, and that cut down their, their duty calls while they were in the middle of an outage that wasn't really an outage by 90%.

Speaker 2

你知道,这背后有着实实在在的成本节约和好处。

You know, there's real cost savings, real benefits behind that.

Speaker 0

是的,没错。

Yeah, exactly.

Speaker 0

在这种情况下,你实际上是在优化你的业务流程和工程流程。

So in that case, you're really optimizing a lot around your business processes and your engineering processes.

Speaker 0

是的,这实际上来自Uber。

Yeah, that's actually so that's from Uber.

Speaker 0

这是Uber的系统Argos,也就是他们的告警系统。

That's Uber, their system Argos, which is their alerting system.

Speaker 0

实际上,在其后端,他们用 Go 语言自研了时序数据库。

And actually on the back end of that, the time series database, they wrote internally in Go.

Speaker 0

我当时参加了那个演讲,真的非常令人印象深刻。

It's really I was at that talk and it was super impressive.

Speaker 0

我被他们在这项学习中投入的全部智能所震撼,真正实现了大幅降低误报率的显著成果。

I was kind of blown away by the, all the intelligence that they're putting into that learning and really making some pretty astounding gains in, in reducing their false positives.

Speaker 2

哦,不错。

Oh nice.

Speaker 2

那个系统有没有开源的部分?

Was that, was there any open source component to that?

Speaker 2

他们已经发布过其中任何内容了吗?

Have they released any of that yet?

Speaker 0

据我所知,还没有。

As far as I know, not.

Speaker 0

我的意思是,希望他们未来会这么做,毕竟我们最近看到的趋势就是这样。

I mean hopefully they will kind of given the trends we've been seeing lately.

Speaker 0

我的意思是,希望在某个时候他们能发布数据库、前端或者任何其他部分。

I mean, hopefully at some point they're able to release maybe the database or the front end or whatever.

Speaker 0

目前,据我所知,至少我上次看到的时候,大部分内容仍然是内部的,但他们确实深入讨论了他们建模的逻辑,以及如何希望随着时间推移不断改进系统。

Right now, I think at least the last I saw, most of it was still internal, but they did discuss, give a pretty good discussion of kind of their logic around how they're modeling things and how they're hoping to kind of keep improving the system over time.

Speaker 0

所以这确实是一场值得一看的演讲。

So it's definitely an interesting talk to see.

Speaker 0

我不确定视频是否已经上传到网上,但我知道幻灯片是有的,

I'm not sure if the video is up online, know the slides are,

Speaker 2

好的,我们一定会把这些内容放到节目笔记里。

so All right, we'll put those in the show notes for sure.

Speaker 1

让我们花点时间谈谈行业常用工具,比如当前的语言和框架,你在Go这边看到哪些工具可能会被取代?

Let's talk for a moment about the kind of tools of the trade, kind of like what what what are the current tools of the trade, languages and frameworks, and what do you see those being replaced with on the Go side?

Speaker 1

因为我知道,我们之前私下聊过这个问题,也对这些技术的演进感到兴奋。

Because I know that's something that, you know, we've chatted kind of back channel about that a bit, and our excitement on watching some of these things kind of evolve.

Speaker 0

是的,当然。

Yeah, yeah, sure.

Speaker 0

所以我认为,就在一年前,如果我去参加某个数据科学活动,一个常见的问题是:我该学 R 还是学 Python?

So I would say even just like a year ago, if I was to go to some data science event, one of the big questions was, you know, should I learn R or should I learn Python?

Speaker 0

这些长期以来一直是这个领域的主要语言。

So these are like the big or traditionally, you know, have been the big players in this space.

Speaker 0

因此,有很多优秀的工具。

So there's a lot of great tools.

Speaker 0

我对 R 方面不太熟悉,但我一直在使用 Python。

I'm not as familiar on the R side, but I worked a lot in Python.

Speaker 0

在 Python 方面,你有一整套数值计算和数据科学工具,比如 pandas、SciPy、NumPy 等等。

So, you know, on the Python side you've got a lot this whole suite of numerical and data science type tools like Python pandas and SciPy, NumPy, all of these things.

Speaker 0

这种情况持续了一段时间。

And that was kind of how things went for a while.

Speaker 0

然后,就在最近,我在同一个会议上听到了关于 Uber 报警系统的讨论,我明显感觉到社区中的态度发生了变化:人们开始问,我该学什么语言?

Then, I you know, recently, when I at that same conference where they discussed the Uber alerting stuff, I was seeing definitely much more of an attitude in the community about, well, you know, the question was posed, what language should I learn?

Speaker 0

我原本以为他们会回答 R 或 Python,但发言者——恰好是 Slack 的 Josh Wills——却说,你应该都学,因为我每周都会用到 Python、JavaScript,他还提到了 Go。

And I think they were expecting to hear, you know, R or Python, but the answer that the speaker gave, who happened to be Josh Wills from Slack, he basically said, you know, learn them all because every week I use Python, I use JavaScript, I use And he mentioned Go as well.

Speaker 0

我认为,而且我希望社区能够逐渐认识到,每种语言都有其独特的功能和适用场景。

And I think and I hope that the community is kind of opening up to see that each of these languages has unique capabilities and unique use cases.

Speaker 0

我希望我们不要把这些语言都混为一谈,认为它们都在做同样的事情,而是要在它们特别有用的地方加以利用,并发挥各自的独特优势。

And the hope is that we don't kind of morph all of these languages together as all kind of doing the same thing, but we utilize them where particularly useful and utilize their unique features.

Speaker 0

当然,还有一整套围绕所谓大数据技术的工具,比如 Apache Spark 和 Hadoop,这些大多是 Java 和 Scala 的应用程序。

And then of course there's a whole suite of tools around kind of big data technologies, quote unquote, like Apache Spark and Hadoop and these are mostly kind of Java Scala applications.

Speaker 0

但即便如此,大约一年前,这方面主要还是 Java 和 Scala,而现在你看到的范围更广了,比如 InfluxDB、Uber 开发的时间序列数据库,甚至像 Pachyderm 这样有趣的项目,它们都是不基于 Java 和 Scala 的大数据框架,而是采用了 Go 和 Docker 等技术。

But then, even then, like, you know, a year ago or something, there was a lot on that side of things, it was Java Scala and now you're seeing a kind of broader range and there's things like, like, you know, looking at InfluxDB or the time series database from Uber that Uber worked on or even things like, Pacaderm is an interesting project that are big data frameworks that are not Java Scala based and utilizing technologies like Go and Docker.

Speaker 0

所以我认为,目前社区正在发生一场转变。

So I think there is a shift going on right now in the community.

Speaker 0

我知道,如果你们也注意到了这些变化的话。

I know if you guys have seen that, any of that as well.

Speaker 2

我认为 Pachyderm 是我最近看到的最有趣的技术之一,因为它几乎将‘一切都可以在笔记本电脑上完成’的理念,从 Hadoop 带入了 Docker 世界。

I think Pachyderm is probably one of the more interesting things I've seen in a while because it almost takes that, you can do everything on your laptop, philosophy with Aach and Sed moves it into the Docker world.

Speaker 2

所以,你不再是将 Unix 命令管道连接起来,而是将 Docker 容器彼此连接起来。

So instead of, piping Unix commands together, you're just piping Docker containers together.

Speaker 2

这使得大数据工作流变得非常有趣,尤其是当你引入 Mesos 或 Kubernetes 这样的系统时,可以实现大规模的大数据编排。

And that's that makes an interesting big data workflow, especially when you add something like, Mesos or Kubernetes into the the mix where you've got, you know, large orchestrations of big data things happening.

Speaker 2

听起来真的很有趣。

It sounds really interesting.

Speaker 1

是的。

Yeah.

Speaker 1

我的意思是,这些年来我见过一些项目,人们尝试用 Go 语言做文本解析和一些概率计算。

I mean, I've seen a few projects over the years where people have started trying to do, you know, text parsing and some probabilistic stuff in Go.

Speaker 1

但当时我们为这个节目做研究时,遇到的那个项目叫什么来着?

But, I mean, what was that project we ran across when we were we were kind of researching this show?

Speaker 1

那一页内容之庞大真是令人震惊。

And it was it was just astonishing how big that page was of

Speaker 3

哦,对。

Oh, yeah.

Speaker 1

用于数据科学。

For data science.

展开剩余字幕(还有 243 条)
Speaker 1

嗯。

Yeah.

Speaker 2

我知道你说的是什么。

I know what you're talking about.

Speaker 2

Golang数据库页面在mjhall.org/golang-data-science-libraries。

The the Golang data library page, it's at, mjhall.org/golang-data-science-libraries.

Speaker 2

这是一张巨大的页面,里面全是Go语言的数据科学库,我们所有人都停了下来,说:哇,这页面上有500个链接。

And it's just it's a huge page full of data science libraries in Go, and we all just kind of stopped and said, Woah, there's 500 links on this page.

Speaker 2

我以为Go语言只有两三个数据库,但实际上有很多。

I think there were two or three data libraries for Go, but no, there's a lot.

Speaker 0

是的,我觉得我见过的情况是,即使到现在,你跟很多数据领域的人交谈,他们还是会提到Python或R,你会听到人们在用这些语言工作;但那些新公司或与之合作的公司,更愿意采用Go和其他现代语言,并且没有放弃在数据科学中使用这些语言的策略。

Yeah, and I think, like, something I've seen is, even still you talk to a lot of data people and they talk about, Python or R and, you hear about people working in those languages, but the more, the newer companies that interacted with or contracted with, they are adopting Go and other kind of modern languages more readily and they're not abandoning that strategy for data science.

Speaker 0

他们也在用这些语言做数据科学。

They're also using those languages for data science.

Speaker 0

我觉得,可能还没有人像在Python中那样,围绕某个特定的小工具集形成统一,因为数据科学社区已经普遍围绕pandas、SciPy、NumPy以及其他这些工具形成了共识。

I think you know, maybe no one's kind of rallying around a certain small subset of tools like they are in Python, so pretty much the data science community has rallied around pandas and SciPy and NumPy and these other tools.

Speaker 0

也许Go中还没有出现这种情况,但正如你所说,如果你深入研究一下,会发现有很多库可以让你完成想要做的事情,尽管可能需要多做一些调查,并在你这边构建一些自定义包。

Maybe that hasn't gone on in Go yet, but there are, like you said, if you look into it, there are a lot of libraries that will allow you to do generally what you want to do, maybe with a little bit more investigation and some a little bit of custom package building on your end.

Speaker 0

一般来说,没有什么能阻止你在Go中做这些相同的事情。

Generally there's nothing preventing you from doing those same things in Go.

Speaker 1

那么,你目前在使用哪些具体的Go包或框架吗?

Now are there any specific Go packages or frameworks that you're currently using?

Speaker 0

当然,是的。

Sure, yeah.

Speaker 0

所以我提到了Packaderm。

So I mentioned, Packaderm.

Speaker 0

我目前正在使用它,并且有非常好的使用体验。

I am using that currently and had, have had some great experience with that.

Speaker 0

我也非常欣赏这种以数据管道的方式思考、将数据从一个容器传送到另一个容器的理念。

And I also very much like the idea that you can think in terms of these data pipelines and think in terms of piping data from one container to another.

Speaker 0

这非常有用,因为假设我想在管道的某个阶段高效地并发执行某个任务,我可以用Go非常轻松地编写它,然后将其封装成一个容器。

And this is very useful because let's say I want to do something very efficiently, concurrently at one stage of my pipeline, I could write that very easily in Go, right, and wrap that up in a container.

Speaker 0

如果有一个特定的Python库是我非常感兴趣的,也没有什么能阻止我将其作为流水线中另一个阶段的一部分。

And then if there was a case where maybe there's a very certain Python library that I'm very interested in, there's nothing preventing me from having that be part of another stage of the pipeline.

Speaker 0

一般来说,我写的大部分代码都是用Go,但我喜欢这种灵活性。

Generally, a lot of what I'm writing is in Go, but I like that flexibility.

Speaker 0

我也喜欢它的可重复性,这在数据科学领域目前是一个非常大的问题。

I also like the reproducibility of it, which is a pretty huge problem in data science right now.

Speaker 0

因此,能够在流水线的每个阶段提交你的输入数据和输出数据,这一点非常有用且强大,我认为。

So the fact that you can commit your input data, your output data at every stage of the pipeline is very useful and powerful, I think.

Speaker 0

此外,我一直在使用各种数据库,最近我使用了BoldDB,并研究了一些其他嵌入式数据库,这有助于我加快某些操作。

Also, I've been using a variety of databases and I recently used BoldDB and looking at some other embedded databases has been useful for me to speed up some operations.

Speaker 0

同时,我也使用了一些GoNum的工具。

And then also using some tools from GoNum as well.

Speaker 0

GoNum提供了一系列包,这些包正在开发中或已部分开发完成,涵盖矩阵操作、LAPACK的实现,甚至绘图功能。

So GoNum has a variety of packages that they've are in is in development or have been developed to some degree around matrix manipulation, implementation of LAPAC, and even plotting functionality.

Speaker 0

这很有用,因为有时我想用Go实现某些功能,但相关包还不存在,我可以借助GoNum中的内容,轻松实现我想要的算法。

That's been useful because there's been certain times like I'd like to do something in Go, maybe the package doesn't exist but I can take stuff from GoNum and very easily implement the algorithm that I'm wanting.

Speaker 0

例如,我最近做了一个k近邻的实现,遵循了Go的格言:一点复制胜过一点依赖。

For example, I recently did a k nearest neighbors sort of thing and was in the spirit of the Go proverb, a little copying is better than a little dependency.

Speaker 0

我基本上只是从Gonum中复制了一些欧几里得距离函数之类的东西,很快就拼出了我想要的k近邻算法。

I basically just stole some of the, Euclidean distance, functions and that sort of thing out of Gonum and was able to throw together exactly the k nearest neighbors thing I wanted, pretty quickly.

Speaker 0

所以这些就是我一直在使用的一些工具。

So those are some of the things that I've been using.

Speaker 2

我们最近做了一个项目,我想说是去年,当时我需要做一些数据处理。

We did a project recently, I want to say it was last year, where I needed to do some data processing.

Speaker 2

我发现把Python库移植到Go中来做数据科学相关的事情非常容易。

And I found it really easy to take Python libraries and port them over to Go for data science type things.

Speaker 2

我记不清当时具体需要做什么了。

I can't remember what I needed to do.

Speaker 2

那是一种数值计算类型的任务。

It was one of those numeric type things.

Speaker 2

但整个过程根本一点都不难,而且性能非常好。

But it really was not difficult at all and very performant.

Speaker 0

是的,我认为在 Go 中,有一种心态是,我见过一些情况,也许你们可以评论一下:在 Go 里,有时候写一个 for 循环比导入某个包来完成一个相对简单的任务还要快。

Yeah and I think part of the mindset of like, in Go, you know, it's easier something I've seen and maybe you guys comment on this is doing, in Go sometimes, you know, it's just faster to write a for loop than it is to import a certain package to do some relatively simple thing.

Speaker 0

我认为这和你刚才描述的场景类似,也许 Go 里没有你想要的非常具体的功能,但你可以从某个 Python 包中借鉴一点思路,移植过来,再结合 GoNum 中的一些东西,快速拼凑出一个非常高效的结果,并且这个结果能很好地融入 Go 擅长的异步通信等场景中。

And I think it applies similar in the context that you just described in that maybe there's not this very specific thing in Go that you want but you can steal a little bit from maybe porting over from this Python package that describes what they did and you can utilize some of the things from GoNum maybe and you can piece it together really quickly and out of that you get something that's very very performant and something that you can put into the context of asynchronous communication and all of that that Go handles so so well.

Speaker 0

对。

Right.

Speaker 1

马特·霍尔特在我们的后台频道里,也就是 Slack 上的 Gophers 聊天群组里。

Matt Holt is in our back channel, is, gotime.fm channel on Slack, the Gophers chat.

Speaker 1

他说,他在机器学习课程中用 Go 实现了 k 近邻算法。

He said that, he implemented k nearest neighbor in Go for his machine learning class.

Speaker 1

他说,体验非常好,完全值得,直接内联实现就行。

He said, great experience, totally worth it, just to inline it.

Speaker 0

是的。

Yeah.

Speaker 0

是的。

Yeah.

Speaker 0

我完全同意。

I I totally agree.

Speaker 1

说到这一点,我认为在考虑导入依赖项时,这是一个很好的模式。

To to your point, you know, I think that that's a good pattern when looking at importing dependencies in general.

Speaker 1

对吧?

Right?

Speaker 1

我的意思是,如果你只需要一个函数,尤其是比较小的函数,真的需要导入那个庞大的库吗?

I mean, if you need one function, especially if it's small, do you need to import that giant library?

Speaker 1

而且所有这些都会带来影响,所以每当你引入一个大型依赖时,总是需要评估一下。

And all of it has, implications too, so I guess it's always something to evaluate whenever you pull in a big dependency.

Speaker 0

是的,与数据科学相关的包有很多,包括机器学习包,我最近看到一个名为 GOTA(G O T A)的数据框包,正在开发中,这肯定会对探索性分析非常有帮助。

Yeah, and there are a good number of packages related to data science, including machine learning packages, and, I recently saw a data frames package called GOTA, G O T A, that's in development which will be definitely very nice for exploratory analysis, think.

Speaker 0

但没错,如果在 Go 中做数据科学感觉就像在 Python 中做数据科学,我会感到遗憾。

But yeah, I think I would be sad if doing data science in Go just felt like doing data science in Python.

Speaker 0

对我来说,Go 的乐趣之一就在于我可以这样把各种东西拼凑起来。

For me, part of the joy of Go is that I can kind of piece things together in this way.

Speaker 0

我可以从这里取一点,从Python中借鉴一点,然后以一种非常高效、性能出色、易于部署且具有独特特性的方式组合起来。

I can take a little bit from here, bring over a little bit from Python maybe, and throw it together in a way that is very performant, very efficient, and very easy to deploy and has those unique characteristics.

Speaker 0

所以,是的,我想这就是我的心态。

So yeah, that's kind of my mindset I guess.

Speaker 2

那么,对于想要开始用Go进行数据科学实践的人,你有什么建议吗?

So what kind of advice do you have for somebody who wants to get started with playing in data science in Go?

Speaker 2

你有没有推荐的资源、建议或者常推荐给别人的资料?

Do you have, resources or advice or places you like to send people?

Speaker 0

当然,当然。

Sure, sure.

Speaker 0

所以,我认为,正如我所说,用Go做数据科学应该有点不同。

So I think, first of all, like I said, I think, you know, doing data science in Go should be a little bit different.

Speaker 0

我认为,刚开始的话,我会说,那些其他刚接触Go的人觉得有用的资源,比如Peter的资源或Dave Chaney的资源,先去了解Go编程的思维方式。

I think, you know, definitely starting out, would say that those kind of same resources that other people starting out in Go find useful, like Peter's resources or Dave Chaney's, and kind of getting into that mindset of like, what is our kind of mindset in programming Go?

Speaker 0

为什么我们要这样做事,而不是那样做?

Why do we do things in this way and not that way?

Speaker 0

这些资源在入门阶段确实很有用,可以在 Go Playground 上进行一些尝试和探索。

So those are definitely useful in getting started and kind of playing around on the Go playground and all of that.

Speaker 0

然后,我学到的很多东西都是通过反复试验,比如导入这个包、尝试那个,或者自己编写一些自定义代码。

Then, you know, a lot of what I've learned has been kind of trial and error, you know, importing this package and trying that or like writing my own custom stuff.

Speaker 0

我希望这种情况正在发生变化。

I think, hopefully, that's changing.

Speaker 0

很多数据科学家一开始会进入 Python 世界,通过 Jupyter 笔记本来尝试各种操作,以弄清楚这些工具是如何交互工作的。

So a lot of data scientists kind of come in to Python and try things in Jupyter notebooks to try to figure out, you know, what what interactively how does this work.

Speaker 0

因此,我最近一直在开发一个 Go 的 Jupyter 内核,目前它已经可以正常运行了。

So I'm hoping that one of the one of the things I've been working on recently is a Jupyter kernel for Go and it's functional right now.

Speaker 0

它还需要一些完善,但我希望,随着绘图功能和其他相关工具的进一步发展,能够减轻从 Python 世界转向 Go 世界的人们的负担,让他们能够交互式地进行操作并观察结果。

It needs some work, I'm hoping that that along with, you know, further development of plotting things and other things like that, other things like that will kind of ease the burden of people coming from a Python world to the Go world and be able to do some things interactively and see what happens in that respect.

Speaker 0

当然,还有一些已经在 Go 中实现的项目,比如 InfluxDB 和 Pachyderm 等。

And then of course, there's the kind of list of things that have already been done in Go like InfluxDB and Pachyderm and those sorts of things.

Speaker 0

这些项目通常都有入门指南部分。

Generally there's getting started sections to those projects.

Speaker 0

比如在 Pachyderm 中,有一个很棒的入门示例,他们用简单的 grep 和 awk 命令来实现词频统计。

So like in Pachyderm, have a great getting started example where they do a word count with simple grep and awk commands.

Speaker 0

这是一种以这种方式开展数据科学的有趣方法。

That's kind of a fun way to get started in doing data science in that way.

Speaker 3

丹尼尔,你在即将举行的 Go for Con 上谈论 Go 和数据科学我们并不意外,但你能给我们一点演讲的预告吗?

Daniel, we shouldn't be surprised that you're going to talk about Go and Data Science at the upcoming Go for Con, but can you give us a little teaser about the talk?

Speaker 0

当然。

Sure,

Speaker 3

谁应该期待参加并观看这场演讲?

Who should be looking forward to being there and seeing that talk?

Speaker 0

当然,当然。

Sure, sure.

Speaker 0

所以演讲还在筹备中,我给的预告是:从头到尾,我将用 Go 完成整个数据科学流程,并希望以分布式的方式进行。

So it's still in the works, the teaser I'll give is that from start to finish, basically, I'm going to do data science and do it hopefully in a distributed way all with Go.

Speaker 0

首先,我们会提出一个想要解决的问题。

So starting out saying, This is a problem we want to solve.

Speaker 0

我们将使用 Go 工具来探索数据。

We're going to explore the data with Go tools.

Speaker 0

一旦我们明确了要做什么,就会用 Go 实现一个简单的解决方案,然后思考如何扩展它,接着我们会使用一个 Go 工具,比如 Pachyderm 或类似的东西,来扩展这个方案,从而展示如何仅用 Go 完成整个数据科学流程。

And then once we know what we're going to do, we're going to implement something simple in Go that will do that, and then we can think about how will that scale, and then we'll use a Go tool, maybe Pachyderm or something like that, to scale that up and illustrate how you can kind of go through that whole data science process using nothing but Go.

Speaker 0

此外,我一定会向观众发出行动号召,鼓励他们开始用 Go 做一些数据科学相关的事情,并向他们推荐一些可以参与贡献的包和项目。

And then also I'll definitely provide some call to action to the audience to start doing some data science y things with Go and point them to some packages and some projects that they can contribute to.

Speaker 3

所以这会是一个现场演示吗?

So is it going to be like a live demo?

Speaker 0

是的。

Yeah.

Speaker 0

我的意思是,这会是屏幕上展示的代码和现场演示的结合,具体要看实际情况,我希望能展示某种形式的现场演示。

I mean, it'll be a combination between some code that I'll show on the screen and then, you know, depending on how things work out, I'm hoping to show some type of live demo.

Speaker 2

我觉得你得像凯尔西·海特沃那样干,不然就别干了。

I say you gotta go Kelsey Hightower or go home.

Speaker 2

对吧?

Right?

Speaker 0

是的,没错。

Yep, exactly.

Speaker 0

没有幻灯片。

No slides.

Speaker 0

这听起来有点吓人,但可能会非常有趣。

It's a scary proposition, but it could be a lot of fun.

Speaker 2

直接在屏幕上写代码。

Just live code on the screen.

Speaker 1

如果你有幻灯片,你就得部署虚拟机来执行幻灯片里的内容。

If you have slides, you have to deploy VMs that do this stuff from the slides.

Speaker 0

有幻灯片。

Has slides.

Speaker 0

当然。

Sure.

Speaker 0

我会推荐一些 Go Notebooks,你们可以在笔记本里自己动手尝试。

I'll, I'll point to some Go Notebooks, and you can, you can do it yourself in the notebook.

Speaker 3

太酷了。

Very cool.

Speaker 1

说到Go Notebook,还有Jupyter。

So speaking of Go Notebook, there's there's the Jupyter.

Speaker 1

对吧?

Right?

Speaker 1

现在有Go库支持它了吗?

And there's now a Go library for that?

Speaker 0

或者Go,确实有一个适用于Jupyter的可用内核。

Or Go So there's there's a a working kernel for for Jupyter.

Speaker 0

它叫Gopher Notes。

It's called Gopher Notes.

Speaker 0

我大概从一月份就开始做这个项目了,现在它已经可以正常使用了,你可以用它来创建Go笔记本。

I started this back in, I guess it was January, and it's functional now so you can use it to make Go notebooks.

Speaker 0

当然,现在还有一些开放的问题和需要改进的地方,但我认为现在这个项目已经对一些人有用了,同时也是一个很好的切入点,让大家参与进来,解决一些问题,比如在笔记本中实现绘图功能。

There's definitely you know, open issues and things to work on, so this is one of those things that I think hopefully some people find useful right now but is also a great place for people to get involved and of knock out some of those issues and get plotting enabled in the notebook.

Speaker 0

而且,正如我所说,我希望这个项目能帮助人们更容易地进入 Go 语言在数据科学领域的应用。

And I'm hoping, like I said, that this project will kind of help ease people into go for data science.

Speaker 0

另外,我认为数据科学中有一部分是非常互动的。

Also, I think there is a part of data science that is very interactive.

Speaker 0

比如,你想探索数据,想看看它长什么样,想绘制直方图,而很多这类操作都是互动的。

Like you want to explore the data, you want to see what it looks like, you want to plot a histogram and a lot of that is interactive.

Speaker 0

因此,将这种互动性引入这个领域,将会非常有趣。

So bringing kind of some of that interactivity to this world is, would be would be fun.

Speaker 1

而且我觉得我们时间所剩无几了,但对于还不了解的人,你能简单介绍一下 Jupyter 是什么吗?

And I think we're running very short on time but for anybody who's not aware, you give kind of a brief rundown of what Jupiter is?

Speaker 0

当然可以。

Sure, yeah.

Speaker 0

所以 Jupyter 现在其实是一个完整的生态系统。

So Jupiter is there's actually a whole ecosystem of Jupyter projects right now.

Speaker 0

Jupyter 的拼写是 j-u-p-y-t-e-r,核心项目叫做 Jupyter Notebook,你可以在自己的电脑上启动一个 Jupyter Notebook 服务器,然后在浏览器中创建一个 Python 笔记本,现在还有许多其他内核。

So Jupyter is spelled j u p y t e r and the main project is called Jupyter Notebooks and what you can do is you can start a Jupyter Notebook server on your computer and then if you go to the browser, you can start like a Python notebook and there's a lot of other kernels now.

Speaker 0

你可以创建一个Go笔记本或Scala笔记本。

You can start a Go notebook or a Scala notebook.

Speaker 0

当你打开它时,这有点像有没有人用过Mathematica?它有不同的单元格,你可以在这些单元格里输入代码并交互式地运行。

And when you open that, it's kind of similar to I don't know if anybody's used Mathematica before, but there's different cells and you can put code in those cells and evaluate that interactively.

Speaker 0

所以单元格里的代码是实时的,但你也可以在笔记本中插入其他内容。

So it's live code in the cells but you can also interject other things into the notebook.

Speaker 0

你可以在笔记本中加入Markdown并渲染它。

So you can put in markdown into the notebook and render that.

Speaker 0

你还可以插入图片,最终你的笔记本可以交给别人,说:嘿,这是我做的。

You can put images in and then, and then you kind of have this whole at the end of your notebook, can hand that off to someone else and say, Hey, here's what I did.

Speaker 0

你也可以在浏览器中运行它,或者导出为PDF或幻灯片,与他人分享,甚至将其转换为仪表板。

You can also run it in your browser or you can export it as a PDF or a slideshow and share it with other people or turn it into a dashboard even.

Speaker 0

因此,有许多插件支持这些功能。

So there's a variety of kind of plugins that allow this functionality.

Speaker 1

太棒了。

Excellent.

Speaker 1

我们的时间差不多用完了,但在结束节目之前,你有什么想跟大家分享却还没机会提到的内容吗?

So we've we've just about exhausted our time here, but before we kind of transition into closing out the show, is there anything that you wanted a chance to kind of share with everybody that you have not got a chance to?

Speaker 0

我觉得,我们刚才讨论的很多内容正是我想谈的。

I think, you know, I think, a lot of what we talked about is definitely what I wanted to talk about.

Speaker 0

我想鼓励一下那些在Go语言中做数据科学的人,即使他们在数据科学社区中并不那么显眼。

I would, I would encourage people out there, you know, there are a good number of people doing data science in Go out there, even if they're not the most visible in the data science community.

Speaker 0

所以我想对所有Go工程师说,去试试这些数据科学相关的应用吧,我相信你们会发现体验非常好,而且用Go语言也能产出很棒的成果,这些成果可以真正部署、扩展,具备我们喜欢的Go语言的所有优点。

So I would say, you know, all of you Go engineers out there, start playing around with some of these data science y applications and I think you'll find that the experience is really good and you can come out with some great deliverables in Go and things that can actually be deployed and scale and all of those good things that we like about Go.

Speaker 2

我觉得。

I feel.

Speaker 1

我们通常用‘自由软件星期五’的话题来结束节目,大家轮流感谢那些当前或过去让我们的生活更轻松的项目或贡献者。

So the way we typically wrap this thing up is we have our Free Software Friday hashtags, where kind of all of us go around and thank some projects or contributors or both that kind of are making our lives easier currently or in the past.

Speaker 1

那么,Brian,你想感谢谁呢?

So with that being said, Brian, who do you want to thank?

Speaker 2

我知道我们的规则是不超过一个,但我有两个,提前请原谅我。

I know our rule is no more than one, but I have two, forgive me, in advance.

Speaker 1

我一周做了三个。

I did three one week.

Speaker 2

很酷。

It's cool.

Speaker 2

很好。

Good.

Speaker 2

第一个是Alan Shrieve的NGROC。

So the first is NGROC from Alan Shrieve.

Speaker 2

天哪,我每天都会用到ngrok。

My God, there isn't a day that I don't go by without using ngrok.

Speaker 2

它是将你机器上运行的内容分享给其他地方的人的全球最佳工具。

It's just the best tool on the planet for sharing something that's running on your machine with people that are somewhere else.

Speaker 2

如果你还没用过,我觉得它在ngrok.io,但你也可以搜索NGROK。

And, if you haven't used it, I think it's at ngrok.io, but you can search for NGROK.

Speaker 2

多么棒的工具啊。

What an awesome tool.

Speaker 2

一直都在用。

Use it constantly.

Speaker 2

我爱ngrok。

I love ngrok.

Speaker 2

还要特别感谢Gopher Slack上Gopher JS频道的朋友们,他们对我拙劣的JavaScript技能表现出了非凡的耐心。

And then, you know, kind of an extra special shout out to the people in the Gopher JS room on the Gopher Slack who have had unbelievable patience with my sad, sad JavaScript skills.

Speaker 2

谢谢你们。

Thank you, guys.

Speaker 1

还有,Carlicia,你呢?

And, Carlicia, how about you?

Speaker 3

我要提一下Jupyter Notebook和Go内核。

I'm going to mention Jupyter Notebook and the Go Kernel.

Speaker 3

Daniel已经很好地介绍了Jupyter Notebook,但我还是想提一下,因为它不仅仅用于数据科学。

And Daniel did a great job describing Jupyter Notebook, but I still want to mention it because it is not just for data science.

Speaker 3

我来告诉你们为什么。

And I'm going to tell you why.

Speaker 3

我偶然发现了一款商业工具,它是一个笔记本。

I came across this commercial tool that is a notebook.

Speaker 3

我当时简直惊呆了。

I was just my mind was blown.

Speaker 3

我觉得这就是我一生都在寻找的工具,现在我用它来记笔记。

I was like, this is the tool that I've looked for all my life and it's what I use now to take notes.

Speaker 3

它和 Jupyter 一样,有单元格。

It has just like Jupyter, it has cells.

Speaker 3

你可以有代码单元格、Markdown 单元格或文本单元格。

You can have code cells or markdown cells or text cells.

Speaker 3

这真是太棒了。

It's been the most amazing thing.

Speaker 3

我不断告诉我的丈夫,他是一名数据科学家,我一直对他说:你一定要试试。

And I kept telling my husband, he's a data scientist, and I kept telling him, You have to try.

Speaker 3

这真是太棒了。

This is the most amazing thing.

Speaker 3

两周过去了,我还在跟他说,你一定要试试。

And two weeks go by and I'm telling him, You gotta try.

Speaker 3

你一定要试试。

You gotta try.

Speaker 3

他终于过来看了看,说:哦,我有这个。

He finally comes over and looks at it and he's like, Oh, I have this.

Speaker 3

而且它是免费且开源的。

And it's free and open source.

Speaker 3

它叫 Jupyter。

It's called Jupyter.

Speaker 3

我心想:Jupyter 就是这个?

I'm like, That's what Jupyter is?

Speaker 3

Jupyter 就是这个?

That's what Jupyter is?

Speaker 3

因为我是在浏览 Gopher Gala 提交内容时,遇到 Go Kernel,才接触到 Jupiter 的,那是 Daniel 为 Gopher Gala 做的。

Because I ran across Jupiter when I ran across the Go Kernel that Daniel did for Gopher Gala when I was browsing Gopher Gala submissions.

Speaker 3

然后我进去看了Jupiter,看了之后我想,我不明白这是什么。

And then I went into looked at Jupiter, and I looked at it I like, I don't understand what this is.

Speaker 3

这不适合我。

It's not for me.

Speaker 3

我不愿意花这个时间。

And I'm not willing to spend the time.

Speaker 3

但我后来发现了这个,于是我想,原来这就是它。

So I find this though, and then I figured, oh, that's what it is.

Speaker 3

所以实际上,上个星期天,我花时间设置了Jupyter,并将Go内核连接上去。

So actually, last Sunday, spent time setting up Jupiter and hooking up the gold kernel to it.

Speaker 3

这太棒了。

And it's super amazing.

Speaker 3

而且它不仅仅用于数据科学。

And it's not just for data science.

Speaker 3

你可以记录笔记,也可以运行代码。

You can keep your notes, you can run codes.

Speaker 3

我在想,我可以整理一些Go语言课程。

I'm thinking, I have ideas to put together Go courses.

Speaker 3

我肯定会用Jupyter来做这个,因为所有内容都是自包含的,我可以分不同章节,直接运行代码,还能做演示,就像丹尼尔说的,可以导出。

And I would totally use Jupyter for that because everything is self contained, I can have different sections, I can run the code right there, and you can do a presentation, just like Daniel was saying, you can export it.

Speaker 3

当你把它托管在GitHub上时,虽然失去了交互性,但整个格式都保留着,看起来非常漂亮。

And when you host it on GitHub, you see the whole thing of formatting is not then it's not interactive, but the whole formatting is there and looks beautiful.

Speaker 3

太棒了。

It's great.

Speaker 2

我被说服了。

I'm sold.

Speaker 3

去干吧。

Go for it.

Speaker 1

我有点想用它来做普通笔记。

I kinda wanna look at it just for normal note taking.

Speaker 0

嗯。

Yeah.

Speaker 0

还要感谢Carlesia帮忙完成设置,并就各种问题给了我反馈。

And and and thanks to Carlesia for for going through the setup and giving me feedback on the the different issues as well.

Speaker 0

非常感谢她,也很高兴看到大家开始使用它。

So definitely appreciate it and glad glad people are are starting to use it.

Speaker 3

所以,是的,我遇到了一个非常小的问题,并提了一个issue,Danielle反应特别快,立刻回应了我遇到的困难。

So Yeah, I did run into just a super minor hiccup and I opened an issue, Danielle was so quick and he was like instantaneously responding to what I was asked, like, trouble with.

Speaker 3

所以我觉得他会为每个人提供同样的帮助。

So so I think he'll do the same for everybody.

Speaker 1

哎呀,她树立了先例,现在有压力了。

Uh-oh, she's setting precedent There's pressure.

Speaker 2

下周的节目,我们将讨论开源带来的压力。

On next week's show, we're going to talk about open source pressure.

Speaker 1

以及我们如何为贡献者提供更多支持。

And how we can add more to the contributor.

Speaker 3

设定预期。

Setting expectations.

Speaker 1

我们还喜欢问问嘉宾,他们是否想感谢某个人,或者想推荐一些项目。

We, we also like to ask our guests too, if there's anybody they kinda wanna thank, any projects they'd like to bring highlights to.

Speaker 0

是的。

Yeah.

Speaker 0

所以我想提一下 Vemgo,因为我最近一直在用它。

So so I I wanted to mention Vemgo, because I've using it recently.

Speaker 0

我知道很多人在外面都在用它,但我是个新用户,我发现它太棒了,一旦我开始使用它并用 Vem Go 写 Go 代码,我觉得它极大地改善了我的开发流程,我想特别感谢这个项目,它的作者是 Fatih,是这么念的吗?

I know a lot of people use it out there, but I'm kind of a recent convert and, I've just found it amazing and, I think it's, you know, once I, once I kind of got in the process of using it and, writing Go, in in Vem with Vem Go, think it's it's improved my my development process quite a bit and I think, that's that's really the one I would like to think, which I think so name it, Fatih, is, is that how you say it?

Speaker 0

是的。

Yes.

Speaker 0

Art, art salon,没错。

Art, art salon, yeah.

Speaker 0

所以我非常感谢这个工具,我觉得它非常强大,能显著提升你的工作流程。

So, I'm definitely thankful to that and I think it's, it's super powerful and can improve, can improve your workflow.

Speaker 0

以前我用的是 Atom,但现在我几乎完全改用 Vimgo 了,我觉得这是个很棒的项目。

Previously, I was using Atom, and now I've pretty much just been using Vimgo, recently and I think it's a great project.

Speaker 2

是的。

Yeah.

Speaker 2

法提赫现在当爸爸了,恭喜大家。

Fatih is now a new dad, so congratulations to everybody.

Speaker 2

-宝宝 -恭喜。

-Baby -Congrats.

Speaker 2

-恭喜。

-Congrats.

Speaker 1

-是一周前,还是两周前了?

-That's a week ago, two weeks ago now?

Speaker 2

我觉得几乎没有哪一周我们没聊过VimGo。

I don't think there's been a week that's gone by that we haven't talked about VimGo.

Speaker 1

是的。

Yeah.

Speaker 1

我们当中总有人在用VimGo。

One of us always always has VimGO.

Speaker 1

我会顺着这个说法继续说,因为我想要感谢的是 NVIM。

And I'm gonna play right along with it, because who I'm gonna thank is NVIM.

Speaker 1

我当 Vim 用户已经很久了,后来我试着玩了 NVIM,然后不知怎么的,我甚至不记得自己为什么又回到了标准 Vim。

I've I'm I've been a Vim user for a long time, and then I kinda tinkered with NVIM, and then kind of I forget I don't even remember why I went back to Vim, to standard Vim.

Speaker 1

然后 Brian 说:老兄,你为啥还用普通 Vim?

And then Brian's like, dude, why are you still using regular Vim?

Speaker 1

于是我重新回到了 NVim,现在我超爱它。

So I went back to NVim, I'm loving it.

Speaker 1

所以当然,如果没有 VimGo,这一切就不完整了,所以我再感谢一次 VimGo。

So and then, of course, it wouldn't be the same without VimGo, so I'll thank VimGo again.

Speaker 3

没错。

Yeah.

Speaker 3

是 MemVim 还是 NeoVim?

Is it MemVim or NeoVim?

Speaker 2

NeoVim。

NeoVim.

Speaker 2

你输入的命令行是 NVIM。

The command line you type is NVIM.

Speaker 2

是的。

Yeah.

Speaker 2

这两者搭配起来非常棒,因为 NeoVim 支持异步处理,而 VimGo 能很好地支持这一功能,让你可以在继续编辑的同时进行编译。

And those are two great tastes that taste great together because NeoVim does asynchronous processing, and VimGo enables that very nicely so you can do things like compile while you continue to edit.

Speaker 2

这在标准 Vim 中是不可能的,但在 NeoVim 中却非常出色。

And that's not possible in regular Vim and it's really tasty in NeoVim.

Speaker 0

哦,酷。

Oh, cool.

Speaker 0

你们让我在演讲结束后有了事情可做。

You guys are giving me something to do after the talk ends.

Speaker 1

我们一直在学习。

We're always learning.

Speaker 1

一直在用 Vim 学习。

Always learning with Vim.

Speaker 1

你从事这个工作多久并不重要。

It doesn't matter how long you've been doing it.

Speaker 1

你还是会发现新的插件。

You still you you find new plugins.

Speaker 1

你会找到新版本。

You find new versions.

Speaker 1

而且我觉得我们时间真的到了。

So and I think we are actually out of time.

Speaker 1

我们超时了。

We're over time.

Speaker 1

但这很有趣。

But it's been fun.

Speaker 1

所以

So

Speaker 0

这非常有趣。

It's been a lot of fun.

Speaker 1

是的。

Yeah.

Speaker 1

这太棒了,我也很期待你在GopherCon上的演讲。

This has been great, and I'm looking forward to your talk at GopherCon as well.

Speaker 1

对于任何想更多了解丹尼尔的人,你应该参加他在GopherCon上的演讲。

And, and for anybody who wants to hear more from Daniel, you should attend his talk at GopherCon.

Speaker 0

没错,我会在整个会议期间都在场,很乐意和大家聊聊Go语言和数据科学,随时来找我。

Yep, and I'll be around and be happy to talk about Go and data science, throughout the conference, so hit me up.

Speaker 2

是的,顺便说一下,随着我们即将结束,下午我们将安排与演讲者的小组讨论,所以如果你想与该领域的专家深入交流,GopherCon的下午就是你的机会。

Yeah, just on that note real quick, as we're wrapping up, we are gonna have panels with the speakers in the afternoons, so if- if you want to get some quality time in with the experts in the field, the afternoons at GopherCon are your time.

Speaker 2

Gophercon.com,现在就购票吧。

Gophercon.com, buy your tickets now.

Speaker 2

这听起来像电视广告吗?

Did that sound like a soap commercial?

Speaker 2

我尽力了。

I tried.

Speaker 1

如果你要做广告,就得快速说话,因为你得在五秒内说完。

You gotta do the fast talking thing if you're gonna do the commercial, because you gotta get it in that, like, five seconds.

Speaker 2

我就是想达到这个效果。

That's what I was going for.

Speaker 2

我想我没法说快话。

I guess I can't talk fast.

Speaker 2

抱歉。

Sorry.

Speaker 1

好吧。

Alright.

Speaker 1

所以我想感谢所有参加节目的嘉宾和整个小组。

So I wanna thank everybody who's on the show, the entire panel.

Speaker 1

我想感谢所有正在收听和将来会收听的听众。

I want everybody who is listening and who will be listening.

Speaker 1

如果你们想听到更多内容,一定要分享这个节目。

Definitely share the show if you guys want to hear more.

Speaker 1

我们会交替讨论社区动态和与人交流的话题,以及深入的技术内容,想订阅的话请访问 gotime.fm。

We're going to kind of vary topics between kind of community and what's going on and talking to people, as well as deep dive technical content, go to gotime.fm if you want to subscribe.

Speaker 1

我们在 Twitter 上是 gotime.fm。

We're gotime.fm on Twitter.

Speaker 1

此外,我们还有一个 Slack 频道,如果你想在节目期间参与幕后交流的话。

And then we also have a Slack channel if you want to catch kind of back channel action during the shows.

Speaker 1

在 Gopher Slack 上搜索 Goten FM 就能找到我们。

That's Goten FM on the Gopher Slack.

Speaker 1

说到这里,哦,我们还会直播这个节目,我们会提供链接,以便继续进行。

And with that being said oh, we also will be doing this thing live too, so we'll get a link up so that we can continue to do this.

Speaker 1

我觉得这一期进行得非常顺利。

I think it's went really well this episode.

Speaker 1

那么,就此告别,各位。

So with that being said, goodbye everybody.

Speaker 2

再见。

Goodbye.

Speaker 2

谢谢,丹尼尔。

Thanks, Daniel.

Speaker 2

再见。

Goodbye.

Speaker 2

再见。

Goodbye.

关于 Bayt 播客

Bayt 提供中文+原文双语音频和字幕,帮助你打破语言障碍,轻松听懂全球优质播客。

继续浏览更多播客