• c++、php、java、python、javascript对比,同一功能用5种编程语言写一遍,谁才是最好的编程语言?


    感觉编程语言里面,大家使用最多的就是这几种了吧,最火的是JavaScript,python好像说是无所不能,php没悬念还是世界上最好的编程语言,java用的人应该最多吧,c++吗,据说比较难,所以就是逼格最高的语言吧。

    其实这几种语言,除了python,其他几个还都有共通之处,都是带花括号({})的C系语法,而python吧,不带花括号,感觉和之前的VBscript有点像,废话不多说,今天就用这5种语言写同一个功能,我一会分别把代码粘出来,大家对语法做一下比较,看看更喜欢那种?

    昨天闲聊群里有人发了一串JavaScript代码,功能呢就是在控制台输出用字符拼出的字符画“V ME 50”,v me 50算是最近很火的一个梗了,运行效果如下图

     代码如下:

    1. const arr = [
    2.   [1, 9, 12, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44],
    3.   [2, 8, 12, 13, 19, 20, 23, 31, 39, 44],
    4.   [3, 7, 12, 14, 18, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 44],
    5.   [4, 6, 12, 15, 17, 20, 23, 36, 39, 44],
    6.   [5, 5, 12, 16, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44],
    7. ];
    8. function demo(arr) {
    9.   let str = '';
    10.   for (let i = 0; i < arr.length; i++) {
    11.     for (j = 0; j < 50; j++) {
    12.       if (arr[i].indexOf(j) > -1) {
    13.         str += '█';
    14.       } else {
    15.         str += ' ';
    16.       }
    17.     }
    18.     str += '\n';
    19.   }
    20.   return str;
    21. }
    22. console.log(demo(arr));

    看着挺有意思吧,然后我把这段代码移植到了C++上,代码和效果如下:

    1. #include
    2. #include
    3. #include
    4. using namespace std;
    5. class vMe50{
    6. private:
    7. template <typename T>
    8. int arrLen(T& arr){
    9. return sizeof(arr)/sizeof(arr[0]);
    10. }
    11. public:
    12. vMe50(){
    13. string str=this->demo();
    14. cout << str;
    15. }
    16. string demo(){
    17. vectorint> > arr;
    18. int a0[]={1, 9, 12, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44};
    19. int a1[]={2, 8, 12, 13, 19, 20, 23, 31, 39, 44};
    20. int a2[]={3, 7, 12, 14, 18, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 44};
    21. int a3[]={4, 6, 12, 15, 17, 20, 23, 36, 39, 44};
    22. 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};
    23. vector<int> b0(a0,a0+this->arrLen(a0));
    24. vector<int> b1(a1,a1+this->arrLen(a1));
    25. vector<int> b2(a2,a2+this->arrLen(a2));
    26. vector<int> b3(a3,a3+this->arrLen(a3));
    27. vector<int> b4(a4,a4+this->arrLen(a4));
    28. arr.push_back(b0);
    29. arr.push_back(b1);
    30. arr.push_back(b2);
    31. arr.push_back(b3);
    32. arr.push_back(b4);
    33. string str;
    34. for(short i=0;isize();i++){
    35. for(short j=0;j<50;j++){
    36. if(count(arr[i].begin(), arr[i].end(), j)){
    37. str+="0";
    38. }else{
    39. str+=" ";
    40. }
    41. }
    42. str+="\n";
    43. }
    44. return str;
    45. }
    46. };
    47. int main(){
    48. vMe50* v=new vMe50();
    49. delete v;
    50. return true;
    51. }

    效果一样,但代码麻烦了不少,毕竟C++是强类型语言,处理不规则数组不像JavaScript那样轻松。 

    然后我又把代码移植到了世界上最好的编程语言php上,大家看下优不优雅,代码和效果如下

    1. namespace vMe50;
    2. class vMe50{
    3. public function __construct(){
    4. echo $this->demo();
    5. }
    6. private function demo(){
    7. $arr=[
    8. [1, 9, 12, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44],
    9. [2, 8, 12, 13, 19, 20, 23, 31, 39, 44],
    10. [3, 7, 12, 14, 18, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 44],
    11. [4, 6, 12, 15, 17, 20, 23, 36, 39, 44],
    12. [5, 5, 12, 16, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44],];
    13. $str="";
    14. foreach($arr as $key=>&$value){
    15. foreach(range(0,50) as $k=>&$v){
    16. if(in_array($v, $value)){
    17. $str.="8";
    18. }else{
    19. $str.=" ";
    20. }
    21. }
    22. $str.="\n";
    23. }
    24. return $str;
    25. }
    26. }
    27. new vMe50();

     确实比C++版简单不少,毕竟php的array实现了各种类型的数组。

    然后我又把代码用java重写一遍,代码和效果如下:

    1. import java.util.Arrays;
    2. import java.util.List;
    3. import java.util.LinkedList;
    4. public class vMe50{
    5. public static void main(String[] args){
    6. System.out.print(
    7. demo()
    8. );
    9. }
    10. private static String demo(){
    11. List > arr=new LinkedList<>();
    12. 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)));
    13. arr.add(new LinkedList<>(Arrays.asList(2, 8, 12, 13, 19, 20, 23, 31, 39, 44)));
    14. 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)));
    15. arr.add(new LinkedList<>(Arrays.asList(4, 6, 12, 15, 17, 20, 23, 36, 39, 44)));
    16. 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)));
    17. String str="";
    18. for(int i=0;i
    19. for(int j=0;j<50;j++){
    20. if(arr.get(i).contains(j)){
    21. str+="8";
    22. }else{
    23. str+=" ";
    24. }
    25. }
    26. str+="\n";
    27. }
    28. return str;
    29. }
    30. }

     最后就再用无所不能的python语言重写一遍吧,代码和效果如下:

    1. class vMe50:
    2. def __init__(self):
    3. print(self.demo())
    4. def demo(self):
    5. arr=(
    6. (1, 9, 12, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44),
    7. (2, 8, 12, 13, 19, 20, 23, 31, 39, 44),
    8. (3, 7, 12, 14, 18, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 44),
    9. (4, 6, 12, 15, 17, 20, 23, 36, 39, 44),
    10. (5, 5, 12, 16, 20, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 39, 40, 41, 42, 43, 44)
    11. )
    12. str=""
    13. for i in arr:
    14. for j in range(0,50):
    15. if j in i:
    16. str+="8"
    17. else:
    18. str+=" "
    19. str+="\n";
    20. return str
    21. v=vMe50();

     

    虽然我个人不喜欢python,因为他没有花括号,但感觉他确实diao,这几个版本里代码量最小,甚至比JavaScript还简单。

    以上就是c++、php、java、python、javascript这五种编程语言语法的对比,到底谁才是最好的编程语言?

  • 相关阅读:
    ZooKeeper实现分布式锁
    如何获取大数据平台 CDH 中 hive metastore db 的用户名和密码?
    Java IO流(上)
    企业最关心的ISO三体系认证的几个问题
    Remote Desktop Service (RDS) 远程桌面服务漏洞简介 BlueKeep DejaBlue
    java-net-php-python-ssm高校办公自动化系统计算机毕业设计程序
    SAP ABAP OData 服务如何支持 $orderby (排序)操作试读版
    PADS出GERBER时 焊盘丢失、焊盘变形问题
    超图WMTS服务的几个关键参数
    2022CSP-J 题解[持续更新ing]
  • 原文地址:https://blog.csdn.net/sdxjwkq01/article/details/127800299