Anatomy of applications

  • Applications execute code on microprocessors
  • The execution is (often) "mediated" by an operating system
  • The operating system is a software layer between applications and the hardware
  • On desktop systems it also provides a GUI for user interaction

Microprocessor

Parts of an application

  • Your code
  • Their code

Their code

  • Language standard libraries
    • e.g. printf() function from <stdio.h>
  • Operating system APIs and libraries
    • Platform dependent and not portable
    • Low level access to hardware
    • Desktop services
  • Additional libraries

Libraries

  • A collection of functions
    • Often in compiled format, i.e. a binary library
    • With header files for the "public" API
    • You might find yourself building libraries from source

Dependencies

  • Dependencies of an application are the libraries that are required for it to build and/or run
  • Getting the dependencies are often the biggest source of frustration when trying to build a large application
    • You might need a specific version
    • The dependency itself might have additional dependencies (AKA Dependency hell)

Dependency/Package managers

  • Resolve and download dependencies
    • fink, macports
    • newer: Homebrew
    • On Linux: apt or yum (there are others...)
    • On windows: OneGet and others (but I can't recommend any as I haven't used them)

Dynamic and static libraries

  • Static libraries get bundled into the application
  • Dynamic libraries are loaded by the application at run-time

Other types of applications

  • GPU programming
  • Microcontroller programming
  • "Web apps"

GPU programming

  • Have their own language or provide extensions to existing languages
  • The code is executed in the GPU rather than the CPU
  • GPU are great at parallel processing
  • So if your problem is parallelizable then it is well suited to GPU computing

Microcontroller programming

  • Direct access to a microcontroller's basic functions
    • or through libraries that implement common functionality
    • through custom OSs (e.g. RTOS)
    • through regular OS (Embedded Linux)
    • or through high level abstractions like Wiring/Arduino

Microcontroller boards

Microcontroller boards

Web Apps

  • Part of the code runs on your equipment
  • The other runs on a server
  • The network is an intermediate layer
  • There is an interconnection protocol to exchange commands and data

Anatomy of applications

By mantaraya36

Anatomy of applications

  • 1,163