编程与软件工程github.com编辑精选
Michael Abrash 的图形编程黑皮书
Graphics Programming Black Book by Michael Abrash (2001)
2014 — 2021,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
这是 Michael Abrash 经典著作《图形程序设计黑皮书》(2001) 的电子版整理项目,由网友在圣诞假期从多个质量不佳的电子版本中抓取、清理并重新排版而成。书中内容源自 90 年代在 Dr. Dobb's Journal 等杂志连载的文章,讲述 DOS 时代的图形编程与极致性能优化技巧。
为什么经久不衰:虽然具体技术已过时,但书中对微优化与算法优化的思维方式历久弥新,且它承载着一代程序员对图形编程黄金年代的记忆,反复登上 HN 首页证明了其经典地位。
HN 评论精选
书中关于性能的论述在 20 年后依然完全适用,软件依旧不够快。
「在这个 486 便宜、奔腾飞快的时代,性能还是问题吗?当然是。你用的程序里有多少真的快到让你不想再快一点?我们已经习惯了慢软件——当原本要两分钟的编译链接在 486 上只要十秒,我们就欣喜若狂,而其实我们应该追求的是即时响应。」——20 年后这段话依然百分之百适用,不知该笑还是该哭。
Shish2k查看英文原文
"Is performance still an issue in this era of cheap 486 computers and super-fast Pentium computers? You bet. How many programs that you use really run so fast that you wouldn't be happier if they ran faster? We're so used to slow software that when a compile-and-link sequence that took two minutes on a PC takes just ten seconds on a 486 computer, we're ecstatic—when in truth we should be settling for nothing less than instantaneous response." Not sure if I want to laugh or cry at how 100% relevant this still is 20 years later...
这套连载是作者职业生涯的启蒙,读来令人热血沸腾。
这让我回到 90 年代初,这些文章当时在 Dr. Dobb's Journal 和后来的 PC Techniques 上按月连载。不可思议的是,在比利时安特卫普郊区的一个报刊亭每月都能买到这两本杂志,每到出刊前后我都天天骑车去等。大学教了我很多东西,但没有什么比这个系列更令人兴奋——它最终引领我进入了计算机图形行业。
tverbeure查看英文原文
This takes me back to the early nineties, when these articles where published in monthly installments in Doctor Dobbs Journal and, later, PC Techniques. Incredibly, these 2 magazines were stocked monthly at my local newsstand in a sleepy suburb of Antwerp, Belgium, and every month around publication time, I’d bike there daily to check if the next issue had arrived. I learned a lot of good stuff in college, but I don’t remember anything as exhilarating as this series, which eventually would lead to a career in the computer graphics industry.
本书在微优化与算法优化间的平衡至今仍有学习价值,而当今软件行业恰恰忽视了这些。
这本书太棒了,即使你不太可能再写同样的图形代码,仍能从中学到很多。它在微优化(汇编、数据结构、内存对齐、用精度换速度的数学函数)和算法优化(计算复杂度)之间取得了绝妙的平衡。我在企业软件行业工作,如今算法复杂度常被忽视,面试题常换来一脸茫然,有些本科课程甚至完全不涉及。我觉得很多软件低效到用户体验并不比 20 年前快,Web 应用往往比当年的原生应用还慢。
ben7799查看英文原文
This is such an awesome book. I read this back in the day and loved every minute of it. I think there is a lot to learn from it still, even if you're highly unlikely to be writing the same kind of graphics code. The book has a great balance between: - Micro-optimization - fiddling with ASM and data structures, memory alignment and such, custom math functions that lose precision in tradeoff for great acceleration due to hardware features - Algorithmic optimization - trying to do things in ways that are mathematically faster (computational complexity) I work in enterprise software, not games or anything touching hardware.. it is depressing algorithmic complexity is ignored so often these days and if you give an interview question it is often greeted with blank stares and there seem to be college undergrad curriculums which don't even touch on it. I'm in that camp that feels like software has gotten so inefficient in a lot of cases that the user experience is no faster than 20 years ago. We have acceleration & optimization for certain things but every day applications are no faster than they ever were and when you have to use a web application stuff is often a lot slower than a native app was 10-20 years ago. There are still a lot of great college texts on computational complexity even though trade publications ignore this stuff with a vengeance.
本书的价值在于思维方式而非具体技术,因此永不过时。
你不应该读这本书来学习现代实践,而应该读它来改善思考问题的方式。从这个角度看,这本书是超越时代的。
li4ick查看英文原文
You shouldn't read this book to learn modern practices. You should read it to improve your way of thinking about problems. The book is timeless if you think about it this way.
历次讨论
同类还值得读
开源应用架构
The Architecture of Open Source Applications
《开源软件架构》(AOSA)是一本在线免费书,邀请知名开源项目的作者亲自剖析其内部设计,涵盖 SQLAlchemy、LLVM、Audacity、Apache、Bash 等系统。
编程与软件工程上首页 9 次 · 2011–2024aosabook.org编辑精选编程语言简史:简短、不完整且多半错误
A Brief, Incomplete, and Mostly Wrong History of Programming Languages
一篇以戏谑、故意不准确的方式回顾编程语言史的博客文章,用夸张轶事和讽刺定义串起 Lisp、C、C++、Java、JavaScript、PHP 等语言。
编程与软件工程上首页 8 次 · 2009–2021james-iry.blogspot.comSQLite 是如何测试的
How SQLite is tested
SQLite 官方文档页,系统介绍 SQLite 的测试体系:多种测试方法(TCL 测试、模糊测试、回归测试、静态分析等)和海量测试用例,展示了这个小型开源项目如何靠极致测试获得…
编程与软件工程上首页 8 次 · 2009–2025sqlite.org编辑精选高级编程语言(2009)
Advanced programming languages (2009)
Matt Might 的经典文章,按用途推荐“高级编程语言”:如果追求就业就选主流语言,如果追求表达力、学术研究或创业,则推荐 Haskell、OCaml、Scala 等函数式语…
编程与软件工程上首页 8 次 · 2009–2022matt.might.net我的 Forth 与栈机器经历
Yosefk - My history with Forth & stack machines
作者以亲身经历回顾了使用 Forth 语言和栈式机器的历程:既赞叹其简洁优雅、代码量小、可自举的优点,也坦率指出栈操作在实际编程中的痛苦,以及 Forth 社区文化中的问题。
编程与软件工程上首页 8 次 · 2010–2024yosefk.com编辑精选