programming languages from fortran to whyp. a brief history of programming languages

Post on 20-Dec-2015

220 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Programming Languages

From FORTRAN to WHYP

A Brief History of Programming Languages

http://www.byte.com/art/9509/sec7/art19.htm

http://merd.net/pixel/language-study/diagram.html

How would you have a computer evaluate this expression?

X = A*B + (C – D)/(E + F)

Reverse Polish Notation (RPN)Postfix

AB*CD-EF+/+

Forth

http://www.ultratechnology.com/dindex.htm

WHYP

• Pronounced “whip”

• “Words to Help You Program”

• Subroutine-threaded Forth for Embedded Systems– 68HC11 (16-bit)– 68332 (32-bit)– 68HC12 (16-bit)

WHYP is developed from scratch in the new book:

Design of Embedded Systems Using 68HC12/11 Microcontrollers

byRichard E. HaskellPrentice Hall, 2000

FORTH is a programming language that ---

• was invented by Charles Moore in the early 70’s

• is extensible

• keeps all definitions in a dictionary

• is extremely compact

• is recursive

• can be programmed in RAM, PROM, or ROM

• is structured

• uses a stack and postfix notation

Chuck Moorereading Haskell’sWHYP book

WHYP Colon Definitions

: squared ( n -- n**2)DUP * ;

: cubed ( n -- n**3)DUP \ n n squared \ n n**2* ; \ n**3

Branching and Looping in WHYP

• IF…ELSE…THEN

• FOR…NEXT

• BEGIN…AGAIN

• BEGIN…UNTIL

• BEGIN…WHILE…REPEAT

IF…ELSE…THEN

<cond> IF <true statements>

ELSE<false statements>

THEN

<cond> is either TRUE (-1) or FALSE (0)

WHYP Conditional Words

< ( n1 n2 -- f ) (“less-than”)> ( n1 n2 -- f ) (“greater-than”)= ( n1 n2 -- f ) (“equals”)<> ( n1 n2 -- f ) (“not-equals”)<= ( n1 n2 -- f ) (“less-than or equal”)>= ( n1 n2 -- f ) (“greater-than or equal”)0< ( n -- f) (“zero-less”)0> ( n -- f) (“zero-greater”)0= ( n -- f) (“zero-equal”)U< ( u1 u2 -- f ) (“U-less-than”)U> ( u1 u2 -- f ) (“U-greater-than”)U<= ( u1 u2 -- f ) (“U-less-than or equal”)U>= ( u1 u2 -- f ) (“U-greater-than or equal”)

\ Convert hex to ASCIIHEX

: hex2asc ( n -- asc ) 0F AND \ mask upper nibble DUP 9 > \ if n > 9 IF 37 + \ add $37 ELSE 30 + \ else add $30 THEN ;

>R

Decrement top of return stack and branch back to <WHYP statements> if not equal to zero.Therefore, <WHYP statements> are executedn times.

FOR…NEXT Loop

n FOR <WHYP statements> NEXT

drjne <WHYP statements>

BEGIN…AGAIN

BEGIN <WHYP statements> AGAIN

BEGIN…UNTIL

BEGIN <WHYP statements> <flag> UNTIL

<flag> is either TRUE or FALSEusually from some WHYP conditional word

BEGIN…WHILE…REPEAT

BEGIN <words> <flag>

WHILE <words>

REPEAT

top related