php里面怎么加括号,想去培训机构学习java?
24岁迷茫,想去培训机构学习java?如果你现在也感觉到迷茫的话,可以看看我接下来说的这些话,希望能对你有所帮助。
1.找准定位24岁这个年龄说大也不是很大,但是说小,也不小了,尤其是对于程序员的行业,所以一定要找准自己的定位,不然很容易功亏一篑,我先来说说现在程序员这个行业的行情吧,程序员分很多种类,硬件、软件等等,从小白入手,软件方面的工资可能会更高一点,市场需求也相对多一点,我们以java为例,我们一起来看看大专、1-3年的薪资范围
可以看到,大专学历,1-3年的薪资在10-20k之间,地点在深圳,这是boss的招聘薪资,实际应聘成功的薪资肯定会相对较低,一般要在3年左右才能拿到10-20k的薪资,我们再看一看招聘的要求
就这个要求,很多3-5年工作经验的人都不一定能满足,所以现在软件行业,尤其是java行业,要求太高,薪资偏低,是什么原因导致要求过高,薪资偏低呢?其实也很简单:供大于求,近年,培训公司崛起,大量的在忽悠刚毕业的大学生培训软件编程,很多大专学校也开出了对应的软件开发专业,所以就导致了这个行业的人员过于饱满(初级、中级),为什么我要加个括号呢?那是因为高级还是很紧缺的,虽然培训机构和学校输送了大量的人才,尤其是培训机构,他们只会教你速成。教你应付面试,并不会教你计算机原理,基础、你只会用,却不知道为什么,虽然面试的时候可能会让你蒙混过关,但是真正到了战场上,却有很多不能胜任工作而被开除,再加上,现在的大部分人都会选择安逸,一旦找到了一份自己感觉薪资还可以的工作,就会安于现状,停止学习,导致自己的能力止步不前,这样当然就导致了,初中级泛滥、高级稀缺。
所以你自己要找准定位
1.是否你是真的喜欢编程这个行业?
2.是否有每天坚持学习的毅力?
3.是否做好了996的准备?
4.是否能承担培训出来之后找工作失败的准备?
5.是否能接受秃头的准备?
如果这些你觉得都没问题,那么你可以试一试。
如何培训?找培训公司也是一个技术活,像国内比较出名的有:中软国际、达内、黑马等等。,我对达内和中软国际的印象并不好,更看好黑马一些,任何培训机构都不会向学校那样开始从c开始教你,他们会教你们快速上手、直接上语法、然后写项目、背面试题,所以,在培训期间,你要多看基础,比如计算机原理,这个一定要看,至少要了解什么是电脑,如果连电脑是什么都不知道话,你的编程生涯将会非常短暂,我身边就有很多人编程都会,但是对计算机一窍不通,遇到问题,各种百度,搜不到就gg,自带痛苦面具
其次:锻炼好身体,因为这个行业,容易猝死,哈哈哈,这个是开玩笑的,身体也是很重要的。
该不该培训?如果你觉得你能吃得了苦,对编程感兴趣,不是因为工资高而选择这个行业的话,24岁确实不算太晚,培训半年,包装两年工作经验,还是问题不大的,如果仅仅只是因为工资高,那么我还是不推荐的,因为这样,你肯定学不精,到不了更高层次,所以肯定会面临35岁压力,甚至可能是30岁的压力,还有一点,你的思维逻辑一定不能太差,否则可能也不适合java,可以考虑前端,希望这个回答能帮到你。
我是一个java老撕鸡,如果对java感兴趣的小伙伴可以关注我,我会不定时的发布一些原创的java文章,对你的技术肯定会有帮助,如果有什么疑问,也可以私信我,我会力所能及的为你解答。
前端的编程软件哪些比较好用?
开发前端的软件其实挺多的,这个也没什么标准,一定哪个好用,哪个不好用,只要能高效、高质量的完成工作都行,下面我介绍几个常用的前端开发软件:
1.Dreamweaver:这个现在是Adobe公司的产品,相信大部分搞前端开发的人都了解或者使用过这个产品,一款集设计与代码为一体的编辑器,网页三剑客之一,支持html,css,js,php,asp,jsp等常见网页脚本的编写,可以快速帮助设计人员制作网页和建站,也特别适合初学者使用,界面简洁、使用简单、容易上手,左边源码,右边效果:
2.VSCode:这个是微软开发的一个免费、开源的轻量级代码编辑器,支持几十种开发语言,包括html,js,php,python,java等,语法高显亮、智能自动补全、插件扩展丰富,支持git功能,是一款很不错的编辑器,正在逐渐受到大众的熟知和认可:
3.HBuilder:这个是国产的、专门用于Web网页开发的前端软件,轻巧、极速、界面柔绿,清爽护眼,语法提示、自动补全功能非常完善,支持marldown功能,后期还可以将html文件云端打包为安卓或苹果app,是一个很不错的前端软件:
4.Sublime Text:这也是一个轻量级的代码编辑器,支持的编程语言也很多,语法提示、代码高亮、自动补全,界面华丽,还支持插件扩展,是一款很不错的前端开发软件:
5.Atom:这也是一款非常不错的跨平台代码编辑器,由github专门为广大程序员推出,用户界面简洁、直观,语法检查、代码高亮、自动补全功能完善,支持html,css,javascript等网页编程语言,还支持宏,文件管理器等,是一款很不错的软件:
6.WebStorm:相对于前面几个软件来说,这是一个重量级的Web开发软件,由Jetbrains公司开发,语法提示、自动检查、代码高亮、自动补全等这些功能,这个软件都支持,还支持git等功能,在大型项目开发、团队协作中,经常会用到这个软件,但这个软件不是免费的,试用期过后就需要付费,而且启动起来有些卡:
就介绍这6个常用的前端开发软件,对于前端开发来说,完全可以、也够用了,找一个适合自己的就行,希望以上分享的内容能对你有些帮助,也欢迎大家留言、评论。
多头螺纹标注的基本格式及含义?
1.一种是公称直径×P与程P”,如果要进一步表明螺政的头数,可在后增加括号用英说明如双 twe为 starta,三头为 theee startsn头为 ur startstmphp1.5moa
之其次一种标方法为公称直径*导/哪头数,如M30=32.
求量三种标方法为公称直径距(n线),如M30=15(联头)
4.有一种方法为公称直径×导(P距)如M303(P15)
M30p3p15 starts)M30×32.M30双头和M30=3(P1.5)都的是必直径是
30mm.程是3mm,是1.5mm的双纹
Java程序员都用哪些idea插件?
日常使用的普通插件其他人已经回答很多了,我来为大家介绍几个比较新颖的AI辅助编码插件,包含国外的Kite、Codota、TabNine、GitHub Copilot,国内的阿里云Cosy、AIXcoder。
先总结一下个人体验的简单感受:TabNine支持的语言及IDE种类最丰富,本地模式内存占用高;GitHub Copilot提供的代码补全/生成效果更惊艳,希望未来收费不太贵;阿里云Cosy的代码搜索功能比较实用,可以与其他工具搭配使用;Kite仅适合Python开发者,补全不算惊艳;Codota已经不再维护了,可以不考虑了;AIXcoder中规中矩,缺少亮点;一、GitHub Copilot安装方式:IntelliJ IDEA插件市场搜索“GitHub Copilot”。GitHub近期发布的的代码智能生成插件,目前支持VSCode、JetBrains等IDE平台,不同于其他代码补全工具只提供最多一行的补全结果,Copilot能通过代码上下文以及语言描述,生成整个代码片段,无疑是开发者的编码利器。它是如何做到的呢?下文中提到TabNine使用的是GPT-2深度学习模型,而Copilot使用的是OpenAI据说烧了数千万美元研发出来的GPT-3模型,Copilot在GPT-3模型基础之上通过对GitHub的开源代码进行学习,得到了Codex模型,该模型具备强大的代码生成能力。但是由于该模型非常庞大,需要有足够的硬件支撑,所以Copilot目前只能通过邀测的形式小范围试用。从FAQ中的信息显示,Copilot未来可能不会大面积免费开放,未来想要尝试该工具的开发者要准备好预算。GitHub Copilot提供了片段级的代码补全功能,可以用于注释生成代码、生成单元测试等场景。提供了远程服务模式,需要将代码上传到远端,所以如果是企业的开发者可能要注意数据安全了能够通过代码上下文、注释及语言描述生成方法级的代码片段GitHub Copilot是一款非常好用的代码生成工具,适合生成通用的工具代码、leetcode算法、单元测试等场景的高频代码,而对业务代码的生成则依然存在语法错误的问题,可惜Copilot只提供了远程服务模式,并且基于Copilot当前的技术路线也不太可能提供离线模式,这点可能会带来潜在的隐私及代码数据的泄露风险,希望以后收费不会太贵。个人体验评价语言及IDE支持:⭐︎ ⭐︎ ☆ ☆ ☆代码补全:⭐︎ ⭐︎ ⭐︎ ⭐︎ ☆代码搜索:不支持二、TabNine安装方式:IntelliJ IDEA插件市场搜索“TabNine”。TabNine是一款比较年轻的开发工具,刚发布的时候还是比较惊艳的,那个时候OpenAI刚开源GPT-2模型不久,TabNine基于GPT-2模型在海量代码数据上进行调优,打造出了一款针对代码的深度学习引擎,它能智能识别代码的上文信息,提供长序列的代码补全结果。目前,已经被Codota公司收购,并主推该工具,宣称支持所有主流的开发语言。TabNine提供代码智能补全功能,支持以下特性:免费版只提供较为基础的补全功能,收费的Pro版本补全效果更好远程服务模式,代码需要上传到远程服务器,但是模型更强大,本地内存占用少离线模式,能够把模型下载到用户本地,无法联网也可使用补全,但是本地内存占用高,有时候CPU会飙高针对专业版提供了适配企业/私有代码的能力,是需要收费的TabNine能提供长序列的代码补全,在我体验过的同类工具中,TabNine是支持的开发语言种类以及IDE平台最多的工具。但是与其他工具相同,它会推荐出不完整的代码以及存在语法错误的代码。从部分开发者的反馈了解到,有部分开发者喜欢TabNine即时学习代码模式的能力,这点是相比其他工具比较不错的,虽然目前提取代码模式的能力还存在比较多的缺陷,但是相信未来会逐渐完善。个人体验评价语言及IDE支持:⭐︎ ⭐︎ ⭐︎ ⭐︎ ⭐︎代码补全:⭐︎ ⭐︎ ⭐︎ ☆ ☆代码搜索:不支持三、阿里云Cosy安装方式:IntelliJ IDEA插件市场搜索“Cosy”或者“Alibaba Cloud AI Coding Assistant”。阿里云的智能编码插件Cosy于2021年10月份发布,到现在才两个月时间,是个相对年轻的工具。目前仅支持Java语言。通过其帮助文档了解到,它使用深度学习模型加语法分析结合的技术,通过深度学习模型强力的学习能力生成长序列代码,同时又通过结合语法分析的能力去纠正模型生成的错误。我个人比较喜欢的是Cosy的代码搜索功能,它从GitHub和StackOverflow中抽取出了常用的代码片段,让我能很方便的在IDE中直接搜索需要的信息。阿里云Cosy提供的代码智能补全仅提供IntelliJ IDEA插件,支持Java语言,相比于其他工具支持的语言种类比较少,相比于TabNine,在补全效果上有一些优化,减少了补全半截的情况。支持整行的代码补全结果离线模式,Cosy会在首次启动时把模型下载到本地,之后便可断网使用我个人比较喜欢的是阿里云Cosy的代码示例搜索功能,支持以下特性:在IDE内支持指定API的代码示例搜索在IDE内支持通过功能描述搜索StackOverflow、GitHub等来源的开源代码片段阿里云Cosy的代码补全在TabNine的基础上更进一步的解决了部分生成错误代码的缺陷,但是在细节打磨上还存在一些问题,与TabNine、GitHub Copilot相比各有千秋。Cosy的代码搜索功能相比其他工具确实是一个比较好的亮点,让我的日常“抄”代码轻松很多。个人体验评价语言及IDE支持:⭐︎ ☆ ☆ ☆ ☆代码补全:⭐︎ ⭐︎ ⭐︎ ☆ ☆代码搜索:⭐︎ ⭐︎ ⭐︎ ⭐︎ ☆四、Kite安装方式:IntelliJ IDEA插件市场搜索“Kite”。说到业界在代码智能补全领域发布最早的工具,Kite便是其中之一,它成立于2014年,在Atom/Vim/Spyder等编辑器发布代码智能提示插件,初期只面向Python开发者,当前扩展到面向绝大部分主流开发语言。并于2020年初发布JetBrains插件,2021年初发布VSCode插件。Kite支持目前主流的16种开发语言以及16种代码编辑器,但是从我的使用体验上来看,其最擅长的还是Python语言,毕竟是Kite最早支持的语言类型。Kite提供基于机器学习的代码智能补全功能,支持以下特性:远程服务模式,代码需要上传到远程服务器离线模式,能够把模型下载到用户本地,无法联网也可使用补全专业版能针对用户的代码库进行训练Kite也提供了Python官方文档搜索功能支持Python API的官方文档及少量示例Kite适合Python开发者,毕竟Kite是以Python起家,在Python语言上打磨了很多年,虽然不像其他同类工具一样,能提供非常惊艳的长序列代码补全,但是它对IDE自带补全的排序优化效果还是很不错的。Kite的API文档搜索能搜索到常用的Python API官方文档,但是大部分能在IDE中通过查看API定义查看,代码的使用示例比较缺乏。个人体验评价语言及IDE支持:⭐︎ ⭐︎ ⭐︎ ⭐︎ ☆代码补全:⭐︎ ⭐︎ ☆ ☆ ☆代码搜索:⭐︎ ⭐︎ ☆ ☆ ☆五、Codota安装方式:IntelliJ IDEA插件市场搜索“Codota”。除了Kite,业界另一个涉足最早涉足该领域的工具是Codota,Codota成立于2013年,在2014年下旬发布第一个Jetbrains插件版本,主要面向Java开发者。但是,目前Codota公司收购TabNine之后,已经放弃了Codota这款插件,并将老产品改名为了TabNine。Codota提供了代码补全功能,在Java语言上效果比较好:基于程序分析、统计分析的规则化代码补全,主要能针对部分类名、常用的代码模板进行补全Codota提供了IDE内的代码示例搜索功能(支持Java、JavaScript)支持搜索引用了指定API的代码示例在其他代码补全工具发布之前,Codota还是一个比较不错的开发利器,特别是丰富了IDE自带的代码模板,可以帮助开发者节省很多低级编码的时间,Codota也有一些用于生成代码的小功能,这里就不再扩展。但是在目前AI爆发的时代,Codota的产品演进没有跟上步伐,所以Codota公司已经放弃该产品的演进,转而大力发展收购的TabNine。个人体验评价语言及IDE支持:⭐︎ ⭐︎ ☆ ☆ ☆代码补全:⭐︎ ⭐︎ ☆ ☆ ☆代码搜索:⭐︎ ⭐︎ ⭐︎ ☆ ☆六、AIXcoder安装方式:IntelliJ IDEA插件市场搜索“AIXcoder”。AIXcoder从天眼查了解到其成立于2017年,根据官网主页的信息,它也采用了深度学习的技术,并且对模型进行了压缩,以便于提升用户下载模型的速度,减少用户本地CPU的开销。AIXcoder提供了对用户本地代码库学习的工具,但是免费版有次数限制,而且学习本地代码库的时候电脑会比较卡。让我有点疑惑的是,AIXcoder官网主页视频中演示了IDE内的代码搜索功能,但是在实际插件中只提供了一个跳转到浏览器中的按钮,并不能在IDE内直接搜索(难道是需要付费的?)。目前发布了Jetbrains及VSCode插件,主要支持Java、Python、C/C++、JavaScript、Typescript、Go、PHP等语言。AIXcoder提供的代码智能补全与Kite比较相似,都会对IDE自带的补全结果进行排序优化,只是AIXcoder在Java上效果好一些,支持以下特性:远程服务模式,代码需要上传到远程服务器,速度更快一点,卡顿感会减少离线模式,会把模型下载到本地官方主页的演示视频说是支持IDE内的代码搜索,但是我安装插件后发现只能跳转到网页端的搜索页面上,无法在IDE内搜索,难道这块功能是需要收费的?总的来说AIXcoder在刚发布的时候还是很不错的,但是最近发布了太多同类工具,AIXcoder的代码补全体验相比其他工具算不上出彩,希望AIXcoder能继续提升。个人体验评价语言及IDE支持:⭐︎ ⭐︎ ⭐︎ ☆ ☆代码补全:⭐︎ ⭐︎ ☆ ☆ ☆代码搜索:IDE内不支持前期学习JAVA是照着写代码好还是背着写好?
前段时间,B 站推出的青年节演讲视频《后浪》在朋友圈刷屏,看着“后浪”们丰富多彩的生活,同事们纷纷自嘲自己就是被拍在沙滩上的那一个,被生活疯狂蹂躏。然而在编程语言界,“后浪”们掀起的波澜则十分有限。与近年来陆续涌现的新兴编程语言相比,那些出道即巅峰、一巅几十年的“前浪”们,似乎还没有要退位让贤的意思。
在 TIOBE 公布的最新编程语言排行榜中,排名前十的语言中有 8 个诞生于上个世纪 90 年代,最“年轻”的是诞生于 2001 年的 C#,而位于榜首的 C 语言距今已有 48 年的历史。如果我们再来纵观自 2002 年以来的编程语言排行榜,基本上也还是这些老牌编程语言的身影,尤其是 C 与 Java 这两位“前浪”老大哥的江湖地位一直难以撼动。
数十年来,陆续出现的新兴编程语言不在少数,其中不乏一些以取代某种老语言为目的而设计的,那么这些编程语言界的“后浪”们,是否能够追上“前浪”们的脚步呢?下面不妨让我们来看看这些年编程界的知名“后浪”们。
前浪 C++(1979)VS 后浪 Go(2009)
诞生于 2009 年的 Go 语言堪称编程语言中的“星二代”。Go 的早期作者有三人,分别是 Rob Pike,Ken Thompson 和 Robert Griesemer,每一位的来头可都不小。Rob Pike 曾是贝尔实验室的 Unix 团队以及 Plan 9 操作系统计划的成员,与 Thompson 共事多年,并共创出广泛使用的 UTF-8 字元编码;Ken Thompson 则是 B 语言、C 语言的作者,Unix 之父,1983 年图灵奖和 1998 年美国国家技术奖得主;而 Robert Griesemer 在开发 Go 之前是 Google V8、Chubby 和 HotSpot JVM 的主要贡献者。
2007 年,Rob Pike 认为 C++ 在 Google 分布式编译平台上的编译过程太过漫长,于是他和 Robert Griesemer 开始探讨 “简化编程语言相比于在臃肿的语言上不断增加新特性,会是更大的进步”。两人一拍即合,随即说服了身边的 Ken Thompson,三人决定要捣鼓一门新语言。几天后,他们在 Google 内部发起了一个叫 Golang 的项目 。很快,一个在 C 语言基础上进行了优化的新语言诞生了,这就是 Go 。
作为一个设计目的就是为了取代 C/C++ 的新语言,Go 的语法在很多地方借鉴了 C/C++ 。比如用花括号作为定界符,以分号作为语句结束等等,这使得 Go 很容易就能被精通 C/C++ 的开发人员接受。而在沿袭 C/C++ 基本语法的基础上,Go 新加入了很多针对当下流行的分布式系统的实用功能,比如超轻量级的线程 goroutine,在高并发的系统中,可以按照多线程的方式写程序,从而保证逻辑的清晰和简单,又可以获得非常高的性能。而同样的事情在 C++ 中则需要调用第三方框架,如果用多线程,会导致系统线程过多带来大量的上下文切换 overhead;如果采用基于消息的架构,虽然可以获得较高的效率,但程序逻辑会被打散,可读性和可维护性较差。
此外,Go 语言作为 Google 大力支持的“亲儿子”,拥有编译、测试、调试、性能分析等一整套成熟的工具,编译效率极高,再加上其还内置了 http、json、xml、正则表达式等很多后端系统开发中常用的库,可以说是一门已经非常成熟的工程化开发语言。而在这方面,C++ 则需要用到大量的第三方开源工具或库,在工程上需要花费更多的精力进行技术选型,同时也不利于后期维护。
基于上述的优点,Go 语言被公认为非常适合构建命令行实用程序和网络服务等,尤其是云计算场景下的高并发应用,如今广泛流行的容器引擎 Docker、容器编排系统 Kubernetes 都是用 Go 编写的,Go 也因此被一些人称为“容器语言”。
虽然 Go 在很多方面已经超越 C/C++,并且在云原生相关领域占有了一席之地,但是仍然难以撼动 C/C++ 语言在大量工业基础设施终端的地位。C/C++ 的优势仍然在于它的运行效率,如果是低级设备驱动程序、内核空间操作系统组件以及其他需要严格控制内存布局和管理的任务,C 依然是不二之选。
目前,Go 在各种权威编程语言排行榜上都名列前茅,且一直呈上升趋势,在云原生建设如火如荼地当下,Go 至少在“云”这一领域已经完成了对前辈的超越。
前浪 C++(1979) VS 后浪 Rust(2010)
Rust 是继 Go 之后另一个试图取代 C/C++ 的新语言。2010 年前后,随着大规模业务的拓展和分布式计算的流行,Graydon Hoare 也和 Rob Pike 一样看到了 C++ 等传统编程语言在高并发场景下的缺陷,试图创造更优秀的语言来替代它们。Rust 原本是 Graydon 从 2006 年开始捣鼓的个人项目,随后该项目得到了 Mozzila 基金会的资助,而 Graydon 本人也于 2009 年加入 Mozzila 公司,带领团队完善 Rust 语言的开发。2010 年,Mozzila 正式对外透露了 Rust 的存在。2013 年,Mozzila 基金会宣布将与三星合作,使用 Rust 语言开发一款浏览器引擎 Servo,成为首个使用 Rust 编写的大型项目。2015 年,Rust 首个 1.0 正式版发布。
Rust 最初是 Mozilla 为了解决软件在语言级别上无法真正利用多核计算带来的性能提升而创建的,这一点与 Go 有些类似。相比前辈 C++,Rust 在代码安全这一特性上下足了功夫。比如内存安全方面,Rust 在安全代码里不容许空指针、悬垂指针和数据竞争,这些问题在编译阶段就无法通过。Rust 社区核心开发者 Nichols 表示:“之前,我们只能使用 C 或者 C++ 才能编写具有较低内存占用空间的高质量代码。但是,在生产代码中使用这些语言需要你手动管理内存并了解可能导致未定义行为的所有方法。”Nichols 指出,不断扩展的 CVE 代码漏洞数据库证明,即使是最优秀的程序员也疲于应对层出不穷的代码漏洞。“为了确保你安全地使用内存,Rust 编译器非常严格,这样你就可以专注于你真正想要解决的问题。”
尽管 Rust 凭借其代码安全的特性获得了部分开发者的青睐,但由于其无论是在性能还是语法上,均不足以颠覆 C/C++,再加上其学习曲线并不平滑,因此与“家大业大”的 Go 相比,Rust 在前期的发展不温不火。直到去年 7 月,微软突然宣布将拥抱 Rust,探索用 Rust 作为 C/C++ 和其他语言的安全替代方案,以此来改善应用程序的安全状况。微软认为 Rust 是目前业界系统编程的最佳选择,原因不仅是它能够以内存安全的方式编写系统级程序,还在于其精密性。
微软此举让 Rust 在开发者中的地位直线上升,越来越多的企业和个人开始关注并重视代码安全的问题,从而重新审视这门新语言,这主要体现在 2020 年以来围绕 Rust 语言发生的几件事情:Linux 内核维护者表示愿意接受用 Rust 开发 Linux 驱动;AWS 宣布赞助 Rust;微软更进一步,在今年年初开发并开源了受 Rust 启发的新编程语言 Verona;最近,苹果也站出来拥抱它,计划将部分 C 代码移植到 Rust 。
目前,Rust 语言的发展总体来说仍然比较缓慢,根据最新的一份调查报告显示,大多数不愿意接受 Rust 的开发者认为,Rust 目前的问题主要在于学习曲线陡峭、缺少所需的库、缺乏 IDE 支持等。可以说,Rust 的发展仍然任重道远。
前浪 Objective-C(1986) VS 后浪 Swift(2014)
Swift 是为数不多的成功把“前浪”拍在沙滩上的“后浪”。
2010 年,或许是受到竞争对手 Google 推出 Go 的启示,Apple 高层也决定开发一套新的编程语言,用以替代使用了数十年的 Objective-C,而最早接到这个任务的人正是 Chris Lattner。Chris 在大学还没毕业的时候就成为了业内知名的编译器专家,其硕士期间发表的论文奠定了 LLVM 框架的发展基础。在加入 Apple 公司以后,Chris 创造的 LLVM + Clang 成为了 Apple 软件产品的编译框架。而 Swift 语言就是 Chris 继 LLVM 与 Clang 之后的又一力作。
Swift 是一门博采众长的现代语言,在设计的过程中,Chris 参考了 Objective-C、Rust、Haskell、Ruby、Python、C# 等语言的优点,最终形成了 Swift 的语法特性。与前辈 OC 相比,Swift 的语法更加简洁,例如行尾不再需要分号,if/else 语句也不需要括弧,调用方法时 [ ] 也不再嵌套,支持字符串插入,省略了 OC 中的 %s,%d,%@ 等等。同时,Swift 把 oc 头文件 .h 和实现文件 .m 合并成了一个代码文件 .swift,使得Swift 代码更易于维护。最重要的是,擅长优化的苹果工程师让 Swift 的运行速度能够逼近 C++,是 OC 运行速度的近 1.4 倍。在 Swift 诞生以后,苹果软件的开发者只需要维护原来一半量的代码文件,大大提高了开发效率,降低了维护成本。
目前,Swift 几乎已经完全取代 Objective-C ,成为苹果旗下 MacOS 、iOS 的主流开发语言,很多刚刚入行的 iOS 新人开发者甚至没有接触过 Objective-C 。不出意外的话,Objective-C 很有可能在不久的将来被人们逐渐遗忘。然而 Swift 团队的目标似乎远不止于干掉老大哥这么简单,在即将发布的 5.3 版本中,Swift 将增加对 Windows 和其他 Linux 发行版 PC 操作系统的支持(目前仅支持 MacOS 和 Ubuntu),至于其后续发展如何,我们还将持续关注。
前浪 JavaScript(1995) VS 后浪 Dart (2011)
Dart 是 Google 工程师们继 Go 之后造的又一个轮子。与 Go 类似,Dart 最初也是一群 Google 工程师觉得 JavaScript 不太行,因此想要重新造一个更好的语言取代它,于是就有了 Dart 。
Google 工程师认为,JS 当初从设计到发布的时间极短(仅为 7 个月),在语言规范和谨慎性方面存在先天不足,比如语法过于松散、缺乏模块化能力、核心库不完备、编程语言范型不明确等,且难以用改良的方式来修复。事实上,Google 工程师多年来也为改善 JavaScript 的性能做出了诸多贡献,特别是通过 V8 引擎强化了 JIT 对 JS 的编译能力,从而让 Chrome 浏览器的性能一骑绝尘。 这足以说明当时的 JavaScript 在 Google 工程师眼里确实存在很多问题。
Dart 最初也是作为一种在浏览器中运行的脚本语言而生,Google 还专门在 Chrome 中内置了 一个 DartVM 引擎用来对 Dart 进行推广 。得益于 Chrome 庞大的用户体量,这一举措让 Dart 积累了规模可观的早期用户群体。
原以为在 Google 的保驾护航下,Dart 能够稳步发展并最终赶超 JavaScript。然而令 Google 没想到的是,半路竟杀出了一个 Node.js 。Node.js 是一个 JavaScript 运行环境,它让 JavaScript 可以开发后端程序,实现几乎其他后端语言实现的所有功能,这意味着 JavaScript 可以与 PHP、Java、Python、.NET、Ruby 等后端语言平起平坐。从那时起,“ 凡是能用 JavaScript 写的应用终将用 JavaScript 来写 ”开始在圈内广为流传。值得一提的是,Node.js 正是基于 Google 自己的开源 JavaScript 引擎 V8 开发而来。V8 本来是用于 Chrome 对 JavaScript 的解释器,鬼才 Ryan Dahl 把 V8 搬到了服务器上,用来做服务器的软件并取得了成功。在往后的几年里,前端开发的模式因 JavaScript 而改变,React、React-Native、Vue 等基于 JavaScript 的明星项目迅速崛起,Dart 逐渐被人们遗忘在角落。
然而 Google 一直没有放弃 Dart 。2018 年,Google 对 Dart 进行了底层重构,并于 8 月推出了 Dart 2.0 版本,将其重新定义为一种同时支持 Web 和移动客户端开发、具有丰富工具箱和组件的语言。同年 12 月,Google 发布了用 Dart 编写的跨平台应用开发工具 Flutter,让 Dart 能够在服务端编写命令行程序,同时在前端可以编译成 JavaScript 运行在浏览器中。随后,Google 开始新一轮发力推广全新的 Dart ,包括为另一个知名前端框架 Angular 推出对应的 Dart 版本,指定 Dart 作为未来的操作系统 Fuchsia 的官方开发语言等,Dart 社区又焕发了勃勃生机。
可以说在刚刚诞生的前几年里,作为一门运行在浏览器中的脚本语言,Dart 是完败于前辈 JavaScript 的。而如今乘着“大前端”的变革浪潮,要说超越 JavaScript 虽然也不太现实(毕竟“凡是能用 JavaScript 写的东西终将用 JavaScript 来写” ),但 Dart 在未来一段时间里还是一个非常有潜力的“后浪”代表。
前浪 Java(1995) VS 后浪 Kotlin (2011)
Kotlin 是 Google 公司继 Go 之后又一力捧的新编程语言。Kotlin 诞生于 2010 年,出自 JetBrains,并于2012年正式开源。Kotlin 最初的设计目的是为了创建一种兼容 Java 的编程语言,并让它比 Java 更好。
作为一门相对比较新的 JVM 语言,Kotlin 得到了 Google 公司的大力支持。2017年,Google 在 I/O 开发者大会上官宣 Kotlin 正式成为 Android 官方开发语言 。两年后的 I/O 大会上,Google 再次加码 Kotlin,宣布其成为 Andoid 开发官方首选语言。
Kotlin 的语法融合了 Scala、Groovy、Python、Swift 等众多语言的特性,如果使用过其中任意一门语言,上手 Kotlin 将非常容易。与 Java 相比,Kotlin 引入了函数式编程方式,同时有各种语法糖简化了代码量。但与其他试图取代“前浪”的新语言不同,Kotlin 走的是一条 100% 兼容 Java 的道路(打不过就加入)。众所周知,Java 这么多年屹立不倒的原因是因为其发展多年积累的庞大生态,包括丰富的函数库、IDE、编译器、成熟的应用生态等等。Kotlin 则可以调用 Java 的绝大多数库,也就可以直接使用 Java 现有的生态,因此很多开发者选择混用 Kotlin 与 Java。
由于采用的是与前辈和谐共生的模式,目前 Kotlin 已经超越 Scala 和 Clojure,成为 JVM 上第二大受欢迎的语言,尤其是在安卓开发领域得到了很多国内外开发者的认可,也是一个非常有前景的优秀“后浪”。
结语
这些 21 世纪以后(2010 年前后)以取代老语言为目的而诞生的新语言中,能够顺利取代“前浪”的语言屈指可数。有的乘着新技术的东风在某一新兴领域成为了行业标杆。有的在与“前浪”的和谐共生中猥琐发育,静待日后的逆袭。当然,更多的是消逝在了历史的长河里,甚至没有泛起一丝涟漪……究其原因,如今仍然流行的语言诸如 C/C++、Java、Python、JavaScript 等等,虽然它们大多数诞生于上个世纪,但它们一直以来也都在针对新时代的需求不断地优化,经历了数十个甚至上百个版本的更迭,很多语言已经与诞生之初完全不一样了。再加上它们数十年来积累的函数库、IDE 、编译器、应用生态等自成一脉的丰富体系,让“后浪”们难以望其项背。
从商业的角度来说,在行业格局没有发生颠覆性变革的时候,现有的热门语言依靠多年积累的庞大用户基础,就足以形成垄断。就算有更好的新语言出现,它们也可以迅速吸收这些新语言的优良特性,就像大企业兼并小企业,或者直接照搬它们优秀的业务功能一样,让自己变得更好,也更容易被大部分开发者接受。所以要想在编程语言界把“前浪”们拍在沙滩上,“后浪”们要走的路还有很长很长。