Computer Science

Abstraction Computer Science

Abstraction in Computer Science refers to the process of simplifying complex systems by focusing on the essential features while ignoring the details. It is a fundamental concept that allows programmers to create efficient and scalable software by breaking down complex problems into smaller, more manageable components. Abstraction is used in many areas of computer science, including programming languages, algorithms, and data structures.

Written by Perlego with AI-assistance

6 Key excerpts on "Abstraction Computer Science"

  • Philosophy and Computer Science
    • Timothy Colburn(Author)
    • 2015(Publication Date)
    • Routledge
      (Publisher)
    enlargement of content. For computer scientists, this allows programs and machines to be reasoned about, analyzed, and ultimately efficiently implemented in physical systems. For computer users, this allows useful objects, such as documents, shopping malls, and chat rooms, to exist virtually in a purely electronic space.

    Abstraction in Computer Science

    Understanding abstraction in computer science requires understanding some of the history of software engineering and hardware development, for it tells a story of an increasing distance between programmers and the machine-oriented entities which provide the foundation of their work. This increasing distance corresponds to a concomitant increase in the reliance on abstract views of the entities with which the discipline is fundamentally concerned. These entities include machine instructions, machine-oriented processes, and machine-oriented data types. I will now try to explain the role of abstraction with regard to these kinds of entities.
    Language Abstraction
    At the grossest physical level, a computer process is a series of changes in the state of a machine, where each state is described by the presence or absence of electrical charges in memory and processor elements. But as we have seen, programmers need not be directly concerned with machine states so described, because they can make use of software development tools which allow them to think in other terms. For example, with the move from assembly to high-level language, computer scientists can abandon talk about particular machine-oriented entities like instructions, registers and word integers in favor of more abstract statements and variables. High-level language programs allow machine processes to be described without reference to any particular machine. Thus, specific language content has not been eliminated, as in mathematical or deductive systems, but replaced by abstract descriptions with more expressive power.
  • Putting Information First
    eBook - ePub

    Putting Information First

    Luciano Floridi and the Philosophy of Information

    • Patrick Allo, Patrick Allo(Authors)
    • 2011(Publication Date)
    • Wiley-Blackwell
      (Publisher)
    interaction patterns . Certainly, the objective of computer science is at times similar to that of mathematics—for example, when proving theorems about formal languages and the automata that process them. However, the central activity of computer science is the production of software, and this activity is primarily characterized not by the creation and exploitation of inference structures but by the modeling of interaction patterns. The kind of interaction involved depends upon the level of abstraction used to describe programs. At a basic level, software prescribes the interacting of a certain part of computer memory, namely, the program itself, and another part of memory, called the program data, through explicit instructions carried out by a processor. At a different level, software embodies algorithms that prescribe interactions among subroutines, which are cooperating pieces of programs. At a still different level, every software system is an interaction of computational processes. Today’s extremely complex software is possible only through abstraction levels that obscure machine-oriented concepts. Still, these levels are used to describe interaction patterns, whether they be between software objects or between a user and a system.
    What is a “level of abstraction” in computer science? The history of software development tells a story of an increasing distance between programmers and the machine-oriented entities that provide the foundation of their work, such as machine instructions, machine-oriented processes, and machine-oriented data types. Language abstraction accounts for this distance by allowing programmers to describe computational processes through linguistic constructs that hide details about the machine entities by allowing underlying software to handle those details. At the most basic physical level, a computer process is a series of changes in the state of a machine, where each state is described by the presence or absence of electrical charges in memory and processor elements. But programmers need not be directly concerned with machine states so described, because they can make use of languages that allow them to think in other terms. An assembly language programmer can ignore electrical charges and logic gates in favor of language involving registers, memory locations , and subroutines . A C language programmer can in turn ignore assembly language constructs in favor of language involving variables, pointers, arrays, structures , and functions . A Java language programmer can ignore some C language constructs by employing language involving objects and methods . The concepts introduced by each of these languages are not just old concepts with new names. They significantly enlarge the vocabulary of the programmer with new functionality while simultaneously freeing the programmer from having to attend to tedious details. For example, in the move from C to Java, programmers have new access to active
  • Principles of Computer System Design
    eBook - ePub
    • Jerome H. Saltzer, M. Frans Kaashoek(Authors)
    • 2009(Publication Date)
    • Morgan Kaufmann
      (Publisher)
    the communication link . These three abstractions are so fundamental that theoreticians compare computer algorithms in terms of the number of data items they must remember, the number of steps their interpreter must execute, and the number of messages they must communicate.
    Designers use these three abstractions to organize physical hardware structures, not because they are the only ways to interconnect gates, but rather because
    they supply fundamental functions of recall, processing, and communication,
    so far, these are the only hardware abstractions that have proven both to be widely useful and to have understandably simple interface semantics.
    To meet the many requirements of different applications, system designers build layers on this fundamental base, but in doing so they do not routinely create completely different abstractions. Instead, they elaborate the same three abstractions, rearranging and repackaging them to create features that are useful and interfaces that are convenient for each application. Thus, for example, the designer of a general-purpose system such as a personal computer or a network server develops interfaces that exhibit highly refined forms of the same three abstractions. The user, in turn, may see the memory in the form of an organized file or database system, the interpreter in the form of a word processor, a game-playing system, or a high-level programming language, and the communication link in the form of instant messaging or the World Wide Web. On examination, underneath each of these abstractions is a series of layers built on the basic hardware versions of those same abstractions.
    A primary method by which the abstract components of a computer system interact is reference . What that means is that the usual way for one component to connect to another is by name
  • Philosophy of Computer Science
    eBook - ePub

    Philosophy of Computer Science

    An Introduction to the Issues and the Literature

    • William J. Rapaport(Author)
    • 2023(Publication Date)
    • Wiley-Blackwell
      (Publisher)
    Briefly, I think the “abstract properties” are the design for the realization; the engineers build the realization – they don't design it.) But it makes an interesting point: Brooks seems to be saying that computer scientists only design abstractions, whereas other (real?) engineers implement them in reality. This is reminiscent of the distinction between the relatively abstract specifications for an algorithm (which typically lack detail) and its relatively concrete (and highly detailed) implementation in a computer program (we'll look into this in Chapter 10). Brooks (following Zemanek, 1971) calls CS “the engineering of abstract objects”: if engineering is a discipline that builds, then what CS‐considered‐as‐engineering builds is implemented abstractions (see Chapter 13 for further discussion). In 1977, when he first wrote these words (see Brooks, 1996, p. 61, col. 1), very few people other than scientists, engineers, business people, and a few educational institutions had access to computing machines (typically, large mainframes or only slightly smaller “minicomputers”) – certainly there were no personal computers (sometimes these used to be called “microcomputers”) or laptops, tablets, or smartphones. So, for Brooks, what computer scientists build, unlike what other engineers build, are not things for direct human benefit but rather things that in turn can be used to build such directly beneficial things. Put more simply, his answer to the question “What is a computer?” seems to be: a computer is a tool (and a computer scientist, who makes such tools, is a “toolsmith”) (Brooks, 1996, p. 62, col. 1). But much of what he says against CS being considered a science smacks of a different battle, one between science and engineering, with scientists belittling engineers
  • Managing Complexity of Information Systems
    eBook - ePub
    • Pirmin P. Lemberger, Mederic Morel(Authors)
    • 2013(Publication Date)
    • Wiley-ISTE
      (Publisher)
    An interesting by-product of the above discussion on K-complexity and Bennett's depth is that these concepts can help us clarify what is the level of abstraction of the model for a system. This is particularly important, as most complex systems, such as ISs, need several descriptions at different scales. As we will argue later, scale is precisely one of the attributes of an abstraction level of a model.
    Having a clear idea of what an abstraction level is will be of particular importance when we discuss abstraction in software engineering in section 2.3.2 and IS modeling best practices in section 4.3.1 . Abstraction levels in IT are customarily denoted by well-known terms that correspond, more or less, to layers of IT architecture such as the business process architecture, the software architecture, the application architecture, the hardware architecture, and so on.
    To define the level of abstraction of a model of a system, we use an analogy. The system under consideration is represented by a binary string s : think of it as its description at a given scale as we explained earlier. A model of this system, at a given scale, can be considered a compressed version of its explicit description. We thus assimilate a model with a program p that generates the string s through some computing mechanism such as a Turing machine. The Turing machine should be considered here as a metaphor for the design process that leads from the model of a system to the system itself. To set the ideas in an IT context, consider the system as a business application, and its model is a set of UML diagrams.
    Figure 2.4.
    The model for a piece of software can consist of a set of UML diagrams. These diagrams can be thought of as a compressed version of the software to be produced: they are to be read and interpreted by a designer to produce the desired piece of software. This closely parallels the concepts of Bennett's logical depth where a compressed description of an object is a program run by a Turing machine, which produces the explicit description of an object. An abstraction level of the description of a system is characterized, besides the scale, by its level of compression
  • Foundations of Geometric Cognition
    • Mateusz Hohol(Author)
    • 2019(Publication Date)
    • Routledge
      (Publisher)
    3 Embodiment and Abstraction 3.1 Introduction and synopsis of the chapter
    Although abstraction has been the subject of detailed philosophical discussion over the centuries, the general notion it rests upon is easy to grasp. An abstraction is a process or operation that preserves something while simultaneously abandoning something else (see Angelelli, 2004). We are interested in abstraction as a mental process that produces abstract ideas (concepts) expanding our knowledge. We can encounter such an understanding of abstraction in Locke’s famous treatise (1689/1999) entitled An Essay Concerning Human Understanding . The philosopher notes that an abstract idea of a triangle refers to a triangle in general, which is “neither Oblique nor Rectangle, neither Equilateral, Equicrural nor Scalenon; but all and none of these at once,” remarking that even this idea is not among the most “abstract, comprehensive and difficult” (ibid., Book VII, pp. 589–590).
    In a certain sense, not only geometric ideas are abstract but all concepts are. Since the late 1970s, cognitive psychologists and linguists have distinguished between two dimensions of conceptualization: the horizontal and the vertical (Rosch, 1978). The former concerns how our minds move from individual exemplars (specific cats or equilateral triangles) toward whole categories (“cat,” “triangle”). The latter, the vertical dimension, applies to the hierarchical organization of concepts: “cat” and “triangle” can be called basic-level concepts, while “Neva Masquarade” (the breed of my cat) and “equilateral triangle” are subordinate, and “vertebrate” and “geometric shape” are superordinate ones. Even though the dimensions are distinct, they both involve abstraction (see Maruszewski, 1984). The acquisition of each concept is associated with the process of horizontal abstraction of specific details of exemplars; the vertical transition from the basic level to the more abstract superordinate one involves the omission of further features (not every vertebrate has a cat’s tail and not every geometric shape is characterized by the sum of the angles of 180°).
Index pages curate the most relevant extracts from our library of academic textbooks. They’ve been created using an in-house natural language model (NLM), each adding context and meaning to key research topics.