Guide | How To The Basic Computer Science Definitions (With Mythbusting).

The associated guide may contain user-generated or external content.

NullPointerException

Level 12
Thread author
Verified
Aug 25, 2014
580
Hello all. We all, while ignorant, came across buzz-words like "events", "action listeners", "threads", "Java", "Javascript" etc. I shall try my best to differentiate between common misunderstandings between Java and Javascript, Linux and Mac, etc. and I shall try my best to clear their myths.

Programming definitions & their myths.

Java and Javascript :
Java was first created by James Gosling, and is currently maintained by the Oracle corporation . There are three "Javas". First, there is a Java programming language (more on programming languages latter), then there is the software platform (more on this later too), and then there is a Java virtual machine. The Java programming language is a simple, yet powerful. In programming languages, softwares like your web browsers are "written", while actually they are either 'compiled' or 'interpreted' (again, more on this at the 'Programming' section).

The Java platform is used to run programs created in the Java programming language. Actually, it is a bunch of softwares. The most essential is the Java Java SE Runtime Enviroment platform. It provides "libraries" (more on this later too), and the Java virtual machine (the most important thing for the programs to work). What the JVM (Java Virtual Machine) does is that it executes (i.e. 'launches') the machine code ("byte code").

Why? Isn't Java a "programming language"? The answer is at the 'programming' definition.

