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

Tesla都使用什么编程语言?

作者 | 初光
出品 | 车端
备注 | 转载请阅读文中版权声明
知圈 | 进“汽车电子与AutoSAR开发”群,请加微“cloud2sunshine”



总目录链接==>> AutoSAR入门和实战系列总目录

带着对更美好未来的愿景,特斯拉不仅成为有史以来最有价值的汽车公司,而且超越了自己,成为世界顶级科技公司之一。从自动驾驶汽车到人工智能机器人,特斯拉无所不包。但是,是什么编程语言帮助该组织创造了这样的未来产品呢?让我们找出来。

图片

大多数培训软件工程师的机构都专注于新的编程语言和框架。但已建立的所谓“低级”编程语言,如 C 和 C++,仍被广泛使用。事实上,来自 Github 的研究表明,C 和 C++ 仍然是使用最广泛的编程语言的前 10 名。

依赖“低级”编程的公司的两个很好的例子是 Tesla 和 Nvidia。这两个名字都是创新的代名词:Tesla 以制造下一代汽车而闻名,Nvidia 是著名的人工智能算法和视频游戏图形卡设计商。霍尔伯顿学院的校友亲眼目睹了“低级”语言如何帮助特斯拉和 Nvidia 更高效地构建。该团队负责通过帮助尽早发现错误并提高项目的整体质量来提高整个嵌入式软件开发组织的效率。“特斯拉汽车中的大部分软件都是 C 或 C++,”特斯拉工程经理 Mehdi Amini 说。“Anne 正在开发一个关键软件,该软件可以在流程失败时收集信息,这需要对低级编程有扎实的了解。” C 的优点是能够在几乎任何类型的系统上运行并且非常轻便。它广泛应用于物联网、传感器和大多数嵌入式系统。因为它非常接近操作系统,所以它允许工程师高效地编码和优化软件。当您的系统处理实时约束或硬件资源有限时,这一点至关重要。“在效率方面,没有任何编程语言能与 C 或 C++ 相提并论。大多数带有垃圾收集器的现代编程语言在内存管理方面都是不确定的,这根本不适合关键的嵌入式系统,例如特斯拉汽车中的系统”迈赫迪说。Swati Gupta 是这门语言的粉丝:“有了 C,你就能真正了解内存是如何工作的,内核是如何工作的。你可以从字面上阅读 Linux 源代码——这有多酷?”

1 特斯拉使用的编程语言

「1.C&C++」

近年来,涌入了大量新的编程语言,如 Elixir、Pony、Julia 等,旨在用尽可能少的代码简化任务。然而,Tesla 仍然严重依赖一种最基础的语言:C 和 C++。

“特斯拉汽车中的大部分软件都是 C 或 C++,”特斯拉工程经理 Mehdi Amini 说。这些古老语言的最大优势之一,可能也是它经久不衰的原因是,这些语言几乎可以在任何类型的系统上运行。由于其与操作系统的接近性,这些低级编程语言被用于大多数物联网和嵌入式系统,并帮助工程师优化软件。

“在效率方面,没有任何一种编程语言能与 C 或 C++ 相提并论。大多数带有垃圾收集器的现代编程语言在内存管理方面都是不确定的,这根本不适合关键的嵌入式系统,例如特斯拉汽车中的系统,”Mehdi 说。另一家广泛使用 C 和 C++ 的主要科技公司是Nvidia。

「2.Python」

除了 C 和 C++,Tesla 还严重依赖可能是最流行和使用最广泛的语言;Python 。在一系列推文中,Elon 解释了他们如何使用 C/C++ 和 Python 的组合来构建他们的算法:

图片

我们的神经网络最初是在 Python 中进行快速迭代,然后转换为 C++/C/原始金属驱动程序代码以提高速度(重要!)。此外,车辆控制和整个汽车其余部分需要大量 C++/C 工程师。教育背景无关紧要,但都必须通过硬核编码测试。

这条推文促使许多开发人员强调从 Python 转换为 C++/C 的不足之处,但请记住,这条推文只是对经过深思熟虑的过程的浓缩解释,并没有公正对待实际情况使用的技术。PyTorch 的联合创始人 Soumith Chintala 解释说,他们很可能遵循从 Python 到 C 和 C++ 的自动转换。Elon 还指出了他们对 PyTorch 的依赖;

图片

PyTorch 是最常用的外部工具集/库

PyTorch是一个为机器学习、计算机视觉和自然语言处理而构建的库。它是完全开源的,由 Facebook 的 AI 研究实验室构建。

「3. Java 和 Javascript」

根据 Burning Glass 进行的一项调查,Java 和 Javascript 在特斯拉语言的使用和重要性方面排在第二位。这两种语言都大量用于为他们的汽车构建系统和应用程序。C++、Python 和 Java 是特斯拉几乎所有职位所需要的语言。此外,对于涉及前端编程的角色,Tesla 要求精通 Javascript。在这里了解更多关于 Tesla 工作的信息。

「4. 其他语言」

特斯拉还根据其他编程语言所执行的特定功能,要求他们精通其他编程语言。React和Typescript是 Tesla 广泛用于前端开发的基于 Javascript 的语言。此外,涉及网络开发的角色需要Ruby、 CSS 和PHP 。最后,SQL 被大规模用于数据库管理。所有这些语言结合在一起构建了让我们敬畏的产品。

2 结论

因此,尽管特斯拉是世界上主要的科技公司之一,但它主要依赖于老式的编程语言。如果你想为 Tesla、SpaceX、Nvidia、Intel 等公司工作,Python、C 和 C++ 是必须的。然而,Tesla 有 300 多名工程师,他们拥有不同的技能,所有这些都聚集在一起创造复杂的网络来运行他们的产品。您选择学习哪种编程语言应完全取决于您要执行的功能类型。做出明智的选择!

相关文章:

Tesla都使用什么编程语言?

作者 | 初光 出品 | 车端 备注 | 转载请阅读文中版权声明 知圈 | 进“汽车电子与AutoSAR开发”群,请加微“cloud2sunshine” 总目录链接>> AutoSAR入门和实战系列总目录 带着对更美好未来的愿景,特斯拉不仅成为有史以来最有价值的汽车公司&…...

1143. 最长公共子序列——【Leetcode每日刷题】

1143. 最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些…...

【并发基础】线程的通知与等待:obj.wait()、obj.notify()、obj.notifyAll()详解

目录 〇、先总结一下这三个方法带来的Java线程状态变化 一、obj.wait() 1.1 作用 1.2 使用前需要持有线程共享对象的锁 1.3 使用技巧 二、obj.notify(All)() 1.1 notify() 方法 1.1.1 调用notify()或notifyAll()不会释放线程的锁 1.2 notifyAll() 方法 1.3 使用技巧 三、使用实…...

css黏性定位-实现商城的分类滚动的标题吸附

传统的黏性定位是使用js通过计算高度来实现的,当元素滚动到一定位置时吸附在当前位置。下面我们通过css来实现黏性定位功能。 黏性定位 黏性定位目前主流的浏览器已经全部支持,顾名思义,黏性定位具有吸附的效果,其实它是positio…...

@Component和@bean注解在容器中创建实例区别

Component和Bean的区别 在Spring Boot中,Component注解和Bean注解都可以用于创建bean。它们的主要区别在于它们的作用范围和创建方式。 Component注解是一种通用的注解,可以用于标注任何类。被标注的类将被Spring容器自动扫描并创建为一个bean。这个bea…...

不写注释就是垃圾

最近Linux6.2出来了增加了很多新的东西,有看点的是,Linux确实要可以在Apple M1上面运行了,这应该是一个很大的新闻,如果有这么稳定的硬件支持,那对于Linux来说相当于又打下了一大片的江山。其中关于Linux6.2的特性罗列…...

深信服一面

1.C变量存储在哪里,生命周期是怎样的 2.静态成员变量和成员函数的特性,在哪里用过吗 3.new和delete是什么,和malloc和free对比有啥优势 4.new能不能重载,重载new有什么用 5.多态是怎么实现的,有什么优势和目的 6.…...

【C语言】深度理解指针(中)

前言✈上回说到,我们学习了一些与指针相关的数据类型,如指针数组,数组指针,函数指针等等,我们还学习了转移表的基本概念,学会了如何利用转移表来实现一个简易计算器。详情请点击传送门:【C语言】…...

步进电机运动八大算法

