2020年编程语言展望

新闻 前端
时下最热门的语言是JavaScript,Java和Python,但是编程语言的新陈代谢也在不断发展着,新的优秀语言层出不穷,立足取代他们地位。

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

Dart

2020年编程语言展望

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

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

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

实例:

2020年编程语言展望
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.00.0); 
 
for(int i=0;i<100;i++) { 
 
z=z*(z)+c; 
 
if(z.abs()>2) { 
 
break
 

 

 
line+=z.abs()>2 ? " " : "*"
 

 
print(line); 
 

 

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.

Elixir

2020年编程语言展望

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

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

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

实例:

2020年编程语言展望
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>=30do: n 
 
defp loop(n, _, _, _, _, v) when v>4.0do: 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 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.

Golang

2020年编程语言展望

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

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

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

实例:

2020年编程语言展望
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(00, 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) 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.

Julia

2020年编程语言展望

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

优势:对数学友好。

缺点:要与Python竞争。

实例:

2020年编程语言展望
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 = 10001000 
 
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 * 3601, i / maxIter) 
 
img[y,x] = RGB{Float64}(r, g, b) 
 
end 
 
end 
 
save("mandelbrot_set.png", img) 
 
end 
 
mandelbrot() 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.

Kotlin

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

2020年编程语言展望

优势:更强大的Java。

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

2020年编程语言展望
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(100100800600
 
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, 00this
 

 

 
fun main(args: Array<String>) { 
 
Mandelbrot().isVisible = true 
 

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.

Lua

2020年编程语言展望

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

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

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

实例:

2020年编程语言展望

Pharo

2020年编程语言展望

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

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

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

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

实例:

2020年编程语言展望

Rust

[[313519]]

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

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

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

实例:

2020年编程语言展望

WebAssembly

2020年编程语言展望

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

2020年编程语言展望

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

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

实例:

2020年编程语言展望
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(); 
 
}); 
 
}; 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

 

责任编辑:张燕妮 来源: 今日头条
相关推荐

2020-02-03 14:34:41

技术资讯

2020-02-18 16:38:48

编程语言javapython

2021-01-07 16:29:20

编程语言JavaPython

2020-06-30 10:30:24

编程语言开发大数据

2020-02-26 15:14:23

编程语言PythonJava

2019-09-24 15:20:36

编程语言PythonJava

2020-08-19 08:18:59

编程语言JavaPython

2020-02-14 09:19:12

编程语言JavaPython

2020-01-09 10:36:16

云计算技术互联网

2020-02-13 09:00:00

编程语言JavaKotlin

2020-07-03 08:00:19

编程语言JavaPython

2020-12-18 11:32:45

编程语言JavaPython

2020-07-02 07:12:28

编程语言开发技术

2021-02-17 23:49:56

编程语言PYPLPerl

2020-11-10 14:57:18

编程语言PythonJava

2020-03-01 17:35:53

编程语言大数据程序员

2020-02-13 16:18:50

人工智能开发编程语言

2020-01-12 19:48:13

编程语言RustPython

2019-10-30 10:42:42

CIO数字化转型开发

2019-07-17 13:45:42

网络安全防火墙软件
点赞
收藏

51CTO技术栈公众号