• Subscribe

Mind tools: Programming languages and scientific practice

Speed read
  • Researchers investigate the impact that programming languages have on the direction of science.
  • Project extends Sapir-Whorf hypothesis to computer science domain.
  • Open source code repositories form base of ambitious study.

For decades, fierce debates have raged over the comparative benefits of programming languages.

Waged at times with religious fervor by computer scientists and programmers, these debates tend to rely on anecdotal evidence, with very little rigorous comparison of programming approaches or the larger question of how software may augment human thinking.

But now, researchers from Knowledge Lab at the University of Chicago and the University of Wisconsin-Madison department of psychology will tackle these disputed questions. The new research project will focus on how different programming tools work with our minds to shape the scientific process.

<strong> Say what?</strong> If the Sapir-Whorf hypothesis is correct, languages differ in the direction they send their speakers. Does the same apply to computing languages? Courtesy Duncan Hull. <a href= 'https://creativecommons.org/licenses/by/2.0/legalcode'>(CC BY 2.0)</a>

“The idea is to examine the way in which computer languages can both expand and limit how individual and collective minds work,” says James Evans, director of the Knowledge Lab.“We’re trying to figure out how human minds respond to different functions and different domains, both in programming languages and in popular data science environments.”

The idea that learning and using certain computer languages can influence how people solve problems resonates with the famous Sapir–Whorf hypothesis. This theory holds that spoken languages differ in psychologically important ways, such that learning the grammar and vocabulary of a language can nudge thinking in certain directions.

The idea was once a taboo subject in psychology and linguistics, but hundreds of studies have now revealed links between human language, cognition, and perception.

But while it is difficult or impossible to establish equivalence between natural languages, most computer languages are ‘Turing complete’ — anything that can be expressed in one computer language can be expressed in another.

By understanding and testing these languages, we can figure out what kinds of features end up shaping the way in which people and groups actually think with these mind tools.  ~James Evans

The existence of hundreds of formally equivalent programming languages makes investigating differences in how they support problem-solving and imagination all the more interesting.

“People who in one breath argue that it doesn’t matter which language one uses because they are equivalent, in the next breath sing praises of their favorite language because it is more ‘natural’ than the competition,” says Gary Lupyan, an associate professor of psychology at University of Wisconsin-Madison and a co-investigator on the grant.

The team will start by studying code from online repositories, such as Github and BitBucket, as well as analyzing questions and responses posted on StackExchange.

This massive dataset will be used to reconstruct a ‘natural history’ of programming languages, tracing how often each is used and for what purposes.

Researchers will also measure characteristics for each language, such as efficiency (how quickly it can be used to solve a problem), creativity (how many paths tend toward the same solution), and collaboration (how well the language can be collectively used by a group of programmers instead of a lone coder).<strong>Simply the best? </strong> James Evans of the Knowledge Lab wants to know how computer programming languages direct scientific inquiry. Java vs. C++; Python vs. Ruby; Flask vs. Django — is there an optimal language? Courtesy James Evans.

Based on these observations, the researchers plan to use coding competition sites such as Code Golf and TopCoder to compare how different language communities solve the same challenge, as well as experiments in a controlled programming ‘sandbox’ where coders only have access to specific functions and operators.

Research conclusions may inform the design of new programming languages, coding environments, and coding styles, and will improve understanding of the role of programming and software in science.

More generally, Evans says, the project will not only provide valuable information about what languages or features people should choose in particular contexts, but also insight into how human minds use software ‘prosthetics’ to pursue knowledge.

“By understanding and testing these languages, we can figure out what kinds of features end up shaping the way in which people and groups actually think with these mind tools. Then we can also do the converse and figure out how people and groups think,” Evans says.

“I hope we learn some practical and fundamental things about the nature and limits of human intelligence.”

This research project is funded in part with a $750,000 grant from the Alfred P. Sloan Foundation.

Read the original article from the Computation Institute here.

Join the conversation

Do you have story ideas or something to contribute? Let us know!

Copyright © 2022 Science Node ™  |  Privacy Notice  |  Sitemap

Disclaimer: While Science Node ™ does its best to provide complete and up-to-date information, it does not warrant that the information is error-free and disclaims all liability with respect to results from the use of the information.


We encourage you to republish this article online and in print, it’s free under our creative commons attribution license, but please follow some simple guidelines:
  1. You have to credit our authors.
  2. You have to credit ScienceNode.org — where possible include our logo with a link back to the original article.
  3. You can simply run the first few lines of the article and then add: “Read the full article on ScienceNode.org” containing a link back to the original article.
  4. The easiest way to get the article on your site is to embed the code below.