Computer science/Catalogs/List of seminal concepts in computer science: Difference between revisions

From Citizendium
Jump to navigation Jump to search
imported>Subpagination Bot
m (Add {{subpages}} and remove any categories (details))
imported>David Gerard
(Grace Hopper wrote the first compiler in 1952)
Line 4: Line 4:


* [[virtual memory]] - also [[memory management]] in general
* [[virtual memory]] - also [[memory management]] in general
* 1950's (need exact date): the [[compiler]] (invention of) - also [[programming language]], [[interpreter]]
* 1952: the first [[compiler]] written by [[Grace Hopper]]<ref>[http://www.cs.yale.edu/homes/tap/Files/hopper-story.html Grace Murray Hopper] (proceedings of '' Grace Hopper Celebration of Women in Computing'' conference, 1994)</ref> - also [[programming language]], [[interpreter]]
* [[operating system]] (invention of) - also [[batch processing]], [[timesharing]]
* [[operating system]] (invention of) - also [[batch processing]], [[timesharing]]
* [[threading]] and local variable [[scope]], requiring use of [[stack frame|stack frames]]
* [[threading]] and local variable [[scope]], requiring use of [[stack frame|stack frames]]

Revision as of 17:22, 17 November 2007


This is a list of seminal concepts in computer science.

  • virtual memory - also memory management in general
  • 1952: the first compiler written by Grace Hopper[1] - also programming language, interpreter
  • operating system (invention of) - also batch processing, timesharing
  • threading and local variable scope, requiring use of stack frames
  • stored program architecture
  • probably EDVAC was the first instance: Von Neumann architecture (having program and data in same physical memory)
  • Harvard Mark I: Harvard architecture (having program and data in different physical memories)
  • 1950's (need exact date); Konrad Zuse was likely the first to propose pipelining of processor instructions for faster throughput (invention of); but I don't know what computer actually did it first
  • all the other key processor design speedups, at least the biggest concepts (each has a multiple ways of being realized)
  • compiler optimizations
  • advent of managed code languages, such as Java, that can provide "type safety" and other benefits such as substantial software reuse by means of shared libraries
  • hardware abstraction layer - having an OS (Unix) written 99% in a high-level language (C), so that to port the OS to a different processor required mainly writing a C compiler for that processor (I don't know a neat name for this, but it's a huge concept--it, and the item above, are precursors to what open source projects now do when they have to compile their code for various hardware/OS platforms--they use an intermediate language to shelter high-level development from platform details; the BIOS does this in an IBM compatible PC
  • the various ways (past and present) for distributing applications across a network, or making procedure calls across a network: EDI, COM, COM+, CORBA, RPC, XML-RPC, and now XML web services (so-called Service Oriented Architecture, or SOA)

References

  1. Grace Murray Hopper (proceedings of Grace Hopper Celebration of Women in Computing conference, 1994)