4 ms·
I spent a lot of time thinking about this. What makes Perl or Clojure such fun languages to work with is they don't impose structure on you. You can do whateve
by lmilcin 6y ago
I spent a lot of time thinking about this.
What makes Perl or Clojure such fun languages to work with is they don't impose structure on you. You can do whatever the hell you want.
On the other hand result of this is the code represents basically how you think about the problem. Which would be very different for every person.
Languages with frameworks like Java+Spring, Ruby+Rails etc. are less "fun" to work with because you are not given so much freedom and likely have to fill in a lot of stupid, mundane boilerplate, but are easier to maintain in team setting because developers know more or less what to expect from the code. Very likely developers come with that knowledge and if you know one Spring application you know how to move around almost any Spring application.
- vram22 6y agoIt is the frameworks that give more rigidity and boilerplate, not so much those languages themselves (although Java does have more boilerplate than Ruby). You have a lot of freedom when you program in plain Java and Ruby vs. using frameworks in those languages. And that is at least partly by design. See the Template Method design pattern, which is the basis of frameworks that use Inversion of Control (IoC).
- lmilcin 6y agoClojure frameworks are written by Clojure developers which means they don't give you structure, only tools to realize your freedom. Frameworks that give a lot of structure are beneficial to novice developer because they need that structure. In absence of supervision, the various articles on the Internet, stack exchange answers on how to write a controller or other piece of Java app, give a novice developer necessary guidance on how to structure their code. On the other hand as a more mature, knowledgeable and experience developer you may see that this structure is not perfect. It is repetitive and it has a lot of boilerplate and it does not suit well every application. You may even figure out that every application has their own perfect framework, depending on its size and other characteristics and the problem it is trying to solve. Clojure lets you design that framework and then write the application in perfect framework for your application. That framework might be some zero-code decisions (like decisions on where to put which part of the code) but can also be some set of macros up to full blown DSL. Assuming you are mature developer, you will know how to use these to solve your problem but if you don't then that's where the problem starts.
- didibus 6y agoYes, frameworks are kind of like a smarter programmer starting you off with a code base already, so if you don't really know what you're doing you can't mess it up as much. I've still seen people mess it up, and generally it's when the developers begin to "play" with things they don't understand, like bringing in Aspect J, writing custom annotations, slowly moving logic to configuration files, starting to dynamically load modules in/out. It's a bit of a struggle because an experienced dev will hate the framework, as they know better, but then as less experienced dev work on the code base it'll degenerate in a way the framework would have survived longer due to availability of documentation and Stackoverflow Q/A.
- lmilcin 6y agoThere are two more points. If you are tech lead or manager, these frameworks are really great value because they "give" (or more like let developer find) guidance on a lot of aspects of the application. If you created your own perfect framework, you would be responsible for providing a huge amount of that kind of guidance, but if you are using Spring your every developer can just google the answer to most (or even almost all) of the problems. And the second point is, again, if you are tech lead or manager, these frameworks are great help preventing your "highly intelligent" developers from making a mistake and developing their own framework. I put quotes intentionally, because some developers just think themselves to be very good developers but dismiss the risks and costs of developing software that is not core part of the project (aka NIH). With Spring regulating most aspects of the application any damage from those kinds of actions is also limited.
- kazinator 6y ago> mess it up [...] like bringing in Aspect J And, see? That's from a Lisp guy. QED.
- deleted 6y ago[deleted]
- einpoklum 6y ago> What makes Perl or Clojure such fun languages to work with ... while you're writing a small program by yourself ... > is they don't impose structure on you. You can do whatever the hell you want. You mean, there is nothing _preventing you_ from doing whatever the hell you want. That's not the same thing.