August 25, 2014
Am Sat, 12 Jul 2014 11:38:08 +0100
schrieb Russel Winder via Digitalmars-d
<digitalmars-d@puremagic.com>:

> > That's not to say that Java, the language, (as opposed to the class library or the marketing hype) isn't a pretty good language. In fact, it's quite a beautiful language -- in the idealistic, ivory tower, detached-from-real-life sense of being a perfect specimen suitable for a museum piece. Its disconnect from the messy real world, unfortunately, makes it rather painful to use in real-life. Well, except with the help of automated tools like IDEs and what-not, which makes one wonder, if we need a machine to help us communicate with a machine, why not just write assembly language instead? But I digress. :-P
> 
> Now this is mis-direction. Java is a real-world language in that it is used in the real world. Whilst there are many using Java because they know no better, many are using it out of choice. Java evolves with the needs of the users prepared to get involved in evolving the language.

Yes, Java is verbose, but its modularity makes it very
flexible. The classic example is how you read lines of text
from a file. Instead of a special class for that, you take
use simple primitives with descriptive names and assemble
something that reads lines of UTF-8 text from a buffer that
has a file as its input. It actually acknowledges quite a bit
of real-world mess when you look at it, for example different
encodings on stdin and stdout.
Conventions like beans, where every property is implemented as
a pair of getter/setter or naming rules like ...Adapter,
...Comparator make it easy to reflect on unknown code.
On the one hand it is limiting to only have Java OOP in the
toolbox, on the other hand it is cheap to train someone on
Java and Java libraries and actually not a horror to try and
make sense of other people's code, because it wont be
implemented in any of 5 different paradigms + s.o.'s personal
naming conventions.
I've never been a fan of developing in vi or emacs and as far
as I am concerned, a programming language need not be designed
like a human language. There are many graphical programming
environments as well, for example for physics.
The simpler the language the more robust the refactoring tools
can become. The more conventions are in use, the better custom
tailored tools and IDEs can emerge. I.e. in Eclipse you only
type the capital letters of a long class name and have the
auto-completion figure out which class in scope or available
import paths matches these "initials". Heck, it even fills in
the parameters when you call a method using the available
variables in scope. If you were unaware that you need a third
argument, the IDE can generate a new variable with a name
based on the method parameter or place a constructor call for
the required type.
Sometimes you can just focus on the program logic and have the
IDE generate most of the code. Delphi's and C# IDEs similarly
expose properties of GUI objects in tables and generate the
code for event handlers on double-clicks. It saves time, you
cannot misspell anything... I like it.

-- 
Marco


August 25, 2014
On Thursday, 21 August 2014 at 10:06:25 UTC, Iain Buclaw via Digitalmars-d wrote:
> On 12 Jul 2014 16:03, "Iain Buclaw" <ibuclaw@gdcproject.org> wrote:
>>
>> On 12 July 2014 15:53, Russel Winder via Digitalmars-d
>> <digitalmars-d@puremagic.com> wrote:
>> > On Sat, 2014-07-12 at 15:37 +0100, Iain Buclaw via Digitalmars-d wrote:
>> > […]
>> >> I live literally 400 yards away from the burnt down west pier.  Its a
>> >> beautiful sight in the morning, come sun, rain, or fog.  I hear they
>> >> are building a 100 metre high elevator-to-nowhere in its place.  Sad
>> >> times...
>> >
>> > We lived for a while in Little Western Street. Even then the West Pier
>> > was crumbling and was closed a short while after we wandered up and down
>> > it one afternoon in glorious (very un-English) sun.
>> >
>> > […]
>> >>
>> >> I can give you my details, and can see where things go from there.
>> >
>> > Is evening meetings in London something you might be up for?
>> >
>> > Depending on who is involved and what constitutes the "centre of mass",
>> > there is always the option of meeting in a pub in Clapham Junction –
>> > saves the extra haul across Central London.
>> >
>>
>> That sounds like at least the beginnings of a plan to me.  My only way
>> of getting around would be train due to lack of a car, or license.
>
> Hey Russel,
>
> Have you got anywhere with planning this?  I'd be happy to help out with
> anything.
>
> Iain.

