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 函数用于对数组或容器进行排序,可以按照默认的升序排序或指定比较函数进行排序。 语法如下: template <class RandomAccessIterator> void sort(RandomAccessIterator first, RandomAccessIterator last);template <clas…...
Android Framework基础到深入篇
Android Framework基础到深入篇 KernelSU Android上基于内核的Root方案 Android系统源码下载/编译篇...

【Go进阶训练营】聊一下go的gc原理
背景 正好周末时间,就打算梳理以下自己对go gc的理解。跳出语言层面来说,gc分为两种,一种是手动创建,手动销毁。另一种就是由自动分配自动销毁,前者就是c,c的代表,后者就是java,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端下载
遇到一个问题,就是上传的图片,在手机上可以下载了,但在电脑上怎么下载到电脑 里,包括上传的文件 点击查看页面就可以吧,在企业工作台里 我做了查看页面,小程序可以,但H5和电脑页面不行 你创建一…...

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

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

JavaScript学习笔记(6.0)
JavaScript类 使用关键字class创建类。 始终添加constructor()方法 class ClassName{constructor(){...} } calss Car{constructor(name,year){this.namename;this.yearyear; } } 创建了一个名为Car的类,并且拥有两个初始属性name和year。 JavaScript类不是对…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

华为OD机考- 简单的自动曝光/平均像素
import java.util.Arrays; import java.util.Scanner;public class DemoTest4 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint[] arr Array…...
【中间件】Web服务、消息队列、缓存与微服务治理:Nginx、Kafka、Redis、Nacos 详解
Nginx 是什么:高性能的HTTP和反向代理Web服务器。怎么用:通过配置文件定义代理规则、负载均衡、静态资源服务等。为什么用:提升Web服务性能、高并发处理、负载均衡和反向代理。优缺点:轻量高效,但动态处理能力较弱&am…...
大模型的LoRa通讯详解与实现教程
一、LoRa通讯技术概述 LoRa(Long Range)是一种低功耗广域网(LPWAN)通信技术,由Semtech公司开发,特别适合于物联网设备的长距离、低功耗通信需求。LoRa技术基于扩频调制技术,能够在保持低功耗的同时实现数公里甚至数十公里的通信距离。 LoRa的主要特点 长距离通信:在城…...