7 ms·
On anthropomorphism in science (1985)
- _rpd 9y ago> (Delivered at The Philosophers’ Lunch, 25 September 1985)
- chickenfries 9y agoI have a coworker who describes everything in a very anthropomorphic and casual way, and their code is excessively imperative: everything is accomplished through conditionals rather than by designing the code in such a way that functions only run on data structures that they support. I would share this with him, but I imagine it would go completely over his head. > The implied abstraction, in which time has disappeared from the picture, is however beyond the computing scientist imbued with the operational approach that the anthropomorphic metaphor induces. In a very real and tragic sense he has a mental block: his anthropomorphic thinking erects an insurmountable barrier between him and the only effective way in which his work can be done well.
- leoscuro 9y agoI was a foreign language specialist in the military. When we were learning a new language, a few of the students hit a wall because they were approaching the material as "analogous to English." You can't think that way with most non-romance languages. I'm now doing sysadmin work, and do a little bit of scripting here and there while working on teaching myself Python and C. Do you have any advice to avoid the kind of anthropomorphic thinking you mentioned your coworker does? The last thing I want to do is learn the "wrong way" and potentially struggle to rethink how to code.
- GuiA 9y agoI've been learning Japanese for a bit over a year now, and while I am still very far away from being happy with my level in the language, I definitely noticed a distinct shift for the better in my understanding of the language and how fast I picked up new grammatical constructs etc when I stopped trying to contrast it to the western languages I already knew. You have to accept that Japanese grammar might have some basic concepts in common with the grammar of western languages (verbs, objects, adjectives, etc) but that really doesn't get you far. (for japanese learners reading this comment, the article that pushed the first domino for me was this one: http://www.guidetojapanese.org/blog/2007/09/03/repeat-after-me-there-is-no-such-thing-as-the-subject/ http://www.guidetojapanese.org/blog/2007/09/03/repeat-after-... ) Regarding your question about programming, I'd encourage you to read both The Little Schemer and Structure and Interpretation of Computer Programs.
- deleted 9y ago[deleted]
- gizmo686 9y agoSpeaking as someone who is studying both linguistics and Japanese, this this type of comment is just cringy to read. In the grand scheme of potential "languages" Japanese and English (as well as all natural human languages; including signed languages) have incredibly similar grammars. It is only when you restrict your view to the range of human languages that Japanese and English start to look incredibly different. With regards to your link. Japanese absolutely has subjects. The question of presisly what -ga marks is a bit more controversial, but calling it a subject marker is a perfectly defensible position. Indeed, having studied linguistics before studying Japanese, I found that thinking of -ga as a subject marker and -wa as a topic marker made the distinction easy for me. The point of this comment is not to say that we should be teaching English-native Japanese students that Japanese does have subjects and -ga marks them. I am not qualified to make that judgement, and my benefit likely came as a result of leveraging my linguistic studies. As others have pointed out, thinking of Japanese as analogous to English is counter-productive for most students. This is despite the fact that Japanese is analogous to English in most cases, including (potentially) cases where seeing the analogy could be counter productive. Returning to the original article; this is a good indication that just because something is wrong does not mean that it is not useful. Anthropomorphizing might not be technically correct, but it could still be a useful tool to help our human brains make sense of the world or subject matter. In the same way that saying "Japanese does not have subjects" might not be technically correct, but it might still be useful.
- opportune 9y agoWhat a needlessly pedantic and condescending reply
- PhasmaFelis 9y ago> Speaking as someone who is studying both linguistics and Japanese, this this type of comment is just cringy to read. In the grand scheme of potential "languages" Japanese and English (as well as all natural human languages; including signed languages) have incredibly similar grammars. It is only when you restrict your view to the range of human languages that Japanese and English start to look incredibly different. That seems like a total non sequitur. Do you also find the expression "like comparing apples to oranges" cringey, since apples and oranges are quite similar when compared to black holes?
- elihu 9y agoI suppose learning a language that forces you to work in a declarative style (such as Haskell) rather than imperative might be enlightening, but if that's not practical you could try using declarative style in C and/or Python. For instance, don't use global mutable variables and whenever possible write functions that take in const arguments and produce some return value without changing the state of anything.
- leoscuro 9y agoI'll definitely check out Haskell, thanks for the input!
- chickenfries 9y agoAnother language I might suggest for exposing yourself to declarative / functional programming is Erlang or Elixir. I've tried to learn Haskell myself but the number of new concepts can be really daunting. Erlang is a little easier to get going with, and exposes you to many similar declarative concepts. http://learnyousomeerlang.com/content http://learnyousomeerlang.com/content
- chickenfries 9y agoI think your language metaphor works here, but I won't try to extend it for fear of misleading you with anthropomorphism :) Anthropomorphized code reads like someone reading off a gigantic checklist that keeps getting longer and longer. Each time a new problem comes up, we solve it by adding another "If A then B" except it's something like this if foo.bar.baz[0][1]['value'] if (foo.bar.baz[0][1]['value'] == 'undocumented business rule') globalVariable = false # why? who knows else globalVariable = true globalVaraiable = foo.bar.baz[0][1]['value'] Relying on “If A then B” quickly get out of hand. The number of possible paths that your code can take grows quickly, even exponentially depending on the structure of your program. I don't want to be dogmatic, but always be asking yourself if you can structure your code as to avoid relying heavily on conditionals, especially nested ones. Focus on the problem you're trying to solve, not the operational details of the language or other tools you're using. However, keep exposing yourself to more languages, that are different from each other in semantics, run-times. Learn about different programming paradigms: declarative, imperative, functional, etc, focusing on semantics and not syntax.
- Houshalter 9y agoMy favorite examples of overreliance on conditionals: https://cdn.discordapp.com/attachments/285492834444771328/286610945063780352/0b7b209f2d27afce50a56a1749461de84d85ae235f21e803838d1a9782a5a4af.png https://cdn.discordapp.com/attachments/285492834444771328/28... https://i.redd.it/6fh5xb20ttly.png https://i.redd.it/6fh5xb20ttly.png http://i.imgur.com/GqcvMhp.png http://i.imgur.com/GqcvMhp.png
- Jtsummers 9y agoDear god, I think this would be what would drive coders mad if some Lovecraftian old one were a coder. I have a colleague that writes code like that last one. I know he won't change, but I wish he'd at least use a damned switch statement.
- chickenfries 9y agoThese are great, I need to start a collection like this. Here's something from this codebase, with names and variables altered but for the most part left alone. Note the hardcoded `ajax_max` variable. https://gist.github.com/anonymous/2d06bd45222999647d99df54fb098a51 https://gist.github.com/anonymous/2d06bd45222999647d99df54fb...
- fenomas 9y agoI think the answer here is analogous between spoken and programming languages. When I was learning Japanese the thing that made me grok the grammar was when I stopped "learning" and started imitating - that is, instead of trying to know all the rules needed to translate what I wanted to say from English, when I concentrated on reading lots of sentences in the target language, and saying things in Japanese using the patterns I saw there. So for programming the same gimmick would amount to, rather than just building code out of the constructs you're most comfortable with, also read code written by experts and try to imitate the patterns you find there.
- clock_tower 9y ago"But then Galileo made the troubling discovery that the heavier stone does not fall any faster than the lighter one." It does fall faster, if you drop both stones in the atmosphere; the heavier stone has more mass per unit of surface area, to better overcome a constant level of air resistance. Aristotle's physics were based on pretty accurate observation of the pre-industrial world, although they're surprisingly short on first principles. The really serious shortcomings were mostly related to impetus, the Aristotelian theory of motion -- it accidentally models friction well for objects in continuous contact with the ground, but it's very hard for Aristotelian physics to explain why an arrow keeps flying after it leaves the bowstring, and even gains speed after its apogee.
- defined 9y ago> It does fall faster, if you drop both stones in the atmosphere; the heavier stone has more mass per unit of surface area, to better overcome a constant level of air resistance. Not necessarily; for one thing, if the masses of the two stones are not significantly different, the difference in the effects of air resistance would be unmeasurable given the instruments of the day. For another, the shapes of the stones are important. One with a much greater sectional density, oriented correctly, could fall faster than the other, even if it were lighter. But that's just nitpicking. If I remember correctly, Galileo used inclined planes because there were only imprecise water clocks available to measure the passage of time. His choice of apparatus was brilliant :)
- clock_tower 9y agoI see I shouldn't have let the article's reference to stones stand; the specific experimental apparatus used by both sides was lead balls -- Galileo rolled them down inclined planes, while his opponents dropped them from the Leaning Tower of Pisa. The article lost me when the author blithely claimed that it was Galileo who dropped two <droppable-item>s from the Leaning Tower of Pisa. The author clearly has no idea what happens when you do that; while Galileo was far too good at choosing the experimental setup that would give him the answer he wanted, while ignoring any such setup that would prove him wrong, to make such an obvious mistake.
- FullMtlAlcoholc 9y agoThis issue is pernicious in the biological sciences. Evolution is often depicted as having a will and is referred to as a marvelous creator which completely misses the point of evolution, a system driven by simple instructions that over time create emergent complexity (like a cellular automata). People assume that their is some mechanism for adaptation exercised. Adaptation happens at the species level and the only thing exercised is survival.
- SomeStupidPoint 9y agoDoes a baby have a will? How about a cat? Bacterium? I'm actually curious why people believe one emergent system does (eg, people) but another doesn't (eg, evolution/biosphere). What lets you determine when a composite object or pattern in an automata has crossed that threshold?
- FullMtlAlcoholc 9y ago> What lets you determine when a composite object or pattern in an automata has crossed that threshold? There isn't really a threshold beyond that pattern or object somehow communicating to you that it does indeed possess a will or some form of consciousness. The default assumption is to assume it doesn't until it shows it does instead of invoking an animist world view that imbues a spirit to every complex phenomenon (weather, death, etc.) I'm in agreement with you though in general. It is arrogant to think that humans are at the terminal end of emergent complexity. Maybe our minds are too limited to conceive of something arising from a global or galactic scale. Are our individual cells aware of the person?
- SomeStupidPoint 9y agoWhy is the animist view not the default assumption? That seems a strictly more complicated model (with equivalent or even lesser predictive power), in that it supposes two classes of objects rather than a single class (in some sort of distribution), and supposes there must be some special quality to things, wherein they gain an extra trait. The simpler assumption (at least to me) would seem to be the animist one, albeit that most wills don't look much like ours (since most things don't look like us). I mean, I could see if you were arguing that humans don't have a will, but evolution doesn't either -- but to divide them in to categories based on feelings (which seems to be the case) seems to needlessly complexify the model.
- skybrian 9y agoApparently Dijkstra thought that if we could somehow think more abstractly and mathematically then we'd avoid making mistakes. But in practice, it seems to be the opposite: most people have a hard time thinking abstractly. We need analogies to make sense of things. For example, there was an experiment [1] showing that even basic logic is easier to handle if it's thought of as "detecting cheating" than as a pure logic problem. [1] https://en.wikipedia.org/wiki/Wason_selection_task https://en.wikipedia.org/wiki/Wason_selection_task
- bitwize 9y agoDijkstra wanted us to think on paper, use abstractions that accurately describe real-world systems, and arrive at answers methodically with a trail of checkable work. If our data and methods are sound our answers will always be correct. Using just-so stories does nothing to aid in the methodical derivation of conclusions from premises; and can serve to obfuscate and confuse the issues.
- pdonis 9y ago> Dijkstra wanted us to think on paper, use abstractions that accurately describe real-world systems, and arrive at answers methodically with a trail of checkable work. If our data and methods are sound our answers will always be correct. I understand the aspiration, but I always think of the counterpoint implicit in Knuth's famous statement: "Beware of bugs in the above code; I have only proved it correct, not tried it."
- bitwize 9y agoThe point is, if a system's behavior can be characterized with a set of equations, use the equations to talk about the behavior -- not a flawed metaphor for human cognition. If you find out that your equations incorrectly or incompletely characterize the system's behavior, Occam's razor requires you to assume that what you need is a better set of equations.
- pdonis 9y ago
- gonvaled 9y agoFor me nothing embodies anthropomorphism more than the stubborn insistence in looking for water and carbon when looking for life. Talk about bias!
- GuB-42 9y agoOur brain is for hunting and gathering. We somehow managed to repurpose it for mathematics in a very short amount of time on the evolution timescale. So while we are capable of abstraction, our brains work better when we rethink the problem in terms of throwing rocks. Anthropomorphism help us make our primitive mind and higher functions cooperate.