Programming As a Second Language

Total Page:16

File Type:pdf, Size:1020Kb

Programming As a Second Language Learning Connections Student Voices & Computer Science Programming as a Second Language By Justin Solomon Subject: Computer science, foreign Understanding the concepts and development language of programming can benefi t students by demand- Grades: K–12 (Ages 5–18) ing precision of thought and requiring students to clarify and improve on their problem-solving Technology: Programming process. The goal of beginning programming Standards: NETS•S 1, 3; NETS•T II; instruction should be to introduce the subject NETS•A I (http://www.iste.org/stan- dards/) in terms familiar to students. 34 Learning & Leading with Technology Volume 32 Number 4 Copyright © 2004, ISTE (International Society for Technology in Education), 1.800.336.5191 (U.S. & Canada) or 1.541.302.3777 (Int’l), [email protected], www.iste.org. All rights reserved. Student Voices & Computer Science tandard methods of teaching an With simple adjustments to methods introductory course in comput- of programming instruction, students er science, designed to intro- could be shown that linguistic terms, Sduce computer programming as a tool such as specifi c parts of speech or ele- for mathematicians and engineers at ments of grammar, can be common the university level, are unnecessarily denominators in computer program- complicated and diffi cult. Th ey lack a ming. Using spoken and written common thread that unifi es each unit language as a metaphor for program- of material and frequently make use ming can show commonalities and of mathematical notation, technical diff erences across programming lan- keywords, and other terms or symbols guages, the correlation among these unfamiliar to the average middle or diff erences, and the repetitive patterns high school student. Furthermore, of the correlations. In addition, this they tend to focus on a single more concept can be adapted to reduce the advanced language, leading students intimidation factor of introductory to believe that each programming programming, making it accessible language is a distinct and separate to students from all backgrounds, entity with a tenuous—at best— ages, and genders. With this model, link to other languages. Ironically, introductory courses in computer traditional high school-level computer programming are more likely to science classes are often driven by the provide a solid basis for students in Advanced Placement (AP) curriculum all algorithmic thought, as well as dictated by the College Board, which a foundation for progress to related establishes a narrow set of bench- applications and extensions, possibly marks for evaluating profi ciency in including more advanced languages computer programming. According with specifi c advantages and particu- to research done by Allen Tucker, lar uses. these benchmarks promote memori- According to research conducted zation over understanding and are of by Letitia Naigles, students intro- limited practical use to the average duced to foreign language at a young student. (Editor’s note: Find this and age fi nd it easier to acquire profi cien- other Resources on p. 39.) As a result, cy in that language. Th e same holds students view programming as more true for computer programming. of a snapshot than a continuum, Although programming has become failing to see the value in pursuing an important subject for high school a higher level of programming and students to learn, there is no reason computer applications profi ciency. it cannot be introduced earlier. As a To meet the educational require- discipline, it provides students with ments of a wider and increasingly a unique way of thinking based on younger audience, computer pro- logic and reasoning. A rudimentary gramming instruction needs a com- understanding of the concepts and prehensive overhaul, with the goal of development of programming can fi tting into school-based curricula as benefi t students by introducing them a “second language,” starting as early to such topics as stepwise refi nement as the elementary years. To begin the and the use of documentation. It process of revising basic computer demands precision of thought and science curriculum, the goal of begin- requires students to clarify and im- ning programming instruction should prove on their problem-solving be to introduce the subject in terms process. Programming has applica- more familiar to the average student. tions in almost any fi eld, from lan- December/January 2004–05 Learning & Leading with Technology 35 Copyright © 2004, ISTE (International Society for Technology in Education), 1.800.336.5191 (U.S. & Canada) or 1.541.302.3777 (Int’l), [email protected], www.iste.org. All rights reserved. Student Voices & Computer Science guage arts and design to architecture, languages and the languages they his or her needs and desires. Unsur- and could be viewed as the basis for speak, students would have greater prisingly, the vocabulary and struc- any type of computer use. Even the ease in remembering how to code as tures used to form these demands most fundamental knowledge of well as fewer syntax errors. Drawing are usually quite direct, as most programming can prove helpful to connections between program syntax toddlers do not have a deep under- students working on multimedia and punctuation, between language standing of complex grammatical presentations, classroom projects, structure and grammar, students can structures. spreadsheets, word processing, or recognize programming problems in Programs written by novice com- data aggregation. their everyday lives, making abstract puter science students follow the Unfortunately, the somewhat ar- topics much more concrete. Th ey will same pattern. Beginners fi nd it hard chaic model for lessons in program- have the ability to take an algorithmic to accept that certain statements are ming tends to target older, higher- and logical approach to problem-solv- necessary without understanding their level students who already understand ing both inside and outside the tech- purpose. For example, consider the the abstractions and jargon used by nical realm. following program written in Java, a computer technicians. Th is frequently After they make these connections, fairly complex programming language leads to discouragement and failure students will be able to communicate popular for introductory classes in among younger students who might in the language of the computer how computer science: otherwise benefi t from knowledge of problems can be solved in the most computer programming. Chris Ste- import javax.swing. phenson’s recent survey of high school JOptionPane; computer science teachers reported 1000 100010011 that many of the schools that do not public class SimpleProgram off er computer science instruction 1000 100010011 { decided that it was a fi eld best left to 1000 100010011 public static void colleges and universities due to “aca- main(String a[]) { String answer; demic rigor.” Th is notion is unfound- 1000 100010011 answer = JOptionPane.s ed. Many students in both elementary howInputDialog(“What is the and middle school are profi cient in 1000 100010011 password?”); programming, even though they do if (Integer.parseInt(a not have the traditional technical or 1000 100010011 nswer) == 123) mathematical backgrounds. JOptionPane.showMess According to Peter Van Roy’s basic 1000 100010011 ageDialog(null, “Correct”); constructivist model of education, else students who study computer sci- effi cient way possible. Programming JOptionPane.sh ence as an extension of what they will be much easier to understand owMessageDialog(null, “Incorrect”); already know tend to gain a deeper and it will become less problematic to retain the large amounts of knowl- } understanding of the subject material. } Also, Nicola Henze and Wolfgang edge needed to write useful programs. Nejdl found that students who learn Integrated into other classroom work, Th is code is hardly readable. Most answers by rote are less likely to un- computer programming can be a use- beginning programmers do not know derstand or apply them. For these ful, creative, and thoroughly enter- how or why methods are declared, reasons, a common-sense model of taining second language for students yet alone what it means to call them computer science education would at all levels. public, static, and void. Also, a single use something any student can un- typo in this and most other Java pro- derstand: language. One must learn First Words grams could result in any number the basic constructs of a language and According to the American Speech- of cryptic errors, from the simple how to manipulate them to be profi - Language-Hearing Association, after unclosed string literal to the terrify- cient in any language, be it designed simple nouns, the fi rst words typi- ing thread death exception. In fact, for communication among comput- cally used by infants are commands. running the above program with the ers or humans. If a computer science Straightforward and largely uncom- input “wrongPassword” will make it curriculum encouraged students to plicated, these commands are just stop running and output the follow- make connections between computer enough for a young child to convey ing error message: 36 Learning & Leading with Technology Volume 32 Number 4 Copyright © 2004, ISTE (International Society for Technology in Education), 1.800.336.5191 (U.S. & Canada) or 1.541.302.3777 (Int’l), [email protected], www.iste.org. All rights reserved. Student Voices & Computer Science 1000 100010011 easier to read and to write. Th ey look eryday language and back. Th is type closer to a set of directions given of work emphasizes the relationship 1000 100010011 from one person to another so that between programming and real-life they could be read from top to bot- situations. It also will encourage the 1000 100010011 tom without much interpretation. student to recognize the “punctua- Also, every command has a clear pur- tion” of coding, and that there are 1000 100010011 pose, making the debugging process several elements that make a program straightforward. No “keywords” are acceptable to the computer but still 1000 100010011 required to precede certain state- readable by humans.
Recommended publications
  • Installing Visual Flagship for MS-Windows
    First Steps with Visual FlagShip 8 for MS-Windows 1. Requirements This instruction applies for FlagShip port using Microsoft Visual Studio 2017 (any edition, also the free Community), or the Visual Studio 2015. The minimal requirements are: • Microsoft Windows 32bit or 64bit operating system like Windows-10 • 2 GB RAM (more is recommended for performance) • 300 MB free hard disk space • Installed Microsoft MS-Visual Studio 2017 or 2015 (see step 2). It is re- quired for compiling .c sources and to link with corresponding FlagShip library. This FlagShip version will create 32bit or 64bit objects and native executables (.exe files) applicable for MS-Windows 10 and newer. 2. Install Microsoft Visual Studio 2017 or 2015 If not available yet, download and install Microsoft Visual Studio, see this link for details FlagShip will use only the C/C++ (MS-VC) compiler and linker from Visual Studio 2017 (or 2015) to create 64-bit and/or 32- bit objects and executables from your sources. Optionally, check the availability and the correct version of MS-VC compiler in CMD window (StartRuncmd) by invoking C:\> cd "C:\Program Files (x86)\Microsoft Visual Studio\ 2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64" C:\> CL.exe should display: Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25019 for x64 Don’t worry if you can invoke CL.EXE only directly with the path, FlagShip’s Setup will set the proper path for you. Page 1 3. Download FlagShip In your preferred Web-Browser, open http://www.fship.com/windows.html and download the Visual FlagShip setup media using MS-VisualStudio and save it to any folder of your choice.
    [Show full text]
  • Functional Languages
    Functional Programming Languages (FPL) 1. Definitions................................................................... 2 2. Applications ................................................................ 2 3. Examples..................................................................... 3 4. FPL Characteristics:.................................................... 3 5. Lambda calculus (LC)................................................. 4 6. Functions in FPLs ....................................................... 7 7. Modern functional languages...................................... 9 8. Scheme overview...................................................... 11 8.1. Get your own Scheme from MIT...................... 11 8.2. General overview.............................................. 11 8.3. Data Typing ...................................................... 12 8.4. Comments ......................................................... 12 8.5. Recursion Instead of Iteration........................... 13 8.6. Evaluation ......................................................... 14 8.7. Storing and using Scheme code ........................ 14 8.8. Variables ........................................................... 15 8.9. Data types.......................................................... 16 8.10. Arithmetic functions ......................................... 17 8.11. Selection functions............................................ 18 8.12. Iteration............................................................. 23 8.13. Defining functions ...........................................
    [Show full text]
  • Introduction for Position ID Senior C++ Developer 11611
    Introduction for position Senior C++ Developer ID 11611 CURRICULUM VITAE Place of Residence Stockholm Profile A C++ programming expert with consistent success on difficult tasks. Expert in practical use of C++ (25+ years), C++11, C++14, C++17 integration with C#, Solid Windows, Linux, Minimal SQL. Dated experience with other languages, including assemblers. Worked in a number of domains, including finance, business and industrial automation, software development tools. Skills & Competences - Expert with consistent success on difficult tasks, dedicated and team lead in various projects. - Problems solving quickly, sometimes instantly; - Manage how to work under pressure. Application Software - Excellent command of the following software: Solid Windows, Linux. Minimal SQL. - Use of C++ (25+ years), C++11, C++14, C++17 integration with C#. Education High School Work experience Sep 2018 – Present Expert C++ Programmer – Personal Project Your tasks/responsibilities - Continuing personal project: writing a parser for C++ language, see motivation in this CV after the Saxo Bank job. - Changed implementation language from Scheme to C++. Implemented a C++ preprocessor of decent quality, extractor of compiler options from a MS Visual Studio projects. - Generated the formal part of the parser from a publicly available grammar. - Implemented “pack rat” optimization for the (recursive descent) parser. - Implementing a parsing context data structure efficient for recursive descent approach; the C++ name lookup algorithm.- Implementing a parsing context data structure efficient for recursive descent approach; the C++ name lookup algorithm. May 2015 – Sep 2018 C++ Programmer - Stockholm Your tasks/responsibilities - Provided C++ expertise to an ambitious company developing a fast database engine and a business software platform.
    [Show full text]
  • (Pdf) of from Push/Enter to Eval/Apply by Program Transformation
    From Push/Enter to Eval/Apply by Program Transformation MaciejPir´og JeremyGibbons Department of Computer Science University of Oxford [email protected] [email protected] Push/enter and eval/apply are two calling conventions used in implementations of functional lan- guages. In this paper, we explore the following observation: when considering functions with mul- tiple arguments, the stack under the push/enter and eval/apply conventions behaves similarly to two particular implementations of the list datatype: the regular cons-list and a form of lists with lazy concatenation respectively. Along the lines of Danvy et al.’s functional correspondence between def- initional interpreters and abstract machines, we use this observation to transform an abstract machine that implements push/enter into an abstract machine that implements eval/apply. We show that our method is flexible enough to transform the push/enter Spineless Tagless G-machine (which is the semantic core of the GHC Haskell compiler) into its eval/apply variant. 1 Introduction There are two standard calling conventions used to efficiently compile curried multi-argument functions in higher-order languages: push/enter (PE) and eval/apply (EA). With the PE convention, the caller pushes the arguments on the stack, and jumps to the function body. It is the responsibility of the function to find its arguments, when they are needed, on the stack. With the EA convention, the caller first evaluates the function to a normal form, from which it can read the number and kinds of arguments the function expects, and then it calls the function body with the right arguments.
    [Show full text]
  • Arabic Articles: Assessment: Curricula: Books
    Arabic Articles: Ayari, S. Connecting language and content in Arabic as a foreign language programs. (Arabic Manuscript: for the article, contact Dr. Ayari: ayari‐[email protected]). Assessment: ACTFL Arabic Oral Proficiency Interview (OPI). http://www.actfl.org/i4a/pages/index.cfm?pageid=3642#speaking. Curricula: Berbeco Curriculum. http://arabicatprovohigh.blogspot.com/2009/10/steven‐berbecos‐ marhaba‐curriculum.html. Dearborn High School Arabic curriculum. http://dearbornschools.org/schools/curriculum‐a‐programs/173. Glastonbury curricula. https://www.glastonburyus.org/curriculum/foreignlanguage/Pages/default.aspx /contact.htm. Michigan State University. (Contact Dr. Wafa Hassan for curriculum sample: [email protected]) Books: Wahba, K. Taha, Z., England, L. (2006). Handbook for Arabic Language Teaching Professionals in the 21st Century. Lawrence Erlbaum Associates, Inc. Alosh, M. (1997). Learner Text and Context in Foreign Language Acquisition: An Arabic Perspective. Ohio State University: National Foreign Language Center. Al‐Batal, M. (Ed.) (1995). The Teaching of Arabic as a Foreign Language: Issues and Directions. Al‐Arabiyya Monograph Series, Number 2. Utah: American Association of Teachers of Arabic. American Council for Teaching Foreign Languages. (2000). Arabic version of ACTFL standards for 21st Century. Alexandria, VA: ACTFL. Reports: Textbooks: Multimedia (Software, Technology, Films, DVDs, CDs): Authentic Materials: Websites: Culture and Society: Al‐Waraq. www.alwaraq.net. (An online library of books, authors, and history of classical Arabic literature and heritage) Alimbaratur. http://www.alimbaratur.com/StartPage.htm. (A website of ancient and modern Arabic poetry) Arabic Caligraphy. http://www.arabiccalligraphy.com/ac/. Arabic Literature, Columbia University Library. http://www.columbia.edu/cu/lweb/indiv/mideast/cuvlm/arabic_lit.html. (Columbia University’s website on Arabic literature and poets) Arabic Literature, Cornell University Library.
    [Show full text]
  • Making a Faster Curry with Extensional Types
    Making a Faster Curry with Extensional Types Paul Downen Simon Peyton Jones Zachary Sullivan Microsoft Research Zena M. Ariola Cambridge, UK University of Oregon [email protected] Eugene, Oregon, USA [email protected] [email protected] [email protected] Abstract 1 Introduction Curried functions apparently take one argument at a time, Consider these two function definitions: which is slow. So optimizing compilers for higher-order lan- guages invariably have some mechanism for working around f1 = λx: let z = h x x in λy:e y z currying by passing several arguments at once, as many as f = λx:λy: let z = h x x in e y z the function can handle, which is known as its arity. But 2 such mechanisms are often ad-hoc, and do not work at all in higher-order functions. We show how extensional, call- It is highly desirable for an optimizing compiler to η ex- by-name functions have the correct behavior for directly pand f1 into f2. The function f1 takes only a single argu- expressing the arity of curried functions. And these exten- ment before returning a heap-allocated function closure; sional functions can stand side-by-side with functions native then that closure must subsequently be called by passing the to practical programming languages, which do not use call- second argument. In contrast, f2 can take both arguments by-name evaluation. Integrating call-by-name with other at once, without constructing an intermediate closure, and evaluation strategies in the same intermediate language ex- this can make a huge difference to run-time performance in presses the arity of a function in its type and gives a princi- practice [Marlow and Peyton Jones 2004].
    [Show full text]
  • NOTE 18P. EDRS PRICE MF-$0.65 HC-$3.29 DESCRIPTORS
    DOCUMENT RESUME ED 085 369 SP 007 545 TITLE Project Flagship. INSTITUTION State Univ. of New York, Buffalo. Coll. at Buffalo. PUB DATE 73 NOTE 18p. EDRS PRICE MF-$0.65 HC-$3.29 DESCRIPTORS Audiovisual Instruction; *Individualized Instruction; *Laboratory Procedures; *Performance Based Teacher Education; *Preservice Education; *Student Centered Curriculum; Teaching Methods IDENTIFIERS Distinguished Achievement Awards Entry ABSTRACT Project Flagship, the 1974 Distinguished Achievement Awards entry from State University College at Buffalo, New York, is a competency-based teacher education model using laboratory instruction. The special features of this model include a)stated objectives and criteria for evaluation, b) individualized instruction, c) individualized learning rates, d) laboratory instruction, and e)remediation. The following delivery systems are used to establish these features; a)a sequence of 10-minute video tapes; b)a 20-minute, narrated, 2x2 slide series; c)a self-instructional manual; d) scheduled live demonstrations; and e) scheduled lectures. Students have the option of using one or any combination of delivery systems. Evaluation of the project is achieved through pre- and post-assessment scores from two groups of students. The experimental group experiences Project Flagship while the control group has assigned courses and textbooks. Results reveal higher overall scores for the experimental group on preassessment tests. On postassessment tests, data show higher scores on psychomotor competencies for the experimental group.(The report presents graphs and modules.) (BRB) FILMED FROM BEST AVAILABLE COPY ABSTRACT/INFORMATION FORM- 1974 DAA PROGRAM (I.- DS DEPARTMENT OF HEALTH. Name of Program Submitted: Project Flagship EDUCATION IS WrLFARE .1; NATIONAL INSTITUTE OF r'rs, EDUCATION THIS DOCUMENT HAS SEEN REPRO (s-%, Tnstitution: State University College at Buffalo DUCED EXACTLY AS RECEIVED[RUM THE PERSON OR ORGANIZATION ORIGIN CXD A TINE IT POINTS Or VIEW OR OPINION STATED DO NOT NECESSARILY REPRE C23 President: Dr.
    [Show full text]
  • Dr. Michael Metcalf Chinese Language Flagship Program at The
    1 Chinese Language Flagship Program at The University of Mississippi Innovation in International Programming Through a National Initiative Michael F. Metcalf Associate Provost for International Affairs © The Language Flagship 2008 Innovation in International Programming Through a National Initiative The Problem: All too few Americans speak Chinese with professional proficiency and universities not meeting the national need. Innovation in International Programming Through a National Initiative The Solution Step 1: Build a national program at a few universities willing to teach Chinese in news ways designed to achieve high proficiency. Innovation in International Programming Through a National Initiative The Solution Step 2: Give those universities the space to innovate and the funding to succeed to demonstrate the power of proficiency- driven instruction. Innovation in International Programming Through a National Initiative The Solution Step 3: Disseminate the new and proven model(s) with additional national funding to “infect” more and more universities. Innovation in International Programming Through a National Initiative 2003 Chinese Language Flagships Brigham Young University The Ohio State University The University of Mississippi Innovation in International Programming Through a National Initiative 2008 Chinese Language Flagships Brigham Young University Arizona State University The Ohio State University Indiana University The University of Mississippi University of Rhode Island University of Oregon Innovation in International Programming
    [Show full text]
  • Technical Support Engineer (Level 2)
    Technical Support Engineer (Level 2) JOB SUMMARY Newsroom Solutions is seeking a support engineer to work from our Hollidaysburg, PA office, or telecommute on approval, to troubleshoot client issues with our software and hardware, and train new clients. Our platform includes a web-based application suite built on Linux, and a broadcast television graphics device on Windows XP/7. The successful candidate will have excellent communication skills, have used computers extensively, and be able to work with at least one scripting language (Perl, JavaScript, VBScript, or similar) to perform his/her duties. The candidate will be working with television stations and the result of his/her work will be seen on TV by millions of people. He/She will not just be answering questions but writing scripts that interact between the client’s database and graphic device, according to the client’s need. This position has no direct reports and usually works very independently on assigned cases. This position reports to the Manager of Client Services. ESSENTIAL DUTIES AND RESPONSIBILITIES Receive phone calls and emails from clients, determine the nature of their request, and enter it into the ticketing system. Process and solve support tickets utilizing your knowledge of our product and your existing knowledge in the IT field, working independently, and recognize and escalate difficult technical/business issues to facilitate resolution. You will use your own problem solving abilities to work through the issue and not simply follow a question and answer sheet. Write small scripts based on the Perl scripting language to control data flow from Newsroom's software to the client's television display.
    [Show full text]
  • Q1 Where Do You Use C++? (Select All That Apply)
    2021 Annual C++ Developer Survey "Lite" Q1 Where do you use C++? (select all that apply) Answered: 1,870 Skipped: 3 At work At school In personal time, for ho... 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% ANSWER CHOICES RESPONSES At work 88.29% 1,651 At school 9.79% 183 In personal time, for hobby projects or to try new things 73.74% 1,379 Total Respondents: 1,870 1 / 35 2021 Annual C++ Developer Survey "Lite" Q2 How many years of programming experience do you have in C++ specifically? Answered: 1,869 Skipped: 4 1-2 years 3-5 years 6-10 years 10-20 years >20 years 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% ANSWER CHOICES RESPONSES 1-2 years 7.60% 142 3-5 years 20.60% 385 6-10 years 20.71% 387 10-20 years 30.02% 561 >20 years 21.08% 394 TOTAL 1,869 2 / 35 2021 Annual C++ Developer Survey "Lite" Q3 How many years of programming experience do you have overall (all languages)? Answered: 1,865 Skipped: 8 1-2 years 3-5 years 6-10 years 10-20 years >20 years 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% ANSWER CHOICES RESPONSES 1-2 years 1.02% 19 3-5 years 12.17% 227 6-10 years 22.68% 423 10-20 years 29.71% 554 >20 years 34.42% 642 TOTAL 1,865 3 / 35 2021 Annual C++ Developer Survey "Lite" Q4 What types of projects do you work on? (select all that apply) Answered: 1,861 Skipped: 12 Gaming (e.g., console and..
    [Show full text]
  • CSE 341 : Programming Languages
    CSE 341 : Programming Languages Lecture 10 Closure Idioms Zach Tatlock Spring 2014 More idioms • We know the rule for lexical scope and function closures – Now what is it good for A partial but wide-ranging list: • Pass functions with private data to iterators: Done • Combine functions (e.g., composition) • Currying (multi-arg functions and partial application) • Callbacks (e.g., in reactive programming) • Implementing an ADT with a record of functions (optional) 2 Combine functions Canonical example is function composition: fun compose (f,g) = fn x => f (g x) • Creates a closure that “remembers” what f and g are bound to • Type ('b -> 'c) * ('a -> 'b) -> ('a -> 'c) but the REPL prints something equivalent • ML standard library provides this as infix operator o • Example (third version best): fun sqrt_of_abs i = Math.sqrt(Real.fromInt(abs i)) fun sqrt_of_abs i = (Math.sqrt o Real.fromInt o abs) i val sqrt_of_abs = Math.sqrt o Real.fromInt o abs 3 Left-to-right or right-to-left val sqrt_of_abs = Math.sqrt o Real.fromInt o abs As in math, function composition is “right to left” – “take absolute value, convert to real, and take square root” – “square root of the conversion to real of absolute value” “Pipelines” of functions are common in functional programming and many programmers prefer left-to-right – Can define our own infix operator – This one is very popular (and predefined) in F# infix |> fun x |> f = f x fun sqrt_of_abs i = i |> abs |> Real.fromInt |> Math.sqrt 4 Another example • “Backup function” fun backup1 (f,g) = fn x => case
    [Show full text]
  • Specialising Dynamic Techniques for Implementing the Ruby Programming Language
    SPECIALISING DYNAMIC TECHNIQUES FOR IMPLEMENTING THE RUBY PROGRAMMING LANGUAGE A thesis submitted to the University of Manchester for the degree of Doctor of Philosophy in the Faculty of Engineering and Physical Sciences 2015 By Chris Seaton School of Computer Science This published copy of the thesis contains a couple of minor typographical corrections from the version deposited in the University of Manchester Library. [email protected] chrisseaton.com/phd 2 Contents List of Listings7 List of Tables9 List of Figures 11 Abstract 15 Declaration 17 Copyright 19 Acknowledgements 21 1 Introduction 23 1.1 Dynamic Programming Languages.................. 23 1.2 Idiomatic Ruby............................ 25 1.3 Research Questions.......................... 27 1.4 Implementation Work......................... 27 1.5 Contributions............................. 28 1.6 Publications.............................. 29 1.7 Thesis Structure............................ 31 2 Characteristics of Dynamic Languages 35 2.1 Ruby.................................. 35 2.2 Ruby on Rails............................. 36 2.3 Case Study: Idiomatic Ruby..................... 37 2.4 Summary............................... 49 3 3 Implementation of Dynamic Languages 51 3.1 Foundational Techniques....................... 51 3.2 Applied Techniques.......................... 59 3.3 Implementations of Ruby....................... 65 3.4 Parallelism and Concurrency..................... 72 3.5 Summary............................... 73 4 Evaluation Methodology 75 4.1 Evaluation Philosophy
    [Show full text]