彼可取而代之(彼可取而代之历史典故)

计算机编程语言和Java脚本语言是目前最火的两大编程语言,但是2023 年,什么编程语言将会取而代之呢?

作者理查德肯尼斯英格

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

以下为译文:

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

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

多亏了摆动框架和谷歌的认可,该语言迅速流行开来。这和轨道框架让红宝石流行起来的原因非常相似。如果谷歌的紫红色系统能够火起来,镖将受益最大。

核心优势:它是一种比Java脚本语言更棒的编程语言。

主要缺点:不得不面对Java脚本语言语言和Java脚本语言的强烈拥护者的挑战。

曼德布洛特集样本:

类复合体{

double _r,_ I;

复杂(这个. r,这个. I);

double get r=_ r

double get i=_ i

String toString='($r,$ I)'

复数运算符(复数其他)=新复数(r other.r,I other。I);

复数运算符*(复数其他)=1

new Complex(r*other.r-i*other.i,r*other。我其他。r * I);

双abs=r * r i * i

}

void main {

双start _ x=-1.5;

双start _ y=-1.0;

双步_ x=0.03

双步_ y=0.1

for(int y=0;y20y ) {

字符串行=””;

for(int x=0;x70x ) {

复合体c=新复合体(start_x step_x*x,start _ y step _ y * y);

复数z=新复数(0.0,0.0);

for(int I=0;i100i ) {

z=z *(z)c;

if(z.abs2) {

打破;

}

}

line=z . ab S2 ” “:” * “;

}

打印(行);

}

}

长生不老药

长生不老药是基于一种基于占线小时虚拟机的函数式编程语言,对并发的支持非常好。作为一个纯粹的函数式编程语言,它有望将这种范式变为主流。

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

主要缺点:需要有动态密码基础,但掌握动态密码却没那么容易。

曼德布洛特集样本:

def模块Mandelbrot dodef set doxsize=59 ysize=21 minIm=-1.0 maxIm=1.0 minRe=-2.0 maxRe=1.0 stepx=(maxRe-minRe)/xsize stepy=(maxIm-minIm)/ysizeenum。每个(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)end defp循环(n,_,_,_,_,_)当n=30时,do: ndefp循环(n,_,_,_,v)当4.0版时,do: n-1defp loop(n,re,im,zr,zi,_) doa=zr * zrb=zi * ziloop(n

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

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

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

曼德布洛特集样本:

主包装

导入(

' fmt '

'图像'

'图像/颜色'

'图像/绘图'

'图像/png '

'数学/cmplx '

操作系统

)

常量(

maxEsc=100

rMin=-2 .

rMax=.5

iMin=-1 .

iMax=1 .

宽度=750

红色=230

绿色=235

蓝色=255

)

func mandelbrot(一个复杂的128)浮动64{

我:=0

对于z:=a;cmplx .ABS(z)2i max ESC;我{

z=z*z a

}

返回float64(maxEsc-i)/maxEsc

}

功能主要{

比例:=宽度/(rMax – rMin)

高度:=int(scale * (iMax – iMin))

界限:=图像Rect(0,0,宽度,高度)

乙:=图像NewNRGBA(边界)

画吧。绘制(b,边界,图像NewUniform(颜色。黑色),图像ZP,画吧Src)

对于x:=0;x宽度;x {

对于y:=0;y高度;y {

fEsc :=mandelbrot(复杂(

浮动64(x)/刻度rMin,

float64(y)/scale iMin))

b.设置(x,y,颜色NRGBA{uint8(red * fEsc),

uint8(绿色* fEsc)、uint8(蓝色* fEsc),255})

}

}

f,err :=os .创建(《mandelbrot.png》)

如果呃!=零{

fmt .Println(错误)

返回

}

如果err=png .编码(f,b);呃!=零{

fmt .Println(错误)

}

如果err=f . Close呃!=零{

fmt .Println(错误)

}

}

朱莉娅

朱莉娅的优势在于对数学计算的支持非常出色。它对数学的语法支持非常好,堪称数据科学家的福音。假如有任何编程语言可以颠覆Python,它将是一个强有力的竞争者。

核心优势:为科学家精心设计。

主要缺点:面临着数据科学之王计算机编程语言的竞争。

曼德布洛特集样本:

使用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 w)

科特林是升级版的Java。实际上,它可以完全替代Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)编程语言,谷歌已经将其打造成机器人开发的首选语言。

核心优势:比Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)更强大。

主要缺点:科特林非常庞大,甚至比Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)更庞大。

曼德布洛特集样本:

导入java.awt.Graphics

导入java.awt.image.BufferedImage

导入javax.swing.JFrame

类Mandelbrot:JFrame(' Mandelbrot Set '){

伴随对象{

私人常量值最大ITER=570

私有常量值缩放=150.0

}

私有值图像:BufferedImage

初始化{

设定界限(100,100,800,600)

isResizable=false

默认关闭操作=退出打开关闭

img=BufferedImage(宽度,高度,BufferedImage .TYPE_INT_RGB)

对于(y在0到高度之间){

对于(0中的x直到宽度){

var zx=0.0

var zy=0.0

val cX=(x – 400) /缩放

值cY=(y – 300) /缩放

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或(条目shl 7))

}

}

}

覆盖趣味绘画(g:图形){

g.drawImage(img,0,0,this)

}

}

fun main(args: Array){

Mandelbrot.isVisible=true

}

左上臂

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

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

曼德布洛特集样本:

本地最大值=250

本地minX,maxX,minY,maxY=-2.5,2.5,-2.5,2.5

本地混音,mxX,miY,mxY

函数重映射(x,t1,t2,s1,s2)

局部f=( x – t1 )/( t2 – t1)

局部g=f * ( s2 – s1 ) s1

返回g;

结束

函数drawMandelbrot

本地pts,a,as,za,b,bs,zb,cnt,clr={}

对于j=0,hei – 1 do

对于i=0,wid – 1 do

a=重新映射(I,0,wid,minX,maxX)

b=remap( j,0,hei,minY,maxY)

CNT=0;za=a;zb=b

而(计数最大值)会

as=a * a-b * b;bs=2 * a * b

a=za asb=zb bs

如果数学. abs( a)数学. abs( b ) 16、则中断结束

cnt=cnt 1

结束

如果cnt==maxIterations,则clr=0

else clr=remap( cnt,0,maxIterations,0,255)

结束

pts[1]={ i,j,clr,clr,0,255 }

爱情.图形.积分(点数)

结束

结束

结束

函数开始分形

love.graphics.setCanvas(画布);爱。图形。清晰

love.graphics.setColor( 255,255,255)

drawmandelbrotlove . graphics . set canvas

结束

函数爱. load

wid,hei=love.graphics.getWidth,love.graphics.getHeight

画布=爱情。图形。新画布(wid,hei)

星形分形

结束

函数love.mousepressed( x,y,button,istouch)

如果button==1,则

start drag=true mix=x;miY=y

其他

minX=-2.5;maxX=2.5minY=minXmaxY=maxX

星形分形

startDrag=false

结束

结束

函数love.mousereleased( x,y,button,istouch)

如果开始拖动,则

本地l

如果x混合,那么mxX=x

else l=x;mxX=miXmiX=l

结束

如果y miY,那么mxY=y

else l=y;mxY=miYmiY=l

结束

miX=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=MX xminy=miYmaxY=mxY

星形分形

结束

结束

函数爱.画

爱情。图形。绘画(画布)

结束

法罗

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

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

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

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

分形树样本:

对象子类:# fractaltreeinstancewariblenames:“”类变量名称:“”池字典:“”类别:' RosettaCode ' '用于分形树类的方法'树:a点长度:长度角度:一个角度| p a |(a长度10)如果为true:[p:=Pen new。振作起来。p转到:一个点。p转:一个角度。p下来。5次重复查看完整版本转弯:5 .].a:=a角-30.3倍重复:【自身树:p位置长度:长度* 0.7角度如:a a=a 30 .]].绘制显示恢复后:[显示填充白色。自己树:700@700长度:200角度:0。]'执行分形树新抽牌。锈

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

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

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

曼德布洛特集样本:

外部板条箱图像;外部机箱编号_复杂;使用STD:fs:File;请使用num _ Complex:复杂;fn main { let max _ iterations=256 u16;设img _ side=800u32设cxmin=-2f 32;设cxmax=1f32设cy min=-1.5f 32;设cymax=1.5f32设scalex=(cxmax – cxmin)/img_side为f32设scaley=(cymax – cymin)/img_side为f32//新建一个ImgBuflet mut imgbuf=image:image buffer:new(img _ side,img _ side);//为imgbuf.enumerate_pixels_mut中的每个像素for (x,y,像素)计算{设cx=cxmin x为f32 * scalex设cy=cymin y为f32 * scaley设c=复数*新(cx、cy);设mut z=Complex:new(0f32,0f 32);设mut I=0;对于0中的t.max _ iterations { if z . norm 2.0 { break;} z=z * z c;I=t;}*pixel=image:Luma([i为u8]);}//保存imagelet fout=mut File:create(' fractal。png’).解开包装;image:ImageLuma8(imgbuf).保存(fout,image:PNG).解开包装;}打字稿

以打字打的文件是一个增强版的JavaScript .它主要新增了静态类型的特性。

由于以打字打的文件和Java脚本语言完全兼容,已经掌握了Java脚本语言的前端网开发者们可以轻松掌握打字稿,因而深受他们青睐。

核心优势:它是Java脚本语言的超集,对Java脚本语言开发者来说没啥太大变化。

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

分形树样本:

//为绘图var画布设置CanvasElement=document。createelement(“canvas”)画布。宽度=600画布。高度=500文档。身体。变量CTX:canvasrenderingcontext 2d=canvas。获取上下文(' 2d ')CTX。填充样式=' # 000 ' CTX。line width=1//const const degToRad:number=Math .PI/180.0常量总深度:数字=9/* *在画布上画线的助手函数*/函数drawLine(x1:数字,y1:数字,x2:数字,y2:数字):void {ctx.moveTo(x1,y1)ctx.lineTo(x2,y2)}/**在给定点和给定角度绘制一个分支然后调用自己两次*/function drawTree(x1:数字,y1:数字,角度:数字,深度:数字):void {if(深度!==0){设x2:number=x1(数学。cos(角度* degToRad)*深度* 10.0)设y2:number=y1(数学。sin(angle * degToRad)* depth * 10.0)画线(x1,y1,x2,y2,angle – 20,depth – 1)drawTree(x2,y2,angle 20,depth-1)}//treectx。beginpathdrawtree(300,500,-90,总深度

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

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

原文:https://黑客正午。未来的语言-b 61332 KD

作者:Richard Kenneth Eng,Smalltalk传播者,退休的软件工程师,复仇者联盟的粉丝。译者:明明如月,知名互联网公司Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)高级开发工程师,CSDN博客专家。

本文为CSDN翻译,转载请注明来源出处。

只十分钟,唾手可得的工作机会就被我搞砸了!

锈入坑指南:鳞次栉比CSDN博文精选

其他教程

视频如何批量消音(视频素材怎么消音)

2023-1-13 0:44:36

其他教程

有电脑客户端吗

2023-1-13 0:46:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索