3 ms·
There are a lot of people who claim they're more productive in Clojure, in spite of or because of its dynamic typing. I'll just throw my anecdatum out here: I
by blandflakes 8y ago
There are a lot of people who claim they're more productive in Clojure, in spite of or because of its dynamic typing.
I'll just throw my anecdatum out here: I found that dynamic typing was a major pain even on my own personal projects. I also never found REPL-driven development to mesh well with my workflow.
In Scala, for example, entire classes of error that I just shouldn't be able to make don't exist. Maybe I'm just the kind of person who works better with static typing.
Clojure overall is an excellent language with really good features. It just won't get out of my way sometimes.
- xapata 8y agoTry to grok REPL-driven development before dynamic typing. You won't like the latter until you love the former.
- jerf 8y agoHaskell does REPL-driven development fairly well. It's not the best REPL, but it works, especially if you take a moment to learn a few of the commands to drive it. Dynamic types are not necessary for REPL-driven development.
- xapata 8y agoYes, that's why becoming happy with REPL-driven development is more important than becoming happy with dynamic typing. I think much of the productivity boost attributed to dynamic typing is in fact caused by heavy use of a REPL, and not dynamic typing.
- blandflakes 8y agoI'd maybe consider that perhaps becoming happy with REPL-driven development isn't a universal solution. It's not like I didn't understand the concepts, the tools, or the process. I just didn't find that it made me any more proficient at building software.
- xapata 8y agoOf course that's possible, but the evidence suggests that most people become more productive when using the REPL to experiment while developing large projects. One issue with trying to adopt the habit midway through a project is having a design that makes it easy to load small portions of the project with test data into the REPL. It's not quite the same as having code that's easy to test. Do you use an interactive debugger? It's the same principle, but earlier in the lifecycle of development.
- blandflakes 8y agoI appreciate your earnest approach, but I also feel somewhat patronized. I've been doing this for a while. I used Clojure extensively for years, was productive and found much to like. The REPL wasn't part of it, and I don't miss it. I still use Clojure on occasion. This response is pretty common: "You probably weren't doing it right. Trust me, this is the way!" While I agree that suspending beliefs/old practices and trying new things is important when using new technology, I'm also pretty confident that I gave Clojure a more than fair shake, and just find that I don't get much out of the technology surrounding the REPL in that environment. I was more productive in Scala in days than I was after years of using Clojure, and the difference between what I'm saying and your response is that I'm not claiming my experience is universal.
- xapata 8y agoNo condescension meant. It's hard to estimate how experienced someone is from a few sentences in the forum. I'm generally careful to make assertions about most and in general rather than all or universally.
- blandflakes 8y agoNone taken personally - I just find it valuable when I read comments against the grain, and had an experience that I know many Clojurists find atypical and wanted to share that my style of work just doesn't lend itself to Clojure as supported today.
- yogthos 8y agoHaskell REPL is a completely different animal from the one in Clojure, and it's a stretch to say that you can do REPL driven development in Haskell. What people mean by REPL driven development in context of Clojure is that the REPL is running within the context of the application you're developing. The editor is connected to the REPL, and you can modify any part of the application at runtime. You can even connect the editor to a REPL on a remote machine such as a production server and inspect its state from your editor.
- CMCDragonkai 8y agoI do all my Haskell development in a repl driven way. It's even better than Python's repl due to the way it loads modules and allows reloading quickly and automatically checks the type signatures. Having the entire application loaded into your repl is even more powerful. I did it once in PHP using psych and was able to make use of any controller and try parts of it out. The main thing that is necessary is the ability of the REPL to either drive change to the code, or react to changes on file (the former is temporal, the latter is more permanent) and perform the necessary incremental computation to become eventually consistent.
- bribri 8y agoBuilding up complex types in the REPL is hard compared to using a map...
- keymone 8y ago> I also never found REPL-driven development to mesh well with my workflow. > In Scala, for example, entire classes of error that I just shouldn't be able to make don't exist. guess what programming practice allows to almost entirely avoid those classes of error?
- ken 8y agoIt sounds like Clojure was too much "out of your way", and you prefer a language like Scala that gets in your face about possible issues sooner.
- blandflakes 8y agoI can get on board with this phrasing.
- Rapzid 8y agoNever did much clojure outside Riemann "configs" but I found the experience of light table's insta-repl fantastic. Scratch pad type workflows are a fav of mine(linqpad is amazing) and insta-repl blew me away.