<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?action=history&amp;feed=atom&amp;title=Programming</id>
	<title>Programming - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?action=history&amp;feed=atom&amp;title=Programming"/>
	<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=Programming&amp;action=history"/>
	<updated>2026-04-03T18:05:37Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=Programming&amp;diff=69098&amp;oldid=prev</id>
		<title>Mm: Created</title>
		<link rel="alternate" type="text/html" href="https://www.uni-weimar.de/kunst-und-gestaltung/wiki/index.php?title=Programming&amp;diff=69098&amp;oldid=prev"/>
		<updated>2014-10-13T23:01:48Z</updated>

		<summary type="html">&lt;p&gt;Created&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This is Programming as Überblick and should give a short and comprehensive overview that embraces a certain kind of superficiality. When you&amp;#039;re new to programming, it might be interesting to get the whole picture before diving into excessive details that might or might not be confusing because of the new terminology.&lt;br /&gt;
&lt;br /&gt;
Please feel free to correct and add what you think is necessary, but please do not extend this page with unnecessary detailed informations. &lt;br /&gt;
If you feel that would be interesting, think about adding a link to a new page instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Programming Languages =&lt;br /&gt;
&lt;br /&gt;
At the beginning was ASM - Assembler. Assembler is also often called “Machine-Code”, because it is intended to be read by - well - machines. Assembler has &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;instructions&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; that are built into a chip. CPUs are Integrated Circuits that have the ability to do some basic calculations, for example adding two numbers would require the instruction &amp;lt;code&amp;gt;add&amp;lt;/code&amp;gt;. Some higher level calculations require invoking many lower level calculations. Because the processing time can be measured per instruction, there are cheap calculations (e.g. multiplying by 2) or expensive calculations that may require some time (e.g. dividing by 1.23456789).&lt;br /&gt;
&lt;br /&gt;
Assembler has the advantage that it’s very fast, but the massive disadvantage that it’s optimised to be read by machines and not humans. That’s why there are higher level languages. Usually, all of the following languages are either &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;interpreted&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; in a scripting environment and/or &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;compiled&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; to machine code. The computer is then processing the compiled machine code.&lt;br /&gt;
&lt;br /&gt;
There are probably thousands of different languages, some are very ancient, some are brand new, some are complicated to learn, others very easy; some are rather abstract and some have been created to be similar to natural human language (mostly english). Some run very fast, some are painfully slow, some are perfect for 3D-renderings, other do amazing things with texts.&lt;br /&gt;
&lt;br /&gt;
Before using a language, you might want to consider the strengths and weaknesses. You will find many resources on the internet. [http://www.cio.com/search?query=You+used+to+Write+WHAT&amp;amp;contentType=article%2Cresource “You used {langName} to write WHAT?!”] is a good starting point.&lt;br /&gt;
&lt;br /&gt;
Aside all the obvious differences, all of these languages are using the same concepts and vary only in syntax, flavour and abstract design patterns.&lt;br /&gt;
&lt;br /&gt;
If you understand these concepts, you’re ready to learn almost any programming language. In fact, you are probably even able to use them right away when you know about:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Variables &amp;amp;amp; Datatypes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Functions&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Objects&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==== Obviously there’s more… ====&lt;br /&gt;
&lt;br /&gt;
…but that’s not so important for a general understanding, e.g.:&lt;br /&gt;
&lt;br /&gt;
* Comments (//, /*, #)&lt;br /&gt;
* Operators&lt;br /&gt;
** Assignment Operator (=)&lt;br /&gt;
** Arithmetic Operators (+, -, /, * …)&lt;br /&gt;
** Logic and Binary Operators (==, !=, &amp;amp;lt;, &amp;amp;gt;, &amp;amp;amp;&amp;amp;amp;, !)&lt;br /&gt;
** String Concatenation Operators (+, .)&lt;br /&gt;
** …&lt;br /&gt;
* Statements and Expressions&lt;br /&gt;
* Flow Control&lt;br /&gt;
** Conditionals (if-then-else, switch-case, …)&lt;br /&gt;
** Loops (for, while, …)&lt;br /&gt;
* Design Patterns&lt;br /&gt;
* Coding and Naming Conventions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
A variable…&lt;br /&gt;
&lt;br /&gt;
* stores a &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;value&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; of a certain &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;datatype&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* has a &amp;#039;&amp;#039;&amp;#039;local&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;global&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;scope&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* might be &amp;#039;&amp;#039;private&amp;#039;&amp;#039; or &amp;#039;&amp;#039;public&amp;#039;&amp;#039; (depending on the language)&lt;br /&gt;
* might be &amp;#039;&amp;#039;mutable&amp;#039;&amp;#039; or &amp;#039;&amp;#039;immutable&amp;#039;&amp;#039; (depending on the language)&lt;br /&gt;
* should have a descriptive name (by convention), typically like a &amp;#039;&amp;#039;property&amp;#039;&amp;#039;, like “name”, “color” or “isVisible”.&lt;br /&gt;
&lt;br /&gt;
There are &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;typed&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;untyped&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; languages. An untyped language declares variables with no specific datatype, for example JavaScript:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;var aNumber = 1;&lt;br /&gt;
var aName = &amp;amp;quot;Michael&amp;amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
or PHP:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$aNumber = 1;&lt;br /&gt;
$aName = &amp;amp;quot;Michael&amp;amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
a typed language must use specific datatypes for variables, for example C:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;int aNumber = 1;&lt;br /&gt;
char aName[] = &amp;amp;quot;Michael&amp;amp;quot;; // actually an array of chars&amp;lt;/pre&amp;gt;&lt;br /&gt;
or Java:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;int aNumber = 1;&lt;br /&gt;
String aName = &amp;amp;quot;Michael&amp;amp;quot;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Some typed languages allow changing the type of a variable. This is called &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;typecasting&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; or just &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;casting&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;, e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;int aNumber = (int)aFloat;&amp;lt;/pre&amp;gt;&lt;br /&gt;
There are &amp;#039;&amp;#039;&amp;#039;primitive&amp;#039;&amp;#039;&amp;#039; datatypes. These values are typically &amp;#039;&amp;#039;stored directly&amp;#039;&amp;#039; in a variable:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;BOOL&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;int (byte, char, short, long)&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;float (double)&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
and then there are &amp;#039;&amp;#039;&amp;#039;complex&amp;#039;&amp;#039;&amp;#039; datatypes. These values which are mostly “objects” are too large to fit inside a variable that has only one 8/16/32/64-bit size. Instead of storing a value, these variables contain an &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;address&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; that points to an address in the RAM (working memory) of the program, where the actual values are stored. But unless you’re coding in a C-flavoured language, you usually don’t have to worry about this.&lt;br /&gt;
&lt;br /&gt;
An address in memory might look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0xFFF212B44723AC23&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Complex&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; datatypes might be (e.g.):&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;Arrays&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;Strings&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;Numbers&amp;#039;&amp;#039; (e.g. not differentiating between int or float)&lt;br /&gt;
* &amp;#039;&amp;#039;Objects&amp;#039;&amp;#039; (of all kind)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
Functions are a very important concept, so important that there’s a name for programming using mainly/only functions (in contrast to object oriented programming, though it’s obviously not mutually exclusive): &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;functional programming&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;, which is ideally &amp;#039;&amp;#039;&amp;#039;stateless&amp;#039;&amp;#039;&amp;#039; (that means there should be little to no properties or global variables storing a specific state)&lt;br /&gt;
&lt;br /&gt;
Functions…&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;group&amp;#039;&amp;#039;&amp;#039; functionality&lt;br /&gt;
* take zero or more &amp;#039;&amp;#039;&amp;#039;arguments&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;return&amp;#039;&amp;#039;&amp;#039; nothing or something&lt;br /&gt;
* should be named verb-like (as a convention), because they &amp;#039;&amp;#039;do&amp;#039;&amp;#039; something, e.g. add(), count(), setup() or greetSomeone()&lt;br /&gt;
&lt;br /&gt;
A function in JavaScript looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;function functionName( paramA, paramB ) {&lt;br /&gt;
    // do something&lt;br /&gt;
    return something;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
In &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;typed&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; languages, there is usually a return type (and argument types), for example in C you know that this function requires/accepts two arguments of type int and returns a number of type int:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;int add( int a, int b ) {&lt;br /&gt;
    return a + b;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objects ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Object-Oriented Programming&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; (OOP) or &amp;#039;&amp;#039;object-based languages&amp;#039;&amp;#039; fill many shelfs in bookstores, but in the end, it all comes to this plain and basic concept:&lt;br /&gt;
&lt;br /&gt;
Objects:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;encapsulate&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; data, actions and behavior (some of it exposed and publicly visible, some of it private and internal)&lt;br /&gt;
* have&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Properties&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; (=&amp;amp;gt; Variables: what the object &amp;#039;&amp;#039;is/has&amp;#039;&amp;#039;)&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Methods&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; (=&amp;amp;gt; Functions: what the object &amp;#039;&amp;#039;can do&amp;#039;&amp;#039;)&lt;br /&gt;
* can be &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;instantiated&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;, that is: created in memory&lt;br /&gt;
** usually from a &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;class&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; (there is one class, but many instances)&lt;br /&gt;
* may &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;inherit&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; from their parents or to their children&lt;br /&gt;
* may expose public properties by &amp;#039;&amp;#039;Accessors&amp;#039;&amp;#039; (= &amp;#039;&amp;#039;Getter/Setter&amp;#039;&amp;#039; functions)&lt;br /&gt;
&lt;br /&gt;
Now here’s a strange thing: &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Parents usually know about their children, but children should not know about their parents!&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
That’s a design pattern btw and if you think about it, it makes sense: Cross-references are a really bad thing. Well, at least in the nerdy world of programming. Not so much in the real world I suppose. Even though it’s still a valid metaphor.&lt;br /&gt;
&lt;br /&gt;
== Further Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.roesler-ac.de/wolfram/hello.htm The Hello World Collection]&lt;br /&gt;
* [http://codepad.org Online Compiler]&lt;br /&gt;
* For esoteric (fun!) languages there are JavaScript interpreters:&lt;br /&gt;
** [http://www.iamcal.com/misc/bf_debug/ Brainfuck]&lt;br /&gt;
** [http://asgaard.co.uk/misc/loljs/# LOLCODE]&lt;br /&gt;
* [http://www.gnu.org/fun/jokes/helloworld.html Nerdy Joke] …that you’re now able to understand :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
This page is part of the &amp;lt;strong&amp;gt;Überblick&amp;lt;/strong&amp;gt; course from Michael Markert at the University at Buffalo, State University of New York / Fall Term 2014.&lt;br /&gt;
&lt;br /&gt;
[[Category:AppleScript]]&lt;br /&gt;
[[Category:Arduino]]&lt;br /&gt;
[[Category:C]]&lt;br /&gt;
[[Category:Cocoa]]&lt;br /&gt;
[[Category:Grundlagen]]&lt;br /&gt;
[[Category:Grundelemente]]&lt;br /&gt;
[[Category:Hacking]]&lt;br /&gt;
[[Category:Michael Markert]]&lt;br /&gt;
[[Category:Objective-C]]&lt;br /&gt;
[[Category:PHP]]&lt;br /&gt;
[[Category:Python]]&lt;br /&gt;
[[Category:Programming]]&lt;br /&gt;
[[Category:Programmiersprachen]]&lt;br /&gt;
[[Category:Processing]]&lt;br /&gt;
[[Category:Software]]&lt;br /&gt;
[[Category:Xcode]]&lt;/div&gt;</summary>
		<author><name>Mm</name></author>
	</entry>
</feed>