
In the scope of my research, a feminist programming language is to be built around a non-normative paradigm that represents alternative ways of abstracting. The intent is to encourage and allow new ways of thinking about problems such that we can code using a feminist ideology.
To succinctly sum up my research thus far I will outline the decomposition of my question below:
The idea came about while discussing normative and feminist subject object theory. I realized that object oriented programmed reifies normative subject object theory. This led me to wonder what a feminist programming language would look like, one that might allow you to create entanglements (Karen Barad Posthumanist Performativity).
I realized that to program in a feminist way, one would ideally want to use a feminist programming language. So what is a feminist programming language? Well I took a look at the major programming paradigms, the following are the four main groups a programming language can fall into: imperative, functional, object-oriented, and logic. I decided to explore feminist logic such that a feminist programming language could be derived.
I am currently exploring feminist critiques of logic in hopes of outlining a working framework for the creation of a feminist programming language.
If this is something you are interested in and would like to give me some feedback on I would truly appreciate it. Thank you for any and all feedback. I would love to open up a dialogue about what I am working on and my approaches to answer my research question.
NOTE: Hi everyone, I wanted to first say thank you so much for starting such an amazing conversation around this idea. I am currently working on a few different ways to explain this research as I know the text above is full of theoretical ideas from a variety of disciplines with a lot of academic language.
I look forward to responding to all the comments below, though it may take a bit of time.
In the mean time, I wrote another blog titled A Feminist && A Programmer explaining why I am interesting in this line of research which is linked below:
http://www.hastac.org/blogs/ari-schlesinger/2013/12/13/feminist-programmer
74 comments
Oh my gosh yes this is
Oh my gosh yes this is awesome.
For the longest time, I've been thinking about programming languages as a computer-human interaction problem: the purpose of a language is to make its features (affordances) obvious to its users.
However, the problem is that as domininant programming paradigms emerge, new languages encode these paradigms in their languages. For example, C was highly procedural without much support of object oriented programming. When object oriented programming emerged and became popular, C++ incorporated into an evolution of C and the Java language was created to *enforce* that paradigm on the premise that it would improve the code. What I find curious is how many people go out of their way to "beat" Java's enforcement to program in their own style.
We, as programmers, despite claiming that our field is "objective" have very subjective values that are entrenched in our discourse of programming language, particularly when it comes to the impossible-to-define term of "elegance". Walk into a language war and listen to nerds argue about their favorite languages and still believe that their views are "objective".
An excellent paper to read on this topic for anyone interested is Seymour Papert and Sherry Turkles "Epistemelogical Pluralism and the Reevaluation of the Concrete."
If at all possible, I strongly encourage you to attend SIGCSE (the symposium on computer science education) being held in Atlanta in March. Student registration is around $75, and it would connect you with some awesome people who may be able to help you.
As a closing note, my current direction of research is actually in studying how people use programming languages and how different styles emerge. I'm more interested in the outliers than the common paths... what ways are languages used that would be considered "unusual" from those in the know? Let me know if you'd like to chat sometime.
Absolutely! The visceral
Absolutely! The visceral response trained programmers have to code that is not "elegant" is undeniable. If code were so neutral and objective it’s hard to imagine why or how someone would come about such an extreme reaction. I think a lot of interesting information gets ignored under the guise of neutrality and objectivity.
I look forward to reading this paper, thank you so much for the recommendation. Batya Freidman and Helen Nissenbaum paper "Bias in Computer Systems" does a great job of defining value as part of a material--"objective"--thing. Which lends itself to the the idea of programming languages as an computer-human interaction problem.
Your research sounds fascinating. I would definitely appreciate some input and would love to hear more about what you do. Thank you so much.
What does this mean?
So, I'm a computer scientist (and an associate of Barry's), and while I don't really understand the critical theory behind this idea, I think this research could have a lot of great benefits for programming language theory and CS education. But, I do have a lot of questions.
First, since I don't understand the critical theory: what exactly is a "a non-normative paradigm" in a programming context? Also, what is "feminist logic?" Does it oppose the laws of identity, non-contradiction, or excluded middle, or is there a more subtle difference?
Following on from that, how deep do you think the differences between existing languages and a feminist language would be? Is this an issue primarily with the data model (type system, objects [with behavior] vs. structures [without behavior], mutability, etc.), the paradigm of execution (functional vs. imperative vs. logic, etc.), or with something even more fundamental, such as the underlying mathematics or the hardware on which they operate?
Finally, what end do you see a feminist language serving, and where do you think it would best be applied? Do you see it as primarily being of academic/research interest, as an alternative form of expression/instruction, or do you think that this could affect (in a beneficial way) programming in general, even in industry? I know that this is very early in the research stages, so this question might not have any answers yet.
Fair questions.
Let's start from the top.
A non-normative paradigm would be something that does not reinforce normative realizations of what a programming language is. That is to say, not whatever paradigms (OOP, functional, logic, etc) and programming languages you would consider standard (Java, C++, Ruby, Python, to list a few). The ideas is that the standard, normative, concepts reinforce the values and ideologies of societies standards. Currently, there exist projects built in response to normative programming languages and standard computer science, check out mezangelle for an example. In many ways this falls under the scope of critical code studies, as I am asking questions about the cultural, social impact of normal programming constructs.
What is a feminist logic is a question I’ve spent the past six months thinking about and researching. There are not a lot of women in philosophy, and there are definitely not a lot of feminist philosophers, so I don’t have a good answer for this question. There is great scholarship talking about weather a feminist logic can build off of formal logic or if it has to reject the laws of identity and create something entirely new. There are solid arguments for both camps, personally I’m swayed by the constructive theories that would build onto formal logic through a feminist lens. There exist logics that handle contradiction as part of the system, namely paraconsistent logic. I think this type of logic represents the feminist idea that something can be and not be without being a contradiction, that is a system where the following statement is not explosive: (p && ¬p) == 1.
In many ways the difference between a feminist programming language and a normative programming language would be the ways people go about answer questions with a feminist programming language as well as the types of questions a person would try to answer. I believe there is a stark contrast in these two different ideologies. If you get a chance to read the Karen Barad article I mention above it speaks of non-normative subject object relationships theorized as entanglements. Entanglements exist in stark contrast to the values and structures of OOP. While I think there are issues that could be explored with the mathematics and the machines, this is not where my interests are focused. In part, because I am hoping to uncover something constructive through my research. And when math and computer systems are already so pervasive and useful, calling for their death by fire hardly seems advantageous. Though the rabbit hole that is epistemology and mathematics is fascinating if you ever want to jump in (did we create math or uncover it, what does that difference mean, will we ever know?). There have been successful ternary machines (Knuth himself commented on the potential of balanced ternary), this could be an extremely worthwhile pursuit for someone as it gets into interesting questions about identity, I have just chosen to look at this idea from a different perspective.
So, as for the last set of questions, you may have heard of the Sapri-Whorf Hypothesis. It was developed by anthropologists and posits that language affects perception of it’s speaker and thus shapes understandings and thought. There is good evidence to support this hypothesis. So if the hypothesis stands, we can say that programming languages constraint the way we see and understand a given problem. I think this observation has vast importance and as such I would like to see a feminist programming language serving programming in general, in addition to academia and new forms of expression. But since the research is in such an early stage, only time will tell.
Fair answers.
So, I read the Barad article, and some other articles regarding para-consistent logic, and I think I now have a better idea of where this project stands. I am decidedly not a post-structuralist (which it appears makes me a distinct minority on this site), and I don't necessarily believe that Barad's paper applies as a description of our world, but I do think it reflects established problems in designing programming data models.
Object-oriented programming has always been a lie, in some sense: the terminology used to explain object orientation (especially in 100-level CS courses) implies a simulation of the real world, where objects have state and behavior. It then proceeds to create ChessPieces and place them on a ChessBoard, and give the ChessPieces a getRank() and a getFile() method. What this "simulation" approach to OO ignores is the nature of objects' state: a physical chess piece's rank and file isn't a property of the chess piece itself (at least, as an encapsulated object), it's a property of the chess piece's relationship to the chessboard.
OO is ill-suited for modeling this sort of relational state. Objects can hold references to other objects, but the semantics of the relationship are almost identical to those of the pointers of old: bidirectional relationships, or relationships that contain additional state, are difficult to model, and they require extensive bookkeeping by the programmer to remain in a consistent state. As a result, knowledge about the state of a system is frequently spread throughout the constitutent parts of the system. One either deals with having to write the chains of method calls and indirections required to update the state consistently, or one ends up with the "flyweight" pattern, where all the information is held in one "mega-class" and the objects merely serve as keys into its dictionary of information, lacking the behavior which is supposed to characterize OO.
This problem isn't inherent to only simulationist notions of OO, but is even present in OO scenarios which intend to be models only of concepts within a computer: the relational data model, for example. SQL databases are built on the relationships between objects based on matching rows with each other via foreign keys. There is no way to model this in the OO world with both bidirectional access and guaranteed consistency. Suppose we have a Stores table and a Products table, and corresponding Store and Product object classes: in order to access the Store that sells a Product from the Product, and to access a list of a Store's Products from the Store, we must maintain a pointer on the Product and a list of pointers on the Store, and take special care to ensure that any changes to the pointers on either model are reflected on the other. Furthermore, it is difficult to deal with subsets of the relationships: a query, "Store, what are all of your purple Products?" is easy to formulate in SQL, but difficult in an OO model.
A related issue is known as the "expression problem:" the best explanation of this is on the C2 wiki at http://c2.com/cgi/wiki?ExpressionProblem, but it too deals with the idea that tracking such relational or environmental information is difficult, even within the design of a program, and OO's failure to solve the expression problem is linked to its desire that all functionality be bound specifically to one type of data.
While I don't fully understand Barad's philosophy of "agential reality," the concepts presented within based on the interactions between matter suggest that a feminist programming language (well, at least one operating from this perspective) would be especially well-equipped to deal with the sort of relational and environmental state that OO (and even functional programming) fails at.
If you're interested in this as a potential application, I recommend reading about the Inform 7 programming environment for interactive fiction: it is designed as a simulation, and treats the relationships between entities in the game world as a first-class mechanism, providing rich syntax for manipulating and querying them. It also separates the code of the game from the objects, instead choosing to have "rules" which are applied at the appropriate time based on all of the parties involved in an event.
The Clojure programming language would also be worth investigating, primarily for its philosophy on data and functions. Clojure does not deal quite as effectively with relationships, but its ideas about state, mutability, and their effects on concurrency (which oppose OO's concepts of such) are increasingly becoming accepted. In addition, its protocols and multimethods provide one solution to the expression problem.
Regarding the Sapir-Whorf hypothesis, I have heard of it, but I think Deutscher in Through the Language Glass presents a more accurate alternative hypothesis: languages do not prevent us from expressing a particular thought, or thinking about a certain concept (alternately, it is possible to express all thoughts in all languages, even if you have to make up a vocabulary word to do so), but they do influence our perception by influencing what we must habitually consider in order to construct correct phrases. He gives numerous examples of this idea, including languages where all directions are absolute compass directions (therefore requiring one to have a sense of their absolute position at all times) and languages where one's knowledge of an action (whether they witnessed it, whether they inferred it, whether they heard about it from someone else) is conjugated with the verb, and using the incorrect suffix is considered lying.
I think this viewpoint also applies (arguably, even more strongly) to programming languages. As per the Church-Turing thesis, there is no program which cannot be expressed in any language, but the language can make it very awkward to do so. (For example, attempting to use functional "map"- and "reduce"-style operations in Java requires numerous anonymous classes, with all the attendant boilerplate. By contrast, languages designed to support functional programming make the syntax for defining a new function almost invisible.) They also influence strongly what the programmer considers when designing the program: in Java, for example, the predominant concern is limiting the disclosure of information or representation outside a particular class.
Finally, I don't have much to say about using an alternative logic as the basis of the language, besides that programmers would probably get very annoyed if there was a value that could execute both the "if" and "else" branches of their conditional statement. ;-) I will note that I haven't found many situations where a value being both true and false would be very useful, but that could be a side effect of the way I am framing the problems. If you would like examples of alternative logics in programs, take a look at SQL's trivalent logic (true, false, null), and Perl 6's "junctions" (which I think are most relevant to the idea of multiple truth states for a given condition).
Well Said
I completely understand what you’re saying about OO. I think that is a really interesting point and there is a lot of potential in the comparison of OO with the relational data model. I hadn’t thought about Barad’s work in this regard, and I think this is a really rich area to look into. A huge part of my research is stemming from the idea that values and biases are perpetuated within technology, focusing my attention on computer systems and code. If values are perpetuated by code, how do we think about values in the creation of and use of code in a more explicit way. It will be particularly interesting to see how relational data model relates to Barad’s work with values in mind.
Inform 7 has been brought to my attention and I definitely think there is a lot of potential through this environment. The fact that so many people have this come to mind makes it particularly significant. I'm really looking forward to exploring the IF world more.
I’ll have to look into Through the Language Glass, I think this definitely reinforces what I am talking about. And something people who have used programming languages from different paradigms know to be true. I’ve always been fascinated by languages that define directions or time in a restricted way. I think there are really interested analogies to be observed here.
The Church-Turing thesis is of a lot of interest to me because under this notion if there is a feminist programming language, then anything one would want to write in this language can already be written in another language (though not necessarily with ease). I think this has the potential to have very interesting implications about what one could do with a programming language when values/biases are thought about in a more outright sense.
The more research I do, the more interested I am in pursuing ideas that are not in direct need of a feminist logic. There is a lot of interesting research that has been done on logic and feminism, Andrea Nye and Val Plumwood in particular come to mind. I really want to see where feminist values and effective executable code can meet!
Thank you so much for all these different resources. I really appreciate your insights and questions!
Ternary logic and beyond
Whilst researching the differences between dialectic and empathic resoning I came across the Indian traditions whereby things aren't one, or the other, or even something else. Instead there are seven states of conditioned predication within which one tries to forumlate arguments, known as the Syādvāda:
More info can be found here: http://en.wikipedia.org/wiki/Saptabhangi#Sy.C4.81dv.C4.81da but I found it within the context of http://en.wikipedia.org/wiki/Dialectic#Indian_forms_of_dialectic
Logic programming languages
Logic programming languages use a fragment of logic which is already constructive and (some would say) paraconsistent. They were made this way for practical reasons of computability rather than philosophical motives, but it strikes me as something of an issue for your project that a feminist programming language may already be out there, unnoticed by both feminists and by the men who created it. On the other hand, logic programming is a very constrained space in which most of what we think of as logic (the excluded middle, proof by contradiction, etc.) just doesn't work, so you could read some meaning into the fact that only a feminist-style logic works at all.
I don't know that anyone has followed up on Mascellani's lead about actively incorporating inconsistent information into logic programming (see, for example, http://www.lip.uns.edu.ar/cmsra/mascellani.pdf), but he is not the only one to have suggested this general approach. Sadly, logic programming languages are not a popular class of programming languages, so the prospects for coming up with your own (slight) variant on logic programming are pretty good. But the options will be constrained; you may not be able to do everything you think should be done.
I'm not familiar with the entanglements you mentioned, but if that's particularly important for your project, you may want to look into relational programming languages instead. They're closely related to logic programming languages.
Room enough for two (or more)
I think it is constructive to think about why there would be a hard distinction between computability and philosophical motives now. Particularly as computers have come so far from the ENIAC days where there was barely space for the desired functionality. That being said, if current programming languages have feminist ideologies embedded in them, this would not pose a problem for this project. In part because of the plurality of feminism, the plurality of programming languages, and the power of intentionality.
Feminism is a purposeful movement; to have socially and academically feminist ideas is something people come to. So if something were to have analogous properties to feminist ideas though not explicitly feminist, these ideas would have been developed intentionally from a different philosophical standpoint. Many later comments point to Interactive Fiction communities and languages like inform7 as an example with potentially interesting consequences. However, if you have examples of accidental feminism in computer science that you could share that’d be great.
Thanks for including the article regarding logic programming and paraconsistent logic.
You might be up to something
Hi Arielle,
That's very interesting and you might be up to something. The tricky thing is that the bottom line of coding is about logics and abstract thinking. There's been some research that shows women are more likely to prefer a given programming language over another. However, the often mentioned paper "Gender and programming achievement in a CSCL environment" found that gender does not affect programming performance and the study of Moraine Valley community found no correlation between gender and choice of programming language. These studies are available here and here.
If you check Bruckman et al's study you'll see they reported that girls spend more time than boys communicating with others in the CSCL environment and that boys are more likely to have prior programming experience and spend more time programming on average. I also remember Sherry Turkle's early work at the MIT when she studied children's interaction with the LISP language. IIRC, she found that girls are alienated by the way K-12 education presents programming to them. Turkle commented on this either on The Second Self or Life on the Screen. Can't really remember which one.
Cheers,
Marco
Hi Marco,I'm glad you're
Hi Marco,
I'm glad you're interested, I am excited by the poential of this project. I think an important point is I am not trying to make claims about ability to programming as related to gender. I do not ascribe ability and/or interests to essentialisms, be they about gender identity or any other forms of identity.
I love that there is research showing gender does not inhibit ability when it comes to programming and logical thinking, thank you so much for sharing the links that establish this.
I explain more about what feminism means to me, especially in terms of how it relates to computer science and programming here: http://www.hastac.org/blogs/ari-schlesinger/2013/12/13/feminist-programmer#comment-23026
Turkle has contributed and created so much rich content, thanks so much for mentioning this scholarship!
Best,
Ari
Objects with "Agency"
This article started quite the discussion in our lab! Thanks for the interesting thoughts!
As a programmer, it's difficult for me to reject the axiomatic falsehood of
(p & !p) = false
, and my brain isn't ready to think about it. However, we came up with an interesting discussion based on our (incomplete) understanding of normative subject-object theory:Have you ever heard of games called "MUSHes", or a particularly popular instance of a MUSH called "LambdaMoo"? A MOO/MUSH is a multi-user, text based adventure game where the world is designed and programmed from the inside by the players themselves. Basically, everything that exists in the world is an object and has properties, which - on the surface - makes it look like an object oriented program. You, as a player, are allowed to make new objects, but other people in the world are not permitted to change your objects except in ways that you explicitly permit, and you can never prohibit another object from performing an action. Therefore, you have a world of objects where a sense of mutual consent is enforced by the environment.
My understanding of subject-object theory is as follows: Subjects act and objects are acted upon. If we define the world as a collection of interactions between objects, we are considering people and other sentient beings as "objects" when they should be treated as something more.
MUSHes reconcile this in an interesting way by extending the object-oriented paradigm with an additional constraint: "all things are objects, but some objects have agency" (people, in this abstraction, are objects with agency). So here is my hypothesis:
A feminist programming language is a language that respects the agency of objects, acting upon them only upon mutual consent.
There is an interesting quality of such a language that follows from this definition: unlike most languages where anything is possible (Turing Completeness), in this language, some things are decidedly NOT possible. This has interesting analogues to reality: "just because something is possible does not mean you should do it".
What are your thoughts?
Intriguing topic!
Thank you so much for your
Thank you so much for your interest and the great links! I have spent a great deal of time with the information you point to, definitely plenty to think about. I am really excited to keep exploring this project. So many great interesting ideas have already been brought to light because of these conversations.
I don't quite get it
first of all, unsure about what you mean by a normative Language and unsure why one not being normative is Useful. You seem to mean not committed to one paradigm These days, much convergence is happening, so I suspect To some extent, most languages are becoming less normative? For example, many object oriented languages now Have lambda functional notation Also, I think to program in a feminist way, one could presume, One might avoid terminology that has bad connotations like "master/slave" But I'm confused why a new language is needed for that I don't think you should say your language is "feminist" Or that feminists should use it but you can say, it was Inspired by feminism which is ok i do think you are smart, your thesis looks challenging but Ultimately, you should try to sell it on being "useful" in some way Will it make my job easier to use it? Feminists can be pragmatic Too. Can you start by clarifying
Queer programming language/Zach Blas
Of related interest is Zach Blas' work on a queer programming language.
"Queer Technologies is an organization that produces critical applications, tools, and situations for queer technological agency, interventions, and sociality. By re-imaging a technology designed for queer use, Queer Technologies critiques the heteronormative, capitalist, militarized underpinnings of technological architectures, design, and functionality. Queer Technologies includes, transCoder, a queer programming anti-language;ENgenderingGenderChangers, a “solution” to Gender Adapters’ male/female binary; Gay Bombs, a technical manual manifesto that outlines a “how to” of queer networked activism; and GRID, a mapping application that tracks QT dissemination and infection."
Other connections between language and theory
transCoder was already mentioned, but I wanted to give a shout-out to Galloway and Thacker in 'The Exploit,' who include another non-executable programming language whose name I'm having trouble recalling.
Follow Up Blog Here: http://www.hastac.org/blogs/ari-schlesinger
Here's the link to Ari's follow-up blog on technology and feminism: http://www.hastac.org/blogs/ari-schlesinger/2013/12/13/feminist-programmer
And Juvenile Parodies Abound
There's also a parody/hoax happening on Bitbucket where a simplest redaction of feminism conjoined with fake code is being put up to tempt the naive, I assume, to create a feminist programming language, a la the infamous hoax perpetuated against critical theory long ago. Caveat emptor. This is not what Ari Schlesinger's posts (either the original or the follow up) are about.
I give a lot of talks now at corporations dedicated to technology innovation and, within fifteen minutes, I always hear that the single biggest problem in that world is lack of diversity. CEOs and CIOs don't see it as a problem for women but a problem for technology: you cannot create technology for a very diverse world (in every sense) with a homogenous core of developers and managers. They find it to be a major problem and are funding ways of changing the problem to the tune of billions of dollars a year worldwide. No one knows what to do but no one in that world is sanguine about the fact that the number of women entering the field of computer science has declined since 1993 when the Mosaic 1.0 browser was released to the general public and the "Information Age" officially began.
That's a problem. So is the 9%-14% (the numbers vary depending on what and who you count) representation of women among editors of Wikipedia. We have a major cultural, social, political, and economic issue here and everyone in the tech world is aware of it.
Please put the parodies aside, folks. This is a real, serious issue. Getting to the root problem is essential in real, practical terms as well as in theoretical terms. Ari Schlesinger is performing a real service to the profession by provoking serious conversation on these matters. We invite your comments and your disagreements although, as always with HASTAC, we are an open community that promotes difference through thoughtful, civil, engaged, respectful exchange. Snide parody? Name-calling? Slander? Hoaxes? Trolls? There's no place for those in a world where there are real and important issues that will benefit from all of us thinking together about how we can do better.
New Blog:
http://www.hastac.org/blogs/ari-schlesinger/2013/12/13/feminist-programmer
Original Blog:
http://www.hastac.org/blogs/ari-schlesinger/2013/11/26/re-feminism-and-p...
Not to mention some of the
Not to mention some of the "developers" who created this project impersonated contributions from well-known feminist developers. Props to Github for taking it down so quickly.
Failures of binary intelligence
One thing that springs immediately to mind is the long and catastrophic history of attempts to represent knowledge in terms of absolutes. Right from the outset of AI, "knowledge representation" has always been haunted by the fragility of binary logic, and every house built on that logic sooner or later comes tumbling down. Socrates was a man. Odysseus was a man too, but Odysseus was a fictional man. Do we now need to split those categories and say that Socrates was a non-fictional-man? What about Jesus, who may have been real, but was heavily fictionalized? And where the Jove does Tiresias fit into this picture, who by divine curse (blessing?) has been both a man and a woman? new FictionalSometimesMan()? These are open research questions in binary logic based knowledge representations. Instead of building on that logic, I would suggest that the Tiresias variable is exactly the p for which (p && !p) == false must be rejected as a starting point for rational discussion.
Much of the history of programming languages seems to me to be colored by this pattern: an absolute logic is encoded (modern notions of object orientation literally borrow from Platonic forms), it breaks out of the gate as it encounters the vagueries of the "real world," and every degree to which the absolute logic is made less absolute (multiple inheritance? mixins?) restores one degree more flexibility and, ultimately, utility to the system. Probability played this same trick to let modern machine learning techniques address questions unanswerable in a world of strict, deterministic logic. Probability is my personally preferred language for expressing non-absolutes, as I am not familiar with paraconsistent logics.
I think that a modelling logic that spoke less in terms of absolutes and that allowed the Tiresias variable to flow more freely between man/woman and real/fictional based on how it needed to be used would be absolutely killer as a modelling paradigm. Moreover, I bet feminist theory would be right at home thinking about it. In particular, I think that most of the problems presented by programming paradigms are not endemic to programming itself, but are rather produced by the interplay between language and social relations. In other words, just as one does not need to give up English but only reconfigure it, so one does not need to give up the essential mathematical formalisms that make programming programming in order to reconfigure them. A probability can still be binary if it powers a binary classifier and reintroduces absolutism at precisely the place where it should embrace multivalence.
I suspect that the 0s and 1s of binary code are too often a red herring for this kind of work; when programmers think only in terms of higher level linguistic concepts, I suspect it will be those concepts and those concepts only that begin to encode and perpetuate binary thinking. One does not need to give up 1s and 0s to reconfigure binary thinking. Indeed, that is the entire basis of computation: that 1s and 0s can express infinite variation. "False" is an illusion produced by binary thinking; in a binary world, "not man" means "woman." For the Tiresias variable, by contrast, "is man" and "is woman" could both be completely compadible categories for the function knows_what_sex_is_like_for (___)." This seems to be the basis for much confusion, as attempts to talk about revising binary technocultural logic are relegated to the fringe along with tri-state computing and other ideas that don't really have a home in the modern technological mainstream.
At any rate, I like the promise of where this thinking might lead and hope to hear more about it.
"Instead of building on that
"Instead of building on that logic, I would suggest that the Tiresias variable is exactly the p for which (p && !p) == false must be rejected as a starting point for rational discussion."
Does it? I disagree. Your argument only holds if we accept that "man" and "woman" are opposites.
In formal propositional logic, the variable 'p' is a single true or false statement*: Let p be the statement: "Tiresias is a man". This means that (p && !p) is expanded to "((Tiresias is a man) && (Tiresias is not a man))".
"Tiresias is a woman" is a separate logical premise (let's call it 'q').
Therefore ((Tiresias is a man) && (Tiresias is not a man)) can only evaluate to True if we accept the axiom "$PERSON is a man if an only if $PERSON is not a woman." I don't accept that axiom, do you? :)
In my argument against you, I think I'm hitting Ari's point very well. I am making the claim that my model of the Tiresias situation is right and yours is wrong because I claim that you are using the syntax of the language of propositional logic incorrectly. This argument only holds water if we believe in propositional logic - if we reject the language, then my assertion that you are wrong has no standing.
However, in another way, this points to part of what I love about programming. Programming, in my mind, is all about building models. All models are wrong, but some models are useful. Even if I ignore the syntax structure, I would argue on a philosophical level that "Treating P and !P as a question of gender" is a poor way to model the Tiresias situation in any language. Why do you pick that as your abstraction? Why don't you pick variables that make it possible to reconcile the situation in the terms of language's rules? Whose abstraction is right? Is one more right than the other? Does forcing ourselves to conform the question to an arbitrary language miss the point entirely?
Actually it's funny, I feel like trying to talk about logic while relying on logical rules to make my argument is somewhat as frustrating as trying to talk about gender in a gendered language like Spanish or German. :)
Of course, everything I'm saying is inherently biased by my experience in the field, so my own assumptions and biases may not be clear to me, regardless of how much I try to remain cognizant of them.
* Note that in my eyes, requiring that everything in a formal logical argument to be either true or false does not necessarily entail everything in the world being binary. It just means that for things that are not expressable as true or false boolean values, the rules of formal logic can not be applied deterministically to them. I believe that there are statements that can exist without being true or false, but the jury is still out on states that are true and false simultaneously.
various points & references