Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p><strong>This is highly subjective</strong></p> <p>The syntax of a language is just a method of expressing desired semantics. It is the semantics that drive performance. The 'performance implications of syntax' is equal to the performance implications of semantics given that <strong>past syntax analysis the syntax is often irrelevant.</strong></p> <p>The performance implication of semantics comes down to the environment that those semantics are being run in. This is why we have a CPU and a GPU, because they each can perform the semantics of a given low-level language quicker.</p> <p>There is not really an answer to this without explicitly stating the target environment. A cluster of machines will deal better with concurrent programs, and there are syntax that <strong>express concurrency</strong> such as Erlang.</p> <p>What you should be focusing on perhaps is how a generalized virtual machine or environment can provide the best performance for a wide range of semantics. For example, if you ported the Erlang syntax to JVM, could the virtual machine <strong>recognize</strong> that the language was single-assignment and concurrent without the requirement of locks? Could it optimize for this? Stackless virtual-machines are a good example of attempts to make efficient a generalized environment dependent on required semantics.</p> <p>Really the question is: <strong>can the environment be optimized for a class or constrained set of semantics, when the environment is by definition, general?</strong></p> <p>I would recommend learning a bit about compilers (and where syntax stops mattering) and then look at something like LLVM, then re-ask yourself the question. As to if function languages are more suited to performance depends on the environment the <em>translation</em> is being executed in (multi-core, distributed, small-embedded device).</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. COI do not agree entirely, but I can see your point. For example, take a look at this paper (http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.45.4503 ) which restricts the syntax of the language - so that certain optimizations can be applied. I completely understand your emphasis on semantics, but I am not worried about implementing syntax-A on virtualmachine-B. Let us say there was one holy VM and you had syntax-A, syntax-B... syntax-N. Which syntax could theoretically push the underlying VM to its peak? As to environment - I am seeking single core, desktop applications.
      singulars
    2. COI think you might be missing my point. Image for a second that the CPU (x86) is a holy-vm, which language can be compiled into the most efficient machine code? Now imagine that the holy-vm is a Cell processor, what now? Given that this 'holy VM' does not exist, and all environments are built to do certain things well, the point is moot imho. But, I am prepared to accept I might well be missing the point myself.
      singulars
    3. COThe paper you cited seems to be about efficient translation of a syntax into SSA form. In this case, it is about the best syntax for translation into this form. I could design an intermediate form based on a stackless machine, then think about what syntax would best suit this. Syntax and semantics are about context. There is no single answer unless you specify a target architecture and language purpose.
      singulars
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload