views:

261

answers:

4

it's assembler right? can someone please point out the progression that we've had in programming languages since assembler to the days of asp.net, namely the chronological order of languages?

+5  A: 

Here's a wiki timeline of all programming languages.

I would include a FTA table, but the list is very robust and extensive.

And also, the lowest language you ever get to is assembly (aside from straight up issuing machine instructions), regardless of what other language is built on top (including ASP.NET). Other languages are really just abstractions on top of assembly. In fact, ASP.NET gets compiled into IL (Intermediate Language) code, which then get's JITed into assembly. Assembly is as close to the metal as you're going to get.

Joseph
Don't forget entering machine language directly by using switches on the computer console.
John Saunders
Don't forget butterflies. Although, they may actually be extremely high level.
deceze
I never bought one of those computers, but I looked at the ads and thought about buying one. The IMSAI at least had broad switches, and looked like it would be much easier on the fingers than the Altair. Of course, the ENIAC was programmed with plugboards.
David Thornley
@John Yeah I was thinking someone might point that out, but I figured if someone wanted to actually issue machine instructions they are at a whole different level than this question. =P
Joseph
Assembler is NOT the lowest level language you can reach. While it isn't common, it is possible to generate application code that includes both C code and some kind of hardware description langauge (VHDL, Verilog, ...). There's nothing *conceptually* wrong with generating (CMOS) transistor circuits or even chip geometry directly. Each of these have descriptive formalisms, and can be encoded and processed by tools. I happen to to work on one tool,DMS (www.semanticdesigns.com/Products/DMS/DMSToolkit.html) that has been used to manipulate C, C++, VHDL, Verilog, and transistor circuits.
Ira Baxter
+1  A: 

There are two different dimensions to consider here, what I'd call vertical growth (languages build up over time from one generation to the next) and horizontal growth (syntactic improvements and reduction in complexity.)

A good explanation of vertical change is seen here: http://web.sxu.edu/rogers/sys/generations.html And a nice, yet incomplete, illustration of horizontal change it here: http://oreilly.com/news/graphics/prog_lang_poster.pdf

nikmd23
+5  A: 

To be pedantic, "assembler" is not actually a language (any more than "compiler" is;-) -- rather, it's a program that takes a source file in "assembly language" and emits binary machine code. The binary machine code can be said to be lower-level than the assembly language, since the latter allows use of some symbols and often includes a macro processing ability as well.

"Below" binary machine code, there may be other levels, known as "microcode" (but there might not be -- the CPU might be implemented entirely in real hardware, without any microprogramming aspect). That might be relevant only if the system's architecture allowed programmers to alter the microcode, especially by adding to it, etc -- there have been machines that did that, but I don't believe any currently commercialized CPU does. So you probably don't have to care about that (and the by-now-esoteric distinctions between vertical and horizontal microcode, etc, etc;-).

Alex Martelli
+2  A: 

Programming languages are just ways to assemble solutions to computing problems. The argument is "assembled out of what?" From that point of view, I'd suggest the following evolutionary curve:

Napier's Bones
Babbage's difference engine
Jacquard (card) looms
(Conceptual) Abstract Turing machines/Post Systems/Church's calculus
Relay Computers (Aiken?)
Vacuum tubes as switching elements (Eniac)
Transistor-based computers
Microprogrammed machines
Integrated Circuits
Large Scale Circuits

with "assembler" being the programming language used to put together solutions consisting of instructions for real machines starting with the vacuum tube systems. (I'm not sure the relay machines actually had assemblers). Programming langauges are just ways to put together high level commands that reduce in effect to assembler instructions.

Ira Baxter