5 ms·
> The downside of Clojure is that you need good, wise developers... Is there a language that, for a sufficiently large application, you don't need wise develop
by bird_monster 6y ago
> The downside of Clojure is that you need good, wise developers...
Is there a language that, for a sufficiently large application, you don't need wise developers? What is it? How?
- hangonhn 6y agoUntil recently, I would have said Java because it has so many guard rails and good frameworks. But then I've recently encountered bugs caused by code that basically disabled all those guard rails. Had any one of them been left in place, the bug wouldn't have happened. It's kind of amazing how clever some unwise bad engineers can be. There's just no replacement for good, wise engineers.
- bird_monster 6y agoThat's interesting. In my experience, Java is one of the easiest languages to turn the best of intentions into actual unusable code. I personally have never seen or heard about a large Java application being easy to work with or having good guard rails. It all kinda just becomes a big mess. I think that Java might have benefited the most from the industry hellbent on making microservices, in that Java applications are less frequently built as gigantic unmaintainable messes, but instead much smaller more easily digestible messes. I am clearly biased against Java, but having worked with it at several jobs I just don't think it's a good idea.
- deleted 6y ago[deleted]
- The_Colonel 6y agoInteresting but I have the opposite experience. Java is weak in small scope and gets stronger with larger applications as it scales quite well in maintainability. In that sense adoption of microservice has hurt Java since you still need to do a lot of Java ceremony, tomcat + spring boot still starts up slow, you can't leverage superior IDEs to refactor interfaces across services etc. For thin microservices I would probably tend to use something like node.js, for traditional monoliths (IMHO still have their place) with a lot of complex logic I would use Java (or Kotlin, C#).
- wolfadex 6y agoIn my 10 years of paid development, Elm. Because it's the only language of the 13+ I've used in production code where the compiler actually helps you. I've written C, C++, C#, Java, JS ES5+, ActionScript, HTML5 and CSS since IE6, many various compile-toJS languages, many different frameworks and more. Elm is the only language where I can jump into a foreign code base or my own months later and feel confident that I can change something, push to production, and not break things. edit: I've also written Perl and Ruby in production too. edit2: How does it help? When you make a change that isn't valid, like adding a new argument to a function, the compiler can tell you everywhere you need to make a fix and sometimes even suggest how to fix things. Add on top of that the editor tooling in Intellij or with the elm-langauge-server in VSCode and other editors and it's just super smooth. Build times are also crazy fast. There's no waiting for the compiler. The whole notion of "If it compiles, it works" I find to be true 99% of the time.
- kingdomcome50 6y agoAny statically typed language allows for a compiler to detect breaking changes like you describe. That’s the point!
- bird_monster 6y agoIn practice that's very not true. Plenty of room for undefined behavior in statically typed languages like Java, C# etc.
- kingdomcome50 6y agoOf course there is. That's not my point.
- bird_monster 6y ago??? You literally posted that using a statically typed language prevented breaking changes?
- hotcrossbunny 6y agoEven better, think how much quicker you can achieve a sufficiently large application if you can source some really unwise developers?
- _peeley 6y agoGo, according to its creator Rob Pike: "The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt." [1] [1] https://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2014/From-Parallel-to-Concurrent https://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2014/Fr...
- bird_monster 6y agoAs a person that uses Go and is quite fond of the language, I think it's kind of a misnomer to suggest that Go projects will be sane/built well due to the language. I think that Go invested a tremendous amount of time into making their syntax simple and formattable. I don't think that at, say, 10m LoC, a Go project is any more sane or performant than other languages, I just think the syntax and style of every file is probably more consistent. Basically I think that Go makes it easy to open and read almost any file, regardless of what you know about the rest of the project. I think that's great, but I also don't really think that it prevents you from building bad software.
- higerordermap 6y ago> "The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of ivy league, probably learned Java, probably practiced lot of competitive programming. They’re not capable of understanding a brilliant language but we want to use them to churn out some replaceable boilerplate. So, the language that we give them has to be easy for them to understand and easy to adopt." Fixed it for you
- deckard1 6y ago> They’re not capable of understanding a brilliant language Certainly not when they are spending hundreds of hours writing the next great LRU Cache or Bubble Sort so they can pass interviews every other year.