当前位置: 首页 > 科技观察

不同的编程语言如何做同样的事情

时间:2023-03-12 22:55:25 科技观察

用一个简单的小游戏比较13种编程语言。当我开始学习一门新的编程语言时,我会专注于定义变量、编写声明和评估表达式,一旦我对这些概念有了大致的了解,我通常就能自己搞定其余的事情。大多数编程语言都有相似之处,所以如果你掌握了一种编程语言,学习下一门语言的重点就是弄清楚独特的概念和区分不同之处。我喜欢编写测试程序来帮助练习新的编程语言。其中,我经常写一个叫“猜数字”的小游戏。计算机从1到100中选择任意一个数字,然后我猜。程序循环直到猜出正确的数字。正如你从伪代码中看到的,这是一个非常简单的程序:计算机在1到100之间选择一个随机数并迭代直到它猜出这个随机数计算机读取我的猜测并告诉我我的猜测是太高还是太低我们发表了一些文章并用不同的语言编写了这个程序。这是一个有趣的机会来比较不同的语言做同样的事情。大多数编程语言都有相似之处,所以当你学习下一种新的编程语言时,就是要了解它的独特之处。C语言是贝尔实验室的DennisRitchie于??1972年创建的一种早期通用编程语言。C语言非常流行,并迅速成为Unix系统上的标准编程语言。由于它的流行,许多其他编程语言都采用了类似的编程语法。这就是为什么如果你已经知道如何用C编程,那么学习C++、Rust、Java、Groovy、JavaScript、awk或Lua会更容易。接下来我们看看这些不同的编程语言如何实现“猜猜看”的主要步骤数”游戏。我将重点介绍基本元素的相似或不同之处,跳过一些外围代码,如分配临时变量。计算机在1到100之间随机抽取一个数,可以看出这里有很多相似之处。大多数编程语言都使用像rand()这样的函数,您可以在其中设置一个范围来生成随机数。而其他一些语言则使用一种特殊的函数来设置范围来生成随机数。C://使用Linux`getrandom`系统调用getrandom(&randval,sizeof(int),GRND_NONBLOCK);number=randval%maxval+1;//使用标准C库number=rand()%100+1;C++:intnumber=rand()%100+1;生锈:让random=rng.gen_range(1..101);Java:privatestaticfinalintNUMBER=r.nextInt(100)+1;Groovy:intrandomNumber=(newRandom()).nextInt(100)+1JavaScript:constrandomNumber=Math.floor(Math.random()*100)+1awk:randomNumber=int(rand()*100)+1Lua:number=math.random(1,100)untilIguesstherandomnumberloopusuallyimplementedwithacontrolflowlikeawhileorado-while.JavaScript中的实现不使用循环,而是“实时”更新HTML页面,直到用户猜出正确的数字。虽然Awk支持循环,但是通过循环读取输入是没有意义的,因为Awk是基于数据管道的,所以它是从文件中读取输入,而不是直接从用户那里读取。C:do{...}while(guess!=number);C++:do{...}while(number!=guess);Rust:forlineinstd::io::stdin().lock().lines(){...break;}Java:while(guess!=NUM??BER){...}Groovy:while(...){...break;}Lua:while(player.guess~=number)do...endcomputerreadsmyguess不同的编程语言处理输入的方式不同。例如,JavaScript直接从HTML表单中读取值,而Awk从数据管道中读取数据。C:scanf("%d",&guess);C++:cin>>猜测;Rust:letparsed=line.ok().as_deref().map(str::parse::);ifletSome(Ok(guess))=parsed{...}Java:guess=player.nextInt();Groovy:response=reader.readLine()intguess=responseasIntegerJavaScript:letmyGuess=guess.valueAwk:guess=int($0)Lua:player.answer=io.read()player.guess=tonumber(player.answer)告诉我猜测是太高还是太低在这些类C语言中,比较通常是用if语句完成的。每种编程语言打印输出的方式都有一些差异,但打印语句在每个示例中都是可识别的。C:if(guessnumber){puts("太高");}…puts("没错!");C++:if(guess>number){cout<<"Toohigh.\n"<println!("Toolow"),_ifguess>random=>println!("Toohigh"),_=>{println!("没错");休息;}Java:if(guess>NUMBER){System.out.println("Toohigh");}elseif(guessrandomNumber)print'太高,再试一次:'else{println“没错”break}JavaScript:if(myGuess===randomNumber){feedback.textContent=“你做对了!”}elseif(myGuess>randomNumber){feedback.textContent="Yourguesswas"+myGuess+"。太高了。再试一次!"}elseif(myGuessrandomNumber){printf"太高,再试一次:"}else{printf"没错\n"exit}Lua:if(player.guess>number)thenprint("Toohigh")elseif(player.guessnumberguess)(displayln"Toolow")(inquire-usernumber)][(random:print("Toohigh")else:print("That'sright!")Elixir:conddoguessIO.puts“太低了!”guess_loop(num)guess>num->IO.puts“太高了!”guess_loop(num)true->IO.puts“没错!”endBash:["0$guess"-lt$number]&&echo"Toolow"["0$guess"-gt$number]&&echo"Toohigh"Fortran:IF(GUESS.LT.NUMBER)THENPRINT*,'TOOLOW'ELSEIF(GUESS.GT.NUMBER)THENPRINT*,'TOOHIGH'ENDIF更多当您学习一门新的编程语言、练习几个常见的编程概念时,“猜数字”游戏是一个友好的入门游戏。通过用不同的编程语言实现这个简单的游戏,您可以了解每种语言的一些核心概念和细节。