View this PageEdit this Page (locked)Attachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Matias Paulez


Discussion 1

Let's burn some firecrackers here!!

How does that affect people's programming?

     After reading several postings, and some articles I found that nobody is actually telling us what the point of all of this is. In my opinion, I think that the big companies (IBM, Sun, Microsoft, etc) want popularity, and thus, money, because in the end, this is what it is all about.

     What they want is to bring us (the programmers) to use one language or another. The difference between using, Java, C#, or any other OO language is totally up to us, we are good programmers, (GA Tech Rocks!), we have the criteria to decide which language best accomplishes our clients' needs.  Issues such as syntax are irrelevant, nowadays syntax, documentation, APIs with programs like Eclipse or JBuilder are very easy to handle. So, I hope that you don't use a language just because of the syntax, or because it is easier to find documentation. The performance of the program is what is important, based on what platform you are going to run your product, or the purpose of it. Again, it is up to us, we are the professionals.

     It is a sure thing that as languages evolve, we (the programmers) will know what we want and what we will need (we design the tools that make our lives easier).

     Competence is good for us; we want the big corporations, to come up with better languages as this generates more jobs.

     In the end, it does not matter what language we use, the important thing is that what we do that is reliable. We, as the programmers need to know what platform is best for a better result and a better product for our clients.

     The idea of OO programming has already been invented, and Microsoft, Sun, etc. are just the ones to keep it up.

How do Java differs from C#?

     Well, since both languages are C based, the don't differed too much one from another. The syntax is actually pretty similar. For example, the methods basically are no different. In both languages methods take parameters and have a return type. When calling a method, java compiler checks that there is a method that matches the signature, otherwise it will generate a compiler error. In java we cannot create a method that allows us to take a variable number of ints as parameters. In other words, we cannot create a method that takes sometimes 2 ints as a parameter, an other times 3 ints.

     Now, if a programmer wants to take a variable number of ints, he can define a method signature that takes an array of integers and then construct the array when calling the method. In java, this will take some code to do it, but in C# this is not an issue.

     Properties in C# construct that formalizes the getter and setters seen in Java classes. The java thing of having a method that takes a parameter  to set and other to get that returns in C# is simplified. Behind the scenes, C# actually compiles the properties to two methods in the .NET intermedia language framework named get_Property and set_Property. These methods cannot be called directly from C#, but other languages using the MSIL should be able to access these getters/setters.

     Access modifiers restrict the ability for only certain code to change a field. The one that java programmers is used to are private, protected, public, etc.. In C# there are some more, for example Protected internal, this item can be accessed from the entire assembly, or within objects which derive from this class.

     Source Files in java each class needs to exist in a like name file, with the .java extension. In C# does not have any restrictions when it comes to defining classes, even when they are in different namespaces, any part of a C# program may exist in the same .cs file.

The article that I read. Here


Discussion 2

Describe the Portland Form. Why it is useful?

     The "Portland Form" is very simple pattern form that works very nicely for hypertext systems.

     The form is ideal for summaries of large pattern languages and is also a useful tool when working a collection of patterns into a pattern language.

     Each document in the Portland Form contains a system of patterns that work together. Many people call such systems "languages" because as the human mind assembles the patterns of a design in much the same way it assembles the words of a natural language. The Portland Form collects and connects patterns so that they will be studied and understood as a whole.

Pattern Paragraphs

     Each pattern in the Portland Form makes a statement that goes something like: "such and so forces create this or that problem, therefore, build a thing-a-ma-jig to deal with them." The pattern takes its name from the thing-a-ma-jig, the solution. Each pattern in the Portland Form also places itself and the forces that create it within the context of other forces, both stronger and weaker, and the solutions they require. A wise designer resolves the stronger forces first, then goes on to address weaker ones. Patterns capture this ordering by citing stronger and weaker patterns in opening and closing paragraphs. The total paragraph structure ends up looking like:

  • Having done so and so you now face this problem...

  • Here is why the problem exists and what forces must be resolved...


  • Make something along the following lines. I'll give you the help I can...

  • Now you are ready to move on to one of the following problems...

Summary Section

     Long pattern languages find groups of patterns working around similar ideas. Portland Form introduces such groups with a summary section. We are a part of a larger exploration that finds its focus in the PLoP conferences in particular and in the object-oriented programming community in general.


Discussion 3

In detail, describe a problem that you experienced in Squeak. What was the problem?

1) The main problem that I found in squeak is that there is very poor, and sometimes no documentation available on the net. The text book is alright, but if you are looking for specific questions, or advanced questions the book is useless. Trying to find a solution to a problem on the internet is a waste of time. All the time that I have tried this, I have ended up figuring it out by myself, trying and trying different methods or classes.

2) Another problem that I found, and this is not Squeak’s fault,it is that many of us come with a strong background in Java. Therefore, when we are trying to program in Squeak, we apply our patterns in design from java. For example, when defining a variable in java you must define the primitive type, string, int, double, etc., whereas in squeak you cannot. This seems simple enough but actually it has been bothering us all the time.

Why did it happen?

