专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Java默认可变性万亿美元级别的错误InfoQ访谈

  JamesWard是谷歌的Kotlin产品经理,同时也是JavaChampion。他和BruceEckel(《Java编程思想》作者)一起主持快乐之路编程播客。在其中一集播客中,Eckel谈到了仍被困在Java世界中的人们。Ward对此表示同意,并将Java的默认可变性称为万亿美元级别的错误(参考了NullPointerException是十亿美元级别的错误的说法)。Ward对Java的看法引起了InfoQ的好奇。InfoQ采访了他,以下是采访内容。
  InfoQ:Kotlin产品经理在谷歌是一个怎样的角色?你的日常职责是什么?
  Ward:Kotlin产品经理的工作有个方面。我与我们的Android团队和JetBrains一起致力于Kotlin语言的改进和发展。我还与谷歌的许多工程团队合作,帮助他们成功地将服务器端和Android从Java迁移到Kotlin。InfoQ:2022年JVM编程语言处在一个怎样的状态?
  Ward:我在25年前开始使用Java,并且认为它仍然是一种很棒的语言。但在过去的十年中,我也使用了更现代的JVM语言,包括Scala和Kotlin。对于那些想要将函数式编程发挥到极致的开发人员来说,Scala非常棒。对于现有的Java开发人员来说,Kotlin更像是一个循序渐进的步骤,它可以很好地支持一些函数式编程范式,比如不可变性,但缺乏Scala的Monadic特性。Kotlin和Scala都与Java有很好的互操作性,支持生态系统共享。JVM开发人员对于优秀的编程语言有很多选择,工具也有很多重叠的地方(构建工具、IDE、生产内省工具等)。在JVM这个大生态系统中有这么多语言选项是非常棒的。InfoQ:现在有多少JVM后端开发在使用Kotlin?你认为Kotlin怎样才能在后端开发中变得更受欢迎?
  Ward:总的来说,JVM服务器端的Kotlin份额相当小,但它正在迅速增长。例如,谷歌已经见证了Kotlin用于服务器端开发的显著增长。从Java转向其他语言或来自其他语言的开发人员都表示,他们对这种体验非常满意。Null安全性、协程和可表达性通常被认为是Kotlin更有效率、使用起来更有趣的重要因素。
  Kotlin肯定会在服务器端继续发展。Spring、Quarkus和Micronaut已经做了相当多的工作,让Kotlin的使用体验变得非常棒(例如为Reactive提供协同程序互操作性)。企业对新技术的采用通常非常缓慢。尽管如此,对于许多人来说,迁移到Kotlin(在JVM上)比迁移到Rust的风险和破坏性要小得多。此外,Kotlin与Java的互操作性有助于进行增量式的代码迁移,而不是进行重写。我参与过的许多团队只是将Kotlin新代码添加到现有的Java代码库中。InfoQ:JVM编程语言与其他编程语言相比如何,尤其是在云环境下?Python和JavaScript在谷歌搜索中出现的频率比Java更多,在StackOverflow上的相关问题也更多。
  Ward:如果我要设计一种编程语言,我希望对语言的搜索和提问可以少一些。作为一名具有30多年经验的程序员,我更倾向于使用那些能让我写出更正确、更可测试和可重用代码的语言。我不喜欢在生产环境中出现意外,我希望能够毫无畏惧地进行重构。拥有一个可以对程序执行高级验证的编译器是一个基本特性。当然,我可能不能像其他人那样快速地编写代码,但至少可以写出在生产环境中不太可能有bug的代码。如果你将修复生产bug作为开发周期的一部分,那么使用更现代的JVM编程语言可能可以解决许多问题领域提供最高的生产力。InfoQ:GraalVM生成的原生Java应用程序启动更快,使用更少的内存。这将如何影响JVM语言在云计算中的竞争地位?
  Ward:启动速度和内存开销确实阻碍了JVM技术在某些问题领域(无服务器、CLI、KubernetesOperator等)的采用。GraalVM原生镜像、KotlinNative和ScalaNative帮助把这些语言带到以前更适合解释语言或原生语言的地方。现在,我们既有了我们的蛋糕(快速启动和最小的内存开销),也可以吃掉它(现代高级语言)。我最近用KotlinKtor库创建了一个服务器,我可以在JVM上运行它,或者用KotlinNative和GraalVM原生镜像编译成原生程序,启动时间大约为2毫秒,内存使用量为11MB,二进制大小被压缩到700KB。对于许多场景,我们不再需要在原生语言和现代高级语言之间做出权衡。InfoQ:Scala为什么如此吸引你?
  Ward:Scala的学习曲线很长。学这门语言十多年了,我还是觉得自己像个新手。这对我来说很棒,因为我喜欢学习新的编程语言,并享受挑战。我也确实接受了函数式编程的许多原则,但还没有完全像Haskell那样,所以Scala是一个适合使用基于JVM的函数式编程的好地方。我目前正在和BruceEckel、BillFrasure一起写一本使用Scala3和ZIO2进行面向副作用编程的书。函数式副作用是一种概念,它对我们创建的软件质量有很大的影响,但在Java或Kotlin中还没有得到很好的支持。选择Java或Kotlin有很多原因,但像副作用这样的概念并不在其中。InfoQ:Scala最适合哪些应用或解决哪些问题?不适合哪些场景?
  Ward:有许多因素决定了技术的契合度。在我最近从事的项目中,团队结构决定了Java和SpringBoot是最适合这种环境的。适合的最重要的一个因素是团队想要使用这些技术。我认为这与我的Kotlin项目经理工作目标是一致的,就是帮助开发人员使用Kotlin。InfoQ:JetBrains声称Kotlin是更好的Java,但是Java的受欢迎程度仍然是它的5到12倍。你认为Kotlin今天的角色是怎样的?在未来会变成什么样?
  Ward:Java语言一直在发展。但正如Java语言架构师BrianGoetz所描述的那样它有定局者优势,在许多情况下都是正确的选择。如果说创业公司的口号是快速行动,打破现状,那么企业的口号则是缓慢行动,什么都不打破,这与Java语言在过去20年左右的发展是一致的。对我来说,我喜欢比典型的企业更快地发展(由于合规性、安全性、监管和其他原因)。所以,Kotlin在某种程度上是更好的Java,但对我来说更好并不意味着对每个人都更好。JVM和Android同时支持Java和Kotlin这是一件好事。
  InfoQ:在快乐之路编程播客的第51集中,BruceEckel谈到了仍然被困在Java世界中的人们(大约在33:15),你表示了赞同。请你解释一下为什么你和Bruce会这么认为。
  Ward:25年前,我写Java就像写Perl一样。Bruce的《Java编程思想》改变了我对编程的看法。现在,Bruce和我都发现编程范式和经验具有相同的效果,完全改变了我们思考事物的方式。Bruce和我没有在Java中体验过这种颠覆,但在其他语言中有。我相信Bruce和我在那一集中所强调的并不是对Java的抨击,而是希望程序员能够不断学习并找到成长方法,就像Bruce和我所做的那样。
  InfoQ:正如TonyHoare所说的那样,NullPointerException是十亿美元级别的错误。语言中的Null安全性是对这个错误的解决方法。Kotlin有,Dart和Swift甚至有全面Null安全性(SoundNullSafety),但Java没有,而且似乎在短时间内不会提供。你认为这是为什么?
  Ward:在Java中,所有不是原始值的值都是可空的。要改变这一点,需要对整个语言和标准库进行大规模的改革。许多现代语言都有一个基本原则,即通过类型系统来表达可空性。这在后期是非常难或不可能实现的。如前所述,我希望能够编写出在编译时可验证的程序,而显式的可空性是实现我的目标的一种方法。我不再经常使用Java语言的原因之一是很难通过编译器验证的方式来表达可空性。InfoQ:你说在未来添加Null安全性是非常困难或不可能的。但Dart在发布1。0版本7年后为应用程序和库添加了Null安全性。不管怎样,你对希望减少NullPointerException的Java开发人员有什么建议?
  Ward:最难的部分不是语言特性,而是API。Java标准库中的所有东西以及Java库生态系统中的大部分东西都是可空的。要让Null安全性变得有用,并且处理起来不那么麻烦,所有基础类型必须正确地表达它们的可空性。这是一个很难或不可能实现的变化。InfoQ:在同一集快乐之路编程播客中,你称Java的默认可变性为万亿美元级别的错误(大约在35:05)。请详细说明你为什么这样认为。
  Ward:我遇到过很多次生产问题,因为无法推理出问题代码,所以很难找出原因。当人们在Twitter上发布类似这段代码是做什么的这样的问题时,你就会明白。大多数时候这都是一个谜,因为可变性让我简单的大脑无法推断发生了什么。但你永远不会看到人们以一种纯粹不可变的形式发布同样的问题,因为我们的大脑能够理解不可变的值和纯粹的函数。我确信,我们的程序越能纯粹地实现函数和值,我们构建的程序中出现的Bug就越少。InfoQ:你认为工具支持(比如IDE和构建工具)对一门编程语言取得成功有多大影响?
  Ward:我曾经在没有IDE帮助的情况下(vim算不算)写了很多代码,但现在IDE成了我工作效率的重要组成部分。我之所以喜欢提供了优秀的类型系统的编程语言,其中一个原因是IDE在我编写代码时提供了更好的提示。当我不得不用动态语言编写代码时,我想知道如果没有那么多API可供参考,谁能完成他们想做的事情?如果没有IDE的提示功能,我就什么都做不了。InfoQ:说到工具,VisualStudioCode在2021年2月拥有1400万用户,在StackOverflow的2022年开发者调查中是第二受欢迎的IDE(第一名是neovim)。我们假设VisualStudioCode成为所有开发人员的默认免费IDE,并且支持所有相关的编程语言和框架,那么这将会如何改变软件开发?
  Ward:VSCode是一个很棒的工具,对于许多开发人员来说,它已经比SublimeText、vim或emacs向前迈出了一大步。但是对我来说,它仍然没有IntelliJ(对于JVM的东西)那么有用,特别是在涉及到重构时。所以,我不经常使用它,但我知道它可能是开发人员使用过的最好的代码编辑器(假设他们没有使用过所有的代码编辑器)。InfoQ:编译器可以暴露代码错误。静态分析器,如ErrorProne、Spotbugs或PMD,会显示更多的错误,包括可怕的NullPointerException。为什么这些静态分析器没有得到更广泛的使用?
  Ward:一般来说,我喜欢让我的工具链尽可能精简。无论是出于性能、简单性还是协作性的考虑,我更喜欢将尽可能多的验证逻辑放入编译器可以验证的东西(即类型系统)中。对我来说,检查器和静态代码分析工具可以验证的东西都可以放在编译器中验证。不过,语言的限制可能阻碍了这一点。这些工具有助于提高代码质量,但同时也向语言设计者发出了一个强烈的信号,告诉他们应该如何从元编程转向单纯的编程。InfoQ:你说你喜欢把尽可能多的验证逻辑放入编译器可以验证的东西中。Java编译器不验证可空安全性、空else分支等,但是像谷歌ErrorProne这样的静态分析器会这么做。你如何看待将这些分析器添加到Java中所带来的好处与它会让工具链复杂化的问题?
  Ward:分析器和其他静态代码分析工具暴露了类型系统和编译器检查的局限性。这些限制会一直存在,所以这些工具不会很快消失。但希望它们能够有助于编程模型和编译器的发展,随着时间的推移能够涵盖更多可能的问题。InfoQ:谷歌的跨平台UI框架Flutter编译一个变更和更新应用程序只需要不到一秒的时间。相比之下,为什么编译和更新JVM应用程序仍然如此缓慢?
  Ward:编译器要验证的东西越多,花费的时间就越长。我可以写一些零编译的代码,在生产环境中运行它,然后在运行时发生错误。这不是我想要的软件开发方式。所以对我来说,编译时间必须与编译器的价值相平衡。不过,我确实经常借助热加载(感谢缓存)在一秒钟内用增量的方式运行Java、Kotlin和Scala编译器。这种争论应该从需要多长时间将包含不确定数量问题的东西部署到生产环境变成需要多长时间来纠正或消除错误。InfoQ:在我的SpringBoot项目中,频繁的类重载失败抵消了编译速度。关于你的将包含不确定数量问题的东西部署到生产环境,我认为Dart(Flutter使用的语言)的编译复杂性可能与Java差不多。尽管如此,大多数情况下,Flutter在移动设备上重新编译和部署只需要1秒钟,但大多数Java项目都做不到。现在,Flutter有了它的整个工具链(编程语言、编译器、运行时、框架和构建工具),但Java还没有(例如,构建工具和应用程序框架)。对于开发人员的生产力来说,JVM语言拥有整个工具链有多重要?
  Ward:没有什么能阻止JVM的内部开发周期变快。AndroidStudio有一个叫作LiveEdit的新功能,可以基于代码变更即时更新模拟器或设备上的JetpackComposeApp的UI。十年前,PlayFramework就已经通过利用一些奇特的类加载器技巧实现了JVM服务器的亚秒级重载。主要的挑战在于如何投入工程时间让体验变得又快又好。但由于某些原因,这并不是JVM生态系统的首要任务。对于服务器框架来说,Quarkus在优化方面做得最好,我相信他们还可以做更多的工作。InfoQ:你如何定义和衡量一门编程语言成功与否?例如,你可以说Scala是成功的,因为它让函数式编程变得更加主流。你也可以认为Scala不再成功了,因为它把第二大JVM语言的位置让给了Kotlin。
  Ward:目标很重要,每个人都有不同的目标。对我来说,这与价值定位有关。我非常欣赏Flix把它的目标原则写了出来。
  Flix是一门非常成功的编程语言,因为它在实现目标方面做得非常出色。如果Flix设定的目标是拥有1000万活跃的开发人员,那么它肯定已经失败了(但我仍然喜欢它,因为我赞同它的原则)。喜欢一门语言和成功掌握一门语言是两码事。作为一名Kotlin项目经理,我的目标之一是让开发人员可以更容易地构建正确的软件(即更少的Bug)。Kotlin已经被证明可以减少20的Android应用程序崩溃,这是一个巨大的成功。我想更进一步,通过语言和工具的改进继续减少应用程序和服务器端错误。InfoQ:软件开发的历史就是抽象层次不断增加的历史,面向对象和函数式编程已经有50多年的历史了。你认为在过去的20年里,抽象层次是如何提升的?你如何看待未来20年的增长?
  Ward:直到最近,函数式编程的许多想法仍然被局限在为数学极客(我希望有一天也能成为这样的人)提供的技术中。现在,多亏了Scala(和其他语言),我们开始看到面向对象和函数式编程的融合,使得那些非数学极客也能使用函数式编程。这种融合将会持续一段时间,帮助我们的代码变得更加可测试和可重用。
  Kotlin就是一个很好的例子,它是许多Java面向对象开发人员通往轻函数式编程(liteFP)的桥梁,而liteFP并不要求开发人员掌握范畴论。这一转变的下一阶段是拥抱副作用理念(将纯粹的函数与不具有参考透明性的部分分离开来)。许多新的编程语言已经内置了这个概念Flix、Unison、Roc等。除了副作用之外,我们可能会看到类似Datalog的概念一种内置在通用语言中的查询语言。我在Linq中第一次了解到这种想法,然后是Flix。查询是一种非常普遍的需求,无论是对于数据库、透镜(更新不可变的数据结构)还是GraphQL等。因此,使用集成的、经过编译器验证的方式编写查询是一个显著的优势。InfoQ:哪一种编程语言发展得最好?
  Ward:这取决于最好是怎么定义的。如果我们从纯粹的学术角度来考虑这个问题,我认为有关Scala的学术研究比我所知道的任何一种语言都多了很多个数量级。Scala的许多特性最终会出现在其他语言中,这对每一个人来说都很有益。Python已经做了惊人的工作,成为一种普遍可接受的语言。我听说许多面向数据的专业人士无法解决大多数典型的编程挑战,但可以使用Python编写复杂的数学算法,或使用Pandas、NumPy等库处理大量的数据集。Kotlin是一种具有Java互操作和多平台功能的现代语言。所以什么是最好取决于很多因素。InfoQ:JVM语言即将到来的哪个新特性最让你感到兴奋?
  Ward:在JVM方面,Loom改变了游戏规则。对于大多数JavaJVM开发人员来说,反应式编程是一个好主意,但不值得为此承担认知和复杂性方面的负担。Kotlin协程为异步操作提供了类似的零认知成本的想法。
  然而,对于许多JVM开发人员来说,在Loom进入他们的工作环境之前,反应式编程可能仍然是一个不错的特性。因此,在此之前,许多基于JVM的开发人员将在JDK8上使用诸如Kotlin携程和ScalaZIOEffects这样的并发抽象。考虑到Loom的发布时间线和当前可用的替代方案,我不得不说,在JVM语言中,最让我感到兴奋的是即将到来的Scala无括号语法,它在Scala3。0中已经完成了一半,并有望在Scala3。3中全部完成。
  我希望我的代码相对于我要解决的问题来说少很多视觉上的噪音。我知道这看起来很傻,只是把括号拿掉就能产生这么大的影响。但是Python告诉我们,在大多数组织中,认知开销通常是最高的成本。编写一个正确的程序最困难最昂贵的部分不是文本到字节码机器码的转换,而是以计算机能够理解的形式正确地表示和阅读人类想法的成本。这看起来很愚蠢,但是大多数代码中的括号会分散我的注意力,影响我理解代码的意图。InfoQ:如果你可以对每一种JVM语言都做一个改变,你会做哪些改变?
  Ward:Java我想做很多改变,这听起来像是对Java的控诉。但这并不是因为Java是基于JVM的,你也可以选择另一种语言,或者接受Java缓慢的发展进度,这都没什么问题。如果必须要改变一件事,那可能是更好地支持不可变性。默认的可变性是导致不确定性程序的根源。
  Kotlin当我在用Kotlin编程时,我最怀念Scala的是它的单体链语法(在Haskell中叫作donotation,在Scala中是for)。与Kotlin协程一样,当函数调用被链接起来时,代码看起来就像是命令式的。我不知道该如何将这种东西添加到Kotlin中,但如果做得好,我认为这将是非常棒的。
  ScalaScala最难的地方在于可以通过多种方式来完成大致相同的事情。例如,在Scala3中至少有三种方法来实现基本的Sum类型(sealed、enum和逻辑OR)。尽管如此,Scala的复杂性仍然是一个问题,完成大多数相同的事情有多种方法也是一个问题。InfoQ:COBOL已经有60多年的历史了,现在仍然有人在使用它。你认为在2056年Java60岁的时候,开发人员还会开发新的Java应用程序吗?
  Ward:当然!Java是我们日常使用的许多系统的关键部分。它不会消失,它会通过缓慢而渐进的增强继续演化(不像COBOL那样)。更大的Java生态系统(包括Kotlin、Scala、Clojure、Groovy等)也在继续增长。作为一个整体,它可能是世界上最大的开发者生态系统。新的JVM语言不断涌现,就像Flix一样,这表明创新周期不会很快停止。像Testcontainers、GraalVM和Kalix这样的创新和改变游戏规则的技术继续从Java生态系统中涌现出来,这股力量将推动未来35年(至少)的增长和进步。InfoQ:请你对2022年JVM编程语言的发展状态做个总结。
  Ward:现在是Java、Kotlin和Scala的一个激动人心的时刻!这些工具和语言让我体验到最高的开发效率。从移动端到服务器端,Java技术为我们每天使用的绝大多数关键系统提供支撑。对我来说,能够在一个平台上选择多种不同的编程语言真是太棒了。InfoQ:James,感谢你接受我们的采访。总结
  Ward很好地解释了播客上的评论当Eckel谈到仍被困在Java世界中的人们时,他指的是使用他和James眼中的Java旧范式(比如过程式和面向对象编程)的开发人员。相比之下,Eckel和Ward在Scala中采用了Java语言中没有的函数式编程概念。可变性让Ward更难理解代码,并最终产生更多的Bug,这与不可变的函数完全不同。作者简介
  KarstenSilz作为全栈Java开发人员在欧洲和美国工作了23年。2004年,他在美国联合创办了一家软件产品初创公司。Karsten领导产品开发13年,在公司被收购后离开了公司。自2017年以来,他一直是德国和英国的承包商(SpringBoot、Angular、Flutter)。他在2020年以CTO的身份参与创办了软件即服务初创公司YourHomeinGoodHands。
  JamesWard从1997年开始就是一名专业的软件开发者,大部分时间在帮助开发人员构建高质量的软件。他是纯函数式编程狂热爱好者,为了完成工作可以在理想方面做出妥协。原文链接:https:www。infoq。cnarticleq1YBR2HgoIBCqGUxlPOy?utmsourcetuicoolutmmediumreferral

