Pretty fun I guess …
But what to expect? Thing’s didn’t turn out fun with the jdt weaving stuff (The problem in the stacktraces often is about JDT weaving plugin not being able to be loaded) and scala (It’s the scala-juno-nightly).
But I don’t even want to fix this It’s just so fun to see…
Yeah, oops. Software development is hard, that is also true for people building the IDE If only everyone would have exactly the same computer, lets all go back to using Commodore Amiga systems. That stuff just worked.
I’m too young for the second one (But once (after having listened to a podcast where they talked about the C64) I thought about buying a Commodore 64 on ebay…)
Imagine this: I got my Amiga 500 in 1990 I think. Underpowered machine, 8mhz processor and 1mb of internal memory. No harddrive. Developers really had to do some amazing trickery with the flexible hardware to get games to run at a steady framerate on it.
5 years later I could still buy plenty of new games for it, even if there were far newer and faster models available. The machine hadn’t change one single bit in those 5 years.
I saw a similar development cycle on the PS2. Underpowered machine but 7-8 years later you could still play the latest games on it; the devs really went far to pull the best out of that machine which I understand was already difficult to develop for to begin with.
Sorry, OT. Let the rant about the software continue
Mattheus, are you doing game programming Scala or other things? I keep flipping back and forth between doing things in Scala and Java (and wasting a lot of time in the process). If you’ve been using Scala for game dev, how have you found it?
Many eclipse plugins are very unstable. Or maybe it’s eclipse itself that’s unstable. I tried to install the playn plugin several times and always eneded up having to reinstall eclipse. Anyway, Scala is certainly a nicer language than Java no matter what kind of program you are writing.
That totally has nothing to do with eclipse. It’s the fault of the plugins writers.
Hm. Thing is: I am still learning scala.
I am a very special programming person when it comes to the languages I like and know.
Everything started with my brother getting intrested in programming. He started with java. About 4 years later I started programming too.
And I also started with Java too.
The special thing now is: My brother hates java at this point. He is now a non-imperative functional programmer (scheme (with guile), you know, this language with all these ()()()()()).
My brother showed me scheme. I really have to say: It’s a simple language and I really have to say that I like it. It doesn’t even seem to be very slow…
But I kept with java. (I’m still loving OOP (scheme can give you OOP with CLOS… but I still don’t like it (because of non-variable access (which would be instanceOfObject.methodFromThatInstance(), wheras in CLOS it would be a function call to “methodFromThatInstance” with the argument “instanceOfObject”…)))
So now I found Scala. I’m still learning as I said. But there are very much things I like (scala seems to be a functional-extension and improved version to java), for example giving functions as parameters. But I still stay with writing things the “imerative” way. So I don’t recreate a vector each time I add values to my given vector (I’m speaking of mathematical vectors (think of Vector2f…)) and I still use classes much more than anything else.
The bad thing with scala is: It does not have one thing from all the functional programming languages:
Take as an example (a OOP AND functional language) javascript. I learned it within a day. Or about that time (okey. I did not learn scala that itensive, but I’m at scala since already more then a week).
Next example comes from the lisp-corner: scheme. I didn’t learn it within a day. But scheme is simple from the syntax view: a “(” and a closing “)” will make the computer compute what is inside. Then: the first word after the “(” is something describing what the computer has to do (the funciton name) and the rest which come before the “(” is closed by a “)” are the arguments. For example:
(define x 100).
define = define something
define takes a name as the first argument.
and what to assign the value to as the second argument.
Further:
(define x (* 500 500))
(I wont explain this one…)
And in scala you have : Unit = {} and => and <- and ## and () => Unit and all this stuff (I didn’t even get my old beloved for loops !!! and it really seems to be hard if you can’t write a for loop without googling how to do that…)
So scala is really a hard language to learn, but I’m very sure, that scala is a very good language. It combines soooo much features and that from the beginning on. What the people behind Java are doing now, is they are putting everything which is missing in Java into it. (lambdas, …)
So: IMO Scala is awesome (but hard to learn)
Hehe… have fun with this statement in a java forum
guile is a curious choice of scheme to start out with. If you really want a solid scheme dialect with good performance, I’d go with Racket (formerly known as PLT Scheme).
As for scala, I really recommend the book Programming in Scala. Scala’s very much a “multiparadigm” language, so it is always going to look messier than any pure functional language like Haskell.
I know racket… He does know racket…
He started progamming scheme in racket, but has now moved on to guile. Maybe because of the community? maybe because of … I dunno… (maybe it was the awesome C/C++ wrapper generater lib)
I actually don’t want to buy a book… but why not? …
In my opinion mathematical entities (e.g. BigInteger, Vectors, Matrices, etc.) should always be immutable. It makes the code cleaner and less error prone and on the oracle JVM optimization is so good that there is no performance difference. Btw in case you want to say that primitive variables are mutable and you can do calculations with them just fine you should realize that primitive variables actually behave exactly like immutable objects, not like mutable objects, even though that may sound strange at first. e.g. A mutable int behaves like an immutable BigInteger object with it’s reference stored in a mutable variable except for the lower precision of course.
I’d be nice if some scala head would write up an overview (hint hint).
A couple of things I’ve been curious about are type refinement and AOT transformation rules, so can you (for instance) do something like these M-expression pseudo-code:
It don’t believe you can do that with the type system but you may be able to do something like that with the new Scala macro system (I haven’t played with it). I think you could achieve something similar with case classes and guards but I’m not sure off the top of my head how to do it.
matheus23, I’ve used Scala off and on for a year or so, although I don’t take full advantage of some of the more powerful features. For game dev, I was a little concerned about performance seeing as most of its higher level features are implemented by creating additional objects under the hood (although it’s probably not something I should be worrying about until it actually becomes a problem).
I thought about that too. There are languages like Scheme, where they have Garbage Collectors optimized for very much garbage, but little elements of garbage. (so you have like 4 bytes each garbage “package”).
I’m pretty sure it’s not very good (performance wise) to put a functional language on top of the JVM. I really like the Idea at first, but I really think this would need some optimization in the garbage collector.