<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pseudonym1</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pseudonym1"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Pseudonym1"/>
	<updated>2026-06-03T03:25:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=39260</id>
		<title>CSC/ECE 517 Fall 2010/ch3 4b mt</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=39260"/>
		<updated>2010-10-21T03:45:45Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Types vs Classes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Overall s.png|right|upright|Relationship between Type and Class]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
It is often that we talk about types, strongly typed, weakly typed, classes. To make it clear,  let us look into it clearly. Every programming language has a way to define a variable. A variable is a named address location which stores a particular value. &lt;br /&gt;
&lt;br /&gt;
[[Image:Connection s.png|right|Types can be thought of as the set of classes combined with primitive types given to a language.]]&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
&lt;br /&gt;
Time for an analogy? Imagine a variable to be a vacant house. It could have animals, humans, robots, or another smaller house, or whatever you can think of. There has to be a way, from a third party perspective, so as to be cognizant of the kind of things that reside in the house. Types and typing is a concept which realizes this concept. A typed language or a strongly typed language is one where the type of a variable has to be declared so as to avoid any wrong dealings of the value during run time. For example, Java is a strongly typed language. If I need to use two integers for addition, I would explicitly have to mention them as an integer:- &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  int integer1;&lt;br /&gt;
  int integer2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, we can’t then re-initialize it to any other type in its defined scope.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  integer1 = “Hello World”;  // cannot map an int to a String&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the case of non-typed languages, say Ruby, or Visual Basic, etc. We don’t need to specify a type. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  def variable1;&lt;br /&gt;
  def variable2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, it could be initialized with anything,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
variable1 = 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
as well as &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
variable1 = “Good morning Vietnam” are allowed. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Classes===&lt;br /&gt;
&lt;br /&gt;
A class is a “type” of variable specification. The difference between a class and a regular primitive integer, character, etc is that a class:-&lt;br /&gt;
&lt;br /&gt;
# consists of one or more primitive or non-primitive variables&lt;br /&gt;
# is a pre-defined structure&lt;br /&gt;
# defines methods which operate on the internal state of the object&lt;br /&gt;
&lt;br /&gt;
The Type of Class is “Class”, just like the Type of integer is “integer” in case of strongly typed languages. &lt;br /&gt;
&lt;br /&gt;
For example, in case of Java:- &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;“The types of the Java programming language are divided into two categories: primitive types and reference types. The primitive types are the boolean type and the numeric types. The numeric types are the integral types byte, short, int, long, and char, and the floating-point types float and double. The reference types are class types, interface types, and array types. There is also a special null type. An object is a dynamically created instance of a class type or a dynamically created array. The values of a reference type are references to objects. All objects, including arrays, support the methods of class Object . String literals are represented by String objects .” [2]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, as mentioned before, in Java, there are two “Types”:- &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-roman&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Primitive Type&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reference Type&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Classes, Interfaces, Arrays are all consolidations of Primitive types, so they just need to “point” to or reference the primitive ones, hence the name.&lt;br /&gt;
It is sometimes confusing and difficult to come up with a clear and robust distinction between Types and Classes. One might think &amp;quot;Class to be a Type of Type&amp;quot;. &lt;br /&gt;
It is however important to know that in strict Object Oriented Languages, Type is a union of Classes and Primitives. This rule, more or less consistent (with some deviations where primitives are treated as classes). &lt;br /&gt;
 &lt;br /&gt;
==Types and Classes in Languages==&lt;br /&gt;
===Ruby===&lt;br /&gt;
&lt;br /&gt;
Ruby claims to be a strong object oriented language. It is object oriented to the extent that every thing is an object. Primitive datatypes are objects, and we can make use of the object oriented techniques on even the primitives. As mentioned before, Ruby is a dynamic typed language, as the type is bound at compile time. Everything in Ruby has a class. Every class in Ruby is inherited from class Class. &lt;br /&gt;
&lt;br /&gt;
Type in Ruby is well defined as well. Using self inspection (reflection), we can find out whether a name is a Class, or a method. Let us see this in action:- &lt;br /&gt;
&lt;br /&gt;
The first thing that comes to a one’s mind is something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
5.class #=&amp;gt; Fixnum&lt;br /&gt;
&amp;quot;hello&amp;quot;.class #=&amp;gt; String&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
But have you thought of your class as an object? Well that seems odd, but that’s how ruby works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
5.class #=&amp;gt; Fixnum&lt;br /&gt;
class Foo;end  #=&amp;gt; nil&lt;br /&gt;
Foo.class #=&amp;gt; Class&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What does the above snippet of code mean exactly?&lt;br /&gt;
It means 2 things : Foo is a constant and that constant holds(refers to) an object of Class type.&lt;br /&gt;
&lt;br /&gt;
Let us prove that:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Foo = Class.new&lt;br /&gt;
(irb):8 warning: already initialized constant Foo&lt;br /&gt;
=&amp;gt; Foo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
As you can see, we got a warning because we tried to initialize the constant Foo again.&lt;br /&gt;
&lt;br /&gt;
So ,when you define some class ‘Foo’ in ruby, all you are doing is:&lt;br /&gt;
1-instantiating an object of type Class.&lt;br /&gt;
2-initializing a constant Foo that refers to that created object .&lt;br /&gt;
&lt;br /&gt;
So, when we say “object” ,then we do mean any object; an object of Class type, or any object of any type.[3]&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
&lt;br /&gt;
As mentioned before, Java is a strongly typed language. The type of data needs to be declared before using. The types of &amp;quot;types&amp;quot; in Java are :&lt;br /&gt;
   * Primitive Types:-  boolean and numeric. The numeric types are the integral types byte, short, int, long, and char, and the         &lt;br /&gt;
     floating-point types float and double. &lt;br /&gt;
   * Reference Types:- class types, interface types and array types. [2] &lt;br /&gt;
&lt;br /&gt;
Java is an object-oriented language, but it does make a clear distinction between the primitive type and Classes. int, float, char etc. are primitives, and the other data types other than the primitives are references. It is an interesting distinction to note, because of the differences in method calling system in different languages. Java makes a distinction in &amp;quot;calling-by-value&amp;quot; when a primitive is passed as a parameter, and &amp;quot;calling-by-reference&amp;quot; when an object is passed. In fact, if a primitive is passed, a call by value is invoked, but when a Class object is passed, only a reference is passed to the object. &lt;br /&gt;
&lt;br /&gt;
For a more language specific treatment of types and classes, you can refer: http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_6_ap &lt;br /&gt;
&lt;br /&gt;
==Discussion of Issues==&lt;br /&gt;
Okay, so you're about to write a program and you need to represent data somehow.  Should you use a primitive type?  What about a class?  There are several features that are handed to you with each.&lt;br /&gt;
&lt;br /&gt;
=== Primitive Types ===&lt;br /&gt;
==== Advantages ====&lt;br /&gt;
===== Simplicity =====&lt;br /&gt;
In strongly typed languages, primitive types are ideal for data which doesn't necessarily need to be partitioned into several smaller components.  If you are looking to store and represent a simple throw-away integer for looping, for example, there's little reason why one would want to construct a class for this purpose.&lt;br /&gt;
&lt;br /&gt;
Primitive types are also often times coupled with native operations, handed to you by the language.  For example, in Java, variables of type int are automatically given operations such as addition, subtraction, multiplication, and so on.  These operations work as follows:&lt;br /&gt;
# Receive both inputs&lt;br /&gt;
# Cast if necessary (for example, from an int to a double)&lt;br /&gt;
# Perform calculation&lt;br /&gt;
# Return result&lt;br /&gt;
&lt;br /&gt;
It is important to note that the primitive types themselves are left ''unchanged'', and the result is returned from the operation, giving the programmer the ability to place the result elsewhere.&lt;br /&gt;
&lt;br /&gt;
===== Efficiency =====&lt;br /&gt;
In efficiency-critical applications, primitive types and their operations are oftentimes mapped directly to hardware-supported equivalents, thus operations can be performed very quickly.  This style of downgrading the logic to more so the hardware level has been replaced over the years for general applications, since improvements to hardware components have eradicated the once-imperative necessity to program efficiently.  Another point of view concerning efficiency could be from development time: if the program one is writing doesn't require complex design, it would be quicker to use the language's built-in types instead of taking the time to design a class to do the same feature.&lt;br /&gt;
&lt;br /&gt;
==== Disadvantages ====&lt;br /&gt;
===== Single-state storage =====&lt;br /&gt;
One large disadvantages to primitive types are that they are generally capable of only holding a single dimension state.  This limitation requires the programmer to use other variables in conjunction if they desire to hold more than one field of data.&lt;br /&gt;
&lt;br /&gt;
===== Refactoring =====&lt;br /&gt;
Since primitive types do not allow you to encapsulate your data, if you ever desire to change the behavior of your program, you are forced to manually check each use of the variable for enforcement.&lt;br /&gt;
&lt;br /&gt;
For example, suppose you have a system designed in Java that maintains an integer value which represents the number of books you have in a library.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
int numBooks;&lt;br /&gt;
...&lt;br /&gt;
numBooks = 0;&lt;br /&gt;
...&lt;br /&gt;
numBooks++;&lt;br /&gt;
...&lt;br /&gt;
numBooks--;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A few days later, you realize that you should probably refactor your system to maintain a log of when this variable updates.  You immediately face a problem since, as it is, your code directly manipulates a single-state type integer.  Without resorting to a more object-oriented solution, you would have to update each location in the code of where a change takes place in order to establish this bookkeeping (pun intended).&lt;br /&gt;
&amp;lt;code id=&amp;quot;bookKeeping&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
public static void integerValueChanged(){&lt;br /&gt;
  // records that the value has been changed&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public static void main(String[]args){&lt;br /&gt;
  int numBooks;&lt;br /&gt;
  ...&lt;br /&gt;
  numBooks = 0;&lt;br /&gt;
  integerValueChanged();&lt;br /&gt;
  ...&lt;br /&gt;
  numBooks++;&lt;br /&gt;
  integerValueChanged();&lt;br /&gt;
  ...&lt;br /&gt;
  numBooks--;&lt;br /&gt;
  integerValueChanged();&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generalize this concept, it is oftentimes necessary to modify &amp;quot;what happens&amp;quot; when something is updated, and this cannot be easily accomplished by merely using primitive types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Class Types ===&lt;br /&gt;
Classes to the rescue!  Classes give programmers the ability to construct complex data types that are also capable of defining their own operations, all while keeping the details and specifics black-boxed outsize of where the class will be used in the code.&lt;br /&gt;
==== Advantages ====&lt;br /&gt;
===== Multi-dimensional Storage =====&lt;br /&gt;
Contrasting to primitive types, classes allow programmers to couple a varying number of fields.  Grouping fields of data into a single class, then instantiating such an object and manipulating it is much more convenient than keeping track of several individual variables.&lt;br /&gt;
&lt;br /&gt;
===== Refactoring =====&lt;br /&gt;
Oftentimes it is necessary to refactor a system to execute code when a change happens.  In object-land, we are able to do this through the ability to control what happens in our methods.&lt;br /&gt;
&lt;br /&gt;
Taking our [[#bookKeeping| example from above]], we can give a quick example of how a class could be defined to handle the situation much more elegantly.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
public class RecordedNumber{&lt;br /&gt;
  // The integer value, kept concealed in the class&lt;br /&gt;
  private int value;&lt;br /&gt;
&lt;br /&gt;
  public RecordedNumber(int value){&lt;br /&gt;
    this.value = value;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public int getValue(){&lt;br /&gt;
    return value;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public void setValue(int newValue){&lt;br /&gt;
    // code to do any necessary recording.&lt;br /&gt;
    ...&lt;br /&gt;
    this.value = newValue;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class MyExample{&lt;br /&gt;
  public static void main(String[]args){&lt;br /&gt;
    RecordedNumber numBooks = new RecordedNumber(0);&lt;br /&gt;
    ...&lt;br /&gt;
    numBooks.setValue(4); // the object handles all necessary bookkeeping&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Code-reuse =====&lt;br /&gt;
Another nice feature to class-types encapsulate the concept surrounding code re-usability, especially in topics such as inheritance.  Classes allow the programmer to enhance an already existing class-type to be more specific, which in turn can prevent excessive code duplication.&lt;br /&gt;
&lt;br /&gt;
===== Application Structure =====&lt;br /&gt;
Designing an application in a object-oriented / class-specific style can reduce the challenges of designing and building a difficult system into merely making objects successfully interact.  It is from this concept that languages such as [http://en.wikipedia.org/wiki/Unified_Modeling_Language Unified Modeling Language (UML)] have been created, allowing software engineers to build around the notion of classes and their relationships to one another.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==== Disadvantages ====&lt;br /&gt;
===== Speed Considerations =====&lt;br /&gt;
In computational-intensive applications, objects built from classes tend to be less efficient than primitive data types built around procedural context.  This is due in part because of the object's creation, since it isn't supported directly hardware level.  Consideration is placed more so on good-design and coding-practices when implementing functionality around classes.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===== B =====&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===== C =====&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html&lt;br /&gt;
&lt;br /&gt;
[2] Java:- Types, Values and Variables&lt;br /&gt;
    http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html&lt;br /&gt;
[3] Ruby Reflection ,http://www.khelll.com/blog/ruby/ruby-reflection/&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=39230</id>
		<title>CSC/ECE 517 Fall 2010/ch3 4b mt</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=39230"/>
		<updated>2010-10-21T03:23:52Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Types vs Classes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Overall s.png|right|upright|Relationship between Type and Class]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
It is often that we talk about types, strongly typed, weakly typed, classes. To make it clear,  let us look into it clearly. Every programming language has a way to define a variable. A variable is a named address location which stores a particular value. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
&lt;br /&gt;
Time for an analogy? Imagine a variable to be a vacant house. It could have animals, humans, robots, or another smaller house, or whatever you can think of. There has to be a way, from a third party perspective, so as to be cognizant of the kind of things that reside in the house. Types and typing is a concept which realizes this concept. A typed language or a strongly typed language is one where the type of a variable has to be declared so as to avoid any wrong dealings of the value during run time. For example, Java is a strongly typed language. If I need to use two integers for addition, I would explicitly have to mention them as an integer:- &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  int integer1;&lt;br /&gt;
  int integer2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, we can’t then re-initialize it to any other type in its defined scope.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  integer1 = “Hello World”;  // cannot map an int to a String&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the case of non-typed languages, say Ruby, or Visual Basic, etc. We don’t need to specify a type. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  def variable1;&lt;br /&gt;
  def variable2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, it could be initialized with anything,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
variable1 = 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
as well as &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
variable1 = “Good morning Vietnam” are allowed. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Classes===&lt;br /&gt;
&lt;br /&gt;
A class is a “type” of variable specification. The difference between a class and a regular primitive integer, character, etc is that a class:-&lt;br /&gt;
&lt;br /&gt;
# consists of one or more primitive or non-primitive variables&lt;br /&gt;
# is a pre-defined structure&lt;br /&gt;
# defines methods which operate on the internal state of the object&lt;br /&gt;
&lt;br /&gt;
The Type of Class is “Class”, just like the Type of integer is “integer” in case of strongly typed languages. &lt;br /&gt;
&lt;br /&gt;
For example, in case of Java:- &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;“The types of the Java programming language are divided into two categories: primitive types and reference types. The primitive types are the boolean type and the numeric types. The numeric types are the integral types byte, short, int, long, and char, and the floating-point types float and double. The reference types are class types, interface types, and array types. There is also a special null type. An object is a dynamically created instance of a class type or a dynamically created array. The values of a reference type are references to objects. All objects, including arrays, support the methods of class Object . String literals are represented by String objects .” [2]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, as mentioned before, in Java, there are two “Types”:- &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-roman&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Primitive Type&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reference Type&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Classes, Interfaces, Arrays are all consolidations of Primitive types, so they just need to “point” to or reference the primitive ones, hence the name.&lt;br /&gt;
It is sometimes confusing and difficult to come up with a clear and robust distinction between Types and Classes. One might think &amp;quot;Class to be a Type of Type&amp;quot;. &lt;br /&gt;
It is however important to know that in strict Object Oriented Languages, Type is a union of Classes and Primitives. This rule, more or less consistent (with some deviations where primitives are treated as classes). &lt;br /&gt;
 &lt;br /&gt;
==Types and Classes in Languages==&lt;br /&gt;
===Ruby===&lt;br /&gt;
&lt;br /&gt;
Ruby claims to be a strong object oriented language. It is object oriented to the extent that every thing is an object. Primitive datatypes are objects, and we can make use of the object oriented techniques on even the primitives. As mentioned before, Ruby is a dynamic typed language, as the type is bound at compile time. Everything in Ruby has a class. Every class in Ruby is inherited from class Class. &lt;br /&gt;
&lt;br /&gt;
Type in Ruby is well defined as well. Using self inspection (reflection), we can find out whether a name is a Class, or a method. Let us see this in action:- &lt;br /&gt;
&lt;br /&gt;
The first thing that comes to a one’s mind is something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
5.class #=&amp;gt; Fixnum&lt;br /&gt;
&amp;quot;hello&amp;quot;.class #=&amp;gt; String&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
But have you thought of your class as an object? Well that seems odd, but that’s how ruby works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
5.class #=&amp;gt; Fixnum&lt;br /&gt;
class Foo;end  #=&amp;gt; nil&lt;br /&gt;
Foo.class #=&amp;gt; Class&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What does the above snippet of code mean exactly?&lt;br /&gt;
It means 2 things : Foo is a constant and that constant holds(refers to) an object of Class type.&lt;br /&gt;
&lt;br /&gt;
Let us prove that:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Foo = Class.new&lt;br /&gt;
(irb):8 warning: already initialized constant Foo&lt;br /&gt;
=&amp;gt; Foo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
As you can see, we got a warning because we tried to initialize the constant Foo again.&lt;br /&gt;
&lt;br /&gt;
So ,when you define some class ‘Foo’ in ruby, all you are doing is:&lt;br /&gt;
1-instantiating an object of type Class.&lt;br /&gt;
2-initializing a constant Foo that refers to that created object .&lt;br /&gt;
&lt;br /&gt;
So, when we say “object” ,then we do mean any object; an object of Class type, or any object of any type.[3]&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
&lt;br /&gt;
As mentioned before, Java is a strongly typed language. The type of data needs to be declared before using. The types of &amp;quot;types&amp;quot; in Java are :&lt;br /&gt;
   * Primitive Types:-  boolean and numeric. The numeric types are the integral types byte, short, int, long, and char, and the         &lt;br /&gt;
     floating-point types float and double. &lt;br /&gt;
   * Reference Types:- class types, interface types and array types. [2] &lt;br /&gt;
&lt;br /&gt;
Java is an object-oriented language, but it does make a clear distinction between the primitive type and Classes. int, float, char etc. are primitives, and the other data types other than the primitives are references. It is an interesting distinction to note, because of the differences in method calling system in different languages. Java makes a distinction in &amp;quot;calling-by-value&amp;quot; when a primitive is passed as a parameter, and &amp;quot;calling-by-reference&amp;quot; when an object is passed. This can be shown   &lt;br /&gt;
&lt;br /&gt;
For a more language specific treatment of types and classes, you can refer: http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_6_ap &lt;br /&gt;
&lt;br /&gt;
==Discussion of Issues==&lt;br /&gt;
Okay, so you're about to write a program and you need to represent data somehow.  Should you use a primitive type?  What about a class?  There are several features that are handed to you with each.&lt;br /&gt;
&lt;br /&gt;
=== Primitive Types ===&lt;br /&gt;
==== Advantages ====&lt;br /&gt;
===== Simplicity =====&lt;br /&gt;
In strongly typed languages, primitive types are ideal for data which doesn't necessarily need to be partitioned into several smaller components.  If you are looking to store and represent a simple throw-away integer for looping, for example, there's little reason why one would want to construct a class for this purpose.&lt;br /&gt;
&lt;br /&gt;
Primitive types are also often times coupled with native operations, handed to you by the language.  For example, in Java, variables of type int are automatically given operations such as addition, subtraction, multiplication, and so on.  These operations work as follows:&lt;br /&gt;
# Receive both inputs&lt;br /&gt;
# Cast if necessary (for example, from an int to a double)&lt;br /&gt;
# Perform calculation&lt;br /&gt;
# Return result&lt;br /&gt;
&lt;br /&gt;
It is important to note that the primitive types themselves are left ''unchanged'', and the result is returned from the operation, giving the programmer the ability to place the result elsewhere.&lt;br /&gt;
&lt;br /&gt;
===== Efficiency =====&lt;br /&gt;
In efficiency-critical applications, primitive types and their operations are oftentimes mapped directly to hardware-supported equivalents, thus operations can be performed very quickly.  This style of downgrading the logic to more so the hardware level has been replaced over the years for general applications, since improvements to hardware components have eradicated the once-imperative necessity to program efficiently.  Another point of view concerning efficiency could be from development time: if the program one is writing doesn't require complex design, it would be quicker to use the language's built-in types instead of taking the time to design a class to do the same feature.&lt;br /&gt;
&lt;br /&gt;
==== Disadvantages ====&lt;br /&gt;
===== Single-state storage =====&lt;br /&gt;
One large disadvantages to primitive types are that they are generally capable of only holding a single dimension state.  This limitation requires the programmer to use other variables in conjunction if they desire to hold more than one field of data.&lt;br /&gt;
&lt;br /&gt;
===== Refactoring =====&lt;br /&gt;
Since primitive types do not allow you to encapsulate your data, if you ever desire to change the behavior of your program, you are forced to manually check each use of the variable for enforcement.&lt;br /&gt;
&lt;br /&gt;
For example, suppose you have a system designed in Java that maintains an integer value which represents the number of books you have in a library.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
int numBooks;&lt;br /&gt;
...&lt;br /&gt;
numBooks = 0;&lt;br /&gt;
...&lt;br /&gt;
numBooks++;&lt;br /&gt;
...&lt;br /&gt;
numBooks--;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A few days later, you realize that you should probably refactor your system to maintain a log of when this variable updates.  You immediately face a problem since, as it is, your code directly manipulates a single-state type integer.  Without resorting to a more object-oriented solution, you would have to update each location in the code of where a change takes place in order to establish this bookkeeping (pun intended).&lt;br /&gt;
&amp;lt;code id=&amp;quot;bookKeeping&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
public static void integerValueChanged(){&lt;br /&gt;
  // records that the value has been changed&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public static void main(String[]args){&lt;br /&gt;
  int numBooks;&lt;br /&gt;
  ...&lt;br /&gt;
  numBooks = 0;&lt;br /&gt;
  integerValueChanged();&lt;br /&gt;
  ...&lt;br /&gt;
  numBooks++;&lt;br /&gt;
  integerValueChanged();&lt;br /&gt;
  ...&lt;br /&gt;
  numBooks--;&lt;br /&gt;
  integerValueChanged();&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generalize this concept, it is oftentimes necessary to modify &amp;quot;what happens&amp;quot; when something is updated, and this cannot be easily accomplished by merely using primitive types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Class Types ===&lt;br /&gt;
Classes to the rescue!  Classes give programmers the ability to construct complex data types that are also capable of defining their own operations, all while keeping the details and specifics black-boxed outsize of where the class will be used in the code.&lt;br /&gt;
==== Advantages ====&lt;br /&gt;
===== Multi-dimensional Storage =====&lt;br /&gt;
Contrasting to primitive types, classes allow programmers to couple a varying number of fields.  Grouping fields of data into a single class, then instantiating such an object and manipulating it is much more convenient than keeping track of several individual variables.&lt;br /&gt;
&lt;br /&gt;
===== Refactoring =====&lt;br /&gt;
Oftentimes it is necessary to refactor a system to execute code when a change happens.  In object-land, we are able to do this through the ability to control what happens in our methods.&lt;br /&gt;
&lt;br /&gt;
Taking our [[#bookKeeping| example from above]], we can give a quick example of how a class could be defined to handle the situation much more elegantly.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
public class RecordedNumber{&lt;br /&gt;
  // The integer value, kept concealed in the class&lt;br /&gt;
  private int value;&lt;br /&gt;
&lt;br /&gt;
  public RecordedNumber(int value){&lt;br /&gt;
    this.value = value;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public int getValue(){&lt;br /&gt;
    return value;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public void setValue(int newValue){&lt;br /&gt;
    // code to do any necessary recording.&lt;br /&gt;
    ...&lt;br /&gt;
    this.value = newValue;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class MyExample{&lt;br /&gt;
  public static void main(String[]args){&lt;br /&gt;
    RecordedNumber numBooks = new RecordedNumber(0);&lt;br /&gt;
    ...&lt;br /&gt;
    numBooks.setValue(4); // the object handles all necessary bookkeeping&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Code-reuse =====&lt;br /&gt;
Another nice feature to class-types encapsulate the concept surrounding code re-usability, especially in topics such as inheritance.  Classes allow the programmer to enhance an already existing class-type to be more specific, which in turn can prevent excessive code duplication.&lt;br /&gt;
&lt;br /&gt;
===== Application Structure =====&lt;br /&gt;
Designing an application in a object-oriented / class-specific style can reduce the challenges of designing and building a difficult system into merely making objects successfully interact.  It is from this concept that languages such as [http://en.wikipedia.org/wiki/Unified_Modeling_Language Unified Modeling Language (UML)] have been created, allowing software engineers to build around the notion of classes and their relationships to one another.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==== Disadvantages ====&lt;br /&gt;
===== Speed Considerations =====&lt;br /&gt;
In computational-intensive applications, objects built from classes tend to be less efficient than primitive data types built around procedural context.  This is due in part because of the object's creation, since it isn't supported directly hardware level.  Consideration is placed more so on good-design and coding-practices when implementing functionality around classes.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===== B =====&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===== C =====&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html&lt;br /&gt;
&lt;br /&gt;
[2] Java:- Types, Values and Variables&lt;br /&gt;
    http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html&lt;br /&gt;
[3] Ruby Reflection ,http://www.khelll.com/blog/ruby/ruby-reflection/&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=39209</id>
		<title>CSC/ECE 517 Fall 2010/ch3 4b mt</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=39209"/>
		<updated>2010-10-21T03:14:29Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Types vs Classes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Overall s.png|right|upright|Relationship between Type and Class]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
It is often that we talk about types, strongly typed, weakly typed, classes. To make it clear,  let us look into it clearly. Every programming language has a way to define a variable. A variable is a named address location which stores a particular value. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
&lt;br /&gt;
Time for an analogy? Imagine a variable to be a vacant house. It could have animals, humans, robots, or another smaller house, or whatever you can think of. There has to be a way, from a third party perspective, so as to be cognizant of the kind of things that reside in the house. Types and typing is a concept which realizes this concept. A typed language or a strongly typed language is one where the type of a variable has to be declared so as to avoid any wrong dealings of the value during run time. For example, Java is a strongly typed language. If I need to use two integers for addition, I would explicitly have to mention them as an integer:- &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  int integer1;&lt;br /&gt;
  int integer2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, we can’t then re-initialize it to any other type in its defined scope.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  integer1 = “Hello World”;  // cannot map an int to a String&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the case of non-typed languages, say Ruby, or Visual Basic, etc. We don’t need to specify a type. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  def variable1;&lt;br /&gt;
  def variable2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, it could be initialized with anything,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
variable1 = 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
as well as &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
variable1 = “Good morning Vietnam” are allowed. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Classes===&lt;br /&gt;
&lt;br /&gt;
A class is a “type” of variable specification. The difference between a class and a regular primitive integer, character, etc is that a class:-&lt;br /&gt;
&lt;br /&gt;
# consists of one or more primitive or non-primitive variables&lt;br /&gt;
# is a pre-defined structure&lt;br /&gt;
# defines methods which operate on the internal state of the object&lt;br /&gt;
&lt;br /&gt;
The Type of Class is “Class”, just like the Type of integer is “integer” in case of strongly typed languages. &lt;br /&gt;
&lt;br /&gt;
For example, in case of Java:- &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;“The types of the Java programming language are divided into two categories: primitive types and reference types. The primitive types are the boolean type and the numeric types. The numeric types are the integral types byte, short, int, long, and char, and the floating-point types float and double. The reference types are class types, interface types, and array types. There is also a special null type. An object is a dynamically created instance of a class type or a dynamically created array. The values of a reference type are references to objects. All objects, including arrays, support the methods of class Object . String literals are represented by String objects .” [2]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, as mentioned before, in Java, there are two “Types”:- &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-roman&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Primitive Type&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reference Type&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Classes, Interfaces, Arrays are all consolidations of Primitive types, so they just need to “point” to or reference the primitive ones, hence the name.&lt;br /&gt;
&lt;br /&gt;
==Types and Classes in Languages==&lt;br /&gt;
===Ruby===&lt;br /&gt;
&lt;br /&gt;
Ruby claims to be a strong object oriented language. It is object oriented to the extent that every thing is an object. Primitive datatypes are objects, and we can make use of the object oriented techniques on even the primitives. As mentioned before, Ruby is a dynamic typed language, as the type is bound at compile time. Everything in Ruby has a class. Every class in Ruby is inherited from class Class. &lt;br /&gt;
&lt;br /&gt;
Type in Ruby is well defined as well. Using self inspection (reflection), we can find out whether a name is a Class, or a method. Let us see this in action:- &lt;br /&gt;
&lt;br /&gt;
The first thing that comes to a one’s mind is something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
5.class #=&amp;gt; Fixnum&lt;br /&gt;
&amp;quot;hello&amp;quot;.class #=&amp;gt; String&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
But have you thought of your class as an object? Well that seems odd, but that’s how ruby works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
5.class #=&amp;gt; Fixnum&lt;br /&gt;
class Foo;end  #=&amp;gt; nil&lt;br /&gt;
Foo.class #=&amp;gt; Class&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What does the above snippet of code mean exactly?&lt;br /&gt;
It means 2 things : Foo is a constant and that constant holds(refers to) an object of Class type.&lt;br /&gt;
&lt;br /&gt;
Let us prove that:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Foo = Class.new&lt;br /&gt;
(irb):8 warning: already initialized constant Foo&lt;br /&gt;
=&amp;gt; Foo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
As you can see, we got a warning because we tried to initialize the constant Foo again.&lt;br /&gt;
&lt;br /&gt;
So ,when you define some class ‘Foo’ in ruby, all you are doing is:&lt;br /&gt;
1-instantiating an object of type Class.&lt;br /&gt;
2-initializing a constant Foo that refers to that created object .&lt;br /&gt;
&lt;br /&gt;
So, when we say “object” ,then we do mean any object; an object of Class type, or any object of any type.[3]&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
&lt;br /&gt;
As mentioned before, Java is a strongly typed language. The type of data needs to be declared before using. The types of &amp;quot;types&amp;quot; in Java are :&lt;br /&gt;
   * Primitive Types:-  boolean and numeric. The numeric types are the integral types byte, short, int, long, and char, and the         &lt;br /&gt;
     floating-point types float and double. &lt;br /&gt;
   * Reference Types:- class types, interface types and array types. [2] &lt;br /&gt;
&lt;br /&gt;
Java is an object-oriented language, but it does make a clear distinction between the primitive type and Classes. int, float, char etc. are primitives, and the other data types other than the primitives are references. It is an interesting distinction to note, because of the differences in method calling system in different languages. Java makes a distinction in &amp;quot;calling-by-value&amp;quot; when a primitive is passed as a parameter, and &amp;quot;calling-by-reference&amp;quot; when an object is passed. This can be shown   &lt;br /&gt;
&lt;br /&gt;
For a more language specific treatment of types and classes, you can refer: http://pg-server.csc.ncsu.edu/mediawiki/index.php/CSC/ECE_517_Fall_2007/wiki2_6_ap &lt;br /&gt;
&lt;br /&gt;
==Discussion of Issues==&lt;br /&gt;
Okay, so you're about to write a program and you need to represent data somehow.  Should you use a primitive type?  What about a class?  There are several features that are handed to you with each.&lt;br /&gt;
&lt;br /&gt;
=== Primitive Types ===&lt;br /&gt;
==== Advantages ====&lt;br /&gt;
===== Simplicity =====&lt;br /&gt;
In strongly typed languages, primitive types are ideal for data which doesn't necessarily need to be partitioned into several smaller components.  If you are looking to store and represent a simple throw-away integer for looping, for example, there's little reason why one would want to construct a class for this purpose.&lt;br /&gt;
&lt;br /&gt;
Primitive types are also often times coupled with native operations, handed to you by the language.  For example, in Java, variables of type int are automatically given operations such as addition, subtraction, multiplication, and so on.  These operations work as follows:&lt;br /&gt;
# Receive both inputs&lt;br /&gt;
# Cast if necessary (for example, from an int to a double)&lt;br /&gt;
# Perform calculation&lt;br /&gt;
# Return result&lt;br /&gt;
&lt;br /&gt;
It is important to note that the primitive types themselves are left ''unchanged'', and the result is returned from the operation, giving the programmer the ability to place the result elsewhere.&lt;br /&gt;
&lt;br /&gt;
===== Efficiency =====&lt;br /&gt;
In efficiency-critical applications, primitive types and their operations are oftentimes mapped directly to hardware-supported equivalents, thus operations can be performed very quickly.  This style of downgrading the logic to more so the hardware level has been replaced over the years for general applications, since improvements to hardware components have eradicated the once-imperative necessity to program efficiently.  Another point of view concerning efficiency could be from development time: if the program one is writing doesn't require complex design, it would be quicker to use the language's built-in types instead of taking the time to design a class to do the same feature.&lt;br /&gt;
&lt;br /&gt;
==== Disadvantages ====&lt;br /&gt;
===== Single-state storage =====&lt;br /&gt;
One large disadvantages to primitive types are that they are generally capable of only holding a single dimension state.  This limitation requires the programmer to use other variables in conjunction if they desire to hold more than one field of data.&lt;br /&gt;
&lt;br /&gt;
===== Refactoring =====&lt;br /&gt;
Since primitive types do not allow you to encapsulate your data, if you ever desire to change the behavior of your program, you are forced to manually check each use of the variable for enforcement.&lt;br /&gt;
&lt;br /&gt;
For example, suppose you have a system designed in Java that maintains an integer value which represents the number of books you have in a library.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
int numBooks;&lt;br /&gt;
...&lt;br /&gt;
numBooks = 0;&lt;br /&gt;
...&lt;br /&gt;
numBooks++;&lt;br /&gt;
...&lt;br /&gt;
numBooks--;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A few days later, you realize that you should probably refactor your system to maintain a log of when this variable updates.  You immediately face a problem since, as it is, your code directly manipulates a single-state type integer.  Without resorting to a more object-oriented solution, you would have to update each location in the code of where a change takes place in order to establish this bookkeeping (pun intended).&lt;br /&gt;
&amp;lt;code id=&amp;quot;bookKeeping&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
public static void integerValueChanged(){&lt;br /&gt;
  // records that the value has been changed&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public static void main(String[]args){&lt;br /&gt;
  int numBooks;&lt;br /&gt;
  ...&lt;br /&gt;
  numBooks = 0;&lt;br /&gt;
  integerValueChanged();&lt;br /&gt;
  ...&lt;br /&gt;
  numBooks++;&lt;br /&gt;
  integerValueChanged();&lt;br /&gt;
  ...&lt;br /&gt;
  numBooks--;&lt;br /&gt;
  integerValueChanged();&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generalize this concept, it is oftentimes necessary to modify &amp;quot;what happens&amp;quot; when something is updated, and this cannot be easily accomplished by merely using primitive types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Class Types ===&lt;br /&gt;
Classes to the rescue!  Classes give programmers the ability to construct complex data types that are also capable of defining their own operations, all while keeping the details and specifics black-boxed outsize of where the class will be used in the code.&lt;br /&gt;
==== Advantages ====&lt;br /&gt;
===== Multi-dimensional Storage =====&lt;br /&gt;
Contrasting to primitive types, classes allow programmers to couple a varying number of fields.  Grouping fields of data into a single class, then instantiating such an object and manipulating it is much more convenient than keeping track of several individual variables.&lt;br /&gt;
&lt;br /&gt;
===== Refactoring =====&lt;br /&gt;
Oftentimes it is necessary to refactor a system to execute code when a change happens.  In object-land, we are able to do this through the ability to control what happens in our methods.&lt;br /&gt;
&lt;br /&gt;
Taking our [[#bookKeeping| example from above]], we can give a quick example of how a class could be defined to handle the situation much more elegantly.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
public class RecordedNumber{&lt;br /&gt;
  // The integer value, kept concealed in the class&lt;br /&gt;
  private int value;&lt;br /&gt;
&lt;br /&gt;
  public RecordedNumber(int value){&lt;br /&gt;
    this.value = value;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public int getValue(){&lt;br /&gt;
    return value;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public void setValue(int newValue){&lt;br /&gt;
    // code to do any necessary recording.&lt;br /&gt;
    ...&lt;br /&gt;
    this.value = newValue;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class MyExample{&lt;br /&gt;
  public static void main(String[]args){&lt;br /&gt;
    RecordedNumber numBooks = new RecordedNumber(0);&lt;br /&gt;
    ...&lt;br /&gt;
    numBooks.setValue(4); // the object handles all necessary bookkeeping&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Code-reuse =====&lt;br /&gt;
Another nice feature to class-types encapsulate the concept surrounding code re-usability, especially in topics such as inheritance.  Classes allow the programmer to enhance an already existing class-type to be more specific, which in turn can prevent excessive code duplication.&lt;br /&gt;
&lt;br /&gt;
===== Application Structure =====&lt;br /&gt;
Designing an application in a object-oriented / class-specific style can reduce the challenges of designing and building a difficult system into merely making objects successfully interact.  It is from this concept that languages such as [http://en.wikipedia.org/wiki/Unified_Modeling_Language Unified Modeling Language (UML)] have been created, allowing software engineers to build around the notion of classes and their relationships to one another.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==== Disadvantages ====&lt;br /&gt;
===== Speed Considerations =====&lt;br /&gt;
In computational-intensive applications, objects built from classes tend to be less efficient than primitive data types built around procedural context.  This is due in part because of the object's creation, since it isn't supported directly hardware level.  Consideration is placed more so on good-design and coding-practices when implementing functionality around classes.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===== B =====&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===== C =====&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html&lt;br /&gt;
&lt;br /&gt;
[2] Java:- Types, Values and Variables&lt;br /&gt;
    http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html&lt;br /&gt;
[3] Ruby Reflection ,http://www.khelll.com/blog/ruby/ruby-reflection/&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=39204</id>
		<title>CSC/ECE 517 Fall 2010/ch3 4b mt</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=39204"/>
		<updated>2010-10-21T03:09:35Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Types vs Classes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Overall s.png|right|upright|Relationship between Type and Class]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
It is often that we talk about types, strongly typed, weakly typed, classes. To make it clear,  let us look into it clearly. Every programming language has a way to define a variable. A variable is a named address location which stores a particular value. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
&lt;br /&gt;
Time for an analogy? Imagine a variable to be a vacant house. It could have animals, humans, robots, or another smaller house, or whatever you can think of. There has to be a way, from a third party perspective, so as to be cognizant of the kind of things that reside in the house. Types and typing is a concept which realizes this concept. A typed language or a strongly typed language is one where the type of a variable has to be declared so as to avoid any wrong dealings of the value during run time. For example, Java is a strongly typed language. If I need to use two integers for addition, I would explicitly have to mention them as an integer:- &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  int integer1;&lt;br /&gt;
  int integer2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, we can’t then re-initialize it to any other type in its defined scope.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  integer1 = “Hello World”;  // cannot map an int to a String&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the case of non-typed languages, say Ruby, or Visual Basic, etc. We don’t need to specify a type. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  def variable1;&lt;br /&gt;
  def variable2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, it could be initialized with anything,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
variable1 = 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
as well as &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
variable1 = “Good morning Vietnam” are allowed. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Classes===&lt;br /&gt;
&lt;br /&gt;
A class is a “type” of variable specification. The difference between a class and a regular primitive integer, character, etc is that a class:-&lt;br /&gt;
&lt;br /&gt;
# consists of one or more primitive or non-primitive variables&lt;br /&gt;
# is a pre-defined structure&lt;br /&gt;
# defines methods which operate on the internal state of the object&lt;br /&gt;
&lt;br /&gt;
The Type of Class is “Class”, just like the Type of integer is “integer” in case of strongly typed languages. &lt;br /&gt;
&lt;br /&gt;
For example, in case of Java:- &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;“The types of the Java programming language are divided into two categories: primitive types and reference types. The primitive types are the boolean type and the numeric types. The numeric types are the integral types byte, short, int, long, and char, and the floating-point types float and double. The reference types are class types, interface types, and array types. There is also a special null type. An object is a dynamically created instance of a class type or a dynamically created array. The values of a reference type are references to objects. All objects, including arrays, support the methods of class Object . String literals are represented by String objects .” [2]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, as mentioned before, in Java, there are two “Types”:- &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-roman&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Primitive Type&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reference Type&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Classes, Interfaces, Arrays are all consolidations of Primitive types, so they just need to “point” to or reference the primitive ones, hence the name.&lt;br /&gt;
&lt;br /&gt;
==Types and Classes in Languages==&lt;br /&gt;
===Ruby===&lt;br /&gt;
&lt;br /&gt;
Ruby claims to be a strong object oriented language. It is object oriented to the extent that every thing is an object. Primitive datatypes are objects, and we can make use of the object oriented techniques on even the primitives. As mentioned before, Ruby is a dynamic typed language, as the type is bound at compile time. Everything in Ruby has a class. Every class in Ruby is inherited from class Class. &lt;br /&gt;
&lt;br /&gt;
Type in Ruby is well defined as well. Using self inspection (reflection), we can find out whether a name is a Class, or a method. Let us see this in action:- &lt;br /&gt;
&lt;br /&gt;
The first thing that comes to a one’s mind is something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
5.class #=&amp;gt; Fixnum&lt;br /&gt;
&amp;quot;hello&amp;quot;.class #=&amp;gt; String&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
But have you thought of your class as an object? Well that seems odd, but that’s how ruby works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
5.class #=&amp;gt; Fixnum&lt;br /&gt;
class Foo;end  #=&amp;gt; nil&lt;br /&gt;
Foo.class #=&amp;gt; Class&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What does the above snippet of code mean exactly?&lt;br /&gt;
It means 2 things : Foo is a constant and that constant holds(refers to) an object of Class type.&lt;br /&gt;
&lt;br /&gt;
Let us prove that:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Foo = Class.new&lt;br /&gt;
(irb):8 warning: already initialized constant Foo&lt;br /&gt;
=&amp;gt; Foo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
As you can see, we got a warning because we tried to initialize the constant Foo again.&lt;br /&gt;
&lt;br /&gt;
So ,when you define some class ‘Foo’ in ruby, all you are doing is:&lt;br /&gt;
1-instantiating an object of type Class.&lt;br /&gt;
2-initializing a constant Foo that refers to that created object .&lt;br /&gt;
&lt;br /&gt;
So, when we say “object” ,then we do mean any object; an object of Class type, or any object of any type.[3]&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
&lt;br /&gt;
As mentioned before, Java is a strongly typed language. The type of data needs to be declared before using. The types of &amp;quot;types&amp;quot; in Java are :&lt;br /&gt;
   * Primitive Types:-  boolean and numeric. The numeric types are the integral types byte, short, int, long, and char, and the         &lt;br /&gt;
     floating-point types float and double. &lt;br /&gt;
   * Reference Types:- class types, interface types and array types. [2] &lt;br /&gt;
&lt;br /&gt;
Java is an object-oriented language, but it does make a clear distinction between the primitive type and Classes. int, float, char etc. are primitives, and the other data types other than the primitives are references. It is an interesting distinction to note, because of the differences in method calling system in different languages. Java makes a distinction in &amp;quot;calling-by-value&amp;quot; when a primitive is passed as a parameter, and &amp;quot;calling-by-reference&amp;quot; when an object is passed. This can be shown   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Discussion of Issues==&lt;br /&gt;
Okay, so you're about to write a program and you need to represent data somehow.  Should you use a primitive type?  What about a class?  There are several features that are handed to you with each.&lt;br /&gt;
&lt;br /&gt;
=== Primitive Types ===&lt;br /&gt;
==== Advantages ====&lt;br /&gt;
===== Simplicity =====&lt;br /&gt;
In strongly typed languages, primitive types are ideal for data which doesn't necessarily need to be partitioned into several smaller components.  If you are looking to store and represent a simple throw-away integer for looping, for example, there's little reason why one would want to construct a class for this purpose.&lt;br /&gt;
&lt;br /&gt;
Primitive types are also often times coupled with native operations, handed to you by the language.  For example, in Java, variables of type int are automatically given operations such as addition, subtraction, multiplication, and so on.  These operations work as follows:&lt;br /&gt;
# Receive both inputs&lt;br /&gt;
# Cast if necessary (for example, from an int to a double)&lt;br /&gt;
# Perform calculation&lt;br /&gt;
# Return result&lt;br /&gt;
&lt;br /&gt;
It is important to note that the primitive types themselves are left ''unchanged'', and the result is returned from the operation, giving the programmer the ability to place the result elsewhere.&lt;br /&gt;
&lt;br /&gt;
===== Efficiency =====&lt;br /&gt;
In efficiency-critical applications, primitive types and their operations are oftentimes mapped directly to hardware-supported equivalents, thus operations can be performed very quickly.  This style of downgrading the logic to more so the hardware level has been replaced over the years for general applications, since improvements to hardware components have eradicated the once-imperative necessity to program efficiently.  Another point of view concerning efficiency could be from development time: if the program one is writing doesn't require complex design, it would be quicker to use the language's built-in types instead of taking the time to design a class to do the same feature.&lt;br /&gt;
&lt;br /&gt;
==== Disadvantages ====&lt;br /&gt;
===== Single-state storage =====&lt;br /&gt;
One large disadvantages to primitive types are that they are generally capable of only holding a single dimension state.  This limitation requires the programmer to use other variables in conjunction if they desire to hold more than one field of data.&lt;br /&gt;
&lt;br /&gt;
===== Refactoring =====&lt;br /&gt;
Since primitive types do not allow you to encapsulate your data, if you ever desire to change the behavior of your program, you are forced to manually check each use of the variable for enforcement.&lt;br /&gt;
&lt;br /&gt;
For example, suppose you have a system designed in Java that maintains an integer value which represents the number of books you have in a library.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
int numBooks;&lt;br /&gt;
...&lt;br /&gt;
numBooks = 0;&lt;br /&gt;
...&lt;br /&gt;
numBooks++;&lt;br /&gt;
...&lt;br /&gt;
numBooks--;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A few days later, you realize that you should probably refactor your system to maintain a log of when this variable updates.  You immediately face a problem since, as it is, your code directly manipulates a single-state type integer.  Without resorting to a more object-oriented solution, you would have to update each location in the code of where a change takes place in order to establish this bookkeeping (pun intended).&lt;br /&gt;
&amp;lt;code id=&amp;quot;bookKeeping&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
public static void integerValueChanged(){&lt;br /&gt;
  // records that the value has been changed&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public static void main(String[]args){&lt;br /&gt;
  int numBooks;&lt;br /&gt;
  ...&lt;br /&gt;
  numBooks = 0;&lt;br /&gt;
  integerValueChanged();&lt;br /&gt;
  ...&lt;br /&gt;
  numBooks++;&lt;br /&gt;
  integerValueChanged();&lt;br /&gt;
  ...&lt;br /&gt;
  numBooks--;&lt;br /&gt;
  integerValueChanged();&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generalize this concept, it is oftentimes necessary to modify &amp;quot;what happens&amp;quot; when something is updated, and this cannot be easily accomplished by merely using primitive types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Class Types ===&lt;br /&gt;
Classes to the rescue!  Classes give programmers the ability to construct complex data types that are also capable of defining their own operations, all while keeping the details and specifics black-boxed outsize of where the class will be used in the code.&lt;br /&gt;
==== Advantages ====&lt;br /&gt;
===== Multi-dimensional Storage =====&lt;br /&gt;
Contrasting to primitive types, classes allow programmers to couple a varying number of fields.  Grouping fields of data into a single class, then instantiating such an object and manipulating it is much more convenient than keeping track of several individual variables.&lt;br /&gt;
&lt;br /&gt;
===== Refactoring =====&lt;br /&gt;
Oftentimes it is necessary to refactor a system to execute code when a change happens.  In object-land, we are able to do this through the ability to control what happens in our methods.&lt;br /&gt;
&lt;br /&gt;
Taking our [[#bookKeeping| example from above]], we can give a quick example of how a class could be defined to handle the situation much more elegantly.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
public class RecordedNumber{&lt;br /&gt;
  // The integer value, kept concealed in the class&lt;br /&gt;
  private int value;&lt;br /&gt;
&lt;br /&gt;
  public RecordedNumber(int value){&lt;br /&gt;
    this.value = value;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public int getValue(){&lt;br /&gt;
    return value;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public void setValue(int newValue){&lt;br /&gt;
    // code to do any necessary recording.&lt;br /&gt;
    ...&lt;br /&gt;
    this.value = newValue;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class MyExample{&lt;br /&gt;
  public static void main(String[]args){&lt;br /&gt;
    RecordedNumber numBooks = new RecordedNumber(0);&lt;br /&gt;
    ...&lt;br /&gt;
    numBooks.setValue(4); // the object handles all necessary bookkeeping&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Code-reuse =====&lt;br /&gt;
Another nice feature to class-types encapsulate the concept surrounding code re-usability, especially in topics such as inheritance.  Classes allow the programmer to enhance an already existing class-type to be more specific, which in turn can prevent excessive code duplication.&lt;br /&gt;
&lt;br /&gt;
===== Application Structure =====&lt;br /&gt;
Designing an application in a object-oriented / class-specific style can reduce the challenges of designing and building a difficult system into merely making objects successfully interact.  It is from this concept that languages such as [http://en.wikipedia.org/wiki/Unified_Modeling_Language Unified Modeling Language (UML)] have been created, allowing software engineers to build around the notion of classes and their relationships to one another.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==== Disadvantages ====&lt;br /&gt;
===== Speed Considerations =====&lt;br /&gt;
In computational-intensive applications, objects built from classes tend to be less efficient than primitive data types built around procedural context.  This is due in part because of the object's creation, since it isn't supported directly hardware level.  Consideration is placed more so on good-design and coding-practices when implementing functionality around classes.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===== B =====&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===== C =====&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html&lt;br /&gt;
&lt;br /&gt;
[2] Java:- Types, Values and Variables&lt;br /&gt;
    http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html&lt;br /&gt;
[3] Ruby Reflection ,http://www.khelll.com/blog/ruby/ruby-reflection/&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=39058</id>
		<title>CSC/ECE 517 Fall 2010/ch3 4b mt</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=39058"/>
		<updated>2010-10-21T01:21:02Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Types vs Classes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Overall s.png|right|upright|Relationship between Type and Class]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
It is often that we talk about types, strongly typed, weakly typed, classes. To make it clear,  let us look into it clearly. Every programming language has a way to define a variable. A variable is a named address location which stores a particular value. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
&lt;br /&gt;
Time for an analogy? Imagine a variable to be a vacant house. It could have animals, humans, robots, or another smaller house, or whatever you can think of. There has to be a way, from a third party perspective, so as to be cognizant of the kind of things that reside in the house. Types and typing is a concept which realizes this concept. A typed language or a strongly typed language is one where the type of a variable has to be declared so as to avoid any wrong dealings of the value during run time. For example, Java is a strongly typed language. If I need to use two integers for addition, I would explicitly have to mention them as an integer:- &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  int integer1;&lt;br /&gt;
  int integer2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, we can’t then re-initialize it to any other type in its defined scope.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  integer1 = “Hello World”;  // cannot map an int to a String&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the case of non-typed languages, say Ruby, or Visual Basic, etc. We don’t need to specify a type. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  def variable1;&lt;br /&gt;
  def variable2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, it could be initialized with anything,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
variable1 = 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
as well as &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
variable1 = “Good morning Vietnam” are allowed. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Classes===&lt;br /&gt;
&lt;br /&gt;
A class is a “type” of variable specification. The difference between a class and a regular primitive integer, character, etc is that a class:-&lt;br /&gt;
&lt;br /&gt;
# consists of one or more primitive or non-primitive variables&lt;br /&gt;
# is a pre-defined structure&lt;br /&gt;
# defines methods which operate on the internal state of the object&lt;br /&gt;
&lt;br /&gt;
The Type of Class is “Class”, just like the Type of integer is “integer” in case of strongly typed languages. &lt;br /&gt;
&lt;br /&gt;
For example, in case of Java:- &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;“The types of the Java programming language are divided into two categories: primitive types and reference types. The primitive types are the boolean type and the numeric types. The numeric types are the integral types byte, short, int, long, and char, and the floating-point types float and double. The reference types are class types, interface types, and array types. There is also a special null type. An object is a dynamically created instance of a class type or a dynamically created array. The values of a reference type are references to objects. All objects, including arrays, support the methods of class Object . String literals are represented by String objects .” [2]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, as mentioned before, in Java, there are two “Types”:- &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-roman&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Primitive Type&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Reference Type&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Classes, Interfaces, Arrays are all consolidations of Primitive types, so they just need to “point” to or reference the primitive ones, hence the name.&lt;br /&gt;
&lt;br /&gt;
==Types and Classes in Languages==&lt;br /&gt;
===Ruby===&lt;br /&gt;
&lt;br /&gt;
Ruby claims to be a strong object oriented language. It is object oriented to the extent that every thing is an object. Primitive datatypes are objects, and we can make use of the object oriented techniques on even the primitives. As mentioned before, Ruby is a dynamic typed language, as the type is bound at compile time. Everything in Ruby has a class. Every class in Ruby is inherited from class Class. &lt;br /&gt;
&lt;br /&gt;
Type in Ruby is well defined as well. Using self inspection (reflection), we can find out whether a name is a Class, or a method. Let us see this in action:- &lt;br /&gt;
&lt;br /&gt;
The first thing that comes to a one’s mind is something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
5.class #=&amp;gt; Fixnum&lt;br /&gt;
&amp;quot;hello&amp;quot;.class #=&amp;gt; String&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
But have you thought of your class as an object? Well that seems odd, but that’s how ruby works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
5.class #=&amp;gt; Fixnum&lt;br /&gt;
class Foo;end  #=&amp;gt; nil&lt;br /&gt;
Foo.class #=&amp;gt; Class&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What does the above snippet of code mean exactly?&lt;br /&gt;
It means 2 things : Foo is a constant and that constant holds(refers to) an object of Class type.&lt;br /&gt;
&lt;br /&gt;
Let us prove that:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Foo = Class.new&lt;br /&gt;
(irb):8 warning: already initialized constant Foo&lt;br /&gt;
=&amp;gt; Foo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
As you can see, we got a warning because we tried to initialize the constant Foo again.&lt;br /&gt;
&lt;br /&gt;
So ,when you define some class ‘Foo’ in ruby, all you are doing is:&lt;br /&gt;
1-instantiating an object of type Class.&lt;br /&gt;
2-initializing a constant Foo that refers to that created object .&lt;br /&gt;
&lt;br /&gt;
So, when we say “object” ,then we do mean any object; an object of Class type, or any object of any type.[3]&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
&lt;br /&gt;
As mentioned before, Java is a strongly typed language. The type of data needs to be declared before using. The types of &amp;quot;types&amp;quot; in Java are :&lt;br /&gt;
   * Primitive Types:-  boolean and numeric. The numeric types are the integral types byte, short, int, long, and char, and the         &lt;br /&gt;
     floating-point types float and double. &lt;br /&gt;
   * Reference Types:- class types, interface types and array types. [2] &lt;br /&gt;
&lt;br /&gt;
Java is an object-oriented language, but it does make a clear distinction between the primitive type and Classes. int, float, char etc. are primitives, and the other data types other than the primitives are references. It is an interesting distinction to note, because of the differences in method calling system in different languages. Java makes a distinction in &amp;quot;calling-by-value&amp;quot; when a primitive is passed as a parameter, and &amp;quot;calling-by-reference&amp;quot; when an object is passed. This can be shown   &lt;br /&gt;
&lt;br /&gt;
Myth: &amp;quot;Objects are passed by reference, primitives are passed by value&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Some proponents of this then say, &amp;quot;Ah, except for immutable objects which are passed by value [etc]&amp;quot; which introduces loads of rules without really tackling how Java works. Fortunately the truth is much simpler:&lt;br /&gt;
&lt;br /&gt;
Truth #1: Everything in Java is passed by value. Objects, however, are never passed at all.&lt;br /&gt;
&lt;br /&gt;
That needs some explanation - after all, if we can't pass objects, how can we do any work? The answer is that we pass references to objects. That sounds like it's getting dangerously close to the myth, until you look at truth #2:&lt;br /&gt;
&lt;br /&gt;
Truth #2: The values of variables are always primitives or references, never objects.&lt;br /&gt;
&lt;br /&gt;
This is probably the single most important point in learning Java properly. It's amazing how far you can actually get without knowing it, in fact - but vast numbers of things suddenly make sense when you grasp it.&lt;br /&gt;
&lt;br /&gt;
Why is all this important?&lt;br /&gt;
&lt;br /&gt;
When we hear &amp;quot;pass by reference&amp;quot;, we may understand different things by the words. There are some pretty specific definitions of what it should mean. If the Java model used pass-by-reference, then&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Object x = null;&lt;br /&gt;
giveMeAString (x);&lt;br /&gt;
System.out.println (x);&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
void giveMeAString (Object y)&lt;br /&gt;
{&lt;br /&gt;
    y = &amp;quot;This is a string&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the result (if Java used pass-by-reference semantics) would be&lt;br /&gt;
&lt;br /&gt;
This is a string&lt;br /&gt;
&lt;br /&gt;
instead of the actual result:&lt;br /&gt;
null&lt;br /&gt;
&lt;br /&gt;
Explaining the two truths above eliminates all of this confusion.&lt;br /&gt;
&lt;br /&gt;
So what does passing a reference by value actually mean?&lt;br /&gt;
&lt;br /&gt;
It means you can think of references how you think of primitives, to a large extent. For instance, the equivalent to the above bit of code using primitives would be:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
int x = 0;&lt;br /&gt;
giveMeATen (x);&lt;br /&gt;
System.out.println (x);&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
void giveMeATen (int y)&lt;br /&gt;
{&lt;br /&gt;
    y = 10;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Now, the above doesn't print out &amp;quot;10&amp;quot;. Why not? Because the value &amp;quot;0&amp;quot; was passed into the method giveMeTen, not the variable itself. Exactly the same is true of reference variables - the value of the reference is passed in, not the variable itself. It's the same kind of copying that happens on variable assignment. The first code snippet, if inlined, is equivalent to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
// Before the method call&lt;br /&gt;
Object x = null;&lt;br /&gt;
// Start of method call - parameter copying&lt;br /&gt;
Object y = x;&lt;br /&gt;
// Body of method call&lt;br /&gt;
y = &amp;quot;This is a piece of string.&amp;quot;;&lt;br /&gt;
// End of method call&lt;br /&gt;
System.out.println (x); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; [4]&lt;br /&gt;
&lt;br /&gt;
===C++===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===C===&lt;br /&gt;
Note: purely procedural, however can be simulated by the concept of structs.&lt;br /&gt;
&lt;br /&gt;
===Perl===&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
&lt;br /&gt;
===Javascript===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Discussion of Issues==&lt;br /&gt;
=== Primitive Types ===&lt;br /&gt;
==== Advantages ====&lt;br /&gt;
==== Disadvantages ====&lt;br /&gt;
=== Class Types ===&lt;br /&gt;
==== Advantages ====&lt;br /&gt;
==== Disadvantages ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html&lt;br /&gt;
&lt;br /&gt;
[2] Java:- Types, Values and Variables&lt;br /&gt;
    http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html&lt;br /&gt;
[3] Ruby Reflection ,http://www.khelll.com/blog/ruby/ruby-reflection/&lt;br /&gt;
[4] Java pass-by-value and pass-by-reference http://www.yoda.arachsys.com/java/passing.html&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=39008</id>
		<title>CSC/ECE 517 Fall 2010/ch3 4b mt</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=39008"/>
		<updated>2010-10-21T00:18:09Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Types vs Classes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is often that we talk about types, strongly typed, weakly typed, classes. To make it clear,  let us look into it clearly. Every programming language has a way to define a variable. A variable is a named address location which stores a particular value. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
&lt;br /&gt;
Time for an analogy? Imagine a variable to be a vacant house. It could have animals, humans, robots, or another smaller house, or whatever you can think of. There has to be a way, from a third party perspective, so as to be cognizant of the kind of things that reside in the house. Types and typing is a concept which realizes this concept. A typed language or a strongly typed language is one where the type of a variable has to be declared so as to avoid any wrong dealings of the value during run time. For example, Java is a strongly typed language. If I need to use 2 integers for addition, I would explicitly have to mention them  as an integer:- &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  int integer1;&lt;br /&gt;
  int integer2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, we can’t do a character initialization in the course of a program. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  integer1 = “Hello World”;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Is however, not allowed.&lt;br /&gt;
&lt;br /&gt;
whereas, in case of non-typed languages, say Ruby, or Visual Basic etc. for example, we don’t need to specify a type. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  def variable1;&lt;br /&gt;
  def variable2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, it could be initialized with anything,&lt;br /&gt;
variable1 = 3&lt;br /&gt;
as well as &lt;br /&gt;
variable1 = “Good morning Vietnam” are allowed. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Classes===&lt;br /&gt;
&lt;br /&gt;
A class is a “type” of variable specification. The difference between a class and a regular primitive integer, character etc is that a class is:-&lt;br /&gt;
&lt;br /&gt;
1)A class consists of one or more primitive or non-primitive variables&lt;br /&gt;
2)It is a pre defined structure&lt;br /&gt;
&lt;br /&gt;
The Type of Class is “Class”, just like the Type of integer1 is “integer” in case of strongly typed languages. &lt;br /&gt;
&lt;br /&gt;
For example, in case of Java:- &lt;br /&gt;
&lt;br /&gt;
“The types of the Java programming language are divided into two categories: primitive types and reference types. The primitive types are the boolean type and the numeric types. The numeric types are the integral types byte, short, int, long, and char, and the floating-point types float and double. The reference types are class types, interface types, and array types. There is also a special null type. An object is a dynamically created instance of a class type or a dynamically created array. The values of a reference type are references to objects. All objects, including arrays, support the methods of class Object . String literals are represented by String objects .” [2]&lt;br /&gt;
&lt;br /&gt;
So, as mentioned before, in Java, there are two “Types”:- &lt;br /&gt;
&lt;br /&gt;
i)Primitive Type&lt;br /&gt;
ii)Reference Type :- Classes, Interfaces, Arrays are all consolidations of Primitive types, so they just need to “point” to or reference the primitive ones, hence the name. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Types and Classes in Languages==&lt;br /&gt;
===Ruby===&lt;br /&gt;
&lt;br /&gt;
Ruby claims to be a strong object oriented language. It is object oriented to the extent that every thing is an object. Primitive datatypes are objects, and we can make use of the object oriented techniques on even the primitives. As mentioned before, Ruby is a dynamic typed language, as the type is bound at compile time. Everything in Ruby has a class. Every class in Ruby is inherited from class Class. &lt;br /&gt;
&lt;br /&gt;
Type in Ruby is well defined as well. Using self inspection (reflection), we can find out whether a name is a Class, or a method. Let us see this in action:- &lt;br /&gt;
&lt;br /&gt;
The first thing that comes to a one’s mind is something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
5.class #=&amp;gt; Fixnum&lt;br /&gt;
&amp;quot;hello&amp;quot;.class #=&amp;gt; String&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
But have you thought of your class as an object? Well that seems odd, but that’s how ruby works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
5.class #=&amp;gt; Fixnum&lt;br /&gt;
class Foo;end  #=&amp;gt; nil&lt;br /&gt;
Foo.class #=&amp;gt; Class&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What does the above snippet of code mean exactly?&lt;br /&gt;
It means 2 things : Foo is a constant and that constant holds(refers to) an object of Class type.&lt;br /&gt;
&lt;br /&gt;
Let us prove that:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Foo = Class.new&lt;br /&gt;
(irb):8 warning: already initialized constant Foo&lt;br /&gt;
=&amp;gt; Foo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
As you can see, we got a warning because we tried to initialize the constant Foo again.&lt;br /&gt;
&lt;br /&gt;
So ,when you define some class ‘Foo’ in ruby, all you are doing is:&lt;br /&gt;
1-instantiating an object of type Class.&lt;br /&gt;
2-initializing a constant Foo that refers to that created object .&lt;br /&gt;
&lt;br /&gt;
So, when we say “object” ,then we do mean any object; an object of Class type, or any object of any type.[3]&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
&lt;br /&gt;
As mentioned before, Java is a strongly typed language. The type of data needs to be declared before using. The types of &amp;quot;types&amp;quot; in Java are :&lt;br /&gt;
   * Primitive Types:-  boolean and numeric. The numeric types are the integral types byte, short, int, long, and char, and the         &lt;br /&gt;
     floating-point types float and double. &lt;br /&gt;
   * Reference Types:- class types, interface types and array types. [2] &lt;br /&gt;
&lt;br /&gt;
Java is an object-oriented language, but it does make a clear distinction between the primitive type and Classes. int, float, char etc. are primitives, and the other data types other than the primitives are references. It is an interesting distinction to note, because of the differences in method calling system in different languages. Java makes a distinction in &amp;quot;calling-by-value&amp;quot; when a primitive is passed as a parameter, and &amp;quot;calling-by-reference&amp;quot; when an object is passed. This can be shown   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html&lt;br /&gt;
&lt;br /&gt;
[2] Java:- Types, Values and Variables&lt;br /&gt;
    http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html&lt;br /&gt;
[3] Ruby Reflection ,http://www.khelll.com/blog/ruby/ruby-reflection/&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=38997</id>
		<title>CSC/ECE 517 Fall 2010/ch3 4b mt</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=38997"/>
		<updated>2010-10-20T23:42:34Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Types vs Classes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is often that we talk about types, strongly typed, weakly typed, classes. To make it clear,  let us look into it clearly. Every programming language has a way to define a variable. A variable is a named address location which stores a particular value. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
&lt;br /&gt;
Time for an analogy? Imagine a variable to be a vacant house. It could have animals, humans, robots, or another smaller house, or whatever you can think of. There has to be a way, from a third party perspective, so as to be cognizant of the kind of things that reside in the house. Types and typing is a concept which realizes this concept. A typed language or a strongly typed language is one where the type of a variable has to be declared so as to avoid any wrong dealings of the value during run time. For example, Java is a strongly typed language. If I need to use 2 integers for addition, I would explicitly have to mention them  as an integer:- &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  int integer1;&lt;br /&gt;
  int integer2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, we can’t do a character initialization in the course of a program. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  integer1 = “Hello World”;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Is however, not allowed.&lt;br /&gt;
&lt;br /&gt;
whereas, in case of non-typed languages, say Ruby, or Visual Basic etc. for example, we don’t need to specify a type. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  def variable1;&lt;br /&gt;
  def variable2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, it could be initialized with anything,&lt;br /&gt;
variable1 = 3&lt;br /&gt;
as well as &lt;br /&gt;
variable1 = “Good morning Vietnam” are allowed. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Classes===&lt;br /&gt;
&lt;br /&gt;
A class is a “type” of variable specification. The difference between a class and a regular primitive integer, character etc is that a class is:-&lt;br /&gt;
&lt;br /&gt;
1)A class consists of one or more primitive or non-primitive variables&lt;br /&gt;
2)It is a pre defined structure&lt;br /&gt;
&lt;br /&gt;
The Type of Class is “Class”, just like the Type of integer1 is “integer” in case of strongly typed languages. &lt;br /&gt;
&lt;br /&gt;
For example, in case of Java:- &lt;br /&gt;
&lt;br /&gt;
“The types of the Java programming language are divided into two categories: primitive types and reference types. The primitive types are the boolean type and the numeric types. The numeric types are the integral types byte, short, int, long, and char, and the floating-point types float and double. The reference types are class types, interface types, and array types. There is also a special null type. An object is a dynamically created instance of a class type or a dynamically created array. The values of a reference type are references to objects. All objects, including arrays, support the methods of class Object . String literals are represented by String objects .” [2]&lt;br /&gt;
&lt;br /&gt;
So, as mentioned before, in Java, there are two “Types”:- &lt;br /&gt;
&lt;br /&gt;
i)Primitive Type&lt;br /&gt;
ii)Reference Type :- Classes, Interfaces, Arrays are all consolidations of Primitive types, so they just need to “point” to or reference the primitive ones, hence the name. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ruby==&lt;br /&gt;
&lt;br /&gt;
Ruby claims to be a strong object oriented language. It is object oriented to the extent that every thing is an object. Primitive datatypes are objects, and we can make use of the object oriented techniques on even the primitives. As mentioned before, Ruby is a dynamic typed language, as the type is bound at compile time. Everything in Ruby has a class. Every class in Ruby is inherited from class Class. &lt;br /&gt;
&lt;br /&gt;
Type in Ruby is well defined as well. Using self inspection (reflection), we can find out whether a name is a Class, or a method. Let us see this in action:- &lt;br /&gt;
&lt;br /&gt;
The first thing that comes to a one’s mind is something like :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
5.class #=&amp;gt; Fixnum&lt;br /&gt;
&amp;quot;hello&amp;quot;.class #=&amp;gt; String&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
But have you thought of your class as an object? Well that seems odd, but that’s how ruby works:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
5.class #=&amp;gt; Fixnum&lt;br /&gt;
class Foo;end  #=&amp;gt; nil&lt;br /&gt;
Foo.class #=&amp;gt; Class&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What does the above snippet of code mean exactly?&lt;br /&gt;
It means 2 things : Foo is a constant and that constant holds(refers to) an object of Class type.&lt;br /&gt;
&lt;br /&gt;
Let us prove that:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Foo = Class.new&lt;br /&gt;
(irb):8 warning: already initialized constant Foo&lt;br /&gt;
=&amp;gt; Foo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
As you can see, we got a warning because we tried to initialize the constant Foo again.&lt;br /&gt;
&lt;br /&gt;
So ,when you define some class ‘Foo’ in ruby, all you are doing is:&lt;br /&gt;
1-instantiating an object of type Class.&lt;br /&gt;
2-initializing a constant Foo that refers to that created object .&lt;br /&gt;
&lt;br /&gt;
So, when we say “object” ,then we do mean any object; an object of Class type, or any object of any type.[3]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html&lt;br /&gt;
&lt;br /&gt;
[2] Java:- Types, Values and Variables&lt;br /&gt;
    http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html&lt;br /&gt;
[3] Ruby Reflection ,http://www.khelll.com/blog/ruby/ruby-reflection/&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=38985</id>
		<title>CSC/ECE 517 Fall 2010/ch3 4b mt</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=38985"/>
		<updated>2010-10-20T22:58:53Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Types vs Classes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is often that we talk about types, strongly typed, weakly typed, classes. To make it clear,  let us look into it clearly. Every programming language has a way to define a variable. A variable is a named address location which stores a particular value. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
&lt;br /&gt;
Time for an analogy? Imagine a variable to be a vacant house. It could have animals, humans, robots, or another smaller house, or whatever you can think of. There has to be a way, from a third party perspective, so as to be cognizant of the kind of things that reside in the house. Types and typing is a concept which realizes this concept. A typed language or a strongly typed language is one where the type of a variable has to be declared so as to avoid any wrong dealings of the value during run time. For example, Java is a strongly typed language. If I need to use 2 integers for addition, I would explicitly have to mention them  as an integer:- &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  int integer1;&lt;br /&gt;
  int integer2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, we can’t do a character initialization in the course of a program. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  integer1 = “Hello World”;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Is however, not allowed.&lt;br /&gt;
&lt;br /&gt;
whereas, in case of non-typed languages, say Ruby, or Visual Basic etc. for example, we don’t need to specify a type. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  def variable1;&lt;br /&gt;
  def variable2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, it could be initialized with anything,&lt;br /&gt;
variable1 = 3&lt;br /&gt;
as well as &lt;br /&gt;
variable1 = “Good morning Vietnam” are allowed. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Classes===&lt;br /&gt;
&lt;br /&gt;
A class is a “type” of variable specification. The difference between a class and a regular primitive integer, character etc is that a class is:-&lt;br /&gt;
&lt;br /&gt;
1)A class consists of one or more primitive or non-primitive variables&lt;br /&gt;
2)It is a pre defined structure&lt;br /&gt;
&lt;br /&gt;
The Type of Class is “Class”, just like the Type of integer1 is “integer” in case of strongly typed languages. &lt;br /&gt;
&lt;br /&gt;
For example, in case of Java:- &lt;br /&gt;
&lt;br /&gt;
“The types of the Java programming language are divided into two categories: primitive types and reference types. The primitive types are the boolean type and the numeric types. The numeric types are the integral types byte, short, int, long, and char, and the floating-point types float and double. The reference types are class types, interface types, and array types. There is also a special null type. An object is a dynamically created instance of a class type or a dynamically created array. The values of a reference type are references to objects. All objects, including arrays, support the methods of class Object . String literals are represented by String objects .” [2]&lt;br /&gt;
&lt;br /&gt;
So, as mentioned before, in Java, there are two “Types”:- &lt;br /&gt;
&lt;br /&gt;
i)Primitive Type&lt;br /&gt;
ii)Reference Type :- Classes, Interfaces, Arrays are all consolidations of Primitive types, so they just need to “point” to or reference the primitive ones, hence the name. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ruby==&lt;br /&gt;
&lt;br /&gt;
Ruby claims to be a strong object oriented language. It is object oriented to the extent that every thing is an object. Primitive datatypes are objects, and we can make use of the object oriented techniques on even the primitives. As mentioned before, Ruby is a dynamic typed language, as the type is bound at compile time. Everything in Ruby has a class. Every class in Ruby is inherited from class Class. &lt;br /&gt;
&lt;br /&gt;
Type in Ruby is well defined as well. Using self inspection (reflection), we cam &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html&lt;br /&gt;
&lt;br /&gt;
[2] Java:- Types, Values and Variables&lt;br /&gt;
    http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=38974</id>
		<title>CSC/ECE 517 Fall 2010/ch3 4b mt</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch3_4b_mt&amp;diff=38974"/>
		<updated>2010-10-20T22:12:11Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Types vs Classes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is often that we talk about types, strongly typed, weakly typed, classes. To make it clear,  let us look into it clearly. Every programming language has a way to define a variable. A variable is a named address location which stores a particular value. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Types===&lt;br /&gt;
&lt;br /&gt;
Time for an analogy? Imagine a variable to be a vacant house. It could have animals, humans, robots, or another smaller house, or whatever you can think of. There has to be a way, from a third party perspective, so as to be cognizant of the kind of things that reside in the house. &lt;br /&gt;
&lt;br /&gt;
Types and typing is a concept which realizes this concept. A typed language or a strongly typed language is one where the type of a variable has to be declared so as to avoid any wrong dealings of the value during run time. For example, Java is a strongly typed language.&lt;br /&gt;
&lt;br /&gt;
If I need to use 2 integers for addition, I would explicitly have to mention them  as an integer:- &lt;br /&gt;
&lt;br /&gt;
int integer1;&lt;br /&gt;
int integer2;&lt;br /&gt;
&lt;br /&gt;
However, we can’t do a character initialization in the course of a program. &lt;br /&gt;
&lt;br /&gt;
integer1 = “Hello World”;&lt;br /&gt;
Is however, not allowed.&lt;br /&gt;
&lt;br /&gt;
whereas, in case of non-typed languages, say Ruby, or Visual Basic etc. for example, we don’t need to specify a type. &lt;br /&gt;
&lt;br /&gt;
def variable1;&lt;br /&gt;
def variable2;&lt;br /&gt;
&lt;br /&gt;
Now, it could be initialized with anything,&lt;br /&gt;
&lt;br /&gt;
variable1 = 3&lt;br /&gt;
as well as &lt;br /&gt;
variable1 = “Good morning Vietnam” are allowed. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Classes===&lt;br /&gt;
&lt;br /&gt;
A class is a “type” of variable specification. The difference between a class and a regular primitive integer, character etc is that a class is:-&lt;br /&gt;
&lt;br /&gt;
1)A class consists of one or more primitive or non-primitive variables&lt;br /&gt;
2)It is a pre defined structure&lt;br /&gt;
&lt;br /&gt;
The Type of Class is “Class”, just like the Type of integer1 is “integer” in case of strongly typed languages. &lt;br /&gt;
&lt;br /&gt;
For example, in case of Java:- &lt;br /&gt;
&lt;br /&gt;
“The types of the Java programming language are divided into two categories: primitive types and reference types. The primitive types are the boolean type and the numeric types. The numeric types are the integral types byte, short, int, long, and char, and the floating-point types float and double. The reference types are class types, interface types, and array types. There is also a special null type. An object is a dynamically created instance of a class type or a dynamically created array. The values of a reference type are references to objects. All objects, including arrays, support the methods of class Object . String literals are represented by String objects .” [2]&lt;br /&gt;
&lt;br /&gt;
So, as mentioned before, in Java, there are two “Types”:- &lt;br /&gt;
&lt;br /&gt;
i)Primitive Type&lt;br /&gt;
ii)Reference Type :- Classes, Interfaces, Arrays are all consolidations of Primitive types, so they just need to “point” to or reference the primitive ones, hence the name. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html&lt;br /&gt;
&lt;br /&gt;
[2] Java:- Types, Values and Variables&lt;br /&gt;
    http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_S10_ms&amp;diff=38972</id>
		<title>CSC/ECE 517 Fall 2010/ch1 S10 ms</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_S10_ms&amp;diff=38972"/>
		<updated>2010-10-20T21:53:29Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: Types vs Class&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[CSC/ECE 517 Fall 2010/ch1 1a vc]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 1a br]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 1b mg]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 1c JF]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 1e az]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 1e bb]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 1f vn]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 25 ag]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 2b dg]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 2e RI]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 S6 aa]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 S6 km]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 S10 GP]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 S10 MS]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 S10 MM]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch1 S10 PH]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 2a CB]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 2a mw]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 2c ck]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 S23 GP]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 S24 NS]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 S23 SS]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 S23 NR]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 S20 TT]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 2d AS]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3j KS]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch2 S24 rm]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3h PW]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3e br]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3h az]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3i IC]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3i MM]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3a SN]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 S30 SK]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3f lj]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 3b ka]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch3 4b mt]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch4 4c rn]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch4 4h am]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch4 4g HW]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch4 4g km]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch4 4f sv]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2010/ch4 4e ms]]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32744</id>
		<title>CSC/ECE 517 Fall 2010/ch1 1a vc</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32744"/>
		<updated>2010-09-06T04:44:17Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Versioning Systems are typically used in a software facility(s), and employed for the primary purposes of collaborative work. While working on a project with common resources (files, folders, information etc.), it becomes essential to put a definite order on the sanctity of the data if the resources are editable. &lt;br /&gt;
