Hacker Newsnew | past | comments | ask | show | jobs | submit | throwaway5231's commentslogin

This is false and ageist. I got a computer engineering degree at a non elite state school very recently and this was covered in the first c++ and c classes. For that matter c# has an “out” variable that mimics this functionality, and the intro Java class covered primitive types vs. reference types. While reference types in Java aren’t the exact same thing, they do allow a void function to modify the state of the caller by modifying a parameter passed to the function.


I doubt that you can make an absolute "this is false and ageist" statement in any context, but here on HN, I would have at least expected you to supply information on what location in the world and level of institutional schooling you have.

Here in north-west EU C and C++ haven't been a part of the core curriculum for over 25 years (unless you do embedded work), and code with side-effects in desktop-class systems has been frowned upon for nearly as long due to the need for more cookie-cutter engineers to fill positions and write code that might still be OOP but has to be almost as side-effect free as functional code.

Basic/core languages are still (last time I checked when doing guest lectures ~ 6mo ago) Java, C#, Python and the mixed bag that is web languages.

This is also influenced by the core program required to be an accredited institution and the large amount of consultancies people end up working at straight out of college/school/uni. This even still happens in infrastructure-centric programs where you do lean a bit about TCP/IP and OSI layers, but then essentially get dumped into Juniper/Cisco/vmware/microsoft school which almost always gets them vendor-locked and unaware of the actual concepts and abstractions they implement.

So no, not knowing the difference between passing references or values, or pointers and dereferencing them is not as strange as you seem to think it is. It is not a piece of knowledge or experience that is seen as valuable enough by the people that create the curriculum or the companies that employ the largest quantities of inexperienced workers in this part of the world.


The core project for my compilers course in Germany in 2016 was about writing a C compiler in C++. I didn't do my intro courses at that university, but the professor clearly assumed all the students were already familiar with the language.

A lot of people seem to underestimate the prevalence of C/C++. I've had people tell me that C/C++ is completely dead and the future is machine learning entirely written in Python, but the machine learning models they're using still usually have parts hand-tuned in C/C++, or even assembly.


I work at a fairly large Python shop and we have some real performance problems with Python.

Most real world software will use many core libraries implemented in C/C++ for doing the heavy lifting. Just the FFI and creating all those Python objects makes it slow.

Python is a great language for prototyping and/or usage as a glue code.

Personally, I am more inclined to use Go for anything quick and performant. If Carbon language becomes a reality, I would bet on that since it allows seamless interoperability with C++ (and there is a large existing eco system). Else, time to learn Rust.


There isn't even a compilers course here, unless you go for a science masters. This likely got shaped this way due to the lack of interest and a push from industry to deliver more 'ready to use' engineers.


I went to a small Wisconsin state school, grad with a BS in CS in 2009. We learned C, operating systems, and had a compiler class. Definitely not useful in my day job, but it was fundamental in my understanding of programming languages and computing. Can’t believe there would be a CS program out there that would skip this.

I do know there are programs out there that focus on different aspects though, and not surprised they would be geared to make people more job ready. We actually didn’t really learn about unit testing, and such, so it’s a balance.


I'm a PM and I ended up graduating with an econ BA instead of a CS degree, but I took a few intro CS classes at UCLA in...2011/2012.

Intro to Programming 1 and 2 were taught in C++. Can't remember which one taught pass by reference, but it was definitely in one of those two.

Third class I took was Intro to Systems or something like that. The whole class was C and x86 ASM. Lots of binary operations in that one, used K&R a fair amount in that class (also learned debugging assembly in GDB and some other "low-level"-ish stuff).

Just looked it up, can't say 100% it's still C++, but the syllabus looks about the same as I remember for both class. It gets to pointers by week 7, and then in the second class goes deeper:

* https://web.cs.ucla.edu/classes/spring22/cs31/syllabus.html#...

* https://web.cs.ucla.edu/classes/spring22/cs32/syllabus.html#...

And again, I didn't even get a CS degree. This was all lower-div CS work at a public university, and I'm not even a career engineer.

> So no, not knowing the difference between passing references or values, or pointers and dereferencing them is not as strange as you seem to think it is. It is not a piece of knowledge or experience that is seen as valuable enough by the people that create the curriculum or the companies that employ the largest quantities of inexperienced workers in this part of the world.

This attitude is why you're getting flak in this thread. Your claim that "We don't teach pass by reference these days" was too absolute, and not accurate for a ton of people. Then someone came back and told you that, and you told them that their claim was too absolute.

I'll also say that it's something that was absolutely valued around the orgs I worked in at Microsoft (Azure, DevDiv, Windows, very roughly bottom half of the stack teams). If not C/C++ pointers, than __absolutely__ passing by reference in C#.

Point being: __knowing__ about pointers, passing by ref vs. value, etc. is not as strange as __you__ seem to think it is.


I never stated my own position on this piece of knowledge, so no, __I__ did not have anything to do with your point.

C and C++ (and Assembly and compilers) are not part of the standard college software engineering curriculum here. Your opinion on that doesn't matter (just like mine doesn't matter) because it is a verifiable fact. And as such, it is also not strange to not see this bit of knowledge being prevalent. K&R isn't used much except if you are either taking the purely theoretical CS degree courses or if you tack them on to the normal required courses. Even the Gang of Four is only mentioned in passing when talking about patterns.

You __could__ argue if this is foundational knowledge, and if so, you __could__ argue that therefore the curriculum is in need of adjustment. But I didn't.

Regarding what this was all about (WrtCdEvrydy's comment), he might be talking out of the wrong hole, or he might be in a similar location as I am where this is how it works and that might be different from where you are.


My 2014 undergraduate degree from an engineering school on the east coast included two required tracks, one for data structures/algorithms taught in Java and a computer systemsey track that taught C, Linux, and some operating system essentials.

I think an operating systems course, or something approaching it, is a pretty standard piece of good CS curriculums in the US still from talking with other folks I've worked with. And I live/work very far from where I got my degree.

EDIT: in the US, not in the CS, lol


UK here, graduated BSc Software Engineering in 2012, and the primary language was C++ (though we used Java in some modules).


C# also has “ref” arguments. The difference is that out arguments are required to be assigned during the execution of the method while ref arguments don’t have to be set.


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

Search: