༺ཌ༈学编程到底学那种语言呢?༈ད༻

news2024/12/27 12:46:18

说到底,编程语言只是工具,就像螺丝刀一样。在需要使用圆头螺丝刀的时候,你就不能一意孤行使用一字螺丝刀。你需要根据实际的情况做决定。没有任何一种编程语言能够取代一切,成为终极编程语言。你需要根据当前岗位的要求,选择使用正确的工具。

  这样我们就要对计算机编程语言有个大致的了解,将来我们会使用哪些编程语言?

  下面,我们首先来看一看这篇论文:《编程语言的能耗》
  如果看过上述论文,你可能对下面这张表格不陌生

 

编程语言的比较

  我见过很多次,各大社交媒体平台上都有人分享这张表格,相信几乎无人不知。但是,在深入研究结果之前,我想先分享一些背景信息。
  关于论文得出的这些结果,首要问题是这些结果是如何测量的。普遍接受的测量 CPU 性能的方法是基准测试。论文的作者也针对多种编程语言实施了基准测试,他们采用了 10 个不同的编程问题,然后通过这些语言解决这些问题,统一采用了“计算机语言基准测试游戏”中定义的算法。
  此外,他们还根据范例对编程语言进行了分类。
  然而,性能测试并没有考虑到编程范式,重要的是编程语言的类型:编译型、解释型,还是使用了虚拟机?编译语言、虚拟机语言和解释语言之间存在明显的性能以及能耗差异。因此,他们针对各个类别,采用这些算法进行测试,这种做法是正确的。

  Google 的统计结果
  C、C++、Rust、Java语言趋势
  Java 的使用量似乎超过了其他编译语言,但 Java 本身的使用量在逐年下降。C 和 C++ 的结果非常接近。但是,Rust 的使用量非常低。这可能是因为它是一种新语言。
  公平地说,虽然相对于 C 和 C++ 来说,Rust确实很新,但它是2010 年 7 月发布的,已经过去12年了,这期间并没有太大的起伏。这个结果与上述论文给出的结果有很大的不同。
  下面,除了Java之外,我们再挑选 4 种不同的语言:Kotlin、Javascript、Python 和 Go。
  流行趋势又变了。Python 最初的流行度很低,但如今已成为炙手可热的编程语言。Java 和 JavaScript 排在第二位。如今的榜首是 Python。
  Google 平台上,自 2004 年以来,Python、JavaScript、Ruby、Swift 和 TypeScript 的趋势看来最终的赢家是 Python!

  TIOBE 指数
  TIOBE 是一家专门评估和跟踪软件质量的公司。你可以通过他们的网站了解更多相关信息(https://www.tiobe.com/)。他们的主要服务是测评软件代码库的质量。他们创建了一个名为TQI(TIOBE Quality Indicator,TIOBE 质量指标)指标。
  该公司创建了一个编程语言指数,名叫“TIOBE指数”。他们利用这个指数,根据搜索引擎的流行趋势来衡量编程语言的性能。

 

这与Google流行趋势给出的结果非常接近。然而,根据这个指数,C是排名第二的编程语言,这有点出乎意料。
  很明显,在很长的一段时间里,编程语言一直是 Java 和 C 的天下。后来,Python 流行起来,跃居榜首。我们需要注意,关键在于,流行趋势是不断变化的。以前 Java 是第一,如今变成了 Python。

  那么,我们应该如何衡量编程语言未来的潜力呢?
  未来的可能性
  在过去的 10 年里,机器学习和人工智能一直是热门话题。Python 是此类数值运算的最佳选择,因为它有一个很好的 C API。如果你非常注重性能,那么可以将 Python 与 C、C++ 结合起来。在这种趋势下,根据 Google 搜索引擎和 TIOBE 指数的结果来看,Python 是如今使用最广泛的编程语言。
  然而,这并不意味着 Python 的地位保持不变。最近,有一些编程语言展现出了更好的性能,很有可能会取代 Python,比如 Rust。亚马逊和 Facebook 已经宣布他们改用 Rust 来开发内部的命令行界面工具。另外,Linux 6.1 版本之后,内核也包含了 Rust。近来 Rust 的呼声很高,如你所见,它的排名在一年之内从第 26 位上升到了第 20 位。

  那么,我们究竟该如何预测未来那种语言更流行呢?

  答案
  很抱歉,虽然我们花费了大量篇幅讨论了这么多,但实际上这个问题毫无意义。我们不是政客,没有人给我们预算或金钱支持这些技术趋势。
  那么,我们为什么要不停地比较呢?为什么我们要狂热地支持一种语言或一种技术呢?答案很简单,因为我们懒。我们学习了一种编程语言或技术,就希望围绕这种编程语言或技术建立一个舒适区,然后呆在舒适区内固步自封。
  为什么有人如此狂热地支持 C 和 C++?因为他们不想学习 Rust 这样的新语言。而反过来,有人狂热地支持 Rust,是因为他们不想学 C 和 C++。
 

好了今日分享的希望对你有用~~

溜了~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式数据库中间件Mycat介绍

从Cobar到Mycat,从闭源到开源,作为一个开源的分布式数据库中间件,Mycat已经被众多开源项目使用。本文简要介绍下Mycat的特性、基本架构以及分库分表和读写分离的配置。 1、Mycat基本介绍 Mycat是一个开源的分布式数据库中间件,前…

nodejs+vue044高校学生信息管理系统

大学生信息综合管理系统分三个身份登录,一个学生,一个管理员。学生只能修改密码,而管理员可以修改任何信息。老师可以查看自己的课表和校园活动. 管理员模块主要有老师管理,添加老师,班级管理,班级添加&…

[附源码]Python计算机毕业设计Django文具商城购物系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Educational Codeforces Round 140

C. Count Binary Strings 大意: 要求满足条件的01串的个数 要求如下 给定一个上三角矩阵,对于矩阵的元素i,j,a[i][j]有一下三个取值: 1:i-j之间只能有一种元素 2:i-j之间只能有两种元素 0: i-j之间无所谓 思路…

(Week 7)动态规划(C++)

目录[NOIP2005 普及组] 采药(C,动态规划)题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示解题思路:最长上升子序列(C,Dilworth,贪心)题目描述输入格式输出格式样例 #1样…

一文盘点Zebec生态的收益模型

随着加密市场逐渐陷入低谷,曾经火热的NFT、GameFi等赛道都陷入了沉寂。投资者目前很难在加密市场中获得可观的收益,而在整体加密市场发展局势不明朗的情况下,行业目前缺乏发展动力。 目前,以流支付为主要定位的Zebec生态&#xff…

Java 基础语法

一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有&a…

Tomcat 9.0 安装及配置教程(win10系统)

一、前言 Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。 二、安装前准备 1.确保安装过jdk,安装过可跳过。 如果没有安装可以先安装一下win10下JDK 官方中…

品优购首页布局-头部

10. 品优购首页布局 效果图: 项目结构如下: 命名集合: 名称说明快捷导航栏shortcut头部header标志logo购物车shopcar搜索search热点词hotwrods导航nav导航左侧dorpdown 包含 .dd .dt导航右侧navitems 1). shortcut 制作 通栏的盒子 命名为sho…

