Skip to content

Commit 8e36144

Browse files
committed
feat: notes on "1B lines of code"
1 parent 6c5d485 commit 8e36144

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

content/notes/misc/_index.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
title: Miscellaneous
3+
---
4+
5+
<!-- TODO: https://gregoryszorc.com/blog/2021/04/07/modern-ci-is-too-complex-and-misdirected/ -->
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
link: https://cacm.acm.org/research/a-few-billion-lines-of-code-later/
3+
title: "A Few Billion Lines of Code Later: Using Static Analysis to Find Bugs in the Real World"
4+
date: 2010-02-01
5+
tags:
6+
- devtools
7+
- parsing
8+
- ci
9+
---
10+
11+
This article is an unflinching look at the realities of corporate software development as of 2010.
12+
13+
> Law: You can’t check code you can’t parse. Checking code deeply requires understanding the code’s semantics. The most basic requirement is that you parse it. **Parsing is considered a solved problem. Unfortunately, this view is naïve, rooted in the widely believed myth that programming languages exist.**
14+
>
15+
> The C language does not exist; neither does Java, C++, and C#. While a language may exist as an abstract idea, and even have a pile of paper (a standard) purporting to define it, a standard is not a compiler. **What language do people write code in? The character strings accepted by their compiler.** Further, they equate compilation with certification. A file their compiler does not reject has been certified as "C code" no matter how blatantly illegal its contents may be to a language scholar. Fed this illegal not-C code, a tool’s C front-end will reject it. This problem is the tool’s problem.
16+
17+
> Further, explaining errors is often more difficult than finding them. A misunderstood explanation means the error is ignored or, worse, transmuted into a false positive. The heuristic we follow: Whenever a checker calls a complicated analysis subroutine, we have to explain what that routine did to the user, and the user will then have to (correctly) manually replicate that tricky thing in his/her head.

0 commit comments

Comments
 (0)