Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror

Comment The hard part of programming ... (Score 1) 799

People spend a lot of effort blathering about which programming language is best to use for teaching. But the hard part of programming is not the programming language. It's the logical thinking skills; the abstract concepts like function and algorithm and data structure and type; the reasoned approach to breaking a problem down and seeing algorithms and patterns; the ability to learn new tools such as a utility or an API and put them together usefully.

These things transcend language. Yes, you will probably use different algorithms or data structures in Python on a Linux box than in C on a microcontroller, but you will use largely the same sort of thinking skills. You will approach writing code differently in Lisp than in Java, but in both you will be combining known parts in a new structure to accomplish a task.

And it is these abstract skills -- especially the skill of abstracting, of recognizing and using patterns -- which separate those who learn to program well from those who do not. (And this is different again from being a successful professional programmer, which entails a quite different set of skills.)

Comment Re:Concurrency? (Score 1) 173

A monad is not a specific data structure (like an array) or a language feature (like a loop or conditional). It is not something that is put together by the compiler (like a compiled function) and it is not magic, either.

"Being a monad" is a mathematical property, like "being commutative" or "being symmetric". It has to do with values following a particular pattern, having operations defined on them that interact in a particular way. (These are called "monad laws", and they're the same sort of thing as the "identities" you get in high school algebra.)

Any sort of thing that follows the monad laws is a monad. In Haskell, we say that any type that follows the monad laws can be made a member of typeclass Monad. Casually, we say that "lists are a monad" and "IO actions are a monad".

What does it mean to be a monad? Roughly, it means that you can chain operations together. You can map a function over a list, or filter the list's elements to get a new list, or more generally "fold" a list by recursively applying an operation to collect a result. (Like the factorial function repeatedly applies multiplication.) Also you can join a list of lists together into a single big list.

It turns out that monads can represent the idea of "sequence" quite well. Lists are, after all, a sort of sequence. But so are IO actions -- all those "non-functional" things a program has to do, like read a file from disk, or write its contents to the terminal. IO actions form a sequence in time: if you want to write the file's contents to the terminal, you have to read them from the disk first.

The way that this works, under the hood, is to express the "later" actions as having the "earlier" actions' results as function arguments. Since a function's arguments have to be evaluated before the function can be applied, the disk gets read before the terminal-writing happens.

So monads are not a loophole that lets you cheat and do non-functional things inside a functional language. Rather, they are a model that lets you describe IO actions as just another sort of functional value. The only bit of "magic" necessary is that the main function of a program has the IO type.

Comment Re:"Big" question? (Score 1) 229

most adults do not really believe the tenets of any major religion anyway.

Of course not. The question is, do most adults believe some of the tenets?

That depends profoundly on what you mean. Most religious people, most of the time, do not permit their religion to get in the way of their common sense or their common decency. When questioned on a point of religious belief, they will reliably respond according to their understanding of doctrine ... but with equal or greater reliability, when presented with a practical challenge in life, they will respond based on an ordinary secular understanding of how the world works.

An example: Martyrdom. We know from the lives of the saints, and from the acts of certain modern-day counterparts, that there are those who put their faith in God ahead of their self-preservation, placing themselves in harm's way in the service of faith. We know, also, that only a tiny minority of religionists do this ... even among those who claim to revere the saints and martyrs who do, and who when questioned on the matter state clearly their belief in heaven. In gist, people who claim belief in life-after-death act just as fervently to avoid death as those who do not claim that belief.

This is what people mean when they question whether religionists really do believe what they say they do. Most of the time, when we say "belief", we mean something that we are willing to rely upon: if you believe it is cold, you do not wear shorts; if you believe that Jane does not love you, you do not propose marriage to her. Your belief is detectable in your actions which rely upon it, which are explained by it.

Dennett presents the notion of "believing in belief" -- the idea that many people think that religious belief is a good thing, a thing to be desired, indeed one which you should pretend to, or "fake it until you make it". People who believe in belief can be expected to say they believe religious claims, but not to actually rely on them. This seems to be a cogent explanation of the way that most "religious" people actually deal with the real world.

Comment Re:Bloody difficult. (Score 4, Insightful) 1091

I think they would have to define a man as someone that is XY and a woman as someone that is XX, anything else doesn't qualify or gets removed based on medical grounds.

Go read about androgen insensitivity syndrome. A person with complete androgen insensitivity has the external appearance (including external genitals) of a normal female, and usually has been raised with a female identity, and so identifies as a girl or woman. But she has no menstrual period because she has no ovaries or uterus -- she has an XY genotype and undescended internal testes. Androgens (male hormones) create the male external appearance; in the absence of androgens, a fetus develops a female appearance -- and parents and society assign a female identity.

It seems to me that a reasonable approach to dealing fairly with intersexed people in sports would be to replace sex separation with weight-class separation. Human sex and gender turn out to be complex and fraught with both social and technical problems, and it is unreasonable to deny an athlete the chance to compete just because their genetic curiosity happens to be on the 23rd chromosome.

Comment There's a market for meaningless licenses. (Score 5, Interesting) 340

I've known folks whose workplaces used to pay Sun a license fee for Perl ... the same Perl you could download for free (as in beer); and yes, the same Perl that is one of the usual examples of successful free (as in speech) software.

No, they didn't get tech support. They didn't get to file bugs against Perl that would be resolved by a Sun engineer. They didn't even get a custom build of Perl optimized for their Sun hardware. They didn't even get a CD. What they got was an invoice ... precisely what their company's IT procurement process required.

It's idiotic, but there is in fact a market for nothing: if you are correctly positioned as a trusted supplier, there are cases when you can get paid for delivering no product at all, but merely for carrying out the ritual of delivering a product, with all the paperwork thereunto appertaining.

Comment Just a few ideas ... (Score 1) 247

  1. Freedom of speech and of the press; freedom of religion and assembly; freedom to speak your mind without fear of governmental violence of any sort. Can't say it too many times: expression is sacrosanct.
  2. Right to keep, control, and protect one's own property. The rights of physical property owners to control devices in their ownership reaffirmed over and against claims by "intellectual property" owners. You don't get to scramble my hard drive just because you think maybe I'm a pirate.
  3. Domestic espionage upon political rivals by government agencies, or other use of law enforcement powers for political gain, declared to be a "high crime" removing the perpetrator's right to run for office or occupy any government position.
  4. Protection from unnecessarily destructive or disruptive searches and seizures. Disallow seizure of property when access to information is sufficient for law enforcement purposes: if you need a copy of a public Web site, you take it with "wget" from a secured and audited computer certified to be part of the evidence chain, not by seizing all the owner's computers, stereo, and video game systems too.
  5. Right against self-incrimination extended to passwords, crypto keys.
  6. Right to technically competent counsel in criminal cases where the details of technology are directly pertinent to the case.
Education

Submission + - Intelligent Design trying to rally its base

fiorenza writes: John Timmer presents a fascinating summary — from the point of view of a scientist — of a talk given by the Discovery Institute's Michael Behe at the University of Kansas. The article looks at how Intelligent Design propoents are trying to keep momentum going in the wake of several high profile defeats. From the article, "the case for ID that they advance is striking. Based on Behe's talk, they've given up trying to dissociate themselves from their own creationist history: they openly embrace many creationist arguments and happily identify their designer as divine. In doing so, they appear to have given up on any attempt to address a scientific audience."

Slashdot Top Deals

1: No code table for op: ++post

Working...