Should I learn Scheme (with SICP), Haskell (with Lipovaca's book) or OCaml?
Just use C++#include <functional>
>>62247203
I know some C and C++ already. I want to learn something else.
All of them, as they are quite different from each other. I personally replaced python/bash with ocaml.
lisps are only tangentially functional. It's like saying Javascript is a functional language.
Use Haskell.
>>62247239
Jackass of all trades, competent at none.
>>62247642
How do they differ in practice?
>>62247671
Why is Lisp considered to be so powerful? Is it just because of metaprogramming?
>>62247819
Yep. The minimal syntax is simultaneously its greatest strength and its greatest weakness.
>>62246872
If you're purely interested in functional programming, I'd say Haskell.
Scheme/Lisps are more for metaprogramming, as other anons have said -- although they are very worth learning for that reason. Any sufficiently well-written Common Lisp program I've seen has basically evolved into a DSL. Haskell is more like a rabbit hole down category theory.
>>62247832
>>62247881
I intend to take a look at Lisp eventually, but right now I'm mostly interested in functional programming.
What about OCaml? Unlike Haskell it's not pure, but there must be a reason why it's often used by universities as an introduction to FP.
Rust with a functional style
learn the lambda calculus
haskell
>>62247935
Most languages can be written with a functional style
>>62248914
functional style is more than maps and filters
>>62248974
Learning functional programming with anything else than a functional language is retarded
>>62246872
I only have my xbox one or ps4 for internet and computer stuff now. Is there anyway I could practice this language through the browser. I wanted to try before but I got popped and that means I get only the mainstay in console interactoin. My 360 got blown to bits too.
I don't need to do much beyond simple loops and I don't know that javascript will work very well. I can't the reply window to pop up anymore.
>>62247671
Javascript is a functional language.
>>62247934
>What about OCaml
OCaml seems weird to me. It doesn't really fill a niche, its OOP is useless, and it has no community. I wonder why Jane Street continues to use it instead of Haskell.
as far as I can tell OCaml is just a make system with C and asm in mind. I tend to reading its name as Objective C, asm, machine language.
>>62249076
u wot m8
ocaml has nothing to do with systems programming
>>62247819
Ocaml is the most practical, with its unmatched module system, type system and possibility to write procedural code where appropriate. I really love it both as a scripting language and prototyping environment. The bad part is the compiler, the only way to get parallelism was multi-proccess until very recently and the native solution is still immature.
Lisp is awesome for prototyping, but the ad-hoc type systems for it are attrocious to deal with and using a language without strong type system is a suicide in production environments. It is the best choice for one man projects though, if you can keep everything in your head.
Haskell will really force you to change your perspective, so i'd suggest starting with it. But in production, impure code is just faster to write, easier to read for non-experts and, most of the time more performant. We use it a lot in fintech in yuropoor and write critical parts in C++.
>>62249215
Don't you use python or R for prototyping? I didn't know haskell was popular in finance
>>62249243
R and python is mostly used by the lower-tier analysts. Core infrastructure is asm,C++,haskell wherever we can afford it, while prototyping everything in haskell. I think it would be better to replace c++ and haskell with ocaml, but losing 6% on average and having to write more assembly isn't really appealing to management. Having formal verification pretty much for free with coq didn't convince them either.
>>62249326
Are you a developer or a researcher?
what parts of the infrastructure do you use assembly for?
>>62247934
I would say the main difference lies in lazy vs. eager evaluation (although both languages can do both and Haskell doesn't actually have lazy evaluation, but one that behaves like lazy evaluation). I think that's the main cause behind their purity and impurity. OCaml has great module system, but lacks type classes (imagine no overloading). OOP in OCaml is just for a show, because (as I heard) back in those times OOP was all the rage and every new language had to mention OOP just to be considered relevant.
I think that if you want to learn the essence of functional programming, you should check Haskell at some point, but I wouldn't suggest going for it first. It might be confusing when you meet first class functions, type system, algebraic data types, laziness and type classes all at once (and 3 of those are so fundamental to the language that you can't just learn them one by one).
I would recommend learning OCaml or some Lisp first (perhaps Racket or Scheme) and then going into Haskell. In OCaml you will get to know some type system, in Lisps you'd see some cool macros (although typed Lisps are a thing as well, but I heard that Typed Racket is clunky, dunno about others).
I also think that SICP is something everybody should read at some point (I actually didn't yet), so that's a point for Lisp.
>>62249378
Researcher, but we integrate projects into core ourselves. Assembly is used for traders, crawlers (specialized hw, no rtos) and performance-critical parts of analysis. We're also in proccess of migrating our algo library to asm.
>>62249575
do most euro fintech companies organize their infrastructure in the same way, or does it vary wildly?
what's your background if you don't mind the question?
>>62246872
Learn MIT scheme first, then try haskell. Don't be afraid of giving up - haskell is fucking hard to get if you only programmed in ALGOL-like languages until now (that is, C and derivatives).
Scheme will teach you high level programming like no other language in the fucking world will. It's a mind-bending experience, especially when you discover the full power of macros. Also, parentheses are not a meme - there's a huge amount of'em around, so get used to it.
Haskell will teach you a huge amount of the best practices in the high-level programming - so, not talking about the embedded stuff. If you actually get to learn it, it will change your code forever, and you'll be able to see a lot of potential foot-shooting errors long way before you commit them.
/g/ considers it a meme because it's full of underage highschoolers, among which those who're able to """""program""""" are barely able to write a "Hello World" in javascript.
t. professional lisp programmer
>>62249733
>professional lisp programmer
How?
>>62249647
No idea about other companies, straight out of academia.
Applied math PhD from a top uni, was collaborating with the company since undergrad and did both my theses there.
>>62249834
thanks for the info.
There is a lot more info for learning F# than there is for Ocaml
https://app.pluralsight.com/library/courses/fsharp-fundamentals
https://app.pluralsight.com/library/courses/accessing-data-fsharp-type-providers
https://app.pluralsight.com/library/courses/fsharp-functional-data-structures
https://app.pluralsight.com/library/courses/fsintro
https://app.pluralsight.com/library/courses/fsharp-jumpstart
https://app.pluralsight.com/library/courses/functional-architecture-fsharp
https://app.pluralsight.com/library/courses/fsharp-type-driven-development
https://app.pluralsight.com/library/courses/fsharp-unit-testing
https://app.pluralsight.com/library/courses/fsharp-test-driven-development
https://app.pluralsight.com/library/courses/building-f-sharp-type-providers
https://app.pluralsight.com/library/courses/fsharp-property-based-testing-introduction
>>62249983
Because ocaml is mostly used by academics where you're expected to learn it yourself. F# is pretty cool though.
>>62249834
>top uni
UK?
>>62250034
eth, my oxford cucklord
>>62250059
What are the main target universities in Europe that you know of? Getting in a graduate program at Oxbridge is fucking hard m8
>>62249763
I accidentally found it on a jobs offering site... Lucky me, I guess
>>62249983
OCaml is used a lot by the french universities, so if you know the language you'll find quite a lot of material as well
>>62250095
Eth, polytechnique, lomontsov, edinburgh, charle's in prague. They all offer top-notch applied math programme. Èns if you want to be pure and instantly hired. Don't expect getting into any of these to be easier though, competition is very tough (especially at eth).
>>62250280
And am I definitely fucked if I didn't get accepted into any of those? I'm doing a math bachelor's right now, my grades are good, but as you said, the competition is tough.
>>62250327
it depends on what's your goal is. If all you want is to be able to show off a piece of paper from a fancy university in front of your GF's father then maybe you're fucked.
But, for the rest, it's all about unis' prestige. What really counts is your ability to study and deliver shit on time; if you do - you won't pass unnoticed. I've seen people from my shit thirdwordland going to work as researchers at google, and ivy leagues' grads working as shitty frontend webdevs. Just do your best, man
>>62250454
I just want to do research in fintech. I'm doing my best, hopefully it'll be enough.
What is a good gui for Haskell? Straight XML? I'd like to avoid autistic microscopic open source projects & work with something I'm familiar with that might be transferable to getting hired by Debbie in HR.
>>62250327
Not definitely fucked, but you made achieving your goal harder. If you're good, you will do good research and you will be almost as attractive as the oxbro. Try to keep straight A, while participating in research (machine learning gets you hired easily these days). Try to get an internship in some quant firm, do your thesis with them, just shove yourself in their faces. Never skip lingebra, anal or topo, be the best in class.
>>62246872
No functional programming is a fucking meme, useless , there is a no fucking important software made on that shitty paradigm.
>>62250607
Isn't machine learning just fancy statistics? I was planning on studying probability at the graduate level.
>>62250693
"Data science" aka big data aka business intelligence aka fancy statistics is just one application of machine learning.
We use it for feature detection in image recognition software and have created a computer-aided diagnostic tool for doctors to identify polyps inside intestines.
Machine learning is also frequently being applied on other domains as well, such as intelligent networks where you can adapt routing policies and traffic engineering strategies based on an understanding of the type of traffic in the network.
>>62250693
Not really. Most people look at it as lingebra, but you can look at it as knot theory and there's a lot of missed opportunity there thanks to CS people hating math.
Probability is a safe choice if you want to work in fintech.
>>62250750
I own Norvig's book, is it a good introduction to general ML?
>>62250768
>Probability is a safe choice
I read most important positions in fintech were filled by pure math people, mostly due to how difficult it was to finish a PhD. Is that true?
>>62250693
depends on the approach there is:
>statistical machine learning
>neural network based (mostly like fucking newton method but on multidimensional ) but there are nice fast methods for clustering
>genetic algoritms (basically bruteforcing)
>>62250833
>I own Norvig's book, is it a good introduction to general ML?
No, dont read books, download tons of frameworks and play with datasets, books are filled with crap or vomit in the form of equations teaching nothing practical.
>>62250833
>I own Norvig's book, is it a good introduction to general ML?
Haven't read it, so I have no idea. I guess just installing tensorflow and getting started with the tutorial would be a great initial intro to ML in general, and then you could move on to theory once you have the basics there covered.
>>62250852
>>62250881
Thanks.
>>62250280
Èns?
>>62251068
Ecole normale superieure
Probably the hardest university to get into in Europe by far
>>62251100
That's what I thought. But it's ENS or ÉNS but not ÈNS.
And no, it's hard to have job with that school (it's a school, not an university) because people don't know what is it. We're rare, and until people see one of us, they don't know what we're capable.
>>62251162
The people who matter know what ENS is though.
Are you a student there?
>>62251256
yes i do.
>>62250833
ML books are attrocius because they're written by CS folks, not mathematicians. What you get is hand-wavy explanations instead of rigorous proofs, moreover this all is burried under fuckton of buzzwords (CS people are good at those). Learn ML by building your own mathematical models of it, and as for practice, use some bullshit framework no one ever uses in fintech, like tensorflow.
Here in yuropoor, applied PhD are the most sought after in fintech, pure PhDs are very rare because p-adic teichmuller theory rarely finds application in fintech. Pures are hired based on their research focus and if it's not applicable, too bad.
>>62251162
Yeah i get confused by the è/é. We have slavs in team so i see both of these, can't really distinguish them. And no, it's not hard to get work. It's that most éns grads stay in academia by choice. The occasional éns grad that goes to commerce gets usually stolen by rentech, but we have 2 of our own. They're not that special, russians beat them honestly in every way.
>>62251256
Yes.That's what I understand, but it took me time tp understand that I must knock on tge right doors.
No. Now I do OCaml for living.
Stop. None of this well help you in a real job.
Has anyone here had any experience with Clojure? I come from Java background and this got my attention since I also wanted to check out functional programming. Don't have many hours put into it yet though.
>>62251270
How did you get in (I'm assuming Ulm)?
>>62251332
>Has anyone here had any experience with Clojure?
Yes, as autistic as Lisp, unmaintainable code and for alone workers.
>>62246872
Start with Haskell. The Lipovaca's book is very light and you can read it in a week or so.
>>62251332
Clojure is a Lisp. Like has been said before, Lisp is its own thing and good in its own right but not really FP.
>>62251282
Is ML knowledge still valued by employers if one doesn't have a degree related to it? Would a few github projects be enough to show I know what I'm doing?
Are there other sought after PhDs aside from probability and statistics?
>>62246872
I haven't learnt any functional language yet but my reasearch says OCaml
>>62246872
Drop everything right now and join the F# MASTER RACE
>>62251466
Not valuable per se, only as supplement to your degree. But it is valuable for undergrad looking for internship. If those github projects were preprints of some research or you are an undergrad looking for internship, then yes. Analysis, topology, model theory, theoretical physics are all pretty common here.
>>62251665
Thank you.
If you've done C#, it will be easy for you to pick up F#
After that you can move towards OCaml or Haskell
>>62250852
can you post some examples of what you're thinking of? just bullet points. How did you overcome the mathgrinder. Sometimes when I'm sitting in front of problems it's really frustating, and I don't know how to tackle it
>>62249326
got any good resources for learning asm?
>>62252384
Reverse engineering. Start by compiling simple C programs and see the assembly (without optimizations, then with). Agner Fog has a great resource on asm, but it's restricted to x86 afaik, there are latencies of each instruction a cpu supports, cache miss latencies, prefetching strategies and everything you would ever want to know. When you're comfortable with that, buy some cheap atmel and eeprom and do some stuff with it. A toy car that avoids obstacles, door lock that unlocks on certain rhythm, anything really. Ifyou don't want to do hw, demos are pretty cool passtime.
>>62253098
>Start by compiling simple C programs and see the assembly (without optimizations, then with).
this always struck me as very bizarre advice considering how many abstractions modern operating systems bring
>>62253098
>it's restricted to x86
Which one do you use? I thought x86 and ARM were the most common by far
>>62253118
It's important to have quick feedback when learning. This way you play with C, which you presumably already know and see how the asm changes. That's how i learned, ymmv.
>>62253131
x86, itanium, power but we're migrating to asics. It helps knowing what's out there, so unless you're sure you won't need it, learning other architectures is beneficial.
Quant anon if you're still here what are the most important languages to know for research positions, and to what level of proficiency?
>>62250640
Every major telecom runs Erlang and has since the 70's.
>>62254151
Does that have anything to do with Erlang's functional capabilities though?
>>62254760
Not really. It was designed by a telecom company, for telecom companies, so it's very reliable and has great concurrency.
>>62246872
Learn Idris. Taste the dependent types.
>>62248989
Not in the case of Rust. Probably because it *is* a functional language in imperative clothes.
It's just systems OCaml once you start looking into it.
>>62255532
The problem with Idris is that it has no community and no application in industry.
If you want to see what pure FP is like, Haskell is better.
>>62255706
It is building a nice community and it has more potential for industry use than Haskell, since it's not lazy and has far fewer hacks and gotchas.
t. writing unreleased bizshit in Idris
>>62255720
>it has more potential for industry use than Haskell
Haskell was adopted first by academia and research, it's likely to stay that way unless Idris proves to be much more profitable, which probably won't be the case. For anything involving math, at least.
Languages like Idris can be interesting though, I'm not saying you shouldn't check them out.
>>62246872
Scheme is by far the best language among the ones you mentioned. Once you get comfortable with it, move to Common Lisp.
>>62255986
clisp is a clusterfuck and encourages procedural programming
What about pic related?
>>62256069
Don't you need to learn Java first?
>>62256105
Who doesn't know Java? You don't have to like it but everyone hoping to be employed outside of web-dev should know it
>>62256025
It does not.
>>62256123
>should know it
Why? I already know C++. You don't need Java to get a job
>>62256069
A complete and bloated mess, stay away from it.
Is LYAHFGG good or is it outdated?
>>62256123
Java is designed for idiots by non-idiots, so a non-idiot honestly could pick it up on the fly if they have necessary experience.
>>62256188
>>62256209
Well, Java or C++ for OOP experience
>>62256203
>complete and bloated mess
You mean great libraries and community support right?
>>62256303
Yeah I don't see why I should learn Java when C++ already does everything I need and has OOP. I don't want a Java job, and industries that do mission critical shit where software needs performance generally use C or C++ anyway.
You should learn them but not for the reason most will say. Functional programming languages turn your programming problem into a more interesting puzzle. It gives you expressiveness to think about the perfect beautiful abstraction. This distracts you from the fact you are writing the billionth ecommerce backend for some overly ambitious "entrepreneur". It keeps you from wanting to blow your brains out.
>>62256383
Knowing FP makes you a more competent programmer, too.
>>62254760
Yes. It is so reliable because of its functional capabilities.
>>62255489
The reliability of Erlang comes down to its atomic structure and immutable data, both of which are due to its functional nature. It is certainly possible that the language could achieve this without being a functional language but it would certainly be much more difficult to implement.
>>62256517
How?
Hey OP,
go to old book thread on lainchan and download the little schemer series and the little mler
trust me scheme is amazingly fun you cant go wrong with either either save a language like ocaml or sml for later
>>62249215
OCaml is great as long as don't any need libraries. In terms of libraries it is far behind Haskell, Scala and even its own clone, F#.
>>62249015
What the hell?
>>62249215
>using a language without strong type system is a suicide in production environments.
This is clearly a counterfactual claim. Million-dollar companies have been built on unityped code. Erlang is proof that while static typing is nice, other things are more important to reliability.
>>62247934
weakness? unless you're going for the superficial "wtf parentheses" i don't see wgt
>>62246872
If you have little to no programming experience then SICP is the best option. If you do have programming experience then ML for the Working Programmer is the better book. The latter book is more difficult than the former but will give you a deeper understanding of functional data structures and lazy evaluation than SICP or any Haskell book. Standard ML itself isn't really worth using anymore but once you know it Haskell and OCaml will both be trivial to learn.