September 08, 2014
On Saturday, 6 September 2014 at 02:24:35 UTC, Mike Parker wrote:
> On 9/6/2014 12:32 AM, Chris wrote:
>
>>
>> "I don't find it  restrictive at all (I actually enjoy it; I also enjoy
>> C). As long as you work within its boundaries and use it as it's meant
>> to be used, it works perfectly well."
>>
>> Isn't this statement a bit contradictory :) It's not restrictive as long
>> as you stay within its boundaries. In D you can stretch the boundaries a
>> bit.
>
> Not contradictory, no. Every language has boundaries and you can stretch them in any language. My point is that when you do so you are then in the wild frontier and are more likely to be frustrated in your efforts.

But in D you have to walk quite a bit to reach the boundaries. In Java they're around every corner. It's like a lunatic asylum where you're allowed to do anything you want, except for going out into the real world.

The most frustrating thing is that programmers have to wait for years to get this or that feature. Then there are weird things like auto-boxing etc. that are down to OOP ideology. If people increasingly use static methods to work around OO, well, then why not get rid of the rigid OOP regime altogether? OO is a pattern that helps to deal with certain problems, not a cure for everything. It should never have become a religion, a belief one would base a whole language on. The hello world program shows how absurd this is, and one absurdity begets another one ...

public class MyClass {

    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }

}

1. Write a class
2. Use a static method to work around OO.
3. Hm. WTF?

> ---
> This email is free from viruses and malware because avast! Antivirus protection is active.
> http://www.avast.com

September 08, 2014
On Monday, 8 September 2014 at 08:50:54 UTC, Chris wrote:
> On Saturday, 6 September 2014 at 02:24:35 UTC, Mike Parker wrote:
>> On 9/6/2014 12:32 AM, Chris wrote:
>>
>>>
>>> "I don't find it  restrictive at all (I actually enjoy it; I also enjoy
>>> C). As long as you work within its boundaries and use it as it's meant
>>> to be used, it works perfectly well."
>>>
>>> Isn't this statement a bit contradictory :) It's not restrictive as long
>>> as you stay within its boundaries. In D you can stretch the boundaries a
>>> bit.
>>
>> Not contradictory, no. Every language has boundaries and you can stretch them in any language. My point is that when you do so you are then in the wild frontier and are more likely to be frustrated in your efforts.
>
> But in D you have to walk quite a bit to reach the boundaries. In Java they're around every corner. It's like a lunatic asylum where you're allowed to do anything you want, except for going out into the real world.
>
> The most frustrating thing is that programmers have to wait for years to get this or that feature. Then there are weird things like auto-boxing etc. that are down to OOP ideology. If people increasingly use static methods to work around OO, well, then why not get rid of the rigid OOP regime altogether? OO is a pattern that helps to deal with certain problems, not a cure for everything. It should never have become a religion, a belief one would base a whole language on. The hello world program shows how absurd this is, and one absurdity begets another one ...
>
> public class MyClass {
>
>     public static void main(String[] args) {
>         System.out.println("Hello, World!");
>     }
>
> }
>
> 1. Write a class
> 2. Use a static method to work around OO.
> 3. Hm. WTF?
>

1. Write a class
2. Use a class method in OO terminology
3. Just like any other pure OOP language (Smalltalk, Eiffel, Sather, ...)

This is not Java specific.

Autoboxing is already present in Lisp and Smalltalk with their type tagging.

