What are some programming jargon everyone should be aware of?

21    26 Jul 2015 19:58 by u/Karmadilla

I once saw something like "... was not committed." in sql server. Committed meaning 'saved'. What are other words that are changed around in programming?

43 comments

16

Hack - in the context of code it usually means applying some non-standard or ungraceful solution to solve a problem.

Spaghetti - code that is difficult to maintain because it executes through unorganized and duplicated portions of business logic.

Magic - when there's so much abstraction the code executes and works "like magic".

Bug - cmon you know what this is!

Recursion - typically used when a function calls itself repeatedly to complete a task (this is actually the real meaning, though).

Hook - this could mean a ton of things, but it's basically when one thing "hooks in [or into]" another thing.

Bang - exclamation mark.

Pipe - vertical line.

User - some dumbass whose actions break the application.

Edit: Additions.

Handshake - The data exchange between two or more servers to authenticate the credentials (aka log in) a user.

Endpoint - An individual HTTP or other access protocol on a server, an example being when a browser uses Javascript to request data from a server to update the user interface.

16

Spaghetti - code that is difficult to maintain because it executes through unorganized and duplicated portions of business logic.

And the lesser known OO equivalent:

Lasagne Code: When the data you seek is buried so deep under layers and layers of abstraction and matryoshka doll-like data structures, that it takes hours to get a mental image of where that one fucking string, that you need, is coming from and who is overwriting it with garbage. Most commonly observed in enterpriseĀ® solutionsā„¢ written in Java.

7

Let's not forget the good pasta metaphor:

Ravioli Code: Ravioli code is a type of computer program structure, characterized by a number of small and (ideally) loosely-coupled software components. The term is in comparison with spaghetti code, comparing program structure to pasta (From SO

They talk about it being an anti-pattern there, but I think the idea of keeping software components loosely coupled but related is a pretty good thing.

1

They talk about it being an anti-pattern there, but I think the idea of keeping software components loosely coupled but related is a pretty good thing.

Absolutely, it's part of the core UNIX philosophy and makes a lot of sense for maintainability and flexibility.

1

I think that software development training really needs to start including sections on when certain "proper" behaviors are taken way too far, and the detrimental effects they bring with them.

5

And to extrapolate on your "Magic" definition... "Magic Numbers" are a common thing among people who don't share any code. For example:

for (int i=0; i < 56; i++); //wtf why do something 56 times?

VS. something like:

maxAmtOfPeople = 56;

for (int i=0; i < maxAmtOfPeople; i++); // oh the clarity

3

And to further expand on that, it helps reduce typos. For instance, using M_PI instead of the string 3.141592653589793238 will cause a compiler error if you somehow misspell M_PI. It also makes maintenance easier if the value of pi ever changes! /s

1

Well, according to biblical scripture, PI is exactly three, and in the days of the greeks, PI was 22/7 (fool's PI)

0

I remember once mentioning I had used 'hacky' code to my mother once, and dispite my efforts to explain the term to her (and getting two new computers since then) she still blames any issues I have on it.

13

Also on the topic of version control:

commit -- Save into a repository. In most cases, this refers to a local repository.

branch -- You can fork someone's repository, to make your own copy of it. The copy is its own repository, and is often referred to as a branch when it is unchanged from or closely related to the original, or was created for the purpose of pull requests (see below).

push -- Upload changes to a remote repository, such as Github SJWHub or Bitbucket.

pull -- This can refer to pulling changes and updating a repository locally, or to pulling changes from another remote repository.

pull request -- After pushing a commit to your branch of a repository, you can make a pull request: a request to merge the changes you made on your branch into the original repository.

3

Commit? Branch? Repository?

could we start a little more basic?

4
3

tl;dr version
Repository: Where you store your code in version control
Branch: A copy of your code someone can do to modify it freely
Commit: A change or group of changes you made into a code and want to merge to the branch

0

got it. thanks for that explanation.

0

Not sure if you're being sarcastic, but version control is one of the broadest categories to choose from for /v/programming. Programmers of all types (business software, games, web apps, whatever) should be familiar with this jargon perhaps more than any other. Familiarity with commits, branches, and repositories should be assumed in this sub.

I mean technically you can code without version control but it's an extraordinarily bad and risky idea. Not really an acceptable practice for any professional developer.

0

sarcasm based on ignorance. I can barely make my way around terminal much less SQL.

0

Repository is a term for the collection of code you have. Think of a folder on your Desktop full of text files... that folder would be called a repository. A repository also logs edits and versions.

These edits are uploaded to the repository as commits, or saves. Since you're not just saving your edited files, but you're also documenting the time, date, and versions of your edits, they're called commits. A good commit will have a short description of what was changed, as well.

Then a branch is a type of fork... Look at a table fork (which you eat with). The single handle "branches" out into the forked prongs. This is usually how code works. Let's say you and I both look at the Voat code and decide we want to change it, but can't agree with what changes we want to make... we'll fork it: branch the code so that there are now two parallel projects, being coded simultaneously, working independent of each other... like the prongs of a fork. Each fork has a common source, but ultimately becomes a different project.

Forks/branches can be consolidated into a final project, implementing only the best of each fork, but this can only be done if commits are documented well, so that each part of the code can be isolated... taking us full-circle. If I document what I did for my fork with appropriate commits, and you do the same, we can condense back into a singular Voat by looking at the commits and changes.

1

IMO Github has some of the dumbest terminology in all of programming.

2

IIRC The terminology was chosen purposefully to conflict with SVN and whatnot, since Linus hated SVN or something. (all hearsay)

3

To be fair, that's git's terminology, not GitSJWHub's.

0

Fair enough.

Zoggin' gits....

10

"Big O". Doesn't mean a really great orgasm. Actually refers to the way the time (or occasionally space) taken by an algorithm increases as it has to compute over more data.

1

I actually have a hard time understanding Big O. Are there resources that you personally recommend?

5

PEBKAC - Problem Exists Between Keyboard and Chair (Also applies to tech support and academia)

6

The problem is on layer 8.

4

Overload - means that two or more subroutines are called by the same apparent words/symbols, but they are differentiated by context (e.g. one is fed integers, another text, but they both have the same name).

4

There are some excellent replies in here. I'll try to summarize them a bit and add on a few more.

First the summary.

  • /u/Jeflakra's comment deals with source code management. This is perhaps the single most important thing outside the programming language related to programming.
  • /u/whisky_cat's comment is a mixed bag you're most likely to hear programmers use around the coffee machine (mostly though these are tools of the trade).
  • /u/Xenoprimate's comment touches upon a bit more abstract concept. This is vital when thinking about a problem, and how and what solution fits best. Remember though that efficiency has two dimensions: time and space and the Big-O analysis can be, and regularly are, applied to both speed and memory usage.
  • /u/dast's comment is about types of programming languages.

Other interesting jargon (programming language agnostic):

  • Buffer overflow -- accessing more memory than you are legally entitled to
  • Infinite loop -- the very definition of insanity, to keep on doing the same thing
  • Off-by-one -- typically, a special case of buffer overflow. Accessing just one more element than you can.
  • Byte -- minimum addressable unit of memory. Can be 3. 9, 11 or 8 bits (most frequent). The others did exist though.
  • Static and dynamic analysis -- code performance, security checks
  • Secure coding -- making sure you're not leaving food for the hackers out there
  • Tail recursion -- special case of recursion, typically optimized away by compilers. Can be inefficient otherwise.
  • Compiler -- the code that turns programs to binaries (simplistic definition)
  • Optimization -- time, space or both. Can be at function level, or at the whole program level.
  • String manipulation -- dealing with strings. Can be tricky, and wasteful if not done right.

E*: Formatting

3
  • non-trivial: impossible but not provably impossible. If a problem is non-trivial its probably easier to abandon whatever you are doing and try something else
  • I don't know: no one knows, this is the age of google if a prepped expert is at a loss it's because mankind hasn't advanced that far yet.
  • quadratic: your system is a toy, unless you are printing money capacity costs of your current infrastructure will eat you alive
  • no problem: either the code is already written, tested, and shipped or the programmer is lying
  • tricky, complex, hmm...: impossible many things in programming are impossible, very few programmers will admit this thus many euphemisms
  • impossible, useless, stupid: I am lazy and don't want to do that, except when accompanied by a mathematical proof
  • business needs: the user of this phase has no rational arguments however that doesn't mean they are wrong
2

for a more serious list:

  • saved: deleting a prior copy and replacing it with the contents of volatile memory.
  • constant: a critical value stored in a single place so it can be changed easily
  • scope: a hunk of syntax over which a single semantic element has a consistent meaning
  • type: a property of a semantic element that determines what sorts of syntactical constructions in which it may participate
3

Common programming paradigms:

Procedural: Code is organized into procedure calls (methods/functions/etc). Code executes one line at a time, and when a procedure call is found, current state is saved to the stack and execution jumps to the code in the procedure. When the procedure is done, the stuff on the stack is popped off and execution jumps back to the line following the procedure call.

Object oriented: like procedural except that methods and state are organized into objects. Each object is responsible for some chunk of functionality and hides the implementation thereof.

Functional: a paradigm in which functions are first class objects, think lambdas, etc. Too complicated to explain here.

1

In no particular organized manner:

  • kludge - Not the most correct way to do something, but it works.
  • backtick - the thing below tilde
  • grep - find a text pattern in a body of text
  • cron - A cronjob is something that can be scheduled to perform at given time or interval. You specify this in crontab.
  • userspace - Also known as userland, as opposed to kernel. Kernel interacts with drivers, handles IO with CPU and memory, schedules system critical tasks, and so on. Userspace handles all the application resources, calls and so on. Userland interacts with kernel for hardware IO, interaction with filesystems, etc.
  • map - a relationship between key and value. e.g. A map of A to B, A->B
  • API - application programming interface, which often provides easy input output relationship in, but not to be used interchangeably with...
  • SDK - software development kit, which is a collection of code and examples for developing with particular set of, but not to be used interchangeably with....
  • Framework - which is basically a pre-structured way of programming. Sometimes providing a lot of...
  • Libraries - which is a set of useful code that is included into the executable or into another library of codes.
  • RESTful - something that has representational state transfer quality. Client need not know the structure of API to make REST requests. Simply put, using simple verbs like GET, PUT, DELETE, POST to say what needs to be done and passing parameters either as part of the request or as a payload in text and JSON.
  • JSON - javascript object notation. A simple way to group information with curly braces.
0

cron - A cronjob is something that can be scheduled to perform at given time or interval. You specify this in crontab.

how is this different from real-time software?

0

It's not. It's just a way to schedule an application to run at a specific time from a linux service (background process) called cron. Useful when you don't want a thing to run constantly, but just want a batch job to be done. For an example, running a shell script that collects and puts some log files together into a folder at 7 am in the morning or something like that.

0

Thanks

1
  • Hash (#)
  • Bang (!)
  • Shebang (#!)
  • Whitespace: tabs and spaces
0
0

Camel Case - Using a capital letter instead of a space when joining words. totalTimeElapsed Pascal Case - Same but also the first word. TotalTimeElapsed.

Mutex - From mutal exclusion. Used in multithreaded applications to prevent two threads from accessing something at the same time.

Reentrant - Used to describe a function that can be called again before it has finished running the first time. Important in multithreaded applications.

Design Pattern - A bunch of ways to solve common requirements. There are to many to go into here but singleton, factory, flyweight, and iterator are some good ones to start looking at.

-1

Alt F4 runs a quick virus scan immediately and removes any recent infections. I use it after any webpage I'm not sure of.

0

Actually, in that case Ctrl+W works much better.

4

People still think this is funny?

1

I remember reading the alt+f4 jokes back when 56k dialup and Starcraft 1 were a thing... and 56k was fast.

1

Yeah exactly, The joke has grown way too old. And on a subverse with rather tech-savvy folks like this one it's pointless anyways