User loginNavigation |
LtU ForumAutoTest - Automated contract based testing for EiffelAutoTest is a testing too for Eiffel akin to QuickCheck for Haskell, which automates testing of code based on contract based specifications of functions. While AutoTest is still in development, it is also more ambitious than QuickCheck, seeking to provide a single push-button approach to testing with multiple pluggable strategies for generating test data. A recent talk discusses in more detail some of the more advanced aspects of where AutoTest is going. Most importantly AutoTest has proved to be practical, having already found a number of bugs in Eiffel's base libraries! By Leland McInnes at 2006-10-06 16:59 | LtU Forum | login or register to post comments | other blogs | 6715 reads
Tom 2.4 ReleasedTom 2.4 was released today, and contains many improvements. In particular, it is possible to generate with the Gom tool unmutable typed tree data structures with invariants, such as ordered lists, duplicate removal or even distributivity of balanced trees. Quoting the announce: It is our great privilege and pleasure to announce the availability of This release continues our work on the integration of pattern matching Tom is a pattern matching compiler developed at INRIA. It is Many applications have been developed in Tom. Among them, let us mention: Tom is a complex compiler which adds powerful constructs to C and Java: This new release contains many improvements and new features: - Reflexive Strategies: - Congruence Strategies: - Java Bytecode: - Eclipse Plugin: Tom is available, in open source (GPL/BSD License), from the web page: http://tom.loria.fr Best regards, call by ? and mental modelsWe've stopped to take a look at how Hecl handles procedures and their arguments. Since Hecl is a command-based language that takes a lot from Tcl, one obvious thing to borrow would call-by-name: set i 10 Currently, though, it does call-by-reference for destructive commands like 'incr': set i 10 Part of the thought behind this choice is that I want a consistent mental model for users, who I do not anticipate being programming language wonks, but rather those who would like to utilize Hecl to script applications for their cell phones, perhaps on a level on par with your average PHP user. In a language like PHP, variables always have a $ attached to them, which makes it easy for users to recognize that "that's a variable". I have a suspicion that Tcl's strategy of using foo here and $foo there may be confusing to new users, who must recall which one to use in which place. Furthermore, I am curious what references or lack thereof do to people's conceptual models of a language - having two variables point at the same thing. For instance PHP gives you the & operator to create a reference, C gives you pointers, Ruby and Python let you assign one thing to another and, in some cases, modify the thing pointed at by both variables. This also has me wondering what Scheme/Python/Ruby style pass by value with some kinds of values being modifiable is like for newer users... whether that makes sense or is confusing to have some kinds of things that can be changed, and others that can't. I'm currently searching for research and information on the topic, but in the meanwhile, what do you think? Relationship between access modifiers and typeI was thinking the other day it'd be interesting if C++ supported something like the following:
template<modifier T>
class A : public SomeClass {
public:
void GuarunteedMethod();
void AlwaysThereMethod();
T:
void DependsOnUser();
void MayNotBePublic();
};
template<modifier T>
class B : T SomeClass {
};
Then somewhere in code using the templates: A<public> X; // Object that has public DependsOnUser() A<private> X; // Object that doesn't B<public> X; // publically inherits from SomeClass B<protected> X; // protectedly inherits from SomeClass You can get the same effect in today's C++ as in A by splitting up the class more or in B's case by having dummy intermediary classes. A class has two different types I think, that which it presents to calling code, public interface, and that which it provides to extending code, protected interface (you could argue there's a third, the types that it presents to itself but that's not really an observer relationship). So in the sense that it changes the resulting type, the above C++ extension is consistent with the notion of templates as type factories. This got me thinking about what exactly the relationship between access modifiers and a class's type is. I'm not sure whether or not you could say that access modifiers change the type of member functions. Access modifiers do impose a compile time limit on who can use the function, which sounds related to types, but usually we only think of the type of a function to be it's return type + parameter types. Maybe I'm just caught up in the wording and access modifiers can be thought of as simply defining complex scopes, but it seems different to me from the concept of scope because it's not that the symbols aren't visible, it's that they're disallowed. Thoughts? :) Which Java compiler for a student/research project?I'm looking for a java compiler (source code) that is easy to understand and extend. Performance or full coverage of the language are not really relevant, as long as it's robust and realistic. Source code should be in ML or Java. Are there any canonical compiler for that kind of things? Thanks. Business Objects Quark - Haskell meets JavaThis looks very interesting: http://homepage.mac.com/luke_e/Menu8.html (Luke also posted an announcement to the Haskell mailing list) ICFP proceedings / Scheme workshopI haven't seen any posts about this yet, so I thought I'd point it out: ICFP 06 is over, and there are lots of interesting articles. E.g. from the Scheme Workshop:
What Makes Erlang Processes Tick?I was amazed to see the article concerning the C implemented Apache versus the Erlang implemented Yaws and immediately went looking for how Erlang emulated its processes. What I could not find after reading "Making reliable distributed systems in the presence of software errors", and "The development of Erlang" was what was making the magic happen. What is this high level of concurrency attributed to; bytecode instructions, abstractions built upon continuations, erlang-style trampolines, what? I would like to learn more about concurrency in general (and more specifically, its implementation), even to the point of playing around with these new ideas in Common Lisp and Scheme. I have reviewed CL-MUPROC, Termite, and Distel; and so far Distel seems to be the most interesting due to its lack of need for any underlying thread or process implemenation. Can anyone provide me some insight, whether explaination as to how Erlang makes process magic or Lisp equivalents, or reference readings to learn more about the subject. Thank you for your time, Mark Stahl References: Designing a Programming Textbook
This is a repost from my blog at Artima.com. In this forum, I am sure that I would have an interesting and differing point of view from those posted at Artima.
I've started work on a rather ambitious book called Fundamentals of Programming which will be intended as a programming book for people starting at the very beginning. I thought I would invite some feedback about my proposed structure.What languages would you use, and how would you structure your ideal programming text? Do you already have a favourite introductory text that can't be improved on? SSA + Type Inference = "Compile time" dynamic typing, "runtime" static typing?If we SSA transform our program and _then_ perform type inference (glossing over issues like if we get always infer somethings type), do we get strong static dynamic typing? e.g.: a = 1 b = a + 1 a = "hello" printLine a . . . a0 = 1 b0 = a0 + 1 a1 = "hello" printLine a1 Of course there are scenarios like:
But I believe that these scenarios can be overcome. My question is then, is this impossible for any reason? |
Browse archives
Active forum topics |
Recent comments
8 weeks 3 days ago
8 weeks 4 days ago
8 weeks 4 days ago
8 weeks 5 days ago
9 weeks 1 day ago
9 weeks 1 day ago
9 weeks 2 days ago
9 weeks 2 days ago
9 weeks 2 days ago
9 weeks 2 days ago