当前位置: 首页 > news >正文

GitHub年度报告发布!Python首次超越JavaScript

全球开发者数量激增,GenAI 项目呈爆炸式增长趋势,推动编程语言的应用格局也发生了巨大变化,最新的 GitHub Octoverse 报告来了!

1、Python 首次超越 JavaScript,成为 GitHub 平台最顶级编程语言

不同于流传“AI 即将取代程序员”的种种言论,GitHub 在最新发布的 2024 年度 Octoverse 开源状态报告中指出,随着 AI 的迅速发展,越来越多的开发者将 AI 模型构建到应用程序中,并大量参与到 GitHub 上的 AI 项目中。

截至目前,GitHub 上有 5.18 亿个项目,同比增长 25%,2024 年期间的项目贡献量达 52 亿次。

图片

此外,GitHub 上托管的公共 AI 项目几乎比去年增加了一倍,达到了 137000 个,超过一百万的开源维护者、学生和教师正在使用免费的 GitHub Copilot 工具。

在这一趋势下,一个出乎众人意料的调查结果出现了——Python 取代 JavaScript 成为 GitHub 上最受欢迎的语言,终结了 JavaScript 长达十年的霸主之位。这也是自 2019 年 Python 首次超越 Java 稳居第二以来,又一次发生大规模的变化。

图片

Python 软件基金会执行董事 Deb Nicholson 表示:“我们的目标是让 Python 成为一个出色的工具,帮助不断壮大的开发者社区构建他们所设想的世界。我们非常高兴地了解到 Python 在 GitHub 上的受欢迎程度持续上升,尤其是随着 Jupyter Notebooks、数据分析、AI 和开源技术的使用增加。”

GitHub 特别指出 Python 在该平台上流行的两个关键因素——不止生成式 AI 的兴起这一层原因,还有数据科学的加持

图片

GitHub 补充道:“Python 在机器学习、数据科学、科学计算、业余爱好者和家庭自动化等领域有着广泛的应用。Python 使用率的上升与来自 STEM 领域的大量人群加入开源社区(而非传统的软件开发者社区)有关。”

值得注意的是,JavaScript 依然在 GitHub 代码推送活动中占据第一位。更多开发者仍然更频繁地使用 JavaScript 推送代码,但在 GitHub 上所有贡献类型的总体活跃度上,Python 排在了第一位。

虽然 Python 的贡献者数量在代码推送和其他活跃度方面的增长速度都超过了 JavaScript,但并未超过 JavaScript 和 TypeScript 的总和。与其说是 JavaScript 被 Python 超越是因为其社区发展放缓,不如说是越来越多的新提交转向了 TypeScript 语言。TypeScript 是 JavaScript 的超集,且与 JavaScript 共享 npm 生态系统,使得 JavaScript 开发者可以轻松逐步采用。

时下,TypeScript 正在蚕食 JavaScript 的地位。从 2014 年到 2019 年呈指数级增长后,TypeScript 去年超越 Java,成为 GitHub 上排名前三的编程语言。它的持续增长也显示了其作为编程语言、类型检查器和编译器一体化工具的实用性。

图片

当然,受益于机器学习兴起的不仅仅是 Python。Jupyter Notebooks 的使用率在过去一年中飙升了 92%,自 2022 年以来飙升了 170%。

GitHub 在发布报告中称,“开发人员的概念以及开发人员的工作范围正在发生变化。Python、HCL 和 Jupyter Notebooks 等的兴起表明,开发人员的概念已不仅限于软件开发人员,还包括运营或 IT 开发人员、机器学习研究人员和数据科学家等角色。”

2、GenAI 的现状

过去一年里,人工智能正在帮助鼓励全球范围内的编码,使来自更多国家的人们能够更轻松地进行编码。

报告称:“一些非英语人口大国的崛起值得关注,因为与此同时,生成式人工智能工具也在不断涌现,这些工具越来越多地使开发人员能够用自然语言编写代码。”

开发者们从此前关注 AI 前沿技术探索转而更关注 AI 的落地,这对行业来说是个好消息。GitHub 指出,通过吸引更加多元化的开发者社区,这最终将推动长期创新。

就目前而言,AI 模型正在成为开发者技术栈的一部分。GitHub 表示,生成式 AI 的创新在 GitHub 上逐渐进入公共代码库,显示出开发者越来越多地在开源环境中进行构建。随着开发者发现越来越多的 AI 用例,生成式 AI 模型在软件开发中的角色已从帮助开发者编写代码,转变为构建应用程序的新基石。

然而,开发者对性能良好、计算成本低的小型模型的需求日益增长,主要源于在智能手机中嵌入 AI 模型的需求。值得注意的是,2024 年开发者数量增长最快的开源 AI 项目是 ollama/ollama,这表明本地运行的大型语言模型(LLM)的实验在增加。随着模型变得更小、计算要求更低,GitHub 预计会有更多开发者在应用中使用这些模型。

GitHub 上的开发者正在努力降低 AI 实验的门槛。排名前 10 的公共生成式 AI 项目致力于改善对 AI 模型的访问,从而使实验变得更容易。

图片

据 GitHub 统计,开发者在 AI 开发工作也出现了一些新趋势同样值得关注:

  • 小型模型的兴起。在过去的一年里,GitHub 上的开发者开始使用 Meta 的 LLaMA 模型,这表明人们对小型开源模型的兴趣日益增加。

  • 针对专业用途的 AI 工具开发。比如,通过项目 binary-husky/gpt_academic,可以看到开发者越来越关注开发专门用于学术研究等特定场景的 AI 工具。

  • 对 AI 代理自动化的持续关注。AutoGPT 相关项目的持续活跃表明,自动化仍然是探索的重点领域,开发者正在致力于增强 AI 代理的能力。

相关文章:

GitHub年度报告发布!Python首次超越JavaScript

全球开发者数量激增,GenAI 项目呈爆炸式增长趋势,推动编程语言的应用格局也发生了巨大变化,最新的 GitHub Octoverse 报告来了! 1、Python 首次超越 JavaScript,成为 GitHub 平台最顶级编程语言 不同于流传“AI 即将取…...

EdgeX Message Bus 消息总线

EdgeX Message Bus 消息总线 一、概述 EdgeX MessageBus 内部消息总线,用于 EdgeX 服务之间的内部通信。 EdgeX 服务是指来自 EdgeX 的任何核心/支持/应用程序/设备服务或使用 EdgeX SDK 构建的任何自定义应用程序或设备服务。 EdgeX MessageBus 用于内部 EdgeX 服务与服务之间…...

【JavaEE进阶】关于Maven

目录 🌴什么是Maven 🌲为什么要学Maven 🎍创建一个Maven项目 🎄Maven核心功能 🚩项目构建 🚩依赖管理 🎋Maven Help插件 🍀Maven 仓库 🚩本地仓库 &#x1f6a…...

YOLOv9-0.1部分代码阅读笔记-autoanchor.py

autoanchor.py utils\autoanchor.py 目录 autoanchor.py 1.所需的库和模块 2.def check_anchor_order(m): 3.def check_anchors(dataset, model, thr4.0, imgsz640): 4.def kmean_anchors(dataset./data/coco128.yaml, n9, img_size640, thr4.0, gen1000, verboseTrue…...

Electronjs+Vue如何开发PC桌面客户端(Windows,Mac,Linux)

electronjs官网 https://www.electronjs.org/zh/ Electron开发PC桌面客户端的技术选型非常适合已经有web前端开发人员的团队。能够很丝滑的过渡。 Electron是什么? Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.…...

谷歌浏览器 安装谷歌浏览器特定版本后禁止自动更新

问题描述 我们通过离线安装谷歌浏览器后,第一次打开浏览器时会默认下载最新版本,等到我们重启浏览器后它会自动更新。在项目中为了能固定浏览器版本,所以要禁止谷歌浏览器的更新,网上找了好多方法都没用,自己摸索出来…...

Linux计算时间差

Linux计算时间差 1、Linux计算时间差2、时间差的应用 1、Linux计算时间差 在Linux中,计算时间差通常是为了统计、监控或调试。时间差可以用来衡量任务执行的时间,或者两个事件之间的间隔。例如,响应时间、执行时间、定时任务与延时处理等 以…...

Python的3D可视化库【vedo】2-5 (plotter模块) 坐标转换、场景导出、添加控件

文章目录 4 Plotter类的方法4.7 屏幕和场景中的坐标点转换4.7.1 屏幕坐标转为世界坐标4.7.2 世界坐标转为屏幕坐标4.7.3 屏幕坐标取颜色 4.8 导出4.8.1 导出2D图片4.8.2 导出3D文件 4.9 添加控件4.9.1 添加内嵌子窗口4.9.2 添加选择区4.9.3 添加比例尺4.9.4 为对象添加弹出提示…...

【VUE】13、安装nrm管理多个npm源

nrm(npm registry manager)是一个 npm 源管理器,它允许用户快速地在不同的 npm 源之间进行切换,以提高包管理的速度和效率。以下是对 nrm 使用的详细介绍: 1、安装nrm 在使用 nrm 之前,需要先确保已经安装…...

【SQL/MySQL 如何使用三种触发器】SQL语句实例演示

触发器介绍 – 触发器是与表有关的数据库对象,指在insert/update/delete之前(BEFORE)或之后(AFTER),触发并执行触发器中定义的SQL语句集合。 – 使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只…...

Docker容器五种网络驱动模式详解

Docker 网络用于在容器之间以及容器与外部网络之间提供通信功能。它允许容器在隔离的网络环境中运行,同时也能根据需要与其他容器或外部网络进行交互。通过使用网络驱动,Docker 可以创建不同类型的网络,以满足各种应用场景的需求。 传统上&am…...

netfilter简介及流程图

Netfilter 是 Linux 内核中用于网络包过滤和操作的框架,由 Rusty Russell 于1998年创立,旨在改进旧的 ipchains 和 ipfwadm 实现。它采用模块化设计,具有良好可扩展性,并在2000年3月合并进Linux 2.3.x内核版本。 Netfilter的主要…...

Vue 前端代码规范

在 Vue 前端开发中,遵循代码规范可以提高代码的可读性、可维护性和团队协作效率。以下是一些详细的 Vue 前端代码规范,涵盖了多个方面: ### 1. **项目结构** - **目录结构**:- src/ 目录下应包含 components/、views/、store/、router/、ass…...

JAVA:组合模式(Composite Pattern)的技术指南

1、简述 组合模式(Composite Pattern)是一种结构型设计模式,旨在将对象组合成树形结构以表示“部分-整体”的层次结构。它使客户端对单个对象和组合对象的使用具有一致性。 设计模式样例:https://gitee.com/lhdxhl/design-pattern-example.git 2、什么是组合模式 组合模式…...

js常用方法之: 预览大图(uniapp原生方法封装)

方法: //预览图片 pic可传单个图片地址字符串 或 图片数组(带index) previewPic: function(pic, index) {if (!pic) return;if (index undefined) {let array [];array.push(pic);uni.previewImage({urls: array,current: array[0]});} else {uni.previewImage({urls: pic,…...

python 高级用法

1、推导列表 ans [ x for x in range(6)] print(ans)ans [ x for x in range(6) if x > 2] print(ans)ans [ x*y for x in range(6) if x > 2 for y in range(6) if y < 3] print(ans) 2、map 函数 a list(map(list,"abc")) print(a) b list(map(ch…...

TISAX认证最新消息

一、TISAX认证概述 TISAX&#xff08;Trusted Information Security Assessment Exchange&#xff09;认证是由德国汽车工业协会&#xff08;VDA&#xff09;主导开发的一种信息安全评估标准。该认证旨在确保汽车供应链中的信息安全&#xff0c;帮助汽车产业链中的企业保护其敏…...

Python中所有子图标签Legend显示详解

在数据可视化中&#xff0c;图例&#xff08;legend&#xff09;是一个非常重要的元素&#xff0c;它能够帮助读者理解图表中不同元素的含义。特别是在使用Python进行可视化时&#xff0c;matplotlib库是一个非常强大的工具&#xff0c;能够轻松创建包含多个子图的图表&#xf…...

python脚本中使用git命令

python脚本中使用git命令 一、背景 在做项目输入文件的版本管理的时候,我发现我需要用到库上面的文件来作为版本管理比较的输入,通常情况下,我是先根据tag将两个版本的文件拉取到本地,然后放进我的工程里在运行脚本来完成版本的比较,但是我发现这样其实很麻烦,所以就想着…...

本地maven项目打包部署到maven远程私库

目的&#xff1a;在自己的maven项目中&#xff0c;要把当前maven项目部署到maven私库&#xff0c;供其他人引入依赖使用。 首先要确保你当前能访问到你的私库&#xff0c;能拉私库的maven依赖即可。 maven部署命令&#xff1a; mvn deploy:deploy-file -Dmaven.test.skiptrue -…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...