Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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
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.