|
|
51CTO旗下网站
|
|
移步端
  • 2020年编程语言展望

    当下最热门的语言是JavaScript,Java和Python,但是编程语言的新老交替也在不断开拓进取着,新的优秀语言层出不穷,立足取代他们地位。

    笔者:虫虫安全 来源:当日第一| 2020-01-21 22:08

    当下最热门的语言是JavaScript,Java和Python,但是编程语言的新老交替也在不断开拓进取着,新的优秀语言层出不穷,立足取代他们地位。有一首歌唱的好:"原因只有新人笑,有谁知道旧人哭",对编程语言也是如此。这就是说在2020的当日,哪个是最有前途的语言呢?咱们需要拉一个列表,共计商讨说道。

    Dart

    2020年编程语言展望

    和Ruby凭借RoR一样,Dart语言也是借以有一度有力的框架Flutter以及有个好爹谷歌之原因,该语言迅速流行起来。

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

    症结:与JavaScript及其庞大生态体系直面竞争。

    老:

    2020年编程语言展望
          
    1. class Complex { 
    2.  
    3. double _r,_i; 
    4.  
    5. Complex(this._r,this._i); 
    6.  
    7. double get r => _r; 
    8.  
    9. double get i => _i; 
    10.  
    11. String toString() => "($r,$i)"
    12.  
    13. Complex operator +(Complex other) => new Complex(r+other.r,i+other.i); 
    14.  
    15. Complex operator *(Complex other) => 
    16.  
    17. new Complex(r*other.r-i*other.i,r*other.i+other.r*i); 
    18.  
    19. double abs() => r*r+i*i; 
    20.  
    21.  
    22. void main() { 
    23.  
    24. double start_x=-1.5
    25.  
    26. double start_y=-1.0
    27.  
    28. double step_x=0.03
    29.  
    30. double step_y=0.1
    31.  
    32. for(int y=0;y<20;y++) { 
    33.  
    34. String line=""
    35.  
    36. for(int x=0;x<70;x++) { 
    37.  
    38. Complex c=new Complex(start_x+step_x*x,start_y+step_y*y); 
    39.  
    40. Complex z=new Complex(0.00.0); 
    41.  
    42. for(int i=0;i<100;i++) { 
    43.  
    44. z=z*(z)+c; 
    45.  
    46. if(z.abs()>2) { 
    47.  
    48. break
    49.  
    50.  
    51.  
    52. line+=z.abs()>2 ? " " : "*"
    53.  
    54.  
    55. print(line); 
    56.  
    57.  

    Elixir

    2020年编程语言展望

    Elixir有一度美好的名字,翻译为对方文是"灵丹妙药,长生不老药",他源自于Erlang,改善了语法以及对有更有力的并发人支持。表现一种纯函数式语言,只是可以表现了主流,并长久不衰,长生不老呢?要求我们拭目以待。

    优势:效益编程非常简单,强有力的并发性。

    症结:要求熟悉函数式编程和函数式思维,学习曲线不直。

    老:

    2020年编程语言展望
          
    1. defmodule Mandelbrot do 
    2.  
    3. def set do 
    4.  
    5. xsize = 59 
    6.  
    7. ysize = 21 
    8.  
    9. minIm = -1.0 
    10.  
    11. maxIm = 1.0 
    12.  
    13. minRe = -2.0 
    14.  
    15. maxRe = 1.0 
    16.  
    17. stepX = (maxRe - minRe) / xsize 
    18.  
    19. stepY = (maxIm - minIm) / ysize 
    20.  
    21. Enum.each(0..ysize, fn y -> 
    22.  
    23. im = minIm + stepY * y 
    24.  
    25. Enum.map(0..xsize, fn x -> 
    26.  
    27. re = minRe + stepX * x 
    28.  
    29. 62 - loop(0, re, im, re, im, re*re+im*im) 
    30.  
    31. end) |> IO.puts 
    32.  
    33. end) 
    34.  
    35. end 
    36.  
    37. defp loop(n, _, _, _, _, _) when n>=30do: n 
    38.  
    39. defp loop(n, _, _, _, _, v) when v>4.0do: n-1 
    40.  
    41. defp loop(n, re, im, zr, zi, _) do 
    42.  
    43. a = zr * zr 
    44.  
    45. b = zi * zi 
    46.  
    47. loop(n+1, re, im, a-b+re, 2*zr*zi+im, a+b) 
    48.  
    49. end 
    50.  
    51. end 
    52.  
    53. Mandelbrot.set 

    Golang

    2020年编程语言展望

    谷歌之又一个嫡儿子。在攻城掠土方面,Golang已经取得了科学的功绩。Golang编译速度快,便利的语法,静态变量,基于协程的高性能并发支持。当然也有槽点,比如繁琐错误语法、散乱模块机制,和缺乏泛型,当然golang镇区也一直在斗争改善,该署槽点预计未来都会消失。

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

    症结:缺乏泛型,错误语法,模块机制。

    老:

    2020年编程语言展望
          
    1. package main 
    2.  
    3. import ( 
    4.  
    5. "fmt" 
    6.  
    7. "image" 
    8.  
    9. "image/color" 
    10.  
    11. "image/draw" 
    12.  
    13. "image/png" 
    14.  
    15. "math/cmplx" 
    16.  
    17. "os" 
    18.  
    19.  
    20. const ( 
    21.  
    22. maxEsc = 100 
    23.  
    24. rMin = -2
    25.  
    26. rMax = .5 
    27.  
    28. iMin = -1
    29.  
    30. iMax = 1
    31.  
    32. width = 750 
    33.  
    34. red = 230 
    35.  
    36. green = 235 
    37.  
    38. blue = 255 
    39.  
    40.  
    41. func mandelbrot(a complex128) float64 { 
    42.  
    43. i := 0 
    44.  
    45. for z := a; cmplx.Abs(z) < 2 && i < maxEsc; i++ { 
    46.  
    47. z = z*z + a 
    48.  
    49.  
    50. return float64(maxEsc-i) / maxEsc 
    51.  
    52.  
    53. func main() { 
    54.  
    55. scale := width / (rMax - rMin) 
    56.  
    57. height := int(scale * (iMax - iMin)) 
    58.  
    59. bounds := image.Rect(00, width, height) 
    60.  
    61. b := image.NewNRGBA(bounds) 
    62.  
    63. draw.Draw(b, bounds, image.NewUniform(color.Black), image.ZP, draw.Src) 
    64.  
    65. for x := 0; x < width; x++ { 
    66.  
    67. for y := 0; y < height; y++ { 
    68.  
    69. fEsc := mandelbrot(complex( 
    70.  
    71. float64(x)/scale+rMin, 
    72.  
    73. float64(y)/scale+iMin)) 
    74.  
    75. b.Set(x, y, color.NRGBA{uint8(red * fEsc), 
    76.  
    77. uint8(green * fEsc), uint8(blue * fEsc), 255}) 
    78.  
    79.  
    80.  
    81. f, err := os.Create("mandelbrot.png"
    82.  
    83. if err != nil { 
    84.  
    85. fmt.Println(err) 
    86.  
    87. return 
    88.  
    89.  
    90. if err = png.Encode(f, b); err != nil { 
    91.  
    92. fmt.Println(err) 
    93.  
    94.  
    95. if err = f.Close(); err != nil { 
    96.  
    97. fmt.Println(err) 

    Julia

    2020年编程语言展望

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

    优势:对数学友好。

    症结:要与Python竞争。

    老:

    2020年编程语言展望
          
    1. using Images 
    2.  
    3. @inline function hsv2rgb(h, s, v) 
    4.  
    5. const c = v * s 
    6.  
    7. const x = c * (1 - abs(((h/60) % 2) - 1)) 
    8.  
    9. const m = v - c 
    10.  
    11. const r,g,b = 
    12.  
    13. if h < 60 
    14.  
    15. (c, x, 0
    16.  
    17. elseif h < 120 
    18.  
    19. (x, c, 0
    20.  
    21. elseif h < 180 
    22.  
    23. (0, c, x) 
    24.  
    25. elseif h < 240 
    26.  
    27. (0, x, c) 
    28.  
    29. elseif h < 300 
    30.  
    31. (x, 0, c) 
    32.  
    33. else 
    34.  
    35. (c, 0, x) 
    36.  
    37. end 
    38.  
    39. (r + m), (b + m), (g + m) 
    40.  
    41. end 
    42.  
    43. function mandelbrot() 
    44.  
    45. const w, h = 10001000 
    46.  
    47. const zoom = 0.5 
    48.  
    49. const moveX = 0 
    50.  
    51. const moveY = 0 
    52.  
    53. const img = Array{RGB{Float64}}(h, w) 
    54.  
    55. const maxIter = 30 
    56.  
    57. for x in 1:w 
    58.  
    59. for y in 1:h 
    60.  
    61. i = maxIter 
    62.  
    63. const c = Complex( 
    64.  
    65. (2*x - w) / (w * zoom) + moveX, 
    66.  
    67. (2*y - h) / (h * zoom) + moveY 
    68.  
    69.  
    70. z = c 
    71.  
    72. while abs(z) < 2 && (i -= 1) > 0 
    73.  
    74. z = z^2 + c 
    75.  
    76. end 
    77.  
    78. const r,g,b = hsv2rgb(i / maxIter * 3601, i / maxIter) 
    79.  
    80. img[y,x] = RGB{Float64}(r, g, b) 
    81.  
    82. end 
    83.  
    84. end 
    85.  
    86. save("mandelbrot_set.png", img) 
    87.  
    88. end 
    89.  
    90. mandelbrot() 

    Kotlin

    Kotlin是多样化版本的Java,表现Java的代表者之一。谷歌已经在安卓开发中支持Kotlin。

    2020年编程语言展望

    优势:更有力的Java。

    症结:好要依靠Java的影子活着。

    2020年编程语言展望
          
    1. import java.awt.Graphics 
    2.  
    3. import java.awt.image.BufferedImage 
    4.  
    5. import javax.swing.JFrame 
    6.  
    7. class Mandelbrot: JFrame("Mandelbrot Set") { 
    8.  
    9. companion object { 
    10.  
    11. private const val MAX_ITER = 570 
    12.  
    13. private const val ZOOM = 150.0 
    14.  
    15.  
    16. private val img: BufferedImage 
    17.  
    18. init { 
    19.  
    20. setBounds(100100800600
    21.  
    22. isResizable = false 
    23.  
    24. defaultCloseOperation = EXIT_ON_CLOSE 
    25.  
    26. img = BufferedImage(width, height, BufferedImage.TYPE_INT_RGB) 
    27.  
    28. for (y in 0 until height) { 
    29.  
    30. for (x in 0 until width) { 
    31.  
    32. var zx = 0.0 
    33.  
    34. var zy = 0.0 
    35.  
    36. val cX = (x - 400) / ZOOM 
    37.  
    38. val cY = (y - 300) / ZOOM 
    39.  
    40. var iter = MAX_ITER 
    41.  
    42. while (zx * zx + zy * zy < 4.0 && iter > 0) { 
    43.  
    44. val tmp = zx * zx - zy * zy + cX 
    45.  
    46. zy = 2.0 * zx * zy + cY 
    47.  
    48. zx = tmp 
    49.  
    50. iter-- 
    51.  
    52.  
    53. img.setRGB(x, y, iter or (iter shl 7)) 
    54.  
    55.  
    56.  
    57.  
    58. override fun paint(g: Graphics) { 
    59.  
    60. g.drawImage(img, 00this
    61.  
    62.  
    63.  
    64. fun main(args: Array<String>) { 
    65.  
    66. Mandelbrot().isVisible = true 
    67.  

    Lua

    2020年编程语言展望

    Lua是一种小型,大概,很快,可嵌入,可移栽且灵活的语言。

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

    症结:已经26年了,老大。

    老:

    2020年编程语言展望

    Pharo

    2020年编程语言展望

    Pharo是Smalltalk的工业化变体,是一种特别有生产力的面向对象语言。实际上,Smalltalk是OOP的旗帜,并且已经启发了几乎全部其他OOP语言。但是,也没有任何一种语言能比Smalltalk更好地贯彻OOP。

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

    优势:汇率高,汇率增长5倍。

    症结:要求不同之编程思想。

    老:

    2020年编程语言展望

    Rust

    2020年编程语言展望

    Rust是一种设计为内存安全的编程语言,穿过borrow和总分生命周期控制消除了与存储器相关的编程错误。Rust承诺编程会更安全。而且Rust效率也特别高,语法也特别优雅,脚下热度很高,Github官方Rust新项目层出不穷。

    优势:付出更加可靠,有从系统除到利用级,传感器引擎(Firefox),Web付出等各地方的范例。门槛有点高,可以筛选掉一股写bug的码农。

    症结:学习曲线比较陡峭,门槛较高,把一股新手挡在外边。

    老:

    2020年编程语言展望

    WebAssembly

    2020年编程语言展望

    WebAssembly可以说是一匹黑马。展望在接下来十年控制之年华里,可能会衍生出众多升至顶级的语言。WebAssembly 是一种接近机器语言的跨平台二进制格式。脚下四大主流浏览器厂商谷歌Chrome、苹果Safari、迪斯尼Edge 和 Mozilla FireFox 平均以支持了WebAssembly 的初步版本,而且为了安全标准,去年各大投资者又成立了字节码联盟,立足于通过协作制定和实行标准,圆满 WebAssembly 在新石器之外的自然环境。

    2020年编程语言展望

    优点:大规模的蒸发器和语言支持。

    症结:生态系统尚未全面。

    老:

    2020年编程语言展望
          
    1. request = new XMLHttpRequest(); 
    2.  
    3. request.open('GET''simple.wasm'); 
    4.  
    5. request.responseType = 'arraybuffer'
    6.  
    7. request.send(); 
    8.  
    9. request.onload = function() { 
    10.  
    11. var bytes = request.response; 
    12.  
    13. WebAssembly.instantiate(bytes, importObject).then(results => { 
    14.  
    15. results.instance.exports.exported_func(); 
    16.  
    17. }); 
    18.  
    19. }; 

    【编纂推荐】

    1. 国产编程语言被质疑“换皮” 当事人为夸大行为致歉
    2. 写 Python 代码不可不知之函数式编程技术
    3. 迪斯尼正式开源受 Rust 启示的新编程语言 Verona
    4. 为什么我用Go写机器学习部署平台,而偏偏不用Python?
    5. 性能提升25倍:Rust开展取代C和C++,成为机器学习首选之Python此后端
    【义务编辑: 张燕妮 TEL:(010)68476606】

    点赞 0
  • 编程语言  Python  Java
  • 分享:
    大家都在看
    猜你喜欢
  • 订阅专栏+更多

    Python使用场景实战手册

    Python使用场景实战手册

    Python使用场景实战手册
    共3章 | KaliArch

    19人口订阅学习

    一步到位玩儿透Ansible

    一步到位玩儿透Ansible

    Ansible
    共17章 | 骏马金龙1

    195人口订阅学习

    云架构师修炼手册

    云架构师修炼手册

    云架构师之必不可少技能
    共3章 | Allen在路上

    35人口订阅学习

    订阅51CTO邮刊

    点击这里查看样刊

    订阅51CTO邮刊

    51CTO劳务号

    51CTO官微