Is this the beginnings of a London based DConf?
(Note: That'd be great!)
August 25, 2014
On Monday, 25 August 2014 at 07:47:45 UTC, Marco Leise wrote:
> Am Sat, 12 Jul 2014 11:38:08 +0100
> schrieb Russel Winder via Digitalmars-d
> <digitalmars-d@puremagic.com>:
>
>> > That's not to say that Java, the language, (as opposed to the class
>> > library or the marketing hype) isn't a pretty good language. In fact,
>> > it's quite a beautiful language -- in the idealistic, ivory tower,
>> > detached-from-real-life sense of being a perfect specimen suitable for a
>> > museum piece. Its disconnect from the messy real world, unfortunately,
>> > makes it rather painful to use in real-life. Well, except with the help
>> > of automated tools like IDEs and what-not, which makes one wonder, if we
>> > need a machine to help us communicate with a machine, why not just write
>> > assembly language instead? But I digress. :-P
>> 
>> Now this is mis-direction. Java is a real-world language in that it is
>> used in the real world. Whilst there are many using Java because they
>> know no better, many are using it out of choice. Java evolves with the
>> needs of the users prepared to get involved in evolving the language.
>
> Yes, Java is verbose, but its modularity makes it very
> flexible. The classic example is how you read lines of text
> from a file. Instead of a special class for that, you take
> use simple primitives with descriptive names and assemble
> something that reads lines of UTF-8 text from a buffer that
> has a file as its input. It actually acknowledges quite a bit
> of real-world mess when you look at it, for example different
> encodings on stdin and stdout.
> Conventions like beans, where every property is implemented as
> a pair of getter/setter or naming rules like ...Adapter,
> ...Comparator make it easy to reflect on unknown code.
> On the one hand it is limiting to only have Java OOP in the
> toolbox, on the other hand it is cheap to train someone on
> Java and Java libraries and actually not a horror to try and
> make sense of other people's code, because it wont be
> implemented in any of 5 different paradigms + s.o.'s personal
> naming conventions.
> I've never been a fan of developing in vi or emacs and as far
> as I am concerned, a programming language need not be designed
> like a human language. There are many graphical programming
> environments as well, for example for physics.
> The simpler the language the more robust the refactoring tools
> can become. The more conventions are in use, the better custom
> tailored tools and IDEs can emerge. I.e. in Eclipse you only
> type the capital letters of a long class name and have the
> auto-completion figure out which class in scope or available
> import paths matches these "initials". Heck, it even fills in
> the parameters when you call a method using the available
> variables in scope. If you were unaware that you need a third
> argument, the IDE can generate a new variable with a name
> based on the method parameter or place a constructor call for
> the required type.
> Sometimes you can just focus on the program logic and have the
> IDE generate most of the code. Delphi's and C# IDEs similarly
> expose properties of GUI objects in tables and generate the
> code for event handlers on double-clicks. It saves time, you
> cannot misspell anything... I like it.

The main thing that put me off Java was not so much the fact that you're restricted to OOP and that it's verbose etc., but that it caused all sorts of problems when shipping the actual programs. "Write once run everywhere" is a myth, if you ask me. D is much closer to that than Java. In the end we encountered so many problems that I dumped Java for cross platform development (and for development in general). Nobody in the Java world ever talks about this, but cross platform doesn't really work (apart from running simple programs).

But the points you made about IDE's and naming conventions etc. are good points insofar as they explain why Java was embraced by the industry. It's a bit of a no-brainer, people just have to follow the same well trodden path, which in turn enables companies to train people fast (= cheap) and to hire loads of intermediate (and in some cases mediocre) programmers whom they pay less, of course.
August 25, 2014
On Mon, 2014-08-25 at 09:01 +0000, Chris via Digitalmars-d wrote: […]
> The main thing that put me off Java was not so much the fact that you're restricted to OOP and that it's verbose etc., but that it caused all sorts of problems when shipping the actual programs. "Write once run everywhere" is a myth, if you ask me. D is much closer to that than Java. In the end we encountered so many problems that I dumped Java for cross platform development (and for development in general). Nobody in the Java world ever talks about this, but cross platform doesn't really work (apart from running simple programs).
[…]

Java is not really an object-oriented programming language. OK it has classes, inheritance, and method calls, but it is not founded on message passing. For example:

	a + b

is not a message in Java as it is in C++, Python, etc.

Write Once Run Anywhere (WORA) has been a known fallacy since about 1995 ;-) Versions of things really are a bit of a dependency/configuration nightmare. Maven Central and Gradle help somewhat for the JVM, but then there is the shared library nightmare for all other platforms.

-- 
Russel. ============================================================================= Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder@ekiga.net 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@winder.org.uk London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


