HN user

schme

57 karma

Working as a systems programmer with professional quality media-servers

Posts1
Comments43
View on HN

To list something: C teaches memory management, memory addressing, stacks and heaps, some disassembly, binary interfaces. Basically, you see the layer on top of machine language. Python, Go, etc. are a layer on top of that.

Rust and C++ teach these things as well, but C keeps things minimal so you see the ideas more clearly. A lot of languages are written in C, forming a common way to think about implementation and problems, one you see glimpses of working in almost any other language as well. A lot of "why is it like this" questions have answers beginning "because in C..".

The FFI part is due to the extremely stable and simple ABI. Compiling C produces predictable and known binaries, setting a lowest common denominator among languages (for bettet or for worse). Thus knowing the capabilities and limitations of C is useful even when working with other languages.

A lot of this knowledge can be grasped quickly and you will get reminded of them for the rest of your programming life, so it's not necessary to dive deep into C to get the knowledge. C just provides the shortest and cleanest introduction, and you can quickly move forward without missing a beat really, since a lot of the stuff is so universal.

I'd go with C first. Rust would teach you everything C does and more, but C will lay the foundation in cleaner strokes. This will help you later no matter what language you decide to learn next. C is also in a way the language of the FFI, so you are very likely to need it in the future regardless.

Find the kind of system you'd be interested in working on and start building one yourself. For me it was a game engine + an editor for it, but it could be anything you find the motivation to build.

Start with a book or a few texts/tutorials on the subject and begin building. Along the way you'll find the questions and choices involved. Find the answers from the internet or books. This is when I'd recommend some open source projects (not earlier) to see how they solved the specific problems. If you just go into an open-source project you won't have an understanding of the problem, just the answers, so it won't help you nearly as much.

That's a totally different domain, where abstractions are most likely for the better. The bad part is the abstractions at places where they're not wanted e.g. graphics and other high performance systems programming. Abstractions are fine if you can opt out, but don't take away the control from those who need it.

In my mind C/C++ converts to a certain style of C++ coding popular among competitive programmers for example. You write C style simple code but use the C++ libraries etc. when it best fits the case. Some would call it just the C style C++ which is considered bad and ill-formed in general, but I do find it is an excellent style for certain type of problems.

What I'm really waiting for is that other countries start realizing what this means to them. From what I've seen, most of European media has failed to point out how big of a deal this is to everyone, not just Americans. Not just the fact that a lot of European traffic comes and goes through the US, but in smaller countries this kind of all observing surveillance might be easier to set up (depending on geographical and some other factors of course).

Some computer scientists (e.g. Martin Odersky, creator of Scala) don't see object oriented programming as a true paradigm, for it can be quite easily combined with them (hence Scala and its oop + functional programming approach).

I think this sounds reasonable, especially considering the pseudo-oop of todays languages.

One thing that has been bugging me in ICS and JB is how small textfields behave, especially in text-messages. I tend to write long sms's and occasionally want to change a word from the middle. The 'knob' the author mentions does a good job if I want to get back to the beginning, but I haven't found a way to scroll back to the middle with it. Rolling the typefield itself helps, but after doing that the knob is still very prone to getting me straight back to the beginning/end. Navigation in textfields feels awkward. If I'm scolding the wrong thing for the wrong reasons, do tell, I'd like to hear if it's just me or does someone else feel the same.

I'm 22 and only just now going to university. I've had the same issues as the author, about the non-encouraging environment, friends not interested etc. I had the interest sure, but never -really- got into it. Dabbled through Python books and tutorials here and there, tried different languages but never got prolific in any of them. Rarely creating anything outside answers to exercises. But I forgave myself (kinda, I always felt too old when reading about those 12-year old wiz-kids, being 15 and all).

For a long time I considered myself ahead of the curve, for browsing sites like HN, absorbing information from the internet. It was about a year ago I finally realized it doesn't matter if I haven't actually done anything. "Sponge learning" only gave breadth, but no deep knowledge was achieved. I couldn't DO anything.

Nowadays I still think I'm behind my peers. Maybe not behind the average, but it's never the average we strive for. I still feel inadequate and, most likely, will never get rid of that feeling. I concentrate on doing what I can with what I have, getting better and trying not to compare myself too much.

A live sample would be much more interesting, both would be best. I'd be most interested in the meta keys. As a scandinavian especially {}, [] etc. buttons are very awkward to press. Infact, so are most special characters used in programming.

As mentioned, auto-complete and similar functionality change the heatmap, but that's what people actually press. This data would be alot better for actual use.

Though I don't mean it as a scold, it wasn't really in the hands of the author to collect such vast amounts of live data, and surely a lot more work than was his intension.

Slightly off-topic, but could anyone give a good modern C reference-book or tutorial? I have read through K&R, but all the modern approaches are of course lacking.

Too many times I've heard this as an excuse to do nothing at all, that I've a hard time believing this really means what we'd think it does. Nevertheless I enjoyed the story and would like to think this is something I would have done. Which I doubt. It is my shame that I can identify better with the homeless man than MIT_Hacker.

Why go out? 14 years ago

Back in high school I felt the same way. I couldn't understand why I went out. When I didn't I felt bad and as if I was doing something very unnatural. I come from a smallish town where everyone knew each other. After awhile I got to be known as the boy who didn't go out, which hurt. After a few years I got over it. I realized I didn't dislike going out per se, the people in the small town just weren't people I liked, we never 'clicked'. You can't like everyone and as I realized this I started going out and being with friends and doing all the stuff I had missed out on.

It's not about being an extrovert or introvert, it's more about not understanding why other people and/or yourself put certain demands on yourself when you feel like something else. Nowadays I don't care about what I 'should' do or what I'm expected to do. Not doing something like going to someones birthday party has certain implications to people, but I understand where it's coming. Now I make a choice between the consequences of my actions, not because an abstract idea of having to do something.

At least playing my own records works. I don't have a link to someone elses so I can't test it. They seem to have slightly changed the player though, from the last time I checked. There was no arrow pointing at the keys for instance.

Adding to my previous: it works _and_ there is no upgrade notification.