On 1/21/2012 8:11 AM, Peter Franta wrote:
VPRI answer to their Government and Private Funders, not those of us
who have the fortune to observe as they go.
It is my understanding the deliverable is not a "product" but "lessons
learned" to go and do it for real! Not ideal for us but then they're
not serving us.
Clearly this doesn't match your expectations. This is frustrating to
you but are your expectations their concern? Where do these
expectations come from?
Popular/Successful <> Better. It all depends on your pov and what you
value.
yeah. I am just a random observer as well, and operating in the far more
mundane world of "spewing code and trying to make it all work..." (and
wondering if/when/where I will ever make an income).
there is some amount of "experimentation", but most of this is itself
much more mundane, and not really a central focus (it is more of a "try
various things and see what sticks" experience).
likewise, it can be interesting to gather and try out ideas, and see
what all works.
sometimes, the new thing can be simpler overall, even if initially or
conceptually more complex.
for example, at a basic level, dynamic typing is more complex than
static typing (which can be seen as a type-checked variant of an untyped
system). once things start getting more complex, and one is dealing with
less trivial type semantics, then dynamic typing becomes much simpler
(the main difference is that dynamic typing is not well-supported on
current hardware, leading to complex/awkward type inference in an
attempt to get reasonable performance).
but, then there is a tradeoff:
static types work better in the simple case for finding many types of
errors (even a good type-inference algo with type-validation may, with a
loose type-system, accept bad input and coerce it into a
semantically-valid, but unintended form).
dynamic type-systems work better when the types are less trivial, and/or
may become, well, dynamic (at which point, many good old static
languages lead either to overly complex mechanisms, or a need to "strong
arm" the type-system via lots of casts). even in an otherwise
well-developed static language, there may end up being stupid/arbitrary
restrictions which don't follow from either the implementation or the
conceptual semantics (such as, in several languages, the inability to
pass/convert a generic-container for a subclass into a generic container
for the superclass, ...).
in these cases, it may well make sense to leave it up to the programmer
which semantics they want to use.
for example, in my own language, if a declared type is used, it is
treated more like in a static language (coercing if needed and the types
are compatible, or potentially making an error otherwise).
some other languages treat things more loosely, making me wonder what
really is the point of having type annotations in this case. what is
gained from annotations if the compiler does not enforce the types and
the types don't impact run-time behavior? in terms of optimization, in
this case, they offer little more than what could have been reasonably
gained by type-inference. there only real obvious merit is to serve as a
hint for what type the variable "should" be (if people so happen to be
look at the declarations at the time).
granted, when one has both static and dynamic type-semantics, this is
potentially more complex than either case by itself (although, having
both does allow some potentially interesting semantics, such as the
ability to handle semantics which would likely be slow in a
dynamically-typed language, but which would be overly complicated or not
possible to represent with traditional uses of generics or templates,
such as conditional or "evaluated" types).
but, who knows, maybe there are better ways to deal with all this as well?
how much of the concept of 'types' is itself real, and how much is an
artifact of the existing implementations? how much of existing
programming practice is "real", and how much is essentially cruft?
simple example:
there are fields and there are methods;
sometimes we want to access fields directly, and sometimes to limit such
access.
so, then the public/private notion popped up, with the usual convention
being to keep all fields as private. then, people introduced
getter/setter methods (and there is then a whole lot of "obj.getX()" and
"obj.setX(value)").
then, languages have added properties, so that the extra notation can be
shaved back off (allowing, once again, "obj.X" and "obj.X=value;"), and
have similarly allowed short-hand dummy property declarations, such as
"public double X { get; set; };"
although there are sensible reasons behind all of this, one can also
wonder: "what exactly really is the point?". couldn't one, say, just as
easily (assuming the language handled it gracefully) declare the field
initially as public, and if later it needs to be trapped, simply change
it to private, drop in the property handler, and call it good?...
or, alternatively, if one declares a property without its associated
variable, why not just "infer" that said variable needs to exist and,
y'know, create it?...
granted, some people have asked the same of other sorts of variables,
but the usual issue is that referring to an undeclared variable leaves
it very ambiguous as to what sort of scope the variable should have, or
if it should exist at all.
granted, I personally see little "real" need though for why direct
static visibility should be mandatory, and so I tend to leave open the
possibilities of indirect static visibility and also for dynamic
visibility (this has been disallowed in certain cases in some of my
language designs, but my implementations have thus far not bothered
checking for them). typically, the variable needs to exist "somewhere"
though.
practically, I suspect that the issue is that this case would be fairly
complicated in a traditional early-bound VM, and that a lot of stuff I
have read doesn't really allow for the possibility of there to be a
statically-determinable "gray area" between traditional early-bound
semantics and dynamically-handled late-binding... I guess, maybe it is
because it is seen as something roughly akin to inlining virtual methods
or similar.
sadly, I know of more possible nifty edge-cases than my current
implementation bothers to exploit (most of the time, lacking lexical
visibility, it will just fall back to using dynamic late-binding).
but, there are probably endless such things around I guess.
or such...
Regards
P
On Sat, Jan 21, 2012 at 9:11 PM, Loup Vaillant <l...@loup-vaillant.fr
<mailto:l...@loup-vaillant.fr>> wrote:
Le 1/21/2012 2:52 AM, Reuben Thomas a écrit :
I have just skimmed VPRI's 2011 report; lots of interesting stuff
there. The ironies of a working system that the rest of us can
only
view in snapshot form grow ever-stronger: the constant
references to
active documents are infuriating. The audience would like to
see the
active document, but instead we only get a printout. It's as if,
waiting for a new film, we got only reviews of trailers rather
than
the trailers themselves.
The irony is then compounded by a code listing at the end of the
document (hint: a URL is shorter and actually useful; this is
not the
1980s).
And then just when we thought it was going to end, the agony
continues: you've pushed the deadline back a year.
I wish you all a joyful and productive 2012; unlike many projects,
it's clear that with this one the question is not whether what is
finally released will be worth the wait, it's whether it'll ever
actually be released.
You do shoot yourselves in the foot at one point: "The Web
should have
used HyperCard as its model, and the web designers made a terrible
mistake by not doing so." Yes, but the web shipped and
revolutionised
the world; meanwhile, you lot have shipped stuff that, at
best, like
Smalltalk, has inspired revolutions at one remove. Many of the
lessons
of your work are decades old and still not widely learned.
Contrast
with Steve Jobs, who spun an ounce of invention into a mile of
innovation, by combining a desire for better computing with the
understanding that without taking people with you, your ideas
will die
with you. It's a shame and an embarrassment that to the world
at large
he's the gold standard.
Please, no more deadline extensions. Whatever you have by the
end of
this year will unquestionably be worth releasing, for all its
imperfections. It's high time to stop inventing the future and
start
investing it.
The FONC Wiki mention subversion repositories here:
(stable) http://piumarta.com/svn2/idst/tags/idst-376
(trunk) http://piumarta.com/svn2/idst/trunk
I haven't tried yet, but it seems we outsiders can already play
with it.
Maybe that'll do as an actual "trailer"?
Loup.
_______________________________________________
fonc mailing list
fonc@vpri.org <mailto:fonc@vpri.org>
http://vpri.org/mailman/listinfo/fonc
_______________________________________________
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc
_______________________________________________
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc