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 u/whisky_cat 26 Jul 2015 21:08
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 u/glUniform4fv 26 Jul 2015 23:02
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 u/magicmu 27 Jul 2015 00:59
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 u/glUniform4fv 27 Jul 2015 03:21
Absolutely, it's part of the core UNIX philosophy and makes a lot of sense for maintainability and flexibility.
1 u/tribblepuncher 27 Jul 2015 04:11
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 u/Spectra 27 Jul 2015 03:34
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 u/theoldguy 27 Jul 2015 09:44
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 u/Cuddlefluff 30 Jul 2015 09:11
Well, according to biblical scripture, PI is exactly three, and in the days of the greeks, PI was 22/7 (fool's PI)
0 u/SelfReferenceParadox 27 Jul 2015 05:12
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 u/Jefiakra 26 Jul 2015 20:26
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
GithubSJWHub 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 u/CharlieDelta 26 Jul 2015 20:43
Commit? Branch? Repository?
could we start a little more basic?
4 u/ShadowKitten 26 Jul 2015 20:49
https://en.wikipedia.org/wiki/Revision_control
3 u/Luk3 26 Jul 2015 20:56
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 u/CharlieDelta 26 Jul 2015 21:15
got it. thanks for that explanation.
0 u/insanityfarm 26 Jul 2015 21:09
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 u/CharlieDelta 26 Jul 2015 21:14
sarcasm based on ignorance. I can barely make my way around terminal much less SQL.
0 u/2716057 27 Jul 2015 00:11
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 u/ITW 27 Jul 2015 15:16
IMO Github has some of the dumbest terminology in all of programming.
2 u/Sylos 27 Jul 2015 16:12
IIRC The terminology was chosen purposefully to conflict with SVN and whatnot, since Linus hated SVN or something. (all hearsay)
3 u/Jefiakra 28 Jul 2015 03:56
To be fair, that's git's terminology, not
GitSJWHub's.0 u/ITW 28 Jul 2015 16:16
Fair enough.
Zoggin' gits....
10 u/Xenoprimate 26 Jul 2015 20:45
"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 u/Karmadilla [OP] 26 Jul 2015 22:15
I actually have a hard time understanding Big O. Are there resources that you personally recommend?
5 u/bedstraw 26 Jul 2015 21:24
PEBKAC - Problem Exists Between Keyboard and Chair (Also applies to tech support and academia)
6 u/glUniform4fv 26 Jul 2015 23:04
The problem is on layer 8.
4 u/tribblepuncher 26 Jul 2015 20:18
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 u/wunderlust 27 Jul 2015 17:48
There are some excellent replies in here. I'll try to summarize them a bit and add on a few more.
First the summary.
Other interesting jargon (programming language agnostic):
E*: Formatting
3 u/nicky_haflinger 26 Jul 2015 23:58
2 u/nicky_haflinger 27 Jul 2015 00:07
for a more serious list:
3 u/dast 27 Jul 2015 00:44
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 u/dchem 27 Jul 2015 19:25
In no particular organized manner:
0 u/RaptorSixFour 03 Aug 2015 08:30
how is this different from real-time software?
0 u/dchem 03 Aug 2015 19:45
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 u/RaptorSixFour 14 Aug 2015 19:56
Thanks
1 u/moses_blimey 28 Jul 2015 15:37
0 u/effusive_ermine 27 Jul 2015 03:48
arbitrary code execution with privilege escalation
0 u/BriO 31 Jul 2015 21:18
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 u/360NoScope420BlazeIt 26 Jul 2015 20:58
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 u/wmq 26 Jul 2015 21:02
Actually, in that case Ctrl+W works much better.
4 u/PM_ME_WHAT_YOU_WANT 26 Jul 2015 21:02
People still think this is funny?
1 u/whisky_cat 26 Jul 2015 21:13
I remember reading the alt+f4 jokes back when 56k dialup and Starcraft 1 were a thing... and 56k was fast.
1 u/PM_ME_WHAT_YOU_WANT 26 Jul 2015 21:15
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