--
Paulo
September 08, 2014
On Monday, 8 September 2014 at 14:48:15 UTC, Paulo  Pinto wrote:
> On Monday, 8 September 2014 at 08:50:54 UTC, Chris wrote:
>> On Saturday, 6 September 2014 at 02:24:35 UTC, Mike Parker wrote:
>>> On 9/6/2014 12:32 AM, Chris wrote:
>>>
>>>>
>>>> "I don't find it  restrictive at all (I actually enjoy it; I also enjoy
>>>> C). As long as you work within its boundaries and use it as it's meant
>>>> to be used, it works perfectly well."
>>>>
>>>> Isn't this statement a bit contradictory :) It's not restrictive as long
>>>> as you stay within its boundaries. In D you can stretch the boundaries a
>>>> bit.
>>>
>>> Not contradictory, no. Every language has boundaries and you can stretch them in any language. My point is that when you do so you are then in the wild frontier and are more likely to be frustrated in your efforts.
>>
>> But in D you have to walk quite a bit to reach the boundaries. In Java they're around every corner. It's like a lunatic asylum where you're allowed to do anything you want, except for going out into the real world.
>>
>> The most frustrating thing is that programmers have to wait for years to get this or that feature. Then there are weird things like auto-boxing etc. that are down to OOP ideology. If people increasingly use static methods to work around OO, well, then why not get rid of the rigid OOP regime altogether? OO is a pattern that helps to deal with certain problems, not a cure for everything. It should never have become a religion, a belief one would base a whole language on. The hello world program shows how absurd this is, and one absurdity begets another one ...
>>
>> public class MyClass {
>>
>>    public static void main(String[] args) {
>>        System.out.println("Hello, World!");
>>    }
>>
>> }
>>
>> 1. Write a class
>> 2. Use a static method to work around OO.
>> 3. Hm. WTF?
>>
>
> 1. Write a class
> 2. Use a class method in OO terminology
> 3. Just like any other pure OOP language (Smalltalk, Eiffel, Sather, ...)
>
> This is not Java specific.

Still, it's a bit OTT, isn't it?

> Autoboxing is already present in Lisp and Smalltalk with their type tagging.
>
> --
> Paulo

Yes, and that's what happens, when you build a language on ideology. There's no need for a 100% OO approach.

September 18, 2014
On 06/09/2014 01:50, Paulo Pinto wrote:
> Am 05.09.2014 23:56, schrieb Dicebot:
>> On Friday, 5 September 2014 at 14:18:46 UTC, Paulo  Pinto wrote:
>>> You can write DLLs in Java, for example with
>>> http://www.excelsiorjet.com/.
>>>
>>> The fact that the Java reference implementation is a VM, doesn't tie
>>> the language to a VM.
>>
>> Why pick Java if not for JVM? It is mediocre language at most, very
>> limited and poor feature-wise, lacking expressive power even compared to
>> C++ (you can at least abuse templates in the latter). JVM, however, may
>> be the best VM environment implementation out there and that can be
>> useful.
>
> Enterprise answer:
>
> - lots of libraries to chose from;
> - lots of easy to find (replacable) programmers;
>
> --
> Paulo

Also, superior development-time tools: IDEs, debuggers. (the debugging support could be considered part of the JVM though, depending on how you look at it.)

Also, me and a lot others don't agree Java is a mediocre language. It is basic language, yes. But a lot of good software can be written comfortably with just a basic language.
C++ is more *powerful* than Java, but it doesn't mean its better. I would rather be programming in Java over C++, any time.

-- 
Bruno Medeiros
https://twitter.com/brunodomedeiros
September 18, 2014
On 05/09/2014 14:42, Chris wrote:
> A jar can only be used by another Java program. Making a Java program
> accessible to 3rd party software via a DLL is not so simple, and the JVM
> has to be up and running all the time. Java is cross-platform as long as
> you stay within the safe and cosy Java bubble that floats on top of the
> JVM. But once you step outside of the JVM, gravity kicks in.

Exactly. But the promise of "Write once run everywhere" had always been if you stayed within the confines of Java/JVM. There was never a promise, or implication, that it would cross-platform once you started mixing in with foreign code.

-- 
Bruno Medeiros
https://twitter.com/brunodomedeiros
September 18, 2014
Am 18.09.2014 17:44, schrieb Bruno Medeiros:
> On 06/09/2014 01:50, Paulo Pinto wrote:
>> Am 05.09.2014 23:56, schrieb Dicebot:
>>> On Friday, 5 September 2014 at 14:18:46 UTC, Paulo  Pinto wrote:
>>>> You can write DLLs in Java, for example with
>>>> http://www.excelsiorjet.com/.
>>>>
>>>> The fact that the Java reference implementation is a VM, doesn't tie
>>>> the language to a VM.
>>>
>>> Why pick Java if not for JVM? It is mediocre language at most, very
>>> limited and poor feature-wise, lacking expressive power even compared to
>>> C++ (you can at least abuse templates in the latter). JVM, however, may
>>> be the best VM environment implementation out there and that can be
>>> useful.
>>
>> Enterprise answer:
>>
>> - lots of libraries to chose from;
>> - lots of easy to find (replacable) programmers;
>>
>> --
>> Paulo
>
> Also, superior development-time tools: IDEs, debuggers. (the debugging
> support could be considered part of the JVM though, depending on how you
> look at it.)
>
> Also, me and a lot others don't agree Java is a mediocre language. It is
> basic language, yes. But a lot of good software can be written
> comfortably with just a basic language.
> C++ is more *powerful* than Java, but it doesn't mean its better. I
> would rather be programming in Java over C++, any time.
>

I do like it, started playing with it around 1996 while at the university and our teachers made it right away the language for
distributed systems (remember Jini?), software architecture and compiler
design lectures (JavaCC ruled any day over yacc).

My employer very seldom does C++, mainly JVM and .NET since that is what our enterprise customers ask us to do.

However, thanks to Oracle disregard for the mobile space and the way Google tried to avoid paying for licenses, I am now forced to use C++ for portable native code across devices for hobby coding.

Looking to see if Java One will bring any update on this regard as Oracle's current proposal of JSF on the server side for mobile development is a joke for any native developer.

--
Paulo

September 18, 2014
On Thursday, 18 September 2014 at 15:48:46 UTC, Bruno Medeiros
wrote:
> On 05/09/2014 14:42, Chris wrote:
>> A jar can only be used by another Java program. Making a Java program
>> accessible to 3rd party software via a DLL is not so simple, and the JVM
>> has to be up and running all the time. Java is cross-platform as long as
>> you stay within the safe and cosy Java bubble that floats on top of the
>> JVM. But once you step outside of the JVM, gravity kicks in.
>
> Exactly. But the promise of "Write once run everywhere" had always been if you stayed within the confines of Java/JVM. There was never a promise, or implication, that it would cross-platform once you started mixing in with foreign code.

Write once, debug everywhere is more accurate.

Still prefers coding in java rather than C++ .
September 19, 2014
On Thursday, 18 September 2014 at 15:44:57 UTC, Bruno Medeiros wrote:
> Also, me and a lot others don't agree Java is a mediocre language. It is basic language, yes. But a lot of good software can be written comfortably with just a basic language.
> C++ is more *powerful* than Java, but it doesn't mean its better. I would rather be programming in Java over C++, any time.

I simply can't write any reasonable code when being restricted by language / VM that hard. Simply get stuck every few minutes realizing it is incapable of expressing models I have in mind. Will prefer C++ debugging madness over that 10 times out of 10.
September 19, 2014
On Thursday, 18 September 2014 at 22:24:14 UTC, deadalnix wrote:
> On Thursday, 18 September 2014 at 15:48:46 UTC, Bruno Medeiros
> wrote:
>> On 05/09/2014 14:42, Chris wrote:
>>> A jar can only be used by another Java program. Making a Java program
>>> accessible to 3rd party software via a DLL is not so simple, and the JVM
>>> has to be up and running all the time. Java is cross-platform as long as
>>> you stay within the safe and cosy Java bubble that floats on top of the
>>> JVM. But once you step outside of the JVM, gravity kicks in.
>>
>> Exactly. But the promise of "Write once run everywhere" had always been if you stayed within the confines of Java/JVM. There was never a promise, or implication, that it would cross-platform once you started mixing in with foreign code.
>
> Write once, debug everywhere is more accurate.

That's exactly my experience. It is inevitable that when you write a real program (not some Java tutorial shite) you will have to communicate in some way with the underlying OS. And that's when you have to leave the JVM, which is like entering a jungle full of wild animals after getting up from your cosy middle class armchair.

> Still prefers coding in java rather than C++ .

I jumped from Java and Objective-C to D (well, there were other languages, but none of them would do). And as Dicebot said, the modelling power of D is just amazing. Every time I code and recode I'm surprised at what you can do in D. Java wouldn't allow you to do all those things without numerous hacks. It keeps you in a straight jacket (which is why the industry loves it, nobody steps out of line, well defined rules, no place for mad hackers and other geniuses, keep the salaries low, a dime a dozen, but I degress as usual).
September 23, 2014
On 19/09/2014 12:34, Chris wrote:
> keep the salaries low

HAHAHAHAHAHAHA......
Man, that was so funny, good one, bro!

Java salaries low, lol...

-- 
Bruno Medeiros
https://twitter.com/brunodomedeiros