Sunday, September 27, 2009

Principles of Programming Languages - Module 5

Module 5      
Elementary Data Type

A data type is a class of data objects together with a set of operations for creating and manipulating them.

An elementary data object contains a single data value.  A class of such data objects over which various operations are defined is termed an elementary data type.

The basic elements of a specification of an elementary data type are as follows:
1. Attributes that distinguish data objects of that type. 
2. Values  that data objects of that type may have.  The type of a data object determines the set of possible(maximum) values that it may contain.  The set of values defined by an elementary data type is usually an ordered set with a least value and a greatest value; for any pair of distinct values, one is greater than the other.
3. Operations that define the possible manipulations of data objects of that type.  They may be  primitive which means that they are specified as part of the language definition, or they may be programmer-defined operations, in the form of subprograms or method declarations as part of class definitions.  Examples: integer addition, the use of the equal symbol to test equality, square-root operation

Implementation of Elementary Data Types

The implementation of an elementary data type consists of a storage representation for data objects and values of that type, and a set of  algorithms  or  procedures that define the operations of the type in terms of manipulations of the storage representation.

Storage Representation

Storage for elementary data types is strongly influenced by the under lying computer that will execute the program.  For example, the storage representation for integer or real values is almost always the integer or floating-point binary representation for numbers used in the underlying hardware.

The representation of a data object is ordinarily independent of its location in memory.  The storage representation is usually described in terms of the size of the block of the memory required(the number of memory words, bytes, or bits needed) and the layout of the attributes and data values within its block.  Usually the address of the first word or byte of such a block of memory is taken to represent the location of the data object.

Implementation of operations

Each operation defined for data objects of a given type may be implemented in one of three main ways:
1. Directly as hardware operation.  For example, if integers are stored using hardware representation for integers, then addition and subtraction are implemented using the arithmetic operations built into the hardware.
2.  As a procedure or function subprogram.  For example, a square-root operation is usually not provided directly as hardware operation.  It might be implemented as a square-root subprogram that calculates the square root of its argument.
3. As an inline code sequence.  An inline code sequence is also a software implementation of the operation.  However, instead of using a subprogram, the operations in the subprogram are copied into the program at the point where the subprogram would otherwise have been invoked.  For example, the absolute-value function  on numbers,  defined by  abs(x) = if x < 0 then -x else x is usually implemented as an inline code sequence:
a.  Fetch value of x from memory.
b.  If x > 0, skip the next instruction.
c.  Set x = -x.
d. Store new value of x in memory.
Each line is implemented by a single-hardware operation.

Declaration

A declaration  is a program statement that serves to communicate to the language translator information about the name and type of data objects needed during program execution.  By its placement in the program (e.g. within a particular subprogram or class definition), a declaration may also serve to indicate the desired lifetimes of the data objects.

Sample declarations of some programming languages:

• The C declaration float A, B; at the start of a subprogram indicates that two data objects of type float are needed during execution of the subprogram.  This is an example of an explicit declaration.
• FORTRAN is a programming language that provides implicit or default declarations, which are declarations that hold when no explicit declaration is given.  The variable INDEX may be used without explicit declaration; it is assumed by the compiler to be an integer variable because its name begins with one of  the letters I-N. 
• In Perl, simply assigning a value to a variable declares  the type of the variable
Examples:  $MyVar = 'This is a string'    # $MyVar is now a string variable
      $MyVar = 890                   # $MyVar is now an integer variable

The most important purpose for declarations, from the programmer's viewpoint, is that they allow for static rather than dynamic type checking.

Data storage representations that are built into the computer hardware usually include no type information, and the primitive operations on the data do no type checking.  For example, a particular word in the computer memory during execution of a program may contain the bit sequence 101010010100…1001 may represent an integer, a real  number, a sequence of characters, or an instruction.  The hardware primitive operation for integer addition cannot check whether its two arguments represents integers; they are simply bit sequences.  At the hardware level, conventional computers are particularly unreliable in detecting data type errors.

Type checking means the checking that each operation executed by a program receives the proper number of arguments of the proper data types.  For example given the expression X = A + B * C, the compiler must determine for each operation(addition, multiplication, and assignment) that each receives two arguments of the proper data type.

Type checking may be done at run time (dynamic type checking) or at compile time (static type checking).

Dynamic type checking  is run-time type checking usually performed immediately before the execution of a particular operation.  It is usually implemented by storing  a type tag in each data object that indicates the data type of the object.  For example, an integer data object would contain both the integer value and an integer type tag.

Scalar Data Types

Scalar data objects have a single attribute for its data object.  For example, an integer object has an integral value (ex. 130, -90, 12), and no other information can be obtained from that object.  They also follow the hardware architecture of a computer (e.g. integers, floating-points, characters).

Integers

The set of integer values defined for the type forms an ordered subset, within some finite bounds, of the infinite set of integers studied in mathematics.  The maximum integer value is sometimes represented as a defined costant.

Operations on these data objects include:
• Arithmetic
• Relational
• Assignment
• Bit

Floating-Point Real Numbers

A floating-point real number data type is often specified with only the single data type  attribute real, as in ForTran, or float, as in C.  The values form an ordered sequence from some hardware-determined minimum negative value to a maximum value, but the values are not distributed evenly across this range.  The precision required for floating-point numbers, in terms of the number of digits used in the decimal representation, may be specified by the programmer.

Operations on these data objects include:
• Arithmetic
• Relational
• Assignment
• Bit

Boolean operations on these objects are sometimes restricted.  Due to roundoff issues, equality between two real numbers is rarely achieved.

Fixed-Point Real Numbers

Data objects like money which contains pesos and cents, and other values which are rational that requires two or specific number of decimal places, should not be written as integers or floating-point values to avoid roundoff errors.  Thus, a form of fixed-point data should be used to represent these values.

A fixed number is represented as a digit sequence of fixed length, with the decimal point positioned at a given point between two digits.

Complex numbers

This numeric data type consists of a pair of numbers representing the number's real and imaginary parts.

Rational Numbers

A rational number is the quotient of two integers.  It is included in a programming language to avoid the problems of roundoff and truncation encountered in floating and fixed point representations of reals.

Enumerations

An ordered list of distinct values is called an enumeration.  Languages such as C, and C++ include an enumeration data type that allows the programmer to define and manipulate such variables more directly.

Below is sample program that uses the enum data type:

#include
#include
#include

void main()
{
enum x {One, Two, Three};
x y = Three;
clrscr();
if (y == 2)
cout << "Three"<< endl;
getch();
}

Booleans

Most languages provide a data type for representing true or false, usually called a Boolean or logical data type.

The most common operations on Boolean types include assignment as well as the following logical operations:
• And - Conjunction
• Or - Inclusive disjunction
• Not - Negation or complement

Characters

A character data type provides data objects that have a single character as their value.   The set of possible character values is usually taken to be a language-defined enumeration corresponding to the standard character sets supported by the underlying hardware and operating system, such as the ASCII character set. 

The ordering of the characters in this character set is called the collating sequence for the character set. Collating sequence is important because it determines the alphabetical ordering given to character strings by the relational operations.  Spaces, digits, and special characters may be alphabetized as well.

Operations include:

• Relational
• Assignment
• Testing whether a character value is one of the special classes letter, digit, or special character

Composite Data Types
Elementary data types may involve a complex data structure organization by the compiler.  Thus, multiple attributes  are often given for each such data type.

Character Strings

These are objects that composed of a sequence of characters.

There are at least three different treatments of character-string data types :

• Fixed declared length.  A character-string data object may have a fixed length that is declared in the program.
• Variable length to a declared bound.  A character-string data object may have a maximum length that is declared in the prior program, but the actual value stored in the data object may be a string  of shorter length-possibly even the empty string of no characters.
• Unbounded length.  A character-string data object may have a string value of any length, and the length may vary dynamically during execution  with no bound (beyond available memory).

Operations on Strings:
• Concatenation - an operation of joining two character strings to make one long string
• Relational operations on strings - use of logical operators like the less than, greater than symbols, etc.
• Substring selection using positioning subscripts - extracting substrings through positioning subscripts
• Input-output formatting - formatting of strings when read or displayed
• Substring selection using pattern matching - - extracting substrings through pattern matching
• Dynamic strings - The language Perl supports static and dynamic strings.  The string '$ABC' is static, and the statement print '$ABC'; will print the value $ABC.  The string "$ABC" is dynamic and the statement print "$ABC"; will cause the string to be evaluated, and the value of the Perl variable $ABC is printed instead.

Pointers

A pointer is also called a reference or access type.  It contains the location of another data object or may contain the null pointer, nil or null.  Pointers are ordinary data objects that may be simple variables or components of arrays and records.

Files and Input-Output

A file  is a data structure with two special properties:
1. It ordinarily is represented on a secondary storage device such as a disk or tape and thus may be much larger than the most data structures of other types.
2. Its lifetime may encompass a greater span of time than that of the program creating it.

Sequential Files

These are the most common type of file.  It is a data structure composed of a linear sequence of components of the same type.
Operations

• Open - this operation ordinarily requests information from the operating system about the location and properties of the file, allocates the required internal storage for buffers and other information, and sets the file-position pointer to the first component of the file.
• Read - this operation transfers the contents of the current file component to a designated variable in the program
• Write - this operation creates a new component at the current position in the file(always at the end) and transfers the contents of a designated program variable to the new component.
• End-of-file test - A read operation fails if the file position pointer designates the end of the file.  Because the file is of variable length, an explicit test for the end-of-file position is needed so that the program may take special action.
• Close - this operation involves notification to the operating system that the file can be detached from the program (and potentially made available to other programs) and possibly also deallocation of internal storage used for the file (such as buffers and buffer variables) (Pratt, and Zelkowitz, 2001)

Principles of Programming Languages - Module 4

Module 4  
Names, Bindings, Type Checking and Scopes

Names

One of the fundamental attributes of variables is names, which have broader use than simply for variables.  They are also associated with labels, subprograms, formal parameters, and other program constructs.  The term identifier is often used interchangeably with name.

Name forms

A name is a string of characters used to identify some entity in a program.  The earliest programming languages used single-character names.  This was natural because early programming was primarily mathematical, and mathematicians have long used single-character names for unknowns in their formal notations.

A programming language has a maximum length of a name. For example, FORTRAN 90 and C allow up to 31 characters. Ada names have no length limit.  Some languages like C++, do not specify a length limit on names.

The commonly acceptable name form is a string with a reasonably long length limit, if any, with some connector character such as the underscore(_) included.  The underscore serves the same purpose as a space in English text but without terminating the name string in which it is placed.

In some languages, like C, C++, and Java, uppercase and lowercase letters in names are distinct; that is, names in these languages are case sensitive.

Special Words

Special words in programming languages are used to make programs more readable by naming actions to be performed.  They are  used to separate the syntactic entities of programs.  In most languages, these words are classified as reserved words, but in some they are only keywords.

A keyword is a word of a programming language that is special only in certain contexts.  A reserved word is a special word  of a programming language that cannot be used as a name.  As a language design choice, reserved words are better than keywords because the ability to redefine keywords can lead to readability problems.

