We detached this subthread from https://news.ycombinator.com/item?id=13596131 and marked it off-topic.
Also, I think the idea is that those concepts are common enough that you'd either be searching for some specific nuance of implementation, or not searching at all.
I mean, I don't search for "for loop in Javascript" but I like to think I program in the real world. I might search for "Angular foreach options" or something like that, though.
Also too bad for your high horse answer that all the best real world programmers acknowledge that pointers & recursion are places where bugs hide disproportionately. Many real world programmers suggest that pointers & recursion are things to avoid. NASA's safety code guidelines are well known around here because it says explicitly to avoid both recursion and pointers.
Rule #1: "Restrict all code to very simple control flow constructs – do not use goto statements, setjmp or longjmp constructs, and direct or indirect recursion."
Rule #9: "The use of pointers should be restricted. Specifically, no more than one level of dereferencing is allowed. Pointer dereference operations may not be hidden in macro definitions or inside typedef declarations. Function pointers are not permitted."
https://en.m.wikipedia.org/wiki/The_Power_of_10:_Rules_for_D...
I've not touched a pointer directly in the last 10 and infrequently enough before that.
Just not much call for them in Python, JavaScript and PHP.
Do I have to hand in my Real World Programmer(TM) badge at the door or something?.
In all seriousness, I love c and c++, and go, and rust, but most real world apps can currently be done quite performantly without touching pointers, or using a language that exposes them.
I'd be rusty as hell though, I haven't written any C or assembly since ~1999.
Probably in a world, where people can read ...
Is it someone's definition of pointer?
> Your language uses them internally, but not you.
I'm actively using pointers that point to object.
> NullPointerException in Java/C# is a result of a leaky abstraction.
I don't agree. Java has uses pointers (which also called references and those are synonyms for Java), Java has concept of null pointer and I don't see why NullPointerException is leaky abstraction.
> In computer science, a pointer is a programming language object, whose value refers to (or "points to") another value stored elsewhere in the computer memory using its memory address.
> [2] Pointers are the most primitive. Due to their intimate relationship with the underlying hardware, they are one of the most powerful and efficient types of references. Pointer "points to memory", so if you change value of a pointer, you change what memory it points to. In java you can't change what a pointer points to. It's only references.
> I'm actively using pointers that point to object.
No, you passively use references that point to object. You can't do *(ptr+1) in java. Leaky abstraction means that it's called a pointer but it isn't a real pointer. Also as another commenter said, in C# it's properly called a reference.
[1] https://en.wikipedia.org/wiki/Pointer_(computer_programming) [2] https://en.wikipedia.org/wiki/Reference_(computer_science)#E...
Or better yeah, they could have made a null safe language ;)
We get into nitpicking, but I would argue references and pointers are not the same. Pointer are by definition memory addresses, while references are opaque and could be addresses under the hood.
Note also that C# does have pointers, but they are separate from references.
If you use a language with references, you're using pointers. I never said pointer arithmetic, dereferencing etc.
Same with recursion. Yeah, implementing recursive calls in a language like Java is dumb. But tail recursion isn't. Nor is using an equivalent of a recursive algorithm using a stack or queue.
If you don't think about these things, or don't know whether you do... you may be writing PHP