Download Matt Hartzell`s Richter Scholar Proposal

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Logic programming wikipedia , lookup

Falcon (programming language) wikipedia , lookup

Go (programming language) wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Control flow wikipedia , lookup

Functional programming wikipedia , lookup

Reactive programming wikipedia , lookup

Object-oriented programming wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Programming language wikipedia , lookup

Domain-specific language wikipedia , lookup

Structured programming wikipedia , lookup

Transcript
Assessing the Proposed Efficiency of Scripting Languages over
Traditional Programming Languages
A Research Grant Proposal
by
Matt R Hartzell
February 20th, 2004
1 – Research Thesis
Historically, computer scientists and software developers have been educated and trained
to program using “well-defined”, academically-approved programming languages. Such
languages typically have excessive syntax designed to enhance the correctness of
computer programs. However, practicing programmers are increasingly turning to
scripting languages that incorporate a contrasting environment to historical languages for
application development. These scripting languages have not been generally regarded as
appropriate for full system development, yet the use of such languages during the
development cycle is becoming more commonplace. One unanswered question is how
scripting languages differ in development time and efficiency from traditional
programming languages.
2 – Literature Summary
Some computer scientists have noted that a quiet transition from traditional, robust
programming languages to light-weight, informal “scripting” languages is underway.
John Ousterhout observed that:
Although many people are participating in the change, few realize that the
change is occurring and even fewer know why it is happening[2][p.23].
In fact, a recent interview of sixteen prominent programming language researchers asked
them to comment on programming language use, design, and emerging trends[3]. Not a
single researcher made so much as a passing reference to any of the scripting languages
Ousterhout identifies as increasingly replacing traditional programming languages among
practitioners.
One factor that appears to be driving this transition is that programs can be written
more quickly with languages that impose fewer syntactic requirements on the
programmer. Ousterhout provides evidence of increased programmer efficiency by
comparing the number of physical code lines as well as the development time required
using traditional languages against scripting languages, concluding that:
“…applications can be developed five to ten times faster with a scripting
language…”[2][p.27].
The ability to quickly focus on problem-solving instead of syntactic details is driving
some educators to incorporate scripting languages into the undergraduate curriculum[4,
1]. I myself used a scripting language exclusively for programming exercises in the
upper-division course The Design and Analysis of Algorithms. Scripting languages also
excel at “gluing” other self-contained pieces of software together, and this is what they
have traditionally been used for.
However, the literature fails to address the question of whether scripting
languages are useful for the development of complete systems, and how the final product
differs from the same system implemented in a traditional programming language.
3 – Research Methodology
This study will be designed to primarily answer one question: how does a non-trivial
system written with a scripting language compare in terms of development time and
efficiency to the same system implemented with a traditional programming language?
To address this question, a full project will be implemented twice, once in a
traditional programming language, and once in a modern scripting language. The system
will consist of a fully playable and implemented chess simulation. The first segment of
the project will involve a full program being written in a traditional programming
language, in this case the Java programming language. The second stage will involve the
implementation of the same problem, yet written with the Python scripting language.
Throughout the programming process, precise records will be kept regarding the
time required to implement both projects. Those times, together with traditional metrics
that count the number of lines of code in programs, will be used to evaluate Ousterhout’s
anecdotal programmer efficiency claims.
I alone will implement both versions of the chess program. I have taken CSIS
430 The Design and Anlysis of Algorithms where I implemented programming problems
in Python. I also have previous programming experience in Java, a more traditional
programming language. I have also completed CSIS 485 Special Topics – ObjectOriented Applications which was offered in the spring of 2003. In CSIS 485 I completed
a non-trivial objected-oriented chess program in the C++ programming language that
will serve as the basic problem to be solved in Python and Java for the purposes of this
research. Using familiar languages and a familiar problem will help isolate the results of
the research to the act of programming as opposed to the process of learning a language
or designing a solution. However, additional programming elements will be added to the
task which will require the gain of additional experience with each programming
language and to expand upon the original chess program.
I will document the development process by logging the time I spend the time I
spend on each project. At the end of the project I will assess the results by analyzing the
development time and process, and use traditional program analysis metrics to evaluate
Osterhout’s assertions.
4 – Project Benefits
This project will provide a practical application of Ousterhout’s claims. As scripting
languages become increasingly popular among programmers, it will be important to
understand any tradeoffs that exist when forgoing a traditional programming language. If
scripting languages reduce the time required for the development cycle, then overall
development costs will be reduced as well, providing quicker implementations of
problems to users at a reduced cost. However, it must first be shown that scripting
languages provide the faculties of traditional programming languages with additional
benefits.
The project will also incorporate benefits for myself as the researcher.
Algorithmic problem-solving will be demonstrated in two contrasting environments, with
both environments being used in real-world situations. Both Java and Python are widely
used programming environments. Understanding the benefits and contrasts of two
different programming mantras will be vastly useful when solving real-world problems.
Fundamental understanding of available programming models is essential when
designing solutions to a given problem.
5 – Project Outcomes
Dissemination of the project will be targeted software professionals. In October 2004, a
poster presentation will be submitted to the Student Poster Session of the Pacific
Northwest Region of the Consortium for Computing in Small Colleges (CCSC). The
results may also be submitted through a publication such as Communications of the ACM
(CACM) or IEEE Computer. CACM, for example, publishes results from informal
research studies in their “technical opinion” column.
6 – Budget
The project outline is as follows:
June 2004 – Project implementation in Java
July 2004 – Project Implementation in Python
August 2004 – Data analyzing and paper preparation
February 2005 Attendance to CCSC and presentation of poster
The first budgetary item is a stipend, which is based on the proceeding outline. The
amount requested is $3000.00. The hourly rate for 40-hour work weeks during each
month of the project amounts to $6.25 per hour.
A secondary budget item would be funds to cover registration, travel, and food
requirements for results presentation to CCSC. An amount of $200.00 would cover all
costs associated with attending and presenting at the conference.
No other expenses are anticipated.
References
[1] Peter C. Isaacson and Terry A. Scott. A comparison between python and tcl solutions
on four programs assigned in cs0. In Proceedings of the Rocky Mountain Region of the
Consortium for Computing Sciences in Colleges, volume 18, pages 314-330. ACM
Press, 1982.
[2] John K. Ousterhout. Scripting: Higher level programming for the 21st century. IEEE
Computer, pages 23-30, March 1998.
[3] Peter Trott. Programming languages: Past, present, and future – sixteen prominent
computer scientists assess our field. ACM SIGPLAN Notices, 32(1):14-57, January 1997.
[4] Peter Warren. Teaching programming using scripting languages. In Proceedings of
the Southeastern Region of the Consortium for Computing in Small Colleges, volume 17,
pages 205-216. ACM Press, December 2001.
[5] Terry Winograd. Beyond programming languages. Communications of the ACM,
pages 391-401, July 1979.
[6] N. Wirth. On the design of programming languages. In Proceedings of the IFIP
Congress, pages 23-30, 1974.