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

OK but that's a 500k LOC codebase in javascript/python that nobody understands, maybe the project doesn't even get there

everybody hates their language when they have 100k LOC of tech debt from 8 years ago

You're right that Clojure's sequence soup problem is painful at that scale (really any scale) but have you ever debugged Java? It's barely even possible, the project needs to drive $10M+/yr revenue to just not collapse once it reaches 500k+ LOC Java, 500k XML, 300k SQL ...



> have you ever debugged Java? It's barely even possible

hard disagree ... Java is a dream to debug. I've hacked into complex applications countless times by remote attaching the debugger and setting breakpoints to step through what they are doing. You don't even need source code in many cases. I'd pick Java ahead of any other language on that front.


clojure inherits the exact same debug tooling you describe


except the debugging experience in clojure is much more difficult - try step debugging through a macro.


I don't think it's dream. I believe now most major languages support remote debug like that. My complain about Java debugging is massive use of AOP.


I should have added that I've had similar experiences with (old school, untyped) python codebases - absent the esoteric programmers, which is not a small difference - although with python you tend to hit performance issues if your call stacks get too deep. Ironically the JVM performance lets you dig yourself into a gnarlier pit before you have to face up to it.


Disagree about Java, I've worked on several large Spring applications and making small changes was not a problem at all.


Nope. I have taken over large Java applications with zero documentation and managed to get up to speed maintaining it fairly quickly. The static typing is a huge help.


Java is one of the very few languages out there that is manageable and debuggable at the large scales you're talking about. The tooling around it is second to none, and because it is statically typed with a decent type system, you can refactor quite safely in general.

And let's be frank, XML, other than for Maven (where it can make sense), is not really a thing in modern Java.


> decent type system

I'd call it a bare minimum type system, not "decent"


golang and C would take that spot :-)

Records, pattern matching, string templates, and more to come for Java for which the other two have nothing equivalent.


> The tooling around it is second to none

I feel like you've never looked at C's tooling.

Admittedly, some of it is stuff you just don't need in Java, but things like Valgrind are crazy impressive.


The issues that C faces in terms of memory correctness do not occur in Java. You can use tools like `perf` on a Java program, and I don't see why you couldn't use valgrind for natively compiled Java programs.

For debugging and observability, tell me if C (or any other platform) has anything resembling JFR for the JVM.


> and because it is statically typed with a decent type system, you can refactor quite safely in general.

I wish that would be true. Would make my current job a lot easier.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

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

Search: