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

From Citizendium
Jump to navigation Jump to search
imported>Dan Nachbar
(added relational database model)
imported>G. Del Merritt
(clarification of some terms, minor reordering)
Line 13: Line 13:
* all the other key processor design speedups, at least the biggest concepts (each has a multiple ways of being realized)
* all the other key processor design speedups, at least the biggest concepts (each has a multiple ways of being realized)
* compiler optimizations
* 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
* [[Cross compilation]]: allows support for new/experimental platforms, or platforms for which a native development environment is not readily available
* [[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]]
* [[Bootstrap]]ping: Getting it all going.  Myriad examples include 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; along with the item above, a precursor to what open source and embedded projects do when they have to compile their code for various hardware/OS platforms
* [[hardware abstraction]]: the [[BIOS]] does this in an [[IBM compatible PC]]; the measure of success for a hardware abstraction can be seen in part by the portability of the code dependent upon it
* [[relational database model]] first proposed by [[E.F. Codd]] in 1969.  
* [[relational database model]] first proposed by [[E.F. Codd]] in 1969.  
* 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)
* 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)
* advent of managed code languages, such as [[Ada]] and [[java programming language|Java]], that can provide "type safety" and other benefits such as substantial software reuse by means of shared libraries


==References==
==References==
<references/>
<references/>

Revision as of 13:40, 25 March 2008


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
  • Cross compilation: allows support for new/experimental platforms, or platforms for which a native development environment is not readily available
  • Bootstrapping: Getting it all going. Myriad examples include 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; along with the item above, a precursor to what open source and embedded projects do when they have to compile their code for various hardware/OS platforms
  • hardware abstraction: the BIOS does this in an IBM compatible PC; the measure of success for a hardware abstraction can be seen in part by the portability of the code dependent upon it
  • relational database model first proposed by E.F. Codd in 1969.
  • 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)
  • advent of managed code languages, such as Ada and Java, that can provide "type safety" and other benefits such as substantial software reuse by means of shared libraries

References

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