2024 12 05 HackerNews

2024-12-05 Hacker News Top Stories #

  1. 一个时光胶囊项目收录了许多未经编辑的生活瞬间的视频,用户可以在网页上随机观看这些视频。
  2. 一个 9 岁男孩用纯 JavaScript 制作了一个游戏,游戏页面上显示了两个部分:对手选择和自己的行动选择。
  3. DeepMind 发布了一个大规模的基础世界模型 Genie 2,模型可以生成 3D 环境和对象。
  4. 一篇文章讨论了如何简化流程,减少角色和职责的划分,并鼓励员工之间的协作和沟通。
  5. Phoenix Framework 的 LiveView 1.0.0 版本已经发布,提供了一键安装脚本,方便快速上手。
  6. 英特尔宣布了新一代的独立显卡产品线——Battlemage 系列,采用 Xe2 图形处理技术,相比于上一代的 Alchemist 系列,性能提升了 70%,功耗降低了 50%。
  7. 亚马逊推出了 Nova 语言模型,旨在提供业界领先的价格和性能,Nova 是一种大型语言模型,可以处理自然语言理解和生成任务。
  8. 一篇文章分享了作者在职业生涯中与不同的人建立关系的经历,并提出了一个名为"TJS Collaboration Model"的模型来描述专业关系的七个阶段。
  9. OpenTTD 是一个开源的模拟游戏,基于 Transport Tycoon Deluxe,游戏的最新版本是 14.1,修复了一些 bug 和改进了一些功能。
  10. 一个自编译的 C 编译器可以编译自身,足够强大,可以编译自身,输出的是 x86-64 汇编代码。

IMG_0001 #

https://walzr.com/IMG_0001/

这个网页是一个博客文章,介绍了一个有趣的项目。作者 Riley Walz 在 2009 年到 2012 年期间,发现 iPhone 的相册应用中有一个"发送到 YouTube"的按钮,很多用户上传的视频都保留了默认的文件名,如 IMG_XXXX。

作者受 Ben Wallace 的启发,创建了一个爬虫程序,爬取了 YouTube 上 500 万个这样的视频。这些视频是随机的、未经编辑的生活瞬间的记录,形成了一个时光胶囊。文章下方提供了一个视频播放器,用户可以随机观看这些视频。视频的标题包括观看次数、上传日期等信息。


HN 热度 1549 points | 评论 250 comments | 作者:walz | 20 hours ago #

https://news.ycombinator.com/item?id=42314547

  • 观看零观看次数的视频感觉像是侵犯了他人的私人生活
  • 人们可能不知道自己上传的视频会被公开,观看这些视频在道德上是不正确的
  • 早期互联网的未知和探索感在现在的互联网中已经消失了
  • 早期互联网的不安全感和现在的社交媒体环境形成了对比,现在的互联网让人感觉更安全但实际上是被大公司控制的
  • 过度的网络审查可能导致人们不再对互联网内容感到警惕
  • 感觉这种观看方式像是技术窥探,但现实生活中也有很多类似的观察行为
  • 评论者对于观看这些视频感到不安,但这种不安并不是因为视频内容本身
  • 有人认为这种观看体验让人回想起早期互联网的探索感,感觉很怀旧
  • 有评论者认为,观看这些视频并不会真正侵犯隐私,因为类似的行为在现实生活中也很常见

My son (9 yrs old) used plain JavaScript to make a game, and wants your feedback #

https://www.armaansahni.com/game/

这个网页是一个游戏页面,特别是对战游戏。页面上显示了两个部分:对手选择和自己的行动选择。

对手选择

页面列出了多个对手选项,包括:

  • 飞行蛇(Flying Snake)
  • 云怪兽(Cloud Monster)
  • 蝎子(Scorpion)
  • 蜘蛛(Spider)
  • 枪手(Gun Guy)
  • 重型怪兽(Pounder Monster)
  • 火巨人(Fire Gollum)
  • 黑洞(Black Hole)
  • 锯齿机器人(Saw Robot)
  • 能量核心(Power Warp Core)

