4 ms·
Back then that was likely true. Just like building linked lists from scratch was on the same level as writing a basic loop nowadays High level programming lang
by Swizec 5y ago
Back then that was likely true. Just like building linked lists from scratch was on the same level as writing a basic loop nowadays
High level programming languages have come a long way in the past 20 years. So many things we no longer need to think about in normal day to day programming
- chrisseaton 5y agoYou can also build a hash table from scratch in for example Ruby. The language doesn’t matter and C isn’t the key bit of the problem.
- marginalia_nu 5y agoDunno, I've had use from knowing how to implement hash tables several times just in the last few months. Extremely useful stuff if you are working with memory mapped data that is larger than system memory.
- Swizec 5y agoOf course it’s useful. My argument is that it’s no longer necessary for most programmers. Almost every language now comes with a native good enough hash table implementation.
- yakubin 5y agoIt's necessary when you need to debug something, regardless of who wrote the implementation, now it's you're responsibility.
- pjmlp 5y agoIf they want to be allowed to write Engineer so-and-so, yes it is necessary.
- Swizec 5y agoJust like you had to learn how to code with absolute memory addressing because only a silly non-engineer would waste computer resources on a compiler, right?
- formerly_proven 5y agoThat's why it's called a computer science degree, not a gluing-libraries-together degree.
- pjmlp 5y agoYes, programming in Assembly is usually also a possible assignment during a 5 year degree.
- xmprt 5y agoI'm not sure what you're saying? That someone's not a real engineer unless they can implement a hash table? Firstly, I don't think any programmers are classified as engineers by law in some countries. Secondly, I don't think I've even once thought about implementing any high school/college data structures at work because all of them have libraries with much better implementations.
- pjmlp 5y agoAny software engineering degree in countries with professional titles has algorithm and data structures as compulsory lecture, and exam.
- dboat 5y agoWhat countries are these you keep referring to?
- tharkun__ 5y agoI don't know what he was referring to specifically but I this would be the first time that I hear of a country that actually has a protected title of _Software_ Engineer. Plenty protect "Engineer" meaning "Software Engineer" is actually a title that you _can not_ hold. As for the "mandatory courses on algorithms" and such if you go to university, definitely Germany. If you go to university and study computer science, the first few courses which you will have to pass before ever getting to choose your own courses are going to be about modelling, data structures and algorithms. You will learn the theory of hashing, you will learn how to model problems you will learn various sorting algorithms etc. in the lecture. Labs will make you implement various of these things on an actual computer. An exam will probably ask you to write one or two of these algorithms in pseudo code. Been there, done that. And of course comparing all manner of algorithms in Big-O notation etc. Also "reducing" one algorithm onto another (dunno if that's the proper term in English). But basically taking an algorithm that you know the run time of and showing that a different algorithm you have has the same characteristics and thus Big-O complexity. You will also learn about P/NP and will implement bin packing and such. Unrelated to hash tables but hashing always reminds me of substring search algorithms that we learned about. The naive way is to just do a "text" search, advancing one character at a time and comparing the whole thing to your substring. I don't remember what the algorithm is called or who invented it but we learned about an optimization for substring search, which hashes with a particular hash function and when advancing a character in the string to search through, you reverse the part of the function for the first character and only add the result of the function for the next character. Thus you save having to deal with the characters that haven't changed at all. Just like hash tables or linked lists, I've never needed to code any of these ever again and I just use them, but it was definitely worth learning about all this stuff.
- dudeman13 5y agoThat's laughable. Software "engineers" pretending that "software engineer" is a protected title in any way or form (including soft and metaphorical community based protection). We'll get to call software engineers actual engineers when they can lose their (currently not existent) license over malpractice, not a second before that happens. The tech industry cheapens the term "engineer". The discipline isn't nearly enough mature to be called that
- pjmlp 5y agoIt certainly is in many countries, where one isn't legally allowed to call themselves as such after a 6 weeks bootcamp.
- lazide 5y agoDo you have any cites for that? I’m not aware of any that even attempt to hold software engineers to any sort of Professional Engineer standard, or have a mechanism that one could actually comply if they did. I do know of some areas where a PE is required for some software engineers, like some nuke or aerospace shops, but they’re very very few in number - and the PE isn’t about the software part of it.
- formerly_proven 5y agoIn Germany you can only call yourself an engineer if you actually have a technical degree (details and exact implications vary by state). "Software Engineer" might or might not fall under that regulation, though it is probably the reason why most job ads in German will call for "Software developers" not "engineers".
- lazide 5y agoSure enough, thanks! Looked it up and it seems like Engineer is the protected title, which plausibly would apply (Ingenieur formally).
- pjmlp 5y ago
- avgcorrection 5y agoSo if one is pretentious.
- louthy 5y ago> High level programming languages have come a long way in the past 20 years Have they? How? It seems to me that we're not very far away from where we were. Yeah we're running on better tin, but the programming languages are pretty much the same - at least the mainstream ones are. > So many things we no longer need to think about in normal day to day programming I'm always surprised when I read comments like this. It's not necessarily wrong, but all programmers writing anything less than trivial will bump into limitations of the various types of data-structures eventually. Not understanding the trade-offs and not being able to make informed decisions about different approaches will be a problem. We may not have to write them ourselves, but we should certainly understand how they're implemented in my opinion. I may be a special case in that I started programming on machines with tiny amounts of memory and with slow CPUs, and have spent time writing core data structures when in the games industry in the 90s, and now in my large web-application life have a large open-source library [1] which is all core data structures; but I honestly couldn't imagine being a successful developer without a key understanding of these things. [1] https://github.com/louthy/language-ext https://github.com/louthy/language-ext
- marginalia_nu 5y agoI think perhaps the explanation why modern applications seem as slow as, or in many cases slower than their Windows 3.11 equivalents loading stuff off a floppy disk, may be this general disregard for choosing good data structures. We have a hardware that's thousands, if not a million times faster, yet it hardly seems to matter when the code is a thousand, if not a million times slower.
- Swizec 5y ago> Not understanding the trade-offs and not being able to make informed decisions about different approaches will be a problem. We may not have to write them ourselves, but we should certainly understand how they're implemented in my opinion. I agree. My argument is that they are no longer something everyone needs to know how to implement to be considered “can code at all”.
- klyrs 5y agoI do a lot of low-level stuff by choice. Early in my career, I fell into web development because I got a job offer from a friend, and I found myself writing for loops and various SQL queries. On a good day, I got to write a regex. Hell, these days, you hardly need for loops in javascript because they're hidden by frameworks. It was boring as all get-out, so I got out of the industry, went to university and learned a whole lot about programming. I try not to be elitist about it; I think it's important to acknowledge that a ton of people in the industry have a radically different perspective on the nature of programming.
- matheusmoreira 5y agoNot needing to think about stuff anymore implies the ability to do so when needed. Somehow I doubt people who have always relied on language features and libraries would be able to work effectively without them should they ever need to.