User loginNavigation |
ParadigmsClojure's Approach to Identity and StateClojure has been discussed here before. It fits in the Lisp family with S-expressions, macros, and functions as values. Like most Lisps, it's dynamically typed and impure. But its target focus is concurrency so symbols are defined immutably by default; its standard library's collection structures are immutable and persistent; and its various mutable concepts are threadsafe except, of course, for the back doors implied by I/O and JVM library interoperability. See vars, refs, and agents. What I wanted to highlight is position paper of sorts that Rich Hickey has posted on Clojure's Approach to Identity and State. An excerpt:
Hickey also addresses the choice to not follow Erlang's model.
The essay is worth a read on a couple of levels of interest to LtU. At an abstract level, it's a good example of a well-articulated design justification. Agree or not, it's clear that Hickey gave thought to his decisions. Too many language designers fall into the trap of blindly inheriting semantics from a favorite language and end up putting new lipstick on the same pig. Any language designer would do well to write an essay or two like this before jumping into their venture. At the specific level, the core approach is certainly worthy of discussion and alternative designs. Is mutable state really the best way to deal with "working models"? Are there things that the pure functional camp can do to make "working models" more convenient, e.g. do Clean's uniqueness types fit the bill at least for sequential programming, or are they too restrictive? Are there things that can make Erlang style actors less cumbersome to use especially when distribution isn't necessary? By James Iry at 2008-09-08 00:23 | Paradigms | Parallel/Distributed | 5 comments | other blogs | 21261 reads
Simply efficient functional reactivitySimply efficient functional reactivity. Conal Elliott.
I'm not sure exactly where to classify this submission to ICFP 2008, but I think many here will be interested in it. By Matt Hellige at 2008-04-07 17:36 | Implementation | Paradigms | 11 comments | other blogs | 19262 reads
Sliced Bananas On Opaque DataSliced bananas on opaque data (The expression lemma). Ralf Lämmel and Ondrej Rypacek.
I haven't even glanced at the paper yet, but it looks extremely interesting, and it's directly related to some recent discussion. This blog post from Ondrej is also relevant. VamOz: Visual Abstract Machine for OzVamOz: Visual Abstract Machine for Oz
By Andris Birkmanis at 2007-08-25 15:12 | Paradigms | Teaching & Learning | 1 comment | other blogs | 10102 reads
Diagram showing all programming paradigms and their relationshipsHere is a diagram showing all the main programming paradigms and their relationships. This is quite different from the usual diagram which just shows programming languages. This diagram condenses a lot of information in a compact way. If your favorite language is not mentioned here, make a convincing argument and I may add it. If you find any errors, please let me know. I will take all people's comments into account to improve the diagram. Note to Unix aficionados: the diagram was made using xfig running on Mac OS X. Edit: here is the latest updated diagram. No Ifs, Ands, or ButsNo Ifs, Ands, or Buts: Uncovering the Simplicity of Conditionals. Jonathan Edwards.
Many of us are skeptical of "visual programming", but also intrigued by the impact that powerful development tools might have on language design. This represents an interesting compromise. It addresses a pervasive problem in a novel way, and this is a paper with many interesting and accessible ideas. I look forward to seeing an implementation. Jonathan posted this on his blog, where there are already several comments. [I'm not sure where to put this... Seems like plain-old "Paradigms" is the best fit...] Future of software design?It's been a while since I submitted a story...here is some food for thought! What will programming look like in 20 years? Maybe it will be based on a "definitive language" like the speculations of the article Convergence in language design: a case of lightning striking four times in the same place (FLOPS 2006). Such a language will have a layered structure and its handling of concurrency is important. (Whether it is dynamically or statically typed is of absolutely no importance, BTW.) How will we program with such a language? Maybe we will program with feedback loops, as explained in Self management and the future of software design (FACS 06). This seems to be one way to handle complexity, the inevitability of software and hardware faults, and managing global behavior of a system. I am coordinating a new project, SELFMAN, that is looking at this. Comments? Is "post OO" just over?While studying the conference program of the upcoming OOPSLA 2006 I discovered under the category "essay" an author who has quite something critical to say about AOP:
This is not just another internet rant about the latest PL hype but the author, Friedrich Steimann, had done interesting work about AOP before. In particular his latest paper about typed AOP: AOP and the antinomy of the liar but also his award winning former critical AOP review: By Kay Schluehr at 2006-09-24 10:50 | Critiques | Meta-Programming | OOP | Paradigms | 22 comments | other blogs | 16434 reads
Pugs, Practicing the Theories.A lot of language theory goes past here on Lambda the Ultimate, but we rarely see that theory directly impacting commercial programmers. By shapr at 2005-04-05 21:09 | DSL | Fun | Functional | Implementation | Meta-Programming | OOP | Paradigms | Software Engineering | Teaching & Learning | 5 comments | other blogs | 10678 reads
Interactive Programming
By way of Joe Marshall in comp.lang.lisp:
Here's an anecdote I heard once about Minsky. He was showing a student how to use ITS to write a program. ITS was an unusual operating system in that the `shell' was the DDT debugger. You ran programs by loading them into memory and jumping to the entry point. But you can also just start writing assembly code directly into memory from the DDT prompt. Minsky started with the null program. Obviously, it needs an entry point, so he defined a label for that. He then told the debugger to jump to that label. This immediately raised an error of there being no code at the jump target. So he wrote a few lines of code and restarted the jump instruction. This time it succeeded and the first few instructions were executed. When the debugger again halted, he looked at the register contents and wrote a few more lines. Again proceeding from where he left off he watched the program run the few more instructions. He developed the entire program by `debugging' the null program. |
Browse archives
Active forum topics |
Recent comments
22 weeks 6 days ago
22 weeks 6 days ago
22 weeks 6 days ago
45 weeks 14 hours ago
49 weeks 2 days ago
50 weeks 6 days ago
50 weeks 6 days ago
1 year 1 week ago
1 year 6 weeks ago
1 year 6 weeks ago