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类不是对…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
