Hot answers tagged

197

I showed him a C++ program I made that takes what you type in, then assigns values to each letter (A is the first letter in the alphabet so it gets the value of 1).. and so on. It then adds up all the values and tells you it. So the word "add" would have a value of 9. I don't know what you should do with your dad. But: If you did this all by yourself, ...


126

I usually prescribe the same sequence for anyone who wants to learn programming. It's very theoretical, but it lays a good foundation. It should take three or four months of fulltime study, but programming isn't something you learn overnight. If you can't get through this sequence, you're not going to be able to program, so you might as well give up now. ...


123

I am of the mindset that it is essential for a good development environment to allow for an hour or two at most for exploration and learning, barring when it's "crunch time" on an application of course. An environment which doesn't do this is a red flag in my book because it tells me they don't value improvement. EDIT Worst of all is the place that ...


113

The advantage to knowing C is that you have a very good idea of how a computer works. Not just how your programming model works, but how memory's laid out, and suchlike. The only level below C is the assembly spoken by a particular CPU. (I'd add that knowing C also lets you appreciate how much less work you have to do in a higher level language. And ...


112

My first open source contribution was for a library that I had previously used (and would've suffered greatly without) on a previous paid project. During my initial use I had spotted a bug in the code so I created a patch, joined the project, and submitted it for review. About 8 months later when I had some free time I decided that I would give back (and ...


101

No, it is not a substitute, but a perfect complement. I feel a combination of the two holds a lot of power. Why is it that a good lecture teaches you more than just reading a book? Interaction and the ability to ask questions. By just reading a book, some questions might pop up to which you can't find any answers. Look for those questions here, or ask them ...


101

It's critical. I don't think I've ever known a good programmer who wasn't self-taught at some level. As a hiring manager at a large company, I can say that a candidate who describes personal projects and a desire to learn will trump one with an impressive degree every time. (Though it's best to have both.) Here's the thing about college: Computer ...


96

Don't worry about meeting some ridiculous concept of "skill" so commonly heard in such statements like: All programming languages are basically the same. Once you pick up one language well you can pick up any other language quickly and easily. Languages are just tools, there's some overarching brain-magic that actually makes the software. These ...


89

The Discipline of Finishing. Like many software engineers, I have a tendency to accumulate projects until I am contributing so little to each one that none of them makes meaningful progress. Couple that with a classic ENTP personality type, and you get a busy, interested and ultimately unproductive programmer. Over the years, I have learned and practiced ...


88

Humble: An exceptional programmer will never claim their code is the best, in fact they will always be looking for a better way (Every chance they get.). Patient: An exceptional programmer will have boundless patience (This does not mean they will waste days on a problem. See: Troubleshooter). Troubleshooter: An exceptional programmer will be able to solve a ...


88

Show him this post by Peter Norvig. Norvig is head of R&D at Google and teaches at Stanford, specifically Artificial Intelligence, he wrote the standard introductory book on AI. How long have you been working at it? I'd expect nothing more than that after a month of work by a novice with no additional instruction particularly with something as thorny as ...


87

There's a few things to note about getting into programming. First off, you will never know everything about programming. You'll probably never even come close to knowing a fraction of everything. And if you ever get to thinking you know something, something new will come out and what you know will be obsolete. So, you need to be OK with constantly ...


83

Remember that your dad probably thinks that you're about the smartest kid in the world, and he's trying to help you learn about something that you've said you enjoy. Know that even though your dad is unquestionably wrong (five completely different topics is a lot to throw at a kid all at once), he's also kinda right. A lot of people try to pick up ...


80

It's simple. C++11 makes code dramatically easier, cleaner to write, and faster. nullptr is a VAST improvement over the old 0. It's type-safe and doesn't convert when it shouldn't- unlike 0. It's a good thing that nullptr won't convert to an int. It doesn't make sense for that to happen at all. Do you know what the C++ Committee found when they tried to ...


74

All programming language are concrete implementation of some of the abstract ideas in computing. As you learn a language, you start appreciating the abstract ideas better. This usually makes it easy for you to also appreciate the concrete implementation of those ideas in other languages. This makes it easy to grasp and learn newer languages. The better grasp ...


72

I don't think any of the answers here are really what the OP was looking for, so I'm going to throw in my own opinion. Look, I'm an unapologetic C snob. My attitude is that if you don't know C, then to some extent you don't really know what you're doing as a programmer. So, I think I'm the sort of "biased" person you're talking about here. However, in ...


68

Manipulating large amounts of data in memory is where pointers really shine. Passing a large object by reference is equivalent to just passing along a plain old number. You can manipulate the needed parts directly as opposed to copying an object, altering it, then passing back the copy to be put in place of the original.


66

I think that the knowledge of the Automata theory is critical for understanding. Once you understand what an automaton is, and how regular languages are defined, understanding the regular expressions will be much easier. As to the specific syntax and differences between the various implementations... Well, some things you just have to remember. There are ...


64

Let me start by saying I know where you are coming from. I work for a small company with lots of stuff to do and I am a family man with two kids under the age of five. I have no intention of being an absent father or husband, or doing a poor job for my employers, so it is extremely difficult to find the time for new stuff. I think the trick is to make your ...


62

Emphatically No. For any goal you have in mind for students, another language or sequence of languages would be faster and better. Examples. "Students need to understand low-level concepts." "Low-level" coding does not consist of getting objects from new, feeding them back to delete, and occasionally having a pointer pointing somewhere it shouldn't. ...


61

You might find the article Dynamic Linking in Linux and Windows interesting which explains how each OS does dynamic linking. The article Shared Library Search Paths explains how the libraries are found. Also Static, Shared Dynamic and Loadable Linux Libraries is very good. A nice thing about Linux libraries is that they have better support for versioning and ...


55

We have really BIG eyes. All kidding aside, I'm one of the people who finds reading to be very difficult. If I'm working my way through a very large book, I try to read early in the morning, when I first wake up, when my mind is free of distractions. I find that I'm able to get engrossed much easier at that time of day and I retain more. Then, there are ...


55

Just in case this gets left out... UNIX tools such as bash, grep, find, tail, awk, sed, ..., curl, ssh, ... ok you get the idea. You can learn them as you need them. You can do incredible things with them when you plug them together. You can automate a lot of repetitive work with these. You can save a LOT of time. Loads of tools, freely available, ...


55

No, C++ is a difficult language even for experienced C++ developers. Even for the simplest algorithms you have to explain many of the language subtleties. Consider a Hello World example: #include <iostream> int main() { std::cout << "Hello World!" << std::endl; } What's that #include command? What's std::cout. Why the ::? What is <&...


54

I suggest learning both, Haskell first, then Common Lisp. My experience with Haskell was that the static typing seemed to be a restricting annoyance at first, but once I got used to it, I noticed that most of my type errors had logic errors hiding behind them. When you get to this point, and the next milestone, which is learning to think in types and define ...


54

I am worried that someday I won't be able to keep track of them all. After 30 years, let me say this. Yep, you lose track. So? That's why they write reference manuals.


53

He bought me them because I told him programming was fun and I wanted to learn it. ... What should I tell him? "Dad, your approach to this is making learning to program absolutely no fun. Knock it off."


50

First learn Python well Here are some online resources for learning Python The Python Tutorial Wiki-Book Byte of Python Building Skills in Python Version 2.5 Python Free Online Ebooks Python Bibliotheca Think Python Data Structures and Algorithms in Python How to Think Like a Computer Scientist: Learning with Python Python for Fun Invent Your Own ...



Only top voted, non community-wiki answers of a minimum length are eligible