&lt;br /&gt;
For example, if there are 10 people working on an assignment, and 3 people are working on the same file. It becomes important on how they can add/modify data such that all are neither locked out waiting for a lock put by anyone, nor there is any inconsistency in the data. &lt;br /&gt;
&lt;br /&gt;
Version control systems typically let us create versions of the resources, where each developer can work on a different version, therefore providing the flexibility. There are a whole bunch of features provided by the new Versioning Systems. We shall look at the evolution and history of the same in the subsequent sections.&lt;br /&gt;
&lt;br /&gt;
==Taxonomy of Version Control==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Branch&amp;lt;/b&amp;gt; : When the development team needs to work on two distinct copies of a project, a branch is created. &amp;lt;sup&amp;gt;[4]&amp;lt;/sup&amp;gt; The branch is a replica of the existing code at the time of its creation. On creation of the branch, changes made to a branch are confined to it and are not visible in any other branch.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Repository&amp;lt;/b&amp;gt;: Repository is the data store where all the versions of all the files in the project are stored. A repository may be centralized or distributed.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Check-Out&amp;lt;/b&amp;gt;: Creating a working copy of the files in the repository on a local machine is called Check-out. Every user who checks out a file has a working copy of the file on his computer. Changes made to the working copy are not visible to the team members&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Check-In&amp;lt;/b&amp;gt;: Putting back the edited files to the repository for use by everybody is called Check-In   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Merge&amp;lt;/b&amp;gt;=:  Merging is the process of combining different working copies of the file into the repository.[3] Each developer is allowed to work on their independent working copies, and  everyone’s changes to a single file are combined by merging&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Label&amp;lt;/b&amp;gt;: A label is an identifier given to a branch when created. Also known as Tag&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Trunk&amp;lt;/b&amp;gt;: The highest location of the repository is called Trunk.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;Source Code Control System (SCCS)&amp;lt;/b&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
The exact time in history when and how the version systems came about into existence is unclear. However, we can estimate roughly that the version control system can be rooted to the &amp;lt;b&amp;gt;Source Code Control System (SCCS)&amp;lt;/b&amp;gt; &amp;lt;sup&amp;gt;[3],[6]&amp;lt;/sup&amp;gt;. It was developed by the Bell Labs in 1972. It is no longer prevalent, but the file format is still internally used today by other softwares like &amp;lt;i&amp;gt;BitKeeper&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;Sablime&amp;lt;/i&amp;gt;&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;Revision Control System(RCS)&amp;lt;/b&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
The next generation of Version control system was the RCS. It was first released in 1982, and developed by Walter F. Tichy of Purdue University. It was considered to be a better version of SCCS. Also, the version syntax was very complicated. Usually the developers employed locking mechanism, and worked on a single branch(head).&lt;br /&gt;
&lt;br /&gt;
One situation where RCS could prove to be useful is while a single user needs to work on a project. As RCS does not demand a central repository to be set up, and the administration and maintenance of files is easy, hence, it is easy. &lt;br /&gt;
&lt;br /&gt;
The limitations of RCS were that RCS could only work on a single file. There was no way that multiple files in a project could be versioned.&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;Concurrent Versions System(CVS)&amp;lt;/b&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
CVS was one step ahead in the evolution of the Version control Systems. CVS is distributed under the public GNU license. One major advantage where the CVS edges over RCS is its Client-Server Architecture. RCS did not support a client-server architecture, which made it difficult for distributed development. &lt;br /&gt;
&lt;br /&gt;
CVS based systems provided for the first, the ability to &amp;lt;i&amp;gt;check out&amp;lt;/i&amp;gt; a version of the main copy in the repository. The developers could work on their individual copies, and later, push it back into their branches. Once all the development on the files was done, the developers could merge their code with the live copy. There is however a restriction posed by the CVS systems, that is it only allows modification of code on the latest version. This calls for the developers to regularly sync their code with main copy in the repository, so that the modifications done by other people are also covered.&lt;br /&gt;
&lt;br /&gt;
CVS uses delta compression technique to save space on the  multiple copies of the same files. In short, the CVS systems keep only one copy per se. Wherever another set of copy is needed, it just stores the differences from the original copy. If there is no difference between the two, then the 2 files are in sync, else out of sync. For more details, the Delta Compression could be accessed at http://en.wikipedia.org/wiki/Delta_compression&lt;br /&gt;
&lt;br /&gt;
One of the biggest advantages of the CVS system was the ability for distributed development. However, there were quite a few areas where it lacked and called for better methods. To name a few, CVS could only work reliably with ASCII characters. It did not work well with other character sets for example UTF.Also, there was no atomicity of operations i.e. there was no way to ensure commit or rollback in case of an error. A detailed list of criticisms is mentioned at http://en.wikipedia.org/wiki/Concurrent_Versions_System#Criticism &amp;lt;sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;Subversioning(SVN)&amp;lt;/b&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Working on most of the criticisms of CVS mentioned before, in 2000, attempt to improve the structure of the CVS. The developers did not want to change the philosophy or change the structure of CVS in  a totally new way, they just wanted to revamp whatever was done before. Partly because CVS was then the &amp;lt;i&amp;gt;de facto&amp;lt;/i&amp;gt; standard for version control. &amp;lt;sup&amp;gt;[9]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[1]: [http://en.wikipedia.org/wiki/Revision_control Revision Control Wikipedia]&lt;br /&gt;
*[2]: [http://en.wikipedia.org/wiki/Concurrent_Versions_System Concurrent Version Systems(CVS)]&lt;br /&gt;
*[3]: [http://www.ibm.com/developerworks/java/library/j-subversion/index.html#N1007B]&lt;br /&gt;
*[4]: [http://www.ericsink.com/scm/scm_branches.html]&lt;br /&gt;
*[5]: [http://www.tigris.org/nonav/scdocs/ddCVS_cvsglossary.html]&lt;br /&gt;
*[6]: [http://en.wikipedia.org/wiki/Source_Code_Control_System]&lt;br /&gt;
*[7]: [http://en.wikipedia.org/wiki/Revision_Control_System]&lt;br /&gt;
*[8]: [http://en.wikipedia.org/wiki/Concurrent_Versions_System]&lt;br /&gt;
*[9]: [http://svnbook.red-bean.com/en/1.1/ch01s02.html]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32743</id>
		<title>CSC/ECE 517 Fall 2010/ch1 1a vc</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32743"/>
		<updated>2010-09-06T04:40:02Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Versioning Systems are typically used in a software facility(s), and employed for the primary purposes of collaborative work. While working on a project with common resources (files, folders, information etc.), it becomes essential to put a definite order on the sanctity of the data if the resources are editable. &lt;br /&gt;
&lt;br /&gt;
For example, if there are 10 people working on an assignment, and 3 people are working on the same file. It becomes important on how they can add/modify data such that all are neither locked out waiting for a lock put by anyone, nor there is any inconsistency in the data. &lt;br /&gt;
&lt;br /&gt;
Version control systems typically let us create versions of the resources, where each developer can work on a different version, therefore providing the flexibility. There are a whole bunch of features provided by the new Versioning Systems. We shall look at the evolution and history of the same in the subsequent sections.&lt;br /&gt;
&lt;br /&gt;
==Taxonomy of Version Control==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Branch&amp;lt;/b&amp;gt; : When the development team needs to work on two distinct copies of a project, a branch is created. &amp;lt;sup&amp;gt;[4]&amp;lt;/sup&amp;gt; The branch is a replica of the existing code at the time of its creation. On creation of the branch, changes made to a branch are confined to it and are not visible in any other branch.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Repository&amp;lt;/b&amp;gt;: Repository is the data store where all the versions of all the files in the project are stored. A repository may be centralized or distributed.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Check-Out&amp;lt;/b&amp;gt;: Creating a working copy of the files in the repository on a local machine is called Check-out. Every user who checks out a file has a working copy of the file on his computer. Changes made to the working copy are not visible to the team members&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Check-In&amp;lt;/b&amp;gt;: Putting back the edited files to the repository for use by everybody is called Check-In   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Merge&amp;lt;/b&amp;gt;=:  Merging is the process of combining different working copies of the file into the repository.[3] Each developer is allowed to work on their independent working copies, and  everyone’s changes to a single file are combined by merging&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Label&amp;lt;/b&amp;gt;: A label is an identifier given to a branch when created. Also known as Tag&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Trunk&amp;lt;/b&amp;gt;: The highest location of the repository is called Trunk.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;Source Code Control System (SCCS)&amp;lt;/b&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
The exact time in history when and how the version systems came about into existence is unclear. However, we can estimate roughly that the version control system can be rooted to the &amp;lt;b&amp;gt;Source Code Control System (SCCS)&amp;lt;/b&amp;gt; &amp;lt;sup&amp;gt;[3],[6]&amp;lt;/sup&amp;gt;. It was developed by the Bell Labs in 1972. It is no longer prevalent, but the file format is still internally used today by other softwares like &amp;lt;i&amp;gt;BitKeeper&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;Sablime&amp;lt;/i&amp;gt;&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;Revision Control System(RCS)&amp;lt;/b&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
The next generation of Version control system was the RCS. It was first released in 1982, and developed by Walter F. Tichy of Purdue University. It was considered to be a better version of SCCS. Also, the version syntax was very complicated. Usually the developers employed locking mechanism, and worked on a single branch(head).&lt;br /&gt;
&lt;br /&gt;
One situation where RCS could prove to be useful is while a single user needs to work on a project. As RCS does not demand a central repository to be set up, and the administration and maintenance of files is easy, hence, it is easy. &lt;br /&gt;
&lt;br /&gt;
The limitations of RCS were that RCS could only work on a single file. There was no way that multiple files in a project could be versioned.&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;Concurrent Versions System(CVS)&amp;lt;/b&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
CVS was one step ahead in the evolution of the Version control Systems. CVS is distributed under the public GNU license. One major advantage where the CVS edges over RCS is its Client-Server Architecture. RCS did not support a client-server architecture, which made it difficult for distributed development. &lt;br /&gt;
&lt;br /&gt;
CVS based systems provided for the first, the ability to &amp;lt;i&amp;gt;check out&amp;lt;/i&amp;gt; a version of the main copy in the repository. The developers could work on their individual copies, and later, push it back into their branches. Once all the development on the files was done, the developers could merge their code with the live copy. There is however a restriction posed by the CVS systems, that is it only allows modification of code on the latest version. This calls for the developers to regularly sync their code with main copy in the repository, so that the modifications done by other people are also covered.&lt;br /&gt;
&lt;br /&gt;
CVS uses delta compression technique to save space on the  multiple copies of the same files. In short, the CVS systems keep only one copy per se. Wherever another set of copy is needed, it just stores the differences from the original copy. If there is no difference between the two, then the 2 files are in sync, else out of sync. For more details, the Delta Compression could be accessed at http://en.wikipedia.org/wiki/Delta_compression&lt;br /&gt;
&lt;br /&gt;
One of the biggest advantages of the CVS system was the ability for distributed development. However, there were quite a few areas where it lacked and called for better methods. To name a few, CVS could only work reliably with ASCII characters. It did not work well with other character sets for example UTF.Also, there was no atomicity of operations i.e. there was no way to ensure commit or rollback in case of an error. A detailed list of criticisms is mentioned at http://en.wikipedia.org/wiki/Concurrent_Versions_System#Criticism &amp;lt;sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;Subversioning(SVN)&amp;lt;/b&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Working on most of the criticisms of CVS mentioned before, in 2000, attempt to improve the structure of the CVS. The developers did not want to change the philosophy or change the structure of CVS in  a totally new way, they just wanted to revamp whatever was done before. Partly because CVS was then the &amp;lt;i&amp;gt;de facto&amp;lt;/i&amp;gt; standard for version control. &amp;lt;sup&amp;gt;[9]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[1]: [http://en.wikipedia.org/wiki/Revision_control Revision Control Wikipedia]&lt;br /&gt;
*[2]: [http://en.wikipedia.org/wiki/Concurrent_Versions_System Concurrent Version Systems(CVS)]&lt;br /&gt;
*[3]: [http://www.ibm.com/developerworks/java/library/j-subversion/index.html#N1007B]&lt;br /&gt;
*[4]: [http://www.ericsink.com/scm/scm_branches.html]&lt;br /&gt;
*[5]: [http://www.tigris.org/nonav/scdocs/ddCVS_cvsglossary.html]&lt;br /&gt;
*[6]: [http://en.wikipedia.org/wiki/Source_Code_Control_System]&lt;br /&gt;
*[7]: [http://en.wikipedia.org/wiki/Revision_Control_System]&lt;br /&gt;
*[8]: [http://en.wikipedia.org/wiki/Concurrent_Versions_System]&lt;br /&gt;
*[9]: [http://svnbook.red-bean.com/en/1.1/ch01s02.html]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32742</id>
		<title>CSC/ECE 517 Fall 2010/ch1 1a vc</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32742"/>
		<updated>2010-09-06T04:37:39Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Versioning Systems are typically used in a software facility(s), and employed for the primary purposes of collaborative work. While working on a project with common resources (files, folders, information etc.), it becomes essential to put a definite order on the sanctity of the data if the resources are editable. &lt;br /&gt;
&lt;br /&gt;
For example, if there are 10 people working on an assignment, and 3 people are working on the same file. It becomes important on how they can add/modify data such that all are neither locked out waiting for a lock put by anyone, nor there is any inconsistency in the data. &lt;br /&gt;
&lt;br /&gt;
Version control systems typically let us create versions of the resources, where each developer can work on a different version, therefore providing the flexibility. There are a whole bunch of features provided by the new Versioning Systems. We shall look at the evolution and history of the same in the subsequent sections.&lt;br /&gt;
&lt;br /&gt;
==Taxonomy of Version Control==&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;Branch&amp;lt;/b&amp;gt;===: When the development team needs to work on two distinct copies of a project, a branch is created. &amp;lt;sup&amp;gt;[4]&amp;lt;/sup&amp;gt; The branch is a replica of the existing code at the time of its creation. On creation of the branch, changes made to a branch are confined to it and are not visible in any other branch.&lt;br /&gt;
 &lt;br /&gt;
===&amp;lt;b&amp;gt;Repository&amp;lt;/b&amp;gt;===: Repository is the data store where all the versions of all the files in the project are stored. A repository may be centralized or distributed.&lt;br /&gt;
 &lt;br /&gt;
===&amp;lt;b&amp;gt;Check-Out&amp;lt;/b&amp;gt;===: Creating a working copy of the files in the repository on a local machine is called Check-out. Every user who checks out a file has a working copy of the file on his computer. Changes made to the working copy are not visible to the team members&lt;br /&gt;
 &lt;br /&gt;
===&amp;lt;b&amp;gt;Check-In&amp;lt;/b&amp;gt;===: Putting back the edited files to the repository for use by everybody is called Check-In   &lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;Merge&amp;lt;/b&amp;gt;===:  Merging is the process of combining different working copies of the file into the repository.[3] Each developer is allowed to work on their independent working copies, and  everyone’s changes to a single file are combined by merging&lt;br /&gt;
 &lt;br /&gt;
===&amp;lt;b&amp;gt;Label&amp;lt;/b&amp;gt;===: A label is an identifier given to a branch when created. Also known as Tag&lt;br /&gt;
 &lt;br /&gt;
===&amp;lt;b&amp;gt;Trunk&amp;lt;/b&amp;gt;===: The highest location of the repository is called Trunk.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;Source Code Control System (SCCS)&amp;lt;/b&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
The exact time in history when and how the version systems came about into existence is unclear. However, we can estimate roughly that the version control system can be rooted to the &amp;lt;b&amp;gt;Source Code Control System (SCCS)&amp;lt;/b&amp;gt; &amp;lt;sup&amp;gt;[3],[6]&amp;lt;/sup&amp;gt;. It was developed by the Bell Labs in 1972. It is no longer prevalent, but the file format is still internally used today by other softwares like &amp;lt;i&amp;gt;BitKeeper&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;Sablime&amp;lt;/i&amp;gt;&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;Revision Control System(RCS)&amp;lt;/b&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
The next generation of Version control system was the RCS. It was first released in 1982, and developed by Walter F. Tichy of Purdue University. It was considered to be a better version of SCCS. Also, the version syntax was very complicated. Usually the developers employed locking mechanism, and worked on a single branch(head).&lt;br /&gt;
&lt;br /&gt;
One situation where RCS could prove to be useful is while a single user needs to work on a project. As RCS does not demand a central repository to be set up, and the administration and maintenance of files is easy, hence, it is easy. &lt;br /&gt;
&lt;br /&gt;
The limitations of RCS were that RCS could only work on a single file. There was no way that multiple files in a project could be versioned.&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;Concurrent Versions System(CVS)&amp;lt;/b&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
CVS was one step ahead in the evolution of the Version control Systems. CVS is distributed under the public GNU license. One major advantage where the CVS edges over RCS is its Client-Server Architecture. RCS did not support a client-server architecture, which made it difficult for distributed development. &lt;br /&gt;
&lt;br /&gt;
CVS based systems provided for the first, the ability to &amp;lt;i&amp;gt;check out&amp;lt;/i&amp;gt; a version of the main copy in the repository. The developers could work on their individual copies, and later, push it back into their branches. Once all the development on the files was done, the developers could merge their code with the live copy. There is however a restriction posed by the CVS systems, that is it only allows modification of code on the latest version. This calls for the developers to regularly sync their code with main copy in the repository, so that the modifications done by other people are also covered.&lt;br /&gt;
&lt;br /&gt;
CVS uses delta compression technique to save space on the  multiple copies of the same files. In short, the CVS systems keep only one copy per se. Wherever another set of copy is needed, it just stores the differences from the original copy. If there is no difference between the two, then the 2 files are in sync, else out of sync. For more details, the Delta Compression could be accessed at http://en.wikipedia.org/wiki/Delta_compression&lt;br /&gt;
&lt;br /&gt;
One of the biggest advantages of the CVS system was the ability for distributed development. However, there were quite a few areas where it lacked and called for better methods. To name a few, CVS could only work reliably with ASCII characters. It did not work well with other character sets for example UTF.Also, there was no atomicity of operations i.e. there was no way to ensure commit or rollback in case of an error. A detailed list of criticisms is mentioned at http://en.wikipedia.org/wiki/Concurrent_Versions_System#Criticism &amp;lt;sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b&amp;gt;Subversioning(SVN)&amp;lt;/b&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Working on most of the criticisms of CVS mentioned before, in 2000, attempt to improve the structure of the CVS. The developers did not want to change the philosophy or change the structure of CVS in  a totally new way, they just wanted to revamp whatever was done before. Partly because CVS was then the &amp;lt;i&amp;gt;de facto&amp;lt;/i&amp;gt; standard for version control. &amp;lt;sup&amp;gt;[9]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[1]: [http://en.wikipedia.org/wiki/Revision_control Revision Control Wikipedia]&lt;br /&gt;
*[2]: [http://en.wikipedia.org/wiki/Concurrent_Versions_System Concurrent Version Systems(CVS)]&lt;br /&gt;
*[3]: [http://www.ibm.com/developerworks/java/library/j-subversion/index.html#N1007B]&lt;br /&gt;
*[4]: [http://www.ericsink.com/scm/scm_branches.html]&lt;br /&gt;
*[5]: [http://www.tigris.org/nonav/scdocs/ddCVS_cvsglossary.html]&lt;br /&gt;
*[6]: [http://en.wikipedia.org/wiki/Source_Code_Control_System]&lt;br /&gt;
*[7]: [http://en.wikipedia.org/wiki/Revision_Control_System]&lt;br /&gt;
*[8]: [http://en.wikipedia.org/wiki/Concurrent_Versions_System]&lt;br /&gt;
*[9]: [http://svnbook.red-bean.com/en/1.1/ch01s02.html]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32741</id>
		<title>CSC/ECE 517 Fall 2010/ch1 1a vc</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32741"/>
		<updated>2010-09-06T04:35:26Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Versioning Systems are typically used in a software facility(s), and employed for the primary purposes of collaborative work. While working on a project with common resources (files, folders, information etc.), it becomes essential to put a definite order on the sanctity of the data if the resources are editable. &lt;br /&gt;
&lt;br /&gt;
For example, if there are 10 people working on an assignment, and 3 people are working on the same file. It becomes important on how they can add/modify data such that all are neither locked out waiting for a lock put by anyone, nor there is any inconsistency in the data. &lt;br /&gt;
&lt;br /&gt;
Version control systems typically let us create versions of the resources, where each developer can work on a different version, therefore providing the flexibility. There are a whole bunch of features provided by the new Versioning Systems. We shall look at the evolution and history of the same in the subsequent sections.&lt;br /&gt;
&lt;br /&gt;
==Taxonomy of Version Control==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Branch&amp;lt;/b&amp;gt;: When the development team needs to work on two distinct copies of a project, a branch is created. &amp;lt;sup&amp;gt;[4]&amp;lt;/sup&amp;gt; The branch is a replica of the existing code at the time of its creation. On creation of the branch, changes made to a branch are confined to it and are not visible in any other branch.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Repository&amp;lt;/b&amp;gt;: Repository is the data store where all the versions of all the files in the project are stored. A repository may be centralized or distributed.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Check-Out&amp;lt;/b&amp;gt;: Creating a working copy of the files in the repository on a local machine is called Check-out. Every user who checks out a file has a working copy of the file on his computer. Changes made to the working copy are not visible to the team members&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Check-In&amp;lt;/b&amp;gt;: Putting back the edited files to the repository for use by everybody is called Check-In   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Merge&amp;lt;/b&amp;gt;:  Merging is the process of combining different working copies of the file into the repository.[3] Each developer is allowed to work on their independent working copies, and  everyone’s changes to a single file are combined by merging&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Label&amp;lt;/b&amp;gt;: A label is an identifier given to a branch when created. Also known as Tag&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Trunk&amp;lt;/b&amp;gt;: The highest location of the repository is called Trunk.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Source Code Control System (SCCS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The exact time in history when and how the version systems came about into existence is unclear. However, we can estimate roughly that the version control system can be rooted to the &amp;lt;b&amp;gt;Source Code Control System (SCCS)&amp;lt;/b&amp;gt; &amp;lt;sup&amp;gt;[3],[6]&amp;lt;/sup&amp;gt;. It was developed by the Bell Labs in 1972. It is no longer prevalent, but the file format is still internally used today by other softwares like &amp;lt;i&amp;gt;BitKeeper&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;Sablime&amp;lt;/i&amp;gt;&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Revision Control System(RCS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next generation of Version control system was the RCS. It was first released in 1982, and developed by Walter F. Tichy of Purdue University. It was considered to be a better version of SCCS. Also, the version syntax was very complicated. Usually the developers employed locking mechanism, and worked on a single branch(head).&lt;br /&gt;
&lt;br /&gt;
One situation where RCS could prove to be useful is while a single user needs to work on a project. As RCS does not demand a central repository to be set up, and the administration and maintenance of files is easy, hence, it is easy. &lt;br /&gt;
&lt;br /&gt;
The limitations of RCS were that RCS could only work on a single file. There was no way that multiple files in a project could be versioned.&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Concurrent Versions System(CVS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CVS was one step ahead in the evolution of the Version control Systems. CVS is distributed under the public GNU license. One major advantage where the CVS edges over RCS is its Client-Server Architecture. RCS did not support a client-server architecture, which made it difficult for distributed development. &lt;br /&gt;
&lt;br /&gt;
CVS based systems provided for the first, the ability to &amp;lt;i&amp;gt;check out&amp;lt;/i&amp;gt; a version of the main copy in the repository. The developers could work on their individual copies, and later, push it back into their branches. Once all the development on the files was done, the developers could merge their code with the live copy. There is however a restriction posed by the CVS systems, that is it only allows modification of code on the latest version. This calls for the developers to regularly sync their code with main copy in the repository, so that the modifications done by other people are also covered.&lt;br /&gt;
&lt;br /&gt;
CVS uses delta compression technique to save space on the  multiple copies of the same files. In short, the CVS systems keep only one copy per se. Wherever another set of copy is needed, it just stores the differences from the original copy. If there is no difference between the two, then the 2 files are in sync, else out of sync. For more details, the Delta Compression could be accessed at http://en.wikipedia.org/wiki/Delta_compression&lt;br /&gt;
&lt;br /&gt;
One of the biggest advantages of the CVS system was the ability for distributed development. However, there were quite a few areas where it lacked and called for better methods. To name a few, CVS could only work reliably with ASCII characters. It did not work well with other character sets for example UTF.Also, there was no atomicity of operations i.e. there was no way to ensure commit or rollback in case of an error. A detailed list of criticisms is mentioned at http://en.wikipedia.org/wiki/Concurrent_Versions_System#Criticism &amp;lt;sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Subversioning(SVN)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Working on most of the criticisms of CVS mentioned before, in 2000, attempt to improve the structure of the CVS. The developers did not want to change the philosophy or change the structure of CVS in  a totally new way, they just wanted to revamp whatever was done before. Partly because CVS was then the &amp;lt;i&amp;gt;de facto&amp;lt;/i&amp;gt; standard for version control. &amp;lt;sup&amp;gt;[9]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[1]: [http://en.wikipedia.org/wiki/Revision_control Revision Control Wikipedia]&lt;br /&gt;
*[2]: [http://en.wikipedia.org/wiki/Concurrent_Versions_System Concurrent Version Systems(CVS)]&lt;br /&gt;
*[3]: [http://www.ibm.com/developerworks/java/library/j-subversion/index.html#N1007B]&lt;br /&gt;
*[4]: [http://www.ericsink.com/scm/scm_branches.html]&lt;br /&gt;
*[5]: [http://www.tigris.org/nonav/scdocs/ddCVS_cvsglossary.html]&lt;br /&gt;
*[6]: [http://en.wikipedia.org/wiki/Source_Code_Control_System]&lt;br /&gt;
*[7]: [http://en.wikipedia.org/wiki/Revision_Control_System]&lt;br /&gt;
*[8]: [http://en.wikipedia.org/wiki/Concurrent_Versions_System]&lt;br /&gt;
*[9]: [http://svnbook.red-bean.com/en/1.1/ch01s02.html]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32738</id>
		<title>CSC/ECE 517 Fall 2010/ch1 1a vc</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32738"/>
		<updated>2010-09-06T02:55:48Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Versioning Systems are typically used in a software facility(s), and employed for the primary purposes of collaborative work. While working on a project with common resources (files, folders, information etc.), it becomes essential to put a definite order on the sanctity of the data if the resources are editable. &lt;br /&gt;
&lt;br /&gt;
For example, if there are 10 people working on an assignment, and 3 people are working on the same file. It becomes important on how they can add/modify data such that all are neither locked out waiting for a lock put by anyone, nor there is any inconsistency in the data. &lt;br /&gt;
&lt;br /&gt;
Version control systems typically let us create versions of the resources, where each developer can work on a different version, therefore providing the flexibility. There are a whole bunch of features provided by the new Versioning Systems. We shall look at the evolution and history of the same in the subsequent sections.&lt;br /&gt;
&lt;br /&gt;
==Taxonomy of Version Control==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Branch&amp;lt;/b&amp;gt;: When the development team needs to work on two distinct copies of a project, a branch is created. &amp;lt;sup&amp;gt;[4]&amp;lt;/sup&amp;gt; The branch is a replica of the existing code at the time of its creation. On creation of the branch, changes made to a branch are confined to it and are not visible in any other branch.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Repository&amp;lt;/b&amp;gt;: Repository is the data store where all the versions of all the files in the project are stored. A repository may be centralized or distributed.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Check-Out&amp;lt;/b&amp;gt;: Creating a working copy of the files in the repository on a local machine is called Check-out. Every user who checks out a file has a working copy of the file on his computer. Changes made to the working copy are not visible to the team members&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Check-In&amp;lt;/b&amp;gt;: Putting back the edited files to the repository for use by everybody is called Check-In   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Merge&amp;lt;/b&amp;gt;:  Merging is the process of combining different working copies of the file into the repository.[3] Each developer is allowed to work on their independent working copies, and  everyone’s changes to a single file are combined by merging&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Label&amp;lt;/b&amp;gt;: A label is an identifier given to a branch when created. Also known as Tag&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Trunk&amp;lt;/b&amp;gt;: The highest location of the repository is called Trunk.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Source Code Control System (SCCS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The exact time in history when and how the version systems came about into existence is unclear. However, we can estimate roughly that the version control system can be rooted to the &amp;lt;b&amp;gt;Source Code Control System (SCCS)&amp;lt;/b&amp;gt; &amp;lt;sup&amp;gt;[3],[6]&amp;lt;/sup&amp;gt;. It was developed by the Bell Labs in 1972. It is no longer prevalent, but the file format is still internally used today by other softwares like &amp;lt;i&amp;gt;BitKeeper&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;Sablime&amp;lt;/i&amp;gt;&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Revision Control System(RCS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next generation of Version control system was the RCS. It was first released in 1982, and developed by Walter F. Tichy of Purdue University. It was considered to be a better version of SCCS. Also, the version syntax was very complicated. Usually the developers employed locking mechanism, and worked on a single branch(head).&lt;br /&gt;
&lt;br /&gt;
One situation where RCS could prove to be useful is while a single user needs to work on a project. As RCS does not demand a central repository to be set up, and the administration and maintenance of files is easy, hence, it is easy. &lt;br /&gt;
&lt;br /&gt;
The limitations of RCS were that RCS could only work on a single file. There was no way that multiple files in a project could be versioned.&amp;lt;sup&amp;gt;[7]&amp;lt;/sup&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Concurrent Versions System(CVS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CVS was one step ahead in the evolution of the Version control Systems. CVS is distributed under the public GNU license. One major advantage where the CVS edges over RCS is its Client-Server Architecture. RCS did not support a client-server architecture, which made it difficult for distributed development. &lt;br /&gt;
&lt;br /&gt;
CVS based systems provided for the first, the ability to &amp;lt;i&amp;gt;check out&amp;lt;/i&amp;gt; a version of the main copy in the repository. The developers could work on their individual copies, and later, push it back into their branches. Once all the development on the files was done, the developers could merge their code with the live copy. There is however a restriction posed by the CVS systems, that is it only allows modification of code on the latest version. This calls for the developers to regularly sync their code with main copy in the repository, so that the modifications done by other people are also covered.&lt;br /&gt;
&lt;br /&gt;
CVS uses delta compression technique to save space on the  multiple copies of the same files. In short, the CVS systems keep only one copy per se. Wherever another set of copy is needed, it just stores the differences from the original copy. If there is no difference between the two, then the 2 files are in sync, else out of sync. For more details, the Delta Compression could be accessed at http://en.wikipedia.org/wiki/Delta_compression&lt;br /&gt;
== References ==&lt;br /&gt;
*[1]: [http://en.wikipedia.org/wiki/Revision_control Revision Control Wikipedia]&lt;br /&gt;
*[2]: [http://en.wikipedia.org/wiki/Concurrent_Versions_System Concurrent Version Systems(CVS)]&lt;br /&gt;
*[3]: [http://www.ibm.com/developerworks/java/library/j-subversion/index.html#N1007B]&lt;br /&gt;
*[4]: [http://www.ericsink.com/scm/scm_branches.html]&lt;br /&gt;
*[5]: [http://www.tigris.org/nonav/scdocs/ddCVS_cvsglossary.html]&lt;br /&gt;
*[6]: [http://en.wikipedia.org/wiki/Source_Code_Control_System]&lt;br /&gt;
*[7] :[http://en.wikipedia.org/wiki/Revision_Control_System]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32736</id>
		<title>CSC/ECE 517 Fall 2010/ch1 1a vc</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32736"/>
		<updated>2010-09-06T02:32:24Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Versioning Systems are typically used in a software facility(s), and employed for the primary purposes of collaborative work. While working on a project with common resources (files, folders, information etc.), it becomes essential to put a definite order on the sanctity of the data if the resources are editable. &lt;br /&gt;
&lt;br /&gt;
For example, if there are 10 people working on an assignment, and 3 people are working on the same file. It becomes important on how they can add/modify data such that all are neither locked out waiting for a lock put by anyone, nor there is any inconsistency in the data. &lt;br /&gt;
&lt;br /&gt;
Version control systems typically let us create versions of the resources, where each developer can work on a different version, therefore providing the flexibility. There are a whole bunch of features provided by the new Versioning Systems. We shall look at the evolution and history of the same in the subsequent sections.&lt;br /&gt;
&lt;br /&gt;
==Taxonomy of Version Control==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Branch&amp;lt;/b&amp;gt;: When the development team needs to work on two distinct copies of a project, a branch is created. &amp;lt;sup&amp;gt;[4]&amp;lt;/sup&amp;gt; The branch is a replica of the existing code at the time of its creation. On creation of the branch, changes made to a branch are confined to it and are not visible in any other branch.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Repository&amp;lt;/b&amp;gt;: Repository is the data store where all the versions of all the files in the project are stored. A repository may be centralized or distributed.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Check-Out&amp;lt;/b&amp;gt;: Creating a working copy of the files in the repository on a local machine is called Check-out. Every user who checks out a file has a working copy of the file on his computer. Changes made to the working copy are not visible to the team members&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Check-In&amp;lt;/b&amp;gt;: Putting back the edited files to the repository for use by everybody is called Check-In   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Merge&amp;lt;/b&amp;gt;:  Merging is the process of combining different working copies of the file into the repository.[3] Each developer is allowed to work on their independent working copies, and  everyone’s changes to a single file are combined by merging&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Label&amp;lt;/b&amp;gt;: A label is an identifier given to a branch when created. Also known as Tag&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Trunk&amp;lt;/b&amp;gt;: The highest location of the repository is called Trunk.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Source Code Control System (SCCS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The exact time in history when and how the version systems came about into existence is unclear. However, we can estimate roughly that the version control system can be rooted to the &amp;lt;b&amp;gt;Source Code Control System (SCCS)&amp;lt;/b&amp;gt; &amp;lt;sup&amp;gt;[3],[6]&amp;lt;/sup&amp;gt;. It was developed by the Bell Labs in 1972. It is no longer prevalent, but the file format is still internally used today by other softwares like &amp;lt;i&amp;gt;BitKeeper&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;Sablime&amp;lt;/i&amp;gt;&amp;lt;sup&amp;gt;[6]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Revision Control System(RCS)&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The next generation of Version control system was the RCS. It was first released in 1982, and developed by Walter F. Tichy of Purdue University. It was considered to be a better version of SCCS. Also, the version syntax was very complicated. Usually the developers employed locking mechanism, and worked on a single branch(head).&lt;br /&gt;
&lt;br /&gt;
One situation where RCS could prove to be useful is while a single user needs to work on a project. As RCS does not demand a central repository to be set up, and the administration and maintenance of files is easy, hence, it is easy. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The limitations of RCS were that RCS could only work on a single file. There was no way that multiple files in a project could be versioned. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
*[1]: [http://en.wikipedia.org/wiki/Revision_control Revision Control Wikipedia]&lt;br /&gt;
*[2]: [http://en.wikipedia.org/wiki/Concurrent_Versions_System Concurrent Version Systems(CVS)]&lt;br /&gt;
*[3]: [http://www.ibm.com/developerworks/java/library/j-subversion/index.html#N1007B]&lt;br /&gt;
*[4]: [http://www.ericsink.com/scm/scm_branches.html]&lt;br /&gt;
*[5]: [http://www.tigris.org/nonav/scdocs/ddCVS_cvsglossary.html]&lt;br /&gt;
*[6]: [http://en.wikipedia.org/wiki/Source_Code_Control_System]&lt;br /&gt;
*[7] :[http://en.wikipedia.org/wiki/Revision_Control_System]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32681</id>
		<title>CSC/ECE 517 Fall 2010/ch1 1a vc</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32681"/>
		<updated>2010-09-05T23:38:47Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Versioning Systems are typically used in a software facility(s), and employed for the primary purposes of collaborative work. While working on a project with common resources (files, folders, information etc.), it becomes essential to put a definite order on the sanctity of the data if the resources are editable. &lt;br /&gt;
&lt;br /&gt;
For example, if there are 10 people working on an assignment, and 3 people are working on the same file. It becomes important on how they can add/modify data such that all are neither locked out waiting for a lock put by anyone, nor there is any inconsistency in the data. &lt;br /&gt;
&lt;br /&gt;
Version control systems typically let us create versions of the resources, where each developer can work on a different version, therefore providing the flexibility. There are a whole bunch of features provided by the new Versioning Systems. We shall look at the evolution and history of the same in the subsequent sections.&lt;br /&gt;
&lt;br /&gt;
==Taxonomy of Version Control==&lt;br /&gt;
&lt;br /&gt;
Branch: When the development team needs to work on two distinct copies of a project, a branch is created. &amp;lt;ref&amp;gt;[http://www.ericsink.com/scm/scm_branches.html]&amp;lt;/ref&amp;gt;  {return} The branch is a replica of the existing code at the time of its creation. On creation of the branch, changes made to a branch are confined to it and are not visible in any other branch.&lt;br /&gt;
 &lt;br /&gt;
Repository: Repository is the data store where all the versions of all the files in the project are stored. A repository may be centralized or distributed.&lt;br /&gt;
 &lt;br /&gt;
Check-Out: Creating a working copy of the files in the repository on a local machine is called Check-out. Every user who checks out a file has a working copy of the file on his computer. Changes made to the working copy are not visible to the team members&lt;br /&gt;
 &lt;br /&gt;
Check-In: Putting back the edited files to the repository for use by everybody is called Check-In   &lt;br /&gt;
&lt;br /&gt;
Merge:  Merging is the process of combining different working copies of the file into the repository.[3] Each developer is allowed to work on their independent working copies, and  everyone’s changes to a single file are combined by merging&lt;br /&gt;
 &lt;br /&gt;
Label: A label is an identifier given to a branch when created. Also known as Tag&lt;br /&gt;
 &lt;br /&gt;
Trunk: The highest location of the repository is called Trunk.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[1]: [http://en.wikipedia.org/wiki/Revision_control Revision Control Wikipedia]&lt;br /&gt;
*[2]: [http://en.wikipedia.org/wiki/Concurrent_Versions_System Concurrent Version Systems(CVS)]&lt;br /&gt;
*[3]: [http://www.ibm.com/developerworks/java/library/j-subversion/index.html#N1007B]&lt;br /&gt;
*[4]: [http://www.ericsink.com/scm/scm_branches.html]&lt;br /&gt;
*[5]: [http://www.tigris.org/nonav/scdocs/ddCVS_cvsglossary.html]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32679</id>
		<title>CSC/ECE 517 Fall 2010/ch1 1a vc</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32679"/>
		<updated>2010-09-05T23:16:29Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Versioning Systems are typically used in a software facility(s), and employed for the primary purposes of collaborative work. While working on a project with common resources (files, folders, information etc.), it becomes essential to put a definite order on the sanctity of the data if the resources are editable. &lt;br /&gt;
&lt;br /&gt;
For example, if there are 10 people working on an assignment, and 3 people are working on the same file. It becomes important on how they can add/modify data such that all are neither locked out waiting for a lock put by anyone, nor there is any inconsistency in the data. &lt;br /&gt;
&lt;br /&gt;
Version control systems typically let us create versions of the resources, where each developer can work on a different version, therefore providing the flexibility. There are a whole bunch of features provided by the new Versioning Systems. We shall look at the evolution and history of the same in the subsequent sections.&lt;br /&gt;
&lt;br /&gt;
==Taxonomy of Version Control==&lt;br /&gt;
 &lt;br /&gt;
Branch: When the development team needs to work on two distinct copies of a project, a branch is created. &amp;lt;ref&amp;gt;[http://www.ericsink.com/scm/scm_branches.html]&amp;lt;/ref&amp;gt;  {return} The branch is a replica of the existing code at the time of its creation. On creation of the branch, changes made to a branch are confined to it and are not visible in any other branch.&lt;br /&gt;
 &lt;br /&gt;
Repository: Repository is the data store where all the versions of all the files in the project are stored. A repository may be centralized or distributed.&lt;br /&gt;
 &lt;br /&gt;
Check-Out: Creating a working copy of the files in the repository on a local machine is called Check-out. Every user who checks out a file has a working copy of the file on his computer. Changes made to the working copy are not visible to the team members&lt;br /&gt;
 &lt;br /&gt;
Check-In: Putting back the edited files to the repository for use by everybody is called Check-In   &lt;br /&gt;
 &lt;br /&gt;
Merge:  Merging is the process of combining different working copies of the file into the repository.[3] Each developer is allowed to work on their independent working copies, and  everyone’s changes to a single file are combined by merging&lt;br /&gt;
 &lt;br /&gt;
Label: A label is an identifier given to a branch when created. Also known as Tag&lt;br /&gt;
 &lt;br /&gt;
Trunk: The highest location of the repository is called Trunk.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32674</id>
		<title>CSC/ECE 517 Fall 2010/ch1 1a vc</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32674"/>
		<updated>2010-09-05T22:57:28Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Versioning Systems are typically used in a software facility(s), and employed for the primary purposes of collaborative work. While working on a project with common resources (files, folders, information etc.), it becomes essential to put a definite order on the sanctity of the data if the resources are editable. &lt;br /&gt;
&lt;br /&gt;
For example, if there are 10 people working on an assignment, and 3 people are working on the same file. It becomes important on how they can add/modify data such that all are neither locked out waiting for a lock put by anyone, nor there is any inconsistency in the data. &lt;br /&gt;
&lt;br /&gt;
Version control systems typically let us create versions of the resources, where each developer can work on a different version, therefore providing the flexibility. There are a whole bunch of features provided by the new Versioning Systems. We shall look at the evolution and history of the same in the subsequent sections.&lt;br /&gt;
&lt;br /&gt;
==Taxonomy of Version Control==&lt;br /&gt;
 &lt;br /&gt;
Branch: When the development team needs to work on two distinct copies of a project, a branch is created. [2] The branch is a replica of the existing code at the time of its creation. On creation of the branch, changes made to a branch are confined to it and are not visible in any other branch.&lt;br /&gt;
 &lt;br /&gt;
Repository: Repository is the data store where all the versions of all the files in the project are stored. A repository may be centralized or distributed.&lt;br /&gt;
 &lt;br /&gt;
Check-Out: Creating a working copy of the files in the repository on a local machine is called Check-out. Every user who checks out a file has a working copy of the file on his computer. Changes made to the working copy are not visible to the team members&lt;br /&gt;
 &lt;br /&gt;
Check-In: Putting back the edited files to the repository for use by everybody is called Check-In   &lt;br /&gt;
 &lt;br /&gt;
Merge:  Merging is the process of combining different working copies of the file into the repository.[3] Each developer is allowed to work on their independent working copies, and  everyone’s changes to a single file are combined by merging&lt;br /&gt;
 &lt;br /&gt;
Label: A label is an identifier given to a branch when created. Also known as Tag&lt;br /&gt;
 &lt;br /&gt;
Trunk: The highest location of the repository is called Trunk.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Revision_control Revision Control Wikipedia]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Concurrent_Versions_System Concurrent Version Systems(CVS)]&lt;br /&gt;
*[http://www.ibm.com/developerworks/java/library/j-subversion/index.html#N1007B]&lt;br /&gt;
*[http://www.ericsink.com/scm/scm_branches.html]&lt;br /&gt;
*[http://www.tigris.org/nonav/scdocs/ddCVS_cvsglossary.html]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32673</id>
		<title>CSC/ECE 517 Fall 2010/ch1 1a vc</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32673"/>
		<updated>2010-09-05T22:56:50Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Versioning Systems are typically used in a software facility(s), and employed for the primary purposes of collaborative work. While working on a project with common resources (files, folders, information etc.), it becomes essential to put a definite order on the sanctity of the data if the resources are editable. &lt;br /&gt;
&lt;br /&gt;
For example, if there are 10 people working on an assignment, and 3 people are working on the same file. It becomes important on how they can add/modify data such that all are neither locked out waiting for a lock put by anyone, nor there is any inconsistency in the data. &lt;br /&gt;
&lt;br /&gt;
Version control systems typically let us create versions of the resources, where each developer can work on a different version, therefore providing the flexibility. There are a whole bunch of features provided by the new Versioning Systems. We shall look at the evolution and history of the same in the subsequent sections.&lt;br /&gt;
&lt;br /&gt;
==Taxonomy of Version Control==&lt;br /&gt;
 &lt;br /&gt;
Branch: When the development team needs to work on two distinct copies of a project, a branch is created. [2] The branch is a replica of the existing code at the time of its creation. On creation of the branch, changes made to a branch are confined to it and are not visible in any other branch.&lt;br /&gt;
 &lt;br /&gt;
Repository: Repository is the data store where all the versions of all the files in the project are stored. A repository may be centralized or distributed.&lt;br /&gt;
 &lt;br /&gt;
Check-Out: Creating a working copy of the files in the repository on a local machine is called Check-out. Every user who checks out a file has a working copy of the file on his computer. Changes made to the working copy are not visible to the team members&lt;br /&gt;
 &lt;br /&gt;
Check-In: Putting back the edited files to the repository for use by everybody is called Check-In   &lt;br /&gt;
 &lt;br /&gt;
Merge:  Merging is the process of combining different working copies of the file into the repository.[3] Each developer is allowed to work on their independent working copies, and  everyone’s changes to a single file are combined by merging&lt;br /&gt;
 &lt;br /&gt;
Label: A label is an identifier given to a branch when created. Also known as Tag&lt;br /&gt;
 &lt;br /&gt;
Trunk: The highest location of the repository is called Trunk.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Revision_control Revision Control Wikipedia]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Concurrent_Versions_System Concurrent Version Systems(CVS)]&lt;br /&gt;
*[http://www.ibm.com/developerworks/java/library/j-subversion/index.html#N1007B]&lt;br /&gt;
*[http://www.ericsink.com/scm/scm_branches.html]&lt;br /&gt;
*[ http://www.tigris.org/nonav/scdocs/ddCVS_cvsglossary.html]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32671</id>
		<title>CSC/ECE 517 Fall 2010/ch1 1a vc</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32671"/>
		<updated>2010-09-05T22:54:14Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Versioning Systems are typically used in a software facility(s), and employed for the primary purposes of collaborative work. While working on a project with common resources (files, folders, information etc.), it becomes essential to put a definite order on the sanctity of the data if the resources are editable. &lt;br /&gt;
&lt;br /&gt;
For example, if there are 10 people working on an assignment, and 3 people are working on the same file. It becomes important on how they can add/modify data such that all are neither locked out waiting for a lock put by anyone, nor there is any inconsistency in the data. &lt;br /&gt;
&lt;br /&gt;
Version control systems typically let us create versions of the resources, where each developer can work on a different version, therefore providing the flexibility. There are a whole bunch of features provided by the new Versioning Systems. We shall look at the evolution and history of the same in the subsequent sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Revision_control Revision Control Wikipedia]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Concurrent_Versions_System Concurrent Version Systems(CVS)]&lt;br /&gt;
*[http://www.ibm.com/developerworks/java/library/j-subversion/index.html#N1007B]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32669</id>
		<title>CSC/ECE 517 Fall 2010/ch1 1a vc</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_1a_vc&amp;diff=32669"/>
		<updated>2010-09-05T22:49:12Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Versioning Systems are typically used in a software facility(s), and employed for the primary purposes of collaborative work. While working on a project with common resources (files, folders, information etc.), it becomes essential to put a definite order on the sanctity of the data if the resources are editable. &lt;br /&gt;
&lt;br /&gt;
For example, if there are 10 people working on an assignment, and 3 people are working on the same file. It becomes important on how they can add/modify data such that all are neither locked out waiting for a lock put by anyone, nor there is any inconsistency in the data. &lt;br /&gt;
&lt;br /&gt;
Version control systems typically let us create versions of the resources, where each developer can work on a different version, therefore providing the flexibility. There are a whole bunch of features provided by the new Versioning Systems. We shall look at the evolution and history of the same in the subsequent sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Revision_control Revision Control Wikipedia]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Concurrent_Versions_System Concurrent Version Systems(CVS)]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_S10_MS&amp;diff=32668</id>
		<title>CSC/ECE 517 Fall 2010/ch1 S10 MS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_S10_MS&amp;diff=32668"/>
		<updated>2010-09-05T22:48:24Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the main page for the wiki contributions for CSC/ECE 517, Object-Oriented Languages and Systems, Fall 2010.&lt;br /&gt;
&lt;br /&gt;
* [[CSC/ECE 517 Fall 2010/ch1 1a vc]]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=History_of_Versioning_Systems&amp;diff=32662</id>
		<title>History of Versioning Systems</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=History_of_Versioning_Systems&amp;diff=32662"/>
		<updated>2010-09-05T22:03:44Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
Versioning Systems are typically used in a software facility(s), and employed for the primary purposes of collaborative work. While working on a project with common resources (files, folders, information etc.), it becomes essential to put a definite order on the sanctity of the data if the resources are editable. &lt;br /&gt;
&lt;br /&gt;
For example, if there are 10 people working on an assignment, and 3 people are working on the same file. It becomes important on how they can add/modify data such that all are neither locked out waiting for a lock put by anyone, nor there is any inconsistency in the data. &lt;br /&gt;
&lt;br /&gt;
Version control systems typically let us create versions of the resources, where each developer can work on a different version, therefore providing the flexibility. There are a whole bunch of features provided by the new Versioning Systems. We shall look at the evolution and history of the same in the subsequent sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Revision_control Revision Control Wikipedia]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Concurrent_Versions_System Concurrent Version Systems(CVS)]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=History_of_Versioning_Systems&amp;diff=32655</id>
		<title>History of Versioning Systems</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=History_of_Versioning_Systems&amp;diff=32655"/>
		<updated>2010-09-05T21:48:57Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== References ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Revision_control Revision Control Wikipedia]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Concurrent_Versions_System Concurrent Version Systems(CVS)]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=History_of_Versioning_Systems&amp;diff=32648</id>
		<title>History of Versioning Systems</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=History_of_Versioning_Systems&amp;diff=32648"/>
		<updated>2010-09-05T21:38:31Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== References ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Revision_control Revision Control Wikipedia]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_S10_MS&amp;diff=32647</id>
		<title>CSC/ECE 517 Fall 2010/ch1 S10 MS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_S10_MS&amp;diff=32647"/>
		<updated>2010-09-05T21:37:04Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the main page for the wiki contributions for CSC/ECE 517, Object-Oriented Languages and Systems, Fall 2010.&lt;br /&gt;
&lt;br /&gt;
* [[History of Versioning Systems]]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_S10_MS&amp;diff=32646</id>
		<title>CSC/ECE 517 Fall 2010/ch1 S10 MS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_S10_MS&amp;diff=32646"/>
		<updated>2010-09-05T21:31:13Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the main page for the wiki contributions for CSC/ECE 517, Object-Oriented Languages and Systems, Fall 2010.&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Template:History_of_Version_Control&amp;diff=32642</id>
		<title>Template:History of Version Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Template:History_of_Version_Control&amp;diff=32642"/>
		<updated>2010-09-05T21:27:52Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Template:History_of_Version_Control&amp;diff=32641</id>
		<title>Template:History of Version Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Template:History_of_Version_Control&amp;diff=32641"/>
		<updated>2010-09-05T21:26:43Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains the Wiki Chapter on the History of Versioning Systems. This is an attempt to demonstrate the historical development of the version systems; how they performed, and evolved. Much of the help in writing this article is taken from the Wikipedia page, which is provided in the references section along with other references for detailed perusal.&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=Template:History_of_Version_Control&amp;diff=32638</id>
		<title>Template:History of Version Control</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Template:History_of_Version_Control&amp;diff=32638"/>
		<updated>2010-09-05T21:22:01Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains the Wiki Chapter on the History of Versioning Systems. This is an attempt to demonstrate the historical development of the version systems; how they performed, and evolved. Much of the help in writing this article is taken from the Wikipedia page, which is provided in the references section along with other references for detailed perusal.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Revision_control  &amp;quot;Revision Control Wikipedia Page&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_S10_MS&amp;diff=32624</id>
		<title>CSC/ECE 517 Fall 2010/ch1 S10 MS</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2010/ch1_S10_MS&amp;diff=32624"/>
		<updated>2010-09-05T21:01:35Z</updated>

		<summary type="html">&lt;p&gt;Pseudonym1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the main page for the wiki contributions for CSC/ECE 517, Object-Oriented Languages and Systems, Fall 2010.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Wiki Links :List of Readings &lt;br /&gt;
&lt;br /&gt;
* {{History of Version Control|anchor}}&lt;/div&gt;</summary>
		<author><name>Pseudonym1</name></author>
	</entry>
</feed>