6 ms·
Software is still if statements, while loops, and assignment statements — Sequence, Selection, and Iteration. That seems an extremely narrow view of modern pro
by Silhouette 6y ago
Software is still if statements, while loops, and assignment statements — Sequence, Selection, and Iteration.
That seems an extremely narrow view of modern programming. But then isn't this the same man who made the claim about there not being any new programming languages left to find?
- he0001 6y agoCurious, what new has been found?
- nendroid 6y agoThere's a style of programming with no concept of loops or jumps. It's called functional programming. There's other styles that are drastically different as well. Most of these styles aren't new though.
- commandlinefan 6y agoWell, at the risk of being pedantic, I think you're being pedantic: at the machine-code level, all those function calls resolve to jumps and their recursive base-cases are terminating cases of loops. Functional programming is a great way of organizing loops and jumps, but they're still loops and jumps.
- ajuc 6y agoAt the machine code level there's no Iteration just GOTO :)
- commandlinefan 6y agoWell, there's unconditional goto (jmp) and conditional "goto" (branch).
- lerptime 6y agoHe's not talking about machine level code. He's talking about while loops in regular programming. I don't think the person was aware that there are paradigms that avoid looping. To be more pedantic and get even lower level than machine code, at the theoretical level the basis of computation can be either procedural or functional. See lambda calculus and Turing machine for more info.
- buzzerbetrayed 6y agoYou don't think Uncle Bob knows there are paradigms that avoid looping? Sorry, but that is absurd. This isn't some random internet blogger. Uncle Bob has proven himself knowledgable enough to know something as basic as that, even if he is a controversial figure. And please let me know if "the person" refers to someone else. I've read the comment chain all the way up and can only make sense of what you said if "the person" == Uncle Bob.
- lerptime 6y agoI don't know about uncle bob. But certainly what he said is untrue. Programming doesn't even have "while loops" as a primitive. From that wrong statement I assume uncle bob doesn't know much. Of course I could be wrong. I don't know the guy. But that statement alone is enough for me to make a negative judgement against him.
- commandlinefan 6y agoWell, all electronic computers all the way back to the Mark II have had unconditional branches (jumps) and conditional branches: I guess you're strictly correct that "while loops" aren't technically primitives, but conditional branches are and the only reason you'd ever use one is to perform the equivalent of an if or a while.
- lgunsch 6y agoLisp has been around for decades. Wikipedia says 1958, which predates C by many years. It is indeed functional and favors recursion over loops.
- Silhouette 6y agoI'd say one of the biggest trends in the industry in recent times has been away from mutability -- and with it ubiquitous assignment and the kind of stateful everything environment that OOP tends to foster -- and towards much more controlled state management, often immutability by default, and generally a more declarative programming style. I think the emphasis on traditional structural programming is also a very dated view. I mean, sure, at machine code level, you're ultimately doing sequences and conditional jumps one way or another, and most imperative languages do still provide general sequence, selection and iteration structures. But in the mainstream languages, numerous other control structures from exceptions to pattern matching on algebraic data types are in fairly widespread use, and tools like concurrency, asynchronicity and using higher order functions are also widely relevant.
- elric 6y agoI believe you're referring to his statement that essentially no new programming paradigms have been discovered since the 60s? Are you saying you disagree? Basically every major programming paradigm had been discovered by the 60s. I'd be happy to hear otherwise.
- Silhouette 6y agoBasically every major programming paradigm had been discovered by the 60s. At the most coarse, generic level, perhaps. But there's been huge amounts of research both academically and industrially into, for example, how to structure functional programs, how to manage side effects, and working within concurrent/distributed/asynchronous environments. Saying that nothing new has happened in programming languages since the 1960s because the major paradigms had all been discovered already is like saying nothing new has happened in automotive design since the 1960s because private vehicles still usually have 2 or 4 wheels.
- AnimalMuppet 6y agoI think that generic programming wasn't really a thing until Stepanov with the STL in the 1990s. There may have been glimmerings of it, but I know of no actual, significant implementations before that. Corrections welcome...
- to11mtm 6y ago> Corrections welcome... You're cool. Most think ML[0] did it first, and dare I say did it right first. It gets rid of entire categories of boilerplate (interfaces come to mind) because types are fully inferred. In other words, if `funpost(request)` uses .User, .Body, .Time, from request, the only requirement is that the 'request' object has those properties with correct types further down the chain in usage. Other languages can do this but not typically to the degree in ML's type system (known as Hindley-Milner [1]). There are times it can't quite figure it out but it is, again, less frequent than in others. [0] - https://en.wikipedia.org/wiki/ML_(programming_language) https://en.wikipedia.org/wiki/ML_(programming_language) [1] - https://en.wikipedia.org/wiki/Hindley%E2%80%93Milner_type_system https://en.wikipedia.org/wiki/Hindley%E2%80%93Milner_type_sy...