• Register
  • TOS
  • Privacy
  • @NeoGAF
  • Like

Tiktaalik
Member
(05-28-2012, 09:39 PM)
Tiktaalik's Avatar
For C++ two of the very best books are Effective C++and More Effective C++. Once you understand the basic syntax of the language, the next step is to figure out how you should best program in that language and to begin to understand what the potential pitfalls are. These two books cover that subject matter and are absolutely fantastic.

If anyone else is quite experienced in non-C++ languages I'd love to know what books they think are equivalent in other languages. Something for the intermediate professional that explains how you should program in the language.
Shadowlink
Member
(05-28-2012, 09:47 PM)
Shadowlink's Avatar
Awesome OP! Totally adding this thread to my subscriptions now. Thanks DodgeAnon!
Chris R
Member
(05-28-2012, 09:49 PM)
Chris R's Avatar
Pretty good with vb.net/c# if people need help with that. Also know my way around asp.net if people have questions about that (I know, web stuff isn't 100% programming :p)

Still wanting to get into Objective C and iOS development on the side at some point, because that seems to be one area of growth in the market (mobile web stuff is getting big too) and expanding my skill set is a good idea. And I guess I'll try to have a basic understanding of C++ too thanks to this thread.
Window
Member
(05-28-2012, 09:51 PM)
Window's Avatar

Originally Posted by TheExodu5

I think this year I might try to take up some hardware projects...get myself an FPGA board and work on my VHDL skills. You can come up with some really neat and useful designs if you know how to work an FPGA board. Completely different mindset though, since FPGA programs run in full parallel. You really need to be comfortable with state machines to get anywhere. There is such a large sense of accomplishment from creating working FPGA based designs though. I made my own simulated MIPS processor in school...still one of the biggest highlights of my degree.

Just did this last week and it was indeed awesome.
Shadowlink
Member
(05-28-2012, 09:54 PM)
Shadowlink's Avatar
Are the programming for dummies books any good?
Kikarian
Member
(05-28-2012, 09:56 PM)
Kikarian's Avatar

Originally Posted by Shadowlink

Are the programming for dummies books any good?

Depends on the language.
SRG01
Member
(05-28-2012, 09:56 PM)
SRG01's Avatar
No Accelerated C++ recommendations, GAF? For shame!!
Haly
One day I realized that sadness is just another word for not enough coffee.
(05-28-2012, 09:56 PM)
Haly's Avatar
The "for Dummies" series of books are generally not well thought of, though I never read any of them. With a wealth of recommended and acclaimed resources why would you settle for one of those?
Tacitus_
Member
(05-28-2012, 09:59 PM)
Tacitus_'s Avatar
Cool thread.
I'm currently looking forward to learning Java this summer (gotta refresh my memory for an entry exam first). Also doing some hobbyist stuff with Python and Pygame. Too bad knowing Python isn't exactly employable here, but Java spots are a plenty.
-KRS-
Member
(05-28-2012, 10:00 PM)
-KRS-'s Avatar
I'd like to recommend this book by Eric S. Raymond called The Art of Unix Programming. Despite its name I really recommend reading it even if you're not planning on designing applications for Unix, because it teaches you good programming design philosophies that you can use in any programming environment.

http://catb.org/~esr/writings/taoup/html/

Especially this page is essential:
Basics of the Unix Philosophy

edit: A small taste of what it's about:

Culture? What Culture?

This is a book about Unix programming, but in it we're going to toss around the words ‘culture’, ‘art’, and ‘philosophy’ a lot. If you are not a programmer, or you are a programmer who has had little contact with the Unix world, this may seem strange. But Unix has a culture; it has a distinctive art of programming; and it carries with it a powerful design philosophy. Understanding these traditions will help you build better software, even if you're developing for a non-Unix platform.

Every branch of engineering and design has technical cultures. In most kinds of engineering, the unwritten traditions of the field are parts of a working practitioner's education as important as (and, as experience grows, often more important than) the official handbooks and textbooks. Senior engineers develop huge bodies of implicit knowledge, which they pass to their juniors by (as Zen Buddhists put it) “a special transmission, outside the scriptures”.

Software engineering is generally an exception to this rule; technology has changed so rapidly, software environments have come and gone so quickly, that technical cultures have been weak and ephemeral. There are, however, exceptions to this exception. A very few software technologies have proved durable enough to evolve strong technical cultures, distinctive arts, and an associated design philosophy transmitted across generations of engineers.

The Unix culture is one of these. The Internet culture is another — or, in the twenty-first century, arguably the same one. The two have grown increasingly difficult to separate since the early 1980s, and in this book we won't try particularly hard.
SteveWinwood
Banned
(05-28-2012, 10:01 PM)
SteveWinwood's Avatar
Which one is better (not necessarily easier) to go to c++ from? Ruby or python?

Or should I just say fuck it, i'm a smart kid and dive headfirst into c++ regardless?
Kikarian
Member
(05-28-2012, 10:02 PM)
Kikarian's Avatar

Originally Posted by Haly

The "for Dummies" series of books are generally not well thought of, though I never read any of them. With a wealth of recommended and acclaimed resources why would you settle for one of those?

This. I would only use dummies book as a last resort or for VB.
usea
Member
(05-28-2012, 10:03 PM)
usea's Avatar

Originally Posted by Tiktaalik

For C++ two of the very best books are Effective C++and More Effective C++. Once you understand the basic syntax of the language, the next step is to figure out how you should best program in that language and to begin to understand what the potential pitfalls are. These two books cover that subject matter and are absolutely fantastic.

If anyone else is quite experienced in non-C++ languages I'd love to know what books they think are equivalent in other languages. Something for the intermediate professional that explains how you should program in the language.

I love effective c++ and I know exactly what you mean. I mostly work in C# and I think I have a pretty good understanding of it, but I am not exactly sure what to recommend. C# has a lot less gotchas than a language like C++, and Effective C++ is mostly a list of gotchas and good practices for dealing with them.

I read a lot of books like
The Art of Unit Testing
Dependency Injection in .NET

But they're about concepts not directly related to the language. Mostly I try to follow the SOLID principle and general good practices with regards to OOD. But again, none of it is directly applicable to C#.
Tacitus_
Member
(05-28-2012, 10:04 PM)
Tacitus_'s Avatar

Originally Posted by SteveWinwood

Which one is better (not necessarily easier) to go to c++ from? Ruby or python?

Or should I just say fuck it, i'm a smart kid and dive headfirst into c++ regardless?

You can learn C and C++ straight up.. you just won't have some of the niceties of the newer languages.
Shadowlink
Member
(05-28-2012, 10:06 PM)
Shadowlink's Avatar

Originally Posted by Haly

The "for Dummies" series of books are generally not well thought of, though I never read any of them. With a wealth of recommended and acclaimed resources why would you settle for one of those?

I'm looking for all the best possible resources out there. I'll stick with the ones on the OP, and decide which one is best suited for me.
Oozer3993
Member
(05-28-2012, 10:06 PM)
Oozer3993's Avatar

Originally Posted by mugurumakensei

Depends on how in-depth the courses are... I find beginners get tripped up by the behavior of pointers along with related semantic items such as the dereference operator and the address-of operator. Otherwise, due to the limited number of features, the language itself is fairly simple.

"But besides that, how did you like the play Mrs. Lincoln?"
Shadowlink
Member
(05-28-2012, 10:07 PM)
Shadowlink's Avatar
For a beginner, is it best to start C or C#?
usea
Member
(05-28-2012, 10:12 PM)
usea's Avatar

Originally Posted by Shadowlink

For a beginner, is it best to start C or C#?

Absolute beginner to programming? Doesn't matter. Start with anything and just dive in. Don't be bothered with the religious "language wars." The basic stuff you need to learn exists in every language and the examples you find will be just as good. You're not learning a language, you're learning how to program.

edit: It's more important to find a good resource and good tools for learning than it is which language the resource/tools are in. Personally I think C and C++ are sub-optimal choices since it will be a lot easier to get stuck and not know what is wrong, where some languages with more modern/interactive tools will show you the exact problem when you make a mistake. But honestly, just dive in with whatever you want.
Kikarian
Member
(05-28-2012, 10:12 PM)
Kikarian's Avatar

Originally Posted by Shadowlink

For a beginner, is it best to start C or C#?

Python or C, it's generally up to you...
Shadowlink
Member
(05-28-2012, 10:14 PM)
Shadowlink's Avatar

Originally Posted by usea

Absolute beginner to programming? Doesn't matter. Start with anything and just dive in. Don't be bothered with the religious "language wars." The basic stuff you need to learn exists in every language and the examples you find will be just as good. You're not learning a language, you're learning how to program.

Originally Posted by DodgeAnon

Python or C, it's generally up to you...

Thanks for the responses!

Edit: Python and C seem like the notable choices.
Good Job Bob
(05-28-2012, 10:15 PM)
Good Job Bob's Avatar

Originally Posted by Shadowlink

For a beginner, is it best to start C or C#?

Start with Python.


www.learnpythonthehardway.org
SteveWinwood
Banned
(05-28-2012, 10:17 PM)
SteveWinwood's Avatar

Originally Posted by usea

Absolute beginner to programming? Doesn't matter. Start with anything and just dive in. Don't be bothered with the religious "language wars." The basic stuff you need to learn exists in every language and the examples you find will be just as good. You're not learning a language, you're learning how to program.

edit: It's more important to find a good resource and good tools for learning than it is which language the resource/tools are in. Personally I think C and C++ are sub-optimal choices since it will be a lot easier to get stuck and not know what is wrong, where some languages with more modern/interactive tools will show you the exact problem when you make a mistake. But honestly, just dive in with whatever you want.

Originally Posted by Good Job Bob

Start with Python.


www.learnpythonthehardway.org

Fight fight fight
-KRS-
Member
(05-28-2012, 10:18 PM)
-KRS-'s Avatar

Originally Posted by Shadowlink

For a beginner, is it best to start C or C#?

I'd say start with something that's very portable. With those two, C is without a doubt the most portable programming language. It might even be the most portable language of all languages since there are C compilers for pretty much every CPU architecture and operating system out there. C# is pretty Microsoft centric.

And yeah, Python is a great beginners language that is also very advanced. So it's not only for beginners, you can do very advanced stuff with it.
AgentP
Member
(05-28-2012, 10:19 PM)
AgentP's Avatar

Originally Posted by Haly

I kind of wish I started out in C++ rather than Java or C#. It's where all the jobs are and I would probably be a better programmer today if I learned to think with pointers earlier on.

This. My company looks for C++ or C as a backup and ignore all those other pansy languages. Don't get tied to some proprietary crap like C# unless you are a MS employee. Learn a real, cross platform language.

I started with C, then C++. I also use Python and Bash.
The Lamp
Member
(05-28-2012, 10:20 PM)
The Lamp's Avatar

Originally Posted by Good Job Bob

Start with Python.


www.learnpythonthehardway.org

I would agree....though the only language I know right now is Python and it was my first (duh). It was very easy to get into a programmer's mindset once you have Python down.
usea
Member
(05-28-2012, 10:22 PM)
usea's Avatar

Originally Posted by SteveWinwood

Fight fight fight

I think python is probably the best language to go with when first learning programming. It's an excellent option. Great resources, interactive interpreter, easy to do stuff and immediately see the results.

But in the end, the language you choose doesn't really matter that much when you first start out. There's a huge amount of things you need to learn, and the language you use has very little impact. You just need to actually dive in.
hodgy100
Member
(05-28-2012, 10:23 PM)
hodgy100's Avatar
I started learning pascal at college which is a very simple language but it's not really relevant in this day and age.

If you are a beginner it doesn't really matter which language you start on. they all have similar principles. its mainly syntax differences.

But I do recommend you start with C++ as it is a big language in the programming space and the things you learn from it can easily been applied elsewhere. I've found the migration from c++ to c# to be quite simple for example.

Python is also a great beginners language as its so simple to get started and make something quickly.

I mad a simple angry birds clone in a couple of days using Python and the Pygame and Pymunk libraries for example. it really is a fun and interesting language.
Angelus Errare
Banned
(05-28-2012, 10:26 PM)
Angelus Errare's Avatar
I see some subconscious hate in the OP against Python! >:|

You need to add a section for Text Editors & IDEs. On Windows I recommend Sublime2. Fucking love this little bastard
Shadowlink
Member
(05-28-2012, 10:28 PM)
Shadowlink's Avatar
Python it is! I'll make sure to utilize this thread for all the questions I have. Thanks for all the recommendations. :)
Zeouterlimits
Member
(05-28-2012, 10:28 PM)
Zeouterlimits's Avatar
Started my first proper job, as a graduate programmer two weeks ago.
Mainly Java and JS/jQuery, really enjoying it :-).
survivor
Banned
(05-28-2012, 10:28 PM)
survivor's Avatar

Originally Posted by Angelus Errare

I see some subconscious hate in the OP against Python! >:|

You need to add a section for Text Editors & IDEs. On Windows I recommend Sublime2. Fucking love this little bastard

Yep I use that text editor too, worth the money. Though for Java and PHP I just use NetBeans instead
Lumination
'enry 'ollins
(05-28-2012, 10:39 PM)
Lumination's Avatar
Quick question, Java-GAF!

For as long as I can remember, I have been declaring and initializing reference types like this:
List<Integer> list = new LinkedList<Integer>();
instead of:
LinkedList<Integer> list = new LinkedList<Integer>();

I could swear that there was an subtle advantage to my way, which is why I switched to doing it in the first place. I can't remember why. Am I crazy, or was there actually a reason for this? Thanks!
mantidor
Member
(05-28-2012, 10:39 PM)
mantidor's Avatar

Originally Posted by Legato.Reborn-

Right now I'm working in XNA (C#) and loving it.

Trying to get this very simple game done and sent out to the marketplace to see what happens!

This new development has baffled me recently. For me the programming language for gaming always was C++, while C#, Java, VS, etc , etc, were meant for commercial applications, desktop or web. Are there any guides into how to enter this mysterious new world? I really want to start programming in what is my passion, I've been working for over 8 years, mostly .NET/c# with some java here and there, doing commercial stuff, that while is ok and you learn a lot, it really makes me feel like I die a little inside, simply because I can't get excited about what my applications are for.

And to be honest, and is not lack of modesty, I've made some neat stuff, but is never like actually making a freaking game. Somehow I always felt that it was just out of my league, but maybe I'm mistaken.
Tomat
Wanna hear a good joke? Waste your time helping me! LOL!
(05-28-2012, 10:43 PM)
Tomat's Avatar
I've taken two computer science courses focused on C++.

I feel like Bill Gates. When does the money start flowing in?
RJT
Member
(05-28-2012, 10:44 PM)
RJT's Avatar
To add to OP:
www.codecademy.com
www.udacity.com

I'm using those two sites to learn programming, and so far it has been great. Codecademy is for beginners, Udacity has some begginer and intermediate courses. Both are free, and completely hands-on.
usea
Member
(05-28-2012, 10:47 PM)
usea's Avatar

Originally Posted by Lumination

Quick question, Java-GAF!

For as long as I can remember, I have been declaring and initializing reference types like this:
List<Integer> list = new LinkedList<Integer>();
instead of:
LinkedList<Integer> list = new LinkedList<Integer>();

I could swear that there was an subtle advantage to my way, which is why I switched to doing it in the first place. I can't remember why. Am I crazy, or was there actually a reason for this? Thanks!

In Java, List is an interface while LinkedList is a concrete implementation of the List interface. So there isn't much of an advantage to declaring the variable as a List, but there is an advantage to taking List parameters to functions or in your public properties etc. Because then you're coding to interface, not implementation. If your function just operates on List, you can pass in anything that implements List and it'll work.

So for example if you wanted to change to ArrayList, you would only have to change the one line, not everything.
Kikarian
Member
(05-28-2012, 10:54 PM)
Kikarian's Avatar

Originally Posted by Angelus Errare

I see some subconscious hate in the OP against Python! >:|

You need to add a section for Text Editors & IDEs. On Windows I recommend Sublime2. Fucking love this little bastard

Oops. Didn't notice that haha. I'll update OP.
Lumination
'enry 'ollins
(05-28-2012, 10:55 PM)
Lumination's Avatar

Originally Posted by usea

In Java, List is an interface while LinkedList is a concrete implementation of the List interface. So there isn't much of an advantage to declaring the variable as a List, but there is an advantage to taking List parameters to functions or in your public properties etc. Because then you're coding to interface, not implementation. If your function just operates on List, you can pass in anything that implements List and it'll work.

So for example if you wanted to change to ArrayList, you would only have to change the one line, not everything.

YES. I know about interfaces, but I could not remember how doing what I did was functionally advantageous. Of course, turns out, it's just easier for the coder. Thanks!
cr_blah_blah
Member
(05-28-2012, 10:56 PM)
cr_blah_blah's Avatar
I started going through Python with inventwithpython.com (I'm sure there's better online tutorials, like the ones mentioned) this weekend and it's crazy how much of an easier time I've had with it than trying to learn C++ on my own. I've been told it's a good language if you want to learn as a hobby but not necessarily for job purposes. I've had fun learning Python whereas with C++ I was struggling more with language mechanics, if that makes sense. Though I kind of want a viable skillset that could theoretically help in future employment. Would it be better to just suck it up and push through C++ instead until I get better or stick with Python and go back once I have a much better foundation?
Zutroy
Member
(05-28-2012, 10:59 PM)
Zutroy's Avatar
Anyone know any good guides/ebooks for learning ASP.net? I've got the basics of both VB and HTML, but combining them both isn't clicking as well as I'd hope for me.
Zoe
(05-28-2012, 11:08 PM)
Zoe's Avatar

Originally Posted by CRD90

Anyone know any good guides/ebooks for learning ASP.net? I've got the basics of both VB and HTML, but combining them both isn't clicking as well as I'd hope for me.

I got the hang of MVC3 from the tutorials on http://www.asp.net/

I would really recommend C# at this point. VB's been on its way out as far as MS is concerned.
-KRS-
Member
(05-28-2012, 11:12 PM)
-KRS-'s Avatar

Originally Posted by cr_blah_blah

I started going through Python with inventwithpython.com (I'm sure there's better online tutorials, like the ones mentioned) this weekend and it's crazy how much of an easier time I've had with it than trying to learn C++ on my own. I've been told it's a good language if you want to learn as a hobby but not necessarily for job purposes. I've had fun learning Python whereas with C++ I was struggling more with language mechanics, if that makes sense. Though I kind of want a viable skillset that could theoretically help in future employment. Would it be better to just suck it up and push through C++ instead until I get better or stick with Python and go back once I have a much better foundation?

I've found that Python is indeed great for learning the basics of how programming actually works, so it is a good idea to start with Python and learn how everything there works because you can then use that knowledge when you're trying to learn other languages. After learning Python it would be a much more trivial task to learn C++ because you already know the basics of how programming works and just have to implement that knowledge into the new language's syntax and conventions.

And python is very popular for things like front-ends. The back-ends are usually written in something like C++ while the controlling front-end is written in scripting languages like Python. Actually, I think I read somewhere that it's required to know Python if you want to work as a software engineer for Google. I'm not sure if that's true or not, but I know Google uses python for a lot of their front-end implementations.

And don't forget that while learning it should always be fun. If you're not having fun learning C++ but do while learning Python, stick with Python because it's much easier to learn if you're having fun while doing it.
injurai
Banned
(05-28-2012, 11:13 PM)
Okay so I'm trying to pick up C++ on my own for the first time. I'm struggling to figure out yo best go about writing and compiling my code. VS 2010 seems a bit daunting to try to start out using, and writing in Notepad ++ leaves me the issue of figuring out how to compile my code.
Zutroy
Member
(05-28-2012, 11:15 PM)
Zutroy's Avatar

Originally Posted by Zoe

I got the hang of MVC3 from the tutorials on http://www.asp.net/

I would really recommend C# at this point. VB's been on its way out as far as MS is concerned.

All the tutorials and guides I've found so far all seem to be in C# too, but unfortunately work want it to be in VB. thanks for the link.
Kikarian
Member
(05-28-2012, 11:16 PM)
Kikarian's Avatar

Originally Posted by injurai

Okay so I'm trying to pick up C++ on my own for the first time. I'm struggling to figure out yo best go about writing and compiling my code. VS 2010 seems a bit daunting to try to start out using, and writing in Notepad ++ leaves me the issue of figuring out how to compile my code.

VS is actually one of the more 'easier' ones. It's just mainly not used for more experienced C++ programmers. I would have a look at VS and also Code::Blocks.
Chris R
Member
(05-28-2012, 11:17 PM)
Chris R's Avatar

Originally Posted by CRD90

All the tutorials and guides I've found so far all seem to be in C# too, but unfortunately work want it to be in VB. thanks for the link.

For the most part, VB.Net is C# There are only a few features that are in one or the other and not in both.

Dim myInt as Integer is the same as int myInt;
Tashi
343i Lead Esports Producer
(05-28-2012, 11:18 PM)
Tashi's Avatar
http://www.amazon.com/Learning-XNA-4...8239863&sr=8-1

Anyone have this XNA 4.0 book? I have the 3.0 one and it's good but I think I need to upgrade because of some of the things that have changed. Right now looking to do 2D stuff.
AngryMoth
Member
(05-28-2012, 11:19 PM)
AngryMoth's Avatar
Frighteningly little programming in my CS degree. Even my supposed 'large software project' (a very simple text adventure) ended up being about 20% coding and 80% writing up requirements and risk assessments and team managemet and design analysis. The idea was to simulate a business environment, and it would have been ok actually if the scope of the project wasn't so small that it rendered the whole thing farcical. Very much looking forward to pursuing some of my own interests this summer.

Been dipping my toe into iOS for a few months using the course on iTunes U which I'd highly reccomend. I've got an idea for a VERY simple game which I'm going to work on now I have the time. First though I will need a major refresher in OpenGL, and then I'll need to learn OpenGL ES. Looking at some of the program's I worked on last year is making me scratch my head a bit, even though it's mostly quite basic. Its fun though thinking about it in my head, how to cmpletely separate the rendering engine from the model and stuff.

Also signed up for a web development since it covers a lot of things I should probably know (HTML, php, etc) which I'll be doing more casually. Seems like a pretty big undertaking but it's aimed st beginners I think so I should have a head start and it was reduced by 92% so it doesn't really matter if I don't finish. My dad who is an absolute beginner signed as well so that should be interesting.
Zoe
(05-28-2012, 11:27 PM)
Zoe's Avatar

Originally Posted by AngryMoth

Frighteningly little programming in my CS degree.

CS isn't about learning how to code. It's about the theory. Ideally by the end you'll be able to take the concepts you learned and apply it to any language.

If you want to learn the trade of coding, go into CIS, take extracurriculars, or just learn on your own.
usea
Member
(05-28-2012, 11:34 PM)
usea's Avatar

Originally Posted by Zoe

CS isn't about learning how to code. It's about the theory. Ideally by the end you'll be able to take the concepts you learned and apply it to any language.

If you want to learn the trade of coding, go into CIS, take extracurriculars, or just learn on your own.

Every CS program is different. The distinction between CS and "CIS" does not exist in most places.

Many CS programs are very heavily focused on practical programming ability. Others are focused on theory / prepping for PhD programs. There's a hundred variations between.

Thread Tools