The Most Powerful JVM Language Available
javacodegeeks.com
javacodegeeks.com
Could you digress?
Gosu is not pure nor particularly minimal: it's rooted in the historical experience of Java software development, for better and for worse. As such, it is more of an Aristotelean language: practical, derived from experience and not particularly concerned with unification.
I enjoy both languages, but I'm an Aristotle guy.
You should really check it out, it's a sexy language. If you know java you'll feel right at home. I've been using it for almost five years and really love it. To me, the syntactic sugar they throw in for common little things are what really make it so nice. It's not overly verbose, enhancements on types can be amazingly powerful if you have no control over over an API, and the ability to use and pass blocks (similar to closures) are something that I hate being without when I am forced to go play in java-land.
https://github.com/jpcamara/Goson
And there is a web framework in progress: http://ronin-web.org/
But, yeah, it's mostly Guidewire.Getting a new language adopted is hard.
Stop dreaming... unless you're a true programmer at heart (or mind, really), there's no way you can learn new languages just like that. My schoolmates, very smart people, have huge problems even learning C++ (without most of pointers, but with inheritance, virtual classes and such), although they all know Matlab and possibly other languages.
Thinking in programming languages is hard, even though it may not seem so to those proficient in many languages. Each new language, Scala and Clojure/Lisp especially, have their own "weird" features and are quite far away from Java/C++.
Becoming a "true programmer" isn't something that you're like born with; it's not like there has ever been a Paul Erdos[1] of programming coming up with novel GC schemes at the tender age of three -- it's a result of the combination of a sincere interest in the process of coding and the pursuit thereof, and the former can and usually does follow from the latter, as long as you are careful to try to move no faster than is natural for yourself and have the patience to continue at such a pace, and if you're like me and you constantly need external stimulation you should find some, but in any case it certainly isn't magic.
[1] -- Erdos, quite famously, could calculate the number of seconds a person had been alive when he was three.
Your friends that struggle with C++ are just begginers, they'll learn over time.
If one is really a programmer, it's not the language he has to learn, it's concept that can be easily applied to different languages. And the chance is that those concepts are not that distinct or unique, and that you already know some of them.
Functional programming, STM, macros, ... nothing new, just 20+ years old repackaged concepts in a new wrapper package (language) and a new API.
That being said, go learn either Scala or Clojure. After that, learning the other one will be much easier.
And when I have a -use- for a language, I learn it on the spot. Learning the basics is stupidly easy once you know 3-4 languages, and learning the quirks comes with time for any language.
True, I can't really speak from experience, as I've learnt to code by myself, from a young age, I wasn't forced or urged to do it, so I have no idea what happens with people that have to learn to program as part of their education/job. However, the professor that was teaching us, who has apparently worked in the industry as well, seemed... limited - mentally - thinking inside the box. That, or he was a very good teacher, taking it very slowly, and boring the hell out of me.
Only paradigm shifts are really difficult. From imperative to functional. From functional to reactive etc. But these are also the more worthwhile experiences, because they broaden your possibilities as programmer.
Yes, I belong to the school which believes everyone should have learnt Lisp/Scheme in school in that introductory module to CS, ala, the MIT belief. :)
Two years ago I found Haskell. It was difficult to learn, until I realized in Haskell you are just doing mathematics. In functional languages a function is a mathematical function. You can actually reason about code and even prove your code. This is extremely cool (from my point of view).
I purchased some books on lambda calculus, logic, category theory and did the SICP thing. Now functional programming feels more natural to me. I used it as day to day tool.
The real 'difficulty' in programming comes from learning the domain that you are working in well enough to express it to the idiot computer.
That said, I find expressing myself easier in languages that are less of a PITA.