Skip to content

Instantly share code, notes, and snippets.

@Eremiell
Created April 29, 2015 18:22
Show Gist options
  • Save Eremiell/fac87eee95ea00a9b2e4 to your computer and use it in GitHub Desktop.
Save Eremiell/fac87eee95ea00a9b2e4 to your computer and use it in GitHub Desktop.
Definitions

Definitions

Symbols

  • () - parentheses/brackets
  • [] - brackets/square brackets
  • {} - braces/curly brackets
  • <> - chevrons/angle brackets
  • / - slash
  • \ - backslash
  • ! - bang/exclamation mark
  • @ - at
  • # - hash/pound
  • $ - dollar
  • % - percent
  • ^ - caret
  • & - ampersand
  • * - asterisk/star
  • : - colon
  • ; - semicolon
  • ' - apostrophe/single quote/tick
  • " - quotation mark/double quote
  • | - pipe
  • , - comma
  • . - dot/point/full stop
  • ? - question mark
  • ~ - tilde
  • ` - backtick
  • + - plus
  • - - minus/dash/score
  • _ - underscore
  • #! - shebang (condensed from hash-bang)
  • ?: - ternary

Hardware and low level terminology

  • FET field-effect transistor - basic building block of modern computers
  • MOSFET metal oxide semiconductor FET - most used FET variant in modern computers
  • MESFET metal semiconductor FET - sometimes used especially in CPU designs
  • processor - a brain of computer, used to compute all the operations
  • CPU central processing unit - processor
  • FPU floating point unit - part of (some) processors, often a standalone co-processor
  • GPU graphics processing unit ~ video card (actually a kind of computing units utilized on these cards, but can be seen as APUs and such as well)
  • SPU sound processing unit - audio card
  • APU accelerated processing unit - a co-processor with enhanced capabilities to compute some kind of operations, often a GPU
  • NIC network interface card - a circuit used for network communication
  • ALU arithmetic logic unit ~ processor (part of)
  • CU control unit ~ processor (part of)
  • PCB printed circuit board - a circuit printed on a piece of board
  • motherboard/mainboard - a main PCB of every computer, for consumer computers usually integrates a NIC, SPU and a video card as well as some USBs and other I/Os
  • RAM random access memory - volatile memory, stores data and instructions used right now, erased on power off, easy to read and write
  • ROM read only memory - non-volatile memory, stores data and instructions to be used at any time during computer operation, easy to read sequentially, harder to read non-sequentially (randomly), even harder to write (if that's even possible on computer uptime or ever)
  • PROM programmable ROM - unlike basic ROM, it can be programmed (at least once)
  • EPROM erasable PROM - unlike basic PROM, it can be erased a reprogrammed (basic EPROMs are erased by UV radiation)
  • EEPROM electrically EPROM - unlike basic EPROM, it can be erased by electricity, making it much easier to be reprogrammed
  • cache - special memory used for quicker access - part of processor, term also used in networking for similar concept
  • register - a piece of processor's cache (a single address in it)
  • pin - a single signal conductor
  • bus - a set of conductors of certain width (8, 16, 32, ...)
  • V logic - a circuit, whose 0 is around 0V and it's 1 is around V, giving it more voltage than V usually ends in damaging the system, common are 3.3V, 5V, 9V, 12V and 19V logic
  • I/O - input output
  • computer - either a CPU, or a combination of CPU, RAM, ROM and I/O
  • embedded system - a very small computer, being often used to be embedded into some larger products like ovens, microwave ovens, washing machines, lifts, etc.
  • microcomputer - a computer, which can be easily transported by one person (from embedded systems up to desktop computers)
  • mainframe - a huge, heavy, expensive, powerful computer, usually owned by large corporations
  • microcontroller - a one chip computer, containing CPU, RAM, ROM and I/O
  • one chip - an embedded system sporting exactly one chip, usually a microcontroller
  • consumer computer - a modern computer of reasonably high power and affordable price with lots of I/O usually including most of keyboard, mouse, touchpad, touchscreen, USBs, NICs, speakers and display, eg. laptops, desktops, tablets, cell phones, ...
  • BIOS basic input output system - tells computer at start how to initialize various inputs and outputs
  • FDD floppy disk drive - kind of removable off chip ROM, diskette
  • HDD hard disk drive - kind of off chip ROM, used to save user data
  • SSD solid state drive - kind of off chip ROM, unlike HDD has no moving parts, which makes it faster
  • OS operating system - a set of programs containing kernel and drivers allowing user to use computer more conveniently
  • FS file system - describes, which pieces of data on given ROM belong together, forming files with given beginning and end
  • part partition - a logical part of a ROM, containing one FS
  • RAID redundant array of inexpensive disks - a way to combine several ROMs into one larger unit, usually having some redundancy to prevent fatal damages to data
  • FPGA field-programmable gate array - a kind of chip, which can be programmed to represent various hardware components

Digital logic

  • bit - a single piece of data (0 or 1)
  • nibble - 4 bits
  • byte - 8 bits
  • halfword - 16 bits
  • word - 32 bits
  • kb kilobit - 1000 bits (10^3)
  • kib kibibit - 1024 bits (2^10)
  • kB kilobyte - 1000 bytes (10^3)
  • kiB kibibyte - 1024 bytes (2^10)
  • signed - having a sign (positive or negative)
  • unsigned - not having a sign (always positive)
  • char - byte
  • short - halfword
  • long - word
  • long long - 2 words
  • bool boolean - (hypothetically) 1 bit
  • true - 1
  • false - 0
  • encoding - a way to describe, what given piece of data means
  • magic number - a specific number to appear in the header of the file to denote it as encoded using given encoding (used mostly on UNIX-like systems)
  • little endian - data is stored in memory in a way, that least significant bit (value 1) is stored first and most significant bit is stored last
  • big endian - data is stored in memory in a way, that least significant bit (value 1) is stored last and most significant bit is stored first

Basic programming terminology

  • variable - a piece of data
  • global - existing and accesible anywhere in the program
  • local - existing and accesible in some part of the program
  • constant - once set, never changes
  • pointer - an address of data
  • array - a set of variables of the same type stored under common name
  • routine - algorithm
  • main - basic routine
  • subroutine - additional routine
  • procedure - subroutine without any return values
  • function - subroutine with at least one return value
  • method - subroutine being part of an object
  • struct structure - a set of variables having a distinct meaning and serving a distinct purpose
  • union - a piece of memory to be understood in several distint ways
  • object - a set of variables and methods having a distinct meaning and serving a distinct purpose
  • member - a variable or subroutine being part of an object
  • address - location of given variable or routine in memory (every byte has an address)
  • null - 0x00 zero address, beginning of memory, mostly used as invalid pointer
  • null character - \0 a byte of value 0, often used to denote end of character array
  • EoF end of file - a special character returned when program reaches end of file, usually -1
  • CR carriage return - a special character telling an output to return to the beginning of the line, escape sequence \r, value 0x0d
  • LF line feed - a special character teeling an output to move to the next line, escape sequence \n, value 0x0a
  • EoL end of line - a special character or set of characters denoting end of line, OS specific, on modern systems usually implemented as CR (Mac OS), LF (UNIX-like inc. Mac OS X) or CRLF (Windows)
  • statement - a single instruction
  • expression - a statement having a value
  • L-value left side value - an expression representing a given address in memory, data can be saved into it
  • R-value right side value - expression
  • operator - a special symbol to be understand as distinct operation (adding, substracting, ...)
  • call - calling a subroutine
  • argument/actual parameter - the values with which we call
  • parameter/formal parameter - the kinds of value, subroutine is expecting when getting called
  • return - generally both types of value subroutine returns and the actual values, sometimes specified as return type and return value
  • declaration - an act of telling, what type a variable or routine is
  • definition - an act of giving the variable or routine a meaning
  • prototype - a declaration of routine without an immediate definition
  • (preprocessor) directive - an instruction for preprocessor
  • include/import - one of common directives, tells preprocessor to include another complete file at this point
  • define - one of common directives, tells preprocessor to replace any instances of defined string with it's definition
  • condition - an expression to be evaluated as true or false
  • conditional statement - a statement that does something if it's condition is true and something else if it's false
  • loop/cycle - a statement repeating it's inner block and evaluation as long as it's condition is true
  • bottom-up - a way of software analysis and implementation, developer starts with the very basic things and build the solution out of them
  • top-down - a way of software analysis and implementation, developer starts with the top level logic and breaks it into partial subroutines as needed

Development and communication terminology

  • VCS version control system - a system to control various versions of the same source code (or other files), having trackable and comparable history of all versions, makes development easier and controllable
  • SCM source code management - VCS
  • branch - a concept of developing something independently of other things being developed at the same time, utilized by most VCSs
  • fork - a concept of developing a new version of some software independently on development done on the original software, usually with different goals
  • bug tracker/issue tracker - a system to control known bugs/issues with the software and eventually solve them
  • IRC internet relay chat - an oldest version of real time online chat, still avidly used by most developer groups
  • ML mailing list - a tool for group email messaging on given topic, used by most developer groups
  • newsgroup - an older tool similar to ML, still used in some groups nowadays
  • UG usegroup/usenet newsgroup - newsgroup
  • SSL secure sockets layer - a standard way of encrypting data for traversal over networks
  • TLS transport layer security - a newer versions of SSL
  • telnet - a distant non-encrypted access to computer
  • SSH secure shell - a distant SSL/TLS encrypted access to computer
  • PGP pretty good privacy - a standard way to sign and/or encrypt an email communication
  • GPG GNU privacy guard - a most common PGP implementation
  • GNU GNU's not UNIX - an organisation developing many FLOSS tools for UNIX-like systems replacing proprietary UNIX tools
  • OSS open source software - a software with it's source publicly available, not necesarilly a FS, even though it quite often is
  • FS free software - a software with permissive licences (anyone's free to change it and redistribute it)
  • LS libre software - though FS usually means, the software has to be OSS as well, this term contains both concepts explicitly
  • FOSS free open source software - software which is explicitly both free and open source
  • FLOSS free libre open source software - a software which is explicitly all of free, libre and open source, which term is seen as higly redundant by some people
  • copyright - a right to copy given thing
  • copyleft - a concept of licences enforcing freedom of given thing
  • GPL general public licence - a strongly copyleft licence by GNU, enforcing resharing of given thing and all of it's derivates
  • LGPL lesser/library general public licence - more permissive version of GPL, allowing to be linked with proprietary code
  • BSD(-style) licence - a strongly permissive licence in style of BSD
  • MIT licence - a strongly permissive licence
  • BSD Berkeley system distribution - a popular UNIX system
  • (GNU/)Linux - a popular UNIX-like system
  • Illumos - a popular UNIX system, fork of OpenSolaris

Running a source code

  • instruction set - set of operations, given CPU architecture knows
  • CISC complex instruction set computing - larger instruction set bases
  • RISC reduced instruction set computing - smaller instruction set bases, should still be able to do everything CISC does by issuing several instructions
  • machine language - a binary language of 0s and 1s containing direct CPU instructions, platform dependent
  • machine code - a piece of software in machine language
  • loader - a part of OS, loads the binary file into memory and into processor
  • execution - calling a loader on given binary/interpretable file
  • assembly language - a textual language usually 1:1 with instruction set, allows better human understanding of the contents, pletform dependent
  • assembly (source) code - a piece of software in assembly language, source if it was written in it, or is the version used for further development (possibly original source lost etc.)
  • assembler - assemblies the assembly language into machine language
  • low - close to the CPU
  • high - distant from CPU
  • source code - a piece of software written in some language (usually not the machine language)
  • virtual machine - a piece of software compiled for given architecture with specific instruction set of it's own, it interprets it's own istructions into host machine's instructions on the fly
  • byte code - a piece of software written in some language and then compiled for some kind of virtual machine, machine code for given virtual architecture
  • compiler - a piece of software, which translates a higher level language into machine or assembly language, calling assembler if necessary, or generally to it's final form (fe. PDF or web page for markup languages)
  • linker - a piece of software linking several compiled binary files into one executable file
  • ELF executable and linkable format - a (compiled) binary file for given platform, can be linked into other executables or directly executed, if it contains main (UNIX-like specific)
  • preprocessor - a piece of software to process the source code before giving it to the compiler or interpret
  • compiled language - a kind of higher language, which is compiled into machine code, the source code itself is platform independent (at least theoretically), but the resulting binary is not
  • flashing - a process of loading a compiled binary into system's ROM, fe. microcontroller's inner ROM, cell phone's or tablet's system partitions or desktop's or laptop's BIOS chip
  • interpret - a piece of software compiled for given architecture, which interprets the interpreted language's source code into the host machine's instructions on the fly
  • shell/console/terminal/command line - though historically having slightly different meanings, can be safely assumed today as a program taking inputs from user's keyboard, giving them to some kind of program (usually interpret) and returning any results to the user's display in textual mode
  • interpreted language - a kind of higher language, which is either distributed as source code or compiled into byte code, generally platform independent (at least theoretically)
  • programming language - a kind of language allowing any thinkable operation given it's purpose and abilities of underlying platform
  • general (purpose) language - language having no given purpose, being usable for any thinkable purpose
  • scripting language - a kind of language allowing most higher level algorithms, but not any low level operations, like direct memory access etc., usually interpreted
  • markup language - a kind of language, whose main goal is to typeset some data into some kind of presentation (eg. web page, digital typesetting, ...)
  • hardware definition language - a special kind of language used to program hardware architectures on FPGAs
  • mathematical language - though technically usually a programming or scripting languages, these are often seen as a special kind of languages, main purpose is to represent mathematics effeciently
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment