User loginNavigation |
LtU ForumPirahã living-in-the-present language
Light reading from The New Yorker - April 16, 2007 about LtU's favourite amazonian tribe (previously on LtU Piraha Exceptionality: a Reassessment). Language Support for Fast and Reliable Message-based CommunicationLanguage Support for ... (pdf)
(And ppt slides) Standing on each others' feetThe below email was recently forwarded to me. From: Kent Dybvig To: qobi@purdue.edu Subject: Re: benchmarking Chez Jeff, [...] By longstanding policy, we do not publish nor support others in publishing benchmarks comparing Chez Scheme with different versions of Scheme or with other languages. Kent Discuss. Katahdin: Modifying your programming language as it runsKatahdin is a programming language where you can define new language constructs such as expressions and statements as easily as new types or functions. For example, you could define a new operator, a new type of loop, implement a syntax from another language that you like. After defining a new construct you can use it on the next line in the same file, so there is no need to recompile each time you want to add a new construct. Katahdin is powerful enough that you can define an entire existing language, or design a new language from scratch, making Katahdin a universal language interpreter. For example, most programming languages have a modulo, or remainer operator. To define one from scratch in Katahdin it is only a few lines:
method Get() { Katahdin is an application of parsing expression grammars and packrat parsing, an active area of research. The site contains a master's thesis and public domain source code. PLs and large scale developmentPersonally I'm very comfortable with using a combination of C++ (with STL, Fusion2, Phoenix2), Python (with PyGTK, SciPy) and SWIG. But then programming is just a single hobby of mine (audio stuff and some quantum mechanics, mainly). So I'd like to hear some opinions from more experienced or even professional developers out of curiosity. What do you think about the common PLs in use with regard to large scale development? Please don't compare different languages, but instead tell me about a particular PL you have used and why it is suited for a bigger team of programmers or why it is a hindrance. EDIT: "large scale" = "more than a handful of developers" ANN: Open Quark Framework for Java (CAL Language) 1.5.0The Open Quark team is delighted to announce a new version of the Open Quark Framework for Java, and its associated Eclipse Plug-in. Open Quark supports efficient non-strict functional evaluation in Java, and allows complete interoperability with Java, functional metaprogramming and evaluation control. Functions can be created programmatically in Java via a number of object models, and the full-featured Haskell-like language CAL allows large functional libraries and applications to be expressed conveniently. There is an increasingly complete Eclipse plug-in to support development in the CAL language. There is also a graphical language to create new functions. As usual, the software packages and collateral can be downloaded at the main Quark Framework page. A discussion forum can be found at on Google Groups. Version 1.5.0 is a feature release adding several important enhancements, including:
automatic program parallelization for multicore cpus as a software problemI just came across an article regarding Intel having massive multicore CPUs ready in the near future. This kind of CPUs will require a fundamental change of how we write programs, or so they say (there are plenty of discussions around about this). But do we really have to change the way we write software? I wonder if there can be a part on the chip that automatically makes different threads of execution out of a single thread, by correlating data dependencies at run-time. Just like branch prediction, a similar piece of logic could be used to 'predict' data correlations, and thus separating the instruction stream into different threads, as if the code was multithreaded. A special lookaside buffer could be used to prevent simultaneous access to memory locations: since data are always fetched from the cache, the cache itself could contain flags that can be used to monitor simultaneous access. The CPU would catch the simultaneous access event and modify its threads and prediction statistics accordingly, so as that next time the simultaneous access is avoided. I am asking LtU for this because I think the problem is essentially a software problem. In my mind, an instruction always targets a memory location (either directly or indirectly through registers), so the CPU could monitor dependent instructions and separate them into different threads of execution. The mechanism could be extended to registers, since registers are essentially memory locations inside the CPU. Assuming that dependency tracking could take place in run-time, what programming language semantics are required in order to help the hardware run the software more efficiently? Is the C semantics enough? For example, Fortran loops can be automatically vectorized because they do not contain pointer aliases. Finally, are purely functional programming languages better, on the semantics level, for automatic parallelization? on the surface, it certainly seems so, but what about languages that are translated to C (or equivalent) code? aren't those programs under the same constraints as C? would we have to eliminate C as the middleman and encode parallelization tips (coming straight from the FP semantics) directly in the instruction stream? What next?Hello Everyone, Just curious, Edit: Generalized question from "books" to "books, papers, or similar things". Distributed Objects vs. MessagingOz supports distributed objects, JINI can move objects. But Erlang generally speaking moves only data around, and in the Web Services debate there are folks who say that data-centric is the best way to go. As with all design issues there are probably several dimensions involved in deciding what approach to take; I'm curious to hear what people believe those are (the web services article lists "evolution, intermediaries, and recoverable operations") and when the tipping point shows up in favor of one approach or the other. Carnap Programming LanguageHas any one heard of Carnap Programming Language? Steven Ericsson-Zenith posted a comment on my blog inviting me to take a look. Since LTU is the coolest place to get new language information, I thought I would mention it here. I have been interested in programming multi-core and have been tracking Erlang and a few other developments. The Link to Carnap Programming Language: http://www.carnap.info/ The first two paras from this page: Carnap is a general purpose programming language for the next generation of many-core devices, many many-core systems and their applications. It introduces a process oriented programming model that allows programmers to seperate the concerns of data structures and the concurrent processes that act upon them. "The primitive process of a Carnap program is called an action. An action determines a local or shared state. Actions are assembled by construction to form the component processes of a program. Programs consist of concurrent processes that construct and interact via logically shared data structures and resources called contexts. Dorai Thodla |
Browse archives
Active forum topics |
Recent comments
8 weeks 4 days ago
8 weeks 4 days ago
8 weeks 5 days ago
8 weeks 5 days ago
9 weeks 2 days ago
9 weeks 2 days ago
9 weeks 3 days ago
9 weeks 3 days ago
9 weeks 3 days ago
9 weeks 3 days ago