Hacker News new | past | comments | ask | show | jobs | submit login

I find it interesting that as the industry moves closer and closer to smaller, less complex, microservice style codebases, languages are moving in the opposite direction and creating more and more features and complexity designed to help handle large and complex codebases.

It’s almost as if language maintainers are removed from the practical applications that their language.




It’s almost as if microservices are a fad and like all fads will be forgotten when the cool kids jump on the next bandwagon.


Language features generally solve problems users experience in real projects. Sometimes they do a better or worse job (see C++17 variant/visit in contrast), but the goal is virtually always to turn a larger, difficult-to-understand, complex, or error-prone set of statements into a smaller, easier-to-understand, simpler, resilient set of ones.

Complexity that isn’t solved in the language itself inevitably works its way into projects that use it, which is why abstractions and standard libraries exist in the first place.


The main feature I can think of that helps languages with larger codebases is static typing (Python, Typescript). Prior to Python type annotation, at a previous job, someone commented that Python didn't scale not because of performance, but because as you add more and more developers to a complex codebase, the lack of type safety ad growing codebase made safe changes hard.

Over in Java, a lot of the language changes are just syntactic sugar to make Java less verbose. Granted, Jigsaw is an exception, and JVM enhancements are good for everyone.




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

Search: