首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2020年编程语言展望

时下最热门的语言是JavaScript,Java和Python,但是编程语言的新陈代谢也在不断发展着,新的优秀语言层出不穷,立足取代他们地位。有一首歌唱的好:"由来只有新人笑,有谁知道旧人哭",对编程语言也是如此。那么在2020的今天,谁是最有前途的语言呢?我们需要拉一个列表,一起说道说道。

Dart

和Ruby借助RoR一样,Dart语言也是借助有一个强有力的框架Flutter以及有个好爹谷歌的缘故,该语言迅速流行起来。

优势:一种比JavaScript更好的语言。

缺点:与JavaScript及其庞大生态系统直面竞争。

实例:

代码语言:javascript
复制
class?Complex?{??double?_r,_i;??Complex(this._r,this._i);??double?get?r?=>?_r;??double?get?i?=>?_i;??String?toString()?=>?"($r,$i)";??Complex?operator?+(Complex?other)?=>?new?Complex(r+other.r,i+other.i);??Complex?operator?*(Complex?other)?=>??new?Complex(r*other.r-i*other.i,r*other.i+other.r*i);??double?abs()?=>?r*r+i*i;??}??void?main()?{??double?start_x=-1.5;??double?start_y=-1.0;??double?step_x=0.03;??double?step_y=0.1;??for(int?y=0;y<20;y++)?{??String?line="";??for(int?x=0;x<70;x++)?{??Complex?c=new?Complex(start_x+step_x*x,start_y+step_y*y);??Complex?z=new?Complex(0.0,?0.0);??for(int?i=0;i<100;i++)?{??z=z*(z)+c;??if(z.abs()>2)?{??break;??}??}??line+=z.abs()>2???"?"?:?"*";??}??print(line);??}??}?

Elixir

Elixir有一个美好的名字,翻译为中文是"灵丹妙药,长生不老药",它源自于Erlang,改进了语法以及对有更强大的并发人支持。作为一种纯函数式语言,是否可以作为了主流,并长久不衰,长生不老呢?需要我们拭目以待。

优势:功能编程非常简单,强大的并发性。

缺点:需要熟悉函数式编程和函数式思维,学习曲线不直。

实例:

代码语言:javascript
复制
defmodule?Mandelbrot?do??def?set?do??xsize?=?59??ysize?=?21??minIm?=?-1.0??maxIm?=?1.0??minRe?=?-2.0??maxRe?=?1.0??stepX?=?(maxRe?-?minRe)?/?xsize??stepY?=?(maxIm?-?minIm)?/?ysize??Enum.each(0..ysize,?fn?y?->??im?=?minIm?+?stepY?*?y??Enum.map(0..xsize,?fn?x?->??re?=?minRe?+?stepX?*?x??62?-?loop(0,?re,?im,?re,?im,?re*re+im*im)??end)?|>?IO.puts??end)??end??defp?loop(n,?_,?_,?_,?_,?_)?when?n>=30,?do:?n??defp?loop(n,?_,?_,?_,?_,?v)?when?v>4.0,?do:?n-1??defp?loop(n,?re,?im,?zr,?zi,?_)?do??a?=?zr?*?zr??b?=?zi?*?zi??loop(n+1,?re,?im,?a-b+re,?2*zr*zi+im,?a+b)??end??end??Mandelbrot.set?

Golang

谷歌的又一个嫡儿子。在攻城掠土方面,Golang已经取得了不错的成绩。Golang编译速度快,便捷的语法,静态变量,基于协程的高性能并发支持。当然也有槽点,比如繁琐错误语法、混乱模块机制,和缺乏泛型,当然golang社区也一直在努力改进,这些槽点预计将来都会消失。

优势:语法简单,静态类型,很好的并发性。

缺点:缺少泛型,错误语法,模块机制。

实例:

代码语言:javascript
复制
package?main??import?(??"fmt"??"image"??"image/color"??"image/draw"??"image/png"??"math/cmplx"??"os"??)??const?(??maxEsc?=?100??rMin?=?-2.??rMax?=?.5??iMin?=?-1.??iMax?=?1.??width?=?750??red?=?230??green?=?235??blue?=?255??)??func?mandelbrot(a?complex128)?float64?{??i?:=?0??for?z?:=?a;?cmplx.Abs(z)?<?2?&&?i?<?maxEsc;?i++?{??z?=?z*z?+?a??}??return?float64(maxEsc-i)?/?maxEsc??}??func?main()?{??scale?:=?width?/?(rMax?-?rMin)??height?:=?int(scale?*?(iMax?-?iMin))??bounds?:=?image.Rect(0,?0,?width,?height)??b?:=?image.NewNRGBA(bounds)??draw.Draw(b,?bounds,?image.NewUniform(color.Black),?image.ZP,?draw.Src)??for?x?:=?0;?x?<?width;?x++?{??for?y?:=?0;?y?<?height;?y++?{??fEsc?:=?mandelbrot(complex(??float64(x)/scale+rMin,??float64(y)/scale+iMin))??b.Set(x,?y,?color.NRGBA{uint8(red?*?fEsc),??uint8(green?*?fEsc),?uint8(blue?*?fEsc),?255})??}??}??f,?err?:=?os.Create("mandelbrot.png")??if?err?!=?nil?{??fmt.Println(err)??return??}??if?err?=?png.Encode(f,?b);?err?!=?nil?{??fmt.Println(err)??}??if?err?=?f.Close();?err?!=?nil?{??fmt.Println(err)?

Julia

Julia是一门强大的数值计算语言。其语法对数学支持非常好,很适合数据科学家编写应用。是取代Python统计分析和数值计算的预备选手之一。

优势:对数学友好。

缺点:要与Python竞争。

实例:

代码语言:javascript
复制
using?Images??@inline?function?hsv2rgb(h,?s,?v)??const?c?=?v?*?s??const?x?=?c?*?(1?-?abs(((h/60)?%?2)?-?1))??const?m?=?v?-?c??const?r,g,b?=??if?h?<?60??(c,?x,?0)??elseif?h?<?120??(x,?c,?0)??elseif?h?<?180??(0,?c,?x)??elseif?h?<?240??(0,?x,?c)??elseif?h?<?300??(x,?0,?c)??else??(c,?0,?x)??end??(r?+?m),?(b?+?m),?(g?+?m)??end??function?mandelbrot()??const?w,?h?=?1000,?1000??const?zoom?=?0.5??const?moveX?=?0??const?moveY?=?0??const?img?=?Array{RGB{Float64}}(h,?w)??const?maxIter?=?30??for?x?in?1:w??for?y?in?1:h??i?=?maxIter??const?c?=?Complex(??(2*x?-?w)?/?(w?*?zoom)?+?moveX,??(2*y?-?h)?/?(h?*?zoom)?+?moveY??)??z?=?c??while?abs(z)?<?2?&&?(i?-=?1)?>?0??z?=?z^2?+?c??end??const?r,g,b?=?hsv2rgb(i?/?maxIter?*?360,?1,?i?/?maxIter)??img[y,x]?=?RGB{Float64}(r,?g,?b)??end??end??save("mandelbrot_set.png",?img)??end??mandelbrot()?

Kotlin

Kotlin是优化版本的Java,作为Java的取代者之一。谷歌已经在安卓开发中支持Kotlin。

优势:更强大的Java。

缺点:好要依靠Java的阴影活着。

代码语言:javascript
复制
import?java.awt.Graphics??import?java.awt.image.BufferedImage??import?javax.swing.JFrame??class?Mandelbrot:?JFrame("Mandelbrot?Set")?{??companion?object?{??private?const?val?MAX_ITER?=?570??private?const?val?ZOOM?=?150.0??}??private?val?img:?BufferedImage??init?{??setBounds(100,?100,?800,?600)??isResizable?=?false??defaultCloseOperation?=?EXIT_ON_CLOSE??img?=?BufferedImage(width,?height,?BufferedImage.TYPE_INT_RGB)??for?(y?in?0?until?height)?{??for?(x?in?0?until?width)?{??var?zx?=?0.0??var?zy?=?0.0??val?cX?=?(x?-?400)?/?ZOOM??val?cY?=?(y?-?300)?/?ZOOM??var?iter?=?MAX_ITER??while?(zx?*?zx?+?zy?*?zy?<?4.0?&&?iter?>?0)?{??val?tmp?=?zx?*?zx?-?zy?*?zy?+?cX??zy?=?2.0?*?zx?*?zy?+?cY??zx?=?tmp??iter--??}??img.setRGB(x,?y,?iter?or?(iter?shl?7))??}??}??}??override?fun?paint(g:?Graphics)?{??g.drawImage(img,?0,?0,?this)??}??}??fun?main(args:?Array<String>)?{??Mandelbrot().isVisible?=?true??}?

Lua

Lua是一种小型,简单,快速,可嵌入,可移植且灵活的语言。

优点:小型、内嵌,nginx编程

缺点:已经26年了,年事已高。

实例:

Pharo

Pharo是Smalltalk的现代化变体,是一种非常有生产力的面向对象语言。实际上,Smalltalk是OOP的典范,并且已经启发了几乎所有其他OOP语言。但是,也没有其他一种语言能比Smalltalk更好地实现OOP。

Pharo也是世界上最简单和最优雅的语言之一,可以让我们在15分钟内学习Smalltalk的全部语法,

优势:生产率高,生产率提高5倍。

缺点:需要不同的编程思想。

实例:

Rust

Rust是一种设计为内存安全的编程语言,通过borrow和变量生命周期控制消除了与存储器相关的编程错误。Rust承诺编程会更安全。而且Rust效率也非常高,语法也非常优雅,目前热度很高,Github中Rust新项目层出不穷。

优势:开发更加可靠,有从系统级到应用级,浏览器引擎(Firefox),Web开发等各方面的实例。门槛有点高,可以筛选掉一批写bug的码农。

缺点:学习曲线比较陡峭,门槛较高,把一批新手挡在外面。

实例:

WebAssembly

WebAssembly可以说是一匹黑马。预计在接下来十年左右的时间里,可能会衍生出许多升至顶级的语言。WebAssembly 是一种接近机器语言的跨平台二进制格式。目前四大主流浏览器厂商谷歌Chrome、苹果Safari、微软Edge 和 Mozilla FireFox 均以支持了WebAssembly 的初始版本,而且为了安全规范,去年各大厂商又成立了字节码联盟,立足于通过协作制定和实施标准,完善 WebAssembly 在浏览器之外的生态。

优点:广泛的浏览器和语言支持。

缺点:生态体系尚未完善。

实例:

代码语言:javascript
复制
request?=?new?XMLHttpRequest();??request.open('GET',?'simple.wasm');??request.responseType?=?'arraybuffer';??request.send();??request.onload?=?function()?{??var?bytes?=?request.response;??WebAssembly.instantiate(bytes,?importObject).then(results?=>?{??results.instance.exports.exported_func();??});??};?
  • 发表于:
  • 原文链接http://news.51cto.com/art/202001/609684.htm
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com