Here is a simple, fully-functional Hello World program in Java.
Code:
Public class HelloWorld {
Public static void main(String[] args) {
System.out.print.ln("Hello, World!")


Now, let's move to Javascript. It was created and is maintained by completely different guys. I do not know how Oracle allowed the similarities* in name. It is a "Scripting" language (of course, there is also a definition available on this a few minutes later). It is used to add extra special effects to the web page. Such as XenForo (which will be defined next in the Scripting section), MalwareTips' own forum software uses "extra" special effects, such as fancy descriptions which appear when you hover your mouse over a specific category or subforum.

Javascript cannot be used to create software, it is simply not made to do that. Here is a simple 'Hello, World!' special effect in Javascript. (For Javascript programmers out there, sorry if I mess this up horrible. I am not a web developer, I am just using the little knowledge I have of Javascript)
Code:
1:   <script type="text/javascript">
2:   document.write("Hello, World!")
3:   </script>

As you see, both of them are completely different. While Java can be used to create 'special effects', I do really doubt that would be worth it. And I am not even sure if this can be counted...
Code:
import java.io.*; // from Java input/output, import everything.

public class ProcessWords {
  public static void main(String [] args) throws IOException {
    BufferedReader input = new BufferedReader(
        new FileReader("thefile.txt"));
    String line;
    while ((line = input.readLine()) != null) // while the  read line is not null
        if (line.indexOf("blue") != -1)
            System.out.println(line); // print the line
    input.close();
  } // end main
} // end class

As you see, this unfortunately simple (but harder to read)* Java code can confuse other programmers and cost a lot of performance. Java isn't recommended as a scripting language. Javascript and Java are two, in a massive manner, different things.

Operating Systems section
Mac & Windows : I am almost sure that you're using Windows while reading this. Windows and Mac, although not confused strongly, have strong myths about them. I shall try my best to clear them out.
First of all, there is an excellent article about malware protection written by n.nvt. I don't need to wrtie another one about it.

Myth 1 : Mac has no viruses.
In reality : Mac has viruses. Almost as much as Windows. Kaspersky's blog agrees with me. Don't trust me? Ask any other trusted computer scientist, MalwareTips' other members, do an internet search etc., every source will tell you there are Mac malwares. A lots of them. A lot. A popular example is OSX's CoinTheif. I will not give my own, simplified version of reverse-engineered virus, but if you think Mac doesn't have viruses, you should check out this page...If you don't understand a word, you're probably wrong anyway.

Myth 2 : If you've Mac, you don't need an antivirus.
In reality : This is true for Linux...Well, because Linux doesn't HAVE any anti-viruses...It has very few dangerous malware, which doesn't matter if you know how to protect yourself. Back to Mac, Mac is unlike Linux, and is becoming Windows : Service Pack Two. It can run some games, it has antiviruses, it has almost as much as viruses as Windows, it can run compilers, and most importantly...it has became less secure over the years.

If you check Yahoo answers, which you shouldn't anyway, the people that claim to have degrees in computer science or claim to be "computer experts" (I do not know if that job exists.), only get one thing right. They say, "If you were a hacker, would you create a virus for a handful of people, or for millions of people?", well then, as the years passed, Mac gained popularity. So did attention. A lot of reports (Most bloggers don't lie, unless they're mentioning their own product's name every ten words) say that Mac is indeed, catching attention. I wouldn't be surprised if Linux does as well, but it's not before 2017, for Linux's case. Mac has already a lot of rogue antiviruses...Just like Windows.

Myth 3 : Mac, unlike Windows, doesn't have any "phone-support" scams.

In reality...: I, as a proud Linux/Mac/Windows/Android/Ubuntu user, have recieved many phone-suppo-rt scam calls. Every six months or so I receive at least one of those dreaded, hilarious calls. I just love their expressions when I say "Nullpointerexception. User is a computer scientist. Try another user" or when I tell them that I own a Linux, a Mac, a Windows, an Android, an Ubuntu and if I can get support for them as well.

Some people don't drop the phone when I say I own a Mac. They say that they will have Mac support in a "few months. Or perhaps a few years. It depends, sir" before telling me to turn on my PC and downloading Teamviewer for my Mac. Although I just cut them, I do sometimes think if the "support" will arrive for a Mac also. Either it has, and I haven't heard about it, or it will, and I've heard about it.

Myth 4 : Mac is the most safest OS
In reality : MiniLinux is the safest OS...because it is the most obscure OS. The more popular the OS, the more attention they get. Literally.
Linux > Mac > Windows.
Linux has so many variants, and most of its audience is split (Ubuntu etc.) , so none of the hackers bother to write a virus for it. And even if they do, the vulnerability is patched instantly by its respective owners. Mac is by no means, safest OS. If Microsoft creates a separate OS for only its employees and never it is leaked outside, it will be the safest OS.

Operating Systems section : Definitions.

Troubleshooter : Comes with Windows XP (not sure) and above. Contains a lot of tools like network diagnostics, shared network diagnostics, network adapter diagnostics etc.
Screenshot :

CMD : Command prompt. It is used for performing advanced actions. Most malware removal experts' favorite command is to "flush" DNS.

Screenshot :

EXE : Excuteable. Seen in the Programming section.

Registry : Another user has written an excellent article about it.

IP : Internet Protocol. Covered in the Network Administration section.

DNS : Domain Name Server. Covered in the Network Administration section.

Administrative Rights : If UAC is enable, certain advanced tasks, like changing permissions, require administrative privilege. The Administrators are the people who hold such power. There needs to be at least one administrator in Windows Vista (untested) and above (tested).

UAC : User Account Control. It prevents "harmful" changes from unauthorized users. For example, if user Nitro is limited, he cannot make changes to the Windows registry. And if user Mycroft is an administrator, he can make changes to the Windows registry. This is sorta useless if the administrator himself is a n00b anyway.

Debugger : Application mainly used to "debug" programs. Debugging is covered greatly in the Programming section...

Finally, the Programming section.

Explanations :
(Note, instead of definitions, I am going to explain programming terms. Definitions are also here, but shouldn't be read before reading this)

Programming Languages : Remember the question why Java and other languages require to be "compiled" into "byte code"? That is because...we cannot program in machine languages. Seriously, can you perform a boolean (explained later) with ones and zeros? I cannot, most of us programmers cannot. And even those that do, require a lot of help from Assembler and cannot create applications that are more than hundred line long.

Seriously...do you think this makes sense?
100001010111100000100000100001000000101000100101011011110001
To be honest, I just spammed random buttons over my numpad. But to computers, it actually conveys a meaning. It means "
lines:2 words: 2 bytes: 8
md2: 7b5ff9a31ea0e988a70d171b846405a0
md4: ac439d4c5d8290d7c0159302cc16a2b9
md5: f48c85d8c466de100b8f1bbfc66ff8ce
sha1: e655049a8ba72f9d863064e9736766dd04d2dfb4
sha224: c6a273c9e4c4c76a918df0bd95cd93eb308b5b5455d1020cfd59111b
sha256: 6309c95e3b5ddc354d18bc8b8e5fa0bf20c5b00fb69f48ce8a703548acdb336f
sha384: 9ef579caac15832ded69ffc749df2bff49da7c24353b9982594b191c857d8e0cf42b3027a65eaeabcee7418fd2857ec0
sha512: fa40a57d25184517944f21202a374eca38a4df94b7011440727acbd3ea20a2970134157b4d801be66d211befbada86f0a5719b6ebd22f1953ecdb39b9b3df232
ripemd128: af0b5469de2e5f5a6fedf2a4eaf58f2b
ripemd160: 308368399779ebd1d89b23a39809b37e95835209
ripemd256: 1129bf4f1b693c62e71acd12b3838cd0c126af3b0774d86548a82a982d1ac373
ripemd320: 5f935ef77b82ce748b3680c9ca421a51824dc0ff40653ce8083f6daf11b8ce48636cf4acc321395d
whirlpool: 5a423999f68a4adfa483ba825b4eb824aaebbd391889a8640ea4dbbbb3aef730fb5e9f04d8bc70be96bd9dc4c23eea3c9b6917a44d4162e184d23aaeddc4ae12
tiger128,3: 3f140d7217d598d7ded8659791263026
tiger160,3: 3f140d7217d598d7ded8659791263026085dfe04
tiger192,3: 3f140d7217d598d7ded8659791263026085dfe04aa1fd4c2
tiger128,4: 80889ee86a50e569d007c0796a48ea5d
tiger160,4: 80889ee86a50e569d007c0796a48ea5d9c4b3fd4
tiger192,4: 80889ee86a50e569d007c0796a48ea5d9c4b3fd4eeb9e648
snefru: 1f1393eb9674488261209cf5dd8d764de440403f0199dd2a099b9274784c199f
snefru256: 1f1393eb9674488261209cf5dd8d764de440403f0199dd2a099b9274784c199f
gost: 1f71265c134acf6b4b6d50cb15c4e13304495c9a2d02b9cc483a273aa304086f
adler32: 0c510250
crc32: 50aaf5ba
crc32b: 4c5dda9c
salsa10: 9e45b8683714607b02c8d79b95f02a487595b58102e7010bdcaef592f3c94a657edb6493769efbb58c6d67dbaec325c85350f35f11f39dc71259bb85698609de
salsa20: 52d4242bdceeb2c3afc44b543b7ebf1b0551c4f373028b01df2a0ac8b0e88d19e00c411b8a20cd724921bc643fb88d6368aab85273279f2332003f1c8c68720e
haval128,3: 027a5601c85b751b73d73a0090ada4e7
haval160,3: 02c363518e5e96d2a422295bc14b39620e031475
haval192,3: 6881600d434ca8787fc3f91f3e3ccef341ad0d43a4299d12
haval224,3: cb6bc5073e311c7a87037b985638cd3d950defebb79b86a442014885
haval256,3: 256313474e39e087efd5d6293f5d00d7462d55b29636fe0eb1fdc977dfcdc461
haval128,4: e54080fec6d891ef3b515b71d6bca31a
haval160,4: 766c9281b84c1317f0bbe8a80adcaec8b3f50e2f
haval192,4: b22496ef4341f4094267f8a4096707831a8ef3693aeabb78
haval224,4: 9f17d4c03436ec2bd29d43c739ac5de42104f9db2212a8d2212aba42
haval256,4: 9fe287e088022656da3d792f1b3d37c856b28761f972b6eff48602a40f617df2
haval128,5: 794f605bd6ce556c54ae1eb1528df9f6
haval160,5: 1f6aea20a2636d86f96219e66e979426b991136c
haval192,5: 754c7c410752553844566a79091524dbd2969d37f83b22a8
haval224,5: e170b5b6cbff64d0cf3521c31d0d807e3cdead5190aab29e1486c438
haval256,5: 212261a9e422bde00867f49b4b2b6ab4e68467ef5c2c547497212970c2c57a65"
The meaning of these hash-tags are beyond the scope of this thread. (Hashes are complicated, but whenever I say "hash", just think of it as a password that compiler uses to identify duplicates...The definition is in this section.)

This makes more sense to us mere mortals.
if x == 4 ;
System.out.println("X is equals to four");
elif X IS-A 4;
System.out.println("X IS four");
else;
System.out.println("We don't know anything. It's time to go back to sleep.")
But does this make sense to you? (And yes, == means "equals to" in programming, while a single "=" just makes a pointer to it, we'll see about that later, again...)
011101100010001000100010000010000011000011000000
Even if it does, it'll barely make a legal application in the real world.

High & Low level : The more 'high level' the language, the less it sounds like machine. For example, in Python, you don't need to add a semicolon( ; ) at the end of every line, you also don't have a class and "low-level" things like that. It is more treated like English, rather than a machine language. In Python, to print a line, you just use....
Code:
print("Hello, World!")

instead of the previous Java example you just read at the beginning. The point is, that more high level the language, the lesser will it be fast and the lesser it will take time to develop on. Either way, no matter how low or high level a language is, it needs a compiler or an interpreter. Even Assembly, the lowest possible language we can code in, needs an Assembler (that is similar to a compiler).

Compiler : Compiles the source-code. For example, if you write
Code:
System.out.println("Hello, World!");
It will be compiled to...
1010101100001000011110001100000
(Not exactly, that's just something I created out of my mind, but it can serve as an example)
So our computers can understand what exactly are we trying to say.
Only languages that support either compiling or both interpreting and compiling, can be compiled.

Interpreter : Same as the compiler, only that it translates the code in the runtime (very slow compared to already low level languages like C that run extremely fast), and only supports languages that either support both compiling and interpreting or interpreting.

Threads : This is complicated. I recommend first trying a programming book before reading this explanation.
Once you create a thread, for example...
Code:
Thread t = New thread();
t.start();
You've created a thread. So...what does it do? Nothing. It just dies after it is born, unfortunately. Assuming you've enough knowledge to understand, with more than one stack in the heap, you get the apperance of having multi-processors. In reality, only one multi-processor can do multiple things at a time. To implement a runnable (which defines a thread's job), you just use...
Code:
Runnable r = new MyJob();
Thread t = new Thread(r);
t.start();
Dog f = new Dog();

In Java, I've unfortunately forgot about C and other languages, threads are random. It means thread A will run before thread B which will run after thread C which will...it just continues. Let's look into a pseudo-output.
Thread A is really running.
Thread A checks his car.
Thread A is about to sit in his car.
Thread A falls to sleep, so other threads can get a chance to run.
Thread B wakes up.
Thread B destroys the car.
Thread B is about to create a new car.
Thread B falls alseep.
Thread C wakes up.
Thread C falls asleep.
Thread A wakes up.
Thread A is about to cry.
Thread A creates a new car.
Thread A falls to sleep....

As you can see, they're completely random. While we can influence its actions, we cannot really control them.

If you're just a beginner and don't want to defeat the purpose of this...thread, you must understand that to understand threads, you need a basic knowledge of programming. I recommend C++ if you want to have a deep understanding, if not, stick with Java.

Hash : The compiler, if we perform a boolean test, checks the hash values first.
In the heap (which will, of course you'll see too), it'd be really tiresome to compare ten thousand words until we find a == match (remember, two equals mean either equals, or IS-A relation). How about assigning a low-level "key" and uniqueness to all of them? Hashes to the rescue.

hashing0.bmp


Hash is like a...book number. If you walk into a library, and ask the librarian an ISBN, you've just performed a task similar to hashing. In hashing, you just ask the compiler to see if Object 1's hash tag is 16, if it is not, it means Object 1 IS-NOT-A Object 2, which is 16.

If two objects are equal, in programming, they MUST have similar hashes. But if two hash tags are equal, it doesn't actually mean they must be same.


Sets: Similar to mathematics sets, they barely hold a purpose (in my opinion). They hold values like A = {1, 2, 2, 2}, which in turn compiles into A = {1, 2}. As you can see, they, just like mathematics, don't allow duplicates.

Reference : See pointers.

Pointers: They create references. No, I am serious. By creating the Set example, I just referenced 1, 2, 2, 2 to A. = is a pointer sign. It 'assigns' a value to a variable. For example...
A = X
You assign a value to X. Which is A, we do not know or care about what A is, all we care and know is that it holds the value of A. All unassigned variables have the value of 'null' (Similar to Algebra, it means they're empty, they hold zero). The joke is that it creates a null pointer exception. Which is similar to my username...

Exception : In programming, it means errors. See I/O.
I/O : It means Input/Output. The definition/explanation will be added later.

The Network Administrating Section :

When you connect to Google, you've made an internet connection. When you've all four lights blinking of your ADSL modem, it means you've a damn better modem than me. As you see, modems are a "gateway" to the internet, the web-browsers are the "guide". You'll come across terms like HTTPS, HTTP, search engines, HTML, Mark-up language etc. I shall try my best to define them and clear some myths that I've came across....

Myth 1 : The Court doesn't care if you pirate.
In reality : It does. It records all of your information. It doesn't care if you download the hit album of the Beatles, if you download a .pdf book, if you download porn, if you download the pictures of dead people etc. All it cares about is, if you make the bad kinda piracy.

Now, it all varies from country to country. Piracy hosts in the US will probably need to pay fine, while in Sweden, they can send mock-mails to huge companies like SEGA, and constantly tell them to "sodomize" themselves with a "nightstick". While really, no country cares if you pirate the legal material, it cares if you download child pornography, bomb-making tutorials, terrorist plans etc. Even Sweden does. You'll never get arrested for downloading adult porn, or the copyrighted material, but you'll get that damn well if you download the illegal stuff.

The myth is ironically half-true. The only computer myth that is real.

Myth 2 : Every trusted side will not infect you in any way. They're perfectly secure against hacks, SQL-injections etc.
In reality : If you think that, you're way, way, way wrong. Target was hacked, Avast was hacked, even Kaspersky was hacked. Even Google was hacked. Even...freaking Bleepingcomputer was pseudo-hacked. You see, a lot of things can go wrong. A lot of. I recommend you to visit some security blogs (like krebsonsecurity.com) to have your security knowledge increased.

Now, let's move to the definitions...
Webbrowsers : Are things that you use as a getway to the internet. The hate machine, the love machine, the machine powered by many machines.

Modems : Are damned things that never work. Most of the modems break easily, so be careful with them. If you heat them too much, they also start to malfunction, if it falls from your table, chances are you need a new modem, if it is hacked, you'll need at least a day to restore it (in my opinion). Some malware can infect and malfunction the modem.

HTTPS : Encrypt your transcription with websites. Although they're not always fault-free (I am talking about the Heartbleed bug), they're very useful. For example,

Jim enters password. It is then encrypted by the web browser, sent to the server, where it is dencrypted, and then Jim is allowed to log-in.

This makes eavesdropping hard. For understanding what eavesdrop is, see the next definition.

Eavesdrop: A hacker can listen, that is read, what you enter through your web-browser. For example, if you enter your password or credit card details, then a hacker can 'eavesdrop' and read your password/credit card. Encryption prevents it.

Encryption : Although a programming term, I thought it belongs here. In encryption, data like
iw2g2z9oaxfh[a995454202200101010 is turned into...
????????????????????????????)))))))))))))&&&&&&&&&&&&&&&&&&%%%%%%%%
It needs a de-encryption key. Which is is too technical to be here. But once it is de-encrypted, it is once again like....
iw2g2z9oaxfh[a995454202200101010. It prevents security issues. Once a program's source-code is encrypted, it is way harder to reverse-engineer. Not impossible, although.

HTTP : Note that MalwareTips doesn't have an HTTPS encryption. That isn't always a bad thing. SSL certificate (which enables HTTPS) require money, and are not always bug free and can cost millions (*ahem* Heartbleed bug) in some grave cases. Although it is unlike a secure site can get hacked, it usually can. Algorithm.

No. I am serious. HTTP is a both good and bad thing. It is, I think, faster because it doesn't have encryption technic required, and the bad thing is that someone can eavesdrop us.

IP : Internet Protocol. It is a unique "mask" of your computer. When browsing, you use your IP, as if it a passport. When you search something on Google, you give your IP address to Google. Unfortunately, IP address can give your exact location if used correctly. If you live in New York, and have been using the Internet longer than two months, most big, huge companies know more about you than your close friends.

VPN : Virtual Private Network. There are a lots of VPNs out there. Such as Cyberghost. What do they exactly do? They give you more privacy and security, sacrificing your speed just by around five percent. What they do? They use their own server, instead of your Internet Service Provider's, to connect to the internet. For example, if you connect with a VPN, you'd be using YOUR own internet broadband, but other websites will be forced to believe that you're from Greek, while you're actually from Australia. This is good, because more privacy. But it usually isn't always a good thing.

Payload : From a source, "Payload is the damage caused by a malicious program" Although it is not completely false, it is not completely true either. Some malware don't have an effect of payload. Some malware's "payload" actually damage the BIOS. Most malware's payload cause irreparable damager to the OS.


This guide will be extended as soon as my internet starts working. This is not complete, but it can be qualified as complete. I still have to extend some, but it should do it. Thank you.

Current progress : 96%

To add : Screenshots, more definitions, fixing errors.
 
Last edited:

TIA

Level 1
Verified
Aug 21, 2014
25
I would love to say i understood every word, but I didn't ..... hardly any of it in fact .. but i enjoyed trying.
Please update, I want to follow. :D
 

About us

  • MalwareTips is a community-driven platform providing the latest information and resources on malware and cyber threats. Our team of experienced professionals and passionate volunteers work to keep the internet safe and secure. We provide accurate, up-to-date information and strive to build a strong and supportive community dedicated to cybersecurity.

User Menu

Follow us

Follow us on Facebook or Twitter to know first about the latest cybersecurity incidents and malware threats.

Top