Mar
30
comment Can we replace XML with JSON entirely?
@Andy of course I do. Just compare the functionality and flexibility of a full-blown Scheme vs. any of the XML tools, especially something as awful as xslt.
Feb
25
comment Programming languages with a Lisp-like syntax extension mechanism
@RenéG, because macros must be able to construct a valid AST and to transform an AST (i.e., be able to deconstruct macro arguments).
Jan
18
awarded  Yearling
Jan
11
comment Which components/phases of a JIT compiler are different from a traditional ahead of time compiler?
There are two big differences: JIT is severely time-constrained, so it cannot do things the way traditional backends do. But what the AOTs do not have, unlike JITs, is a very precise runtime profiling information, and the modern JITs use that a lot.
Dec
28
comment Is it difficult to develop a programming language which is closely related to human language?
If you count Lojban as a "human language", then it's not that difficult at all. Otherwise, the other human languages are a way too vague to be of any use as a formal system.
Dec
27
comment Why lambda/closures expressions came so late to C++?
@eldorado, closures were considered pretty worthless in mainstream ever since they failed miserably in Smalltalk. And now I'm pretty sure that LINQ forced closures into Java and C++, not anything else, because nothing else happened during this time frame.
Dec
24
comment Does the syntax of programming languages depend upon their implementation?
@Jack, you're trying to redefine what syntax is. There are no practical languages that need a Turing-complete parser, most are nothing more than context-free. And this is where the syntax should stay. Please do not extend this (already too stretched) notion anywhere else. And I already mentioned Curry-Howard isomorphism - it's all about semantics, far beyond the mere correctness rules. I think, the very term "type checking" is extremely counterproductive and should not be used, it is very misleading, it does not reflect the nature of the type systems.
Dec
23
comment How to use multiple programming languages together in the same program?
And it's actually the most common definition of what "scripting" is - a lightweight glue which binds together various smaller modules or standalone programs.
Dec
23
comment Why lambda/closures expressions came so late to C++?
@AgustinMeriles, probably not directly, but most certainly by shifting the public opinion. There is little doubt that it was specifically LINQ which lured the wider programming audience towards some bits of functional programming.
Dec
23
comment How to use multiple programming languages together in the same program?
@DocBrown, I'm totally serious. What made you think I'm joking? I do not know a single case where using domain specific languages won't provide a significant performance boost.
Dec
23
comment Why lambda/closures expressions came so late to C++?
Closures are hard to get right in a language without fully managed memory. You have to specify all the nasty nuances of ownership, lifetime, copying, etc. Closures in C++ are much, much more complicated than closures in Lisp or JavaScript. And it was not quite clear up until recently that closures are of any use for a typical enterprisey coding, not until LINQ changed the prevailing perception.
Dec
23
comment How to use multiple programming languages together in the same program?
1) There is no such thing as a "scripting language". Scripting is nothing but a mode of use of a language, and you can do scripting with pretty much any powerful enough language. 2) One must use dozens of different languages within a single project, it's the most efficient way of doing things. When it's not possible, then at least using two, three or more is always an option.
Dec
23
comment Does the syntax of programming languages depend upon their implementation?
@Jack, type system does much more than simply checking if types are correct. Even in primitive languages like C, typing injects some heavy semantics (implicit type conversions, for example), in more elaborate languages, like C++, you can practically program in type system alone (and there is a lot of other Turing-complete type systems). Think of Curry-Howard isomorphism - this is something well beyond the scope of anything "syntax". And, yes, what is called "syntax transforms" in Scheme has nothing to do with syntax, it's a very misplaced term.
Dec
23
comment Does the syntax of programming languages depend upon their implementation?
@Jack, syntax only rules which character sequences are acceptable as a valid program, but it does not cover any other validity constraints, most certainly not the typing. And type systems are much more than validity constraints, they've got semantic meaning, not just filtering out incorrect code.
Dec
8
comment Historical precedent for why Prolog is less popular than SQL in Imperative Programming?
Datalog is actually used in some very creative ways: cs.cmu.edu/~aldrich/courses/654/tools/bierhoff-bddbddb-05.pdf
Dec
5
comment How the Erlang get soft-realtime with GC?
I mean that if there is a known constant throughput of the garbage collector, with a known time in between epochs, you can, potentially, statically prove that your allocation rate do not exceed this threshold. Not sure if anyone is doing this in practice.
Dec
5
comment How the Erlang get soft-realtime with GC?
it's more up to the user, not the GC system. No GC algorithm can guarantee that a user does not choose a particularly pathological allocation pattern, and there is a pathological edge case for any possible GC algorithm with no exceptions. And yes, GC must run concurrently with your RT mutators, with a known and fixed throughput (e.g., on a dedicated CPU core). This way (assuming it's a mark&sweep) there is always a fixed maximum time in between epochs, so you can always predict what is the maximum possible size of unreclaimed memory at any moment.
Dec
4
comment How the Erlang get soft-realtime with GC?
you should not care about collection timing - the only requirement that it never ever blocks your RT processes.
Nov
10
comment Reference counting & GC in LISP
A significant subset of Lisp can live well without any GC at all, with nothing but a trivial region analysis.
Oct
20
comment Why does a bytecode VM use stack or registers opposed to direct operations?
What do you mean by "doing this directly"? Do you want to interpret, say, a DAG with phis instead of a flat bytecode? I'm affraid, there is no easy way to optimise such an interpreter, while for the flat ones you can do a lot of nice tricks (like threaded code, simple template JITs, etc.).