Hacker News new | past | comments | ask | show | jobs | submit login

I unironically enjoy CS. I like programming and I like being close to the metal. I have an interest in the engineering part but I don't know if I'd pick it over CS. Life is hard.

Also like compilers, and most compiler engineers are CS grads. That's my dream job!




If you like compilers, I suggest you check out functional programming. Especially the languages in the ML family were basically tailor made to make writing compilers fun.

ML even stands for meta language.

See eg http://dev.stephendiehl.com/fun/ or https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_...


Nice! I cloned the repo so I can read through it. I already took some basic haskell so this looks like it's going to be fun to go through!


And yet, ironically, Computer Science has absolutely nothing to do with programming or computers. CS is a subset of Mathematics. That's all it is. I was being literal when I claimed you were the computer, as in the one who computes. This is confusing, and I am not the only one that would like to change its name to Reckoning Science, as no one would misunderstand what that means.

A computer scientist can solve very hard problems. But a computer engineer can also solve hard problems, yet they can also solve really easy ones, giving them the edge.


Your definition of Computer Science seems to differ from standard accepted definitions?

Not that it matters for SwordOfMyBone: what matters is what you learn when you enroll in a specific university's Computer Science course.

Btw, why couldn't programming or compilers be a subset of math? Look at eg 'type theory' https://en.wikipedia.org/wiki/Type_theory

Or optimization. It's a thing we do very much in math and in computing.

Applied mathematics is a wide field.


Some of the cliams the parent is making don't hold up to scrutiny, but the core of their argument does.

It's sort of like how geometry literally means 'the measurement of land' since it was originally an applied field developed for surveying farm plots for the bronze age super powers after each flood along the Nile and the levant wiped the property boundaries away. I think it's safe to say it has expanded beyond it's original intention, and CS has the same properties.


That is the way language works; enough people insist or use the word "cabbage" to mean computer science, eventually it does. But no matter how many people believe that computer science is programming, it will not make it so, because a discipline does not evolve like spoken language does. Those that believe falsehoods simply remain mistaken and do not affect what they are mistaken about to somehow become correct over time. Things are what they are and false expectations won't change that. Computers have evolved, certainly, the tools have gotten much better. But don't confuse the tool with the tool user or toolmaker. Computer Science is the same as it ever was.


No, Computer Science is a subset of Mathematics, and originally lived in the Math department for about 2000 years. Only recently, in the last 30 years or so, has computer science been mistakenly equated with programming or mistakenly been believed to have something to do with fixing desktop computers or building networks.

Programming is not mathematics, nor is it computer science. Programming is programming, and it is most like the recipes in cooking, which no one would ever confuse with math. If one wants to be a programmer, the thing to do is learn programming languages, no degree required. OTOH, if one wants to model the weather, or model traffic, or model society, or model the galaxy, or work in informatics, or hunt for weaknesses in the genetic code of some virus, or really, generally, solve complex problems of any ilk, then study computer science, because that is what computer scientists do.

Do not bother with CS if you want to work with computers, or be a computer tech, or systems administrator. Do not bother with CS if you just want to be a programmer, really, it'd be a waste of time, sort of like getting a MD because you want to be a RN, but this metaphor is not apt because there is no hierarchy like that in technology space. The confusion of programming with computer science is such a sensitive one, and a lot of schools now have Software Engineering departments. IMO, calling it engineering is being a little too kind to programming, even if we call a program an engine, it's really not. Also, there is no license available to engineer software, yet all other engineers need a license to work.

That being said, a Computer Science curriculum will entail learning a lot of programming, but that still does not mean that computer science is programming. But before learning program languages, in CS, one will study algorithms, and I believe those do fall under the scope of CS.

Here is another bad metaphor: You'll have to learn a good amount of Trigonometry in order to be able to do much Calculus, yet Calculus is not Trigonometry. Now, one can do good computer science without ever learning any programming language, and without ever touching a computer. But a computer is a tool, and the good analogy is that the computer is to the computer scientist what the telescope is to the astronomer. To be clear, though it was once so, astronomers do not build telescopes, nor are they necessarily expert in the construction of or even function of a telescope. The important part is they look through it, and that is how it is used.


I agree with the core of what you're saying, but CS has not existed for two millennia. It's fairly new math starting in the late 1800s at the earliest.


Ancient civilizations observed astronomical bodies, often the Sun and Moon, to determine time. In a very real sense, the Sun and Moon are together a computer that one uses to calculate, or compute, what time it is. Sundials are analog computers, no telling when they first appeared, but at least as early as 1500BC in Egypt. The abacus is a computation tool that was developed as early as 2700BC in Sumer. Its development required CS, and it is used to calculate, or to compute. The rules of grammar of Sanskrit were formulated ~500BC, highly systematized and technical, using metarules, transformations and recursions, iow, the work itself is computer science. The Antikythera mechanism is an analog computer designed to calculate astronomical positions and created from anywhere between 205BC to 87BC, and without computer science (and a number of other disciplines) it could not have been made. 1000 years later Medieval Muslim astronomers created analog computers, such as the torquetum, which converted measurements in three sets of coordinates: Horizon, equatorial, and ecliptic. Developing this would have required computer science. There is also the astrolab. When John Napier discovered logarithms for computational purposes in the early 17th century it opened a period of considerable progress by inventors and scientists in making calculating tools, and doing good computer science as they went.

