Computer science/Catalogs/List of seminal concepts in computer science: Difference between revisions
< Computer science | Catalogs
Jump to navigation
Jump to search
imported>Pat Palmer (yes) |
Pat Palmer (talk | contribs) mNo edit summary |
||
(21 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
This | This is a list of '''seminal concepts in [[computer science]]'''. | ||
* subroutines (originally implemented with self-modifying code; Whirlwind had a really cool instruction to help in that) | |||
* [[virtual memory]] - also [[memory management]] in general | |||
* 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]] | |||
* [[virtual memory]] - also [[memory management]] | ** Plus a bunch of language features/ideas, e.g. structures, which arrived in COBOL; different calling conventions (call-by-name, call-by-reference, call-by-value, etc) | ||
* [[compiler]] - also [[programming language]], [[interpreter]] | * [[operating system]] (invention of) - also [[batch processing]], [[timesharing]] | ||
* [[operating system]] - also [[batch processing]], [[threading]] | ** Switching processes, and support for multiple processors, by switching kernel stacks | ||
* [[ | * [[threading]] and local variable [[scope]], requiring use of [[stack frame|stack frames]] | ||
* [[ | ** stacks, in general, preceded some of the later elucidations, depending on exactly what you mean by 'threading' | ||
* hierarchical file systems | |||
* [[stored program architecture]] | |||
* [[Von Neumann architecture]] (having program and data in same physical memory) (EDVAC was the first instance in a design, the Manchester University 'Baby' was the first actual operating one, and the EDSAC was the first useful machine of this type) | |||
* 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 | |||
* [[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 - maybe a better example is the earlier [[IBM 360]] architecture, where the same virtual machine was instantiated in a number of totally different physical implementations | |||
* [[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) | |||
** networking in general - early networking support was, err, primitive! | |||
* advent of managed code languages, such as [[Ada programming language|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/> | ||
Latest revision as of 10:26, 30 March 2024
This is a list of seminal concepts in computer science.
- subroutines (originally implemented with self-modifying code; Whirlwind had a really cool instruction to help in that)
- virtual memory - also memory management in general
- 1952: the first compiler written by Grace Hopper[1] - also programming language, interpreter
- Plus a bunch of language features/ideas, e.g. structures, which arrived in COBOL; different calling conventions (call-by-name, call-by-reference, call-by-value, etc)
- operating system (invention of) - also batch processing, timesharing
- Switching processes, and support for multiple processors, by switching kernel stacks
- threading and local variable scope, requiring use of stack frames
- stacks, in general, preceded some of the later elucidations, depending on exactly what you mean by 'threading'
- hierarchical file systems
- stored program architecture
- Von Neumann architecture (having program and data in same physical memory) (EDVAC was the first instance in a design, the Manchester University 'Baby' was the first actual operating one, and the EDSAC was the first useful machine of this type)
- 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 - maybe a better example is the earlier IBM 360 architecture, where the same virtual machine was instantiated in a number of totally different physical implementations
- 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)
- networking in general - early networking support was, err, primitive!
- 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
- ↑ Grace Murray Hopper (proceedings of Grace Hopper Celebration of Women in Computing conference, 1994)