Jan Goyvaerts wrote:Recently I've asked this Alex Miller about a typical use case for Clojure. He replied: none. It's for general purpose. Personally, I don't think so. Other people still have to be able to read and maintain it. :-)
I spent the morning putting in a comma and the afternoon removing it.
-- Gustave Flaubert, French realist novelist (1821-1880)
No more Blub for me, thank you, Vicar.
chris webster wrote:And your point about the reduced need for (and availability of) tooling in Clojure compared to Java also implies another subtle shift in common working practices.
Scala, on the other hand, is also an FP language but is far more obviously rooted in Java, which makes the transition from Java to FP with Scala more gradual.
But my impression is that there are still relatively few large scale applications in Clojure, Clojure skills are rare on the market which implies problems with maintainability at least in the short term, and there is a sense that the language and its ecosystem has not yet matured to the point where it makes a realistic alternative right now for businesses with a large investment in existing Java technologies, so I'm not sure how many corporate managers would want to be early adopters for critical applications. FUD is a reality in many workplaces and it's not always entirely groundless.
I spent the morning putting in a comma and the afternoon removing it.
-- Gustave Flaubert, French realist novelist (1821-1880)
Sean Corfield wrote:
chris webster wrote:And your point about the reduced need for (and availability of) tooling in Clojure compared to Java also implies another subtle shift in common working practices.
That's true. The most common workflow for Clojure development tends to be REPL-first, interactively "growing" the application in small pieces, and evolving production code and unit tests out of the expressions developed in the REPL. Groovy, Python, Ruby and Scala all support REPL-driven development but for those languages it's more of an added convenience than a fundamental building block in the development environment.
Scala, on the other hand, is also an FP language but is far more obviously rooted in Java, which makes the transition from Java to FP with Scala more gradual.
Whilst that's true for some teams, it's important to bear in mind that Scala is still primarily an OOP language with mutable data by default and you can write "Java" in Scala without leveraging any of the benefits of functional programming. Your Scala code will be more concise than your Java code but it will still be "the same".
But my impression is that there are still relatively few large scale applications in Clojure, Clojure skills are rare on the market which implies problems with maintainability at least in the short term, and there is a sense that the language and its ecosystem has not yet matured to the point where it makes a realistic alternative right now for businesses with a large investment in existing Java technologies, so I'm not sure how many corporate managers would want to be early adopters for critical applications. FUD is a reality in many workplaces and it's not always entirely groundless.
If a business has "a large investment in existing Java technologies" and hasn't shown much inclination to dramatically improve productivity, it's probably too conservative to adopt Clojure. Scala is trying hard to sell itself to "the enterprise" and, based on discussions I had at JAXconf last year with a lot of "enterprise" Java developers, I don't think those large, conservative organizations are even ready to adopt Scala in a way that brings the real benefits - they'll use it as a "better Java" but still write the same code, just in fewer lines - and they'll run into a skills shortage with Scala too (and, in my opinion, find that junior developers just don't do as well with Scala as more senior, more expensive developers).
There's no doubt that Clojure is very different. Companies that are looking for big productivity gains and are willing to try new technology - and mix different technologies on a single project - are more likely to be successful with Clojure.
Jan Goyvaerts wrote:HOWEVER ... if I were to tell them Clojure will allow me to develop a certain feature much faster, I'm sure they'll let me go for it.
So, is there something that comes to mind ?
I spent the morning putting in a comma and the afternoon removing it.
-- Gustave Flaubert, French realist novelist (1821-1880)
Sean Corfield wrote:
Jan Goyvaerts wrote:HOWEVER ... if I were to tell them Clojure will allow me to develop a certain feature much faster, I'm sure they'll let me go for it.
So, is there something that comes to mind ?
All I can say in response is that Clojure allows my team to build more complex systems faster, in much less code, and we are able to make sweeping changes more easily due to the modular, composable code that you tend to get as a result of a purely functional approach. We're also able to take advantage of multi-core machines much more easily and effectively with Clojure's safe concurrency model - immutability makes concurrency so much easier!
Some of the things we do with Clojure: interact with search engines and various JSON/XML REST services; generate and send about a million HTML emails every day; analyze multi-gigabyte logfiles; interact with MySQL and MongoDB transparently using the same document-based abstraction; and a whole bunch of "regular" programming tasks.
Palak Mathur wrote:For that matter, if they switch to a new language, then they also have to change the way their products interact with Java or go for a different product or develop such a solution on their own.
I spent the morning putting in a comma and the afternoon removing it.
-- Gustave Flaubert, French realist novelist (1821-1880)
Palak Mathur wrote:Your bumber sticker says that you have experience (or interest) in Scala as well. If you were given a choice between Clojure and Scala, which one will you select and why?
I spent the morning putting in a comma and the afternoon removing it.
-- Gustave Flaubert, French realist novelist (1821-1880)
No more Blub for me, thank you, Vicar.
Jan Goyvaerts wrote:Are there engineering applications of Clojure ? My company works about optimization in engineering with lots of maths involved.
Jan Goyvaerts wrote:AHA ! NOW we're getting somewhere. :-)
Does that imply Clojure is more adequate for maths and statistics ? Compared to Java that is. Because *that* is something I can sell to IT managers.
In my branch Fortran is still much appreciated by the academics who're writing algorithms. Would it beat Fortran on the JVM for example ?
Jan Goyvaerts wrote:The development environments of choice are - for me - unusual. A vast majority of character-based ide. To the risk of offending certain people here, don't these tools limit the size of the projects ? (I guess you can tell I never used emacs :-).
I spent the morning putting in a comma and the afternoon removing it.
-- Gustave Flaubert, French realist novelist (1821-1880)
No more Blub for me, thank you, Vicar.
Jan Goyvaerts wrote:Again, I intend no offence.
When I'm talking about "limited" I mean projects with hundreds of classes. An ide and a high-resolution monitor are a necessity in that case; making sure nothing was broken.
I spent the morning putting in a comma and the afternoon removing it.
-- Gustave Flaubert, French realist novelist (1821-1880)
Don't get me started about those stupid light bulbs. |