Language Choices CS 2340 ObjectOriented Development o Requirements

Language Choices CS 2340

Object-Oriented Development o Requirements – What does customer want? n o Design – How are we going to meet requirements? n o OOA OOD Implementation – Building the thing… n OOP

The Challenge Picking the right language for the right job! Eiffel C# Smalltalk C COBOL Forth Basic Tcl/Tk Ruby SQL/4 GL C++ IDL Python Fortran Ada Assembler Java

History of Programming Languages o Program one instruction at a time in binary or hex n Examples o o n o 10111010011 AB 3 E 6 Software cost 2– 4 x the hardware Program using assemblers n jumps, load, store, etc

History o Program using a domain specific highlevel language n FORTRAN for Science o n Algol for Science and Publishing o n Developed by international committee 1958 COBOL for Business o n Developed by IBM 1957+ Developed by committee 1959+ LISP for Artificial Intelligence o Developed by John Mc. Carthy 1959+

History o Program using general purpose highlevel language n PL/1 o n C o n Developed by IBM in 1965 Developed by Bell Labs in early 1970 s Pascal o Developed by Niklaus Wirth in early 1970 s

History o Program using objects n n Smalltalk o Designed by Alan Kay o Developed by Xerox and released 1980 C++ o Developed by Bjarne Sroustrup at Bell Labs and released 1985 Java o Developed by Sun o Released 1995. NET (C#, Visual Basic, etc)

History o . Net

Curent Popular Languages o o o Visual Basic Java C++ C# C Fortran Lisp COBOL Javascript Python Perl

Scripting o Python n o Javascript n o Developed by Netscape Visual Script n o Good for text processing and web Developed by Microsoft Ruby n OO scripting language

History Summary o o Computer languages have moved away from the hardware Computer languages have gotten more complex to handle more complex problems Computer languages have gotten more inefficient but easier to use Software vs Hardware costs increasing

How to Pick a Language? o What do you want to do? n o o How fast does the program need to be? How fast does development need to be? n n o o Some languages are special purpose How easy is it to do what you want to do in the language? How hard will it be to maintain and extend? How safe does the program need to be? What does it cost?

Definitions o o Expressibility – Ability to express an idea Expressiveness – Ease of expressing that idea For example: String processing in Fortran Numeric Analysis in COBOL

Some Applications o Digital Signal Processing n n o Hard Real-Time Embedded System n o C++/C Web-Enabled E-Commerce n o Assembler C Java Prototype Development n n Visual Basic Smalltalk

More Applications o Operating System n n o Flight Control System n o Ada MIS System n o Ada Nuclear Reactor Control System n o Assembly C SQL/ 4 GL Text Processing n Perl

Talking Head Prediction o Type-safe vs. Dynamically-Typed n n n Ease of revision/Testing vs. Strict parameter enforcement Cost of Deployment/Modification Ruby, Python, Smalltalk will grow, C++, Ada and Java will fade. § Robert Martin

The wrong answer o Everyone is using XXXXX. n o Where XXXXX is the current favorite. However recognize that: n If everyone else is really using XXXXX there may be better: o o o Libraries Applications Development Environments

How can I make a pseudo-scientific choice? ? o One Technique – Decision Matrix n n n List languages and criteria Assign weights Rank each language Sum weights Select highest score
- Slides: 18