comp.lang.ada
 help / color / mirror / Atom feed
* Re: Ada requires too much typing!
@ 2010-05-28  5:25 Luis Espinal
  2010-05-28  6:47 ` Yannick Duchêne (Hibou57)
                   ` (3 more replies)
  0 siblings, 4 replies; 123+ messages in thread
From: Luis Espinal @ 2010-05-28  5:25 UTC (permalink / raw)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 4659 bytes --]

In article , Peter C. Chapin says...
>
>However, the argument that I see some people putting forth on the Scala group
>is that conciseness is good because it saves typing. I really can't
>understand that. How hard is it to type?

You have to understand the Scala argument within the context of verbosity in
Java (I'm a Java developer btw.) For many things in Java, Swing programming for
example, we require the creation of (usually anonymous) classes implementing
listener interfaces or swingthread base classes. After a few non-trivial
additions, the syntax becomes horrendously heavy and unwieldy. There is no
notion of nested methods, much less passing functions as parameters (as in
Scala.) That is the type of syntax conciseness and facilities (which are missing
in Java) that makes this type of task easier to read, reuse and maintain.

With the addition of generics in Java, the situation has gotten worse. We need
to use generics to make typing stronger (and to avoid run-time casting errors).
And yet, the syntax is terrible. Try to create, say, create a function that
takes as argument, say, a Map parametrized with subclasses of a given
parametrized class as keys, and container parametrized to a different type as
values. It's an abomination. In Scala, it is much simpler and efficient, ergo
more economical.

>
>One of the people on that group posted this comment related to the fact that
>Java requires public/private access specifiers on methods whereas Scala uses
>public by default. Thus in the "common" case of a public method you don't
>have to type the word 'public'...
>

I don't think that is much of an issue. Mutability is. This is a big issue for
Java as it has turned out. The commonly accepted best practice now is to mark
variables and parameters as final unless you know before hand that you want to
change them. This is a big improvement, but it is not the default behavior. It
is in Scala.


>
>The whole "I will make you do extra work coding just so you can demonstrate
>to me that you're not being lazy" attitude of Java is perhaps useful in some
>situations, but we already have Java for that.  I don't think adopting that
>attitude of making you do busywork would be an asset for Scala.
>
>  --Rex


This doesn't make any sense. It has nothing to do with being lazy. Verbosity has
its place when you want to make some sort of intention clear. That is not the
case in Java. The verbosity that we get now in Java with the addition of
generics (which you don't get in Scala), the inability to create lambdas  (which
we can in Scala, Groovy and JavaScript), lack of "elvis" operators, and the
boiler plate required for checked exceptions (which no other language has),
that's what makes things very difficult to create.

And you can create something that can compile and still not work as intended
because the verbosity gets in the way (specially when you need to throw "super"
or "extend" into the parameter declaration.) The code that we create now, post
Java 1.5 is a lot different from what was being built when the language was
first envision. After the addition of generics, the verbosity that we use to
praise now gets in ways we never imagined.

We have also come to learn that interfaces, the prohibition of multiple
inheritance, lack of operator overloading and checked exceptions were not a good
idea at all. Scala represents a re-thinking on programming on the JVM that has
come out of necessity, and it will most definitely engender Java's replacement
within the next 10-15 years.

Verbosity only has its place if it makes your intentions readable and if it has
precise, easy-to-understand semantics. Verbosity with obscure semantics, that
doesn't give you anything, that can compile and give you hard-to-find errors, we
don't need that.

You got it completely wrong. That's not laziness. It is cleaning out the garbage
and bring a new (and hopefully better) way to program the type of systems we
want to run on the JVM.

I would strongly suggest you listen to the JavaPosse and Software Engineering
Radio podcasts that relate to Scala and other alternative JVM languages. They do
a good job at explaining the reasoning behind the shrinking of verbosity. If you
don't believe me, just try the example I mentioned (the parametrized Map with
subclasses of a parametrized parent as keys, and collections parametrized to a
different type as values.)  It is not an uncommon construct or a
proof-of-concept toy. It is very easy to have combination of 3, 4 parametrized
types, or more.

Try to get that to work on Java, and then on Scala. You'll soon appreciate their
point of view has nothing to do with being lazy.




^ permalink raw reply	[flat|nested] 123+ messages in thread
* Ada requires too much typing!
@ 2010-05-26 12:57 Peter C. Chapin
  2010-05-26 13:29 ` Ludovic Brenta
                   ` (5 more replies)
  0 siblings, 6 replies; 123+ messages in thread
From: Peter C. Chapin @ 2010-05-26 12:57 UTC (permalink / raw)


This is just an observation on the difference between two communities.

I've been recently using Scala for a project (I'd rather use Ada, but it's
hard for me to justify the cost of converting... alas). Scala is a
functional/OO hybrid language that targets the JVM. It prides itself on,
among other things, its concise syntax. Not surprisingly the Scala community,
as evidenced by the posts on a Scala newsgroup, regard conciseness as an
important feature for a programming language. I agree that conciseness can in
some cases improve readability. However, I also believe that it can obscure a
lot of important detail and make it hard to understand the execution cost of
the code. Perhaps because of my experience with Ada, or perhaps because of my
basic personality, I'm not necessarily a fan of extreme conciseness.

However, the argument that I see some people putting forth on the Scala group
is that conciseness is good because it saves typing. I really can't
understand that. How hard is it to type?

One of the people on that group posted this comment related to the fact that
Java requires public/private access specifiers on methods whereas Scala uses
public by default. Thus in the "common" case of a public method you don't
have to type the word 'public'...

<quote>
The whole "I will make you do extra work coding just so you can demonstrate
to me that you're not being lazy" attitude of Java is perhaps useful in some
situations, but we already have Java for that.  I don't think adopting that
attitude of making you do busywork would be an asset for Scala.

  --Rex
</quote>

Hmmm... "busywork"... interesting. I can only imagine what this person, or
others in that community, would have to say about Ada... or SPARK!

Peter




^ permalink raw reply	[flat|nested] 123+ messages in thread

end of thread, other threads:[~2010-06-29  2:13 UTC | newest]

Thread overview: 123+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-05-28  5:25 Ada requires too much typing! Luis Espinal
2010-05-28  6:47 ` Yannick Duchêne (Hibou57)
2010-05-28 15:52   ` John B. Matthews
2010-05-28 17:31     ` Dmitry A. Kazakov
2010-05-28 19:05       ` Georg Bauhaus
2010-05-28 19:39         ` Dmitry A. Kazakov
2010-05-28  9:48 ` Georg Bauhaus
2010-05-28 10:10 ` Alex R. Mosteo
2010-06-01 21:30   ` Luis Espinal
2010-06-02 11:08     ` Alex R. Mosteo
2010-06-05 19:58       ` Luis Espinal
2010-06-02 13:09     ` Yannick Duchêne (Hibou57)
2010-06-05 20:13       ` Luis Espinal
2010-06-06  4:25         ` Yannick Duchêne (Hibou57)
2010-06-06  8:55     ` Martin Krischik
2010-06-06 10:13       ` Simon Wright
2010-06-06 11:03         ` Dmitry A. Kazakov
2010-06-06 12:04         ` Martin Krischik
2010-06-07  8:34           ` Maciej Sobczak
2010-06-07  9:25             ` Martin Krischik
2010-06-07 12:04               ` Colin Paul Gloster
2010-06-07 12:17               ` Maciej Sobczak
2010-06-07 12:26                 ` Dmitry A. Kazakov
2010-06-07 15:00                 ` Martin Krischik
2010-06-08  7:46                   ` Maciej Sobczak
2010-06-08  8:53                     ` Martin Krischik
2010-06-09  7:50                       ` Maciej Sobczak
2010-06-09  8:10                         ` Dmitry A. Kazakov
2010-06-09  8:43                           ` Maciej Sobczak
2010-06-09  9:24                             ` Dmitry A. Kazakov
2010-06-09 13:54                               ` Maciej Sobczak
2010-06-09 14:29                                 ` Dmitry A. Kazakov
2010-06-09 15:02                                   ` Georg Bauhaus
2010-06-09 15:53                                     ` Dmitry A. Kazakov
2010-06-09 18:00                                       ` Yannick Duchêne (Hibou57)
2010-06-09 19:10                                         ` Dmitry A. Kazakov
2010-06-09 21:09                                           ` Yannick Duchêne (Hibou57)
2010-06-10  8:07                                             ` Dmitry A. Kazakov
2010-06-10  8:44                                               ` Yannick Duchêne (Hibou57)
2010-06-10  9:07                                                 ` Dmitry A. Kazakov
2010-06-10 10:10                                                   ` Georg Bauhaus
2010-06-10 10:28                                                     ` Dmitry A. Kazakov
2010-06-09 21:22                                   ` Maciej Sobczak
2010-06-09 23:09                                     ` Yannick Duchêne (Hibou57)
2010-06-10  8:15                                     ` Dmitry A. Kazakov
2010-06-10 13:37                                       ` Maciej Sobczak
2010-06-10 13:57                                         ` Dmitry A. Kazakov
2010-06-09 14:31                               ` Yannick Duchêne (Hibou57)
2010-06-09 15:57                                 ` Dmitry A. Kazakov
2010-06-09 17:51                                   ` Yannick Duchêne (Hibou57)
2010-06-10  6:13                         ` Randy Brukardt
2010-06-10  6:19                           ` AdaMagica
2010-06-10 21:59                             ` Randy Brukardt
2010-06-10  6:34                           ` Vadim Godunko
2010-06-10  6:54                             ` Yannick Duchêne (Hibou57)
2010-06-10  7:36                               ` Vadim Godunko
2010-06-10  8:21                                 ` Dmitry A. Kazakov
2010-06-10  8:51                                   ` Vadim Godunko
2010-06-10  9:20                                     ` Dmitry A. Kazakov
2010-06-10  8:51                                 ` Yannick Duchêne (Hibou57)
2010-06-10 22:08                                 ` Randy Brukardt
2010-06-11  9:13                                   ` Stephen Leake
2010-06-10  7:20                             ` AdaMagica
2010-06-10  8:57                               ` Vadim Godunko
2010-06-10 10:12                                 ` Georg Bauhaus
2010-06-10 13:47                                   ` Alex R. Mosteo
2010-06-10 19:18                                   ` Vadim Godunko
2010-06-10 22:08                                   ` Gautier write-only
2010-06-10 22:17                                   ` Randy Brukardt
2010-06-11 18:38                                     ` Simon Wright
2010-06-29  2:13                                       ` Randy Brukardt
2010-06-11  9:14                                   ` Stephen Leake
2010-06-11 18:03                                     ` Jeffrey R. Carter
2010-06-11  9:11                             ` Stephen Leake
2010-06-10  7:21                           ` Maciej Sobczak
2010-06-10 19:33                             ` Simon Wright
2010-06-10 22:23                             ` Randy Brukardt
2010-06-07  8:13       ` Maciej Sobczak
2010-06-07  8:35         ` Martin Krischik
2010-06-07  8:43         ` Martin Krischik
2010-06-06  8:06 ` Martin Krischik
2010-06-07 18:30   ` Luis Espinal
2010-06-08  6:43     ` Martin Krischik
2010-06-08  7:10       ` Georg Bauhaus
2010-06-08  9:00         ` Martin Krischik
2010-06-10 13:56           ` Alex R. Mosteo
2010-06-10 14:29             ` J-P. Rosen
2010-06-11 11:57               ` Alex R. Mosteo
2010-06-08 10:10       ` Niklas Holsti
2010-06-08 11:35         ` Georg Bauhaus
2010-06-10 13:58           ` Alex R. Mosteo
2010-06-10 19:45           ` Simon Wright
2010-06-10 20:09             ` Niklas Holsti
2010-06-10 18:21         ` Yannick Duchêne (Hibou57)
  -- strict thread matches above, loose matches on Subject: below --
2010-05-26 12:57 Peter C. Chapin
2010-05-26 13:29 ` Ludovic Brenta
2010-05-26 15:56   ` Peter Hermann
2010-05-26 16:12     ` Ludovic Brenta
2010-05-26 18:57   ` Pascal Obry
2010-05-26 19:30   ` Yannick Duchêne (Hibou57)
2010-05-26 14:48 ` Jeffrey R. Carter
2010-05-27 17:10   ` Warren
2010-05-27 22:15     ` Adam Beneschan
2010-05-28 15:26       ` Warren
2010-05-30  0:49   ` BrianG
2010-05-30  7:27     ` Dmitry A. Kazakov
2010-05-30  9:17       ` Yannick Duchêne (Hibou57)
2010-05-30  9:51         ` Simon Wright
2010-06-02  1:42           ` BrianG
2010-05-26 15:23 ` Adam Beneschan
2010-05-26 17:20 ` Georg Bauhaus
2010-05-26 19:33   ` Yannick Duchêne (Hibou57)
2010-05-26 21:55     ` Simon Wright
2010-05-26 23:36     ` Georg Bauhaus
2010-05-27  2:07 ` Fritz Wuehler
2010-05-27  4:19   ` Yannick Duchêne (Hibou57)
2010-05-27 19:51   ` Warren
2010-06-03 16:54 ` Colin Paul Gloster
2010-06-03 16:09   ` Yannick Duchêne (Hibou57)
2010-06-03 16:11     ` Yannick Duchêne (Hibou57)
2010-06-04 11:40       ` Nicolas Cóilin Paul de Gloucester
2010-06-04 13:54         ` Ludovic Brenta
2010-06-04 11:29     ` Nicholas Collin Paul de Gloucester

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox