The Greatest Invention in Computer Science

Agree with Johan Pretorius! I think practically speaking it is GUI [remember it is also the precursor to Web GUI].

Without GUI there wouldn’t have been the explosive growth in CS we see now. Most of us would have been probably jobless as well.

Try to imagine normal clerks trying to accomplish their tasks, say reservation by typing
RESERVE fakrudeen male … 40 more parameters!
It is when we compare inventions on the same vein as routine, language, assembler etc.

If we say in pure computer science terms, it has to be turing’s computability papers [some problems are never computable etc.] followed by lambda calculus [lisp/scheme - precursor to all other languages] followed by finite automata theory which gave rise to regex [state machine], grammars [CFG etc.] etc. [precursor to compilers]

routine doesn’t even come close as a great invention in my thinking. Then what about high level languages? Microprocessors? OOP and all other acronyms?

Right on, Warren! Copypasta is king.

Followed by spam, and CAPTCHA (the thing below what I’m typing!)

This is possibly the dumbest question you could ask. Next you’ll be asking what the greatest variety of fruit is, or what the greatest instrument in the orchestra is. You’re attempting to judge on a linear scale what is inherently not linear. C’mon Jeff, do better.

It dawned on me a couple of months ago that the very essence of programming is the routine. It isn’t classes, design patterns or other window dressing but the routine. I think the industry has to realise that the routine is the basis of programming, not the class.

I hold the (admittedly unconventional) view that object orientated programming is actually hurting the industry. Object orientated thinking causes you to overly obsesses over the object model and focus less on the computation you’re trying to perform.

Take refactoring, for example. Refactoring is the art of solving meta-problems in your code whose solution is orthogonal to the actual problem you’re solving. The aim of course is to improve maintainability but is the cost benefit really there, or do developers just like having pretty object models? Is a refactored code-base really that much easier to maintain? To be worth the money, it’d have to be 50% or more faster to develop against. I have a hard time believing this could be the case.

Moreover, it is exceedingly hard to design a good object model. Every application I’ve worked on has had deficiencies in its object model, that become apparently only in the very late stages of construction.

Even if you could design the perfect object model for your application it will quickly disintegrates, under the weight of maintenance, in to a collection of “bucket” classes with weak cohesion and tight coupling.

However, this does not make its contribution entirely worthless. Studies do show that object orientated programs are easier to understand than their procedural counterparts.

However, I get the feeling that a lot of the issues you run in to with object orientated thinking is a result of the failure of the failure to appreciate the power of the higher-order function.

With proper namespacing and aggressive use of higher-order functions, I think you can have more maintainable, more flexible programs without resorting to object orientated design.

When I’ve worked in that style on my private work, I’ve found that I focus on solving the problem and not trying to correctly factor the program.

Does anybody out there agree with me or am I just a raving lunatic?

Simon

Flexible/“pluggable” regular expression parsing is the most important invention in computer science. Without it, there wouldn’t be many of the things we take for granted.

The Internet, obviously.

My first thought was the local variable. Reducing the scope of a piece of information so simplifies maintenance that it makes everything else possible. This reduction in scope is what allows one to make a large system and actually be able to use it.

Without the local variable, the subroutine only adds reusability of code, which is only half of its purpose.

OOP is just extending scope control to code as well as data.

The best invention IMHO is something that no-one takes the trouble to learn about; Prolog. Obscure it may be, trivialized, certainly, but hugely powerful depending on the task.

Invented in the late 1970’s, it is not at all procedural, but rather rules based. The small example as given above would be written like:

Windowed GUI Interface Mouse - My parents would never use a command line and neither would 98% of other users. That with the advent of the “personal” computer certainly made computers more mainstream.

Certainly the routine was an important advancement in programming.

6502 handled the push and pop automatically in the CPU. It was that important, even in the '70’s.

$02D8 LDA $41
$02DA JSR $FFD2 – Someone will recognize what that really does.

$FFD2 NOP
$FFD3 RTS

Congrats on being dugg!

http://digg.com/programming/The_Greatest_Invention_in_Computer_Science

I wanted to give props to the TI 99/4a web browser emulator, it’s amazing! I discovered it via this forum post.*

https://forums.atariage.com/topic/344311-ti994a-web-browser-emulator/

And it’s here, so well done. Gotta contribute to this developer!

http://js99er.net

* love forums though I do have preferences

1 Like