引导一种模块化(Module)设计思想,将传统步进电机的控制器(controller)、驱动器(Driver)、运动算法(Arithmetic)三合一。 对比国内外步进电机驱动原理和已有工作,结合各种硬件特性,改进或实现了可实际移植并用于步进电机控制八大算法。本产品…...

如果你持续大量的教坏ChatGPT,它确实会变坏

你输出的很多数据是经过人工标注吗,以确保可以正常对外展示出来,而不是有性别歧视、种族歧视或者其它意识形态为多数人所不认同的内容产生? 作为AI语言模型,我并不直接处理或输出任何数据,我的任务是通过对输入的自然语…...

opencv学习(二)图像阈值和平滑处理

图像阈值ret, dst cv2.threshold(src, thresh, maxval, type)src: 输入图,只能输入单通道图像,通常来说为灰度图dst: 输出图thresh: 阈值maxval: 当像素值超过了阈值(或者小于阈值,…...

【含源码】用python做游戏有多简单好玩

有很多同学问我还有其他什么小游戏吗,游戏是怎么做的,难不难。我就用两篇文章来介绍一下,如何使用Python做游戏。 兔子与灌 俄罗斯方块 休闲五子棋 走迷宫 推箱子 消消乐 超多小游戏玩转不停↓ 更多小游戏可以评论区讨论哦,喜欢…...

C++常用函数

std::sort std::sort 函数用于对数组或容器进行排序&#xff0c;可以按照默认的升序排序或指定比较函数进行排序。 语法如下&#xff1a; template <class RandomAccessIterator> void sort(RandomAccessIterator first, RandomAccessIterator last);template <clas…...

Android Framework基础到深入篇

Android Framework基础到深入篇 KernelSU Android上基于内核的Root方案 Android系统源码下载/编译篇...

【Go进阶训练营】聊一下go的gc原理

背景 正好周末时间&#xff0c;就打算梳理以下自己对go gc的理解。跳出语言层面来说&#xff0c;gc分为两种&#xff0c;一种是手动创建&#xff0c;手动销毁。另一种就是由自动分配自动销毁&#xff0c;前者就是c,c的代表&#xff0c;后者就是java&#xff0c;go。 而整个流程…...

英飞凌Tricore原理及应用介绍05_中断处理之中断路由(IR)模块详解

目录 1.概述1.1相关缩写2 TC3xx中IR特性介绍3.SRN(中断服务请求优先级)3.1 寄存器中的各Bit位讲解3.2 如何改变SRN配置4. 实际应用介绍4.1 如何利用SRC寄存器检查OS中断配置是否正确?1.概述 在Tricore架构中允许有多个中断源包括片上外设及外部中断世间产生的中断请求,以打…...

微搭问答002-移动端上传的文件如何在PC端下载

遇到一个问题&#xff0c;就是上传的图片&#xff0c;在手机上可以下载了&#xff0c;但在电脑上怎么下载到电脑 里&#xff0c;包括上传的文件 点击查看页面就可以吧&#xff0c;在企业工作台里 我做了查看页面&#xff0c;小程序可以&#xff0c;但H5和电脑页面不行 你创建一…...

初识JVM

目录 引言 JVM是什么&#xff1f; JVM和java有什么联系&#xff1f; JDK、JRE、JVM有什么区别 为什么学习JVM&#xff1f; JVM——从内存管理开始 运行时数据区域 分区讲解 堆 方法区 程序计数器 本地技术栈 虚拟机栈 对象的创建 指针碰撞&#xff1a; 空闲列表…...

实践分享:Vue 项目如何迁移小程序

最近我们小组刚经历了将成熟的 HTML5 项目转换成小程序&#xff0c;并在app中运行的操作&#xff01;记录下来分享给各位。 项目&#xff1a;将已有的 Vue 项目转为小程序&#xff0c; 在集成了FinClip SDK 的 App 中运行。 技术&#xff1a;uni-app、FinClip 两个注意事项&…...

JavaScript学习笔记(6.0)

JavaScript类 使用关键字class创建类。 始终添加constructor()方法 class ClassName{constructor(){...} } calss Car{constructor(name,year){this.namename;this.yearyear; } } 创建了一个名为Car的类&#xff0c;并且拥有两个初始属性name和year。 JavaScript类不是对…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...