Why Functional Programming?
Justifying OCaml/Functional Programming
Esper Tech's explanation of their use of OCaml
Jane Street's explanation of their use of OCaml
Real World OCaml's explanation
Explaining interest in Haskell
John Hughes on why functional programming matters
Real World Haskell on why Haskell and functional programming
Neal Ford on why functional programming is on the rise
There are plenty more.
Esper Tech's explanation of their use of OCaml
Jane Street's explanation of their use of OCaml
Real World OCaml's explanation
Explaining interest in Haskell
John Hughes on why functional programming matters
Real World Haskell on why Haskell and functional programming
Neal Ford on why functional programming is on the rise
There are plenty more.
OCaml has its roots in ML, a functional language, learning functional programming and related concepts in OCaml is a large portion of this resource. Learning functional programming, being drastically different from programming paradigms like Object Oriented Programming, is not an easy task. What's a good motivation for learning it?
The biggest challenge of learning functional programming is getting into the functional mindset, which solves problems differently from an imperative mindset. But learning how to solve problems in a variety of new ways offers lots of new opportunities. With functional programming under your belt, you will be able to:
Finally, if the whole cloud computing thing isn't convincing enough, you could just use leverage functional programming knowledge to land a job at one of these companies utilizing it. Smashing Magazine reports that Clojure powers Akamai, the massive content delivery network utilized by companies such as Facebook, while Twitter famously adopted Scala for its most performance-intensive components, and Haskell is used by AT&T for its network security systems. Microsoft created F# and Apple created Swift, both of which share much in common with OCaml.
Why OCaml?
This is a case for learning functional programming, but why OCaml out of all of the possible languages (Haskell, Lisp, Scheme, etc.)?
Other Notes
Ultimately, on my mission to civilize, the main goal isn't to teach OCaml or functional programming, but rather to teach better programming techniques and ways to reasoning/structuring/designing the codebase. OCaml and functional programming are simply our chosen tools to accomplish our mission of writing more elegant code that is testable/maintainable/reusable.
The biggest challenge of learning functional programming is getting into the functional mindset, which solves problems differently from an imperative mindset. But learning how to solve problems in a variety of new ways offers lots of new opportunities. With functional programming under your belt, you will be able to:
- Choose the best technique/algorithm/pattern for the problem
- Choose the best library for your framework
- Choose the best language for your project/company
- Learn unfamiliar languages faster
- Land jobs in industry and in academia
- Customize your favorite text editor
Finally, if the whole cloud computing thing isn't convincing enough, you could just use leverage functional programming knowledge to land a job at one of these companies utilizing it. Smashing Magazine reports that Clojure powers Akamai, the massive content delivery network utilized by companies such as Facebook, while Twitter famously adopted Scala for its most performance-intensive components, and Haskell is used by AT&T for its network security systems. Microsoft created F# and Apple created Swift, both of which share much in common with OCaml.
Why OCaml?
This is a case for learning functional programming, but why OCaml out of all of the possible languages (Haskell, Lisp, Scheme, etc.)?
- Using OCaml to teach a course isn't uncommon. Perhaps this stems from functional programming's use in academia.
- OCaml supports both functional and object oriented programming. Using OCaml removes the need to teach two separate languages (which has been done).
- OCaml is a fairly unfamiliar language to many and therefore learning a new language is always a good experience.
- It doesn’t hurt that Jane Street, one of the most vocal industry users of OCaml regularly recruits on Harvard campus and funds some student run events.
Other Notes
Ultimately, on my mission to civilize, the main goal isn't to teach OCaml or functional programming, but rather to teach better programming techniques and ways to reasoning/structuring/designing the codebase. OCaml and functional programming are simply our chosen tools to accomplish our mission of writing more elegant code that is testable/maintainable/reusable.
Why Functional Programming?
Because A Bit of OCaml uses OCaml and because OCaml is based on ML and because ML is a functional language, a good portion of A Bit of OCaml will involve learning about functional programming and using it later on to solve problems and explore concepts in Computer Science. However, functional programming is widely perceived to be much more difficult to learn than other forms of programming, such as Object Oriented Programming. As a result, there needs to be a good reason to learn it.
As I've stated, much smarter people than me have written extensively on the subject. I've linked a selection on the right. Below, I provide my own, perhaps less persuasive argument for learning functional programming and OCaml.
As I've stated, much smarter people than me have written extensively on the subject. I've linked a selection on the right. Below, I provide my own, perhaps less persuasive argument for learning functional programming and OCaml.
Functional Programming is a different, often unfamiliar programming style. Functional programming solves problems differently. Learning how to solve problems is a variety of new ways offers lots of new opportunities. You can:
- Choose the best technique/algorithm/pattern for the problem
- Choose the best library for your framework
- Choose the best language for your project/company
- Learn unfamiliar languages faster
- Land jobs in industry and in academia
- Customize your favorite text editor
Saying that learning functional programming will provide all of these benefits may seem a bit idealistic, but it isn't. Concurrent/distributed/cloud computing is where the entire industry is headed. Understanding the underlying system and using it most effectively will require a deep, fundamental understanding of functional programming.
Finally, if the whole cloud computing thing isn't convincing enough, you could just use leverage functional programming knowledge to land a job at one of these companies utilizing it. Smashing Magazine reports that Clojure powers Akamai, the massive content delivery network utilized by companies such as Facebook, while Twitter famously adopted Scala for its most performance-intensive components, and Haskell is used by AT&T for its network security systems. Microsoft created F# and Apple created Swift, both of which are based on OCaml.
Finally, if the whole cloud computing thing isn't convincing enough, you could just use leverage functional programming knowledge to land a job at one of these companies utilizing it. Smashing Magazine reports that Clojure powers Akamai, the massive content delivery network utilized by companies such as Facebook, while Twitter famously adopted Scala for its most performance-intensive components, and Haskell is used by AT&T for its network security systems. Microsoft created F# and Apple created Swift, both of which are based on OCaml.
Why OCaml?
However, my classmate believes the following: "By being extensively bribed and for no other good reason, CS51 has stupidly decided to choose OCaml as its language of choice for ruining the lives of CS undergrads at Harvard"
- Using OCaml to teach a course isn't uncommon. Perhaps this stems from functional programming's use in academia.
- OCaml supports both functional and object oriented programming. Using OCaml removes the need to teach two separate languages (which has been done).
- OCaml is a fairly unfamiliar language to many and therefore learning a new language is always a good experience.
- It doesn’t hurt that Jane Street, one of the most vocal industry users of OCaml regularly recruits on Harvard campus and funds some student run events.
However, my classmate believes the following: "By being extensively bribed and for no other good reason, CS51 has stupidly decided to choose OCaml as its language of choice for ruining the lives of CS undergrads at Harvard"
Why Not Java?
"My usual answer is something like “Don’t worry. The CS Department is quite an enlightened place, for instance for introductory programming we introduce our freshmen to Haskell”; they react first almost with disbelief, and then with envy —usually it turns out that their undergraduate curriculum has not recovered from the transition from Pascal to something like C++ or Java."
-- Edsger W. Dijkstra on switching from Haskell to Java