LtU Forum

What will Apple's move to Intel mean for Alternative Language Communities?

In light of yesterday's big news from Apple, I am left wondering what will become of the many fine language implementations that we have seen emerging under OS X?

Will the transition present problems for PLT Scheme, Haskell, Frontier, J, Croquet, FScript, etc....?

Will the various vm engines and self-hosted native code generation capabilities survive with a few minor tweaks and a simple recompile or are they predicated on the PowerPC architecture itself forcing language designers back to the blackboard?

Finally, from a purely technical perspective vis-a-vis the chip sets in question, was this move a stroke of genious, a case of 'worse is better', a bad idea, or an overall wash?

A question I have been meaning to ask.

The Lambda calculus is a logical language and so are derivations such as lisp, scheme, and other functional languages. As such they theoretically could be used to prove facts as in languages like Prolog but I have never seen this done.

Moreover there is an intuitionistic logic (could this also be the more classic synthetic logic??) which could be quite useful for dealing with "real" dynamic, or uncertain environments. Something that could be very useful. Yet I am not awair of any practical tools for this.

Might not the logical interpretation of a function be more clear if the functions were written as rules, and had only a works/doesn't work return value?

Just wondering
Hank

Open Source Developer Rankings & Their Applications

I was wondering if there is any interest in a ranking of open source developers.

