10 ms·
At the risk of sounding inflammatory... I would be willing to believe that purely functional languages are the "one true way" if there were even the slightest b
by ryandvm 12y ago
At the risk of sounding inflammatory... I would be willing to believe that purely functional languages are the "one true way" if there were even the slightest bit of empirical evidence to support it. But where are all the successful large scale projects built with Haskell (or Clojure or whatever)?
The biggest FP project I was aware of was Twitter using Scala and they ended up completely backing away from it. Yikes.
The only other popular site that springs to mind is Hacker News, and frankly, it sucks. It's practically the Hello World of discussion forums.
The truth is, at the end of the day almost everything is being built with Java, Python, Ruby, or JavaScript. Can you really blame the product owners for being wary of writing their whole product in a functional language?
- jonnybgood 12y agoClojure Success Stories http://cognitect.com/clojure#successstories http://cognitect.com/clojure#successstories
- nothrabannosir 12y agoThat may be survivor's bias, though. How many software products end up not making it, at all? If you look at all software projects, everywhere, combined, and split them up: functional vs non-functional. The latter group would several orders of magnitude larger than the former. Now what percentage of the non-functional ones ends up becoming successful enough for you to hear about them and know what they were built with? Apply that percentage to the functional projects, you might just be left with naught. I have a feeling that if there's one thing more rare than functional programs, it's highly successful ones.
- rdtsc 12y ago> But where are all the successful large scale projects built with Haskell (or Clojure or whatever)? How about Erlang. Let's try it, just from the top of my head: * AXD 301 Switch -- Classic. Powers and control phone switch networks of whole countries. Claims 99.9999999% reliability. * Basho Riak -- popular NoSQL database, highly scalable nodes are peers * RabbitMQ -- popular message queue used by enterprises * WhatsApp -- messaging application, processes billions of messages a day. Built and maintained by only a few engineers. Sold for billions of dollars. * Klarna -- European payment processing * Bet365 -- Sports bets * Stock trading -- Allegedly Goldman Sachs uses it. * Erlyvideo.org -- Video streaming service * eNodeB -- Ericsson cell to internet gateway. There is a 50% if you want to look at cat pictures from your smartphone and Erlang breaks, you won't see your cat pictures. * Wings3D -- A subdivision 3D modeler. I guess you can build your 3D cat and then send it over WhatsApp via a eNodeB to your friend. Those are just I know of. So there you go. Maybe you should learn Erlang ;-)
- nilkn 12y agoThrow IRCCloud into that list, my go-to IRC client that I've been using for nearly two years.
- wyclif 12y agoYou don't like irssi?
- nilkn 12y agoThere is what I like to call The IRC Problem, which is that it takes a bit of work to really make IRC into an awesome, persistent chat environment. First, you need to be persistently connected so that you don't miss messages when you're not actually at your computer. Second, you need a decent interface to use when you are actively reading or chatting. Third, it would be great to have the same across all devices (phone, tablet, laptop/desktop), with everything syncing correctly. If you read some scrollback on your phone, you want your laptop to also know that you already read those messages, and vice versa. It's certainly possible to achieve all this with irssi and a combination of other techniques. However, you can also use something like IRCCloud and get every problem solved at a very high level of competence immediately, plus a bunch of other stuff (like push notifications and embedded social media, images, videos, tweets, pastebins, etc.). It's up to you. For me, I really just want everything to work and I don't care at all about doing it myself. It's a means to an end. The $5/month fee is not important to me given the product quality. I sort of liken it to Dropbox -- it's not about doing something that couldn't be done before, it's about just making it streamlined for those who don't care to do it themselves.
- jordigh 12y ago> First, you need to be persistently connected so that you don't miss messages when you're not actually at your computer. I consider that a feature of IRC myself. I don't need to be wired in at all times and read eveerything everyone says. If I'm not there, I'm not there, and if there's something important I really need to hear, I'll hear it when I'm there. If I don't hear it, it never was important. There is memoserv in many IRC networks that does relay messages when you come back online. I have seldom had important messages relayed that way either. Most conversations are not that important. I don't see IRC as something that should follow me everywhere across all devices. It's like radio or TV. Turn it on, turn it off. Not on all the time.
- hibikir 12y agoI'd like to think that the Erlang has proven its value at building reliable, distributed applications. It's a go to language for distributed key value stores (Riak, Couch, et al), and it's in wide use in Motorola and Ericsson to build critical infrastructure. I call that successful. That said, you do have a valid point: The presentation provides justifications for those that want to switch in the first place, but to be compelling, it needs evidence.
- gooseyard 12y agoI work in Erlang and love it, but I would make the friendly argument that Erlang is really distinct (and special) even among the FP languages for a number of reasons. I always had the impression that Erlang was functional to support the guarantees made by the runtime rather than for ideological reasons. Some of the Functionistas I've run into seem to reject it out of hand for not being Haskell, but as a C guy I find it freaking amazing for writing stuff that has to stay running all the time. I guess I use in spite of it being functional rather than because of it, but it feels like I'm getting good value even when I run into things that are a pain in the ass to do functionally (which is not super often).
- whateveracct 12y agoApache Spark is written in Scala. Whitepages is also Scala. That's off the immediate top of my head.
- hayksaakian 12y agoWhatsApp was built on Erlang
- dustingetz 12y ago> Twitter using Scala and they ended up completely backing away from it. Yikes. What are you talking about, I just searched and found zero supporting sources
- whateveracct 12y agoI've seen people say this but never any real source. Maybe they're mixing up Twitter and Linkedin?
- unclesaamm 12y agoCan you people not google? I just typed "twitter scala" and got the following results on the first page: https://www.redfin.com/devblog/2010/05/how_and_why_twitter_uses_scala.html#.VR8aM_kgxP0 https://www.redfin.com/devblog/2010/05/how_and_why_twitter_u... http://readwrite.com/2011/07/06/twitter-java-scala http://readwrite.com/2011/07/06/twitter-java-scala http://www.slideshare.net/al3x/the-how-and-why-of-scala-at-twitter http://www.slideshare.net/al3x/the-how-and-why-of-scala-at-t... https://github.com/twitter/effectivescala https://github.com/twitter/effectivescala
- Elepsis 12y agoNone of the links you just shared have any mention of Twitter moving away from Scala, which is presumably the question.
- wbillingsley 12y agoI suspect he means Yammer, not Twitter, perhaps from this: https://gist.github.com/anonymous/1406238 https://gist.github.com/anonymous/1406238
- coolsunglasses 12y agoScala isn't a good language for FP at all. http://www.quora.com/Reviews-of-Functional-Programming-in-Scala-2014-book?share=1 http://www.quora.com/Reviews-of-Functional-Programming-in-Sc...
- whateveracct 12y agoSure maybe it's not good for FP if you're Edward Kmett. > The reason, I'm hesitant to give it a fifth star is ultimately that I don't believe that Scala is a good language in which to actually do functional programming. Literally the only other mainstream language that he would be able to say is capable of "fp" better than Scala would be Haskell.
- tel 12y agoOCaml, if that passes your "mainstream" test.
- whateveracct 12y agoSince OCaml doesn't have first-class higher-kinded types in the way Scala and Haskell do, I didn't think it would be acceptable by ekmett standards.
- tel 12y agoThat's probably fair.
- frowaway001 12y agoAt least people use it, which is more than what could ever be said about Haskell, so it had a larger impact overall ... while getting things done at the same time. You only need to have one look at it's module system/Cabal/Hackage to see that it was never intended for larger code bases than people's PhD thesis. Yes, it can scale: In the same way PHP and JavaScript does.
- stonemetal 12y agoThe who uses OCaml page is pretty impressive. https://ocaml.org/learn/companies.html https://ocaml.org/learn/companies.html Looks like it is mostly used for compilers, cryptography, and risk assessment.
- amirmc 12y agoBe careful what you mean by 'mostly'. Though there may be many small outfits that use it for this particular features, there are others that use it very differently (and at completely different scales). Examples such as Facebook, Jane Street and Esper come to mind. There are likely many other companies who have less of a web-presence too (cf defence industries, as mentioned in the slide deck).
- pakled_engineer 12y agoLisp, Haskell and other FP are currently killing it in the quiet world of DSLs, especially Mining, Oil & Gas industries which need to parse petaflops of seismic data and reservoir simulations, need rapid prototyping, need formally verified drilling platform components that field engineers can interact with easily, and HPC algorithms for financial trading. As for Hacker News UX I wish every site was this simple instead of popups everywhere to get me to download their phone app, piles of slow loading fonts, trackers, generic stock images of business suits pointing at a screen, information buried underneath annoying popup FAQ screens, ect.
- kevinnk 12y agoDo you have a link for the Oil & Gas DSL? A search for "Haskell oil gas dsl" didn't turn up much.
- pakled_engineer 12y agoI work for a stealth mode startup that writes DSLs in Haskell and Scheme for the O&G industry. We aren't the only outfits doing this https://angel.co/tachyus/jobs/26411-junior-software-engineer https://angel.co/tachyus/jobs/26411-junior-software-engineer
- mbesto 12y ago> Java, Python, Ruby, or JavaScript You mean .NET, PHP, and Java?[0] [0] - http://trends.builtwith.com/framework http://trends.builtwith.com/framework ps - For the record, I'm a rails/js guy
- leoh 12y agoStrange -- django doesn't even register on the list
- jaggederest 12y agoWordpress runs on PHP, therefore a majority of the internet is PHP, that's the whole story right there.
- seanwilson 12y agoI would use strongly typed functional programming languages for everything if I could. However, to be productive, you're usually constrained by what the dominant language is for your domain. For example, Android apps are usually written in Java and web apps are usually written in JavaScript. Each has a huge ecosystem of tools and libraries based around these languages. I'm sure there's some way I could use Haskell or OCaml to write Android and web apps. However, by going against the grain, it's likely to be very time consuming and frustrating to integrate with existing libraries and tools. I'm therefore going to lose any advantage I was hoping to gain from using a functional language.
- mightybyte 12y ago> I'm sure there's some way I could use Haskell or OCaml to write Android and web apps. I don't know about Android, but for Javascript apps the balance tipped for me just last month. I'm probably enough of an insider that it's not quite true yet for the average Haskell developer, but I believe that will change soon.
- seanwilson 12y agoWhat framework are you using? I've investigated Dart, Flow and TypeScript to improve static checking but I'm still having pain points: they work fine when dealing with your own self-contained code but integrating with third party libraries isn't always straightforward.
- mightybyte 12y agoI'm using GHCJS and Reflex. Reflex is a recently released FRP library that makes a huge difference in one's ability to abstract GUI code. I personally feel that this combination of GHCJS + Reflex is the first thing I've used that makes web front end programming tolerable. A week ago there was a presentation about it at the NY Haskell Meetup. Look for videos of it to be posted early next week.
- seanmcdirmid 12y ago
- mightybyte 12y ago> The truth is, at the end of the day almost everything is being built with Java, Python, Ruby, or JavaScript. You need to normalize against the number of programmers writing in Java/Python/... compared to the number of programmers writing Haskell for this assertion to be meaningful. And when you do that, the picture starts to look a lot better. In the past few years I have seen more and more people start writing real projects in Haskell and be successful. There was a presentation a couple years ago at CUFP [1] discussing one company's experience porting a 43k line Groovy app to 8200 lines of Haskell. You don't need someone to build a highly visible multi-million line piece of software in Haskell to be confident that it can benefit your project. I think there's enough evidence out there today to make a very compelling case. [1] https://www.youtube.com/watch?v=BveDrw9CwEg#t=1207 https://www.youtube.com/watch?v=BveDrw9CwEg#t=1207
- michaelochurch 12y agoBut where are all the successful large scale projects built with Haskell (or Clojure or whatever)? Standard Chartered has a huge amount of infrastructure in Haskell. Clojure's too young to have the types of stories you're looking for, but it's had plenty of moderate-sized successes (as has Haskell). The biggest FP project I was aware of was Twitter using Scala and they ended up completely backing away from it. Yikes. Scala is different from Haskell. Scala has a lot of features that don't play well together, it has stability issues, and it has inherited some of the Java culture which means that there's a lot of terrible Scala code out there. I've been working with Spark over the past month and I'm shocked by how bad the JVM/Hadoop legacy is. Spark itself is a neat idea. Getting it to work on an actual production cluster is a huge PITA. I'm tempted to just use Cloud Haskell. I know people who've moved away from Scala (either to Java or Clojure or Haskell). No one who's moved to Haskell has ever regretted it. I know of about 15 companies that use it (not all on million-line projects) and they're all happy with it. I'm only aware of one case, in the past 7 years, where a company moved away from using Haskell: they moved to F# because they picked Microsoft up as a client and MSFT wanted to be able to say that $COMPANY_X was using their products. The only other popular site that springs to mind is Hacker News, and frankly, it sucks. It's practically the Hello World of discussion forums. It's written in Arc, which lost to Clojure. Also, HN is as good as it needs to be. It's successful on its own terms. It doesn't need to be a wonder of software engineering.
- kyllo 12y agoHN is as good as it needs to be It will be once it gets a decent mobile view akin to viewing reddit on /.compact. Anyway, good point--I've heard people complain that Haskell is hard to learn/understand, but I've never heard of anyone actually using it in production and regretting that decision.
- virtualwhys 12y ago> The biggest FP project I was aware of was Twitter using Scala and they ended up completely backing away from it. Yikes. You must be joking, Twitter is far and away the largest Scala shop in the world. Presumably you're mixing up LinkedIn's recent move from Scala to Java. An important caveat is that they're still using the Play framework (Typesafe product), just now in Java instead of Scala. It's unfortunate that Play serves two masters (i.e. Scala and Java), but industry demands it -- the argument that FP is the one true way goes out the window in face of current reality: enterprise by and large will go with mature tooling and cheap developers in a large-team-friendly language like Java over a paradigm shifting FP language like Scala, Clojure, or Haskell.
- gclaramunt 12y agoWell, Twitter didn't backed away from Scala, but it doesn't qualify as purely functional. Turing completeness ensures there's no "true way", but some languages offer better abstractions than others. In my experience, once you learn the abstractions, the functional paradigm has an edge about the ability to reason about the code. Of course, the adoption of new ideas and technologies takes time, they need to be explored and fully developed. But even right now, you see many mainstream languages adopting functional flavors. I believe that eventually, there will be enough successful large scale projects build with pure functional languages to convince skeptics, there's nothing wrong with "playing it safe" and wait. If Scala is good enough as an example, I see an increasing adoption. As an anecdote, one of the biggest and Very Serious(tm) investment bank, is using Scala for most of their new initiatives, with a big team spread across the world. And the language itself was selected by a committee. You can't get more serious than that...