Skip to content

Year: 2008

Pointers to functions in C++

I need to implements some codes in C++. Just remembering some concepts like pointers to functions.

A simple example:

#include <stdlib.h>
#include <iostream>

using namespace std;

double evalFunction(double (*f)(double), double param){
    return f(param);
}

double function(double x){
    return x/2;
}

int main(int argc, char** argv) {
    cout << function(5.0) << endl;
    cout << evalFunction(function, 5.0) << endl;
    return (EXIT_SUCCESS);
}

Ilex Paraguariensis

Chimarrão Gaúcho
Creative Commons image from Flickr.

From days 15 to 20 from April, I’ll be in Porto Alegre. I’ll participate on FISL (an old dream) with the presentation “Netbeans: beyond Java”. I’d like to talk about how you can use Netbeans as a great IDE for languages others than Java like Ruby, PHP, JavaFX, Javascript, Python, etc.

Probably I’ll be able to participate also on two events before FISL (about Opensolaris and Java ME). 🙂

So … how chimarrão tastes?

Simple Java Chronometer

A very simple Java chronometer code (inspired in the chronometer code in Opale project) you can use for simples measures.

In the main method there’s a example of use.

public final class Chronometer{
    private long begin, end;

    public void start(){
        begin = System.currentTimeMillis();
    }

    public void stop(){
        end = System.currentTimeMillis();
    }

    public long getTime() {
        return end-begin;
    }

    public long getMilliseconds() {
        return end-begin;
    }

    public double getSeconds() {
        return (end - begin) / 1000.0;
    }

    public double getMinutes() {
        return (end - begin) / 60000.0;
    }

    public double getHours() {
        return (end - begin) / 3600000.0;
    }

    public static void main(String[] arg) {
        Chronometer ch = new Chronometer();
        
        ch.start();
        for (int i = 1;i<10000000;i++) {}
        ch.stop();
        System.out.println(ch.getTime());
        
        ch.start();
        for (int i = 10000000;i>0;i--) {}
        ch.stop();
        System.out.println(ch.getTime());
    }
}

Compiling and running this code gives you something like:

191
12

Maybe you got surprised with this. The first loop, with 10 millions of steps is slower than the second, also with 10 millions of steps.

Why?

Some processors (like x86) have an zero-flag in their ALU. Using it is faster perform the question i≠0 than i<K (for a K≠0). In a loop with 10 millions iterations this difference can be perceptible. And this is not just for Java. You can try those loops in others language and see this behavior.

Think twice next time you write a big loop. 🙂

My first computer, CP 400 Color II

Me and my CP 400 Color
My firsts contacts with computers…

My first computer was an CP 400 Color II (CP is the shorten of Personal Computer in Portuguese). It was manufactured here in Brazil by a company called Prológica and launched in middle of 1984. It used a black & white tv and a casset reader of tapes with programs. We also had the CPU/keybord, monitor, joysticks and some cartridges and tapes.

Me and my CP 400 Color
Some years later

With this computer I did my firsts steps with command line tools and programming (BASIC).

Commercials:

CP400 Color Comercial
Original image from MCI.

Links:

Slides for Java Students Group

These are the slides for the presentation this Thursday at the first meeting of Java Students Group (JEG) at UFC. Is about Sun certifications in general and also a brief look over SCJA.

As usually, you can download the slides as ODT or PDF. 😉

See you there.

Updated: Thanks for your presence. Let’s try it again soon.

Público no encontro do JEG

You can find more photos here.

Java, listing system properties

This code prints out your system properties.

import java.util.Properties;

public class PropertiesLister{
   public static void main (String args[]){
       Properties props = System.getProperties();
       props.list(System.out);
   }
}

In the machine I’m writing right now:

— listing properties —
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=/usr/lib/jvm/java-6-sun-1.6.0.00/jre/…
java.vm.version=1.6.0-b105
java.vm.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
path.separator=:
java.vm.name=Java HotSpot(TM) Server VM
file.encoding.pkg=sun.io
user.country=BR
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=unknown
java.vm.specification.name=Java Virtual Machine Specification
user.dir=/tmp
java.runtime.version=1.6.0-b105
java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
java.endorsed.dirs=/usr/lib/jvm/java-6-sun-1.6.0.00/jre/…
os.arch=i386
java.io.tmpdir=/tmp
line.separator=

java.vm.specification.vendor=Sun Microsystems Inc.
os.name=Linux
sun.jnu.encoding=UTF-8
java.library.path=/usr/lib/jvm/java-6-sun-1.6.0.00/jre/…
java.specification.name=Java Platform API Specification
java.class.version=50.0
sun.management.compiler=HotSpot Server Compiler
os.version=2.6.20-16-generic
user.home=/home/export/silveira
user.timezone=
java.awt.printerjob=sun.print.PSPrinterJob
file.encoding=UTF-8
java.specification.version=1.6
user.name=silveira
java.class.path=.
java.vm.specification.version=1.0
sun.arch.data.model=32
java.home=/usr/lib/jvm/java-6-sun-1.6.0.00/jre
java.specification.vendor=Sun Microsystems Inc.
user.language=pt
java.vm.info=mixed mode
java.version=1.6.0
java.ext.dirs=/usr/lib/jvm/java-6-sun-1.6.0.00/jre/…
sun.boot.class.path=/usr/lib/jvm/java-6-sun-1.6.0.00/jre/…
java.vendor=Sun Microsystems Inc.
file.separator=/
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport…
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.cpu.isalist=

Try out at your home. 🙂

Opensolaris in a Junior Enterprise

Ejr empresa júnior da computação
Ejr actual officer

These days I visited the junior enterprise of my course (computer science, UFC). They are just starting and now have they own room.

The Junior Enterprise article at Wikipedia says:

This is an opportunity for students to develop self confidence and experience entrepreneurship at an early stage in their careers, to add practical experience to the theoretical skills and to provide private business with state-of-the-art knowledge from universities.

For my big surprise I found that they have also have an machine with Opensolaris installed for testing they softwares in multiples platforms. Very cool! If they continue to study and improve their skills in Opensolaris they can have an very special differential and goods business opportunities.

Very cool, keep going guys! 😀

Pythons at Sun

Pythons at Sun
Source: python.at.sun.svg

Good news. Two important Pythonistas, Ted Leung (Apache Foundation member) and Frank Wierzbicki (Jython lead) joined Sun Microsystems.

It’s one important step in the recognition of the Python language and certainly will bring benefits for the Python Community. Some things I’d like to see:

  • Python support on Netbeans. Bringing Python as a first class citizen on Netbeans, syntax highlight, code completion, debugging tools, unitary testing, Jython and a lot of more.
  • Django support on Netbeans. As we have Rails and Ruby support on Netbeans we can have also Django and Python support on Netbeans. Django is accessed with some command line tools, the work is just plug this on Netbeans, and its architecture makes this not hard. We could have a lot of wizards to creating new models and views. I’d love that.
  • More support of Python and dynamic languages at JVM. There’s already the Da Vince Machine Project on the OpenJDK Project. I hope one day we can see call the Java Virtual Machine as Universal Virtual Machine or Multi Language Virtual Machine.
  • More Python on OpenSolaris. Some projects at OpenSolaris are allready using Python, see Image Packaging System Project. Python is a really good language for common script tasks and I use it for that purpose very often. We could see a lot of wizards and configuration panels in Opensolaris using Python and PyGTK or PyQT.

It’s really a great moment for Sun and Open and Free Software. I’m happy with all that? You can bet on it. 😀

Sources: Tim Bray Blog and Cnet news.