Variables

A program variable is an abstraction of a computer memory cell or collection of cells.  Programmers often think of variables as names for memory locations, but there is much more to a variable than just a name.  A variable can be characterized as a sextuple of attributes: (name, address, value, type, lifetime, scope).
Address

The address of a variable is the memory address with which it is associated.  It is sometimes called its l-value, because that is what is required when a variable appears in the left side of an assignment statement.

Aliases

It is possible to have multiple identifiers reference the same address.  When more than one variable name can be used to access a single memory location, the names are called aliases.  Aliasing is a hindrance to readability because it allows  a variable to have its value changed by an assignment to a different variable.

Type

The type of a variable determines the range of values the variable can have and the set of operations that are defined for values of the type.

Value

The value of a variable is the contents of the memory cell or cells associated with the variable.  It is convenient to think of computer memory in terms of abstract cells, rather than physical cells.  It is sometimes called the variable's r-value because it is what is required when the variable is used on the right side of an assignment statement.


Bindings

Binding is an association such as between an attribute and an entity or between an operation and a symbol.  The time at which a binding takes place is called binding time. Bindings can take place at language design time, language implementation time, compile time, link time, load time, or load time. 

Examples:
• The asterisk symbol(*) is usually bound to the multiplication operation at language design time.
• A variable in C or C++ program is bound to as particular data type at compile time.
• A variable may be bound to a storage cell when the program is loaded to the memory
• A call to a library subprogram is bound to the subprogram code at link time.

Given some lines of a C++ program:

int iCt;

iCt = iCt + 1;

Some of the bindings and their binding times for the parts of this assignment statement are as follows:
• Set of possible types for iCt:  bound at language design time.
• Type of count:  bound at compile time.
• Set of possible values of iCt: bound at compiler design time.
• Value of iCt: bound at execution time with this statement.
• Set of possible meanings for the operator symbol +:  bound at language definition time.
• Meaning of the operator symbol + in this statement:  bound at compile time.
• Internal representation of the literal 1:  bound at compiler design time.

A binding is static if it occurs before run time and remains unchanged throughout program execution.  If it occurs during run time or can change in the program execution, it is called dynamic.

Type Bindings

Before a variable can be referenced in a program, it must be bound to a data type.  The two important aspects of this binding are (1) how the type is specified and (2) when the binding takes place.

Forms of Variable Declaration
1. Explicit declaration - a statement in a program that lists variable names and specifies that they are a particular type.
2. Implicit declaration - a means of associating variables with types  through default conventions instead of declaration statements.

The first appearance of a variable name in a program constitutes its implicit declaration.  Both explicit and implicit declarations create static binding to types.

Dynamic Type Binding

With dynamic type binding, the type is not specified by a declaration statement.  Instead, the variable is bound to a type when it is assigned a value in an assignment statement. When the assignment statement is executed, the variable being assigned is bound to the type of the value, variable, or expression on the right side of the assignment.

One of its advantages is that it provides a great deal of programming flexibility.  With dynamic type binding, one can deal with data of any type.

Dynamic type binding has also disadvantages. One of these is the error detection capability of the compiler is diminished relative to a compiler for a language with  static type bindings, because any two types can appear on opposite sides of the assignment operator.  Incorrect types of right sides of assignments are not detected as errors; rather, the type of the left side is simply changed to the incorrect type.

Type Inference

For programming languages like ML, Miranda, and Haskell, with type inference, the types of most expressions can be determined without requiring the programmer to specify the types of the variables

Type Checking

When dealing with type checking, one has to consider the following:
1. Subprograms will be taken as operators whose operands are their parameters;
2. The assignment symbol will be thought of  as a binary operator, with its target variable and its expression being the operands.

Type checking is the activity of ensuring that the operands of an operator are of compatible types.  A compatible type is one that is either legal for the operator or is allowed under language rules to be implicitly converted by compiler-generated code to a legal type which is known as coercion.  A type error is the application of an operator to an operand of an inappropriate type.

Strong Typing

This is one of the new ideas in language design that became prominent in the so-called structured programming revolution of the 1970s. A strongly typed language is one in which each name in a program in the language has a single type associated with it, and that type is known at compile time.  A programming language is considered strongly typed if type errors are always detected.  The importance of strong typing lies in its ability to detect all misuses of variables that result in type errors.  Languages like FORTRAN, C and C++ are not strongly typed.  Examples of programming languages that are nearly strongly typed are Pascal and Ada.  Languages like ML and Java are strongly typed.

Type Compatibility

The design of the type compatibility rules of a language is important, because it influences the design of the data types and operations provided for values  of those types.

Two different type compatibility methods:
1. Name compatibility -  this means that two variables have compatible types only if they are  in either the same declaration or in declarations that use the same type name.
2. Structure compatibility - this means that two variables have compatible types if their types have identical structures.

Scope

One of the most important factors having an effect on the understanding of variables is scope.  The scope of a program variable is defined as the range of statements in which the variable is visible.  A variable is visible in a statement if it can be referenced in that statement  A variable is local in a program unit or block if it is declared there.  The nonlocal variables of a program unit or block are those that are visible within the program unit or block but are not declared there. (Sebesta)

Principles of Programming Languages - Module 3

Module 3 
Describing Syntax  and Semantics

The study of programming languages, like the study of natural languages, can be divided into examinations of syntax and semantics.  The syntax of a programming language is the form of its expressions, statements, and program units.  Its semantics is the meaning of those expressions, statements, and program units.  For example, the syntax of a C if  statement is if () .  The semantics of this statement form is that if the current value of the expression is true, the embedded statement is selected for execution.

Syntax and semantics are closely related.  In a well-designed programming language, semantics, should follow directly from syntax; that is, the form of statement should strongly suggest what the statement is meant to accomplish.

Languages, whether natural (such as English) or artificial (such as Java), are sets of strings of characters from some alphabet.  The strings of a language are called sentences or statements.  The syntax rules of a language specify which strings of characters from the language's alphabet are in the language. 

Formal descriptions of the syntax of programming languages, often do not include descriptions of the lowest level syntactic units.  These small units are called lexemes.  The lexemes of a programming language include its identifiers, literals, operators, and special words.

A  token  of a language is a category of its lexemes.  An identifier is a token that can have lexemes, or instances.  In some cases, a token has only a single possible lexeme. 

For example:

Given  the C statement:  index = 2 * count + 20;

The lexemes and tokens of this statement

Lexemes        Tokens
index              identifier
=                     equal_sign
2                     int_literal
*                      mult_op
count              identifier
+                     plus_op
20                   int_literal
;                      semicolon

A Grammar for Simple Assignment Statements

Given:   a = b * ( a + c )

    =
      a =
                    a = *
                    a = b *
                    a = b * ( )
                    a = b * ( + )
                    a = b  * ( a + )
                    a = b * ( a +
                    a = b *  ( a + c)

Parse Trees

One of the most attractive features of grammars is that they naturally describe the hierarchical syntactic structure of the sentences of the languages they define.  These structures are called parse trees.

Given: a = b * ( a + c )

Ambiguity

A grammar that generates a sentence for which there are two or more distinct parse trees is said to be ambiguous.

Given: a = b *  a + c
Note:  The parse tree will be supplied by the teacher in class.

Operator Precedence

A parse tree of a sentence with multiple operators, regardless of the particular operators involved, has the rightmost operator in the expression at the lowest point in the parse tree, with the other operators in the tree moving progressively higher as one moves to the left in the expression. 

Static Semantics

The static semantics of a language is only indirectly related to the meaning of programs during execution; rather, it has to do with the legal forms of programs (syntax rather than semantics).  In many cases, the static semantic rules of a language state its type constraints.  Static semantics is so named because the analysis required to check these specifications can be done at compile time.

Denotational Semantics

This is the most rigorous widely know method for describing the meaning of programs.  The fundamental concept of denotational semantics is to define for each language entity both a mathematical object and a function that maps instances of that entity onto instances of the   mathematical object.

Principles of Programming Languages - Module 2

Module 2
Levels of Programming Languages, Programming Domains, Language Evaluation Criteria

Levels of Programming Languages

Programming languages were invented to make machines easier to use.  They thrive because they make problems easier to solve.

The informal term level  is useful for gross distinctions between languages.  Levels of readability for programs are analogous to levels of readability for English text.

Machine Language

Machine computations are low level, full of details that have more to do  with the inner workings of the machine than with what the computation is for.  A typical machine-level operation might add numbers or compare characters.

Machine language is the native language of a computer; it is the notation to which  the computer responds directly. The term code originally referred to machine language, although code is now used more broadly to refer to any program text.

Programs in machine language are usually unintelligible at the lowest level, the most detailed level, since they consist only of 0s and 1s.

Assembly language is a variant of machine language in which names and symbols take the place of the actual codes for machine operations, values, and storage locations, making individual instructions more readable.

High-level Language

A language is a high-level language if it is independent of the underlying machine.  They have replaced machine and assembly language in virtually all areas of programming, because they provide benefits like the following:

a. Readable familiar notations
b. Machine independence
c. Availability of program libraries
d. Consistency checks during implementation that can detect errors

Portability is another term for machine independence; a language is portable if programs in the language can be run on different machines with little or no change. (Sethi, R.)

Programming Domains

Computers have been applied to a myriad of different areas, from controlling nuclear power plants to storing the records of personal checkbooks.  Because of this great diversity in computer use, programming languages with very different goals have been developed.

Scientific Applications

Typically, scientific applications have simple data structures but require large numbers of floating-point arithmetic computations.  The most common data structures are arrays and matrices; the most common control structures are counting loops and selections.  Examples of these languages are FORTRAN and ALGOL 60.

Business Applications

Business languages are characterized by facilities for producing elaborate reports, precise ways of describing and storing decimal numbers and character data, and the ability to specify decimal arithmetic operations.

With the advent of microcomputers came new ways for businesses, especially small businesses, to use computers.  Two specific tools that can be used on small computers, spreadsheet systems and database systems, were developed for business and now are widely used.  The COBOL language belongs to this category.

Artificial Intelligence

This is a broad area of computer applications characterized by the use of symbolic rather than numeric computations. Symbolic computation means that symbols, consisting of names rather than numbers, are manipulated.  Also, symbolic computation is more conveniently done with linked lists of data rather than arrays.  This kind of programming sometimes requires more flexibility  than other programming domains.  The functional language LISP and the ProLog which supports logic programming belong to this group.

Systems Programming

The OS and all of the programming support tools of a computer system are collectively known as its systems software.  Systems s/w is used almost continuously and therefore must have execution efficiency.  A language for this domain must provide fast execution.  It should have low-level features that allow the s/w interfaces to external devices to be written.  Examples of this softwares are PL/1, BLISS, Extended ALGOL, and UNIX.


Scripting Languages

A scripting language is used by putting a list of commands, called a script, in a file to be executed.  sh (for shell) was the first of these languages.  It began as a small collection of commands that were interpreted as calls to system subprograms that performed utility functions, such as file management and simple file filtering.    To these basis were added variables, control flow statements, functions, and various other capabilities, and the result is a complete programming language.  As a result, ksh was developed by David Korn at Bell Laboratories.

awk is another scripting language, developed by Al Aho, Brian Kernighan, and Peter Wienberger at Bell Laboratories.  It began as a report-generation language but later became a more general purpose language.

tcl is an extensible scripting language developed by John Outsterhout at the University of California at Berkeley.  Today, tcl is combined with tk,  a language that provides a method of building X Window application. 

The Perl  language, developed by Larry Wall, was originally a combination of sh and awk.  Since the advent of the WWW, the popularity of Perl has risen dramatically, primarily because it is a nearly  ideal language for CGI(Common Gateway Interface) programming.

Special-Purpose Languages

They range from RPG, which is used to produce business reports, to APT, which is used for instructing programmable machine tools, to GPSS, which is used for systems simulation.

Language Evaluation Criteria

A.  Readability

One of the most important criteria for judging a programming language is the ease with which the programs can be read and understood. Readability must be considered in the context of the problem domain. For example, if a program that describe a computation was written in a language not desired for use, the program may be unnatural and convoluted, making it unusually difficult to read.

B.  Writability. 
Is a measure of how easily a langaueg can be used to create programs for a chosen problem domain.

C.  Reliability. 
A program is said to be reliable if it performs to its specifications under all conditions.
   
D.  Cost . 
The ultimate total cost of a programming language is a function of many of this characteristics.  First, there is the cost of training programmers to use the language.  Second is the cost of writing programs in language. Third is the cost of compiling programs in the language. Fourth, the cost of executing programs written in language is greatly influenced by that language's design.

Principles of Programming Languages - Module 1

Module 1
Defining Programming Languages

• A tool for instructing machines
• A means for communicating between programmers
• A vehicle for expressing high-level designs
• A notation for algorithms - they are used for specifying, organizing and reasoning about computations
• A way of expressing relationships between concepts
• A tool for experimentation
• A means of controlling computerized devices (Sethi, R.)

Reasons for Studying Concepts of Programming Languages

• Increased capacity to express ideas - it is widely believe that the depth at which we can think is influenced by the expressive power of language in which we communicate our thoughts. Awareness of a wider variety of programming language features can reduce such limitations in software development. Programming can increase the range of their software-development process by learning new language constructs.
• Improved background for choosing appropriate languages - Many professional programmers have had little education in computer science; rather they have learned programming on their own thought in-house training programs. Such training programs often teach one or two languages that are directly relevant to the current work of the organization. Many other programmers received their formal training in the distant past.
• Increased ability to learn new languages - Computer programming is a young discipline, and design methodologies, software development tools, and programming languages are still in the state of continuous evolution. This makes systems development exciting profession, but it also means that continuous learning is essential.
• Better understanding of the significance of implementation - In learning the concepts of programming languages, it is both interesting and necessary to touch on the implementation issues that affect those concepts. In some cases, understanding of implementation issues leads to understanding of why languages are designed the way they are. This in turn leads to the ability to use a language more intelligently, as it was designed to be used. We can become better programmers by understanding the choices among programming languages construct and the consequences of those choice.
• Increased ability to design new languages - to a student, the possibility of being required at some future time to design a new programming language may seem remote. However, most professional programmers occasionally do design languages of one sort or another.
• Overall advancement of computing - Finally, there is a global view of computing that can justify the study of programming language concept. Although it is usually possible to determine why a particular programming language become popular, it is not always clear, at least in retrospect that the most popular programming languages are the best available. (Sebesta, R.)

Friday, September 25, 2009

Blast your email





Thursday, September 24, 2009

19.2 Pound Bundle of Joy

by Mike Krumboltz



Attention moms! Can we have your attention please? To everyone who likes to brag about giving birth to 8, 9, even 10-lb. babies, we advise you keep quiet around Ani from Indonesia. The woman recently delivered a 19.2-lb. bruiser, the heaviest newborn ever recorded in the country.




Ani's epic delivery scored a lot of attention in the Search box. After the "Today" show ran a segment and Al Roker and Matt Lauer made some lighthearted jokes, lookups on "19 pound baby," "indonesian baby," and "heaviest baby ever" all spiked immediately.



And pictures? Oh my, the baby's pictures were also hugely popular. Queries for "19 pound baby photos" jumped from nil into the thousands, and photos within Yahoo! News are drawing big clicks. Not surprisingly, the baby is said to require "near constant feeding."



For those wondering if this baby boy (as of yet unnamed, but we suggest "Hulk") is the heaviest newborn in history, the answer is no. The record belongs to an American infant born in 1879. He weighed 23 pounds, 12 ounces. Sadly, he died a few hours after being born. An ABC station reports that the heaviest baby to survive weighed 22 lbs., 8 ounces. We sure hope the big guy was always extra-nice to his mother.



Below, check out the segment from "Today."

Farm Town Dirty Tricks




"Double Click My Feet and I Will Hire You" 
Don't fall for this, you will hire them to work on your farm and there is nothing you can do about it. Single click an Avatar's feet and the menu will pop up with your pointer on the option to hire them. Double clicking the feet automatically chooses that opton.
Mass hiring and sending players to a farm with nothing to harvest. This is done to clear the room of competetion. The devs have put a fix in to stop this but there are ways to get around the fix. There is nothing you can do about it and odds are you will not return to the same room as before. You can leave a message but most likely it will be laughed at. Telling people about the farmer and farm name doesn't help since they can be changed quickly.


Wednesday, September 23, 2009

Of being a Sotware Developer

Responsibilities:

  • Analyze existing system and design its computerization based on end-user's criteria and requirements in order to streamline work processes and working time, reduce cost and satisfy end-user's requirements.
  • Develop and implement program and program enhancements based on requirements defined by the end-user in order to support the business process simplification and improvements.
  • Conduct program testing, debugging and program tunning in order to ensure effectiveness and efficiency of the developed program, complying with the specifications and requirements defined by the customer.
  • Provide complete Project Methodology documentation (Specifications and Requirements Document, User Acceptance Document, Release Document, Technical Document and User's Manual) in order to ensure deliverables are well defined and functionalities are working based on approved user-defined requirements; Formulate guidelines and instructions for customized and developed systems in order to make user's aware of the procedures of system process, reduce habitual on-call support and provide a guide for future program enhancements.
  • Reserach and recommend latest trends in systems and technological advances applicable to company in order to improve or advance the systems available for optimum use of resources.
Working Qualification:


  • Must have excellent communication and presentation skills,



  • With excellent problem solving skills , creativity and innovation



  • Need to have working knowledge in languages such as C++, Java, PHP, Visual Basic, C#, .Net and Database Tools such as SQL Server, MySQL, DBase and Oracle as well.



  • Lecture delivered during IT Day 09 at CSU Lasam


    Latest Trends and Issues in Information Technology
    Cagayan State University
    Lasam, Cagayan
    September 3, 2009
    Lecturer: Greg M. Ramil
                   Software Developer,
                   Archangel Systems, Inc.
                   San Juan, M.M.

    I.    Systems Administration: IT Manager’s Approach

      a.    Operating Systems
    • i.    Windows 7
    • ii.    Windows Vista
    • iii.    Windows XP
    • iv.    Red Hat 5
    • v.    Fedora Core
    • vi.    Ubuntu
    b.    Servers
    • i.    Windows Server 2000, 2003, 2008
    • ii.    Red Hat Enterprise
    • 1.    FTP Server
    • 2.    WebServer
    • 3.    Proxy Server
    • 4.    File Server
    • 5.    Mail Server
    • 6.    Firewalls
    II.    Best Practices in Software Engineering
    a.    Seven Habits of Highly Effective Programmers

    III.    Next Generation Gadgets
    a.    Less keyboards / mice

    IV.    Issues in Information Technology
    a.    Certification
    b.    Youngest Microsoft Certified
    c.    Freewares/Sharewares
    d.    Social Networking Sites
    e.    Creation of Department of Information and Communication Technology

    V.    Work Opportunities and Work Readiness
    • a.    IT Jobs
    • b.   Programmers
    • c.    Software Developers
    • d.    IT Managers
    • e.    System Administrators
    • f.    Graphic/Multimedia Artists
    • g.    Call Centers
    • h.    Web Developers
    • i.    Database Administrators
    • j. /etc
    b.    Preparation for work
    • i.    Formal Study
    • ii.    Trainings/Seminars
    • iii.    Self Pace/Tutorials

    Saturday, September 19, 2009

    Manual of Savings/Credit Management and Information System


    Overview:
    Working in the field of Information Technology has something to do with the duties of putting each aspect of our daily living in proper perspectives. Our hunger for constant changes and innovations made our minds accept the challenge of fulfilling our insatiable needs in this modern age.
    Savings and Credit Management and Information System is a computerized system which caters large volumes of detailed or repetitious information in short periods of time. The system can:
    • Organize and store many similarly structured pieces of information (e.g., addresses including name and contact numbers).
    • Retrieve a single piece of information from many stored records (e.g., the address of John Does).
    • Perform complicated mathematical computations quickly and accurately (e.g., the interest or penalties of Savings Deposit).
    • Print information quickly and accurately (e.g., a Savings and Credit report).
    • Perform the same activity almost indefinitely, in precisely the same way each time (e.g., print a hundred copies of the same form letter).
    • Facilitate communications among individuals, departments and branches (e.g., quickly transmit messages and/or documents that require review or editing).
    The system's salient feature includes:
    • Log-in page for security purposes. Only authorized users can access the system.
    • Database for Personal Profile for easy access of contact details.
    • Savings Account page which determine and compute savings of all members.
    • Deposit/Withdrawal Page which includes computation of interest or deductions based on the rules and regulations set forth by the management.
    • Below Maintaining Balance which displays information regarding accounts which is below the maintaining balance set by the management and based on the existing rules and regulations of the business.
    • Loan Page which serves as a recordkeeping tool for loans of every members.
    The System at Work
    Log-in Page


    • This is the log-in page of the system which is the first screen to appear everytime the system is accessed.
    • Type/Select Username and Password. Click Ok to proceed.
    • Default username created by the developer is “ADMIN”, password is “A”. Such username and password can be edited or deleted in the User Accounts of the System.
    • If the inputted Username and password is correct, splash screen will appear which will direct the user to the main page of the system, otherwise, an error message will be prompted.

    The Splash Screen




    The Main Form of the System  




    The File Menu




    Composition of File Menu:
                Personal Profile – profile of every members
                Set-up: User Accounts – list of authorized users of the system
                Set-up: Maintaining Balance – settings of maintaining balance and deduction, if any.

    The Maintaining Balance Form




    • Use this form to set maintaining balance and deduction, if any.
    • Click update to update changes.
    • Click Cancel to close the form without saving alterations.
    • To open this form, click on file, select set-up and click Maintaining Balance.
    User accounts

    • Use this form to Add, Edit or Delete authorized persons who will use this system.
    • Access Level determines the behavior on how users can access the system. "Administrator" account can access the full functions of the system while "User" account has limited use of the system.
    • To access this form, go to file, set-up and user accounts or simply click the user accounts icon on the toolbar.




    Personal Profile

    • This page is use to add, edit, delete and/or search records of all members.
    • To open this, click on file and select “personal profile” or click “personal profile” icon on the toolbar.

     

    • To search record, click search button and type either last name or first name on the search string box.


    Savings accounts

    • The Savings account form displays all savings records of all members.
      Select a record by searching through the search text box or by clicking the grid and click “details” to view details about the record.
    • Total balance displays the sum of all savings account.


    Deposit

    • The Deposit form shows the savings account of individual members. Current Balance display the current balance of the member.
    • To open this, click the Deposit icon on the toolbar.
    • To select a record, click the button with three dots to search.
    • To deposit, click the deposit button.
    • To delete a record, click delete. Note: Make sure to delete last record first. To do this, navigate the grid by clicking the last row on the grid.Update button is used to compute interest based on the existing rules and regulations of the management.
    • Click print to print the record.


     

    • To deposit, type the amount to be deposited on the amount box. Default date is the system’s date (configuration of the computer set) found below the task bar. You can change the date by clicking on the date box.




    Withdrawal


    • The Withdrawal form shows the savings account of individual members. Current Balance display the current balance of the member.
    • To open this, click the Withdrawal icon on the toolbar.
    • To select a record, click the button with three dots to search.
    • To withdraw, click the deposit button.
    • To delete a record, click delete. Note: Make sure to delete last record first. To do this, navigate the grid by clicking the last row on the grid.
    • Update button is used to compute interest based on the existing rules and regulations of the management.
    • Click print to print the record.


     

    • To withdraw, type the amount to be deposited on the amount box. Default date is the system’s date (configuration of the computer set) found below the task bar. You can change the date by clicking on the date box.



    Below Maintaining Balance

    • This form shows the list of accounts which is below the maintaining balance set by the management.
    • Total Balance box displays only the sum of all accounts which is below the maintaining balance.




    Loan

    • Loan page records all loans of every member.
    • To open this, click loan on the toolbar.
    • Click new to add new loan record.
    • Click delete to delete any record.
    • Click details to display details about the loan.

     

    Payment of Loan Form

    • This form is used to update loans of members by way of paying loan, if any.


     

     

    Developer's Remarks:

    • All data (like names, amount, etc.) that has been used in this manual are of developer's thought only, which is for purposes of testing the system.
    The System's Developer















    Friends for sale?



    Friends for sale with facebook is somehow a nice avenue for people to barter their own way of sharing joy.

    However, facebook failed to manage as to whether or not said application was able to face essential requirements which should include sensitivity of matters.

    As a matter of fact, whether the concerned person may reject posted texts in said application, it can still be viewed by anyone "networked".

    Anyway, selling price is not bad. You can be sold for even free but that would depend upon your consent in real life.

    What's defamatory are those "Nicknames" appended.

    Awan lang. hehe. kunada garud ti agsida't sili isu't maadatan. Ang pikon laging talo.

    But beware. You should not wonder if a more obsessive remark strikes you. haha. thanks.



    In need for Shirt Print & Design?




    Designing through multimedia technology is a cool idea and smart method for any people who have good inclination and appreciation for arts. Most artists nowadays use software such as Photoshop & CorelDraw for their graphic enhancement requirements.

    I started creating my own design during my 3rd year in College. Variety of designs was presented so as to suit the needs of people who will wear it. Things I consider in my designs include the following:
     Purpose (What is the shirt all about?)
     Color (Will you consider monotone, duotone, tricolor or multi?)
     Symbols (Is there a need to include graphics?)
     Characters (How about your name?)
     Shirt (Look for quality and texture. Brand? It’s up to you.)
     Cost (Is it affordable?)
     People (Who will wear it? Any rule for Gender sensitivity?)

    Prints now come with digital or silk screen.
    Digital require higher cost. Silkscreen is cheaper. Quality may vary depending on materials used. Digital may be printed directly from printing machines or may be through heat press. Silk screen may be in the form of rubberized, embossed or in plain.



    Want to order?
    Contact me: govkingbruce@gmail.com/+639291583231



    Friday, September 18, 2009

    Need Tutorial/or Computer Systems?

    Need tutorial in:
    - Multimedia? (Photoshop, Flash)
    - Desktop Publishing (Pagemaker, MSPublisher)
    - Programming? (C++, Visual Basic, PHP, Java)
    - Database? (SQL Server 2000/2005, MySQL, DBase Plus, Access)
    - Office Productivity? (MS Word 2000/2003/2007, OpenOffice.org)
    - Web Development (Hardcode[Notepad], Dreamweaver, Frontpage)
    - WebServer (Apache, IIS)
    - Network (LAN Config, Routers, CAT5 crimping)
    - Hardware (Troubleshooting/Repair)
    - /etc

    Contact me:
    GREG M. RAMIL
    former OIC Dean, Cagayan State University at Lasam
    Lasam, Cagayan
    http://csu.edu.ph/lasam.php

    Current Affiliations:

    Software Developer,Archangel Systems, Inc.
    San Juan City, Metro Manila

    Developer, Tagaytay Highlands International Golf Course, Inc.
    Tagaytay, Cavite

    Developer, Lucky Circle Corporation
    20th Flr., Philippine Stock Exchange, Tektite, Ortigas City

    Programmer, Natasha Service Center
    Lasam, Cagayan

    Programmer, Lasam Savings & Credit Cooperative
    Lasam, Cagayan


    Softwares previously created/implemented:


    Computerized Pageant Show
    Cagayan State University at Lasam

    - This program automates computation of candidates' scores based on Judges Inputs. Thus, awards, like Best in Swim Wear, can be given to candidates every after appearances (not at the end of the show.) Created 2005. Additional note: in WAMP/VB6 versions.


    Automated Enrollment System
    Cagayan State University at Lasam
     - It is a tool to automate student transactions such as schedules, subjects enrolled, assessment of Fees, Faculty Workloads, Grades, etc. Created 2005. Demo was installed also at CSU Aparri and CSU Piat Campuses on 2007..



    Sales Information and Monitoring System
    Ilustrado Sales and Service Center
    Lasam, Cagayan
      - Major market of this business entity includes AVON, NATASHA, MSE. The system aims to compute sales of individual dealers and present technical analysis regarding the business' sales in a daily, weekly, monthly, quarterly and annually basis and the system can also show sales by product basis. Good for tracking sales and is essential in decision making as well. Created 2005

    Golf Scoring System
    WackWack Golf and Country Club
    Mandaluyong City, Manila
     - Computes scores of golfers in re: PAR etc. supports team (dual) computation. Salient feature also include categorical sorting such as (Senior Division, Junior division and guest division.) Was created 2008 and used during the 21st Bill Shaw at Wackwack.

    Bingo System
    The Heritage Hotel
    Pasay City
     - The system is able to create number of cards based on user input, supports drawing of ball either manually (traditional) or automatically(system generated). It can automatically traced number of winners based on drawn balls. July 2009

    Savings/Credit Management & Information System
    Lasam Savings and Credit Cooperative
    Lasam, Cagayan
     - System that manages savings, credits, and loans of Members of Lasam Savings and Credit Cooperative. Can compute earnings  and deductions (interests) based on business' policies and regulations.


    Projects with Archangel Systems, Inc:

    Scientific Games Validation System
    Pacific Online Systems Corporation
    21st Flr., Philippine Stock Exchange, Ortigas City
    - checks/marks cartons and books activated/nullified in re: lotto games (Otso Otso, Lucky Charms, etc.)

    Accounting System
    Tagaytay Highlands International Golf Course Inc.
    Tagaytay City, Cavite
    - Accounting Books: Chart of Accounts, General Journal, Disbursement, Payables, Sales
    - Financial Statements: Trial Balance, Income Statement, Balance Sheet


    Accounting System
    Lucky Circle Corporation
    20th Flr., Philippine Stock Exchange, Ortigas City
    - Accounting Books: Chart of Accounts, General Journal, Disbursement, Payables, Sales
    - Financial Statements: Trial Balance, Income Statement, Balance Sheet

    greg_ramil@yahoo.com
    govkingbruce@gmail.com
    +639291583231/ +639285517095

    Horoscope of the Day - Pisces

    Pisces (Feb 19 - Mar 20)


    Out with the old and in with the new. Striking a balance could require a big change.

    In Detail

    If anyone has paid their dues when it comes to being humble and obliging, it's you. At times, you've probably been a bit too nice to others, almost inviting them to take advantage of you. At the moment, you have a choice to make: allow someone to make you feel used, whether or not they intend it, or to stop it before it starts. Why not jump in right at the beginning and walk out with your head held high?

    Horoscope of the Day - Aquarius

    Aquarius (Jan 20 - Feb 18)


    A change of routine could lead you to big-picture chin-scratching. Pursue novelty.

    In Detail

    You've been visiting online travel sites for a while now -- not to mention all the time you've spent standing in front of a travel agent's office, staring at the posters in the window and sighing. Well, isn't it time to stop all that wishing and get down to business? Sure it is. You've got a driver's license and a passport (and if you don't, you should look into it), and you know where you want to go. Make it happen, and soon.

     

    Horoscope of the Day - Capricorn

    Capricorn (Dec 22 - Jan 19)


    Don't count on clear communication today -- but do count on solving problems.

    In Detail

    There's definitely something to be said for being idealistic, even for more practical types, like you. You can be just as romantic as the next person, however, just as long as you know you stand a chance of having that dream become an actual reality. In that case, your earthy nature will lead you toward a relentless pursuit of that dream -- which just might be the exact thing you're experiencing now.

    Horoscope of the Day - Sagitarius

    Sagittarius (Nov 22 - Dec 21)


    All the love coming your way might leave you feeling moody by the end of the day.

    In Detail

    If anyone can dream big dreams, it's you. After all, you love to go to extremes with everything and you really don't do anything on a small scale. If you've been having the same dream for a while, whether it's at night or while you're gazing out the window in the afternoon, don't feel silly about it. Dreams are symbolic, and they often point out the next step in the road. Pay attention to yours now.

     

    Horoscope of the Day - Scorpio

    Scorpio (Oct 23 - Nov 21)


    You'll have more luck solving problems by giving in. It's not easy, but it works.

    In Detail

    Here's an instant replay of recent events -- the kind that aren't quite ready for primetime exposure. And don't worry about inadvertently breaking some kind of moral rule by revealing them. You aren't. This has nothing to do with anything indecent or naughty going on. It's just that you're worried and you need to find someone you can confide your concerns to -- someone you know can trust implicitly. Don't worry. You'll find them, or they'll find you.

    Horoscope of the Day - Libra

    Libra (Sep 23 - Oct 22)


    Others are clamoring to be near your; what you do with that attention is up to you.

    In Detail

    You have every right to doubt someone if your antennae are twitching. You have even more of a right if they've already given you reason to do so. Of course, you don't need to let on that you're feeling this way. Keeping your emotions under wraps will give you the chance to investigate what's going on and come to a solid conclusion. So for now, watch and wait -- which just so happens to be on the list of what you do best.

    Related Posts with Thumbnails