自己的行动选择

页面也列出了自己的行动选项,包括:

  • 投掷星星(Throwing Star)
  • 射击星星(Shooting Star)
  • 爆炸星星(Blasting Star)
  • 爆炸星星(Exploding Star)

自己的状态

页面显示了自己的当前状态,包括生命值(HP),生命值为 300。


HN 热度 894 points | 评论 407 comments | 作者:veesahni | 1 day ago #

https://news.ycombinator.com/item?id=42312121

  • 游戏中的动画精灵让整个游戏更加生动
  • 游戏的飞蛇是评论者最喜欢的元素
  • 游戏武器的充电状态需要更清晰的指示
  • 可以显示对手正在解决的问题和答案
  • 游戏胜利或失败后应该有结束画面
  • 武器充电机制可能存在逻辑错误,需要修复
  • 可以通过改变颜色或透明度来显示武器是否已充电
  • 为游戏增加音效,同时注意版权问题
  • 孩子在编程学习中使用 AI 工具是很好的尝试
  • 编程对孩子的探索和创造能力有积极作用
  • 为孩子推荐了《计算机程序的构造和解释》作为学习资源

Genie 2: A large-scale foundation world model #

https://deepmind.google/discover/blog/genie-2-a-large-scale-foundation-world-model/

DeepMind 是一家人工智能研究机构,致力于通过负责任地开发 AI 技术来造福人类。他们的使命是让 AI 为人类带来益处,因此他们必须谨慎地考虑如何开发和使用 AI。

DeepMind 的研究重点是解决一些最复杂和最有趣的 AI 挑战。他们的突破包括 AlphaGo、AlphaStar 和一般性代理等。他们还开发了各种 AI 模型,例如 Gemini、Project Astra、Imagen 和 Veo 等。

Gemini 是 DeepMind 最强大的 AI 模型之一,可以生成各种 3D 环境。Project Astra 是一个通用 AI 代理,可以在日常生活中提供帮助。Imagen 是 DeepMind 最高质量的文本到图像模型。Veo 是 DeepMind 最强大的生成视频模型。AlphaFold 是一个加速生物学突破的 AI 模型。

DeepMind 还开发了 SynthID,一个可以识别 AI 生成内容的模型。他们的研究成果包括 Genie 2,一个可以生成无限多样化的 3D 环境的世界模型。Genie 2 可以让未来的代理在无限多样的环境中训练和评估。

DeepMind 的研究还包括游戏和 AI 的结合。他们认为游戏是 AI 研究的理想环境,因为游戏可以提供安全的测试和评估环境。他们还开发了各种游戏相关的 AI 模型,例如 AlphaGo 和 AlphaStar 等。

DeepMind 的目标是让 AI 为人类带来益处,因此他们致力于负责任地开发和使用 AI 技术。他们的研究成果包括各种 AI 模型和应用,例如 Gemini、Project Astra、Imagen 和 Veo 等。他们还开发了 SynthID 和 Genie 2 等模型,旨在让 AI 更加强大和安全。


HN 热度 778 points | 评论 290 comments | 作者:meetpateltech | 10 hours ago #

https://news.ycombinator.com/item?id=42317903

  • 这个模型非常令人印象深刻,但缺乏架构解释、代码、技术细节和 API 访问信息
  • 与 AI Minecraft 相比,这个模型更先进,具有更好的连续性和生成质量,但生成速度较慢,可能不适用于实时人类使用
  • 该模型可能因为成本高昂而主要用于 AI 训练和评估,而非直接面向人类用户
  • 这种模型可以显著减少 3D 建模师在创建训练环境时的工作量
  • 模型的性能和成本可能在未来 5-10 年内大幅降低,ASICs 等专用硬件可能是降低成本的关键
  • 这种演示可能有助于吸引顶尖人才加入公司,因为可以展示最先进的模型和研究
  • 该模型目前更像是一个早期原型,属于更广泛的 R&D 项目,短期内不太可能开放访问
  • Gemini 在某些方面不如 ChatGPT 和 Claude,例如在纠正错误信息时的表现
  • ChatGPT 也存在类似 Gemini 的问题,即在复杂问题上容易受到提问者的偏见影响
  • Gemini 在面对错误信息时过于顺从,这限制了其在扩展用户知识库方面的作用

Egoless Engineering #

https://egoless.engineering

这篇文章是关于作者 Dan McKinley 的演讲,他讨论了自己在不同公司的工作经历和观察到的问题。文章分为几个部分,首先介绍了作者的背景和演讲的主题。

作者谈到,他在不同的公司中看到了一些共同的问题,包括责任的划分、角色和工作的混淆、以及过度的专业化。他认为,这些问题导致了公司的效率低下和员工的不满。

作者举了几个例子,包括他在一家初创公司的经历,那里的团队被划分为不同的角色,导致了沟通和协作的困难。他还提到了另一家公司,哪里有一个专门的“发布经理”角色,负责管理软件的发布过程,但这个角色并没有带来明显的改善。

作者认为,问题的根源在于公司试图通过创建新的角色和流程来解决问题,但这实际上使得问题更加复杂。他建议,公司应该尝试简化流程,减少角色和职责的划分,并鼓励员工之间的协作和沟通。

文章还讨论了“DevOps”的概念,作者认为,虽然这个概念本来是为了促进开发和运维团队之间的协作,但实际上并没有带来太多的改善。他认为,公司应该真正地实践“DevOps”的原则,而不是仅仅挂羊头卖狗肉。

总的来说,这篇文章是关于作者对软件开发和公司管理的思考和观察,希望通过分享自己的经验和见解来帮助其他人避免类似的错误。


HN 热度 757 points | 评论 268 comments | 作者:mcfunley | 1 day ago #

https://news.ycombinator.com/item?id=42311069

  • 增加流程应基于实际需求,而非无谓的管理
  • 所有角色都应负责产品从开发到上线的全过程,这能提升团队成员的积极性
  • 避免因小概率事件做出过度反应,保持冷静和理性
  • 促进团队间的协作文化,而非建立隔阂,尽管这很难规模化但值得尝试
  • 团队成员都是真实的人,不应被忽视
  • 在现代团队结构中,完全拥有产品到上线的过程变得困难,因为各层级人员都想分一杯羹
  • 高效团队的创建困难,因为组织内的“展示所有权以证明绩效”激励机制可能导致实际工作态度的偏移
  • 健康的组织应该允许团队和个人追求有趣或有意义的事情,以获得内在的自豪感和动力
  • 开发者应轮流负责处理中断、问题和小 bug,以增加自主性和价值感
  • 有些公司过于关注流程和管理层的评价,导致忽视了用户需求和产品改进
  • 有些开源项目在几乎没有企业式管理的情况下依然非常成功和高效
  • 高效团队的存在并非不可能,一些成功的公司就是例子
  • 成功的公司往往依赖运气和利用他人的工作成果,而非团队的高效协作

Phoenix LiveView 1.0.0 is here #

https://www.phoenixframework.org/blog/phoenix-liveview-1.0-released?release=1.0

Phoenix Framework 的 LiveView 1.0.0 版本已经发布。LiveView 是一个允许开发者创建动态服务器渲染应用程序的框架,目的是为了简化开发过程并提高性能。

LiveView 的创始人 Chris McCord 表示,他最初的目标是创建一个不需要写 JavaScript 的动态服务器渲染应用程序。他认为传统的开发方式太过复杂,需要处理 HTTP 请求、WebSocket 通信、数据序列化等问题。LiveView 的出现就是为了解决这些问题。

LiveView 的基本原理是将应用程序的状态存储在服务器端,当状态发生变化时,服务器重新渲染模板并将更新的 HTML 发送给客户端。客户端只需要更新页面内容,而不需要处理复杂的 JavaScript 逻辑。

LiveView 的优点包括:

  • 简化开发过程:开发者只需要关注服务器端的逻辑,不需要处理客户端的 JavaScript 逻辑。
  • 提高性能:LiveView 的 diffing 引擎可以只发送更新的 HTML 内容,减少网络传输量。
  • 支持实时更新:LiveView 可以支持实时更新,例如实时更新温度计的温度值。

LiveView 的工作原理包括:

  • 将模板分成静态和动态部分。
  • 在编译时,生成一个 Rendered 结构体,包含静态和动态部分。
  • 在运行时,比较前后两个状态的差异,只发送更新的 HTML 内容。
  • 客户端接收到更新的 HTML 内容后,更新页面内容。

总的来说,LiveView 是一个简化开发过程、提高性能的框架,适合用于创建动态服务器渲染应用程序。


HN 热度 715 points | 评论 118 comments | 作者:bcardarella | 1 day ago #

https://news.ycombinator.com/item?id=42312301

  • Phoenix LiveView 1.0.0 发布,提供了一键安装脚本,方便快速上手
  • 安装脚本在 Fedora 系统上遇到问题,建议使用 ASDF 或 mise 安装 Erlang/Elixir
  • Phoenix 和 Elixir 社区友好,注重实用性和快速交付,开发者体验优秀
  • LiveView 为后端开发者提供了构建优雅 Web 应用的自信,无需编写大量 JavaScript
  • 希望看到更多关于乐观 UI 的演示,特别是拖放和实时更新等功能
  • 建议为博客添加 RSS 订阅功能,方便开发者跟进最新动态
  • 希望看到针对大数据集的双向游标无限分页演示,支持软实时更新和状态管理
  • LiveView 在处理大数据集时渲染时间较长,影响用户体验,特别是在慢速连接下

Intel announces Arc B-series “Battlemage” discrete graphics with Linux support #

https://www.phoronix.com/review/intel-arc-b580-battlemage#google_vignette

英特尔宣布了新一代的独立显卡产品线——Battlemage 系列。该系列的显卡将支持 Linux 系统,并且将提供开源驱动程序。Battlemage 系列的显卡采用 Xe2 图形处理技术,相比于上一代的 Alchemist 系列,性能提升了 70%,功耗降低了 50%。

英特尔宣布了两款新的显卡产品:Arc Graphics B580 和 B570。B580 采用 20 个 Xe 核心,2670MHz 的图形时钟,12GB 的 GDDR6 视频内存,功耗为 190 瓦。B570 采用 18 个 Xe 核心,2500MHz 的图形时钟,10GB 的 GDDR6 视频内存,功耗为 150 瓦。

Battlemage 系列的显卡支持 PCIe 4.0 x8 接口,需要一个 8-pin 的 PCI Express 电源连接器。显卡还支持 AV1、HEVC、AVC、VP9 和 XAVC-H 硬件加速,但不支持 VVC。

英特尔宣布,B580 显卡将于下周开始发货,价格为 249 美元以上。B570 显卡将于 1 月 16 日开始发货,价格为 219 美元以上。

本文的作者 Michael Larabel 表示,英特尔已经为 Battlemage 系列的显卡准备好了开源驱动程序,包括 Xe 内核驱动程序、Mesa Iris OpenGL 驱动程序和 ANV Vulkan 驱动程序。这些驱动程序将支持 Linux 6.12 内核和最新的 Mesa 图形驱动程序。


HN 热度 463 points | 评论 677 comments | 作者:rbanffy | 1 day ago #

https://news.ycombinator.com/item?id=42308590

  • 需要等待官方基准测试,但目前看来价格在 200-250 美元的 B 系列显卡表现不错
  • Intel 的 OneAPI 包含许多开发者可以探索的有趣工具,CUDA 到 OneAPI 的迁移工具在大多数情况下很有帮助
  • 1440p 是预算敏感玩家的最佳选择,但 4k 分辨率的显卡和显示器成本仍然较高
  • 4k 显示器在高刷新率下会产生大量热量,需要主动散热
  • 1440p 分辨率对于大多数 PC 游戏玩家来说已经足够,4k 分辨率的显卡和显示器成本高昂且配置复杂
  • 许多玩家仍在使用 1080p 分辨率,4k 分辨率的提升不明显,不值得花费额外的成本
  • 一些 4k 显示器需要使用两个 DP 电缆才能达到 144Hz 刷新率,配置过程中可能会遇到屏幕闪烁等问题
  • 某些情况下,使用更粗的电缆可以解决 4k 分辨率下的屏幕闪烁问题

Amazon Nova #

https://aws.amazon.com/blogs/aws/introducing-amazon-nova-frontier-intelligence-and-industry-leading-price-performance/

AWS(Amazon Web Services)是一个综合性的云计算平台,为个人、企业和政府机构提供各种服务。AWS 的服务包括计算、存储、数据库、分析、机器学习、人工智能、物联网等方面。

AWS 的产品包括 Amazon EC2(虚拟服务器)、Amazon S3(可扩展存储)、Amazon Aurora(高性能关系数据库)、Amazon DynamoDB(完全托管的 NoSQL 数据库)、AWS Lambda(无服务器计算)等。

AWS 还提供了各种解决方案,包括数据分析、人工智能、物联网、安全和合规等方面的解决方案。AWS 的客户包括各行各业的企业和机构,例如金融、医疗、零售、制造等。

AWS 的优势包括高可用性、可扩展性、安全性和成本效益等。AWS 的服务可以帮助企业和机构快速部署应用程序、提高运营效率、降低成本和提高安全性。

AWS 的文档和资源包括 AWS 博客、AWS 训练和认证、AWS 专业服务、AWS 安全保证服务、AWS 支持等。AWS 的社区包括 AWS re:Post(一个社区驱动的 Q&A 网站)和 AWS 论坛等。

AWS 的分析服务包括 Amazon Athena(在 S3 中查询数据)、Amazon CloudSearch(托管搜索服务)、Amazon DataZone(解锁数据跨组织边界的内置治理)、Amazon OpenSearch Service(搜索、可视化和分析大量文本和非结构化数据)等。

AWS 的应用程序集成服务包括 Amazon API Gateway(托管 API)、AWS AppFlow(集成 SaaS 应用程序)、AWS Step Functions(可视化工作流)、AWS X-Ray(分析和调试分布式应用程序)等。

AWS 的人工智能和机器学习服务包括 Amazon SageMaker(构建、训练和部署机器学习模型)、Amazon Rekognition(图像和视频分析)、Amazon Comprehend(自然语言处理)、AWS Lake Formation(构建、管理和保护数据湖)等。

AWS 的安全和合规服务包括 AWS IAM(身份和访问管理)、AWS Cognito(用户身份和访问控制)、AWS Inspector(自动安全评估)、AWS Config(资源配置和合规)等。

AWS 的客户成功案例包括各行各业的企业和机构,例如金融、医疗、零售、制造等。AWS 的客户可以快速部署应用程序、提高运营效率、降低成本和提高安全性。


HN 热度 347 points | 评论 146 comments | 作者:scbenet | 1 day ago #

https://news.ycombinator.com/item?id=42309121

  • 亚马逊在 Anthropic 上重金投资,同时与其竞争
  • 亚马逊提供多种选择以满足不同需求,类似其零售策略
  • AWS 需要一个语言模型来帮助客户选择合适的服务
  • Nova 的价格比 Claude 便宜 1.5 个数量级
  • 亚马逊的产品描述使用了独特的行业术语,导致理解困难
  • 对于企业而言,模型的性能和成本是最重要的,而非参数数量或训练语料库
  • 亚马逊未公布 Nova 的 TPM/RPM 限制,可能是为了先评估需求
  • 亚马逊 Nova 的价格优势明显,但数据敏感性可能影响选择
  • 亚马逊的产品描述中未使用“LLM”、“多模态”或“变压器”等常见术语
  • 基础模型提供商通常不公开模型参数和训练语料库信息
  • 亚马逊的搜索结果优化可能影响用户体验,但增加了广告收入

