• No results found

Evolution of the Major Programming Languages

N/A
N/A
Protected

Academic year: 2022

Share "Evolution of the Major Programming Languages"

Copied!
6
0
0

Loading.... (view fulltext now)

Full text

(1)

2/9/2010

1

Evolution of the Major Programming Languages

Group #4

Alexis Rivera Fernando Rodríguez Wilberto Lopez Carlos Torres

Marvin Poueriet Edwin Román Marcos Álvarez Oscar Rivera

Object – Oriented Programming:

Smalltalk

Object-Oriented:

▫ It’s fundamental characteristics are: Data abstraction, Inheritance and Dynamic Binding.

▫ The essence of it is solve a problem by using real-world objects and their process and simulating them.

Design Process:

▫ Object-oriented programming language created somewhere 1980.

▫ This language was created on a project of Alan Kay and the Xerox company, in the creation of one of the early personal computers Xerox Alto.

▫ This came from his original concept Dynabook, which is close to what now days are tablets and slates.

142

Object – Oriented Programming:

Smalltalk

Language Overview:

▫ It was based on the Flex Language and SIMULA67.

▫ As an object-oriented language, all of its computing capacities are done through objects and methods.

▫ Smalltalk is not just a language, it is also a complete software development environment.

143

Object – Oriented Programming:

Smalltalk

Evaluation:

▫ It’s windowing system has become the dominant user interface system.

▫ Although object-oriented programming ideas got popular from SIMULA67, they were more developed within Smalltalk.

▫ It’s readability and writability are not to complex, and its Graphical User Interface (GUI) turned to be on of its most used features.

144

(2)

Combining Imperative and Object-Oriented Language: C++ Language

• C++ builds languages facilities, borrowed from Simula 67, on top of C to support, object-oriented programming, much of what Smalltalk pioneered.

• It evolved from C by improving its imperative features and adding constructs to support object-oriented programming.

Design Process

Moving from C to C++

• In 1980, Bjarne Stroustrup, from Bell Laboratories, made the first step in creating C++ from C.

• Function parameter type checking, conversion, and Classes were added.

• Derived classes, friend classes, public/private access controls, constructors and destructors.

• Later in 1981, inline functions, default parameters, and overloading of the assignment operator were added, and the resulting language was called C with

Design Process

Goals of C with Classes

• Primary goal – provide a language where programs could be organize with classes and inheritance.

• Second goal – little or no performance penalty relative to C.

• Third goal – that it could be use for every application for which C could be used, therefore virtually none of the features of C would be removed, not even those considered to be unsafe.

C++ is born

• 1984 – Inclusion of virtual methods, method name and operator overloading, and reference types. This version was called C++.

• 1985 - CFront , first implementation which translated C++

programs into C programs. (Release 1.0)

• 1985 – 1989 – continued to evolve based on user feedback.

• Release 2.0 – support for multiple inheritance and abstract classes.

• Release 3.0 (1990) – addition of templates and exception handling.

• Standardized in 1998 (ISO 98)

Design Process

.NET + C++ = MC++

• In 2002, .NET was released which included a new version of C++, named Managed C++ (MC++).

• Provides access to the functionality of the .NET Framework

• Inclusion of properties, delegates, interfaces, and reference types for garbage-collected objects. (multiple inheritance not supported)

Language Overview

• Constructs to define types: Classes and Structs.

• Multiple Inheritance is supported.

• Methods = member functions (Unlike Java)

• Supports both procedural and object-oriented programming.

• Operators and methods can be overloaded.

• Dynamic binding provided by virtual methods.

• Templates – methods and classes can be parameterized.

• Exception handling.

147

Evaluation

Pros

• Became and remains a very popular language due to the availability of good and inexpensive compilers.

• Almost completely backward compatible with C.

• Allows to link C++ code with C code, therefore easier to learn for many C programmers.

Cons

• Very large and complex language (PL/I)

• Inherited most of the insecurities of C.

148

(3)

2/9/2010

3 An Imperative-Based Object Oriented

Language: Java

Design Process

In 1990, Sun Microsystems decided that neither C or C++ would be satisfactory for developing software for consumer electronic devices.

The design of Java was guided by the fundamental goal of providing greater simplicity and reliability than believed were provided by C++.

Java designers started with C++, removed numerous constructs, changed some, and added a few others. The resulting language provides much of the power and flexibility of C++, but in smaller, simpler, safer and more reliable language.

149

ARF9

Language Overview

Differences Between C/C++ and Java

Has both classes and primitive types, which are not objects based on classes, as does C++.

Objects are accessed through reference variables, but the primitive types are value types.

Java arrays are instances of a predefined class, whereas in C++ are not.

Java doesn’t have pointers, instead it has reference types that provide some of the capabilities of pointers. References and pointers are almost alike, but pointers point to memory locations, while references point to objects. Which makes arithmetic between references nonsense.

Unlike C/C++ Java has Boolean primitive type used mainly for control expressions.

Java does not support procedural programming, there is no construct in Java that is called a function or a sub program; methods can only be called through a class or object.

C++ supports multiple inheritance directly in its class definitions. Java supports only single inheritance, though you can still gain multiple inheritance by the use of its interface construct.