Such a ranking might be automatically determined by seeing how successful their applications have been (e.g., # downloads). We could also take into account other factors such as the size and complexity of the application.

Of course, if an application is built by many developers, we have to address the credit assignment problem. Namely, who is primarily responsible for the success of the application? We might examine the CVS repository to see who wrote what.

In any case, once we have this ranking of open source developers, we could then consider various applications:

* code search that returns code fragments written by particularly good developers (e.g., I might search for "drag and drop" across KDE apps and the most highly ranked drag & drop code fragments returned by the search would come from expert developers)

* mailing list search that takes into account how good of a developer the poster is (e.g., I might search for a problem related to drag and drop and the most highly ranked drag & drop messages returned by the search would come from expert developers)

Do you think building a ranking of open source developers would be worthwhile?

Do you think the applications mentioned would be compelling?

Evolving the Java Platform

Evolving the Java Platform by Graham Hamilton:

Probably the most significant single feature in Mustang (J2SE 6.0) is the addition of a full-scale scripting engine, including a lightweight JavaScript implementation. We think the Java language is great, but we also think that scripting languages are a valuable adjunct to the core language.

Avionics Control Systems DSL from 1994, by Doug Lea

Well, the author called it Design Patterns for Avionics Control Systems, but IMO the paper can be seen as a plan for a DSL.

The following quote captured my attention:

Thus, no single option is always best or even attainable. Moreover, each can pose problems. For example, pull protocols cannot deal with unexpected or prioritized events. Push protocols cannot always be buffered effectively, and require the existence or development of scheduling policies and algorithms. Shared memory requires the overhead of synchronization to avoid storage inconsistencies.
Sounds like a discussion of concurrency models, right? Not the same wording as in CTM, but still.

New extension for the TXL language : ETXL

What is TXL ?
TXL is a unique programming language specifically designed to support computer software analysis and source transformation tasks. It is the evolving result of more than fifteen years of concentrated research on rule-based structural transformation as a paradigm for the rapid solution of complex computing problems.

http://www.txl.ca/

What is ETXL ?
ETXL is the prototype implementation of the ideas developed in Adrian Thurston's Master's Thesis. He set out to update the TXL Programming Language. The prototype is itself a TXL program that transforms ETXL to pure TXL then runs the TXL engine on the result.

http://www.cs.queensu.ca/home/thurston/etxl/

For a general view of TXL
http://www.cs.queensu.ca/~cordy/Papers/Cordy_TXL_LDTA04.pdf

Adrian Thurston's Master's Thesis
http://www.cs.queensu.ca/home/thurston/evotxl-final.pdf

In a few words, it simply rocks !

Basic(er) Simple(r) Type Theory(?)

My lurking here at LtU has motivated me to learn about type theory, so I picked up a cheap used copy of Hindley's _Basic Simple Type Theory_, and have found myself woefully unprepared for it. A lunchtime sojourn to wikipedia yesterday was my first introduction to S & K combinators, so needless to say, all the formal logic, proofs, etc., are right over my head.

Is there a more basic, simpler introduction to type theory that doesn't assume a competant formal background that y'all can recommend, or, failing that, can y'all recommend a list of preparatory works to read first?

thanks in advance,

JimDesu

Today's Status of Functional Programming Languages for Verification Tools ?

An interesting conclusion based on the ML and Haskell implementations existing in October, 2002 comes from the paper "Functional Programming Languages for Verification Tools: A Comparison of ML and Haskell", by Perdita Stevens with Martin Leucker, Thomas Noll, Michael Weber
[quote]
6 Conclusion

There have been positive and negative aspects to both
our sets of experiences with Haskell and ML, as there
would doubtless have been with whatever language we
had chosen. Overall, we consider Standard ML to be a
slightly better choice for our kind of application than
Haskell, more because of a more stable environment
of supporting tools than because of language features.
Of course, there are many alternatives including other
functional languages of which we have less experience;
O'Caml might be a strong candidate. However, it turned
out in our discussions that none of us were enthusiastic
about the idea of using a functional language for a fu-
ture verification tool, because of their impoverished envi-
ronments compared with mainstream programming lan-
guages. Our conclusion is that if/when we develop new
verification tools, these will be written in \a Java-ready
subset of C++". That is, we would prefer to be writ-
ing in Java, but at present this appears premature for
performance reasons. We would write therefore in C++,
trying to avoid using features (such as multiple inheri-
tance, non-virtual functions, \friends") which cannot be
readily translated into Java.
[/quote]
What would be a conclusion of such a comparison today?

Also interesting and very true observation from the same article:

[quote]
Why is there so little material to help developers
make an informed choice? Part of the reason must be
that it is very hard to do convincing comparisons of lan-
guages without being vulnerable to the criticism that
one is not comparing like with like. We think that a fair
comparison needs to be based on real experience of peo-
ple using the languages to build real systems in the same
domain; otherwise it is almost impossible to be sure that
diferences are not due to diferences in the domains of
application. The systems themselves need to be broadly
comparable in size and complexity, need to be more than
toys, and should preferably have been developed and
maintained over years (since a language that makes de-
velopment easy might nevertheless encourage the devel-
opment of code which is unmaintainable). Moreover, the
domain should be one where either of the languages is
a reasonable choice, and the comparison should be done
by people with a reasonably typical level of experience in
the languages. A comparison is probably most generally
useful to developers when it is done neither by novices
in the languages compared nor by people intimately fa-
miliar with the compiler internals.
[/quote]
more from the same author...

2005 ICFP Programming Contest

Think your favorite programming language is the best one out
there? Put it to the test in this year's International Conference
on Functional Programming's annual Programming Contest. The
contest is coming up in a little under 4 weeks and we have just
released more information (including a live cd, mailing list, and
prize details) to the web page, at:



http://icfpc.plt-scheme.org/



This year's competition rewards programmers who can plan ahead. As
before, we'll announce a problem and give you three days to solve it.
Two weeks later, we'll announce a change to the problem specification
and give you one day to adapt your program to the new spec. And you
guessed it: the second half will be worth considerably more than the
first.


Important dates:

  • Problem announced: Friday, June 24th, 9:00am CDT (UTC-6)
  • Initial entries due: Monday, June 27th, 9:00am CDT (UTC-6)
  • Revision announced: Saturday, July 9th, 9:00am CDT (UTC-6)
  • Final entries due: Sunday, July 10th, 9:00am CDT (UTC-6)

ICFP Contest Organizers


icfpc@plt-scheme.org

What is so bad about compiling?

No we haven’t lost our mind! We know that compilers and the languages they represent are the absolute foundation of computing. Compilers are so basic and originate so early in the history of computers it is easy to forget what a compiled language really is: A compiled language is simply an extension of the machine codes defining the register machine. As long as we insist that a language compile we are insisting that the register machine must be our computing architecture. This is because no matter how we disguise it the basic properties of the register machine will leak through into any language that must compile directly without an intervening virtual machine.

The property we are most concerned about is “flow”. We read and execute one instruction after another in order. If we need to execute a different string of instructions we use conditional jump instructions. On a higher level a conditional jump would be a goto statement with a label. Goto’s are very powerful but may lead to what we used to call “spaghetti code”. It can be impossible to “see” where the program is going next. We bring this up because “spaghetti code” still lives in the form of if/then/else statements, but is more subtle.

Another example of the “flow” problem is that the code must be analytic. The register machine has no built in way to back up or recover from errors. We can and must check for errors but the only option then is usually to terminate the program. The logic has been broken! The analytic assumption is reasonable as long as the program is not connected to the external world somehow, perhaps through user inputs, sockets, or external activity. The need to be analytic leads the “fortress” mentality; radical steps to ensure that the code is analytic.

A solution exists that we like to call synthetic logic. A synthetic logic is a set of event rules with a works or doesn’t work logic. Synthetic logic is a logic of possibility; the event X is said to work if events A, B, and C work in order. If something goes wrong the system simply backs up to the starting point automatically without any specific error processing. Synthetic logic can work along with an analytic true or false logic. The dilemma is that synthetic logic in whatever form will require a virtual machine to execute because it will be based on backward or forward chaining control. In other words it won’t compile on a register machine.

It seems to us that language designers must address the larger problem of languages that are hard to compile or impossible to compile. These languages usually don’t make it into prime time because they don’t compile. If we continue to insist that mainstream languages compile we will simply be getting more of the same subtle problems. In the search for the ultimate language the compiler should not be a consideration. Any language concept can be implemented as a virtual machine. With the fast computers that we have today this may be all that is needed. If that language should actually turn out to be the ultimate language then there would be plenty of money to design a machine on which it could be compiled directly.

XML feed