24
15.561 Information Technology Essentials Session 5 Programming Languages Acknowledgments: Copyright © 2005 Thomas Malone, Stuart Madnick Slides marked “SM” are adapted from Stuart Madnick, MIT.

Session 5 Programming Languages - MIT …€“ Programming languages ... 1 ASSEMBLY LANG INSTRUCTIONS op-code 000 1xx 2xx 3xx 5xx 901 ... Mac OS Windows XP Netscape Win 2000( ) (

  • Upload
    ledat

  • View
    240

  • Download
    4

Embed Size (px)

Citation preview

15.561 Information Technology Essentials

Session 5 Programming Languages

Acknowledgments:Copyright © 2005 Thomas Malone, Stuart Madnick Slides marked “SM” are adapted from Stuart Madnick, MIT.

Outline

• Types of software

• Types of programming languages

• Examples – Java – Y2K

Types of software

• System software – Operating systems – Programming languages – Database systems

• Application software – General office tasks (word processing, etc.) – Accounting – Design – Factory automation – …

Programming languages

• Machine language

• Assembly language

• High-level languages

• Fourth-generation languages

1234567

A sample LMC program

1 ASSEMBLY LANG

INSTRUCTIONS

op-code

000 1xx 2xx 3xx 5xx 901 902

symbolic

stop add subtract store load get put

(Source Program)

STEP INSTRUCTION

00 get 01 store w 02 get 03 store b 04 load w 05 add b 06 put 07 stop

2 MACHINE LANG. (Object Program)

LOC INSTRUCTION

00 901 0 398 0 901 0 399 0 598 0 199 0 902 0 000

Source: S. Madnick, MIT

Machine language

• Binary

• Machine dependent

• Stored in the computer when the program is running

• Example: 01110110001010010010 ….

Assembly language

• Mnemonic

• Symbolic addressing

• One-to-one correspondence with machine language

• Example: Get X Add Y Store Z

Automatically translating assembly language to machine language

X Y

Assembler

Get Add Store Z ...

11001000100 01100100011 10001011001 ...

Assembly Machine language language program program

(“source code”) (“object code”)

High-level languages

• Closer to how people think about their problems

• No one-to-one correspondence to machine language

• General purpose

• Example: Z = X + Y

High-level languages - Examples

• Fortran

• Basic

• Visual Basic

• C

• C++

• Java

! � � � L Q F L O Q F X � L � � G O � F X � � � H O X R � V W L R O X R � O U � D P V � HK � G� � Q F X O �X R Q G O � � V L � I O Y Q � � O J Q F H O X R � O � � � L � O V J O Q F X � L � � G O D V W O � F X � � E� � Q F X O �X R � V W L R O X R � O U � D P V � H � O X D � � O ? ? ? O X V O Q F H Q K X � O X R � O � F H O V J O H X � E� � Q F XG W I Z �K V W F X � � O Z �� � Q F X O �� � � G � O � F X � � O O F W I P � � EQ F � W X O F W I P � �H V O Y R Q � � O F W I P � � O ` �O ? ? ?

G W I Z G W I � F W I P � �K V W F X � � Z K V W F X � � � 6� � Q F X O �� � � G � O � F X � � O X R � O F � ' X O F W I P � � EQ F � W X O F W I P � �

� V V � � � � L � Z G W I + K V W F X � �� � Q F X O �X R � O � � � L � O V J O X R � O F W I P � � O Q G E2O � � � L �� F H

Example 1 – Basic

+ + O � � � L Q F L O Q F X � L � � G O � F X � � � H O X R � V W L R O X R � O U � D P V � H

( 5 *$ 9 / � � O ` 5 0 : ) 8 � . < � , �< . 5 *O 1 O �3O

� 9 0 . ) O . � � 8 . ; � 25 *) */ < � � 8 � O $ 0 / *) � 8 O Z O � 2O O 5 *) : / < O Z O � 2$ 0 / ) ` ` O �X R Q G O � � V L � I O Y Q � � O J Q F H O X R � O � � � L � O V J O Q F X � L � � G O D V W O � F X � � O �*E2$ 0 / ) ` ` O �X R � V W L R O X R � O U � D P V � H � O X D � � O ? ? ? O X V O Q F H Q K X � O � F H O V J O H X � O �*E2$ 0 / ) ` ` O �� � � G � O � F X � � O O F W I P � � E2$ 5 * ��O */ < � � 8 2� , 5 9 � O 1 */ < � � 8 O % Z ? ? ? �

3: / < O Z : / < O � O */ < � � 8 2$ 0 / *) � 8 � � 2$ 0 / ) ` ` O ��*� � � G � � F X � � O X R � O F � ' X O F W I P � � E2$ 5 * ��*/ < � � 8 2

&. � � 8 . ; � O Z O : / < O + O $ 0 / *) � 8 2$ 0 / ) ` ` O ��*X R � � � � L � O V J O X R � O F W I P � � G O Q G O �` ` O . � � 8 . ; � 2

&

Example 2 – C++

Example 3 – Java

import java.io.*; import java.lang.*; /** ** Prompts user for list of numbers and outputs average

**/

class AverageNumbers { public static void main (String[] args) { float sum = 0; float average = 0; int counter = 0;

System.out.println("THIS PROGRAM WILL FIND THE AVERAGE OF THE INTEGERS YOU ENTER THROUGH THE KEYBOARD. TYPE 999 TO INDICATE END OF DATA.");

try

{ BufferedReader in = new BufferedReader(new

InputStreamReader(System.in)); String cin = "0"; System.out.println("Please enter a number."); while (!(cin=in.readLine()).equals("999"))

{ sum = sum + Integer.parseInt(cin); counter = counter + 1; System.out.println("Please enter another

number."); }

in.close(); average = sum/counter; System.out.println("The average of the numbers is :

"+average);}catch (IOException e){

System.out.println("Ooops.."); }

} }

Automatically translating high-level language to machine language

Compiler

Z = X + Y ...

11001000100 01100100011 10001011001 ...

High-level Machine language language program program

(“source code”) (“object code”)

“Interpreting” high level languages

Interpreter

Z = X + Y ...

High-level language program

(“source code”)

Interpreting high level languages

• Advantages – Can give machine independence

» (e.g., one machine can “look” like another) – Can be easier to debug and modify – Can give more flexibility at “run time”

• Disadvantages – Slower

“Fourth-generation” languages

• Even closer to how people think about their problems

• Special purpose

• Examples: – Scripting languages

» FIND ALL RECORDS WHERE NAME IS “SMITH”– Spreadsheet formulas?

jOb ect-oriented programming

• A special kind of high-level language

• Can increase programming efficiency and software re-use

• Combines procedures and data into “objects”

• Arranges objects in “class hierarchies”

• “Inherits” properties of objects in this hierarchy

jClass inheritance in

ob ect-oriented programming

Bank account Owner Balance ----­Open Deposit Withdrawal

Credit card account Owner Balance Credit limit ----­Open Deposit Withdrawal Authorize charge

Checking account Owner Balance Minimum balance: $100 ----­Open Deposit Withdrawal

Joe’s checking account Owner: Joe Balance: $400 Minimum balance: $100 ----­Open Deposit Withdrawal

What’s good about Java?

• Highly interactive– Traditional Web - application software runs on server– Java applets dynamically downloaded and run on client

(e.g., input data validation) • “Nice” programming language

– Simpler than C/C++ – Object-oriented

• Secure programming environment – “Sandbox” approach

• Portable (“write once, run anywhere”) – Based on Java byte-code interpreter

SM

S

J D

/

Wi

• (S) • (D) • (J)

}

Java Operation

Internet

Servers

Sun UNIX

ndows 2000

Static pages Dynamic pages Java applets

HTML page

Java applet

HTML page

Java applet same

Mac OS

Windows XP

( ) ( )Netscape Win 2000

Windows 2000 OS

PC Hardware

HTML Interpreter

Java interpreter

HTML Interpreter

Java interpreter

Netscape Mac OS

Mac OS

PowerMac Hardware

different } SM Client environments

e

Java reality check

• Highly interactive or too slow (interpretive)

• “Nice” programming language or too limited

• Secure environment or (1) not secure enough or(2) too secure (restrictive)

• Portable only if consistent Java interpreter availabl (Java “dialects”)

SM

What will happen with Java?

Y2K problem

• Why was this a hard problem?

• Was money wasted?