## We are not the only ones doing it...

The Secure Coding mailing list is having field day arguing about Marcus Ranum's ACM Queue article, Security: The root of the problem.

Normally, I wouldn't link to this thread since it isn't specifically about programming languages.

However, programming languages are being mentioned, and static analysis tools discussed (esp. SPARK). Moreover, I think the dynamics of the debate are quite similar to the dynamics of the ongoing (and eternal) debate in the discussion group regarding static typing. Perhaps, seeing this sort of quicksand action hapenning in a different context can help us learn how to focus PL-related debates and make them more productive.

Note: I am not trying to rain on anyone's parade. In fact, I think LtU is better than most other forums when it comes to this kind of debate. But non-productive debates on these issues are a common problem in PL discussions.

## XsRQL (and other RQLs)

The RDF Data Access Working Group is busy doing a survey of query languages and access techniques that have been used with RDF. Many resemble SQL in syntax, despite operating on a graph. Amongst the WG's Design Evaluations Links there's a recent submission of a different style from Howard Katz : XQuery-style RDF Query Language (XsRQL), which actually looks very procedural (like XQuery).

## Types in CMUCL

CMU Common Lisp's compiler, known as Python, has a sophisticated implementation of Common Lisp's powerful type system. The system primarily enforces type safety at runtime, but it also performs static type inference. The static type information is used to detect type errors, eliminate unnecessary runtime type checks, and select efficient primitive code (e.g. avoid excessively generic arithmetic).

CMUCL's history stretches back around twenty years, though I believe the compiler was rewritten "just" 15 odd years ago. The system is still widely used, notably by ITA software as publicised by Paul Graham.

## A soft-typing system for Erlang

Sven-Olof NystrÃ¶m presented his Soft-typing system for Erlang at the 2003 ACM Erlang Workshop. I haven't tried it, but I thought it looked promising. His conclusions are thought-provoking too.

## Mono 1.0 Ships

Mono 1.0 has been released, following a speedy set of beta releases. The detailed release notes are interesting. Mono is also being used to build Nemerle a "functional .NET language compiler".

## Attribute-Oriented Programming with Java 1.5

An interesting look at the addition of annotations to the next generation Java. Not sure what the main purpose of this metadata is, but the author discusses it in terms of debugging and instrumentation.

Annotation definitions look a lot like interface definitions, but the keyword @interface is used instead of interface and only methods are supported (though they act more like fields).

   public @interface Status {
String value();
}

I can now define my method as follows:

   @Status("Connecting to database")
public void connectToDB (String url) {
...
}

## Editors Ahoy!

It would be nice to know if all the contributing editors survived the relocation...

Best way to prove you are still with us is to post something!

If you encounter any difficulties, let me know.

## Multi-stage Programming in MetaOCaml

Interesting tutorial.

I don't recall seeing the link to this set of slides here before.

## Enumerating the Rationals

Jeremy Gibbons, David Lester and Richard Bird (2004). Enumerating the Rationals. May 2004.

In this paper,we explain an elegant technique for enumerating the positive rationals without duplicates. Moreover, we show how to do so as a simple iteration, generating each element of the enumeration from the previous one alone,with constant cost per element (assuming unit cost for simple operations on arbitrary-precision rationals). Best of all, the resulting program is extremely simple...

Cute. Nothing earth shattering, but fun none the less.

## The DSL, MDA, UML thing again...

Simon Johnston (IBM/Rational) on Domain Specific Languages and refinement:

My position is that the creation of domain specific languages that do not seamlessly support the ability to transform information along the refinement scale are not helpful to us. So, for example, a component designer that is a stand alone tool unconnected to the class designer that provides the next logical level of refinement (classes being used to construct components) is a pot hole in the road from concept to actual implementation. Now, this is not as I have said to indicate that domain specific languages are bad, just that many of us in this industry love to create new languages be they graphical, textual or conceptual. We have to beware of the tendency to build these disjoint languages that force the user to keep stopping and jumping across another gap.

I am not sure I want to go back to the argument between IBM and Microsoft about this stuff, but I think the notion of refinement is important from a linguistic point of view (e.g., embedding, language evolution, type systems, reasoning etc.)

But can refinement of the sort discussed here work in practice, or does it depend on language-design savvy architects? Maybe the difference between IBM and Microsoft is that the IBM approach assumes all modelling knowledge will come pre-packaged, being designed by modelling professionals and embedded in tools, where as the Microsoft approach assumes more design expertise from users?

Feel free to correct me, I am really unsure where all this is heading anyway...
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 1, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0, "math_score": 0.2526356279850006, "perplexity": 2655.407674440975}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 5, "enable": false}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "plain"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "warc_path": "s3://commoncrawl/crawl-data/CC-MAIN-2021-04/segments/1610703533863.67/warc/CC-MAIN-20210123032629-20210123062629-00553.warc.gz"}