How to grow professional relationships #

https://tej.as/blog/how-to-grow-professional-relationships-tjs-model

这个网页是一篇关于如何建立和发展专业关系的文章。作者分享了自己在职业生涯中与不同的人建立关系的经历,并提出了一个名为"TJS Collaboration Model"的模型来描述专业关系的七个阶段。

第一个阶段是竞争阶段,在这个阶段,人们通常会表现出排他性和零和思维,认为只有自己才能成功。作者指出,这种思维方式通常会导致人们拒绝与他人合作或分享资源。

第二个阶段是共存阶段,在这个阶段,人们会承认彼此的存在,但保持距离。作者指出,这种情况可能是由于个人、职业或价值观的差异导致的。

第三个阶段是沟通阶段,在这个阶段,人们会开始交流和分享信息,但关系仍然停留在表面。作者指出,这种情况在西方文化中很常见,人们会说"让我们喝杯咖啡吧",但从不真正行动。

第四个阶段是合作阶段,在这个阶段,人们会开始共同完成任务,但仍然是低风险和交易性的。作者指出,这种情况可以通过共同完成任务来建立信任和关系。

第五个阶段是协调阶段,在这个阶段,人们会开始采取行动来支持彼此的目标。作者指出,这种情况需要信任、协调和共同的目标。

作者还提到了其他两个阶段:共享和融合阶段,但没有详细解释。总的来说,这篇文章提供了一个框架来理解和建立专业关系,并鼓励读者通过建立信任和协作来发展自己的职业生涯。


HN 热度 315 points | 评论 163 comments | 作者:Liriel | 15 hours ago #

https://news.ycombinator.com/item?id=42315946

  • 跟进是建立和维护职业关系的关键,能增强双方的信任和对成功的期望
  • 个人关系比公司关系更持久,即使对方职位升高,依然能保持友好互动
  • 网络关系需要通过多次偶然的相遇来建立,否则可能不会主动联系
  • 网络关系不应仅被视为职业发展的任务,而应是认识可能未来有用的人的机会
  • 对于许多人来说,与有助于职业发展的人员建立个人关系可能意味着不真实或隐藏自我
  • 离职时保持良好印象对维护未来职业网络至关重要,避免在离职时做出破坏关系的行为
  • 与人交往需要努力,但这种努力不应感觉像是工作,而是一种真诚的兴趣
  • 关系如同花园,需要持续的、重复的努力来维护,即使只是偶尔的联系也能起到作用

OpenTTD is an open source simulation game based upon Transport Tycoon Deluxe #

https://www.openttd.org/

OpenTTD 是一个开源的模拟游戏,基于 Transport Tycoon Deluxe。最近发布了 14.1 版本,修复了一些 bug 和改进了一些功能。游戏玩家可以下载最新版本并学习如何玩耍。游戏社区也提供了帮助和支持。

游戏的最新新闻包括 14.1 版本的发布,修复了一些 bug 和改进了一些功能。开发团队也发布了 14.0-RC3 版本,修复了一些 bug 和改进了一些功能。游戏社区也讨论了如何让游戏更好地运行。

游戏的特色包括可以下载和安装新的图形包(NewGRFs),可以自定义游戏的外观和感觉。游戏也支持多人游戏,可以与其他玩家一起玩耍。

游戏的开发团队也发布了一些博客文章,讨论游戏的开发过程和未来计划。例如,最近的一篇文章讨论了如何让游戏的时间流逝得更慢或暂停。开发团队也呼吁玩家们提供反馈和建议,帮助改进游戏。

总之,OpenTTD 是一个开源的模拟游戏,具有丰富的功能和活跃的社区。玩家们可以下载最新版本,学习如何玩耍,并参与游戏的开发和讨论。


HN 热度 302 points | 评论 99 comments | 作者:doener | 19 hours ago #

https://news.ycombinator.com/item?id=42314700

  • OpenTTD 的成功在于它能够开箱即玩,而大多数开源游戏重制版需要额外的图形、艺术、声音和音乐资源才能完全可玩
  • OpenTTD 从 2004 年发布,到 2009 年完成了 100% 的图形资源替换,使得游戏不再依赖原版文件
  • OpenTTD 现在有 5 种不同的基础图形包,包括原版 TTD 的图形包
  • OpenTTD 通过在 Steam 和 GOG 上发布,提高了游戏的可访问性和用户体验
  • OpenTTD 的新艺术资源是按照原版游戏的风格和 8bpp 调色板重新绘制的,但不复制任何原版图形,确保了版权的合法性
  • OpenRA 通过提供下载免费版游戏并从中提取资源的方法,解决了版权问题,但这种方式可能违反了免费版游戏的许可协议
  • 原版 Transport Tycoon 的音乐非常出色,即使现在的游戏音乐也很吸引人
  • 一些用户回忆起过去使用 Sim City 3000 的音乐,但认为 TTD 的音乐更让人兴奋
  • 早期游戏的 MIDI 音乐和音效配置非常麻烦,需要不断调整 autoexec.bat 和 config.sys 文件
  • 有人提到使用开源库如 AdPlug 可以实现很好的 OPL3 音效模拟,使得原版音乐可以在 OpenTTD 中播放
  • 有人喜欢原版的 FM 合成音乐,认为这是经典的声音体验

Show HN: My C compiler compiled itself #

https://github.com/keyvank/30cc

30 C Compiler 是一个用 C 语言编写的玩具 C 编译器,足够强大,可以编译自身。这个项目的目标是教育性质的,输出的是 x86-64 汇编代码,虽然代码没有优化,但这并不重要。该项目的主要目的是让人们了解编译器的工作原理。

使用方法:

  1. 首先需要使用 make 命令编译 30cc 编译器,生成的二进制文件存储在 a.out 中。
  2. 然后运行 ./build.py 脚本,该脚本使用 bootstrapped 30cc 编译器编译 30cc 自身,生成的二进制文件存储在 30cc_gcc 中。
  3. 最后,使用 30cc_gcc 编译 30cc 自身,生成的二进制文件存储在 30cc 中。

因此,最后会生成三个二进制文件:a.out(gcc 编译的 30cc)、30cc_gcc(gcc 编译的 30cc 编译 30cc)和 30cc(30cc 编译的 30cc 编译 30cc)。这三个文件应该具有相同的行为。

贡献:

如果您想贡献代码,请运行 python scripts/test.py update 命令更新测试用例,然后检查测试结果。如果您在 Mac 上,请使用 ./scripts/test_mac.sh 脚本运行测试。

关于:

30 C Compiler 是一个开源项目,使用 C 语言编写,主要目的是教育性质的。该项目的作者是 Keyvan Kambakhsh。


HN 热度 251 points | 评论 115 comments | 作者:keyvank | 1 day ago #

https://news.ycombinator.com/item?id=42311031

  • 作者的项目非常酷,值得祝贺
  • 代码中使用 malloc 时应遵循 DRY 原则和不强制类型转换的建议
  • 作者的编译器 30cc 目前不支持这种语法,可能会导致类型检查错误
  • 没有下投票按钮,用户无法进行下投票
  • 公开发布代码意味着作者对语言感兴趣,愿意接受使用建议
  • 冗余的类型转换和括号是风格选择,不应被视为不专业
  • 给出反馈是工程师的职责,无论是外观还是功能
  • 作者的反馈和讨论是有用的,使代码更清晰
  • 冗余的类型转换确实可以隐藏错误,影响代码安全性
  • sizeof 是一元运算符,括号在某些情况下可以省略以提高可读性
  • C++ 中移除 void*T* 的自动转换,导致程序员需要添加类型转换,降低了类型安全性
  • 有经验的工程师可以在短时间内给出有效的反馈,这在某些领域是常见的

#