Note: This is not a request for a homework solution, it is a request for research.
I am a Belgian student at the Katholieke Hogeschool Mechelen (KHM) and am investigating the strengths and weaknesses of functional programming and imperative programming and the inherent differences between the two.
I thought of conducting my research in the following manner:
1) Make a Requirements Analysis for one or more programs. The programs will be simple (such as ordering a list of strings, performing mathematical functions on a list, etc...) to understand and construct, but will contain a few pitfalls for possible bugs.
2) Look for programmers who can program in a functional language and an imperative language, starting out with only myself. This way, I hope to receive consistent quality from each programmer and to prevent the results from getting skewed by a few bad or good entries.
3) Every programmer who is interested in participating will receive the Requirements Analyses and corresponding information and can review these documents before choosing to participate or not.
4) Having chosen to participate, the programmer will produce a program in both a functional language and an imperative language. He will keep a log consisting of simple, measurable data, such as time spent on the program in total, amount of bugs encountered and fixed, time it took to fix bugs, etc. The bugs will be divided into types, such as simple typos (e.g. forgot a semicolon, variable name typo), programmer logic errors (e.g. array out of bounds exception) and so on. The only time constraint to finish the programs is three months before the submission date of the thesis, which is somewhere near May-June of next year (so the actual deadline would be around February - March 2010).
5) Upon submission of his programs, I will sincerely thank the programmer for his valuable help.
6) When the deadline has passed, I will benchmark the programs on several machines, some containing multiple cores (4-16) and gather results. From this information, I will deduct conclusions about the properties and performances of the programs and compare my findings with similar studies to answer my thesis questions.
Currently, this only exists as a proposal. But if you are interested in participating, feel free to reply to this thread and/or contact me at [email protected] (Please have "DreamInCode: Thesis Proposal" as a subject so it doesn't get caught in the spam filter). I will regularly check this thread for updates, so admins, please don't prune it
The languages I was thinking of using are:
Imperative: Java, C++ or C#, Python
Functional: Haskell, OCaml, Lisp, F#
(Languages in bold are languages I will most certainly use, as they're the languages I know. The other languages may be used depending on the amount of programmers who are proficient in them. If you are interested and proficient in a language that is not in the list, please respond. I am fairly new to functional programming and will not judge you. Also, some languages are multi-paradigm and can do both, but my preference goes to pure functional languages such as Haskell.)
(Critical) comments and suggestions are highly appreciated.
A question regarding a thesis.
Page 1 of 1
Thesis topic: Functional Programming vs. Imperative Programming
3 Replies - 1586 Views - Last Post: 27 May 2009 - 07:24 AM
Replies To: A question regarding a thesis.
Page 1 of 1