No, I'm afraid most of the computer science that has ever been performed occurred prior to the 19th Century.


Just like computer science is greater than programming computers, programming computers is greater than computer science. Neither is a complete subset of the other.

It's sort of how like geometry (literally 'the measure of land', originally an applied mathematical field used for surveying) is newer than literally drawing property boundaries. It was the formalization and abstraction that led to computer science as a true mathematical field, which happened after actual programming occurred. We can reproject CS concepts on these earlier programs looking back, but the field of CS is newer than they are.


I have a lot of respect for coders. I also massively appreciate their humor. I don't think there is such a relation between a computer scientist and a programmer where one is greater or better than the other; they are merely different professions. I expect a programmer that has worked using Java, ObjC and C++ for, say, a decade, will have a better grasp of programming those languages than a CS grad 10 years after graduation, even if they learned those languages and used them, they probably weren't only programming, but also what appears to the untrained eye as sitting around like a lump. Often that's what contemplation looks like. A programmer codes a lot, so they'll be better at it.

It has been pointed out to me before that mostly what computer scientists do is reckon. This is why I am onboard with renaming Computer Science to Reckoning Science. It is a subtle thing, but I think it would prevent countless students from wasting the best years of their lives due to incorrect expectations initiated by the confusing name of the discipline. It really is important to understand that the "computer" in Computer Science is not a digital machine, a mainframe, server, a Dell, an Acer, or a Mac, instead it is a living breathing person. I have to envy the Math majors and Math grads. They knew exactly what they were getting into, not a one of them ever asked, "what do you mean, 'it's all math,' ?"


By greater, I didn't mean in softer, moral terms, but instead that the sets of problems and cognitive tools for approaching problems for both has some overlap, but one isn't a pure subset of the other. Trying (but failing apparently) to drive home my point that CS wasn't a prerequisite for programming for human civilization, therefore historical examples of programming are ultimately orthogonal to how old of a field CS itself is.


Well, ok, and I misread your post, thank you for clarification. But you've employed a straw man, because no one has claimed anything about historical examples of programming to make claims about how old computer science is. What I did instead (in the GGGGP comment?) was give ancient examples of computer science to show how old it must be, at a minimum. Now, of course, there was no CS department in a university 5000 years ago. Nevertheless, computer science was performed in ancient Sumer, and we know this because we found their abacuses.


This person's goals seem to be different from yours. Why not let him or her study what they're interested in without acting as if it's a mistake? What you see as a mistake in degree choice is based on your experience coming from your school living your life.


If the individual's goals were to be a computer scientist, then all is well. But if by their own statements of what they want out of computer science it is clear that they will not find there, or only find as a very small part of CS along the overhead of everything else, like the minor in mathematics that usually automatically comes with a CS degree, which they did not expect, then maybe it's ok that I offer a little insight into what CS really is. Because it's math, and anyone interested in CS must understand this, that CS is math, and programming is not computer science, and that studying computer science does not mean becoming intimately familiar with how a computer works. It's pretty important.


I actually graduated around 5 months ago. The only thing that makes me sad is that I don't have a job yet and am finding it difficult to find one because there are no opportunities where I live (like seriously not a single C++ job exists in my country only .net - HELP ME).

The math itself maps to a higher abstraction when it comes to compilers. Focusing more on parsing, grammars and automata theory. CE courses tend to go to a lower level. I enjoy both sides and can see what you're trying to explain. What I got out of university was mostly the feeling that the courses could never go in depth due to the amount of detail and the abstractions that exist. I don't think a CE course would have went to enough depth to cover everything anyways (each course is still just in the realm of 100 hours). Because both the layers on top (Algorithms and computation theory) and the bottom (hardware) both have so much information that it can be daunting to try to learn all of it.

I do agree that it might be a pain point for some people who don't enjoy that part of CS. I'm curious how you came to regret it this much?


> I'm curious how you came to regret it this much?

I'm not sure regret is the right word, but I am cynical because I was actively recruited by my university's CS dept. and it took me 2 years of study before I realized I was actually studying math, not computers, which was what I thought I was supposed to be studying. But I was mistaken, and it was too late to switch to CE and hope to graduate before the end of the decade. If I had been wise at 17yo, I would have known CE was what I thought CS was. Maybe I would not have worked in the field, but I sure would know a lot more about electronics and engineering, which was really were my young interests lay, I just didn't know any better.

Programming jobs pay pretty well, but if you have your CS degree, you can earn about 20% more starting out by landing a job as a computer scientist, or at least one that advertises for one. Programming is really a part of the IT field, but computer science isn't necessarily. For instance, the FAA uses computer scientists, so does the National Weather Service, so do major automobile manufacturers, the aerospace industry uses computer scientists. I mean, if programming is your thing, carry on, but you're actually limiting yourself if only seeking C++ programmer positions.


They didn't say anything about not liking maths, and they are specifically on this forum inquiring about a point of how computation can theoretically be done (and one which in this case is extremely relevant to mathematics, if you understood).

I can see that you needed to rant at someone about your revelation that humans can do computation too, but could you not have found a victim whose comment was at least superficially, tangentially related to what you're banging on about?


That's not what I meant. OP states in reply to my comment, "I unironically enjoy CS," followed immediately by, which could be interpreted as qualifying or laying the scope of the previous phrase, "I like programming and I like being close to the metal." That qualifier reveals some misunderstanding about what CS is, because it is not programming (though programming is a tool computer scientists may use) and it has little to nothing to do with "metal" aka hardware (yet another tool). I would have the same reaction to an English major that claimed, "I enjoy studying English. I really love typing and I love word processors." Because that is making the same mistakes as OP. Typing is a tool, word processors are tools, and they are not the study of English, though students of English invariably will utilize typing and word processors.


I believe you are being unnecessarily pedantic. Real world computer science programs cover software and hardware architecture as a matter of course. If they didn't 90% of them could be shut down for lack of interest.


You are mistaken about the curriculum, not that what you've said is entirely false, but that you are incorrectly attributing too much weight to these things in CS. Countless centuries before software or hardware existed, there were computer scientists. How could that be possible? Because software development is not computer science, nor is study of hardware architecture.

A decent CS program will include a some amount of history as well, who first did what and when, why the thing is called what it is, etc. Does that mean historians are computer scientists?! No, a university will round out a curriculum to include germane information that isn't really considered an essential element of that curriculum. In CS, the math is critical. So we can remove the computers and remove programming from the CS curriculum and still have a computer science program. But without the math, there is no CS.


I suppose there might be backward regions out there that can afford neither computers nor electricity adequate to teach computer science students anything they can't do with a pencil and paper, but they certainly are few and far between in the United States.

In general, it seems you are making an argument about semantics that doesn't describe the world as it is but rather either the way you want it to be, or the way you want it to be described. Either where all those poisonous influences were purged from CS programs or where "actual" CS programs were rare to non-existent.

You can certainly have a preference that the term be used like that, but that is far from reality on the ground.


I think, possibly, you are still stubbornly mistaking the meaning of the C in CS, as the two words in question are homonyms, so it is easy to do and extraordinarily common. Nevertheless it is incorrect, and no matter if every single person on the planet, and every single alien of every alien species in the whole of space-time from the Big Bang to the Big Dark Freeze or whatever thinks what you do, they'd still be wrong, as you are.

First of all, it isn't a pen and paper, or stylus on clay, or finger in the sand, just tools, that the digital computer replaces, it is a mind-boggling amount of time thinking, or figuring, or computing, too. You want to eliminate the thinking, but it is critical that you leave it where it is, because only humans, and possibly other mammals, and perhaps other animals, can think. Computers, like your PS5, can't think, and will not ever be able to. What you want to do, and others that believe falsely as you do, it seems, is dispatch with the person. Computer Science can't do that, and not ever, not until we can make people, and we already can so there's no incentive to find a much much harder and far far more expensive and much much much less fun way.

And people use computers for all kinds of things, but mostly, almost none of it is or is for computer science. And computer science is cheap, it doesn't cost anything but time (but I guess time is money, or the sqrt of evil etc.) So while it is luxurious to have a budget with a lot of cool tools available, there really are plenty of American and other Western universities that teach a decent CS curriculum without 4 computers per student, and their graduates are fully prepared for a CS career. I don't think you meant to insult them by calling them the Third World, but you kind of did that. A big budget helps any department. That doesn't mean money is computer science, although... computer scientists often work in economics positions and finance positions and secretly or officially do really neat computer science sometimes.

Secondly, fundamentally my argument is semantic, and your dismissal of semantics reveals some grave misjudgments. Semantics are of vital importance, and in every single exchange of understood communication, fully half the weight of everything there is in that is semantic in nature. If I don't understand what you're saying, or worse, if you don't understand what you're saying, then you can see there's a problem worth correcting.

The ideal candidate for computer science does not say, "I like computers, I want to work with computers, computers fascinate me. I want to know how they work. I love programming computers. I want to learn every language in use today, and be a programmer." The ideal candidate instead would say, "I love to compute, to figure. I want to know how to solve any problem. Puzzles fascinate me. I like figuring things out. I had exhausted my school districts math classes by the time I got to High School, and got a 4 on the Calculus AP exam in 10th grade. I audited some math classes at the local community college over the summers that I'm transferring in." Maybe that's a little too ideal. I was not, but math wizzes seem kind of common, I mean rare really, but always present. They make great computer scientists.

A computer science grad that wants to be a programmer will do well for themselves, programmers earn, and it is a highly respectable career. If nothing else will convince everyone, the difference in salaries between computer scientists and programmers should, except that some IT positions will inexplicably require a computer science undergraduate degree for $25/hr, so ignore the outliers when researching salaries.




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

Search: