5 ms·
Does article contain references to any enpirical evidence that particular language features or programming idioms have a benefit? Have you noticed that these a
by jackmott 10y ago
Does article contain references to any enpirical evidence that particular language features or programming idioms have a benefit?
Have you noticed that these articles almost never do?
they have argument from authority and anectdote. Language research is still in the phase of bad humors and blood letting.
- cholantesh 10y ago>Language research is still in the phase of bad humors and blood letting. Love this. Practically all the claims I've seen are just small code samples accompanied by the author's vague endorsement.
- goalieca 10y agoI've seen an number of papers focusing on the mathematical side of things. While I'm not a PL researcher, it does seem to me that math is the universal language and it seems reasonable to focus on that rather than non-sense concepts like objects.
- jackmott 10y agocan you provide empirical evidence to support your theory?
- cholantesh 10y agoHow would we mathematically represent usability?
- goalieca 10y agoBy capturing relations. If we define an algebra it will have certain properties (eg commutative, associative). You don't think twice when writing a physics equation on how to factor, compose, or compute a value. It comes naturally from the rules of algebra. In category theory we might have different categories. Some might instruct the compiler and programmers that the function obeys certain rules when applying. It could be trivial to parallel or perhaps it specifies a strict sequencing for computation. Following Haskell research, you can really see the evolution as people find more useful generalizations (which in the end, has made things simpler!)
- deleted 10y ago[deleted]
- js8 10y agoI know it's just anecdata, but from my experience, Haskell forces me (due to strict control over side effects) to write really short functions. And while that can be harder to do when you're writing the code, it seems to really help readability, testability and reusability. It's not like you cannot write short functions in other languages - you can - but it's often too easy not to do it. It would be nice to have some empirical evidence for this, unfortunately I am not aware of any.
- noelwelsh 10y agoWhat you say is true, but the flip side is that scientific research on programming language effectiveness is a very small field, and it's unlikely the academia will be able to do the large scale studies that are necessary to establish meaningful results. (For example, no sizeable project is going to be built in two different languages just to gather evidence for a research study.) Without rigorous evidence we're left to argue from theoretical models / principles and anecdotal data. This is still useful. It would certainly be more useful to have rigorous empirical results to back up the claims and validate the models but we, as practitioners, have to make decisions on language choice now using the available resources.
- random314 10y ago> Does article contain references to any enpirical evidence that particular language features or programming idioms have a benefit? The kind of empirical evidence you are asking for is extremely expensive to provide. Even if you conduct a massive controlled trial, experiment will have several biases which will invalidate any conclusion. As an exercise try looking for scientific evidence that programming in Java is more efficient than programming in assembly. No scientific evidence for this exists. Yet most of us would never choose to write a web service in assembly! The only evidence that can be provided are discussions and benefits of particular features and anecdotes.
- marcosdumay 10y agoDo you have any empirical evidence that any particular language feature or idiom have a benefit?
- benlambert 10y agoAre you saying that the article is wrong because empirical studies haven't been done on topic? Do you think programming productivity is possible to measure and if so how?
- scriptkiddy 10y agoI'm not the user you're replying to, but I found this question interesting. > Do you think programming productivity is possible to measure and if so how? For the purpose of discussion, I would propose that a team of developers are given a simple task with highly specific and explicit functionality requirements. This team of developers should Ideally have no experience with any of the technologies used. Experience with the problem domain is acceptable. These developers would then be tasked with building out the solution with various different technologies (languages, frameworks, libraries). We then compare the time it took for the developers to complete the task relative to the amount of bugs present in the solution. For example, the team could be tasked to build a gui calendar with Haskell and then Python. The issues with the above proposed experiment are as follows: * We would need to find some way to adjust for problem domain familiarity. The developers are going to get better, and thus more productive, at the task after they have completed it the first time. * We need some sort of concrete numerical measure of "bug likelyness" for lack of a better term. All software has bugs, but some are very hard to find or appear only during runtime under very specific conditions. * We need to decide whether or not we take the language ecosystem into account. In the calendar example I provided above, Python would obviously be more productive because there are a ton of different packages available that make creating a GUI extremely trivial. * Do we take into account time spent on learning the language/tool/package/framework/library? Do we measure the amount of time that it takes the team to feel comfortable working with a new technology? All in all, it's an interesting thought experiment and I'm interested to hear what you think.
- staticassertion 10y agoHave you looked for research? https://sites.google.com/site/stefanhanenberg/ https://sites.google.com/site/stefanhanenberg/ https://link.springer.com/article/10.1007%2Fs10664-013-9289-1 https://link.springer.com/article/10.1007%2Fs10664-013-9289-... The above papers are not about FP but about static type systems (there tends to be lots of crossover), but I think you'll find that what it really comes down to is guarantees provided by a language. I would be surprised if similar research that focused solely on purity did not exist. This is an incredibly difficult area to study. "Better software" is a difficult metric, and even a more meaningful metric is incredibly hard to measure. For a field as young as CS it's no wonder that the research into this is still immature, so we largely have to rely on anecdotal evidence and common sense. So yeah we have some research and we have some basic common sense and we have people demonstrating through their projects that it has worked well for them. More to the authors point - what they are really talking about here is modularization being a benefit to a moving codebase. Their quotes, their 'argument from authority', is mostly about modularization. Their argument is that functional programming lends itself to modularization by limiting state space and focusing on composition.
- mpweiher 10y agoStefan Hanenberg's research has shown productivity increases for dynamic languages, and documentation / learning improvements for static type systems.
- staticassertion 10y agoYeah, there's actually a fair amount of conflicting research in the area. But it's out there.
- barleymash 10y agoWhat style of programming do you typically subscribe to? What empirical evidence led you to that style?