网络协议与攻击模拟 | APR_TCP | 系统性学习 | 无知的我费曼笔记

文章目录网络协议与攻击模拟-APR协议网络协议与攻击模拟-实施ARP攻击与欺骗实施ARP攻击实施ARP欺骗网络协议与攻击模拟-TCP三次握手网络协议与攻击模拟-APR协议 APR协议的作用 解析IP地址为MAC地址。从而进行二层数据交互 ARP工作流程 ARP请求 ARP响应 APR的报文格式 在W…

vue——将原生事件和属性绑定到组件

再vue官方文档 将原生事件绑定到组件 中有如下代码描述&#xff1a; 1. v-bind“$attrs” 以html原生属性的形式批量绑定父组件传过来的属性到任意位置&#xff0c; 例如&#xff0c;一些ui组件或者原生input标签需要一些属性来完成某些功能&#xff0c;例如 <input typ…

Linux安装Jenkins(Java11最新版)

文章目录♈️查看java版本♉️1.下载♊️2.上传到服务器♋️3.启动♌️4.记住密码♍️5.解锁Jenkins♎️6.修改插件安装地址♏️7.安装插件♐️8.登录♐️9.修改密码注意&#xff0c;这里是需要java环境的&#xff0c;如果没有java环境请参考 Linux安装Java环境 ♈️查看java版…

「集合底层」Vector底层结构及源码剖析

「集合源码」Vector底层结构及源码剖析 文章目录「集合源码」Vector底层结构及源码剖析一、基本介绍二、类继承关系三、Vector特性四、底层源码分析1、四个构造器2. 添加一个元素的过程以及扩容机制五、Vector与ArrayList共同点区别一、基本介绍 Vector 是一个矢量队列&#x…

【开发指南】AR Foundation 扫描

开发平台&#xff1a;Unity 2020 版本以上 编程平台&#xff1a;Visual Studio 2022 面向平台&#xff1a;IOS 设备   一、本文聚焦问题点 使用哪种 API 完成相机权限的获取如何进行画面跟踪对象的捕获。 对深入了解AR的开发者尤为重要。但只是从应用目的上&#xff0c;只需要…

C++PrimerPlus 第八章 函数探幽-8.5 函数模板

目录 8.5 函数模板 8.5.1 重载的模板 8.5.2 模板的局限性 8.5.3 显式具体化 8.5.3.1 第三代具体化&#xff08;ISO/ANSI C标准&#xff09; 8.5.3.2 显式具体化示例 8.5.4 实例化和具体化 8.5.5 编译器选择使用哪个函数版本 8.5.5.1 完全匹配和最佳匹配 8.5.5.2 部分…

计算机毕设Python+Vue学生风采网(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【Python学习记录】numpy数组用法整理

✨ 博客主页&#xff1a;小小马车夫的主页 ✨ 所属专栏&#xff1a;Python学习记录 文章目录前言一、numpy数组创建1、numpy.array创建数组2、从已有数组中创建数组二、numpy创建数组初始化1、numpy.zero2、numpy.ones3、numpy.arange4、numpy.linspace5、numpy.random三、nump…

Mentor-dft 学习笔记 day44-Low-Power Design Test

Low-Power Testing Overview Tessent Scan支持启用低功耗测试的操作。 •在存在孤立cell的情况下插入专用包装cell。 •根据驱动的逻辑和电源域的优先级将专用包装单元分配给电源域。 低功耗设计流程包括以下步骤&#xff1a; 1.在CPF/UPF文件中指定低功耗数据规范。 2.在设计…

[附源码]计算机毕业设计Python的校园报修平台(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

RequestResponse

Request Request继承体系 Request获取请求数据 获取请求数据 通用方式获取请求参数 WebServlet("/req1") public class req1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOE…