Live data from Hacker News

The Unix Philosophy

catb.org

121–130 of 269 posts

Re: The Unix Philosophy

#121
post #13

This should be taught in any programming class. > Rule of Diversity: Distrust all claims for “one true way”. Although, does the python rule "There should be one-- and preferably only one --obvious way to do it." contradict this one ? > Rule 5. Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are ce…

"Although, does the python rule "There should be one-- and preferably only one --obvious way to do it." contradict this one ?"

I don't think so. To me Python's design rule implies there should be one way clear path to solve a specific problem and generally you'd also want to stay as consistent as possible with other similar solutions.

The "one true way" argument is to force everything to fall into a pattern even when it's a less than ideal way to solve a problem. An example would be trying to force everyone to use the same language/database/framework combination in a company for everything. Sometimes you want to be flexible and use the right tools for the job (while also accounting for the cost of deviating from the general accepted standard in making that decision).

Re: The Unix Philosophy

#122

Earlier quoted context omitted.

None of these seem even remotely relevant to engineering. Moreover, research, discovery and innovation requires letting people having freedom to think. That includes holding unpopular, controversial or politically incorrect opinions. We are so worried about Evil Government dictating what we can and cannot think that we haven't noticed the current organic trend to prosecute every other person for thoughtcrimes. It's n…

ESR's views particularly on guns, libertarian economics and politics, and AGW, all present pretty standard cases of assuming a frame and fitting all data to that frame. Chopping, discarding, and/or fabricating data as necessary to do so. That actually directly calls into question engineering validity, as solid engineering is solidly based in reality and a realistic interpretation of facts. Also the ability to discard…

That's like saying DEKs belief in the supernatural calls into question TAOCP, totally irrelevant

Re: The Unix Philosophy

#123
post #101
post #96

Earlier quoted context omitted.

> in some cases, this philosophy has resulted in the "tangled mess held together by duct tape" kind of systems architecture that no one dares to touch for fear of breaking things. Pretty much, just as Booch's philosophy has given us tangled messes of class hierarchies with cross references pointed every which way. And just as The Gang of Four gave us AbstractedTangleMessFactorySingleton. The distinction with the Unix…

Additionally, it's not a religion. Every programmer should be exposed to Unix style programming just like every programmer should be exposed to functional programming. 100% purity in either case is just creating unnecessary problems.

Amen. Extremism in programming, as in religion, is evil.

Re: The Unix Philosophy

#124

I keep wondering about what seems to be the most important component of Unix philosophy: write many small programs that do one thing well and interface using text streams! Yes, modularity is important. However, in some cases, this philosophy has resulted in the "tangled mess held together by duct tape" kind of systems architecture that no one dares to touch for fear of breaking things. I think Unix philosophy is stru…

>On the other hand, creating systems from programms written by different people requires more flexibile interfaces that can deal with versioning, backward and forward compatibility, etc, something that is extremely difficult to do across programming languages without heaping on massive complexity (CORBA, WS-deathstar, ...)

Personally, I think the LLVM project shows what the Right Thing is here: package most of the real functionality into libraries while putting the user interfaces into runnable programs. Everyone who wants to communicate with the functionality can just link the library.

And if we want to do it statefully, well, handling global state across a large system is basically the unsolved problem of programming.

Re: The Unix Philosophy

#125

Earlier quoted context omitted.

"If it is factually true it's disingenuous to label him as a racist." Not true. Something can be factually true but uninteresting or of no consequence; pushing that 'truth' forward as something that other should acknowledge betrays an agenda beyond just 'the search for truth'. (Note that this is not a judgement on ESR per se, just a comment on your specific point)

But it is interesting and of consequence. Especially as it highlights how truth ever becomes the slave of fashion. If it it is demonstrably true that race and IQ is linked then stating that as a fact does not make one a racist.

I'm not sure what you mean by "fashion" in this context.

Let's say that some kind of link between race and intelligence were proved and universally acknowledged, what possible positive outcome could entail?

Re: The Unix Philosophy

#126

I wonder how relevant is it nowadays. Many good things we can't have, like systemd, if we have to follow strictly to the unix philosophy.

Sure you can. See 'launchd' on OSX.

The reason that 'systemd' is the ball of mud it is that Linux being just a kernel does not provide the basics for systemd to build on so it has to provide them itself.

Re: The Unix Philosophy

