为什么有些项目会使用多种编程语言?

合集 · 直观理解计算机技术【CoreDumped】 (68)

  1. 11:03
    代码中指定变量类型为何如此重要?
  2. 13:46
    栈为何如此之快?
  3. 17:53
    堆为何如此之慢?
  4. 19:56
    动态数组的内部机制(ArrayList VS LinkedList)
  5. 15:37
    探索计算机并发与多任务处理的历史
  6. 12:54
    晶体管是如何运行代码的?
  7. 16:12
    晶体管是如何记忆数据的?
  8. 18:47
    制作一个CPU来运行程序
  9. 11:23
    计算机如何将字符串转换为数字
  10. 17:18
    动态随机存取存储器(DRAM)的工作原理
  11. 16:05
    计算机处理器是如何运行条件和循环的?
  12. 6:51
    一个程序不是一个进程
  13. 14:52
    深入理解进程,如何进行上下文切换?计算机科学中最深刻和最成功的想法之一。
  14. 20:20
    处理器内部的单个位如何保护操作系统的完整性?
  15. 13:14
    计算的心跳:时钟如何推动 CPU 前进?
  16. 14:22
    英语原声版-计算的心跳:时钟如何推动 CPU 前进?
  17. 14:15
    (英语原声)进程间通信:共享内存或发送消息
  18. 12:29
    (中文配音)进程间通信:共享内存或发送消息
  19. 14:59
    (中文配音)为什么单核处理器需要线程?
  20. 16:07
    (英语原声)为什么单核处理器需要线程?
  21. 9:26
    (中文配音)多核系统上的线程
  22. 11:27
    (英语原声)多核系统上的线程
  23. 11:52
    (中文配音)为什么应用程序是特定于操作系统的?
  24. 13:09
    (英语原声)为什么应用程序是特定于操作系统的?
  25. 13:15
    (英语原声)硬件如何在多任务处理中协助软件?
  26. 11:29
    (中文配音)硬件如何在多任务处理中协助软件?
  27. 20:34
    链表的一个实际应用
  28. 45:02
    让你的电脑运行更流畅的奇妙算法
  29. 43:38
    (流畅中文配音)让你的电脑运行更流畅的奇妙算法
  30. 19:41
    (原声双语字幕)当程序调用 sleep() 时会发生什么?
  31. 17:57
    (流畅中文配音)当程序调用 sleep() 时会发生什么?
  32. 20:40
    这个简单算法驱动了真正的解释器:Pratt Parsing
  33. 18:19
    (双语字幕)编程中最难以捉摸的Bug:竞态条件
  34. 19:23
    (流畅中文配音)编程中最难以捉摸的Bug:竞态条件
  35. 16:02
    (中文配音)阻止内存攻击的底层电路
  36. 14:51
    (英语原声)阻止内存攻击的底层电路
  37. 18:04
    为什么有些项目会使用多种编程语言?
  38. 19:32
    为什么有些项目会使用多种编程语言?
  39. 17:15
    别再杀进程了!让 Ctrl+C 变成“喵”……(用信号实现)
  40. 19:23
    别再杀进程了!让 Ctrl+C 变成“喵”...(用信号实现)
  41. 19:05
    80 年代避免竞态条件的算法(以及它为何失败)
  42. 19:43
    80 年代避免竞态条件的算法(以及它为何失败)
  43. 22:10
    CPU如何与众多不同设备交互?
  44. 23:52
    (中文配音)CPU如何与众多不同设备交互?
  45. 14:04
    (中文配音)你每天都在用的奇特CPU操作
  46. 13:04
    你每天都在用的奇特CPU操作
  47. 18:04
    (中文配音)历史如何塑造了我们今天仍在使用的编程术语?
  48. 17:42
    (英语原声)历史如何塑造了我们今天仍在使用的编程术语?
  49. 16:41
    为什么有些底层项目里会充满这种奇怪的代码?
  50. 16:39
    (中文配音)为什么有些底层项目里会充满这种奇怪的代码?
  51. 21:35
    编译与解释代码如何共处同一程序中?
  52. 21:30
    (英语原声)编译与解释代码如何共处同一程序中?
  53. 17:09
    【双语字幕】Core Dumped 常见问题的集中回答
  54. 13:36
    【双语字幕】90年代的设计决策阻碍了Python并行化
  55. 12:01
    【中文配音】90年代的设计决策阻碍了Python并行化
  56. 17:51
    Linux创建进程的奇怪方式
  57. 18:14
    【中文配音】Linux创建进程的奇怪方式
  58. 19:49
    CPU如何运行函数?
  59. 19:38
    【中文配音】CPU如何运行函数?
  60. 17:15
    没有人解释的问题:内核的边界在哪里?
  61. 19:36
    【英语原声】没有人解释的问题:内核的边界在哪里?
  62. 35:49
    硬件如何让线程问题不再那么棘手?
  63. 19:47
    为什么在macOS、Windows和Linux上安装应用程序如此不同?
  64. 24:00
    游戏公司真的能破坏你的电脑吗?
  65. 10:43
    一个视频说透“架构”:为什么你的程序换个CPU就可能跑不了?
  66. 14:45
    CPU如何执行有符号和无符号运算?
  67. 19:11
    简单指令, 奇妙算法
  68. 9:26
    当CPU遇到它不认识的指令,会发生什么?😱【底层原理】
Description
https://www.youtube.com/watch?v=XJC5WB2Bwrc
本视频深入讲解了为什么一些项目会使用多种编程语言混合开发,并探讨了这些语言如何在系统层面协同工作:
引子:通常开发者无需考虑底层细节,但在系统级开发中就必须理解多语言的协作方式。
简单示例:Django 框架
后端使用 Python;
前端用 HTML、CSS、JavaScript;
两部分通过网络通信、属于两个不同进程,易于理解。
复杂示例:同一进程中多语言协作
某些项目要求不同语言的代码在同一个进程中运行;
涉及语言互操作性、编译链接过程、运行时环境等系统级知识。
深入讨论:为何不直接用一种语言?每种语言在效率、生态、硬件控制、跨平台等方面有其优势。
低层原理剖析:如 C/C++ 与 Python、Rust 等语言之间的互操作(如 FFI、动态链接库等)。

Comments

flywule 2025-07-27

为了偷懒[doge]

♥ 256 ↩ 4

斗笔一名 2025-07-28

c语言开一个lua虚拟机 然后在lua虚拟机里面调用c库然后结束[笑哭][笑哭]

♥ 174 ↩ 3

云中道行军总管 2025-07-27

我的话主要是为了调某些语言特有的库或框架方便一些[笑哭]

♥ 150 ↩ 4

leeonaldo 2025-07-30

答案:因为不同的语言有不同的运行效率,开发效率,生态和安全性。比如Linux想在驱动层引入Rust就是为了安全;游戏引擎有Lua虚拟机,运行效率很关键的代码用C/C++开发,而应用逻辑就可以用Lua写;Rust调用C/Fortran的库是为了C/Fortran在科学计算领域的生态。 为什么能行?本质上都是一段代码,只要遵守调用约定就行。不同进程通过进程间通信,比如网络,遵守网络协议如HTTP,WebSocket。同一个进程比如调用C代码,遵守C的ABI即可。

♥ 115

落叶的忧伤2333 2025-10-11

作为独狼,软 硬 硬 都要会

♥ 64 ↩ 6

斗笔一名 2025-07-28

感觉讲的事情和问题无关 多语言应该有如下处理形式 1 都编译成统一abi 都按照操作系统c语言的来 2编译成相同类型字节码 (一众java虚拟机语言 c井虚拟机上的语言 和wasm) 3 一种语言翻译成另一种语言的源码(基本上是为了扩展语言功能典型的ts ) 4 基础语言开虚拟机 (lua python js 都能这么干) 原因当然是环境和生态复用以及开发效率 尤其是动态语言开发真是快 但是运行效率也真的低 看过c语言面向对象的代码 各种宏定义 类型转换 还有类型定义 真的要疯

♥ 56 ↩ 12

Akkariins 2025-07-31

就拿我最近做的一个基于 QEMU 的公有云系统来说,节点端用 Go 开发,和 Libvirt 交互,控制虚拟机,主控端是 PHP Laravel,负责整个管理系统和用户界面,最大化发挥它们各自的优势。Go 的高并发和交叉编译非常适合在各种架构的服务器上安装运行,PHP 作为最流行的 Web 编程语言之一,安装和使用方便,可扩展性也强,开发周期也短,可以和许多主流的程序集成(比如 WHMCS)[doge]每个语言有它自己擅长的事,合理搭配使用可以让你获得最高的开发效率和最流畅的使用体验[doge]

♥ 36 ↩ 6

假梦幻泡影 2025-07-31

为什么?xx语言的xx东西我不会。但是另一个语言我会。一起用吧。[doge]

♥ 29

oaa-yeahhh 2025-08-03

讲的太好了,平时一直用别人的项目,感觉好几种不同的语言之间通信很神奇,现在看了这个视频终于知其所以然了,有种恍然大悟的感觉! 加上最近在学习c++跨平台相关的知识,这个视频补全了我这块知识体系的最后一块拼图[星星眼]

♥ 23 ↩ 2

アサ獅子 2025-07-27

为了调库 并把显闲置的ipc用起来[吃瓜]

♥ 16

神羽僈儛 2025-07-27

请问up主,解释的Pre-processor和Linker是不是互相矛盾啊?Pre-processor不是已经将包含的头文件插入源代码里了吗?为什么还要在Linker步骤连接头文件?[少女乐团派对_期待]

♥ 12 ↩ 10

伊江痕 2025-07-31

刚干完一个用C#+VBA开发的CAD项目,就刷到这个视频了。

♥ 11 ↩ 2

MT-Y-TM 2025-08-02

虽然是科班计算机,也基本熟悉spring boot+vue+前端三件套的写法。但是确实没有怎么思考过链接两种不同语言的操作的原理,因为学校教的跟我自己学的全都是开发网页那一套,不涉及直接开发原生app方面的对这种就完全不了解[笑哭] 之前也有考虑过用electron开发跨平台的APP,但是我不怎么会调electron的打包配置,导致无论怎么打包出来的东西都是一大坨一大坨的,后面就放弃用这种方案了。直接去学原生的安卓和Windows开发,感觉也挺有意思的 视频讲的对我来说很有用,感谢UP主搬运[2233娘_卖萌]

♥ 10 ↩ 4

ruchong 2025-07-27

中文语音听技术相关视频比仅有字幕的视频可舒服太多了[打call]

♥ 9

乌贼05 2025-08-23

我们一些奇怪的项目就是C控制硬件,C++实现算法,C#实现UI,业务还有通信

♥ 6 ↩ 1

曲飨 2025-07-28

昨天刚在油管看完[笑哭]

♥ 5 ↩ 1

跑不快的yyyf 2025-08-04

正在看《嵌入式C语言...自我修养》,讲的挺好的up主,希望后续可以讲讲静态和动态... 三连奉上[脱单doge]

♥ 5 ↩ 1

电獭Official 2025-12-01

我先来,pythonnet,ikvm,CEF, OLE, luajit [doge]

♥ 3

real_Esc 2025-07-29

用最简单的方式实现能用,大部分情况够了[doge]

♥ 3