Learning Clojure Made Easy
clojurecademy.com
clojurecademy.com
You are right! I'm also considering to add Clojurescript feature to Clojurecademy(it does not have at the moment) and this would be very useful for browser development audience like you said.
I do love cljs though, since it can run on mobile, node (including aws lambda), browser etc.
I typed (+ 3 3 3) and lo and behold...
> 2. instruction failed.
> Apparently you did not copy and paste properly.Please check copy paste order.
What on Earth? Please don't make programmers feel like copy & paste monkeys - many other sites are doing this it already.
When I was a kid, I learned basic Unix commands using 'learn', a tutorial program that worked like this: you were presented a menu of concepts to learn from which you chose one. The program would then give you a textual overview of the concept and any associated commands; then, to test your knowledge, it would give you a goal (say, move a specified file into a specified directory, or edit a file) and drop you into a fake shell prompt.
The fake shell worked just like the real shell in most every way. You could mess around, delete files, destroy stuff, etc. When you thought you had finished the lesson you could type a command (I believe it was 'ready'), and the tutorial would then exit the fake shell and assess your progress. If you did not meet the goal, or you seriously messed up the fake environment, you would not pass the lesson but you could opt to be dropped into the fake shell, restored to the exact same state as when you first saw it, and try the lesson again.
Rapping newcomers on the knuckles for exploring is not how you win them over. Give them directed goals to accomplish, sure, but also give them a safe environment where it's practically impossible to seriously mess things up while exploring, so that they can satisfy that "what does this button do?" urge as they hunt for the solution.
There is a time and a place for exploration and the first step of a tutorial is not that time or place. It is the time for following directions, otherwise the rest of the tutorial will not work and you will be frustrated.
This is a tutorial, not a playground. Here's what you're looking for: https://repl.it/languages/clojure
Just curious if anyone can add some perspective.
Also Clojure is dynamic to an extreme (like most lisps), which can make complex programs rather easy and short to write, which might be appropriate for some use cases. I do a lot of data munging, and I've tried many languages for it (Python, Scala, R, Java, Groovy, JS, Clojure), and Clojure is by far my favorite for clarity, simplicity, and speed. And because the REPL toolchain (CIDER/Cursive) is head and shoulders above the rest (except maybe iPython).
Thanks for the response.
From a learning standpoint: Clojure and other functional languages are worth using because they make you approach problems differently, and in doing so you become a better programmer.
Source: used Clojure in production building a real product for ~3 years
Also, remember that when java devs were tired of suffering bloat, they invented gui designers to hide it. Now you have two problems.
If you stick with procedural programming (and it's perfectly fine to do so), then it's true that most languages will not offer you much that Python and C cannot. If you're willing to re-think how you model the problems you're solving, you may find other languages, such as Clojure, help immensely.
What I find makes Clojure so much fun is the REPL, and the metaprogramming. There's always something new to learn, and experimenting and trying things is quick and painless.
It helps that the language is full featured, comes with batteries included, has a very smart cohesive design across the board, with minimal quirks, and an inviting community.
Its also pretty powerful, supporting everything the JVM gives you, and everything JavaScript gives you. So you can write desktop apps, backend services, multi-core processing, big data distributed jobs, CLI tools, web apps, mobile apps, scripts, etc. There's even apparently a subset that can do systems programming: https://ferret-lang.org/ , though its unofficial.
So, I understand you one hundred percent, all languages can do most things, and the benefits of one over the other are often exaggerated, my reason, and I think the only good reason to switch to Clojure is if you've gotten bored, and need to revive your flame, switch to Clojure and have more fun!