为什么有些项目会使用多种编程语言?
合集 · 直观理解计算机技术【CoreDumped】 (68)
-
代码中指定变量类型为何如此重要?
11:03
-
栈为何如此之快?
13:46
-
堆为何如此之慢?
17:53
-
动态数组的内部机制(ArrayList VS LinkedList)
19:56
-
探索计算机并发与多任务处理的历史
15:37
-
晶体管是如何运行代码的?
12:54
-
晶体管是如何记忆数据的?
16:12
-
制作一个CPU来运行程序
18:47
-
计算机如何将字符串转换为数字
11:23
-
动态随机存取存储器(DRAM)的工作原理
17:18
-
计算机处理器是如何运行条件和循环的?
16:05
-
一个程序不是一个进程
6:51
-
深入理解进程,如何进行上下文切换?计算机科学中最深刻和最成功的想法之一。
14:52
-
处理器内部的单个位如何保护操作系统的完整性?
20:20
-
计算的心跳:时钟如何推动 CPU 前进?
13:14
-
英语原声版-计算的心跳:时钟如何推动 CPU 前进?
14:22
-
(英语原声)进程间通信:共享内存或发送消息
14:15
-
(中文配音)进程间通信:共享内存或发送消息
12:29
-
(中文配音)为什么单核处理器需要线程?
14:59
-
(英语原声)为什么单核处理器需要线程?
16:07
-
(中文配音)多核系统上的线程
9:26
-
(英语原声)多核系统上的线程
11:27
-
(中文配音)为什么应用程序是特定于操作系统的?
11:52
-
(英语原声)为什么应用程序是特定于操作系统的?
13:09
-
(英语原声)硬件如何在多任务处理中协助软件?
13:15
-
(中文配音)硬件如何在多任务处理中协助软件?
11:29
-
链表的一个实际应用
20:34
-
让你的电脑运行更流畅的奇妙算法
45:02
-
(流畅中文配音)让你的电脑运行更流畅的奇妙算法
43:38
-
(原声双语字幕)当程序调用 sleep() 时会发生什么?
19:41
-
(流畅中文配音)当程序调用 sleep() 时会发生什么?
17:57
-
这个简单算法驱动了真正的解释器:Pratt Parsing
20:40
-
(双语字幕)编程中最难以捉摸的Bug:竞态条件
18:19
-
(流畅中文配音)编程中最难以捉摸的Bug:竞态条件
19:23
-
(中文配音)阻止内存攻击的底层电路
16:02
-
(英语原声)阻止内存攻击的底层电路
14:51
-
为什么有些项目会使用多种编程语言?
18:04
-
为什么有些项目会使用多种编程语言?
19:32
-
别再杀进程了!让 Ctrl+C 变成“喵”……(用信号实现)
17:15
-
别再杀进程了!让 Ctrl+C 变成“喵”...(用信号实现)
19:23
-
80 年代避免竞态条件的算法(以及它为何失败)
19:05
-
80 年代避免竞态条件的算法(以及它为何失败)
19:43
-
CPU如何与众多不同设备交互?
22:10
-
(中文配音)CPU如何与众多不同设备交互?
23:52
-
(中文配音)你每天都在用的奇特CPU操作
14:04
-
你每天都在用的奇特CPU操作
13:04
-
(中文配音)历史如何塑造了我们今天仍在使用的编程术语?
18:04
-
(英语原声)历史如何塑造了我们今天仍在使用的编程术语?
17:42
-
为什么有些底层项目里会充满这种奇怪的代码?
16:41
-
(中文配音)为什么有些底层项目里会充满这种奇怪的代码?
16:39
-
编译与解释代码如何共处同一程序中?
21:35
-
(英语原声)编译与解释代码如何共处同一程序中?
21:30
-
【双语字幕】Core Dumped 常见问题的集中回答
17:09
-
【双语字幕】90年代的设计决策阻碍了Python并行化
13:36
-
【中文配音】90年代的设计决策阻碍了Python并行化
12:01
-
Linux创建进程的奇怪方式
17:51
-
【中文配音】Linux创建进程的奇怪方式
18:14
-
CPU如何运行函数?
19:49
-
【中文配音】CPU如何运行函数?
19:38
-
没有人解释的问题:内核的边界在哪里?
17:15
-
【英语原声】没有人解释的问题:内核的边界在哪里?
19:36
-
硬件如何让线程问题不再那么棘手?
35:49
-
为什么在macOS、Windows和Linux上安装应用程序如此不同?
19:47
-
游戏公司真的能破坏你的电脑吗?
24:00
-
一个视频说透“架构”:为什么你的程序换个CPU就可能跑不了?
10:43
-
CPU如何执行有符号和无符号运算?
14:45
-
简单指令, 奇妙算法
19:11
-
当CPU遇到它不认识的指令,会发生什么?😱【底层原理】
9:26
Description
https://www.youtube.com/watch?v=XJC5WB2Bwrc 本视频深入讲解了为什么一些项目会使用多种编程语言混合开发,并探讨了这些语言如何在系统层面协同工作: 引子:通常开发者无需考虑底层细节,但在系统级开发中就必须理解多语言的协作方式。 简单示例:Django 框架 后端使用 Python; 前端用 HTML、CSS、JavaScript; 两部分通过网络通信、属于两个不同进程,易于理解。 复杂示例:同一进程中多语言协作 某些项目要求不同语言的代码在同一个进程中运行; 涉及语言互操作性、编译链接过程、运行时环境等系统级知识。 深入讨论:为何不直接用一种语言?每种语言在效率、生态、硬件控制、跨平台等方面有其优势。 低层原理剖析:如 C/C++ 与 Python、Rust 等语言之间的互操作(如 FFI、动态链接库等)。
Comments
为了偷懒[doge]
♥ 256 ↩ 4
c语言开一个lua虚拟机 然后在lua虚拟机里面调用c库然后结束[笑哭][笑哭]
♥ 174 ↩ 3
我的话主要是为了调某些语言特有的库或框架方便一些[笑哭]
♥ 150 ↩ 4
答案:因为不同的语言有不同的运行效率,开发效率,生态和安全性。比如Linux想在驱动层引入Rust就是为了安全;游戏引擎有Lua虚拟机,运行效率很关键的代码用C/C++开发,而应用逻辑就可以用Lua写;Rust调用C/Fortran的库是为了C/Fortran在科学计算领域的生态。 为什么能行?本质上都是一段代码,只要遵守调用约定就行。不同进程通过进程间通信,比如网络,遵守网络协议如HTTP,WebSocket。同一个进程比如调用C代码,遵守C的ABI即可。
♥ 115
作为独狼,软 硬 硬 都要会
♥ 64 ↩ 6
感觉讲的事情和问题无关 多语言应该有如下处理形式 1 都编译成统一abi 都按照操作系统c语言的来 2编译成相同类型字节码 (一众java虚拟机语言 c井虚拟机上的语言 和wasm) 3 一种语言翻译成另一种语言的源码(基本上是为了扩展语言功能典型的ts ) 4 基础语言开虚拟机 (lua python js 都能这么干) 原因当然是环境和生态复用以及开发效率 尤其是动态语言开发真是快 但是运行效率也真的低 看过c语言面向对象的代码 各种宏定义 类型转换 还有类型定义 真的要疯
♥ 56 ↩ 12
就拿我最近做的一个基于 QEMU 的公有云系统来说,节点端用 Go 开发,和 Libvirt 交互,控制虚拟机,主控端是 PHP Laravel,负责整个管理系统和用户界面,最大化发挥它们各自的优势。Go 的高并发和交叉编译非常适合在各种架构的服务器上安装运行,PHP 作为最流行的 Web 编程语言之一,安装和使用方便,可扩展性也强,开发周期也短,可以和许多主流的程序集成(比如 WHMCS)[doge]每个语言有它自己擅长的事,合理搭配使用可以让你获得最高的开发效率和最流畅的使用体验[doge]
♥ 36 ↩ 6
为什么?xx语言的xx东西我不会。但是另一个语言我会。一起用吧。[doge]
♥ 29
讲的太好了,平时一直用别人的项目,感觉好几种不同的语言之间通信很神奇,现在看了这个视频终于知其所以然了,有种恍然大悟的感觉! 加上最近在学习c++跨平台相关的知识,这个视频补全了我这块知识体系的最后一块拼图[星星眼]
♥ 23 ↩ 2
为了调库 并把显闲置的ipc用起来[吃瓜]
♥ 16
请问up主,解释的Pre-processor和Linker是不是互相矛盾啊?Pre-processor不是已经将包含的头文件插入源代码里了吗?为什么还要在Linker步骤连接头文件?[少女乐团派对_期待]
♥ 12 ↩ 10
刚干完一个用C#+VBA开发的CAD项目,就刷到这个视频了。
♥ 11 ↩ 2
虽然是科班计算机,也基本熟悉spring boot+vue+前端三件套的写法。但是确实没有怎么思考过链接两种不同语言的操作的原理,因为学校教的跟我自己学的全都是开发网页那一套,不涉及直接开发原生app方面的对这种就完全不了解[笑哭] 之前也有考虑过用electron开发跨平台的APP,但是我不怎么会调electron的打包配置,导致无论怎么打包出来的东西都是一大坨一大坨的,后面就放弃用这种方案了。直接去学原生的安卓和Windows开发,感觉也挺有意思的 视频讲的对我来说很有用,感谢UP主搬运[2233娘_卖萌]
♥ 10 ↩ 4
中文语音听技术相关视频比仅有字幕的视频可舒服太多了[打call]
♥ 9
我们一些奇怪的项目就是C控制硬件,C++实现算法,C#实现UI,业务还有通信
♥ 6 ↩ 1
昨天刚在油管看完[笑哭]
♥ 5 ↩ 1
正在看《嵌入式C语言...自我修养》,讲的挺好的up主,希望后续可以讲讲静态和动态... 三连奉上[脱单doge]
♥ 5 ↩ 1
我先来,pythonnet,ikvm,CEF, OLE, luajit [doge]
♥ 3
用最简单的方式实现能用,大部分情况够了[doge]
♥ 3