
今天,在我们的虚拟工作室中,最著名的捐赠者之一是
杰弗里·里希特 。
他目前是Microsoft分布式云应用程序和存储部门的合作伙伴软件架构师。 换句话说,一个了解Azure存储的一切的人。
常见问题 |
---|
文字过多。 这是怎么回事?为了使阅读更加有趣,对于本文,我们提出了一个更有趣的布局。 左边会有会说话的头,右边有文字。 如果您不幸地转到感兴趣的部分,则目录中会有锚链接。 演员:  Eugene phillennium Trifonov( 非技术问题 ) - 公司发展技巧
- 结合不同类型的活动
- 阅读什么,学习什么,怎么写
 Oleg olegchir Chirukhin( 技术问题 ) - 为什么Richter学习JS,Golang和Python
- 我应该继续用C ++编写
- Windows,.NET和一般平台上的发展演变和未来
- JavaScript将会占领世界,类型安全是必要的吗
- 有关云提供商的好处
- 有什么更好的选择-私人飞机或私人直升机
- 怎么做
为什么本文落入JavaScript中心?仅对于那些对Azure架构师关于JS的观点以及他在holivar中对类型安全的立场感兴趣的人。 这个大喜剧 来自访谈中的访谈 ,他看不出结局。
为什么本文落入C ++集线器?里希特最初写有关C ++的书。 仅适用于那些对Azure架构师对C ++的未来和适用性感兴趣的人
|

杰夫(Jeff)在90年代初出名,当时他写了一本有关如何编程Windows 3.1的书。 他的书“ Microsoft Windows的编程应用程序”成为经典著作,后来作为“通过C / C ++的Windows”发行,并经受了多个版本的挑战。
随着.NET的到来,他写了“通过C#进行CLR”-事实证明,它也是经典之作,也有多个版本。 当时,他是Wintellect的创始人之一,并且正式不是Microsoft的一员,因此他可以更自由地进行评估。 在Windows上赢得了主要独立专家的声誉。 这是Charles Petzold和Don Box的传奇人物。
关于生活:工程师,作家,企业家
我们为您提供许多不同的问题,我将从与技术部分有关的几个问题开始。 我是否正确理解您同时在Microsoft和Wintellect工作?
我已经是Wintellect的所有者了18年,直到上个星期。 三年前,我加入了Microsoft的Azure团队,从那时起,我一直没有在Wintellect工作。 我与Wintellect没有任何重要联系。
知道了 但是,我仍然想问您一些有关Wintellect创作者的经历的问题。 在我们的会议上,聚集了许多熟悉软件开发过程的程序员,其中一些人最有可能考虑创建自己的公司,但他们不熟悉此事。 您在这两个方面也都具有知识,因此,听到您对计划建立公司的人的建议会很有趣。
您绝对不会将所有时间都花在开发上,并且您将学到很多其他方面的知识:业务,资金管理,经济,财务,雇用和解雇。 您将需要不断做出很多决定,并与人们(与客户,合作伙伴)进行大量互动。 您将需要找到适合所有各方的选项。 尽管如此,在Wintellect,我能够花足够的时间进行开发,因为我们雇用了主要从事业务的人员。 但是,我也必须参与此事的创业,并且我很高兴地做到了,因为这是一次有趣的新经历。 我认为我不需要全天候地思考字节和字节的事实,这使我成为了一个更不可或缺的人。 我对任何事情都不后悔。
您遇到任何意想不到的困难吗? 或者,相反,有什么事情比您预期的容易吗?
我们的道路无疑是非常不平坦的:有时业务进展顺利,新客户来了。 在其他时期,一切都有些不同。 当我们进行WintellectNOW视频订阅时 ,启动它并实现盈利变得比我们想象的要困难得多。 最终,事实证明,它现在非常成功,但是比我们预期的花费了大约一年的时间。 此外,员工还会感到意外:有些很棒,有些则给公司带来了伤害,而这些事情通常要到以后才能弄清楚-在日常工作中是看不见的。 总体而言,我们的期望常常在好的和坏的方向上受到欺骗。
在我看来,许多开发人员不想创建自己的公司,他们担心,由于花时间在业务上,他们将不再受到最新技术的指导。 您很难跟上技术方面的最新动态吗?
这是一个好问题。 我认为解决方案是专业化。 Wintellect成立时拥有三个技术合作伙伴。 我们每个人都从事某个领域。 我们谁都不可能成为所有这些领域的专家。 我的专长是系统编程-操作系统,语言,运行时,多线程等。 这种事务组织可以节省资源。 如果一种语言每年发布一次新版本,那么对它进行跟踪就很容易了,在对我来说很重要的领域中-从来不会给我带来任何困难。
您要做许多与创业有关的事情:做演讲,写书。 您是否感到这些各种形式的活动相互干扰,反之亦然? 例如,用将来的演示文稿写书有帮助吗?
绝对有帮助。 在所有班级中,写书会占用最多的时间和精力,迫使人们注意语言,语法,组织材料并找到正确的示范。 这是非常困难的,写每本书通常需要几个月的时间。 但是完成这项工作后,制作幻灯片已经非常容易,因为已经有演示了,您只需要对材料进行压缩即可。 此外,了解各种系统的内部结构后,我可以作为顾问或在Microsoft的Azure存储团队中工作时,提供正确的建议并选择正确的技术来解决问题。 总的来说,所有这些活动都可以互相帮助。
您的写作经验改变了您读书的方式吗? 因此,您是否更注意书籍?
我认为我已经改变了,在我看来,我也更加关注其他发言人的演讲。 我看演讲者是否具有表达材料的技巧,对材料的熟悉程度,是否重复别人所说的话,或者他是否真正理解问题。 我还注意书中的相同内容:书是否写得好,对问题是否有深刻的技术理解,是否给出了直接建议,或者描述了系统的内部结构。 在我的书中,我尝试描述系统的操作,注意正面和负面的方面,展示如何推迟可能出现的问题,描述性能要求。 在我看来,由于我为每种技术提供了很多背景知识,而不仅仅是指出:做到这一点,以不同的方式做事,因此我的书被认为是比较成功的。 我会继续学习新技术,因此我会阅读技术文献,观看YouTube和其他来源的视频并参加报告。 仅凭某种技术来这种工作是不够的,我需要更深入地研究它,以了解在什么情况下它是好的,在哪些情况下不是,什么技巧。
由于您关注其他作者的书籍和报告,因此可以推荐其他人的作品或视频吗?
最近,我一直在与Microsoft的工作相关联地研究Go和Python,为此,我阅读了Go团队的日志和该语言的规范。 对于开发人员没有阅读他们编写的语言的规范,我总是感到惊讶,因为它完全阐明了语言的工作方式。 相反,人们会读书。 我建议始终阅读规范。 否则,我通常会在会议上观看有关各种技术的演讲视频。 在这里很难提出任何建议-一些发言者更好,另一些发言者更糟。
您不必打电话给绝对比其他任何人都优秀的人,只需说出您喜欢的人。
我喜欢那些讨论问题细节的发言人。 我一直对内存管理报告感兴趣。 由于内存管理,通常会有很多性能问题,这对我来说非常重要。 用我写的语言写的关于垃圾收集器工作的任何报告都对我很有趣:例如,是否使用压缩等等。 当报告谈论无法访问信息的事物时,这特别好-垃圾收集器的工作通常在规范中也没有描述。 有一些模式可以使垃圾收集更加有效。 这一切使我感兴趣。
技术装备
让我们与我无聊的技术问题进行一些对话。 杰弗里,你来自微软。 如果有出色的C#,为什么需要Go和Python?
在Microsoft,我与团队一起致力于Azure存储的SDK和工具。 我们正在开发多种不同语言的Azure存储SDK,包括Go,.NET,Python,Java,NodeJS,PHP,Ruby,C,C ++。 我们正在重组我们的SDK,第一个实现是在Go上完成的。 这是一个关键的变化,我们不确定我们的客户会如何反应。 当时我们没有Go SDK,因此第一个SDK是用Go编写的,这样我们的客户就不会破坏任何东西。 但是在收到积极的反馈之后,我们切换到Java,因为我们有需要Java异步库的重要客户。 在这方面,我开始研究RxJava,并且一般而言,我会更多地使用Java。 自然,我在C#方面的经验在这里给了我很多帮助。 我们目前从事NodeJS的业务,因此我目前正在研究它和TypeScript。 另外,我们开始将新的SDK移植到.NET-在这里对我来说很少,因为我已经知道了。 接下来的是Python,因此我也会对其进行研究。 这是我们团队的工作-我们为所有这些语言编写SDK,因此我的活动不仅限于一种语言。
好,知道了 您可以在Amazon上找到大量的书籍。 我在那找到的最古老的书“通过C / C ++的Windows”可以追溯到2007年。 但是您在90年代确实以书的作者而闻名。 怎么会这样
实际上,我有一本书出版得更早了,但是它已经很老了,我不确定它是否在亚马逊上。 它是为Windows 3.0编写的,即 大约是1990年或1991年。 但是很少有人买,也很少有人知道。
像Windows 3.0。
是的,那是很久以前的事了。
然后您切换到C#并开始编写有关它的书籍,对吗? 您认为C ++的未来是什么? 它甚至存在吗? 我们应该继续负担C ++的负担,还是改用Rust,Go或类似的东西更好?
我认为我们永远不会剩下一种会击败其他所有人的语言。 编程语言的优势在于,每种语言都可以很好地完成特定种类的工作。 大约每个月我都会检查各种语言的流行指数,而今天C和C ++仍然非常普及。 由于Microsoft的Azure团队有许多使用C和C ++的客户,因此我们不会离开这些语言。 而且,由于物联网的发展,最近对这些语言的兴趣有所增加。 我们正在谈论控制恒温器的小型设备,例如恒温器。 它们具有很少的内存和较弱的处理器,并且除汇编程序外,C和C ++最适合它们。 因此,我认为这些语言将继续使用很长时间。 自从我们开始谈论Rust以来-我已经有了一些经验,并且在我看来,它有很多非常有趣的想法。 它可能是某种安全的C / C ++。 我认为这是非常有前途的。 然而,在我看来他似乎还不成熟。 我们的团队尚未对此进行处理,但是我们将继续对其进行监视,并且将来情况可能会有所变化。
我是否正确理解您拥有适用于C和C ++的SDK?
是的,我们有一个用于Azure存储的C ++ SDK。 其他一些团队也有C / C ++ SDK,但不是全部,他们还没有决定是否将来创建它们。
Windows开发行业如何发展? 据我了解,您已经看到了世界上的一切。 我记得自己的第一件事是Delphi。 然后,C#开始流行,到目前为止,我还没有看到C#/。NET,Java之类的下降的迹象。 您认为它们是命令式编程发展的最后一步吗? 在未来的一年或十年中出现全新事物的可能性有多大? 说,一种支持神经网络的语言?
我是一个尊贵的人,尤其是与您相比,我在我们的行业中见过很多东西。 我已经编程了大约45年。 多年来的重大变化是操作系统的重要性下降。 我主要专注于后端软件服务和命令行工具。 我过去经常使用GUI进行更多的工作,而我的第一本书专门致力于:具有菜单,列表框,组合框,处理鼠标事件,键等的GUI应用程序。 在某个时候,我不再为此感到足够的紧张,因为在这个领域中,您经常会发生激烈的辩论,在某些情况下是使用列表框还是组合框,宽度是100像素还是1000像素,应该使用哪种颜色。 我对这些讨论感到厌恶,所以最终我停止这样做。 至于语言,我认为我们仍将有许多不同的选择。 语言消亡了很长时间,即使到今天,您仍然可以遇到用Cobol,Fortran或鲜为人知的语言编写的人们。 新语言将一直出现-最近,朱莉娅(Julia)声名,起,克洛瑞尔(Clojure)的存在时间更长。 这些新语言吸引了一段时间的关注,此后一些成功,而另一些则没有。 C#提出了一条令人印象深刻的道路,它已有15年的历史了,并且仍然非常普遍。 在我看来,由于Microsoft .NET团队创建了.NET Core(现在可以在Linux上运行),因此在许多方面为它注入了新的活力。 如果您使用C#编写,则您的技能将适用于大量不同的场景。 我认为对C#的兴趣不会持续多年。
分钟的广告。 Jeff将出席DotNext 2018莫斯科会议,主题为“构建响应式和可扩展的应用程序” ,该演讲将讨论使用异步IO构建高度可扩展的系统(在服务器和客户端上)。 坦率地说,他并非每天都飞往俄罗斯,这不仅是聆听报告,而且是在讨论区面对面讨论当前问题的好方法。
您现在要编写“ 通过C#的GNU / Linux运行时”吗?
是的,我想要。 我认为,出于某些原因,对于GNU / Linux服务的开发人员来说,它比Windows更适合-某些情况下除外。 我认为C#是一门很棒的语言。 我最近结识了Java:出于正确性的考虑,我只能说在Java之后,我开始更加欣赏C#。 我真的很喜欢C#中的值类型。 我们最近使用Java将文件映射到内存中,但是无法直接关闭它,我们不得不等待垃圾回收。 一些Java解决方案对我来说似乎毫无意义。 在我看来,C#和.NET变得更好。
三年后,我们Javists将具有价值类型。
是的,我知道,并且您有一些通用名称...
我认为“一些”是非常准确的描述。
好吧,您的仿制药有点怪异。 但是Java是一种非常流行的语言,人们非常有效率地使用它。 他当然很重要。 但是,我认为,在.NET中,某些方面会更好。 即使您添加值类型,我们仍然需要为Java的较早版本提供支持。 因此,几年后将无法实现这些新机会。 但这很好:所有语言都在发展,新的机会出现在其中。 Java,.NET和C#都将生存很长时间,尤其是考虑到最近的一些变化(例如.NET Core)。 因此,在我看来,C#for GNU / Linux是编写服务的人们的绝佳组合。
但是要与后端交互,您需要一个UI。 一旦我们只有文本控制台,然后出现了UI,这使软件的功能更加强大。 如今,有了Electron和其他基于JavaScript的引擎,任何学生都可以在其上编写接口。 您是否不担心将来所有内容都将使用JavaScript编写?
不,我不这么认为。 首先,这是一个性能问题:在JavaScript中,它无法与C,C ++,Go甚至C#和Java相提并论。 此外,我无法想象在编译阶段编写没有类型安全性的大型项目。 当我进入类型安全语言的世界时,我一见钟情。 仅JavaScript不能提供类型安全性,因此我不会在大型项目中使用它。 但是可以使用TypeScript,并且我们将使用TypeScript编写新的SDK。 与常规JavaScript相比,这是向前迈出的重要一步。 但是我认为,全世界不会出于任何一种目的而只使用一种语言。 这根本没有道理。 即使我们谈论的是物联网,运行JavaScript的环境也需要大量资源,许多设备根本无法提供它们。
好吧,JavaScript没有问题。 他们在哪 您个人和整个行业的主要问题是什么?
我不确定它们是否与语言或操作系统有关。 目前,操作系统实质上已成为常见的家庭用品。 它们用于发送电子消息和访问Internet。 对于大多数人来说,使用Windows,Mac还是Linux并不重要。 我们今天使用的语言已经非常强大。 实际上,大多数语言只是将数据从A点移动到B点。您有一个集合,您可以查看它,过滤内容-每种语言都可以执行这样的操作。 接下来,我们需要机器相互通信。 这里的标准是TCP,HTTP被广泛使用,但是还有其他协议。 所有这些技术都很好用,但是性能可以进一步提高。 我认为,当今最严重的困难与服务的创建有关。 , , . , , . , , , , . , , , . , , , . Microsoft Azure, , , .
Azure ? ?
. . , , . , , , Azure Storage (, ) CosmosDB, - Amazon — . , . . , , , ? . Azure , . , , . , - , , .
. Wintellect , : «We don't just build software. We build developers.». , ?
Wintellect . , . , , Windows, .NET. , , : , , . . Microsoft , . — , — . . . , , / . , , , , . , , , . : , («you get out what you put in»). , , , . , .
, , . — , , , . ? ? , , , . , . - ? , « »? : , , — .
. , — - , - . - — . . - , . . , , , , . , , . , - , . , . . , , .
, , , ?
, . , : . . . : - . , , , . , . .
. , ?
, .
- «» , ?
是的 . , , , . . , . , , , . , , - , . - . . . , , . , — . , , . , . , , . Wintellect, . , - , . , .
- . - ?
45 , - . , - , . . , . , . , - . , , . — ! , .