#127

Earlier quoted context omitted.

"If it is factually true it's disingenuous to label him as a racist." Not true. Something can be factually true but uninteresting or of no consequence; pushing that 'truth' forward as something that other should acknowledge betrays an agenda beyond just 'the search for truth'. (Note that this is not a judgement on ESR per se, just a comment on your specific point)

But it is interesting and of consequence. Especially as it highlights how truth ever becomes the slave of fashion. If it it is demonstrably true that race and IQ is linked then stating that as a fact does not make one a racist.

"g is 85% heritable" does not actually mean, imply, or even give strong evidence for the likelihood that "racially-linked genes cause the racially-correlated outcome differences in IQ tests." A trait that's 85% heritable is actually a complicated mix of many different biological factors, whose various causal powers (abilities to cause a specific outcome if interfered-with) we simply don't know, except that 15% of them don't seem to pass from parent to child in twin-studies (and I would certainly hope that separated-twin studies were actually done at all, because that's Genetic Causality 101 stuff).

Thus, if someone wants to claim that "black people have lower IQs because they are black", they need to dissolve the concept of race entirely and not only find much broader evidence than studies on African Americans who are, after all, something like half "white", but in fact just cut to the fucking chase and locate the relevant genes.

But of course, if you located the genes and alleles that make some ethnic groups smarter or stupider, you could invent a gene therapy that would make everyone as smart as the smartest ethnic groups, or at least understand what sort of trade-offs are involved in genetic treatments of that sort (ie: Africans often carry a gene that helps them resist malaria but can cause sickle-cell anemia if you get two copies of the recessive allele). If you located the genes and alleles, then within 10 +/- 5 years (depending on how quickly your treatment gets funded) we could eliminate all genetically-caused racial gaps in intelligence.

This, of course, would greatly displease the racists, who don't actually want people to get smarter; they want to justify a peculiar social hierarchy. This is why you always see certain people waving their hands at "racial IQ gaps" and "heritability" but not funding research into intelligence-enhancing gene therapies.

Re: The Unix Philosophy

#128

I keep wondering about what seems to be the most important component of Unix philosophy: write many small programs that do one thing well and interface using text streams! Yes, modularity is important. However, in some cases, this philosophy has resulted in the "tangled mess held together by duct tape" kind of systems architecture that no one dares to touch for fear of breaking things. I think Unix philosophy is stru…

Are you saying you disagree with the use of subroutines, functions and interfaces? After all, they are essentially small programs that do one thing and do it well.

No, I don't disagree with the use of functions or interfaces at all, but functions in particular are a programming language construct and as such not easily extended across programming languages, processes and networks, mostly due to different type systems and error states.

I think it's not an accident or historical vestige that Unix philosophy uses the word "program". It has technical as well as social implications that have barely changed in the past 50 years.

Functions and programs are certainly not an either-or kind of thing but making them one and the same would require a very different kind of operating system than we have ever seen. Say, emacs OS :)

Re: The Unix Philosophy

#129

Earlier quoted context omitted.

> This is just a dressed up ad hominem No, it's explicitly and purposefully ad-hominem, suggesting that a person's lack of judgement in one area leads to questions about his judgement in a related one.

Many (most) people, including many highly respected scientists and engineers, are fully capable of displaying incredible judgment in their discipline yet awful judgment in other aspects of their lives. Should we put an asterisk on papers published by researchers in the middle of messy divorces?

In the unlikely case you feel most science and engineering is a "related area" to family life, yes.

Re: The Unix Philosophy

#130
post #97

Earlier quoted context omitted.

Exactly. That's one of the biggest problems with text-only interfaces.

Maintaining IPC/RPC as text has the significant advantage of keeping the programs involved honest, approachable, and easier to debug. Just being able to see the interface by running the program (or reading the config file) makes it a lot easier to learn[1], and bugs in text formats can often be seen visually (or marked in an editor). The alternative - binary structures - require complex data definitions where you hav…

Fully agree with you here. Wanted to also add that even the 'parsing' of text is easy by using standard tools like awk, sed etc.. rather than writing custom code to debug binary protocols. In addition with protocols like JSON, it is easily extensible without worrying about where new data fields are added as long as backward compatibility is maintained - i.e. if designed correctly, the server can be upgraded to accept new fields while still working with older clients.
Post reply on HN