Java includes a relatively simple form of concurrency control through its synchronize modifier, which can appear in methods and blocks. In java it is relatively easy to create threads

Addition of the Garbage Collector

150

ARF10

ARF11

ARF12

Evaluation

Java trims out excess and/or unsafe features of C++, making it more reliable

Any language could be translated to an intermediate form and run on any platform hat had a virtual machine for that intermediate form, yet the trade-off is cost in interpretation. The initial Java interpreter was at least ten times slower than any C++

compiler.

To make Java competitive to C++ Java programs are now translated to machine code before being executed, using Just In Time (JIT) compilers.

In the first years, Java was primary used for programming World Wide Web pages using applets.

Java applets are small programs that run on the Web client when it finds an applet call in the HTML of a page displaying. When called, the intermediate code form of the applet is downloaded from the server to the client and the output is displayed in the browser. Java applet have recently decayed due to the appearance of client-side scripting languages, such as JavaScript.

The use of Java increased faster than any other language. This is because Java offered a powerful, reliable language that was easier and safer than C++. It is now used for a wide variety of applications.

151

Scripting Languages for the Web: JavaScript

Joint venture between Netscape and Sun Microsystems

Originally called LiveScript

Follows ECMA-262 and ISO-16262 standards

Microsoft has a version called JScript

Related to Java only by similar syntax

Dynamically typed (variable types are not determined at compile time)

Character strings and arrays have dynamic length

Does not support inheritance or dynamic method call binding

Widely used as a web programming tool

Create dynamic HTML documents

Check the validity of form inputs

152

(4)

Slide 10

ARF10

in C++ u can create wrapper classes to add features like index range checking in arrays and stuff, but this is implicit in Java

ALEXIS, 2/1/2010

ARF11

concurrent programs

ALEXIS, 2/1/2010

ARF12

Garbage collector which frees the programmer from being concerned with putting storage back to the heap when it is no longer needed, so it doesn’t suffer from memory leakage.

memory leakage = the storage is allocated but never deallocated

ALEXIS, 2/1/2010

(5)

2/9/2010

4 Scripting Languages for the Web: PHP

• Developed by Rasmus Lerdorf, Apache Group

• PHP: Hypertext Preprocessor

 Originally called Personal Home Page

 Basic object-oriented programming functionality

 HTML-embedded server-side scripting designed to web applications

Allow simple access for HTML form

 Excellent language for web access databases.

 Support for database management systems.

• Related to Java and JavaScript

 Dynamic nature of its strings and arrays, and its use of dynamic typing.

 Similar to JavaScript in its syntactic appearance.

 PHP's arrays are a combination of JavaScript's arrays and Perl's associative arrays.

153

Scripting Languages for the Web: Python

• Developed by Guido van Rossum.

• Python characteristics

Supports multiple programming paradigms

Interpreted and interactive

Emphasizes code readability

High-level general-purpose PL that can be applied to many different classes of problems

Python code looks like executable pseudo code

Strong presence on the web

154

Scripting Languages for the Web: Ruby

Motivation for Ruby development

Yukihiro Matsumoto, wasn't comfortable with Python and Perl

Ruby Characteristics

Pure object oriented language; but it supports other paradigms

Interpreted language

Dynamics and strong typing

Syntactically similar to Ada and Eiffel

155

A New Language for the New Millennium: C#

Language based on C++ and Java.

Also includes ideas from Delphi since its lead designer created Delphi.

Part of the .NET Framework alongside with Visual Basic, Managed C++, J# and Jscript.

All these languages are compiled into the same

Intermediate Language (IL) and then compiled using a Just-In-Time compiler (JIT).

Unlike Java it has support for pointers, structs, enum types, operator overloading and goto.

156

(6)

C# Evaluation

Safer enum types due to implicit conversion to integers.

• Structs are changed to be a lightweight construct, able to implement interfaces.

Switch statement changed by using goto

statements at the end to be able to move to the next instead of using a break at the end.

• Contain Delegates which are object-oriented and type-safe method references.

C# More Features

• Variable number of parameters by using the params reserved word.

• Uses same typing system for primitives and objects.

Also includes the Rectangular Array

(multidimensional) array structure and a for

each statement.

References

Related documents

It has been reported that taurine play an important role in production and reproduction behavior of the species (Gaylord et al., 2014). Fish hydrolysate contains well

The first question posed to faculty was, “Is recruiting different for online gradu- ate programs in technology than face- to-face (F2F) graduate programs?” Of the 89 responses,

English contractions tend to latin, contraction word search via internet.. Mondegreens commonly arise in song lyrics because the art form is one which ordinarily contains lots of

Types are called collective nouns worksheet is determined by collection as a formula is just select goal seek dialog box button on general.. biology, which

Java Program and Compiled Class File Java Program and Compiled Class File.. Java

Durante esta época, comenzaron a proyectarse nuevos edificios dentro de la villa termal dise- ñados por el arquitecto Antonio Palacios; desde una buvette para la fuente del manan-

Different pathways or biological processes were represented by genes associated with aggressive (zinc ion response and lipid metabolism), order (lipid metabolism), sexual/religious

In a significant number of cases, it was evident that drug and/or alcohol abuse by parents was having a very damaging effect on their ability to consistently parent their