阿富汗塔利班命令非政府组织禁止女性雇员上班,联合国或将打击人道主义行动(观察者网讯)继阿富汗塔利班禁止阿女性接受大学教育后,在非政府组织工作的女雇员们又被停职。据路透社报道,12月24日,塔利班领导的阿富汗临时政府下令,要求所有当地和国外的非政府组织中大周永章双碳需要政府有为市场有效和科技创新三端发力党的二十大报告明确提出,要积极稳妥推进碳达峰碳中和,健全碳排放权市场交易制度,积极参与应对气候变化全球治理。碳排放权市场交易制度为何如此重要?对于双碳目标的达成发挥着怎样的作用呢?焦点访谈丨坚守一线勇担当最近,受新冠疫情影响,很多人感染了奥密克戎,不得不居家休养,不少行业也因为这个缘故,人手短缺。但是,越是在这个节骨眼上,有些行业越是不能停摆。比如,很多居家的居民买药买菜全指望着快河北与河南的区划变动,河北省的8个县,为何划入了河南省?在之前的文章中,作者和大家聊了一系列关于河南省各个城市区划变迁和经济发展的故事,例如新乡市商丘市信阳市等等。今天,我们聊聊河北省与河南省之间的区划变迁。在历史长河中,河北省的8个县关爱你我他(她)温暖千万家丨财政部提前下达河南省补助资金29。8亿元支持安居工程建设河南日报记者胡舒彤12月22日,记者从省财政厅获悉,近日,财政部提前下达我省2023年度城镇保障性安居工程补助资金29。8亿元,大力支持城镇保障性安居工程建设,确保住房保障惠民政策古代皇帝的生理启蒙老师,在教完皇帝后,她们的结局怎样?(创作不易,请多支持送心来看我)说起古代的帝王,我们大多数人的第一印象想必都是什么三宫六院,七十二妃,或者是拥有至高无上的权力,坐豪车住豪宅等等。总而言之,皇帝的生活过得是最滋润的妇女儿童保护神!今天都在纪念她千年临水情两岸一家亲12月25日,由福州市文旅局仓山区人民政府主办,仓山区委宣传部区文旅局承办的第十五届闽台陈靖姑民俗文化旅游节暨2022陈靖姑文化海丝行活动在闽江之畔的仓前公园如罗马在扩张战争中到底死了多少人,从共和到帝制,罗马的政治演变头条创作挑战赛没人知道在罗马的扩张战争中到底死了多少人。这场扩张在公元前5世纪从意大利开始,在公元前3世纪扩散至西地中海地区,在公元前2世纪来到东地中海,又在公元前1世纪影响西北欧杨威老婆分享全家抗阳经历,女儿高烧加呕吐最严重,连药都喂不进12月23日晚,奥运冠军杨威的老婆杨云在个人社交平台发布了一段自述视频,视频里杨云给大家详述了这几天他们一家人的抗阳经历,看得人无比触动。杨云还写道我们一起齐心协力打败了怪兽,文末张莉谈女性文学阅读与写作一个新的女性写作时代正在到来张莉一直致力于当代文学与女性文学研究,评论集小说风景获得第八届鲁迅文学奖文学理论评论奖。(受访者供图图)在研究生课堂上讨论鲁迅的小说伤逝时,一位70后男学生发言说,子君不求上进安于全家阳转阴后,别忘了给冰箱消毒,五个步骤请收好最近,疫情来势凶猛,很多朋友全家都中招了,大多数人经过居家自我康复后,都完全康复,满血复活了。此时,许多人都想给家里来一个全面消毒。在此,提醒大家,除了一般物品的常规消毒外,有一个
中国式现代化,全球发展如何受益?(聚焦博鳌)中国式现代化,全球发展如何受益?中新社博鳌3月29日电(记者邢翀马帅莎)中国式现代化是中国提出的未来数十年的发展路径。中国式现代化与西方式现代化道路有何不同?于全球发展禾迈股份会创新股上市最高亏损记录吗?亏损记录高低这个不好说,我感觉这个可能是要破发的,刚看了下,明天也就是21年12月20日,当天有800多万股解禁,占总股本(4000万股)约20,网上发售了1000万股(打新)!感厨师行业,什么是打荷?厨师行业,什么是打荷?饭店的打荷是一个比较重要的岗位,每个饭店都有打荷这个环节,只不过现在有很多都是时尚餐饮了。老板为了节省开支,都把配菜和打荷的合并在一起了,意思就是以前的两个岗程序员工资那么高,为什么会找不到女朋友?所谓的程序员工资高,并不是一辈子一直都高!体制外程序员的职业生涯工资收入是一个抛物线,从22岁大学毕业开始工资逐渐上涨,到了30岁35岁左右达到抛物线顶点,35岁以后开始逐渐下滑4家有幽门螺旋杆菌感染者,孩子会不会被传染上呢?经常有家长问到,家人查出有幽门螺旋杆菌感染,孩子需不需要也去检查有没有幽门螺旋杆菌感染?由于幽门螺旋杆菌与胃炎发生存在相关性,而且可能间接与消化道恶性疾病相关,所以这是一个细思极恐是不是现在的年轻人都不喜欢喝白酒了?白酒在中国可能会给人一种自古以来的感觉,但实际上真正开始被接受,还是元朝的时候。那个时候大量阿拉伯蒸馏技术的引进,给了白酒发展的空间。不过那个时候的白酒度数其实也没有那么高,因为技开车从西安到南疆游十五天怎么走比较好?西安到南疆自驾游,15天时间有点紧张,南疆范围太大了库尔勒阿克苏喀什克孜勒苏和田巴音郭楞这些地方如果都想去的话,全程最少有7000多公里,加上在当地景区之间的交通,往返全程大约80什么时间去泸沽湖最好?需要准备什么东西?我觉得任何时候去都是没问题的。但是看你要去关注的点是什么?每个季节都有她的特点。但是最好是春秋季。泸沽湖畔一年四季鲜花常开,主要花季为57月山杜鹃,89月向日葵,1011月波斯菊。美国是否可以越过华为的5G专利?绕不过的。当年在国际电信联盟主持的5G标准投票中,高通和华为的标准同时入选,进入最后的标准角逐。在后来的投票中,高通的标准夺得了5G的长码标准,华为的标准夺得了5G的短码标准。以后艾滋病咽痛是什么样的?当感染艾滋病毒后的1到4周之间,感染者可能会出现类似流感的症状。实际上这是人体对病毒的保护反应,也就是人体免疫系统被激活而试图消灭艾滋病毒。这一早期阶段的症状可能持续几个星期,咽喉什么叫ampquot视同缴费ampquot?哪些人享受了ampquot视同缴费ampquot的社保政策?社保中,有一句话是这样说的若要领取养老金,至少要满足两个条件,第一,缴费(含视同缴费)达到十五年以上,第二,达到法定退休年龄!这里,就有一个(很多人还不是很清楚)视同缴费的问题,困
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网