Common software terms Flashcards
(41 cards)
spagetti code
multiple pages of nested if clauses and for loops with a lot of copy-pasted procedural code and no proper segmentation
ravioli code
hundreds of similar little pieces of logic, often classes or objects, without proper structure. If you never can remember if you have to use FurnitureTable, AssetTable or Table, or even TableNew for your task at hand, you might be swimming in ravioli code. The problem is that it tends to lead to functions (methods, etc.) without true coherence, and it often leaves the code to implement even something fairly simple scattered over a very large number of functions. Anyone having to maintain the code has to understand how all the calls between all the bits work, recreating almost all the badness of Spaghetti Code except with function calls instead of GOTO.
god object
an object that knows too much or does too much. Most of such a program’s overall functionality is coded into a single “all-knowing” object, which maintains most of the information about the entire program, and also provides most of the methods for manipulating this data. The god object is an example of an anti-pattern. The polar opposite of the god object is ravioli code.
lasagna code
Program structure characterized by several well-defined and separable layers, where each layer of code accesses services in the layers below through well-defined interfaces. Lasagna code generally enforces encapsulation between the different “layers”, as the subsystems in question may have no means of communication other than through a well-defined mechanism. Loosely coupled layering is generally desirable because it makes objects at each layer more interchangeable with existing or possible future implementations, but other types of changes to the code will actually increase in complexity as more layers are added and so an extensively layered architecture can be seen as an anti-pattern as well.
big ball of mud
Popularized in Brian Foote and Joseph Yoder’s 1997 paper of the same name. A Big Ball of Mud is a haphazardly structured, sprawling, sloppy, duct-tape-and-baling-wire, spaghetti-code jungle. These systems show unmistakable signs of unregulated growth, and repeated, expedient repair. Information is shared promiscuously among distant elements of the system, often to the point where nearly all the important information becomes global or duplicated.
Note: in Lisp, it can be used differently: to describe the malleability of a Lisp system.
write-only language
A programming language with syntax (or semantics) sufficiently dense and bizarre that any routine of significant size is too difficult to understand by other programmers and cannot be safely edited. Examples often cited: APL, Perl, Forth, and regular expression syntax.
WSGI
“wizgi”: The Web Server Gateway Interface: a simple and universal interface between web servers and web applications or frameworks for the Python programming language.
How do you pronounce Xindice?
pronounced zeen-dee-chay in your best faux Italian accent
polymorphism
(In software) Provides for multiple implementations of the same method
triple store
A database optimized for RDF triples.
Typically optimized for very many short data items.
OLAP
Online analytical processing. It’s an approach to answering multidimensional analytical queries.
POCO
Plain old CLR object
Often incorrectly expanded to “plain old C# object”, but it can be created in any language targeting the CLR.
Simple objects without inheritance or other attributes needed for a specific framework. In CLR, typically a non-Serviced Component.
CLR
Common Language Runtime. The runtime environment of .NET.
yesterday’s weather
(In Software development.) The principle that says you’ll get as much done today as you got done yesterday. In iterative projects it says that you should plan to do as much this iteration as you did last iteration.
http://martinfowler.com/bliki/YesterdaysWeather.html
COTS
“commercial off-the-shelf”. A Federal Acquisition Regulation (FAR) term defining a non-developmental item (NDI) of supply that is both commercial and sold in substantial quantities in the commercial marketplace, and that can be procured or utilized under government contract in the same precise form as available to the general public. E.g: computer sw (incl. FLOSS), construction materials.
FLOSS
“Free-Libre / Open Source Software (FLOSS)”. It is considered commercial software, even though some people mistakenly distinguish between commercial & free sw.
divide and conquer
Algorithm design paradigm based on multi-branched recursion. A divide and conquer algorithm works by recursively breaking down a problem into two or more sub-problems of the same (or related) type, until these become simple enough to be solved directly. The solutions to the sub-problems are then combined to give a solution to the original problem.
tail recursion
A tail call is a subroutine call that happens inside another procedure as its final action. A tail call doesn’t have to be recursive, but when it is, it’s tail recursion. S ignificant because they can be implemented without adding a new stack frame to the call stack.
functional programming
A programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. In functional code, the output value of a function depends only on the arguments that are input to the function, so calling a function f twice with the same value for an argument x will produce the same result f(x) both times. By contrast, in imperative programming, the function may change state data internally, and so might return a different value.
What are the byte prefixes?
In 2000, however, IEEE adopted the International Electrotechnical Commission (IEC) recommendation, which uses the metric prefix interpretation for prefixes like kB, where kilo means 1000 and not 1024. So:
How much is a gigabyte?
Depends on the context. For hard drive and networking, the “giga” part usually means the SI meaning of 1000. Referring to RAM sizes, it usually means 1024 3 bytes, i.e., an alias for gibibyte. File systems & software often list file sizes or free space in some mixture of SI units and binary units. Mac OS uses the decimal interp.
Technically, giga means 10 9 in SI, so it really means 1,000,000,000 byte s, i.e., a base 10 definition, not a base 2 definition.
When did the interpretation of “giga” change?
In 1998 the International Electrotechnical Commission (IEC) proposed standards for binary prefixes and requiring the use of gigabyte to strictly denote 1000 3 bytes and gibibyte to denote 1024 3 bytes. By the end of 2007, the IEC Standard had been adopted by the IEEE , EU , and NIST .
What are the proper base 2 prefixes?
1024: KiB kikibyte
1024 2 : MiB mebibyte
1024 3 : GiB gibibyte
1024 4 : TiB tebibyte
1024 5 : PiB pebibtye
1024 6 : EiB exbibyte
1024 7 : ZiB zebibyte
1024 8 : YiB yobibyte
What units are used by JEDEC?
The JEDEC memory standards are the specifications for semiconductor memory circuits and similar storage devices promulgated by the JEDEC Solid State Technology Association, a semiconductor trade and engineering standardization organization.
JEDEC Standard 100B.01 specifies common terms, units, and other definitions in use in the semiconductor industry. They use byte = 8 bits and
kilo, mega, giga = base 2 interpretations.