Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> In 2019 Aprial, there is 180M lines of BCL, while C++/Java sits at ~300M.

It's... not obvious to me that that's a good thing? The ratio of configuration code to code in the things being configured being that close makes me think that BCL is something that's ill-suited to what it's now being asked to do but there's too much of it to realistically replace.

Maybe it's amazing and the problem it's solving is so complicated that even a language designed very well for solving that problem leaves you needing a lot of it, but I don't really consider "a staggeringly large amount of code has been written in this language" to necessarily be an endorsement of that language's quality. Citing Google's 300M lines of Java would also be a silly reason to pick Java in a project where you'll never interact with the Google ecosystem.



It's the configuration complexity clock again. https://mikehadlow.blogspot.com/2012/05/configuration-comple...


This is a really good mental image of what happens - thank you for sharing it.


The number of lines of BCL at Google says little-to-nothing about the efficacy of the language itself, it's more of a reflection of the complexity and scale of the _systems_ its used to configure.


BCL is great, it's just lived out by its longevity.

But the point is that this large scale application offered the space for exploring the space of configuration as code, infra as code, and many relevant technical problem space for designing and deploying configuration.


It's it a good language? Unknown.

Can it be used to successfully build and maintain configuration at extremely large volume and complexity scales? Yes.

Also we're not talking about using this language, but its spiritual successor.


> It's it a good language? Unknown.

I have personally written several thousand lines GCL (the generic version of BCL used at Google) and I can say that it can be pretty frustrating.

The difficulty and complexity of defining configurations using it really depends on the system you are configuring since you are (generally) just defining a set of static fields that are packaged into a protobuf and fed into whatever system you are working with.

Outside of syntax issues, it's up to the system you are configuring to provide concise config semantics and helpful error messages




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: