Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Old technology is deemed by people too troublesome or restrictive.

"deemed" is the keyword here. Old tech is "deemed" bad, new one is "deemed" good. Without any numbers attached, just by way of hand-waving and propaganda. And it's all "deemed" Computer Science :)



Bob Martin said in one of his lectures that Software Engineering is the only field where people can't even agree on one thing.


Once we got into a big discussion at c2.com about "proving nested blocks were objectively better than go-to's". Being most agreed nested blocks are usually "better", it seemed like it would be an easy task. Not! Too much depends on human psychology/physiology, which both varies between people, and is poorly understood. We couldn't even agree on a definition of nested blocks, being hybrid structures were presented as case studies.

I personally believe nested blocks produce a visual structure (indenting) that helps one understand the code by its "shape". Go-to's have no known visual equivalent.

Computers don't "care" how you organize software, they just blindly follow commands. Thus, you are writing it for people more than machines, and people differ too much in how they perceive and process code. For the most part, software is NOT about machines.


> proving nested blocks were objectively better than go-to's

Dijkstra spent many, many pages on that. And it's still not a clear cut "this one is always better" case, as there are some obvious exceptions.


If you'd ever had to support some old Fortran or Cobol littered with gotos you'd probably sing a different tune. I'd guess you've never seen that sort of mess though. It's gotten pretty rare.


I wish to make it clear I am NOT defending goto's as an actual practice. I'm only saying that objective proof that they are "bad" is lacking. Goto's served as a test case of objective evidence of code design.

Do note that some actual coders have claimed that if you establish goto conventions within a shop, people handle them just fine.


Well "some excceptions" of course is not the same as the entirely unstructured languages out there.

I've written a lot on the fortran-inspired MS Basic when a child. I know quite well how bad they can become.


> and people differ too much in how they perceive and process code.

Yes, for example I love dense code. A 1 line regex is a lot simpler to me than the 50-60 lines of code equivalent.

Yet some programmers find the 1 line regex significantly more difficult even if they know regex.


Well, it's pretty hard to agree with him specifically.


Fisher consensus problem :)


Computer Science... Now there's an oxymoron. At most institutions the subject matter is not really about computers nor is it science, at least not in the physics or chemistry sense.


Reminds me of the opening lines of the SICP lectures[0]:

"I'd like to welcome you to this course on Computer Science. Actually that's a terrible way to start. Computer science is a terrible name for this business. First of all, it's not a science. It might be engineering or it might be art. We'll actually see that computer so-called science actually has a lot in common with magic. We will see that in this course. So it's not a science. It's also not really very much about computers. And it's not about computers in the same sense that physics is not really about particle accelerators. And biology is not really about microscopes and petri dishes. And it's not about computers in the same sense that geometry is not really about using a surveying instruments."

[0]: https://www.youtube.com/watch?v=2Op3QLzMgSY


It's really more math then anything. Building concepts from atomic axioms.


I like to think of it as dynamic math. Calculus is also a form of "math over time", but is more about a single equation to describe that change over time. Computer science is more like "math with discrete logical steps over time". It allows you to answer questions like "which algorithm can sort a given array in the fewest steps"?


Math is building formal logic systems based off of a set of a few axioms. Computer science is essentially an aspect of this.


Which is actually an English issue how to describe it.

In Portuguese it is never called Computer Science as such, rather Informatics, Computation or Informatics Engineering if I do a literal translation.

And those that have Engineering in their name, are only allowed to be called that way if recognised by the Engineers country organization as such.


It's not an English language problem, terms like informatics[0], computing, computation or <x> engineering are valid and used by some universities.

My degree is simply "MEng Computing". It's recognized[1] by the engineering association, although that's so irrelevant in most IT that I had to look up the organization: the "BCS (BCS - Chartered Institute for IT) and the IET (Institute of Engineering and Technology)."

[0] My job title includes the word "informatician".

[1] https://www.imperial.ac.uk/computing/prospective-students/ac...


Thanks for the clarification, guess got it wrong. :)


That sounds like a rather narrow definition of science that will become even more obsolete in the years to come.

With how far mankind has come, it's a little silly to think that "natural" systems will remain the only things that science is concerned with.


I think that their point is that "Computer Science" does not seem very very interested in the provability of their science (the "Science" part) nor the applicability for general purpose computing (the "Computer" part).


> "Computer Science" does not seem very very interested in the provability of their science

...uh, what computer science are you talking about? Formal verification is a huge part of CS, and provability is a tiny part of what makes science science - systematic study through observation and experimentation. Science is a discipline, not in itself a fact to be proved.

Also, what parts of CS do you think are inapplicable to general purpose computing?


Science can be both experimental and formal (see Math). This said, there are certainly aspects of CS that require collecting data, designing experiments, ect.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: