Pages

Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

Sunday, 7 October 2012

The debate over Functional Programming

Yesterday, I attended the "Centenary of Turing Talks" Talk[4] at Persistent/Pune. After introducing Robert Milner's work, the objective was to decide whether _every_ programmer should learn functional programming. The debate, as with all human debates, digressed quite a bit. However the question remained unanswered. I am just giving an ardent attempt to answer this.

Details of the event are available at the following link:
http://www.persistentsys.com/About/Turing100.aspx

Summarizing the discussion and the points that were raised:
  1. Functional programming is a better abstraction and helps in thinking more about what 'needs to be' or what will be 'what is' ('is-ness' as Prof.Modi mentioned.)
  2. The best place to start learning Functional Programming would be Erlang or Haskell'98 (as Dr.Anuradha mentioned.)
  3. Starting out with monads and trying to run away from 'typed' variants is not recommended for those who are first stepping out into functional programming. (Dr. Anuradha) - (I have done this mistake, so I know this is true.)
  4. You could opt to write 'C Programs' with functional abstractions and Object-Oriented concepts like polymorphism. You could even do this with Assembly language - but that would be too cumbersome if a functional programming language already exists. (Prof. Modi) 

Everyone on the panel or otherwise knew functional programming and also knew that it doesn't get used in production.
  1. The reason functional programming gets lesser attention is the lack of digital infrastructure to support it.
  2. The "Harvard Architecture" in the market essentially assumes sequential code execution, thanks to Alan Turing's early papers. Hence concurrency is also another blocker as the architecture hasn't been rewritten to help that happen - not entirely mathematically despite the fact we have parallel processing, multicore computing happening.
  3. People start learning an "Imperative" language like "C" or "Pascal" or "Fortran" to begin with. Hence they get fewer opportunities that coax them to try out or spend time on functional programming.
  4. The switch usually has to be made at the cost of non-office times for a professional programmer, which leaves a shorter percent of time allocated towards it which is another factor that discourages people.
  5. Most people without a strong theoretical background in computer-science find it difficult to understand Object-Oriented Programming ... making Functional Programming more fringe. 
  6. Deterministic problems are seldom solved (in general practice) with functional programming as Structured programs are easier to verify and prove to be theoretically correct.

Thanks to more discouraging infrastructure factors to the more recent ideas of Functional Programming, Object-Orientation fused with Functional Programming; the 1967 creation of K&R lives on even today in production.

Recommended Reading

For Programmers you can find companies like:
http://www.janestreet.com/
http://www.helpshift.com/
who have a motto to do all their work exclusively on functional programming.

Monday, 9 January 2012

Books to Read on "Software Project Management"

Books and Media to read for Project Management

A list of books with a tentative plan for reading them. The reading time is relative to my reading speed, it might vary for you.
NameAuthorISBNLinkDescriptionReading Time
"Microsoft Secrets"Michael Cusamano0684855313NILMicrosoft's Project Management Practices, they are quite strong and usable. The fundamental principles can be caught in a quick read2 days
"Software Engineering in Practice"Pankaj Jalote0201737213NILA book that tries to home in only on the Software Engineering aspects of Project Management. Does not contain the newest research by Michael Boehm1 day
"The Design of Design"Fred BrooksNILnps.navy.milAn Essay on Project Management.1 hr
"Software Engineering - A Practitioner's Approach"Roger S Pressman0072853182NILThe Best book on "Software Project Management" until the 6th edition7 days
"CMM in Practice"Pankaj Jalote0201616262NILThis is an exclusive Project Management book that covers the CMM standard (and not the new PM-CMM). The newer edition has a description of Infosys' processes4 days
"Walk the Talk" (NDTV)featuring InfosysNILWalk The Tech TalkShows their project management work1.5 hrs
"The Mythical Man Month"Fred BrooksNIL0201835959The last revised edition has a "No Silver Bullet" essay. These are essentially criticisms on project management and are meant to be read after a book on project management is read.3 days
"I Sing the Body Electronic"Fred Moody0140176551a9/amazonLearning how to turn around a disaster, enCarta!2 days
"Project Management" for geeksAnonymousNILwikipediaFor the impatient and jumpy souls, this is what you should be reading.3 uSecs on 3GHz HTs
"Quality Software Project Management"Several81-7808-767-7NILFor the most comprehensive book on the subject.15 days