tag:blogger.com,1999:blog-1777990983847811806.post4051492192835556121..comments2024-03-16T16:29:29.582-07:00Comments on Haskell for all: An all-atom protein search engine powered by HaskellGabriella Gonzalezhttp://www.blogger.com/profile/01917800488530923694noreply@blogger.comBlogger12125tag:blogger.com,1999:blog-1777990983847811806.post-71023277204879276302014-04-19T13:38:59.813-07:002014-04-19T13:38:59.813-07:00Actually, I do think Haskell is the holy grail of ...Actually, I do think Haskell is the holy grail of programming! I have to be the biggest Haskell fanboy ever. :)<br /><br />However, I think the best way to promote a language is to be honest about its shortcomings as much as its advantages so that people evaluating the language feel like they are making an informed decision.<br /><br />It's definitely a completely different way of thinking about programs, both in terms of their data structures, algorithms, and control flow and I think it's inevitable that people will think in the more mathematical style of Haskell as programming evolves. It feels like a really exciting time to be a programmer in general, seeing theory and practice intersect in such a big way.Gabriella Gonzalezhttps://www.blogger.com/profile/01917800488530923694noreply@blogger.comtag:blogger.com,1999:blog-1777990983847811806.post-89593231660740843332014-04-19T11:47:08.515-07:002014-04-19T11:47:08.515-07:00I can approve that your writing skills really make...I can approve that your writing skills really make the difference for me to understand all the things you do in haskell. I enjoy your writing style even when i did not find the topic itself interesting at first. My expectations change when i see how haskell with it pro's and con's help to improve algorithmic understanding of complex problems and transport them into to a working codebase in really fast turnaround times. This feels amazing and i did not encounter this in any other language and writings in other blogs. So this is probably owed to your writing style and haskell together.<br /><br />For me this shows that thinking differently is the best way to evolve decisively. To overcome the problems that you have found and others that exist will be solved faster when more people find their way into haskell.<br /><br />But still you don't treat haskell as the holy grail of programming. And yet i have the feeling that functional languages will be a big part of the future that is ahead of the it industry. So its also fun to get into it and trying to be a part of it.Craycronehttps://www.blogger.com/profile/09527352052477165558noreply@blogger.comtag:blogger.com,1999:blog-1777990983847811806.post-85846002590747549512013-10-16T16:30:28.359-07:002013-10-16T16:30:28.359-07:00The main reason why it is hard to sell functional ...The main reason why it is hard to sell functional programming to researchers is that functional programming shines most on large projects with lots of moving parts, but researchers rarely build large projects. It's sort of a chicken-and-egg problem: in my the languages they prefer to use (i.e. Matlab, Python and Perl) limit them to simple programming projects, so they only ask questions that can be solved by simple programming projects. This gives them the false impression that these languages answer all the questions they are interested in asking.<br /><br />For example, before I wrote this search engine the kind of question my professor would think to ask the programmers in our lab was "how often do you see an aspartate binding to two backbone amides in a particular configuration". This would usually take the programmers in the lab days to write up the relevant script and compute the result, so he never dreamed of asking anything harder than that. After writing scripts like these for a while I just stopped and said "Why don't I just write a search engine so he can interactively do these searches himself?" Once I wrote the search engine this immediately raised the bar and he started asking more powerful questions like "How can I build a binding site using this tool?"<br /><br />So if you really want to sell researchers on functional programming, you don't want to waste your time showing them how to keep asking their old and simple questions using functional languages. Instead, you want to show them how functional languages allow you to ask more powerful and challenging research questions.<br /><br />Now, regarding the other way around (explaining your research to Haskell programmers), that just takes practice explaining your research in a simplified way. Just pretend that you are explaining your research to somebody in your family who is not a scientists. I also find that blogging on a regular basis greatly improved my writing skills. Regularly writing and getting feedback from your readers gives you a better sense of what things they might find interesting about your own research.Gabriella Gonzalezhttps://www.blogger.com/profile/01917800488530923694noreply@blogger.comtag:blogger.com,1999:blog-1777990983847811806.post-80087419293783095332013-10-16T15:38:56.688-07:002013-10-16T15:38:56.688-07:00Great Job!! I'm working in a package for doing...Great Job!! I'm working in a package for doing ab-initio simulations and molecular dynamics in Haskell, but I work in no man's land, physicists and chemists barely known what functional programming is, and I have found myself in great trouble to explain quantum chemistry to the Haskell community. You have managed to integrate both worlds, could you please share your experience about trying to join both fields?Anonymoushttps://www.blogger.com/profile/15894757993840154875noreply@blogger.comtag:blogger.com,1999:blog-1777990983847811806.post-74237652755594743252013-10-14T09:10:18.564-07:002013-10-14T09:10:18.564-07:00I'll begin working on the book once I graduate...I'll begin working on the book once I graduate.Gabriella Gonzalezhttps://www.blogger.com/profile/01917800488530923694noreply@blogger.comtag:blogger.com,1999:blog-1777990983847811806.post-8162774364453170412013-10-14T00:11:08.118-07:002013-10-14T00:11:08.118-07:00Awesome (i'm yet waiting for your book :D)Awesome (i'm yet waiting for your book :D)salfumanhttps://www.blogger.com/profile/01740371957443086720noreply@blogger.comtag:blogger.com,1999:blog-1777990983847811806.post-73684245499101967732013-10-13T09:23:40.600-07:002013-10-13T09:23:40.600-07:00Thank you!Thank you!Gabriella Gonzalezhttps://www.blogger.com/profile/01917800488530923694noreply@blogger.comtag:blogger.com,1999:blog-1777990983847811806.post-45222678821923365752013-10-13T09:23:06.250-07:002013-10-13T09:23:06.250-07:00I started the Haskell version in January 2012. I ...I started the Haskell version in January 2012. I did it off and on until about Fall 2012 when I felt that I finally understood how to write a complete Haskell application. What helped a lot was that I also do a lot of scripting for my lab (mainly a bunch of parsing and formatting of instrument data and also processing order requisitions for the lab) and I would make a point of writing all these scripts exclusively in Haskell.<br /><br />The original C algorithm for search was just a recursive backtracking search over entire protein structures. A variation on it still lives on within the Haskell code as the very last search stage (after all other optimizations have been applied). You can find it here:<br /><br />https://github.com/Gabriel439/suns-search/blob/master/src/Correspond.hs<br /><br />The equivalent C code was much larger than that (maybe 30x larger?, I don't have the code with me at the moment). They're not exactly the same, but still basically the same idea: a recursive depth-first search.<br /><br />The real optimizations occur before even getting to that point. I set up a forward index that narrows down the search results a lot and I also organize the data along motifs instead of arbitrary atom configurations, which means I can cache a lot of useful data and just look it up in memory. These are what ended up giving the biggest performance gains. Then when it gets to the actual recursive depth-first search it's only searching a very small subset of the data that has a very high chance of matching.Gabriella Gonzalezhttps://www.blogger.com/profile/01917800488530923694noreply@blogger.comtag:blogger.com,1999:blog-1777990983847811806.post-9123564457611820152013-10-13T08:16:43.346-07:002013-10-13T08:16:43.346-07:00Great overview, and also list of strengths and (cu...Great overview, and also list of strengths and (current) weaknesses of Haskell. Also amazing your contributions to address those weaknesses!houshuanghttps://www.blogger.com/profile/14242505785514771104noreply@blogger.comtag:blogger.com,1999:blog-1777990983847811806.post-36681180488920431622013-10-13T04:25:22.932-07:002013-10-13T04:25:22.932-07:00Nice! So, when have you started to implement this ...Nice! So, when have you started to implement this project in Haskell?<br /><br />I'm also curious about the algorithmic part of your work. How have your Haskell algorithms changed compared to the ones you used in C?Jan Stolarekhttp://lambda.jstolarek.com/noreply@blogger.comtag:blogger.com,1999:blog-1777990983847811806.post-18758592783383960792013-10-12T17:33:55.986-07:002013-10-12T17:33:55.986-07:00You're welcome! Feel free to ask me any quest...You're welcome! Feel free to ask me any questions if you have any.Gabriella Gonzalezhttps://www.blogger.com/profile/01917800488530923694noreply@blogger.comtag:blogger.com,1999:blog-1777990983847811806.post-90065101114588382192013-10-12T17:33:02.500-07:002013-10-12T17:33:02.500-07:00Thanks for open-sourcing you code. I'll be st...Thanks for open-sourcing you code. I'll be studying it to help me learn Haskell.haroldcarrhttps://www.blogger.com/profile/09763473450957698221noreply@blogger.com