admin管理员组文章数量:1794759
c++、php、java、python、javascript对比,同一功能用5种编程语言写一遍,谁才是最好的编程语言?
感觉编程语言里面,大家使用最多的就是这几种了吧,最火的是JavaScript,python好像说是无所不能,php没悬念还是世界上最好的编程语言,java用的人应该最多吧,c++吗,据说比较难,所以就是逼格最高的语言吧。
其实这几种语言,除了python,其他几个还都有共通之处,都是带花括号({})的C系语法,而python吧,不带花括号,感觉和之前的VBscript有点像,废话不多说,今天就用这5种语言写同一个功能,我一会分别把代码粘出来,大家对语法做一下比较,看看更喜欢那种?
昨天闲聊群里有人发了一串JavaScript代码,功能呢就是在控制台输出用字符拼出的字符画“V ME 50”,v me 50算是最近很火的一个梗了,运行效果如下图
代码如下:
const arr = [ [1, 9, 12, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44], [2, 8, 12, 13, 19, 20, 23, 31, 39, 44], [3, 7, 12, 14, 18, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 44], [4, 6, 12, 15, 17, 20, 23, 36, 39, 44], [5, 5, 12, 16, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44], ]; function demo(arr) { let str = ''; for (let i = 0; i < arr.length; i++) { for (j = 0; j < 50; j++) { if (arr[i].indexOf(j) > -1) { str += '█'; } else { str += ' '; } } str += '\\n'; } return str; } console.log(demo(arr));看着挺有意思吧,然后我把这段代码移植到了C++上,代码和效果如下:
#include <iostream> #include <string> #include <vector> using namespace std; class vMe50{ private: template <typename T> int arrLen(T& arr){ return sizeof(arr)/sizeof(arr[0]); } public: vMe50(){ string str=this->demo(); cout << str; } string demo(){ vector<vector<int> > arr; int a0[]={1, 9, 12, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44}; int a1[]={2, 8, 12, 13, 19, 20, 23, 31, 39, 44}; int a2[]={3, 7, 12, 14, 18, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 44}; int a3[]={4, 6, 12, 15, 17, 20, 23, 36, 39, 44}; int a4[]={5, 5, 12, 16, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44}; vector<int> b0(a0,a0+this->arrLen(a0)); vector<int> b1(a1,a1+this->arrLen(a1)); vector<int> b2(a2,a2+this->arrLen(a2)); vector<int> b3(a3,a3+this->arrLen(a3)); vector<int> b4(a4,a4+this->arrLen(a4)); arr.push_back(b0); arr.push_back(b1); arr.push_back(b2); arr.push_back(b3); arr.push_back(b4); string str; for(short i=0;i<arr.size();i++){ for(short j=0;j<50;j++){ if(count(arr[i].begin(), arr[i].end(), j)){ str+="0"; }else{ str+=" "; } } str+="\\n"; } return str; } }; int main(){ vMe50* v=new vMe50(); delete v; return true; }效果一样,但代码麻烦了不少,毕竟C++是强类型语言,处理不规则数组不像JavaScript那样轻松。
然后我又把代码移植到了世界上最好的编程语言php上,大家看下优不优雅,代码和效果如下
<?php namespace vMe50; class vMe50{ public function __construct(){ echo $this->demo(); } private function demo(){ $arr=[ [1, 9, 12, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44], [2, 8, 12, 13, 19, 20, 23, 31, 39, 44], [3, 7, 12, 14, 18, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 44], [4, 6, 12, 15, 17, 20, 23, 36, 39, 44], [5, 5, 12, 16, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44],]; $str=""; foreach($arr as $key=>&$value){ foreach(range(0,50) as $k=>&$v){ if(in_array($v, $value)){ $str.="8"; }else{ $str.=" "; } } $str.="\\n"; } return $str; } } new vMe50();确实比C++版简单不少,毕竟php的array实现了各种类型的数组。
然后我又把代码用java重写一遍,代码和效果如下:
import java.util.Arrays; import java.util.List; import java.util.LinkedList; public class vMe50{ public static void main(String[] args){ System.out.print( demo() ); } private static String demo(){ List<List<Integer> > arr=new LinkedList<>(); arr.add(new LinkedList<>(Arrays.asList(1, 9, 12, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44))); arr.add(new LinkedList<>(Arrays.asList(2, 8, 12, 13, 19, 20, 23, 31, 39, 44))); arr.add(new LinkedList<>(Arrays.asList(3, 7, 12, 14, 18, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 44))); arr.add(new LinkedList<>(Arrays.asList(4, 6, 12, 15, 17, 20, 23, 36, 39, 44))); arr.add(new LinkedList<>(Arrays.asList(5, 5, 12, 16, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44))); String str=""; for(int i=0;i<arr.size();i++){ for(int j=0;j<50;j++){ if(arr.get(i).contains(j)){ str+="8"; }else{ str+=" "; } } str+="\\n"; } return str; } }最后就再用无所不能的python语言重写一遍吧,代码和效果如下:
class vMe50: def __init__(self): print(self.demo()) def demo(self): arr=( (1, 9, 12, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44), (2, 8, 12, 13, 19, 20, 23, 31, 39, 44), (3, 7, 12, 14, 18, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 44), (4, 6, 12, 15, 17, 20, 23, 36, 39, 44), (5, 5, 12, 16, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44) ) str="" for i in arr: for j in range(0,50): if j in i: str+="8" else: str+=" " str+="\\n"; return str v=vMe50();
虽然我个人不喜欢python,因为他没有花括号,但感觉他确实diao,这几个版本里代码量最小,甚至比JavaScript还简单。
以上就是c++、php、java、python、javascript这五种编程语言语法的对比,到底谁才是最好的编程语言?
版权声明:本文标题:c++、php、java、python、javascript对比,同一功能用5种编程语言写一遍,谁才是最好的编程语言? 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1687027030a129391.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论