当前位置: 首页 > 编程日记 > 正文

2020年,大火的Python和JavaScript是否会被取而代之?

作者 | Richard Kenneth Eng

译者 | 明明如月,编辑 | 郭芮

来源 | CSDN(ID:CSDNnews)

Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一样跌下神坛。这很可能在接下来的十年左右上演。

那么什么编程语言将会取而代之呢? 下面给出我的候选者名单!

Dart

多亏了 Flutter 框架和 Google 的认可,该语言迅速流行开来。这和 Rails 框架让 Ruby 流行起来的原因非常相似。如果谷歌的 Fuchsia 系统能够火起来,Dart 将受益最大。

  • 核心优势:它是一种比 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 虚拟机的函数式编程语言,对并发的支持非常好。作为一个纯粹的函数式编程语言,它有望将这种范式变为主流。

  • 核心优势:它让函数式编程变得异常简单,对并发的支持非常棒。

  • 主要缺点:需要有 OTP 基础,但掌握 OTP 却没那么容易。

曼德布洛特集样本:

defmodule Mandelbrot dodef set doxsize = 59ysize = 21minIm = -1.0maxIm = 1.0minRe = -2.0maxRe = 1.0stepX = (maxRe - minRe) / xsizestepY = (maxIm - minIm) / ysizeEnum.each(0..ysize, fn y ->im = minIm + stepY * yEnum.map(0..xsize, fn x ->re = minRe + stepX * x62 - loop(0, re, im, re, im, re*re+im*im)end) |> IO.putsend)enddefp loop(n, _, _, _, _, _) when n>=30, do: ndefp loop(n, _, _, _, _, v) when v>4.0, do: n-1defp loop(n, re, im, zr, zi, _) doa = zr * zrb = zi * ziloop(n+1, re, im, a-b+re, 2*zr*zi+im, a+b)end
endMandelbrot.set

Golang

得益于其闪电般的编译速度、简单和高效的并发支持,另外一个谷歌受支持的编程语言 Golang 已经崭露头角。唯一缺的就是泛型支持,但是这个特性已经在规划上了。

  • 核心优势:上手简单,对并发的支持非常出色。

  • 主要缺点:缺少泛型支持(暂时的)。

曼德布洛特集样本:

package mainimport ("fmt""image""image/color""image/draw""image/png""math/cmplx""os"
)const (maxEsc = 100rMin   = -2.rMax   = .5iMin   = -1.iMax   = 1.width  = 750red    = 230green  = 235blue   = 255
)func mandelbrot(a complex128) float64 {i := 0for 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 的竞争。

曼德布洛特集样本:

using Images@inline function hsv2rgb(h, s, v)const c = v * sconst x = c * (1 - abs(((h/60) % 2) - 1))const m = v - cconst 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)
endfunction mandelbrot()const w, h = 1000, 1000const zoom  = 0.5const moveX = 0const moveY = 0const img = Array{RGB{Float64}}(h, w)const maxIter = 30for x in 1:wfor y in 1:hi = maxIterconst c = Complex((2*x - w) / (w * zoom) + moveX,(2*y - h) / (h * zoom) + moveY)z = cwhile abs(z) < 2 && (i -= 1) > 0z = z^2 + cendconst r,g,b = hsv2rgb(i / maxIter * 360, 1, i / maxIter)img[y,x] = RGB{Float64}(r, g, b)endendsave("mandelbrot_set.png", img)
endmandelbrot()

Kotlin

Kotlin 是升级版的 Java。 实际上,它可以完全替代 Java 编程语言,谷歌已经将其打造成 Android 开发的首选语言。

  • 核心优势:比 Java 更强大。

  • 主要缺点:Kotlin 非常庞大,甚至比 Java 更庞大。

曼德布洛特集样本:

import java.awt.Graphics
import java.awt.image.BufferedImage
import javax.swing.JFrameclass Mandelbrot: JFrame("Mandelbrot Set") {companion object {private const val MAX_ITER = 570private const val ZOOM = 150.0}private val img: BufferedImageinit {setBounds(100, 100, 800, 600)isResizable = falsedefaultCloseOperation = EXIT_ON_CLOSEimg = BufferedImage(width, height, BufferedImage.TYPE_INT_RGB)for (y in 0 until height) {for (x in 0 until width) {var zx = 0.0var zy = 0.0val cX = (x - 400) / ZOOMval cY = (y - 300) / ZOOMvar iter = MAX_ITERwhile (zx * zx + zy * zy < 4.0 && iter > 0) {val tmp = zx * zx - zy * zy + cXzy = 2.0 * zx * zy + cYzx = tmpiter--}img.setRGB(x, y, iter or (iter shl 7))}}}override fun paint(g: Graphics) {g.drawImage(img, 0, 0, this)}
}fun main(args: Array) {Mandelbrot().isVisible = true
}

Lua

  • 核心优势: Lua 是一种小巧、简单、快速、可嵌入、可移植和灵活的编程语言。

  • 主要缺点:Lua 被忽视了 26 年了。现在还能掀起风浪吗?

曼德布洛特集样本:

local maxIterations = 250
local minX, maxX, minY, maxY = -2.5, 2.5, -2.5, 2.5
local miX, mxX, miY, mxY
function remap( x, t1, t2, s1, s2 )local f = ( x - t1 ) / ( t2 - t1 )local g = f * ( s2 - s1 ) + s1return g;
end
function drawMandelbrot()local pts, a, as, za, b, bs, zb, cnt, clr = {}for j = 0, hei - 1 dofor i = 0, wid - 1 doa = remap( i, 0, wid, minX, maxX )b = remap( j, 0, hei, minY, maxY )cnt = 0; za = a; zb = bwhile( cnt < maxIterations ) doas = a * a - b * b; bs = 2 * a * ba = za + as; b = zb + bsif math.abs( a ) + math.abs( b ) > 16 then break endcnt = cnt + 1endif cnt == maxIterations then clr = 0else clr = remap( cnt, 0, maxIterations, 0, 255 )endpts[1] = { i, j, clr, clr, 0, 255 }love.graphics.points( pts )endend
end
function startFractal()love.graphics.setCanvas( canvas ); love.graphics.clear()love.graphics.setColor( 255, 255, 255 )drawMandelbrot(); love.graphics.setCanvas()
end
function love.load()wid, hei = love.graphics.getWidth(), love.graphics.getHeight()canvas = love.graphics.newCanvas( wid, hei )startFractal()
end
function love.mousepressed( x, y, button, istouch )if button ==  1 thenstartDrag = true; miX = x; miY = yelseminX = -2.5; maxX = 2.5; minY = minX; maxY = maxXstartFractal()startDrag = falseend
end
function love.mousereleased( x, y, button, istouch )if startDrag thenlocal lif x > miX then mxX = xelse l = x; mxX = miX; miX = lendif y > miY then mxY = yelse l = y; mxY = miY; miY = lendmiX = remap( miX, 0, wid, minX, maxX ) mxX = remap( mxX, 0, wid, minX, maxX )miY = remap( miY, 0, hei, minY, maxY ) mxY = remap( mxY, 0, hei, minY, maxY )minX = miX; maxX = mxX; minY = miY; maxY = mxYstartFractal()end
end
function love.draw()love.graphics.draw( canvas )
end

Pharo

Pharo 是 Smalltalk 的现代版变体,是一个非常高效的面向对象编程语言。事实上,Smalltalk 是面向对象的典范,几乎所有的其他面向对象编程语言都受到它的启发。却没有一个编程语言比 Smalltalk 面向对象的程度更高。

Pharo 也是世界上最简单、最优雅的编程语言之一,你只需要 15 分钟就能掌握 Smalltalk 的全部语法。

  • 关键优势:开发效率非常高,编程效率能提升接近 5 倍。

  • 主要缺点:它需要一种与众不同的编程思维。但是人总是害怕改变,很难接受这种编程思维。

分形树样本:

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

Rust

由于内存安全特性——借用检查器,Rust 已经赢得广泛认可。这一特性实际上消除了所有内存相关错误。Rust 提供了更安全的编程特性。

  • 关键优势:有助于提高软件的可靠性。

  • 主要缺点:它学起来很难。借用检查器比较复杂且难以理解。

曼德布洛特集样本:

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

TypeScript

TypeScript 是一个增强版的 JavaScript. 它主要新增了静态类型的特性。

由于 TypeScript 和 JavaScript 完全兼容,已经掌握了 JavaScript 的前端 web 开发者们可以轻松掌握 TypeScript,因而深受他们青睐。

  • 核心优势:它是 JavaScript 的超集 , 对 JavaScript 开发者来说没啥太大变化。

  • 主要缺点:由于它是 JavaScript 的超级,这就导致了它同样也继承了 JavaScript 的一些历史包袱。

分形树样本:

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

WebAssembly

WebAssembly 是一匹黑马。在接下来的十年左右的时间,它可能会衍生出一系列编程语言,这些编程语言有望登顶编程语言排行榜。

虽然 WebAssembly 只是一个编译目标,但是它有充足理由被应用到 Web 领域之外。哪种基于 WebAssembly 的编程语言能够荣登榜首?谁也说不准。

原文:

https://hackernoon.com/programming-languages-of-the-future-b61332kd

作者: Richard Kenneth Eng,Smalltalk 传播者,退休的软件工程师,复仇者联盟的粉丝。译者:明明如月,知名互联网公司 Java 高级开发工程师,CSDN 博客专家。

(*本文为AI科技大本营转载文章,转载请联系原作者)

你点的每个“在看”,我都认真当成了AI

  • Python 三十大实践、建议和技巧

  • 2020年AI 2000最具影响力学者榜单发布,何恺明排名超过李飞飞

  • 达摩院 2020 预测:模块化降低芯片设计门槛 | 问底中国 IT 技术演进

  • 在调查过基于模型的强化学习方法后,我们得到这些结论

  • 千万不要和程序员一起合租

  • 人工智能的下一个前沿:识别“零”和“无”

  • 十大新兴前端框架大盘点

  • Oracle 抄袭亚马逊的 API 是侵权吗?

  • 2019全年盘点之一:公链生死战场

相关文章:

WaveSwipeRefreshLayout

WaveSwipeRefreshLayout 介绍&#xff1a; 水滴效果的下拉刷新&#xff0c;效果非常不错。 http://itlanbao.com/code/20150815/10000/100423.html 运行效果&#xff1a; 相关代码 android Gallery 图片滚动 BalloonPerformerCountryRankDelightfulMenuDrawableFancyBackground…

Google Test(GTest)使用方法和源码解析——概况

GTest是很多开源工程的测试框架。虽然介绍它的博文非常多&#xff0c;但是我觉得可以深入到源码层来解析它的实现原理以及使用方法。这样我们不仅可以在开源工程中学习到实用知识&#xff0c;还能学习到一些思想和技巧。我觉得有时候思想和技巧是更重要的。&#xff08;转载请指…

Reddit票选 | 2019年绝对不能错过的机器学习论文

来源 | reddit.com编辑 | 神经星星 神经小兮技术顾问 | 姜汉&#xff08;openbayes.com&#xff09;来源 | HyperAI超神经&#xff08;ID:HyperAI&#xff09;【导读】回顾 2019 年&#xff0c;人工智能领域时有大事发生&#xff0c;吸引着各界人士的关注。这一年&#xff0c;也…

ASP中的常用服务器检测源码

在写ASP网页时常用的检测代码:服务器现在时间: 引用<% now %>服务器CPU型号: 引用<%Request.ServerVariables("HTTP_UA_CPU")%>当前分辨率: 引用<% Request.ServerVariables("HTTP_UA_PIXELS")%>可显示颜色:[qoute]<%Request.ServerV…

选IDC房时,用脚本截取丢失包和rtt的值作比对

由于业务增长&#xff0c;需要选一个IDC房托管接入。网络质量要求比较高。在IDC给出测试机时&#xff0c;利用smokping来测试&#xff0c;是测出去的包。由于我们在各个地区都有接入机。再从这些接入机去测IDC网络质量&#xff0c;比对指标&#xff1a;丢失的包和rtt返回时延。…

Google Test(GTest)使用方法和源码解析——自动调度机制分析

在《Google Test(GTest)使用方法和源码解析——概况 》一文中&#xff0c;我们简单介绍了下GTest的使用和特性。从这篇博文开始&#xff0c;我们将深入代码&#xff0c;研究这些特性的实现。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 测试用例的自动保存…

D3D中简单的截图方法 (转)

【ZT】D3D中简单的截图方法 试了下&#xff0c;果然可以。在渲染完所有东东后&#xff08;Present之前&#xff09; 获得BackBuffer表面 然后用D3DX的函数保存 voidScreenShot (char*filename) { IDirect3DSurface9 *tmp NULL; IDirect3DSurface9 *back NULL; //生成固定…

2019年,自动化机器学习AutoML技术还火吗? | BDTC 2019

整理 | 王银出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 【导读】12 月 5-7 日&#xff0c;由中国计算机学会主办&#xff0c;CCF 大数据专家委员会承办&#xff0c;CSDN、中科天玑协办的中国大数据技术大会&#xff08;BDTC 2019&#xff09;在北京长城饭店隆重…

第一次使用51cto博客

阿梅第一次使用51cto博客&#xff0c;以后将学习中的总结写到这里来。加油。转载于:https://blog.51cto.com/hopit/1690465

Google Test(GTest)使用方法和源码解析——结果统计机制分析

在分析源码之前&#xff0c;我们先看一个例子。以《Google Test(GTest)使用方法和源码解析——概况 》一文中最后一个实例代码为基准&#xff0c;修改最后一个“局部测试”结果为错误。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; class ListTest : publi…

贾扬清感谢信:阿里开源10年,致敬千万开源人

整理 | 夕颜【导读】2019 年 10 月&#xff0c;有人曾根据 www.gharchive.org 的数据整理出一份 2019 年GitHub 开源贡献排行榜&#xff0c;获取 GitHub 2019 年的 PushEvent&#xff0c;通过分析 GitHub 用户提交记录中的邮件地址&#xff0c;分辨其所属组织。从这份榜单上可…

热烈庆祝我国神七发射成功!

热烈庆祝我国神七发射成功&#xff01;

云计算设计模式(十)——守门员模式

云计算设计模式&#xff08;十&#xff09;——守门员模式 通过使用充当客户端和应用程序或服务之间的代理&#xff0c;验证和进行消毒的请求&#xff0c;并将它们之间的请求和数据的专用主机实例保护的应用程序和服务。这可以提供一个额外的安全层&#xff0c;并限制了系统的攻…

“不会Linux,怎么干程序员?”骨灰级工程师:干啥都不行!

说起优秀程序员的必备技能&#xff0c;我想大家都可以说很多&#xff0c;比如&#xff1a;数据结构、算法、数学、编程语言等等。但是&#xff0c;你可能会忽略了每一个程序员都应该掌握的技能&#xff1a;Linux。想一想&#xff0c;我们日常学习、求职、工作场景的中&#xff…

Google Test(GTest)使用方法和源码解析——Listener技术分析和应用

在《Google Test(GTest)使用方法和源码解析——结果统计机制分析》文中&#xff0c;我么分析了GTest如何对测试结果进行统计的。本文我们将解析其结果输出所使用到的Listener机制。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 解析 源码中&#xff0c;我们…

SSH连接不上Linux的解决方法

SSH连接不上Linux的解决方法: 连续弄了几次&#xff0c;今天早上终于把SSH连接虚拟机连接不通的问题解决了。 先简单说下概要&#xff1a; 主机装的是XP系统&#xff0c;虚拟机用的是red hat Linux。 我用的是nat连接方式是虚拟机内也能上网。 主机是用的校园内寝室共享上网。 …

熬夜翻译完的PureFTPd配置文件

[url]http://www.chinaunix.net[/url] 作者:jeffwu 发表于&#xff1a;2006-07-08 10:31:58 干了个通宵&#xff0c;一边玩一边把配置文件翻译完了&#xff0c;翻得不好的地方还请各位多多提点&#xff0c;少许不是很明白的地方就留在那了。 鼓励转贴&#xff0c;分发&#xf…

挑战NLP、量子计算难题,300多支本科生队伍同场角逐,2020 ASC超算竞赛一触即发...

出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;ASC世界大学生超级计算机竞赛&#xff08;ASCStudent Supercomputer Challenge&#xff09;是由中国发起的世界最大规模的大学生超算竞赛&#xff0c;与美国SC、德国ISC并称全球三大超算竞赛&#xff0c;也是目前全球最…

Google Test(GTest)使用方法和源码解析——断言的使用方法和解析

在之前博文的基础上&#xff0c;我们将介绍部分断言的使用&#xff0c;同时穿插一些源码。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 断言&#xff08;Assertions&#xff09; 断言是GTest局部测试中最简单的使用方法&#xff0c;我们之前博文中举得例子…

精品软件 推荐 硬盘物理序列号修改专家

硬盘物理序列号修改专家不是市面上那些简单修改硬盘驱动器的序列号的东西&#xff0c;而是修改硬盘厂商在烧制时刻录在硬盘盒上的&#xff0c;即&#xff08;硬盘物理序列号&#xff09;&#xff0c;大约20位字母数字的组合1、可以解决部分软件封用户电脑&#xff0c;导致这台电…

知识图谱实体链接是什么?一份“由浅入深”的综述

作者 | 尼古拉瓦砾来源 | Paperweekly&#xff08;ID:paperweekly&#xff09;【导读】这个世界充斥着无数的结构化数据&#xff08;wiki&#xff09;和非结构化数据&#xff08;web&#xff09;&#xff0c;然而&#xff0c;如何将两者有效地集成仍然是个非常困难的问题。本文…

Google Test(GTest)使用方法和源码解析——预处理技术分析和应用

预处理 在《Google Test(GTest)使用方法和源码解析——概况》最后一部分&#xff0c;我们介绍了GTest的预处理特性。现在我们就详细介绍该特性的使用和相关源码。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 测试特例级别预处理 Test Fixtures是建立一个固…

出色管理者的时间管理

出色管理者的时间管理不少管理者都有这样的感慨&#xff1a;“忙了一天&#xff0c;也不知道忙了什么&#xff0c;时间还不够用。”其实&#xff0c;只要有效地运用时间&#xff0c;就可以提高工作效率&#xff0c;在相同的时间里做更多的事&#xff0c;而且做得更好&#xff0…

精品软件 推荐 瑞星 杀毒软件 安全软件

一句话评价一下这软件&#xff1a; 功能好&#xff0c;速度一般。功能&#xff1a;设置中心&#xff1a;最后&#xff0c; 下载地址请到官方下载吧。转载于:https://blog.51cto.com/hangtc/1690981

Google Test(GTest)使用方法和源码解析——自定义输出技术的分析和应用

在介绍自定义输出机制之前&#xff0c;我们先了解下AssertResult类型函数。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 在函数中使用AssertionResult AssertionResult只有两种类型&#xff1a; AssertionSuccess()AssertionFailure()要么成功&#xff0…

五年循环期限已到,我们又要步入“AI寒冬”了吗?

作者 | Sam Shead译者 | Kolen编辑 | 夕颜出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09; 【导读】过去的十年对人工智能来说是一个重要的十年&#xff0c;但该领域的研究人员认为该行业即将进入一个新的阶段。 过去几年里&#xff0c;人工智能这项技术的…

相知用心.相爱用情

人如花 一生匆匆而过 不要等到你凋落的时候才去眷恋天空&#xff0c;眷恋蝴蝶爱情是短暂的&#xff0c;但却是美丽的该追求的就去追求吧不要留给自己遗憾&#xff0c;不要让自己美丽的花朵枯萎 人生就象一列急驰的火车 机遇和缘分会让许多素昧平生的乘客在旅途中相遇、相识、相…

Android:problem opening wizard the selected wizard could not be started

直接将Eclipse关掉&#xff0c;重新打开后也许就好了。 如还没好&#xff0c;就执行如下步骤&#xff1a; 1.如果还没有添加ADT&#xff0c;则&#xff1a;Help -> Add New Software -> Add 在“Name”中填入ADT。 2.如果已经安装了ADT&#xff0c;就直接将ADT的地址填写…

Google Test(GTest)使用方法和源码解析——私有属性代码测试技术分析

有些时候&#xff0c;我们不仅要测试类暴露出来的公有方法&#xff0c;还要测试其受保护的或者私有方法。GTest测试框架提供了一种方法&#xff0c;让我们可以测试类的私有方法。但是这是一种侵入式的&#xff0c;会破坏原来代码的结构&#xff0c;所以我觉得还是谨慎使用。&am…

170个新项目,579个活跃代码仓库,Facebook开源年度回顾

作者 | Dmitry Vinnik译者 | 泓礼编辑 | 夕颜出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09; 【导读】过去一年对于Facebook的开源工程师来说是繁忙的一年。在2019年&#xff0c;Facebook发布了170个新的开源项目&#xff0c;活跃代码仓库产品达到了579…