Forgot your password?
typodupeerror

Comment: Re:*sigh* (Score 1) 187

by mikera (#43893115) Attached to: Opposition Mounts To Oracle's Attempt To Copyright Java APIs

You may or may not like Java, but the JVM is an awesome platform.

IMHO the best strategy right now for people with Java legacy code is to adopt one of the new JVM languages: Scala, Clojure, JRuby, Groovy being the most prominent choices. You can use a great modern language, but keep all the advantages of the JVM (excellent garbage collection, excellent JIT compiler, huge open source library ecosystem, portability etc.)

C/C++ is cool for systems programming or for stuff where you have genuine realtime requirements: but it's a backward step for general purpose application development (i.e. 95%+ of development work). Proper garbage collection, managed runtime safety, JIT compilation, strong concurrency support, portability of compiled bytecode etc. are far more valuable in modern application development than the ability to write optimised low level native code.

Comment: Re:Richard Stallman is a shitheel (Score 4, Interesting) 815

by mikera (#43090933) Attached to: Gnome Founder Miguel de Icaza Moves To Mac

Mono is the best managed code environment outside of the JVM, and arguably better in many respects. Are you saying that Linux should not support any form of VM? Maybe you'll write us an alternative. Yeah, right.

Technically, Mono is great. Unfortunately, Miguel completely failed to establish it as a Linux standard by antagonizing much of the Linux community and failing to assuage licensing and patent concerns. Frankly, as an early Mono adopter and supporter, I feel let down by him. Let him be happy with his Mac; I won't miss him.

Mono was also a *massive* strategic blunder: it would have been far more sensible if Miguel had built an open source clone of the JVM instead for his Linux GUI efforts:

  • The JVM/Java ecosystem is exactly what Linux needed to have a chance on the desktop. It's a huge ecosystem of ready made libraries and tools, most of which are open source. Why reinvent the wheel?
  • The JVM was and still is the best way to ensure *binaries* work across platforms. And incompatible binaries is what makes Linux a nightmare on the desktop, since most regular users lack the interest or ability to compile/configure their own binaries. .Net, by contrast, is full of Microsoft lock-in features.
  • It would have required much less convincing to persuade people to adopt it. Java was already a massive ecosystem and a safe bet.
  • It would have given Linux a real chance on the enterprise desktop, since enterprises like the idea of Java and have lots of Java developers to write apps
  • It would have avoided all the arguments / fighting / FUD about "getting into bed with Microsoft" in the open source community
  • It would have avoided giving Microsoft a huge PR win.
  • It might have persuaded Sun to open source Java earlier, which would have been a massive win (the cloning effort would have served its purpose if this happened, future work could be merged into the OpenJDK)

My observation at the time was that Miguel seemed to be over-excited by the (nice but superficial) language features he saw in C#, and completely forgot that the real value is in the *platform*.

Comment: Re:Clojure (Score 1) 530

by mikera (#39918043) Attached to: Ask Slashdot: What Language Should a Former Coder Dig Into?

Clojure performance isn't bad at all - in fact it's one of the fastest dynamic languages around.

Examples from alioth benchmarks (x64 Ubuntu : Intel® Q6600® quad-core, 8th May 2012, median performance relative to fastest benchmark program, 1.0=fastest):

1.00 Fortran Intel
1.21 C GNU gcc
1.89 Java -7 server
2.73 Scala
2.80 Haskell GHC
2.85 Go
4.10 Clojure
6.86 Racket (Scheme)
10.71 Erlang HiPE
53.06 Python 3
57.62 Ruby 1.9
103.29 Perl

As you can see, Clojure is pretty well positioned in the overall performance charts. It's pretty close to Haskell, Go and Scala, and way ahead of most of the other popular dynamic langauges.

On the practicality point, it's also worth noting that since both Scala and Clojure can use Java libraries directly, they have much better library availability than Erlang, Go or Haskell.

Comment: Re:Clojure (Score 1) 530

by mikera (#39917943) Attached to: Ask Slashdot: What Language Should a Former Coder Dig Into?

Clojure has the following features, which together make it pretty cutting edge:

- Native access to all the Java library ecosystem - so you start with a huge available set of libraries, more so than most other langauges. This makes Clojure very practical for actually getting stuff done......
- Probably the most novel implementation of Software Transactional Memory in any language - see http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey
- All the benefits of running on the JVM (cutting edge garbage collection and JIT compilation in particular)
- It's a homoiconic langauge - "code is data". This makes it extremely powerful for metaprogramming, DSLs and code generation. see also: http://www.paulgraham.com/avg.html
- It's one of the fastest dynamic langauges around (about 10-20x faster than Ruby, Python, PHP, Perl, within a 2-5x factor of the fastest compiled languages according to Alioth benchmarks)
- It has an interactive REPL-based development environment, great for live coding and prototyping - see e.g. http://vimeo.com/22798433
- It is much more of a functional programming language than most Lisps (you can see quite a lot of inspiration from Haskell)
- It has modernised the traditional Lisp syntax - for example {} is used for maps, [] for vectors as well as the traditional () for lists

Clojure is certainly one of the most interesting languages around at the moment - I'd strongly recommend it to anyone looking to broaden their horizons!

Comment: Re:When I think of a quick GUI project, C#. (Score 3, Interesting) 278

by mikera (#39106651) Attached to: Best Language For Experimental GUI Demo Projects?

Visual Studio with C# isn't very useful great for cross-platform development (which was one of the requirements of the OP)

Also I personally find that "visual" editors, while good for producing something quickly, aren't much use for more advanced GUI development where you need to do much more meta-programming, develop custom components and have detailed control over layouts and behaviour etc.

Even when I was using Visual Studio a lot (which I'm glad to have left behind), I tended to code all the GUI stuff by hand.

Comment: Some ideas (Score 4, Insightful) 278

by mikera (#39106473) Attached to: Best Language For Experimental GUI Demo Projects?

1. Processing (http://http://processing.org/) is great for visualizations, worth a look. It's used a lot for interactive visualisation tools

2. Clojure is a great option for general purpose prototyping. It has the advantage of being able to use all the Java libraries and tools, but on top of that is an excellent modern dynamic programming language with great code-generation capabilities. It's great for creating DSLs, for example there is a Clojure GUI library called seesaw that defines UIs like this:

(frame :title "Hello", :content "Hello, Seesaw", :on-close :exit)

Comment: Re:What is so unfair about "fair?" (Score 5, Informative) 219

by mikera (#39105989) Attached to: European Parliament To Exclude Free Software With FRAND

Any form of licensing for standards is incompatible with open source software. When you distribute open source you need to distribute it will all the rights otherwise the burden on the recipient (often an individual rather than a company) to acquire such licenses is excessive and unreasonable. How many people would use Open Office for example if they had to separately go and buy a set of complex FRAND licenses with every download?

Making distributors of open source responsible for acquiring the licenses won't work either, because they can't control downstream copies (the very nature of open source) and you place a major hurdle in the way of individuals or small companies becoming distributors themselves (which is the spirit of open source).

Basically, FRAND is a nightmare for open source. Of course traditional software companies love it because it means that they get to benefit from reduced competition, but you can kiss goodbye to most of your innovation and the end result will be customers paying more for worse software.

In my view the only acceptable open standard is one that is unencumbered by *any* licensing requirements. Standards organisations either need to get with the 21st century on this one or be (rightfully) ignored.

In every non-trivial program there is at least one bug.

Working...