展开讨论

经验与复盘经验摘录 · 机器翻译

对我来说,“系统编程”只是低级编程

对我来说,“系统编程”只是低级编程。当你需要访问硬件,当你需要性能的时候,你就会这么做。这似乎是一门失传的艺术。当我还在高中时学习Pascal、C和C++,大多数同学都在学习和使用这些语言。直到2000年代初,大多数面向最终用户的软件都是相当底层的,因为别无选择,人们需要足够快的软件。即使现在我主要使用垃圾回收语言,远离了这些语言,但我使用C和C++的那些年和日子仍然让我觉得很有收获,因为我了解硬件是如何工作的,当做出某个决定时有哪些权衡,如果我希望获得良好的性能,我应该走哪条路。

源讨论什么是系统编程?原帖 76 条评论 · 导入时统计
5

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 5

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

BL

系统编程是指你跳出你光鲜的 MVC API 和库,开始阅读 Linux/BSD 手册的第 2 节。当你开始关心进程和线程的亲和性、内存分配模式、CPU 缓存性能等时,就是系统编程。

完整原文
RA

然而,操作系统处于比内核更高的层次。传统上,系统是介于低级和高级之间的中间地带。 但最终,词语的意义取决于你在那一刻如何定义它,所以只要你能向需要理解你如何使用这个词的人传达这个意义,'系统'可以指任何你想要的东西。

完整原文
DG

这种区别的问题是,'系统'这个词本身并不能参与其中。 系统是将较小的、不同的组件组合在一起,从而产生其组件本身不具有的涌现特性的东西。 系统编程是为了提供这些组件,以便应用程序程序员可以将它们组合在一起吗? 如果是这样的话,'低级'完全是相对的。一个组件可以是硬件驱动程序、云中的服务或你游戏引擎中的一组基本函数。 这也意味着该术语是递归的。任何正在编写组件或系统较大部分的程序员,都可以称为系统编程。 那么,处理最终用户消费(html)和进一步处理(json)的内容协商的网络开发人员现在也算系统编程吗? 这个词确实有点令人困惑。

完整原文
PJ

这甚至可以在BASIC中完成,比如在8位家用电脑上,或者在MS-DOS、VAX/VMS、HP-UX等系统上可用的BASIC编译器。 Xerox PARC的系统编程使用的是Smalltalk、Interlisp-D、Mesa/Cedar,其中垃圾回收是其中的一部分。同样,在ETHZ,他们使用各种基于Oberon的系统。 我很幸运在学习C和C++之前,曾在BASIC和Pascal中做过系统级别的工作,这样我就没有被C和C++是进行系统工作的唯一方式的误解所困扰。 重要的是理解硬件是如何工作的,以及这些高级内容如何映射到汇编语言。

完整原文
AG

对此有一个细微的变化,尽管我从未听人公开说过:无论是否是低级,系统编程都是关于相互作用的部分。很久以前,低级意味着向各种芯片发送消息/信号以达到预期的效果。这很神秘,充满了时间和空间的限制,人们将系统与这些复杂的话题联系在一起,但对我来说,'系统中相互作用的部分'仍然是定义中的一个重要方面。这就是为什么我接受了Go作为系统语言,它只是没有在电子层面上运行,而是在计算机/节点层面上。但它旨在在所有这些节点之间并发地协调消息,就像很久以前的芯片和信号一样。

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。