A note on dictionaries in Programming languages

I recently started with learning python. The good thing about python is that everything in python is dynamic. Python is dynamically typed language. What does it means?
In C/C++ or Java we need to define the type of a variable before using it.
int a; 
float b;
// even Objects need to be defined in
Matrix m1;

But, python is different in this regard. Here, we can use a variable and its type is decided on first assignment.

list  # not needed but just for explanation

list = [] # creates an empty list


Thus, Python decides the type of a variable on its first assignment making it dynamically typed. But, another thing to be careful with in it is that Python is also strongly typed language. Means, once assigned we cant change the type of that variable. In, above python code once list varible is assigned an list object it cant be assigned any other data type. It remains list.


Below, is the summarization of different types of languages based on the property we just discussed.

statically typed language

A language in which types are fixed at compile time. Most statically typed languages enforce this by requiring you to declare all variables with their datatypes before using them. Java and C are statically typed languages.

dynamically typed language

A language in which types are discovered at execution time; the opposite of statically typed. VBScript and Python are dynamically typed, because they figure out what type a variable is when you first assign it a value.

strongly typed language

A language in which types are always enforced. Java and Python are strongly typed. If you have an integer, you can't treat it like a string without explicitly converting it.

weakly typed language

A language in which types may be ignored; the opposite of strongly typed. VBScript is weakly typed. In VBScript, you can concatenate the string '12' and the integer 3 to get the string '123', then treat that as the integer 123, all without any explicit conversion.


line-by-line processing : Linux Bash

Often we require to process a file content line by line. Linux inherently supports this thorough its powerful shell commands. Lets walk through some of the ways to parse a file line-by-line.



First, we can parse a file by catting a file and piping the file output to a while read loop.
The following bash script produces it own code as output. Isn't it interesting?

code for dumping own file content

#!bin/bash

cat $0 | while read line
do
echo $line;
done

Secondly, using file descriptors we can play a lot with it. But, before we will learn about firl descriptors in brief.


Under unix/linux OS, files are referenced, copied, and moved by unique numbers known as file descriptors.

0 stdinIt is(devie) usually the keyboard or mouse from where the input comes.
1stdoutIt is where output is redirected e.g. screen or file
2stderrIt is where the standard error messages are routed by commands, programs, and scripts.
$ some_command 2>&1

this means, the command sends all of the error messages to the same output device that the standard output goes to, which is normally the terminal.

Now, we will use this file descriptors to write the same shell script we wrote before.( which outputs its own code)


#!bin/bash

exec 3<&0  #redirect standard input to file descritpor 3

exec 0<$0 # redirect current file content to standard input

while read LINE   # simply read from standard input now
do 
echo $LINE;
done

exec 0<&3  # revert back stanrd input from 3 to 0

Upgrading Ubuntu to Natty Narwhal

I recently upgraded Maverick Meerkat to Natty Narwhal. The new ubuntu is packed with Unity for default desktop session. The Unity brings a lot of improvements with it. Along with improved UI and perceivable improved speed we could see a new scrollbar which takes less space and looks nice. Real gift to Ubuntu lovers!! worth a try !!!