As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 12 years ago.
I have recently attended a lecture about functional programming by the CEO of a very successful company. The company relies very heavily (almost exclusively) on functional programming. The actual language they use is F#.
This man claims that functional programming is poised to take over as the next big thing. I have heard similar claims about this in the past but it never seemed to happen.
Because functional programming is very different from imperative programming, and would take a considerable amount of time to become fluent in, is it worth it? Do you think that there is a big future for functional programming?
It is worth getting to know a functional language but not because it will get big in the future or land you a good job, but rather because you'll become a better programmer by knowing something besides OOP and procedural languages.
There are almost as many different opinions on this as there are readers of stackoverflow. Everybody has their own crystal ball :-)
Elements of functional programming will be (are) included in mainstream languages. The next COD won't be written in Haskell though.
I certainly think that functional programming will always have a place. I don't know if it will be the next big thing, considering that it's been around for 50 years. I do think that it's worth it to learn a functional language. As ESR has said:
"Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot."
Source: How To Become A Hacker by Eric S. Raymond
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
Is anyone knowledgeable on programming language implementation of algorithmic trading?
I am going to propose a research project on functional programming and algorithmic trading.
My proposal is here: http://pastebin.com/wcigd5tk
Any comments would be very appreciated.
What do you think the future of functional languages in the financial field is? I see many job postings that ask for experience in java and C++, and i dont understand why.
Jane Street is very well known for using OCaml for their trading software. Here you can find some reasons why they decided to use functional languages rather than imperative ones. They also have a blog describing several specific solutions to problems they encountered during development.
C++ is the most popular in that field.
java , python ,haskall ,c# are all runners up
haskall and c# are functional with haskell being purely functional
eventually the field will move to a more "modern language" like c# or haskall but right now c++ has so much support the libraries are already made and its implementation is the easiest .
For Trading application, it usually has Real time, multithread, low latency, high availability to consider too. I was working in a company developing a trading application using both(mixed) C++ and Java as it fit with the behaviour of the application.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I was wondering is it worthwhile learning a language like Erlang. I am looking at learning a new language and the following questions are on my mind :
Will learning functional programming help me/improve as a programmer?
Industry Usage of Erlang/ projects using erlang ?
Any real future in learning erlang from a career point of view?
Possible advantages/disadvantages of erlang over python/PHP/ etc
Thanks,
Vicky
Coming from Scheme here so I can't speak much for Erlang. But as Scheme is functional as well, let me try to convince you.
Will learning functional programming help you as a programmer?
Absolutely. I've heard a lot of reasons for this, some I can attest to, others not (yet). Actually, in my opinion, it's moot trying to convince people that functional programming is worth learning at all, especially when there's a lot of press about Python/PHP/Java(Script)/etc. They have to be convinced for themselves, when they learn it.
As for me, Scheme allowed me to appreciate recursion more. Sure you rarely use recursion in other languages due to limited stack space but as a lot of algorithms are described recursively (albeit implemented iteratively, that is, using loop constructs), implementing them recursively should give you a better appreciation for them.
Industry use of Erlang?
Pass. Though I recommend looking around at Commercial Uses of Functional Programming.
Learning Erlang for a career?
I'm not the person to ask so I can't elaborate but I've heard that FP proved to be very useful in parallel computing. Talk about the future!
Advantages over Python/PHP/etc?
It's functional so it is a good practice for mathematical thinking about algorithms, which is not very apparent (at least for me) when you code in a procedural language. Also, look at the results of Programming Language Benchmarks. It seems that functional languages are faster than those you mentioned (LISP, Haskell, Erlang). Python goes after Erlang but Erlang sure is faster by around half of Python's time! And look at Erlang HiPE: 10.22 seconds! (I'm looking at x64 Ubuntu Intel Q6600 quad-core---parallel processing gave them a leg-up?)
TL;DR Go ahead and learn it. You'll thank me, I'm telling you ;D
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
More of a side thing I want to learn since they never really went much over it in college, and yes im sure this has been asked plenty of times but Books/Algorithms get updated. So I wanted to most updated opinions/reviews of it.
I am less concerned about the history of it, but more concerned about actual implementation. And maybe by the end of the book implementing my own pseudo encryption algorithm.
I recall hearing something about Crpytool being a good learning program. I don't know if that is still true or not.
I am guessing typical encryption algorithms can be pretty much implemented in most languages right? Like MD5 in php and c?
http://www.schneier.com/book-practical.html
And please don't use your pseudo-encryption algorithm for anything more important than your own love letters. It's probably best not to use your own implementations of standard algorithms either.
Here is Cryptography for Developers and Cryptography in C and C++ books which I advise you much
The handbook of applied cryptography is worth to read, especially chapter 14.
http://www.cacr.math.uwaterloo.ca/hac/
Wikipedia has a good bibliography page on the subject which history page shows frequent updates.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 12 years ago.
Not a book that talks about how to code but more high level organization of software.
General Responsibility Assignment Software Principles and Domain Driven Design are in my opinion are the next must have things you should get familiar with after learning to code. API Design is also a good read, especially when you are developing the software that will be used/extended by multiple people.
I am not in favor of learning patterns as it is EASIER to misuse them if the intention is not understood correctly. (Everything seems like a nail if you have a hammer kind of thing). I have nothing against patterns but I have seen it mostly misused by the junior developers thus creating hard to maintain products.
My Professor at RWTH recommended these:
Jacobson, I., et al (1992): Object Oriented Software Engineering
Meyer, B. (1997) : Object Oriented Software Construction,2nd edition, Prentice Hall, ISBN 0-136-29155-4
Though perhaps it is not strictly architecture-related (although I believe you'll find that most prescriptions of architecture patterns are mere guidelines at best, and far from comprehensive), Steve McConnell's Code Complete is truly required reading. More importantly than teaching you design patterns, it will teach you to be a better programmer so that you can make these kinds of decisions for yourself.
I really like Fowler's Design Patterns. Deep stuff, some of it's hard to get through, but yum.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 12 years ago.
In the past LISP was the only powerful functional programming language, as far as I understand. Now there are lots, why do people still use LISP with its weird syntax? Is there a unique killer-feature of a kind?
First, Lisp in general and Common Lisp in particular is more "multi-paradigm" than "functional". From here on, I will mostly discuss Common Lisp (CL).
There isn't "one killer feature", though. CL is a programmable programming language, making it easy to do meta-programming. That is, you can usually do "meta-level" things directly in the language instead of having to reach for a pre-processor that does textual transformation into your base language.
CL also has a very powerful object subsystem (CLOS), that has, so far, supported anything I've wanted to do with class hierarchies and/or methods.
As far as the syntax goes, I guess it's a bit different from the more classic syntax of the "Algol family" languages, but it's no more and possibly less weird than APL.
There is a unique killer-feature. It's called a macro-system. With macros you can expand your language and it makes it really easy to make great DSLs. This kind of thing would be hard (and not that nice) to implement with Scala, Erlang or Haskell.
The syntax or the lack of it is what lot of lispers really like because it brings a great uniformity which is something that is lacking in a lot of languages. For a standard C or Java programmer the Erlang or Haskell syntax is weird too so what's worse about syntax other that it looks weird.
Another question you should answer is why are the other languages better then Lisp, what feature is Lisp missing?
But it's of course the case that many modern languages learn a lot from Lisp and there are many more languages that can be used for the same problem.
Don't forget that Lisp is not one language there are diffrent kind of Lisp dialects. Scheme, Common Lisp or Clojure and all have diffrent focuses.
So the question what language to use can only be answered by trying them every has something pretty special about them. Erlang with the Actors, Haskell and Scala have these crazy typesystems, Lisps have awesome macro-systems .....