How programming languages are created?

  • #26
20
0
You should also look at Instruction Set Architecture.

http://en.wikipedia.org/wiki/Instruction_set
An instruction set, or instruction set architecture (ISA), is the part of the computer architecture related to programming, including the native data types, instructions, registers, addressing modes, memory architecture, interrupt and exception handling, and external I/O. An ISA includes a specification of the set of opcodes (machine language), and the native commands implemented by a particular processor.

Instruction set architecture is distinguished from the microarchitecture, which is the set of processor design techniques used to implement the instruction set. Computers with different microarchitectures can share a common instruction set. For example, the Intel Pentium and the AMD Athlon implement nearly identical versions of the x86 instruction set, but have radically different internal designs.

Some virtual machines that support bytecode for Smalltalk, the Java virtual machine, and Microsoft's Common Language Runtime virtual machine as their ISA implement it by translating the bytecode for commonly used code paths into native machine code, and executing less-frequently-used code paths by interpretation; Transmeta implemented the x86 instruction set atop VLIW processors in the same fashion.
 
  • #27
AlephZero
Science Advisor
Homework Helper
7,002
293
My understanding is that Lisp is usually interpreted, not compiled.

It's not an "either/or" situation. Efficient list-processing implementations often do compilation "on the fly" - i.e each "statement" in the code is compiled the first time you try to execute it, rather than compling everything up front. That preserves the ability to for the program to operate on itself (in simple terms, Lisp programs can rewrite their own source code when they are running) but the compiler can optimise the code when it is compiled. For example list-processing compilers often transform recursion into iteration - recursion is often the most efficient way to describe an algorithm in the source code, but iteration is the most efficient way to run it on a conventional computer.
 
  • #28
35,235
7,054
It's not an "either/or" situation. Efficient list-processing implementations often do compilation "on the fly" - i.e each "statement" in the code is compiled the first time you try to execute it, rather than compling everything up front.
This is a hallmark of interpreted languages - translate a section of code, execute, and repeat.
That preserves the ability to for the program to operate on itself (in simple terms, Lisp programs can rewrite their own source code when they are running) but the compiler can optimise the code when it is compiled. For example list-processing compilers often transform recursion into iteration - recursion is often the most efficient way to describe an algorithm in the source code, but iteration is the most efficient way to run it on a conventional computer.
 

Related Threads on How programming languages are created?

  • Last Post
Replies
1
Views
811
  • Last Post
Replies
19
Views
7K
  • Last Post
Replies
16
Views
3K
  • Last Post
2
Replies
29
Views
2K
  • Last Post
Replies
2
Views
584
  • Last Post
Replies
4
Views
1K
Replies
14
Views
1K
Replies
17
Views
2K
Top