成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 和 JavaScript 2020年你認為那個走的更遠?

開發 后端
Python 和 JavaScript 是目前最火的兩大編程語言。然而,他們不可能永遠屹立不倒。最終,必將像其他編程語言一樣跌下神壇。這很可能在接下來的十年左右上演。

Python 和 JavaScript 是目前最火的兩大編程語言,但是 2020 年,什么編程語言將會取而代之呢?

 

[[321155]]

以下為譯文:

Python 和 JavaScript 是目前最火的兩大編程語言。然而,他們不可能永遠屹立不倒。最終,必將像其他編程語言一樣跌下神壇。這很可能在接下來的十年左右上演。

那么什么編程語言將會取而代之呢? 下面給出我的候選者名單!

Dart

 

Python 和 JavaScript  2020年你認為那個走的更遠?

多虧了 Flutter 框架和 Google 的認可,該語言迅速流行開來。這和 Rails 框架讓 Ruby 流行起來的原因非常相似。如果谷歌的 Fuchsia 系統能夠火起來,Dart 將受益最大。

  • 核心優勢:它是一種比 JavaScript 更棒的編程語言。
  • 主要缺點:不得不面對 JavaScript 語言和 JavaScript 的強烈擁護者的挑戰。

曼德布洛特集樣本:

  1. class Complex {  double _r,_i;   Complex(this._r,this._i);  double  
  2. get r => _r;  double get i => _i;  String toString() => "($r,$i)";  
  3.   Complex operator +(Complex other) => new  
  4. Complex(r+other.r,i+other.i);  Complex operator *(Complex other) =>   
  5.     new Complex(r*other.r-i*other.i,r*other.i+other.r*i);  double  
  6. abs() => r*r+i*i;} void main() {  double start_x=-1.5;  double  
  7. start_y=-1.0;  double step_x=0.03;  double step_y=0.1;   for(int y=0; 
  8. y<20;y++) {    String line="";    for(int x=0;x<70;x++) {     
  9.   Complex c=new Complex(start_x+step_x*x,start_y+step_y*y);  
  10.      Complex z=new Complex(0.0, 0.0);      for(int i=0;i<100;i++) {  
  11.        z=z*(z)+c;        if(z.abs()>2) {          break;        }     
  12.   }      line+=z.abs()>2 ? " " : "*";    }    print(line);  }}  

Elixir

 

Python 和 JavaScript  2020年你認為那個走的更遠?

Elixir 是基于一種基于 Erlang 虛擬機的函數式編程語言,對并發的支持非常好。作為一個純粹的函數式編程語言,它有望將這種范式變為主流。

  • 核心優勢:它讓函數式編程變得異常簡單,對并發的支持非常棒。
  • 主要缺點:需要有 OTP 基礎,但掌握 OTP 卻沒那么容易。

曼德布洛特集樣本:

  1. defmodule Mandelbrot do  def set do    xsize = 59    ysize = 21   
  2.   minIm = -1.0    maxIm = 1.0    minRe = -2.0    maxRe = 1.0    stepX 
  3.  = (maxRe - minRe) / xsize    stepY = (maxIm - minIm) / ysize     
  4. Enum.each(0..ysize, fn y ->      im = minIm + stepY * y       
  5. Enum.map(0..xsize, fn x ->        re = minRe + stepX * x        62 -  
  6. loop(0, re, im, re, im, re*re+im*im)      end) |> IO.puts    end
  7.   end   defp loop(n, _, _, _, _, _) when n>=30, do: n  defp loop(n,  
  8. _, _, _, _, v) when v>4.0, do: n-1  defp loop(n, re, im, zr, zi, _)  
  9. do    a = zr * zr    b = zi * zi    loop(n+1, re, im, a-b+re,  
  10. 2*zr*zi+im, a+b)  endend Mandelbrot.set 

Golang

 

Python 和 JavaScript  2020年你認為那個走的更遠?

得益于其閃電般的編譯速度、簡單和高效的并發支持,另外一個谷歌受支持的編程語言 Golang 已經嶄露頭角。唯一缺的就是泛型支持,但是這個特性已經在規劃上了。

  • 核心優勢:上手簡單,對并發的支持非常出色。
  • 主要缺點:缺少泛型支持(暫時的)。

曼德布洛特集樣本:

  1. package main import (    "fmt"    "image"    "image/color"     
  2. "image/draw"    "image/png"    "math/cmplx"    "os") const (     
  3. maxEsc = 100    rMin   = -2.    rMax   = .5    iMin   = -1.    
  4.  iMax   = 1.    width  = 750    red    = 230    green  = 235    
  5.  blue   = 255) func mandelbrot(a complex128) float64 {    i := 0    
  6.  for z := a; cmplx.Abs(z) < 2 && i < maxEsc; i++ {        z = z*z  
  7. + a    }    return float64(maxEsc-i) / maxEsc} func main() {     
  8. scale := width / (rMax - rMin)    height := int(scale * (iMax -  
  9. iMin))    bounds := image.Rect(0, 0, width, height)    b :=  
  10. image.NewNRGBA(bounds)    draw.Draw(b, bounds,  
  11. image.NewUniform(color.Black), image.ZP, draw.Src)    for x := 0;  
  12. x < width; x++ {        for y := 0; y < height; y++ {       
  13.       fEsc := mandelbrot(complex(                float64(x)/scale+rMin,                float64(y)/scale+iMin))  
  14.            b.Set(x, y, color.NRGBA{uint8(red * fEsc),    
  15.              uint8(green * fEsc), uint8(blue * fEsc), 255})      
  16.     }    }    f, err := os.Create("mandelbrot.png")     
  17. if err != nil {        fmt.Println(err)        
  18.  return    }    if err = png.Encode(f, b); err != nil {   
  19.       fmt.Println(err)    }     
  20. if err = f.Close(); err != nil {        
  21.  fmt.Println(err)    }} 

Julia

 

Python 和 JavaScript  2020年你認為那個走的更遠?

Julia 的優勢在于對數學計算的支持非常出色。它對數學的語法支持非常好,堪稱數據科學家的福音。假如有任何編程語言可以顛覆 Python, 它將是一個強有力的競爭者。

  • 核心優勢:為科學家精心設計。
  • 主要缺點:面臨著數據科學之王 Python 的競爭。

曼德布洛特集樣本:

  1. using Images @inline function hsv2rgb(h, s, v)    const c = v * s  
  2.    const x = c * (1 - abs(((h/60) % 2) - 1))    const m = v - c  
  3.     const r,g,b =        if h < 60            (c, x, 0)         
  4. elseif h < 120            (x, c, 0)        elseif h < 180  
  5.     (0, c, x)        elseif h < 240            (0, x, c)        elseif h < 300            (x, 0, c)        else            (c, 0,  
  6. x)        end     (r + m), (b + m), (g + m)end function mandelbrot()     const w, h = 1000, 1000     const zoom  = 0.5    
  7.  const moveX = 0    const moveY = 0     const img =  
  8. Array{RGB{Float64}}(h, w)    const maxIter = 30     for x in 1:w    
  9.      for y in 1:h            i = maxIter            const c =  
  10. Complex(                (2*x - w) / (w * zoom) + moveX,         
  11.         (2*y - h) / (h * zoom) + moveY            )             
  12. z = c            while abs(z) < 2 && (i -= 1) > 0                
  13.  z = z^2 + c            end             
  14. const r,g,b = hsv2rgb(i / maxIter * 360, 1, i / maxIter)            img[y,x] = RGB{Float64}(r, g, b)         
  15. end    end     save("mandelbrot_set.png", img)end mandelbrot() 

Kotlin

 

Python 和 JavaScript  2020年你認為那個走的更遠?

Kotlin 是升級版的 Java。 實際上,它可以完全替代 Java 編程語言,谷歌已經將其打造成 Android 開發的首選語言。

  • 核心優勢:比 Java 更強大。
  • 主要缺點:Kotlin 非常龐大,甚至比 Java 更龐大。

曼德布洛特集樣本:

  1. import java.awt.Graphicsimport java.awt.image.BufferedImageimport javax.swing.JFrame class Mandelbrot: JFrame("Mandelbrot Set") {    
  2. companion object {        
  3. private const val MAX_ITER = 570        
  4. private const val ZOOM = 150.0    }     
  5.  private val img: BufferedImage     init {        
  6. setBounds(100, 100, 800, 600)        
  7. isResizable = false        defaultCloseOperation = EXIT_ON_CLOSE       
  8.  img = BufferedImage(width, height, BufferedImage.TYPE_INT_RGB)        
  9. for (y in 0 until height) {             
  10. for (x in 0 until width) {                
  11.  var zx = 0.0               
  12.  var zy = 0.0                
  13. val cX = (x - 400) / ZOOM                
  14. val cY = (y - 300) / ZOOM                
  15.  var iter = MAX_ITER                
  16. while (zx * zx + zy * zy < 4.0 && iter > 0) {                    
  17. val tmp = zx * zx - zy * zy + cX                    zy = 2.0 * zx * zy + cY                    
  18. zx = tmp                    iter--                }                
  19.  img.setRGB(x, y, iter or (iter shl 7))            }        }    }     
  20.  override fun paint(g: Graphics) {        
  21.  g.drawImage(img, 0, 0, this)    }} fun main(args: Array<String>) {    Mandelbrot().isVisible = true

Lua

 

[[321161]]
  • 核心優勢: Lua 是一種小巧、簡單、快速、可嵌入、可移植和靈活的編程語言。
  • 主要缺點:Lua 被忽視了 26 年了。現在還能掀起風浪嗎?

曼德布洛特集樣本:

  1. local maxIterations = 250local minX, maxX, minY, maxY = -2.5, 2.5, -2.5, 2.5local miX, mxX, miY, mxYfunction remap( x, t1, t2, s1, s2 )    
  2.  local f = ( x - t1 ) / ( t2 - t1 )    local g = f * ( s2 - s1 ) + s1    
  3.  return g;endfunction drawMandelbrot()    local pts, a, as, za, b, bs, zb, cnt, clr = {}    for j = 0, hei - 1 do        
  4.  for i = 0, wid - 1 do            
  5.  a = remap( i, 0, wid, minX, maxX )            
  6. b = remap( j, 0, hei, minY, maxY )           
  7.  cnt = 0; za = a; zb = b            while( cnt < maxIterations ) do                 
  8. as = a * a - b * b; bs = 2 * a * b                
  9.  a = za + as; b = zb + bs                
  10.  if math.abs( a ) + math.abs( b ) > 16 then break end                
  11. cnt = cnt + 1            
  12.  end           
  13.  if cnt == maxIterations then clr = 0            else clr = remap( cnt, 0, maxIterations, 0, 255 )             
  14. end            pts[1] = { i, j, clr, clr, 0, 255 }            love.graphics.points( pts )         
  15. end    endendfunction startFractal()    love.graphics.setCanvas( canvas ); love.graphics.clear()    
  16.  love.graphics.setColor( 255, 255, 255 )    drawMandelbrot(); love.graphics.setCanvas()endfunction love.load()    
  17.  wid, hei = love.graphics.getWidth(), love.graphics.getHeight()    canvas = love.graphics.newCanvas( wid, hei )    
  18. startFractal()endfunction love.mousepressed( x, y, button, istouch )    if button ==  1 then        
  19.  startDrag = true; miX = x; miY = y    else        minX = -2.5; maxX = 2.5; minY = minX; maxY = maxX        
  20.  startFractal()        startDrag = false    endendfunction love.mousereleased( x, y, button, istouch )    
  21.  if startDrag then        local l         
  22. if x > miX then mxX = x        else l = x; mxX = miX; miX = l        end        if y > miY then mxY = y         
  23. else l = y; mxY = miY; miY = l        end        
  24.  miX = remap( miX, 0, wid, minX, maxX )          
  25. mxX = remap( mxX, 0, wid, minX, maxX )         
  26. miY = remap( miY, 0, hei, minY, maxY )          
  27. mxY = remap( mxY, 0, hei, minY, maxY )        
  28.  minX = miX; maxX = mxX; minY = miY; maxY = mxY        
  29. startFractal()    
  30. endendfunction love.draw()    love.graphics.draw( canvas )end  

Pharo

 

[[321162]]

Pharo 是 Smalltalk 的現代版變體,是一個非常高效的面向對象編程語言。事實上,Smalltalk 是面向對象的典范,幾乎所有的其他面向對象編程語言都受到它的啟發。卻沒有一個編程語言比 Smalltalk 面向對象的程度更高。

Pharo 也是世界上最簡單、最優雅的編程語言之一,你只需要 15 分鐘就能掌握 Smalltalk 的全部語法。

  • 關鍵優勢:開發效率非常高,編程效率能提升接近 5 倍。
  • 主要缺點:它需要一種與眾不同的編程思維。但是人總是害怕改變,很難接受這種編程思維。

分形樹樣本:

  1. Object subclass: #FractalTree    instanceVariableNames: ''    classVariableNames: ''    poolDictionaries: ''    category:  
  2. 'RosettaCode'"Methods for FractalTree class"tree: aPoint length: aLength angle: anAngle    | p a |    (aLength > 10) ifTrue: [     
  3.     p := Pen new.        p up.        p goto: aPoint.        p turn: anAngle.        p down.        5 timesRepeat: [            p go:  
  4. aLength / 5.            p turn: 5.        ].        a := anAngle -  
  5. 30.        3 timesRepeat: [            self tree: p location length: 
  6.  aLength * 0.7 angle: a.            a := a + 30.        ]    ].draw  
  7.    Display restoreAfter: [        Display fillWhite.          
  8.      self tree: 700@700 length: 200 angle: 0.    ]"Execute"FractalTree new draw. 

Rust

 

[[321163]]

由于內存安全特性——借用檢查器,Rust 已經贏得廣泛認可。這一特性實際上消除了所有內存相關錯誤。Rust 提供了更安全的編程特性。

  • 關鍵優勢:有助于提高軟件的可靠性。
  • 主要缺點:它學起來很難。借用檢查器比較復雜且難以理解。

曼德布洛特集樣本:

  1. extern crate image;extern crate num_complex; use std::fs::File;use 
  2.  num_complex::Complex; fn main() {    let max_iterations = 256u16; 
  3.     let img_side = 800u32;    let cxmin = -2f32;    let cxmax = 1f32;    let cymin = -1.5f32;    let cymax = 1.5f32;    let scalex  
  4. = (cxmax - cxmin) / img_side as f32;    let scaley = (cymax - cymin) / img_side as f32;     // Create a new ImgBuf    let mut  
  5. imgbuf = image::ImageBuffer::new(img_side, img_side);     // Calculate for each pixel    for (x, y, pixel) in  
  6. imgbuf.enumerate_pixels_mut() {        let cx = cxmin + x as f32 * 
  7.  scalex;        let cy = cymin + y as f32 * scaley;         
  8.  let c = Complex::new(cx, cy);        let mut z = Complex::new(0f32, 0f32);         let mut i = 0;        for t in  
  9. 0..max_iterations {            if z.norm() > 2.0 {                break;            }            z = z * z + c;            i = t;   
  10.       }         *pixel = image::Luma([i as u8]);    }     // Save image    let fout = &mut File::create("fractal.png").unwrap();   
  11.   image::ImageLuma8(imgbuf).save(fout, image::PNG).unwrap();} 

TypeScript

 

Python 和 JavaScript  2020年你認為那個走的更遠?

TypeScript 是一個增強版的 JavaScript. 它主要新增了靜態類型的特性。

由于 TypeScript 和 JavaScript 完全兼容,已經掌握了 JavaScript 的前端 web 開發者們可以輕松掌握 TypeScript,因而深受他們青睞。

  • 核心優勢:它是 JavaScript 的超集 , 對 JavaScript 開發者來說沒啥太大變化。
  • 主要缺點:由于它是 JavaScript 的超級,這就導致了它同樣也繼承了 JavaScript 的一些歷史包袱。

分形樹樣本:

  1. // Set up canvas for drawingvar canvas: HTMLCanvasElement =  
  2. document.createElement('canvas')canvas.width = 600canvas.height =  
  3. 500document.body.appendChild(canvas)var ctx:  
  4. CanvasRenderingContext2D = canvas.getContext('2d')ctx.fillStyle =  
  5. '#000'ctx.lineWidth = 1 // constantsconst degToRad: number =  
  6. Math.PI / 180.0const totalDepth: number = 9 /** Helper function  
  7. that draws a line on the canvas */function drawLine(x1: number, 
  8.  y1: number, x2: number, y2: number): void {    ctx.moveTo(x1, y1) 
  9.     ctx.lineTo(x2, y2)} /** Draws a branch at the given point and  
  10. angle and then calls itself twice */function drawTree(x1: number,  
  11. y1: number, angle: number, depth: number): void {    if (depth !== 
  12.  0) {        let x2: number = x1 + (Math.cos(angle * degToRad) *  
  13. depth * 10.0)        let y2: number = y1 + (Math.sin(angle *  
  14. degToRad) * depth * 10.0)        drawLine(x1, y1, x2, y2)     
  15.     drawTree(x2, y2, angle - 20, depth - 1)        drawTree(x2, 
  16.  y2, angle + 20, depth - 1)    }} // actual drawing of  
  17. treectx.beginPath()drawTree(300, 500, -90,  
  18. totalDepth)ctx.closePath()ctx.stroke() 

WebAssembly

 

Python 和 JavaScript  2020年你認為那個走的更遠?

WebAssembly 是一匹黑馬。在接下來的十年左右的時間,它可能會衍生出一系列編程語言,這些編程語言有望登頂編程語言排行榜。

雖然 WebAssembly 只是一個編譯目標,但是它有充足理由被應用到 Web 領域之外。哪種基于 WebAssembly 的編程語言能夠榮登榜首?誰也說不準。

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2013-05-03 13:28:54

2020-01-10 10:48:27

JavaScript框架StateOfJS

2020-01-10 15:57:03

JavaScript開發 技巧

2012-11-30 11:19:02

JavaScript

2013-09-22 09:58:37

虛擬化

2020-07-13 09:34:10

合合信息AI大數據

2020-04-15 11:14:03

物聯網5G直播

2013-12-03 16:37:54

2020-02-21 10:30:10

開發技能代碼

2020-06-02 10:10:46

React前端組件

2012-03-13 09:59:50

小米科技雷軍

2020-08-12 08:31:57

JavaScript

2020-08-31 08:35:10

JavaScript

2020-05-10 16:46:56

前端JavaScript開發

2020-08-02 23:48:57

JavaScript用戶認證庫開發

2020-06-16 17:10:44

JavaScriptReact開發

2021-01-18 15:46:10

JavaScript開發 編程

2024-03-27 08:36:48

JavaScriptWeb開發前端開發

2020-09-14 08:33:40

Python書籍開發

2020-04-23 09:59:25

架構微服務超媒體
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区三区四区 | 99精品一级欧美片免费播放 | 色资源在线视频 | 91在线视频精品 | 精品一区国产 | 嫩草一区二区三区 | av毛片在线播放 | 91 在线| 欧美日本韩国一区二区 | 国产国产精品 | 欧美在线日韩 | 伊人色综合久久久天天蜜桃 | 成人久久 | 国产免费a视频 | 久草影视在线 | 免费av毛片 | 午夜激情在线 | 亚洲欧美激情精品一区二区 | 在线观看中文字幕一区二区 | 久久一区二区三区四区 | 操久久 | 亚洲精品小视频在线观看 | 精品国产久 | 亚洲精品视频在线看 | 国产99免费 | 欧美综合久久久 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 久久精品视频一区二区 | 国产精品亚洲成在人线 | 久久久久久免费看 | 99re热精品视频 | 国产激情视频网站 | 国产精品一区二区在线 | 性做久久久久久免费观看欧美 | 欧美精品一区二区在线观看 | 欧美一级大片免费看 | 免费观看毛片 | 在线播放一区二区三区 | 一级女毛片 | 欧美国产日韩一区二区三区 | 久久久激情 |