1) I am positive that it happens because not many people program in squeak. Squeak is not a popular language like Java or C#, therefore programmers don't get involved in the language. At the end of the day, programmers are the people who create the forums, FAQ's, etc, to answer questions. Not people programming in squeak = no forums.

           2) The answer to this is simple: we have no experience in small talk. The solution is to attend class and learn the new language. That is what the purpose of this course is.

How did you eventually overcome this problem?

I don't think there is a solution to this problem; in fact, I believe that squeak is doomed.

Pick another posts and link them to your page, explain why you found them useful.

I found what my partner Hai (an assembly computer geek) discussed very interesting. This actually refers to the second part of my discussion. As I explained before, our background on a C based language has lacked the learning experience of Smalltalk. Sometimes, changing the chip in our brains is hard. 

I also totally agree wit Luis Cruz and his discussion about buttons listeners. I count figure this out until the professor did and example in the class. Again, this problem comes from the lack of documentation for squeak, and our backgrounds in Java.

Discussion 4

History of Object Systems?

1. What is Sketchpad?

Sketchpad was the first graphical editor. It was invented by Ivan Sutherland at MIT in 1963. Sketchpad is considered to be the ancestor of modern computer-aided drafting (CAD) programs. It is considered also the development of computer graphics in general. Sketchpad was the first program ever to utilize a complete graphical user interface. It used a X-Y coordinate and the light pen that we found today in PDA's. It was the first object-oriented graphics editor. It allowed to draw a 'master drawing' and then define a set of 'instance drawings' where each instance was like its master. If the master was changed, all instances would reflect that change.

2. What is Simula?

Simula is program language that was developed by Ole-Johan Dahl and Kristen Nygaard in the Norwegian Computing Center in Oslo in the 60's. Simula comes from his ancestor Algol60, another program language. The main difference from his predecessor is that Simula add the features that are close to the modern idea of classes and objects. Simula introduced the object oriented programming paradigm, and therefore can be considered the first object oriented programming language and the predecessor of Smalltalk, C++, Java or C# and all modern class based object oriented languages. Simula was used for a few real world applications, but its historical influence is considered far more important that any actual work done with it. Here is the code for "Hello World" in Simula:

  WHILE 1=1 DO 
      outtext("Hola Mundo!");

3. What do they have to do with Squeak?

Well, Squeak is written in Smalltalk, Smalltalk uses the idea of Object Oriented Programming. Simula was the pioneer or OO, therefore Squeak is a more sophisticated OO language that is based in Simula' ideas. Sketchpad has the same pattern, you design an object and all the instances inherited all the properties of that particular object. If you change the original object you change the instances as well. Just like in Squeak.

4. How did OO ideas get out into the mainstream (out of the research lab)?

As I said in the point 2 above, Simula began with the first flakes of OO programming, but it was the languages from the 80's like C++, Ada and Object Pascal, that boost up the idea of OO programming.

5. How are Java and Squeak similar and how are they different?

Java is a C language based, basically inheritance all the main characteristics from C, while Squeak does not have anything to do with C. Java is statically typed and Squeak is dynamically. While the two languages are similar in that they are object-oriented, Squeak is considered pure object-oriented and Java is not. Squeak and Java have both garbage collection, they are compiled and they handle only single inheritance.


Discussion 5

About Virtual Machines

Why do we need Virtual Machines?

If a desired application runs under a different OS, a virtual machine eliminates the need for a second computer just to run that single application. In addition, a "virtualized" machine can host production and development work at the same time, each group of applications in its own virtual partition. Programs in the development stage are prone to crash often, but will not affect applications running in another virtual machine within the same computer.

What is the different between Virtual machine and multiboot?

Virtual machines run multiple operating systems simultaneously, whereas dual-boot or multiboot machines load only one operating system at startup based on a menu of choices.

About Garbage Collection

What is garbage Collection?

A software routine that searches memory for areas of inactive data and instructions in order to reclaim that space for the general memory pool (the heap). Operating systems may or may not provide this feature. For example, Windows does not do automatic garbage collection which requires that the programmer specifically deallocates memory in order to release it.

What is the best to do, move it to the disk or dellocate?

If a program continues to allocate memory for data buffers and eventually exceeds the physical memory capacity, the operating system then has to place parts of the program in virtual memory (on disk) in order to continue, which slows down processing. Deallocating memory after a routine no longer needs it is a tedious task and programmers often forget to do it or do not do it properly. Java performs automatic garbage collection without programmer intervention, which eliminates this coding headache.




Hola Mundo!!!!

I am a student from Madrid, Spain. My major is computer science. I am very excited to live here in Atlanta, I love Georgia. My first year in the States I lived in New England, specifically in Massachusetts. But, because of the cold weather I moved down here. GA Tech is great!!

I love soccer, since I am from Madrid my soccer team is Real Madrid, one of the best teams in the whole world. Something really typical from Madrid is the "Terrazas", It is a place outside of the bars where you can sit with your friends, drink and chat until late night. It is awesome, you have to try it!! If you wanna come to Madrid one day, you must let me know, I'll show you how beautiful it is. Here is a picture of a Terraza:


Te espero en Madrid.

Madrid!! Claro que sí.


Links to this Page