User loginNavigation |
[Site] Network issuesLtU's hosting provider has been experiencing severe network problems recently. Over this past weekend and today, there have been outages lasting hours at a time (which is a relative eternity, when the provider's SLA promises 99.99% uptime). The provider is now saying that problems could continue for weeks, while they upgrade their network equipment. As it happens, a move to (yet another) new server, at a bigger and more reliable provider, has been in the works for some time, so we're going to accelerate that process and make that move as soon as possible. Until then, if you find yourself gnawing on the corner of your desk due to a temporary inability to reach LtU (what, you mean that's just me?), look in the directory where you've saved the papers you saw here, and read one of the ones that you never got around to reading. By the time you're done, LtU will be accessible again. :) Alloy: A Simple Structural Modeling Language Based on First-Order Logic
Alloy has been mentioned before, but with the recent discussions revolving around IDEs and questions about whether some kinds of checking belong in the language or in the tools surrounding the language, I thought it might be worth revisiting. In fact, it's tempting to suggest that we at LtU adopt a new category for stories: "Lightweight Formal Methods," and that we editors attempt to establish a continuum with respect to stories that fit the category. For example, Pierce makes the observation in TAPL that type systems are a particular kind of lightweight formal method, and that one of their benefits is that they're the only kind that are guaranteed to be used. Alloy falls in the "outside the language proper, but still incremental" category, and somewhere else on the spectrum you have full-blown theorem provers like Twelf, Coq, MetaPRL, et al. Does it make sense to try to unify some of the discussions about the boundary between languages and external tools under this umbrella? By Paul Snively at 2005-10-30 23:58 | DSL | Software Engineering | 4 comments | other blogs | 15758 reads
Does Visual Studio Rot the Mind?
An long and interesting rant by Charles Petzold.
Obviously this is mostly about the IDE side of things (seeing as VS is an IDE). Some of the features that VS provides are intended to overcome the huge size of the standard libraries, and you might argue this isn't really a language issue. At some level this is indeed a valid argument. However, I think we should pause every once in awhile and wonder whether better programming language abstractions might make modern programming - with GUIs, XML etc. - easier, and eliminate some of the need for huge libraries. In fact, one can argue that LINQ (Cw) is a step in this direction, as regards data access. It is also worth noting that when IDEs influence the way programming is done, they influence the way languages are used, and thus influence the design space. Programmers demand new language features partly as a response to their experience with the language as it is used in practice. Finally, the impact on teaching and learning programming shouldn't be overlooked. Students naturally want to produce cool GUI applications and use VS. If this makes it harder to introduce them to different programming techniques and languages (and I think it does), this can be highly problematic. Here are some choice quotes from Petzold (who also said that the whole history of new programming languages... for Windows has involved the struggle to reduce the windows hello-world program down to something small, sleek, and elegant):
To get IntelliSense to work right, not only must you code in a bottom-up structure, but within each method or property, you must also write you code linearly from beginning to end — just as if you were using that old DOS line editor, EDLIN. You must define all variables before you use them. No more skipping around in your code.
By Ehud Lamm at 2005-10-29 22:34 | Software Engineering | Teaching & Learning | 71 comments | other blogs | 19724 reads
New blog
A fairly recent blog that might interest some LtU readers.
It's early days yet, so I am sure the author could use some encouragement and support... OOPSLA 2005 ReportsFollow these links. An Overview of the Singularity ProjectSingularity is a research project in Microsoft Research that started with the question: what would a software platform look like if it was designed from scratch with the primary goal of dependability? Singularity is working to answer this question by building on advances in programming languages and tools to develop a new system architecture and operating system (named Singularity), with the aim of producing a more robust and dependable software platform. Singularity demonstrates the practicality of new technologies and architectural decisions, which should lead to the construction of more robust and dependable systems... An interesting overview of what sounds like an intersting project. The choice of implementation language is also interesting:
Singularity is written in Sing#, which is an extension to the Spec# language developed in Microsoft Research. Spec# itself is an extension to Microsoft’s C# language that provides constructs (pre- and post-conditions and object invariants) for specifying program behavior. Specifications can be statically verified by the Boogie verifier or checked by compiler-inserted run-time tests. Sing# extends this language with support for channels and low-level constructs necessary for system code....integrating a feature into a language allows more aspects of a program to be verified. Singularity’s constructs allow communication to be statically verified. An interesting aspect is the support for meta-programming, which is implemented in an unusal manner:
Compile-time reflection (CTR) is a partial substitute for the CLR’s full reflection capability. CTR is similar to techniques such as macros, binary code rewriting, aspects, meta-programming, and multi-stage languages. The basic idea is that programs may contain place-holder elements (classes, methods, fields, etc.) that are subsequently expanded by a generator. Many other intersting design decisions are discussed in the paper (e.g., various DbC facilities), so do check it out. By Ehud Lamm at 2005-10-28 14:54 | Cross language runtimes | Implementation | Meta-Programming | Parallel/Distributed | Software Engineering | 30 comments | other blogs | 36475 reads
Map of LtU readers
Cool new meme...
Following Estzer and Brian I have created a Frappr map for LtU readers. Click on that link and (a) you'll have a chance to see where some of the readers are and (b) add yourself. Finding Application Errors Using PQL: A Program Query Language
I saw the talk to this paper two weeks ago at OOPSLA two weeks ago and liked it very much. In a sense, I would consider it as a new application for aspect-oriented techniques. Just What is it that Makes Martin-Lof's Type Theory so Different, so Appealing?Martin-Löf's Type Theory (M-LTT) was developed by Per Martin-Löf in the early 1970s, as a constructive foundation for mathematics. The theory is clear and simple. Because of this it has been used for everything from program derivation to handling donkey sentences. Yet another propositions-as-types tutorial. It seems pretty easy to follow, and it is quite short (16 pages). P.S Why all the theory on LtU these days? Because the editors who keep posting are into theory. The other editors should be nudged to start posting cool hands-on stuff... Lowering the barriers to programming
(via the LtU forum)
Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers. Caitlin Kelleher, Randy Pausch. ACM Computing Surveys. Vol. 37. No. 2. Jun 2005.
Since the early 1960's, researchers have built a number of programming languages and environments with the intention of making programming accessible to a larger number of people. This article presents a taxonomy of languages and environments designed to make programming more accessible to novice programmers of all ages. The systems are organized by their primary goal, either to teach programming or to use programming to empower their users, and then, by each system's authors' approach, to making learning to program easier for novice programmers. The article explains all categories in the taxonomy, provides a brief description of the systems in each category, and suggests some avenues for future work in novice programming environments and languages. You might also want to check out this older LtU item. |
Browse archives
Active forum topics |
Recent comments
36 weeks 2 days ago
36 weeks 3 days ago
36 weeks 3 days ago
1 year 6 weeks ago
1 year 10 weeks ago
1 year 12 weeks ago
1 year 12 weeks ago
1 year 15 weeks ago
1 year 19 weeks ago
1 year 19 weeks ago