User loginNavigation |
LtU ForumGood parallel algorithms books?I'm interested in learning more about parallel algorithms and data structures (since it looks like they're going to become more and more important), and I have access to a decent university library. Does anybody have some favorite books or papers I might read? As usual on LtU, I'm also interested in how programming languages can make parallel programming faster, more scalable, and/or easier. So if you have some cool programming languages oriented toward parallel stuff, I'd love to hear of them so I can have a look. Terminology: Thunking vs QuotingIn Cat the construction of a nullary constant generating function (e.g. a thunk) is done using the "quote" operator. It pops a value off the stack, and pushes a nullary function onto the stack. In other words the quote operation has the type: ('a -> ( -> 'a)) I could have called the operation "thunk", but I find the term discordant (a purely subjective opinion). I wonder if there are other associations with the term "quote" which suggest maybe I would be better off if I called the operation "thunk"? Perhaps there is a better term? Any suggestions would be appreciated. Defining Types not as Classes but as Mathematical SetsHi, long time browser, first time posting. My background is largely in the C family of languages (specifically C, Java, and C#) but I've been reading into dynamic languages and it got me thinking about the advantages of dynamic type systems and bringing some of their advantages into the static world without sacrificing the bonuses static typing brings. An idea popped into my head when I asked what if an object's type and an object's class were different things and variables only refered to the former and were ignorant of the latter? Furthermore what if you viewed a type as a mathematical set of methods defining one method as equal to another method when their names and signatures are the same? For example, in such a system the following Java code wouldn't result in an error.
public class B { // Implicitly defines Type B { int op1(int), int op2(int) } public class C { Essentially you get dynamic type membership and static type capabilities. So I'm pondering: Putting functional database theory into practice: NixOS
An excellent example of how useful functional databases can be when applied to problems which require persistence. Expect New Major Language Within Five YearsAn eWeek article reports that "A group of software gurus gathered at TheServerSide Java Symposium to discuss the future of programming, saying we should expect to see more dynamic languages and possibly a new major language in the next five years." Some predictions mentioned:
The authors of the next big language better hurry up and release it! I find it interesting to see this degree of receptivity to new languages within a single language community, i.e. at a Java conference. Are attitudes towards new languages changing, perhaps because there's more awareness of alternative approaches these days? LALR grammar of C++Recently i had a look on Roskind's C++ grammar. It is used by Yacc to generate parser for C++. But in gcc and even in eclipse CDT's parser these people havent used parser generated by Yacc. I tried to find out why LALR grammar of C++ is not a popular choice for these tools. Somewhere I read that it is difficult to build the symbol table with LALR parsing of C++. Is it correct? why it is so? Type Directed ConcurrencyType Directed Concurrency by Deepak Garg and Frank Pfenning (2005)
This paper doesn't seem to even have been mentioned on LtU before. Frank Pfenning is one of the computer scientists I watch and this is related to LolliMon and CLF which I find quite interesting. The language that results is very LolliMon/CLF-esque. Mapping language style to ancillary issues?It would be of interest to me to see a codification of the impact language style has on ancillary tools. For example, I want my IDE to show me wherever a given variable is used. You can try to do that with just textual searches, but if the language allows runtime aliasing then you are presumably going to have a more difficult time of statically generating the relevant information about variable use. Or, you are going to have to restrict the breadth of information generated. (IntelliJ actually does do something along these lines for Java, although I suspect it doesn't follow aliasing chains?) I'd guess that language styles are more-or-less amenable to particular such issue. I guess I see this as a way of guiding myself and others towards understanding another angle on why e.g. functional programming matters, or mutable state is evil, etc. Functions shouldn't be lists, functions should be cast to listsIn Joy, and other similar dynamic languages, values can be evaluated like functions that simply yield themselves. This means that any list can be treated as a function. While elegant, this has several drawbacks:
I've gone into more detail in this article on my web-site. As a result of these issues I've decided to differentiate functions from lists of functions in the Cat type system. In order to reclaim some of the elegance of Joy (e.g. using functions and lists interchangeably) I've decided to use implicit function to list casts. As a general rule I feel implicit conversions are evil, but I think the elegance gained is worth it in this circumstance, because instead of writing:
I can now simply write:
This is hopefully a useful insight (if it isn't too obvious) to anyone looking at the relationship between dynamically typed and statically typed languages. Any thoughts? Am I stating the obvious? Or is this in fact a useful observation? Are there any forseeable problems with the approach? Have to spell out Standard ML from now on...
|
Browse archives
Active forum topics |
Recent comments
8 weeks 4 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 3 days ago
9 weeks 3 days ago
9 weeks 3 days ago