Learn Unix on a real OS; like BSD or Slackware. High level programming languages are froth; once you understand the basic concepts, it's best to work with C and system calls til you're absolutely sure what you are doing. Learn how to use a debugger, disassembler, packet sniffer and every utility you can find for creating mischief. A few books on actual hacking, you know, the "blackhat" kind, might come handy. Hacking…
I often see this kind of advice and it always reeks of "I went through this and I turned out ok, so you should do it too." The problem is that I think it's completely the wrong thing to do. One of the major effects of programming in a language extensively is that you start to "think" in that language whenever you have a new problem. This is both good and bad, of course, because while it helps you become proficient in…
Ask HN: Confused semi-newbie programmer needs some advice.
41–50 of 57 posts
Re: Ask HN: Confused semi-newbie programmer needs some advice.
#42You're sort of finding the pleasure and pain of a CS degree: Data Structures doesn't teach you how to program, except in a superficial way in a single language. It teaches you how to manipulate certain building blocks of our field. You'll be thinking in terms of lists, sets, and hashmaps until the day you die, no matter what programming language you eventually end up using. Now, in C, working with lists requires know…
Thanks for the advice. I do know HTML. Simple webpages made great income for a highschool student. Should I go with simple Javascript, or something more? I only did HTML/CSS, nothing at all with dynamic webpages.
Re: Ask HN: Confused semi-newbie programmer needs some advice.
#43I'm going to say learn/refresh your python. it'll let you focus on the programming, and not have to worry about language specific constructs. Good refresher: http://www.diveintopython.org/
Re: Ask HN: Confused semi-newbie programmer needs some advice.
#44Learn Unix on a real OS; like BSD or Slackware. High level programming languages are froth; once you understand the basic concepts, it's best to work with C and system calls til you're absolutely sure what you are doing. Learn how to use a debugger, disassembler, packet sniffer and every utility you can find for creating mischief. A few books on actual hacking, you know, the "blackhat" kind, might come handy. Hacking…
The rounded programmer understands both computation and computers. C or an assembly language is a great way to learn how the computer works, but working at such a low level makes it harder to see the structure of the procedures you write and the processes they generate. Personally, I think it's more fun and rewarding to learn about computation first, then take a look under the hood. Others may disagree. Either way, you should learn both eventually.
For learning about computation, there are few better resources than The Structure and Interpretation of Computer Programs, MIT's introductory computer science text for over 20 years. It, and supporting course materials are available online free of charge, and there's a print version for traditionalists.
Re: Ask HN: Confused semi-newbie programmer needs some advice.
#45I'm a fellow CS student, but I'm a bit deeper into the curriculum. As a Junior, I'm just now learning other languages in class. I see those first two years as something necessary. It's fairly trivial for me to sit down and read most OO languages now that I've been taught Java for two years in college (plus one year in high school). After learning the syntax, it's far easier to take apart those concepts that they're t…
I'd forgotten Django. That sounds interesting. I did enjoy Python when I used in in Highschool, and I wouldn't mind learning more. About your other point, with sticking to C/C++ until the language disappears, I think I'm just afraid I'll get stuck in that paradigm, and if I don't broaden my horizons now, I'll have a hard time later on. You may have a point though. I'll think about it. Thanks for the advice.
Python: this will teach you to program at a higher level, and the libraries will make it easier for you to get into web programming or GUI programming or simple game programming or any other thing that excites you. That's what it's all about, when you're learning: do something that excites you, and you'll learn faster. Python has a very low barrier to entry, so try this first.
Lisp: once you know Python, you're not going to be bowled over by things like garbage collection. But you can still learn a lot from Lisp; if nothing else, it can give valuable practice with recursion and metaprogramming and the idea of a read-eval-print loop. It's a cool and fun language.
Haskell: this one is kind of difficult to learn, which is why I recommend learning it after you've got Lisp under your belt. A lot of advanced computer science stuff tends to debut in the Haskell community, and the average intelligence of Haskellers is pretty shocking. It's also a neat language that you can do cool projects with.
If you can learn these languages, I guarantee that you will be able to shift paradigms a lot easier than people who coasted along with the standard trio of C, C++, and Java.
Re: Ask HN: Confused semi-newbie programmer needs some advice.
#46IMHO as a learning language nothing beats LISP. It's a little tricky in the beginning, but the pay-off is great simply in the way it changes your perception of programming. This is a great place to start: http://gigamonkeys.com/book/
That's what I've been working off of for the past week or so. It's been really fun, I think I was just wondering if it's everything people say about it. Thanks for the input. I wouldn't mind continuing with CL. Many people I've talked to said they find it incredibly useful for small projects that they need to throw together in a short time.
Re: Ask HN: Confused semi-newbie programmer needs some advice.
#47How did they get created or conceptualized in the first place? Why do we need them?
Do it the right way: Start with C, and start from the smallest and most fundamental constructs that C has: The structures and functions. Know that there was only assembler in the first place. Then look into how function calls are made. Disassemble the simplest function you have and understand its logic. Now you know why there is a function. Then go into the structure. Disassemble one. Put different types in it, see how they get laid out in memory.
Start as above, and learn how things work down to the last byte. Then eventually you will cover all constructs created and you will know where they come from. Do the above for 3-5 years, each time you encounter a new language idiom or concept.
Finally you will see that in all strongly typed languages most constructs are worthless and they get in your way. You will get back to using C ;-)
You might also go for the much higher level languages or different areas of computing, but since you showed interest in understanding programming deeper, this is the way to go.
Re: Ask HN: Confused semi-newbie programmer needs some advice.
#48Well your coming to that realization 15 years earlier than I did. I developed commercial apps in C/C++ and only recently have discovered lisp and other related languages, and just find them to be much more enjoyable to think and hack in. If you want an absolute mind blowing trip, grab a copy of scheme or a lisp variant such as Clojure [hip at the moment].. and work through SICP - 'Structure and Interpretation of Comp…
Text: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#...
Videos: http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma...
I'd recommend at least the first video lecture and see if you like it.
Re: Ask HN: Confused semi-newbie programmer needs some advice.
#49Learning languages in different families teaches you to abstract away the abstract algorithmic concepts from the language family specific concepts. If I were designing a CS program, I'd probably include: - C (imperative) - Python (object oriented) - Scheme (functional) Interesting with that selection is that none of those are my weapons of choice in their niches for actual projects (I prefer C++, Ruby and Scala), but…
Re: Ask HN: Confused semi-newbie programmer needs some advice.
#50I would recommend learning JavaScript. Java, VB, PHP, etc. are pretty much all the same in comparison to JavaScript. I’m not talking about syntax or patterns but about general purpose. In my opinion, JavaScript is the most important complementary technology to the - what I call them - backend languages. Today, web-enabling almost always is a requirement. People usually want access to their applications with their iph…