Earlier quoted context omitted.
Here's at least part of it: https://www.reddit.com/r/programming/comments/dhrcxw/james_g... And a transcript if you don't like video: https://archive.computerhistory.org/resources/access/text/20... The Stallman stuff starts on page 30.
Gosling: Right. I mean, you can't sue a homeless person, right, which is, you know, he-- Yeah, he had sort of weird views on, you know, economic models at the time. Weber: And personal hygiene.
James Gosling: Java, JVM, Emacs, and Computing History [video]
61–67 of 67 posts
Re: James Gosling: Java, JVM, Emacs, and Computing History [video]
#62Earlier quoted context omitted.
Not GP, but there's a type unsoundness bug with the fact that you can assign an array of a subtype to an array of a super type (apologies if my syntax is off; I haven't written Java in a while): class Animal {} class Cat extends Animal {} class Dog extends Animal {} Animal[] cats = new Cat[1]; Animal dog = new Dog(); cats[0] = dog; This will compile fine but throw an error at runtime. The only possible way to avoid r…
Huh, I'm surprised the problem is present. Presumably this is valid? Animal[] a = new Animal[2]; a[0] = new Dog(); a[1] = new Cat(); If you can upcast Cat to Animal, why can Cat[] not be converted to Animal[] in the same way?
If you could make sure the array is read-only (which you can't, in Java), it would make sense to say that "Cat[]" is a subclass of "Animal[]".
The problem happens when you write. "Animal[]" means that you can put any kind of animal (not just Cat) into the array; and this is not true about "Cat[]"; therefore, "Cat[]" shouldn't be a subclass of "Animal[]".
Unfortunately, Java treats "Cat[]" as a subclass of "Animal[]", and then runtime errors can happen when you write to the array. And because of backwards compatibility, this problem is not going to go away.
Later they got it right with generics. "List" is not a subclass of "List". (But both of them are subclasses of "List", which means: a read-only list of Animals.)
Re: James Gosling: Java, JVM, Emacs, and Computing History [video]
#63Earlier quoted context omitted.
RMS is very critical of things and as much as I have great respect for him I cant just take his side without all the facts. I dont even know a single person paying for emacs today either way. Seems like an old beef thats dead as dead can be considering GNU Emacs seems to have won out. Unless you are Walter Bright, you do you sir, you are awesome! I guess same with Linus who uses Micro Emacs if I remember correctly. I…
RMS is a very black and white, tunnel visioned, ideologue: there's no gray. You can ask him his thoughts about a great new general technology and he'll stop you before you describe it and ask how it pertains to open source; if you don't answer exactly in alignment he will immediately dismiss you and shut down the conversation without hearing the question. (edit, I tried this once in person). He's absolutely correct,…
What I really think we're all missing out on is companies pushing more legacy GPU drivers out under an open source license, or opening up a spec for the community to build a correct open source derived driver from at the very least. It's a shame I can have a really irrelevant GPU that would be perfect for a Linux OS (I'm talking ATI level of old) and yet I can't get proper drivers and they wont be releasing any updates but I'm sure the old drivers are probably still functional enough to make my experience on Linux slightly more pleasant.
Engineers need to get paid, and not a lot of people become as successful as quickly with fully open sourced works.
Re: James Gosling: Java, JVM, Emacs, and Computing History [video]
#64Earlier quoted context omitted.
Really? By inventing Java?
Absolutely. Java was the first mainstream language with automatic memory management and garbage collection. You have to remember that before that people were building line of business applications in C or C++. Java made it possible for average engineers to turn out relatively reliable applications, in a fraction of the time it'd have taken them with any other option (apart from Smalltalk but it was already niche by t…
Re: James Gosling: Java, JVM, Emacs, and Computing History [video]
#65Earlier quoted context omitted.
Not GP, but there's a type unsoundness bug with the fact that you can assign an array of a subtype to an array of a super type (apologies if my syntax is off; I haven't written Java in a while): class Animal {} class Cat extends Animal {} class Dog extends Animal {} Animal[] cats = new Cat[1]; Animal dog = new Dog(); cats[0] = dog; This will compile fine but throw an error at runtime. The only possible way to avoid r…
Huh, I'm surprised the problem is present. Presumably this is valid? Animal[] a = new Animal[2]; a[0] = new Dog(); a[1] = new Cat(); If you can upcast Cat to Animal, why can Cat[] not be converted to Animal[] in the same way?
Basically, because it's not type safe (for the reason I gave above). It doesn't really help expressivity to be able to assign a Cat[] to an Animal[], but as you can only use it safely if you only put cats in it, so you might as well just make the variable Cat[] instead of Animal[]. See the section on arrays in this wikipedia article: https://en.wikipedia.org/wiki/Covariance_and_contravariance_...
Re: James Gosling: Java, JVM, Emacs, and Computing History [video]
#66Earlier quoted context omitted.
Really? By inventing Java?
Absolutely. Java was the first mainstream language with automatic memory management and garbage collection. You have to remember that before that people were building line of business applications in C or C++. Java made it possible for average engineers to turn out relatively reliable applications, in a fraction of the time it'd have taken them with any other option (apart from Smalltalk but it was already niche by t…
Wouldn't this be Lisp?
Re: James Gosling: Java, JVM, Emacs, and Computing History [video]
#67Earlier quoted context omitted.
Absolutely. Java was the first mainstream language with automatic memory management and garbage collection. You have to remember that before that people were building line of business applications in C or C++. Java made it possible for average engineers to turn out relatively reliable applications, in a fraction of the time it'd have taken them with any other option (apart from Smalltalk but it was already niche by t…
> Java was the first mainstream language with automatic memory management and garbage collection Wouldn't this be Lisp?