August 25, 2014
On Mon, 2014-08-25 at 09:55 +0200, Marco Leise via Digitalmars-d wrote: […]
> Yes, Java is verbose, but its modularity makes it very flexible. The classic example is how you read lines of text from a file. Instead of a special class for that, you take use simple primitives with descriptive names and assemble something that reads lines of UTF-8 text from a buffer that has a file as its input. It actually acknowledges quite a bit of real-world mess when you look at it, for example different encodings on stdin and stdout.

Groovy makes it even easier. I avoid using Java if I can use Groovy, which is about 100% of the time now with @CompileStatic.

> Conventions like beans, where every property is implemented as a pair of getter/setter or naming rules like ...Adapter,

The Bean Protocol is about the worst offence committed by the Java Platform. It destroys encapsulation and any thought of object-oriented programming.

> ...Comparator make it easy to reflect on unknown code.

Java reflection is really a bit of a mess. Another reason for using Groovy it makes working with the JVM reflection system much easier.

> On the one hand it is limiting to only have Java OOP in the toolbox, on the other hand it is cheap to train someone on Java and Java libraries and actually not a horror to try and make sense of other people's code, because it wont be implemented in any of 5 different paradigms + s.o.'s personal naming conventions.

Java "OOP" isn't really OOP.

> I've never been a fan of developing in vi or emacs and as far as I am concerned, a programming language need not be designed like a human language. There are many graphical programming environments as well, for example for physics.

Emacs is the One True Editor, not using it is clearly a declaration of war :-)

> The simpler the language the more robust the refactoring tools
> can become. The more conventions are in use, the better custom
> tailored tools and IDEs can emerge. I.e. in Eclipse you only
> type the capital letters of a long class name and have the
> auto-completion figure out which class in scope or available
> import paths matches these "initials". Heck, it even fills in
> the parameters when you call a method using the available
> variables in scope. If you were unaware that you need a third
> argument, the IDE can generate a new variable with a name
> based on the method parameter or place a constructor call for
> the required type.
> Sometimes you can just focus on the program logic and have the
> IDE generate most of the code. Delphi's and C# IDEs similarly
> expose properties of GUI objects in tables and generate the
> code for event handlers on double-clicks. It saves time, you
> cannot misspell anything... I like it.

I switch between Emacs, Vi, Eclipse, IntelliJ IDEA, PyCharm, Wing IDE, depending on programming language and activity. None of the tools work for all situations. It would be nice if they did, but there is always something wrong for a given activity.

IDE popups can be a useful tool, the problem with over-reliance, particularly for the weaker programmers is that they create code they do not understand. In the Eclipse/Java context, I see far too much in the way of "form filling of template" type programming by people who are working under the impression that because they are using a template nothing can go wrong.

-- 
Russel. ============================================================================= Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder@ekiga.net 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@winder.org.uk London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


August 25, 2014
On Mon, 2014-08-25 at 08:40 +0000, Colin via Digitalmars-d wrote: […]
> 
> Is this the beginnings of a London based DConf?
> (Note: That'd be great!)

Whilst it would be good for DConf to come to London for 2015 (*) this
was about having a London D User Group meeting, hopefully on a regular
basis (**).


(*) I am sure we could get Skills Matter to run it.

(**) Skills Matter would definitely host this for us.

-- 
Russel. ============================================================================= Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder@ekiga.net 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@winder.org.uk London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


August 25, 2014
On 08/25/2014 12:53 PM, Russel Winder via Digitalmars-d wrote:
> For example:
>
> 	a + b
>
> is not a message in Java as it is in C++,  ...

error: member reference base type 'int' is not a structure or union
int main(){ (1).operator+(2); }
            ~~~^~~~~~~~~

August 25, 2014
On 25.08.2014 10:55, Marco Leise wrote:
> Am Sat, 12 Jul 2014 11:38:08 +0100
> schrieb Russel Winder via Digitalmars-d
> <digitalmars-d@puremagic.com>:
>
>>> That's not to say that Java, the language, (as opposed to the class
>>> library or the marketing hype) isn't a pretty good language. In fact,
>>> it's quite a beautiful language -- in the idealistic, ivory tower,
>>> detached-from-real-life sense of being a perfect specimen suitable for a
>>> museum piece. Its disconnect from the messy real world, unfortunately,
>>> makes it rather painful to use in real-life. Well, except with the help
>>> of automated tools like IDEs and what-not, which makes one wonder, if we
>>> need a machine to help us communicate with a machine, why not just write
>>> assembly language instead? But I digress. :-P
>>
>> Now this is mis-direction. Java is a real-world language in that it is
>> used in the real world. Whilst there are many using Java because they
>> know no better, many are using it out of choice. Java evolves with the
>> needs of the users prepared to get involved in evolving the language.
>
> Yes, Java is verbose, but its modularity makes it very
> flexible. The classic example is how you read lines of text
> from a file. Instead of a special class for that, you take
> use simple primitives with descriptive names and assemble
> something that reads lines of UTF-8 text from a buffer that
> has a file as its input. It actually acknowledges quite a bit
> of real-world mess when you look at it, for example different
> encodings on stdin and stdout.
> Conventions like beans, where every property is implemented as
> a pair of getter/setter or naming rules like ...Adapter,
> ...Comparator make it easy to reflect on unknown code.
> On the one hand it is limiting to only have Java OOP in the
> toolbox, on the other hand it is cheap to train someone on
> Java and Java libraries and actually not a horror to try and
> make sense of other people's code, because it wont be
> implemented in any of 5 different paradigms + s.o.'s personal
> naming conventions.
> I've never been a fan of developing in vi or emacs and as far
> as I am concerned, a programming language need not be designed
> like a human language. There are many graphical programming
> environments as well, for example for physics.
> The simpler the language the more robust the refactoring tools
> can become. The more conventions are in use, the better custom
> tailored tools and IDEs can emerge. I.e. in Eclipse you only
> type the capital letters of a long class name and have the
> auto-completion figure out which class in scope or available
> import paths matches these "initials". Heck, it even fills in
> the parameters when you call a method using the available
> variables in scope. If you were unaware that you need a third
> argument, the IDE can generate a new variable with a name
> based on the method parameter or place a constructor call for
> the required type.
> Sometimes you can just focus on the program logic and have the
> IDE generate most of the code. Delphi's and C# IDEs similarly
> expose properties of GUI objects in tables and generate the
> code for event handlers on double-clicks. It saves time, you
> cannot misspell anything... I like it.
>


Agree, follows my experience in the industry as well. Although sometimes
I am a bit dismayed by the skill level of certain programmers we get in our projects.

I am also an IDE fan. Can master Emacs and dabble in VI, but IDE are the
way to go, since my MS-DOS/Amiga days.

--
Paulo
August 25, 2014
On 25.08.2014 13:53, Russel Winder via Digitalmars-d wrote:
> On Mon, 2014-08-25 at 09:01 +0000, Chris via Digitalmars-d wrote:
> […]
>> The main thing that put me off Java was not so much the fact that
>> you're restricted to OOP and that it's verbose etc., but that it
>> caused all sorts of problems when shipping the actual programs.
>> "Write once run everywhere" is a myth, if you ask me. D is much
>> closer to that than Java. In the end we encountered so many
>> problems that I dumped Java for cross platform development (and
>> for development in general). Nobody in the Java world ever talks
>> about this, but cross platform doesn't really work (apart from
>> running simple programs).
> […]
>
> Java is not really an object-oriented programming language. OK it has
> classes, inheritance, and method calls, but it is not founded on message
> passing. For example:
>
> 	a + b
>
> is not a message in Java as it is in C++, Python, etc.

Since when does C++ does support message passing?

>
> Write Once Run Anywhere (WORA) has been a known fallacy since about
> 1995 ;-) Versions of things really are a bit of a
> dependency/configuration nightmare. Maven Central and Gradle help
> somewhat for the JVM, but then there is the shared library nightmare for
> all other platforms.
>

It is surely way better than the alternatives, specially if one remembers the chaos of writing portable code in C or C++ back when Java apperead.


On those days I was writing "portable" code across UNIX systems and discovering that POSIX isn't as portable as it gets sold by. The real fun was between the K&R C, ANSI C and pre-standard C++ support across compilers.

--
Paulo
August 25, 2014
On Monday, 25 August 2014 at 13:51:25 UTC, Paulo Pinto wrote:
> It is surely way better than the alternatives, specially if one remembers the chaos of writing portable code in C or C++ back when Java apperead.

Yeah, Flash and javascript are the kings of portable programming.
Then you have the scripting languages (python,perl,tcl/tk…).
Then you have Java.
Then you have Qt, etc

Compiled languages come far down on the list.

HTML5 will remain the king I believe, since OS upgrades can nuke any compiled program and HTML5 capable browsers are distributed with the OS.