User loginNavigation |
LtU ForumShould nested types capture type parameters?Should nested types capture type parameters?
Some observations:
I'm working on a data description language and can't decide which way to go on this. I'm hoping someone here has information or opinions that might tip me one way or the other. Distributed/Parallel language semanticsI am trying to work out the distributed or parallel semantics in a new language, and not making as much progress as I would like. I will present the main ideas that I would like to implement and request some feedback or relevant pointers. 1. Abstract state Fields and methods of the object may pertain to a specific abstract state. Methods can also have a different body depending on the current abstract state. For example, there is no setter method in the readOnly state. New states declared in subclasses can refine an inherited state, or they can be top-level (in which case the inherited state and the new state form the combined abstract state). The reason I believe this is relevant for parallelism is that the transition from one state to the other can be used as a trigger for an action, in other words the action "waits" for the transition-- a form of lock. 2. Services A. Capability B. Enqueuer C. Service D. Resource 3. Transactions A. Simple shared variable B. Versioned variable In case of conflict between different versions of the variable a conflict handler is called. The conflict handler can implement the following strategies: a) Fail b) Overwrite c) Merge Modifiers to the handler are "retries" and "timeout" (in case of conflict retry up to "retries" times after "timeout" is elapsed), "usenew" and "useold" (use the last modified of first modified version of the variable or attribute) 4. Parallel execution Many ideas, but I stumble on both theorical and implementation details (notably wrt versioned variables and abstract state). I would be grateful for some solid advice and material to look at. Is COBOL really understandable after 14 years.Hello, This article uses an old piece of COBOL code to see if it really is understandable after 14 years. Do you agree? Towards Hard Real-Time ErlangErlang's actor concurrency model is a good fit for a wide range of concurrent applications. One domain that would seem ideal is real-time control of concurrent physical processes. But as it stands right now Erlang is best suited for soft real-time applications - there's really nothing in the language or runtime geared towards hard real-time constraints. Towards Hard Real-Time Erlang talks about one piece of the puzzle: a hard real-time scheduler.
The paper closes with mentions of two more pieces of the puzzle.
Besides the scheduler, message passing, and garbage collector, what else do you think is needed before Erlang or something like it is a viable alternative in this domain? Or is the actor model really not such a great fit? *Edit: Based on a comment from renox added closing quotes about message passing and garbage collector and added message passing to the editorial question. Haskell for AI?Machine learning consists of a lot of math and AI have traditionally used logic and functional languages, not imperatives. So Haskell should be fit for this stuff no? Yet I don't say much applications using Haskell for AI. What is the standard AI-language today? Still LISP? Is it a Programming Language?For some time my colleagues and I have been working on the idea of representing software behaviour as a composition of partial behavioural descriptions, using the parallel composition operator P||Q of CSP. This gives rise to a pure mixin style behaviour modelling paradigm, with models that have executable semantics. A short description (presented at the 3rd International Conference on Evaluation of Novel Approaches to Software Engineering in Funchal, Madeira earlier this year) can be found here: http://www.metamaxim.com/download/documents/enase.pdf We are not sure, though, whether what we have produced can be classed as a programming language or not; and if not, what it is. Any thoughts on this? Thanks Languages ready for API EvolutionWhen I was describing my API design adventures in the Practical API Design book (btw. if there is anyone who would like to review the book for LtU, I am ready to provide a copy), I could not realize that many of these problems would not even appear if we had better languages, or systems more suitable for the DistributedDevelopment. I may be wrong, but I do not know about any language that would support modularity. And here I mean not compilation piece by piece, but also modularity in time. Because that is the kind of modularity that is needed quite often during development of APIs for our libraries. At one point of time we release a version of a library and distribute it to others by publishing it on the website. Now people unknown to us, distributed all around the world download it and use it. As a result, the amount of applications built on top of such library is increasing, which implies also that the amount of bugs and feature requests is growing too. After a while the time to release new version of the library comes. However what if the first version used to have a class: public abstract class View { public abstract String getDisplayName(); } What if one of the feature requests demands to add an HTML title to each view. Can we change the view class to following form: public abstract class View { public abstract String getDisplayName(); public abstract String getHTMLTitle(); } Indeed, this cannot be done. Existing subclasses of View would no longer compile, because the change is not source compatible. Also, even if someone links already compiled subclass with the new version of the library, the Java virtual machine will complain and throw some kind of linkage error, as definition of an abstract super class method is missing. I would love to see a language or system that would fail the compilation whenever I want to modify my already released classes in a style that could prevent some of their users to continue to use them in previously working way. This would be the real modularity, which is ready for changes in time. So far it seems to me that the current languages do not deal with changes in time really well. Just like Andrei described in his Enums in APIs blog, it seems that our languages do not think about the process of API evolution much and include constructs that one needs to avoid to make DistributedDevelopment possible. Releasing new version of libraries with modified APIs is really common and our software engineering practices cannot live without it, yet it seems that there is no language in the world that would make this easy and clueless. Or am I wrong? Design Concepts in Programming LanguagesFranklyn A. Turbak and David K. Gifford with Mark A. Sheldon (2008). Design Concepts in Programming Languages. MIT Press. I read portions of this textbook in draft form, and it's a near-encyclopedic take on programming language semantics, which includes what other textbooks on the subject are missing: a plethora of concrete examples and exercises, in the context of a series of small but practical programming languages. The book's friendly and informal tone makes even the most forbidding and formal topics seem accessible. The linked page includes a table of contents and sample chapter. (Disclaimer: the first author taught me most of what I know about computer science when I was an undergraduate at Wellesley.) By Tim Chevalier at 2008-08-22 20:51 | LtU Forum | login or register to post comments | other blogs | 6200 reads
type derivation for 'map map', yelp*newbie alert* I'm hoping this is a permissible question to ask here. I looked at the FAQ and it doesn't seem to explicitly disallow it. :) [haskell] The funny thing is that I've written map map to map a function over items in lists contained in a list. But I still don't understand this at all: Ada, C, C++, and Java vs. The SteelmanDavid A. Wheeler: Ada, C, C++, and Java vs. The Steelman
|
Browse archives
Active forum topics |
Recent comments
8 weeks 2 days ago
8 weeks 3 days ago
8 weeks 3 days ago
8 weeks 4 days ago
9 weeks 11 hours ago
9 weeks 12 hours ago
9 weeks 1 day ago
9 weeks 1 day ago
9 weeks 1 day ago
9 weeks 1 day ago