Reddit reviews: The best programming languages books

We found 1,275 Reddit comments discussing the best programming languages books. We ran sentiment analysis on each of these comments to determine how redditors feel about different products. We found 287 products and ranked them based on the amount of positive reactions they received. Here are the top 20.

Top Reddit comments about Programming Languages:

u/zaclacgit · 1 pointr/rubyonrails

Answers to follow, but try to make sure that you're not being overzealous in your attempts to learn Ruby. Questions about general code methodology are good, but in order to really understand and apply them you'll have to have a pretty solid grasp on the basics.

Despite how it may seem, you might be making it harder on yourself by trying to "skip ahead" and start applying later concepts early on.

There's a reason the first program most people write doesn't involve creating a Person class that responds to greet_with_hello(world).

If you've simply finished the Rails tutorial and want some Ruby experience, I'd recommend giving The Well-Grounded Rubyist a try. Many people in your position have done very well by it, and it will teach you what you need to know as you need to know it.

But as for your actual questions.

>What is the best resource to learn general code methodology and syntax, language agnostic. I'm picking things up what I would consider to be pretty quickly, but I know being able to learn about general themes and syntax of coding would help immensely.

Syntax is inherently tied to the language you're using. While there are similarities between some languages, there's no general "Guide to Syntax" that you would need to worry about. Happily, many people find that syntax is the easiest thing to pick up while learning an additional language. The general concepts are what you learn the first time, and then you learn "How do you do loops in C++ again?"

So don't worry about syntax.

However, Ruby does have the Ruby Style Guide that will answer questions about how to make your code look. As you'll find is the case with many things in Ruby, the style guide is not written in stone. It's just a good idea, most of the time.

With that out of the way, we can move on to things that are not language specific. Well, sort of.

Data Structures, Algorithms, and Design Patterns are established ways of doing or handling certain tasks. In theory/abstract, these are language agnostic. In practice, application or use can vary between languages.

There are a handful of decent books that will instruct you on advanced data structures and algorithms. I would visit /r/learnprogramming and peruse their sidebar for recommendations. That being said, I have yet to find a book written with examples in Ruby though. If you're completely unfamiliar with other languages then you might want to find something that deals in some sort of pseudocode.

It might be difficult to translate the concepts that are presented in pseudocode (or whatever language the book chooses) into Ruby. Especially if you are not decently comfortable with solving problems in Ruby, and thinking about problems in Ruby.

However, there are some books out there on how to design things in Ruby. They happen to be really good books too. I've honestly lost count of how many times I've recommended them, let alone how many time I've seen them recommended.

Practical Object-Oriented Design in Ruby will essentially guide you through learning what should and should not go into an object, and when to make those decisions. It is an eminently readable book, and conveys the information in concise and graspable fashion.

But if you're not in a position where you're really comfortable with the idea of what Objects are, and how you create/use them in Ruby, this book might be best saved for after you get a handle on the basics of that stuff.

In fact, most people seem to get the most benefit out of this book after they should have already read (and heeded) it. Sort of a situation where the right way makes the most sense only after you've been doing it the wrong way.

Secondly, Design Patterns in Ruby will show you how several common ways of doing things are utilized in Ruby. Personally, I read POODR before Design Patterns in Ruby, but I'm not aware of any reason read them in any particular order.

I'll reiterate that both of these books have general design concepts inside of them, but that they are dyed-in-the-wool Ruby books. You will absolutely learn things that you can take elsewhere, but it won't come to you in a purely abstracted manner.

>Is there a list of all the predefined calls in Ruby that I can find somewhere. Occasionally I write to do something only to find out that I'm breaking down a process that is shortened already. I'm sure these are commonplace for people who have coding experience before starting Ruby, but that's not a luxury that I'm afforded.

Absolutely! It's at Ruby Docs.

Don't get yourself down on this one. In this very particular case you might be a little better off than someone that has a bunch of programming experience in other languages.

Why you ask?

Lots of people aren't necessarily expecting the ease in which you can cause things to happen in Ruby with just a few method calls. They are waaaaaaaaaaaaaaay more used to breaking things down into smaller problems as a matter of necessity than you are. So congrats! Fewer habits to break there!

You can actually just google "ruby docs class-name" for whatever class you're working with to see what methods are available to you out of the box and what those methods do.

As a recommendation, I'd get pretty familiar with the module Enumerable, and check out the Array class. You'll end up using those a lot.

Like a whole lot.

In case you're curious, the awesomeness found in Enumerable is usually where people with prior programming experience tend to make things harder on themselves, because they're use to things being harder on them. A one line split, sort, and join is just a thing of beauty.

>Lastly if there was anything that really helped you that I didn't mention I'm open to any suggestions really.

In all honesty, what really helped me the most in learning Ruby was getting really comfortable with the syntax, and then learning what to do after that.

RubyMonk is probably one of the best places I've used to get a guide through Ruby, even advanced topics.

CodeWars is a good way to give your mind a nice stretch and workout. You'll just solve little problems that force you to make sure you know how to use Ruby when you need it.

After you're comfortable with the language, start making some small projects.

Games are usually a good first start. They have clearly defined rules and orders of events, as well as lots of things that are easy to recognize as objects.

Black Jack, Tic-Tac-Toe, MasterMind, BattleShip, and Chess are all pretty good projects to work on, and maybe in that order too.

Somewhere around then end of Tic-Tac-Toe or MasterMind I'd probably crack open POODR and giving it a read through. The value of all the lessons might not make complete sense at first, but it's that way with everybody. Just trust the author and go along with it.

Lastly, and I can not stress this enough, learn how to write and use tests for your code.

I know. It seems like tests are a waste of time. You're writing them before you're even really writing the code. On top of that, you already know how you want to do the thing you want to do, and it'll work!

Trust me. If the thing you're making is at all complicated, write some tests.

If you're ever going to want to change anything about it, write tests for it.

It will save you an incredible amount of time when you start breaking things, and will also give you the confidence that things probably aren't broken after you've fixed them.

Also, feel free to ignore everything I said about not jumping too far ahead. People learn in different ways, and desire to learn in different ways. If you feel like learning more advanced concepts now is going to be way more interesting for you, then you should totally do so.

u/MrBushido2318 · 20 pointsr/gamedev

You have a long journey ahead of you, but here goes :D


C++ Primer: One of the better introductory books.

The C++ Standard Template Library: A Tutorial and Reference: Goes over the standard template library in fantastic detail, a must if you're going to be spending a lot of time writing C++.

The C++ Programming Language: Now that you have a good idea of how C++ is used, it's time to go over it again. TCPPL is written by the language's creator and is intended as an introductory book for experienced programmers. That said I think it's best read once you're already comfortable with the language so that you can full appreciate his nuggets of wisdom.


Modern C++ Design: Covers how to write reusable C++ code and common design patterns. You can definitely have started game programming by the time you read this book, however it's definitely something you should have on your reading list.

C++ Templates: Touches on some similar material as Modern C++ Design, but will help you get to grips with C++ Template programming and how to write reusable code.

Effective C++: Practical advise about C++ do's and dont's. Again, this isn't mandatory knowledge for gamedev, but it's advice is definitely invaluable.

Design Patterns: Teaches you commonly used design patterns. Especially useful if you're working as part of a team as it gives you a common set of names for design patterns.


C++ Concurrency in Action: Don't be put off by the fact I've put this as an "advanced" topic, it's more that you will get more benefit out of knowing the other subjects first. Concurrency in C++11 is pretty easy and this book is a fantastic guide for learning how its done.

Graphics Programming

OpenGL: A surprisingly well written specification in that it's pretty easy to understand! While it's probably not the best resource for learning OpenGL, it's definitely worth looking at. [edit: Mix it in with Open.gl and arcsynthesis's tutorials for practical examples and you're off to a good start!]

OpenGL Superbible: The OpenGL superbible is one of the best ways to learn modern OpenGL. Sadly this isn't saying much, in fact the only other book appears to be the "Orange Book", however my sources indicate that is terrible. So you're just going to have suck it up and learn from the OGL Superbible![edit: in retrospect, just stick to free tutorials I've linked above. You'll learn more from them, and be less confused by what is 3rd party code supplied by the book. Substitute the "rendering" techniques you would learn from a 3d book with a good 3d math book and realtime rendering (links below)]

Essential Mathematics for Game Programmers or 3D Math Primer for Graphics and Game Development: 3D programming involves a lot of math, these books cover topics that OpenGL/DirectX books tend to rush over.

Realtime Rendering: A graphics library independent explanation of a number of modern graphical techniques, very useful with teaching you inventive ways to use your newly found 3d graphical talents!

u/CSMastermind · 4 pointsr/learnprogramming

I've posted this before but I'll repost it here:

Now in terms of the question that you ask in the title - this is what I recommend:

Job Interview Prep

  1. Cracking the Coding Interview: 189 Programming Questions and Solutions
  2. Programming Interviews Exposed: Coding Your Way Through the Interview
  3. Introduction to Algorithms
  4. The Algorithm Design Manual
  5. Effective Java
  6. Concurrent Programming in Java™: Design Principles and Pattern
  7. Modern Operating Systems
  8. Programming Pearls
  9. Discrete Mathematics for Computer Scientists

    Junior Software Engineer Reading List

    Read This First

  10. Pragmatic Thinking and Learning: Refactor Your Wetware


  11. Code Complete: A Practical Handbook of Software Construction
  12. Software Estimation: Demystifying the Black Art
  13. Software Engineering: A Practitioner's Approach
  14. Refactoring: Improving the Design of Existing Code
  15. Coder to Developer: Tools and Strategies for Delivering Your Software
  16. Perfect Software: And Other Illusions about Testing
  17. Getting Real: The Smarter, Faster, Easier Way to Build a Successful Web Application

    Understanding Professional Software Environments

  18. Agile Software Development: The Cooperative Game
  19. Software Project Survival Guide
  20. The Best Software Writing I: Selected and Introduced by Joel Spolsky
  21. Debugging the Development Process: Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams
  22. Rapid Development: Taming Wild Software Schedules
  23. Peopleware: Productive Projects and Teams


  24. Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency
  25. Against Method
  26. The Passionate Programmer: Creating a Remarkable Career in Software Development


  27. The Mythical Man-Month: Essays on Software Engineering
  28. Computing Calamities: Lessons Learned from Products, Projects, and Companies That Failed
  29. The Deadline: A Novel About Project Management

    Mid Level Software Engineer Reading List

    Read This First

  30. Personal Development for Smart People: The Conscious Pursuit of Personal Growth


  31. The Clean Coder: A Code of Conduct for Professional Programmers
  32. Clean Code: A Handbook of Agile Software Craftsmanship
  33. Solid Code
  34. Code Craft: The Practice of Writing Excellent Code
  35. Software Craftsmanship: The New Imperative
  36. Writing Solid Code

    Software Design

  37. Head First Design Patterns: A Brain-Friendly Guide
  38. Design Patterns: Elements of Reusable Object-Oriented Software
  39. Domain-Driven Design: Tackling Complexity in the Heart of Software
  40. Domain-Driven Design Distilled
  41. Design Patterns Explained: A New Perspective on Object-Oriented Design
  42. Design Patterns in C# - Even though this is specific to C# the pattern can be used in any OO language.
  43. Refactoring to Patterns

    Software Engineering Skill Sets

  44. Building Microservices: Designing Fine-Grained Systems
  45. Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools
  46. NoEstimates: How To Measure Project Progress Without Estimating
  47. Object-Oriented Software Construction
  48. The Art of Software Testing
  49. Release It!: Design and Deploy Production-Ready Software
  50. Working Effectively with Legacy Code
  51. Test Driven Development: By Example


  52. Database System Concepts
  53. Database Management Systems
  54. Foundation for Object / Relational Databases: The Third Manifesto
  55. Refactoring Databases: Evolutionary Database Design
  56. Data Access Patterns: Database Interactions in Object-Oriented Applications

    User Experience

  57. Don't Make Me Think: A Common Sense Approach to Web Usability
  58. The Design of Everyday Things
  59. Programming Collective Intelligence: Building Smart Web 2.0 Applications
  60. User Interface Design for Programmers
  61. GUI Bloopers 2.0: Common User Interface Design Don'ts and Dos


  62. The Productive Programmer
  63. Extreme Programming Explained: Embrace Change
  64. Coders at Work: Reflections on the Craft of Programming
  65. Facts and Fallacies of Software Engineering


  66. Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software
  67. New Turning Omnibus: 66 Excursions in Computer Science
  68. Hacker's Delight
  69. The Alchemist
  70. Masterminds of Programming: Conversations with the Creators of Major Programming Languages
  71. The Information: A History, A Theory, A Flood

    Specialist Skills

    In spite of the fact that many of these won't apply to your specific job I still recommend reading them for the insight, they'll give you into programming language and technology design.

  72. Peter Norton's Assembly Language Book for the IBM PC
  73. Expert C Programming: Deep C Secrets
  74. Enough Rope to Shoot Yourself in the Foot: Rules for C and C++ Programming
  75. The C++ Programming Language
  76. Effective C++: 55 Specific Ways to Improve Your Programs and Designs
  77. More Effective C++: 35 New Ways to Improve Your Programs and Designs
  78. More Effective C#: 50 Specific Ways to Improve Your C#
  79. CLR via C#
  80. Mr. Bunny's Big Cup o' Java
  81. Thinking in Java
  82. JUnit in Action
  83. Functional Programming in Scala
  84. The Art of Prolog: Advanced Programming Techniques
  85. The Craft of Prolog
  86. Programming Perl: Unmatched Power for Text Processing and Scripting
  87. Dive into Python 3
  88. why's (poignant) guide to Ruby
u/ryc8889 · 1 pointr/java

I would also advocate Joshua Bloch effective Java

He does a very good job of breaking down different Java tips into different chapters and each chapter has a set of items. He also goes one step further and instead of just instructing you to do one thing blindly he goes over the other options possible and why they are not optimal

Also as an added bonus, Amazon says there's a third edition being released in october

Effective Java (3rd Edition) https://www.amazon.com/dp/0134685997/ref=cm_sw_r_cp_api_ccmEzb08YXW4C

Rob Martin's clean code is another book I would recommend but it isn't specifically for any one type of project but it gives nice examples of how to cleanly structure your code(also has a nice set of "smells and heuristics" which you can use as a pocket reference) but given your past experience this book can probably be more of a skim.

Other than that I would agree with what other people are saying with learning a framework. I like spring boot and there's plenty of example projects on GitHub that uses it and spring's own documentation is also pretty good.

For concurrency I would recommend Brian goetz Java concurrency in practice.

If you want a refresher for data structures and algorithms and just some examples of it in java I recommend Robert Lafore's data structures and algorithms in Java but if you're more familiar with math/algorithms and want to do a deeper dive then the CLRS introduction to algorithms is the holy Bible.

Edit: one other thing that I have found extremely useful is online developer websites

My top three are:
Dzone - has fantastic refcardz which are like cheat sheets for different frameworks, technologies and even general principles as well as articles for general programming as well as specific topics (cloud, Db, iot, etc)

Tip - subscrbe to the dzone newsletter. They send you emails that are collections of 10 or so articles and I usually just look through them to see if there's anything interesting or relevant to me

Infoq - similar to dzone also has a great collection of articles and presentation videos

Oreilly - not really a website I know but if you look at their free ebooks there's a good collection of them that will help you get started depending on what topics you're looking at

Bonus - YouTube. There's just so many tutorials and videos starting from beginner levels all the way to advanced topics like scaling cloud architectures for google-like loads, microservices, deployment.

I don't think anything beats doing a personal project though. If anything you can fork a starter spring boot project(which generally revolve around a basic concept like an online book store) and re-write it to be about a concept you're interested in.

Also reactive extensions seem to be catching a lot of buzz these days. I don't have any personal experience working with them but could also be another interesting topic to look into since I think java is actually adding support for reactive streams in java 9

u/KRONie · 3 pointsr/learnprogramming

Download them all and give each one a shot, but you're putting way too much thought this.
It literally doesn't matter this early on. You can get away with using notepad.exe and gcc. VSCode requires some manual setting up but its super versatile, supports many languages, and has a ton of plugins. VS Community comes with everything you need out of the box and is free (For a beginner there's literally no difference between community/pro/enterprise except the price tags). Never used clion, but I imagine it's fairly sophisticated as well, but it's paid, and Im not sure I'd justify spending money on something while im learning if im only gonna use 1% of its features considering there are free alternatives that do essentially same thing with main difference being the interface.

Don't stress too much about what IDE to use. Find some material, and stick with the program and as you go along youll have better idea of what youre looking for in an IDE and which one of the options suits you best.

Im not sure if there's a book for C++ similar to "Automate Boring Stuff" as Python and C++ have different purpose. That's not to say that there's things you can do in Python that you can't do in C++, but there are definitely things that python is better suited for compared to C++. It's like opening a tin can with a knife. Doable? Totally. Are there better tools to do the job? Definitely.

This is the book we used in our class https://www.amazon.com/Starting-Out-Control-Structures-Objects/dp/0133769399

It seems well written, and easy to follow along for a complete beginner, and is fairly comprehensive to get you up and running with C++.
For what it's worth, I learned on Visual Studio Community and haven't felt the need to switch IDEs since.

u/[deleted] · 2 pointsr/ruby

sorry to hear you're having trouble; i get my ass kicked all the time.

if programming languages were like poems, i'd liken things like C# to an epic and ruby to a haiku. both are packed full of meaning, but the approach toward expressing it is radically different (imho: just an impression, keep the hatches battened down). the ruby community focuses very much on readability, in the sense that code sometimes reads more like pseudocode, or even just regular text, than i've seen in other lanaguages. this focus on readability is tightly coupled with a preference for terseness wherever and however possible: things like dry (don't repeat yourself), etc. are heavily emphasized.

sometimes it feels to me like i'm meeting a new person when i learn a new language, tool, etc.: it can go well or poorly, but regardless it takes a while to learn each other well enough in order to communicate effectively. the only way to expedite the process is familiarity. if familiarity is in short supply, patience appears to be the only way forward. disagreements will arise, but i try to look at those as opportunities to potentially broaden my perspective.

i'd recommend just taking some time in a low-pressure environment to work through some examples (small, easy ones just to get the feel for it) and read things like the pickaxe or the ruby way. eloquent ruby is on my reading list as well.

as far as editors go, i tried aptana (eclipse), rubymine, etc. i finally settled back on vim, with a few plugins to help along. so far, i've got pretty much everything i need out of an ide - granted, i do tend to use nix as an IDE. if you'd like some more information on that, here's a blog post i wrote a while back about my setup then. it's for ubuntu, but some of the gems, etc. it references may be helpful. of particular note is rubocop, which is a linter for ruby. about the only things i don't have via vim (either as part of default vim or via plugin) is code-completion (honestly don't use it that much) and a built-in debugger (again, nix as an IDE, plain old ruby debug gets me by. yes, pry. i know.). for built-in debugging, there's vim-ruby-debugger, and for autocompletion there's youcompleteme. i haven't personally used those plugins yet, but they're on my list to try out. there are probably others as well.

hope this helps.

u/just_had_to_reply · 52 pointsr/cpp

For the salty:

What is the best advice you can give someone just starting a CS education?

Get good at the fundamentals: algorithms, data structures, machine architecture. Learn to use a programming language (or their support system), and not just a language. Work on other major projects.
All the trendy stuff you will learn along the way. When you will be good at the fundamentals, you will be good at games, graphics, web design, networking, security, etc. It’s also beneficial if you know some mathematics.
Here are some links on software, and education.

Hey Bjarne. Which C++ compiler do you use?

GCC or Microsoft, soon Clang (again) as well. To be certain and achieve portability it’s better to use more than one. When I teach students it’s always Linux, Windows AND Apple.

Hey Bjarne. Have you heard of Mozilla's newly developed Rust programming and, if so, what is your opinion about it? It seems to me that it could be a really good competitor to C ++, with, among other easily guaranteed memory safety and safe parallelism .

I know a little bit of rust, and many other languages, but my work is focused on C++ and the use of C++.

If has long (decades) been my ideal to make C++ completely type and resource safe. We are almost there: http://www.stroustrup.com/resource-model.pdf. It's part of a fairly ambitious program to modernize the C++ use: https://www.youtube.com/watch?v=1OEu9C51K2A and https://github.com/isocpp/CppCoreGuidelines.

All too often C++ is used as if it's still 1990.

What is your opinion about C (and C ++)'s use of null - termination of strings. Opposed to, for example, Pascal. With many security holes to follow. C ++ will of course have to continue using the null - termination for simple strings, in order to remain compatible with C. (/u/kingguru stresses that you have the ability to use std :: string ) https://en.wikipedia.org/wiki/Null-terminated_string#History

I prefer std :: string. It is not zero- terminated and easier to use than char. You get nothing from using char to communicate with C. "Safety" is much more than just using a single type (or not). "Security" has to do with the whole system; a hacker goes after what is now the easiest to break through. As far as I know SQL injection is still language dependent (SQL can be used from any language) and very popular with hackers. C ++ is type and resource safe: http://www.stroustrup.com/resource-model.pdf.

Hey Bjarne. I have heard that you are good at answering emails, etc., I would like to say thank you for coming here to answer our stupid questions ;) My first question is probably one that could trigger a much and too long answer:

  1. If you had the knowledge that you have now when you originally made ​​C ++ - What would you have done differently?
  2. What little popular/known language do you think deserves more love?
  3. I have heard that D is trying to implement the " language " that you often citereret to hiding in C ++ ( " Within C ++, there is a much smaller and cleaner language struggling two get out"), do you think that there is a truth to that statement ?

    Almost every new language would be a "C++" Killer. Almost every language wants to and tries to be "general purpose". Almost every language wants to try and be for "system programming". But that is difficult. C++ is in fact, not quite bad and is still being developed to cope with new problems and clear old problems and feel better. E.g. http://www.amazon.com/Tour-C--Depth/dp/0321958314/ref=asap_bc?ie=UTF8 And with approximately 4.4 million C++ programmers: http://blog.jetbrains.com/clion/2015/07/infographics-cpp-facts-before-clion/. Moreover, it is good that there are many programming languages. The world would be a boring place if there was only one. But, there is no language that is close to being the "little language stored in C++ that wants to get out" as I sometime dream about: http://www.stroustrup.com/hopl-almost-final.pdf

    Edit: Will update if there is any interest in it.
u/Versaiteis · 7 pointsr/ProgrammerHumor

Along with the advice from /u/perpetualwalnut the book "The C++ Programming Language" by Bjarne Stroustrup (the language creator). It's limited in being C++11 (we've had 14 as a minor update and now we're approaching the major update of 17) but it's a pretty solid reference for a large portion of the language (>1,000 pages). (Edit:)It's not a book that will teach you C++ directly, but it's a good reference and is pretty extensive while providing motivation and examples of the language features.

For free sources I suggest cppreference.com as a great online reference.

For videos this should give you a good idea of some language semantics that you may or may not be aware of (again by Bjarne).

This video by Sean Parent (former senior programmer/architect, I'm not sure which, of Adobe and worked directly on Photoshop) is a neat intro to how neat using STL can be.

And finally it may also be worth checking out r/cpp for C++ related stuff, they post good articles/videos relevant to the language from time to time.

Sorry for the info dump, this is just all stuff I would have loved to have when I started. C++ is a monolithic language, but you can do some pretty neat/fast things with it.

u/bonekeeper · 5 pointsr/golang

> Is it common to use a reverse proxy for HTTP heavylifting, or handling it in Go itself?
> I see a lot of references using go's http library directly. Is it advisable to use it straight rather than frameworks as in most of the other languages (not very common)?

Already explained.

> How does go take advantage of multiple cores? (natively, not containers).

If you write a simple hello world web server in Go, it will already be concurrent and parallel: whenever a new client connection comes, a new goroutine will be spawned to handle it and run on an available core (paralellism). Suppose you have something more complex than a 'hello world', something that queries a MySQL server, for example: after you write the query request to the network, your application will wait for an answer from MySQL. At this point, your 'goroutine' is suspended and another goroutine that is ready to do some work is awakened, and it's execution resumes from where it left off.

Once MySQL performs the query and replies with data, the event loop that runs inside the Go runtime will notice that there is data available to be read in the socket and will wake up your goroutine for you to deal with that data, and you'll work with the query rows. No need for callbacks or explicit async/await or futures, the runtime manages it for you. As far as your code is concerned, everything happened without interruption.

A lot of things will take advantage of multiple cores automatically for you: the webserver will spawn new goroutines to handle new clients (you don't need to do that yourself), when sorting integers from an array, the sorting implementation is already "multithreaded", etc.

To take advantage of multiple cores explicitly in your code, you basically just need to spawn goroutines to do the work that needs to be done and have a way to communicate with your goroutines (channels, usually) and a way to know when those goroutines are done with their work (sync.WaitGroup). There are a ton of great articles and talks on this subject:

u/mysticreddit · 6 pointsr/gamedev

The correct answer to:

Q. Should I learn C or C++ first?


A. Yes.

WARNING: Highly Opinionated Analysis of C vs C++

I see a lot of people recommending one way but no one offering an analysis of BOTH the Pro's & Con's.

I've been using C++ since ~1990. I've briefly worked on a PS3 C++ compiler when I worked for Sony. I've seen 2 major problems over the years with C++ programmers:

1. People don't exercise discipline and restraint in K.I.S.S.

They use (and abuse) every language feature because they can. There is this tendency to over-engineer even the simplest things. Take a look at this complete clusterfuck of CRC in the Boost library.

1109 lines of over-engineered C++ crap for a simple CRC32 function instead of a mere 25 lines of code!?!?! The C version would:

  • do the same thing,
  • be simpler to write, and
  • be simpler to debug, and
  • more importantly solve the problem at hand, not abstracted to the point of being over-engineered.

    The trade-off would be is that it is less flexible, but WHEN was the last time you needed to use a custom CRC polynomial!?!? One would instead use a different algorithm such as MD5, SHA, etc. that:

  • has better better error-rate detection,
  • less collisions,
  • is multi-core.

    This excellent SO on hashing is but one example of focusing on the big picture.

    2. People lack a basic understanding of the cost let alone the implementation of C++ expressions.

    I've seen people stick a virtual function inside an inner loop and wonder why their performance is crap. I've seen people fail to grasp a basic understanding of pointers. I've seen people not understand memory management and how to guarantee zero memory leaks. I've seen people spend more time on writing an "über" template and waste hours debugging that instead of just writing something in 1/10 of the time and move on.

    IMO, due to the bloated, over-excessive verbose nature of C++ it is for these reason that I strongly recommend a beginner learn C first and then learn C++. You'll have a better understanding of why C++ is designed the way it is, what the design trade-offs are/were, what C++ hacks are, and how to best use the languages to their potential.

    However, this is ignoring the benefits and disadvantages of the Pro's/Con's of why one would learn C++ or C first.

    Learn C++ first

  • C++ Pro
  • C++ really is a better C then C in so many ways, too numerous to enumerate
  • In the ways it is worse the smart people / companies use a sub-set of the language: Ubisoft avoid Templates, Exception Handling, and Run-Time Type Identification. When even a C++ committee member admits he writes in a sub-set of C++ himself you know the language is b-l-o-a-t-e-d.
  • You won't have to unlearn certain "bad habits" of C
  • Your skills will up-to-date
  • Your code will be textually smaller (See note about Con)
  • Job Security -- that is half joking, half serious. Seriously.
  • You can enjoy the time exploring the different nooks and crannies of the language. You will see a different way to solve the same old problems. This can be both good and bad.
  • Eventually you'll be able to enjoy deep technical C++ comedy such as Hitler on C++
  • OOP (Object Orientated Programming) makes it almost easy to quickly write bigger scale programs
  • Is multi-paradigm: Procedural, OOP, Functional, Generic. You have the freedom to pick and choose the parts of the language that fits your needs.
  • For every problem you're trying to solve there is probably language support. Threads, and Atomics are finally part of the language.

  • C++ Con
  • You won't understand some of the C idioms used in practice
  • The language is HUGE -- it will take you a decade to properly learn the language
  • Debugging C++ is a PITA
  • While people write crap code in any language, it is harder to read bad C++ code then C code.
  • Compiler Support for the latest standards is a constantly moving target. Translation: Microsoft's Visual C++ has traditionally had crap support for the latest C and C++ standards. The good news is that MSVC 2015 finally supports a nice section of the language.
  • While C++ can be textually smaller, one's code can easily be "bloated" if not careful (such as templates and partial template specialization)
  • You really won't understand the run-time costs, nor be motivated to understand the underlying assembly language generated, by a "simple" C++ expression.
  • Expect L-O-N-G compile times for any significant code base unless you use a "Bulk / Unity" build (you compile one .cpp file that includes EVERYTHING)
  • It will be hard to resist over-engineering, over-complicating even the most basic tasks
  • iostreams is a complete clusterfuck. Even the C++ committee recognizes there are many problems with C++ iostreams but sadly nothing is being done towards performance at the cost of type safety.
  • It is far easier to blow your cache. Even Bjarne Stroustrup, the language designer, until 2012 didn't have a clue in understanding why Doubly Linked Lists were so slow compared to Arrays. HINT: The L1 Cache usage is critical for performance sensitive code.
  • People tend to over-use the OOP paradigm even when they shouldn't. People make dogma and religion of "Design Patterns", failing to think if the model applies or not.
  • The OOP paradigm is slow and bloated compared to Data-Orientated-Design. See Sony's Pitfalls of Object Orientated Programming
  • Reflection STILL isn't standardized -- everyone has their own "home grown" approach. Maybe in C++17 ?

    Learn C first

  • C Pro
  • The language is tiny and easy to learn. Learn C the Hard Way is a great tutorial.
  • No operator overloading
  • No function overloading
  • No lambas
  • Has no reflection
  • Has no exceptions
  • Has no RTTI (Run-Time Type Identification)
  • Has no STL (Standard Template Library)
  • You will have a better understanding of the run-time "cost" or performance of code instead of a single line hiding "hidden" behaviour.
  • You'll be a better programmer for understanding more of the lower-level implementation. If you don't know how to write itoa() or atoi() you're a noob programmer.
  • You'll be forced to keep things simple
  • You'll understand how to implement OOP in a non-OOP-native language, and better appreciate C++'s syntax sugar of OOP.
  • You'll appreciate how C++ templates solve some but not all "textual replacement" problems and why #define macro's suck for debugging.
  • Is ubiquitous, runs everywhere, and easy to get a C compiler for everything under the sun. Matz's Ruby Interpreter (MRI) was written in C, the Java VM was originally implemented in C, Perl is implemented in C, Linux is written in C. Anything popular and older then 10 years was probably written in C.
  • Variables must be placed at top of a brace {

  • C Con
  • Compared to C++, you'll hate how primitive the language is such as typedefs for structs, no local functions, const is only "half" useful in C -- it can't be used in array declarations (See: http://stackoverflow.com/questions/5248571/is-there-const-in-c ), etc.
  • No operator overloading
  • No function overloading
  • No lambas
  • Has no reflection
  • Has no exceptions
  • Has no RTTI (Run-Time Type Identification)
  • Has no STL (Standard Template Library)
  • Simple algorithms can be tedious to write
  • Variables must be placed at top of a brace {

    With that said there are numerous C++ books I would recommend to ALL C++ programmers. They are sorted from beginner to expert:

  • The Design and Evolution of C++, Bjarne Stroustrup -- another ancient but fundamental to understanding all the kludges in C++
  • The C++ Programming Language, 4th Edition <-- "Mandatory"
  • ALL the books by Scott Meyer
  • Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
  • Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition)
  • Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library -- ancient but good
  • Modern C++ Design: Generic Programming and Design Patterns Applied by Andrei Alexandrescu -- another ancient but it blew the doors open for C++ Meta-Programming. IT is interesting that he hates C++ -- he now works on the D language.

    If you can get only one book, get the The C++ Programming Language.

    Even though Bruce's book is ancient he keeps it simple and is a fun easy read. Remember this is before C++98 where the language is much simpler.

  • Thinking in C++, Bruce Eckel

    You can find it online for free

    Lastly, just because you can, doesn't imply you should. Use balanced C++ and you'll be fine.
u/paultypes · 1 pointr/scala

> The best that has been presented so far is an example using a random number generator that was interesting, but so conceptually removed from real life code that I don't know what to do with it.

But you asked for a simple real-world example. That's a simple real-world example. Feel free to replace the random number generator with, say, reading from a File, or accepting an HTTP request on a socket, or whatever.

>So it uses a thread...yes, I understand that threads are a scarce resource, but so are RAM and compute cycles.

Again, the difference is that we can specify threads' lifecycles programmatically. We can't with CPU cycles or memory. (Well, kind of: see scala-offheap for an alternative approach to memory management).

> The scalaz crowd doesn't have any problem blowing through all of the RAM on my machine...

I don't know what you mean by this. scalaz's just a library. How much memory are you using with it?

> ...so why do threads get the special "algebraic" treatment?

We're doing a lot of server-side stuff at scale, so it's helpful to be able to be very explicit about when and where we use threads, and in particular to be able to refactor our code at will without worrying, e.g. about introducing starvation etc. funnel, our distributed monitoring system, is a good example of a system that benefits from Task etc.

>What is so special about the use of a different thread to compute 1 + 1 that makes it hard to reason about?

It's not hard to reason about in isolation. It's that it may be fine in one place in your program and cause, e.g. thread starvation (depending on what ExecutionContext is implicitly in scope) elsewhere in your program. I mean, probably not with "1 + 1," but with people really doing stuff like wrapping JDBC calls with Future in, say, a web app that's supposed to scale, it's a real problem.

> I was hoping for a meaningful explanation of the concept that you find so powerful, and you didn't explain what anything meant, you linked to 250 pages of academic brain teasers using language that only computer scientists would bother with.

So pick just one link. The "academic brain teasers" are the actual explanation, and are meaningful. When we talk about "functional programming," we mean "ensuring software functions and math functions are the same thing." I mean, they are anyway; it's just that the math inherent in functions that mutate variables, throw exceptions, etc. really is incomprehensible. So we try to keep things simple. But simple does not mean "familiar," necessarily.

So when I say "algebraic identities," I just mean, to steal one of /u/tpolecat's examples:

val x = Task.delay(r.nextInt)
for {
a <- x
b <- x
} yield (a, b)


for {
a <- Task.delay(r.nextInt)
b <- Task.delay(r.nextInt)
} yield (a, b)

are "equal," i.e. they have the same value, and equally or more importantly, the "state of the world" (the RNG r, in this case) is the same both ways. It's really the latter point Tim Perrett is driving at with his tweet.

> If I have to be a PhD computer scientist to find any sort of usefulness for the distinction between Future and Task, then you can count me as unimpressed.

You don't; it's just that the ground-level explanations of what it means for pieces of code to "have the same value" or what is and is not a "side-effect" etc. are mathematical, and if you put a bit of effort into understanding them, they apply to all code. That's their real strength. Then you can make informed tool choices, pro or con.

> Frankly, this whole conversation makes me glad that the scalaz crowd decided to fork the compiler and go their own way.

We use scalaz with good ol' scalac like 99% of all scalaz users.

> Please take all this bullshit with it.

Your hostility just makes you sound extremely insecure. I'm a mostly self-taught programmer, too (had freshman year of university, flunked out). I've written a lot more imperative/OO code than anything else, and had never used scalaz before starting my current job. What I came to understand and appreciate is how much easier programming is when functions are referentially transparent (like the example above) and total (don't throw exceptions, dump core, loop infinitely... i.e. return a result).

So I'm sorry if the terminology is off-putting. I think, though, that if you work through Functional Programming in Scala, you'll find it's easier than it seems (with a bit of experience), and the benefits to your confidence in your code will be nearly immeasurable.

u/xPolydeuces · 2 pointsr/learnpython

My friend who was getting into Python recently asked me about the same thing, I've made some research and this was what I came with. Just for the record, I'm personally a book dude - can't really focus much when learning from Udemy courses and stuff like that, so I will only cover books:

First book:

Python Crash Course by Eric Matthes
Very solid position for beginners. The first part of the book covers Python's basics - data types, lists, functions, classes, pretty much everything you need to get a good grasp of Python itself. The second part of the book includes three practical projects, mini-game, data visualization and an introduction to making web apps with Django. From what I so, it's a pretty unusual approach to beginner friendly books, since most of them avoid using additional libraries. On the other hand, it's harder to get bored with this book, it really makes you want to learn more and more once you can actually see the effects of all your work.

Automate the Boring Stuff with Python by Al Sweigart
Best alternative if you want to spend 0 bucks or want to dive all into projects. Even though it covers basics as well, I still recommend to read it, even if you have done Python Crash Course before, even just for the sake of all those projects you can make to practice your Python. He also has a Youtube channel where he has a loooot of Python content and sometimes does cool things like streaming and helping people make their code better, really cool guy, be sure to check his channel!

Second book:

Writing Idiomatic Python by Jeff Knupp

Very solid book, filled with examples what you, as a Python developer should do, and what you shouldn't (and why not). Sounds like not much, but it is actually a lot of useful knowledge that will make your code shorter, cleaner and better.

Effective Python by Brett Slatkin

A bit easier to understand and easier to approach than a previous book, but still has a load of knowledge to share.

Third book:

Fluent Python by Luciano Ramalho

One of the best Python books overall, covers all of the things that previous books could have missed or didn't have time to introduce. My personal favorite when it comes to books for advanced Python developers.

All of those recommendations are my personal opinion, so if anyone has anything to add, I will gladly listen to any comments!

u/phao · 8 pointsr/cscareerquestions

The best way I know how is by solving problems yourself and looking at good solutions of others.

You could consider going back to "fundamentals".

Most programming courses, IMO, don't have nearly as many exercises I think they should have. Some books are particularly good on their exercises list, for example K&R2, SICP, and TC++PL. Deitel's has long exercises lists, but I don't think they're particularly challenging.

There are some algorithms/DS books which focus on the sort of problem solving which is about finding solutions to problems in context (not always a "realistic" one). Like the "Programming Challenges" book. In a book like that, a problem won't be presented in a simple abstract form, like "write an algorithm to sort numbers". It'll be inside some context, like a word problem. And to solve that "word problem", you'll have to find out which traditional CS problems you could solve/combine to get the solution. Sometimes, you'll just have to roll something on your own. Like a new algorithm for the problem at hand. In general, this helps you work out your reduction skills, for once. It also helps you spotting applications to those classical CS problems, like graph traversal, finding shortest plath, and so forth.

Most algorithms/DS books though will present problems in a pretty abstract context. Like Cormen's.

I think, however, people don't give enough credit to the potential of doing the exercises on the books I've mentioned in the beginning.

Some books I think are worth reading which also have good exercises:

u/HPCer · 1 pointr/cpp

When I started, the most memorable three resources I know I had were the following:

  • Bjarne's book - I don't think any C++ developer can truly call themselves even intermediate until they have absorbed at least half the content in the book. I started off with his 3rd edition, which is way less intimidating and shorter, but I subsequently ran through this entire book after it came out. There are no shortcuts on here - you need to read it.
  • Effective C++ 3rd Edition - I would almost require this one as it prevents any new C++ developer from getting caught in C++ gotchas. You should ideally follow this book up with his 4th edition afterwords. The reason why I recommended the 3rd first is because that book is much more newbie friendly. The 4th edition is targeted towards experienced C++ developers that already have had their feet wet with C++11/14 and want to figure out some best practices. Note the 3rd edition is for C++98 while the 4th is for C++11/14.

    After you're done with the two above required books, here are some useful readings:

  • What Every Programmer Should Know About Memory - This is an absolutely essential reading whether or not you've taken any systems courses. It's the foundation of what you will be programming towards (optimizing CPU cache usage).
  • 1024cores - I believe this guy works/worked at Google at one point, but his site is essential to understanding multi-threaded programming (which is essential in the field). Browse through his site and learn what you can.
  • Linux Kernel Development - Robert Love (who also works at Google) has probably written the most concise and understandable book on the Linux kernel I've ever read, and I've run through the Daniel Bovet's book and Michael Kirrisk's. For one thing, they're 1,000 and 1,500+ pages, respectively. Secondly, all I've found in those two books that I didn't find in Robert Love's is the implementation details in some areas as well as the details on the scheduler. Robert Love's incredible descriptions on the bottom-half/tasklets were already more than effective for normal understanding. I believe the latter books were more detailed in the networking areas as well, but in that case, you're better off with Understanding Linux Network Internals.

    The above readings will probably be a solid 6-12 months to read and absorb assuming you spend a couple hours a day, but I think it'll be well worth it in the long run since this type of stuff sticks with you for a long time. I read the above around 2013, and I can still talk about the CFS/other schedulers, software interrupts, and how the CPU cache works. It'll also make converting to other languages even more of a breeze because you'll know how everything works underneath the hood.
u/HibiscusJ · 4 pointsr/learnprogramming

I am in an Associates program for programming right now so I am not really self teaching, although for some courses I am, but the best piece of advice I have heard to stay motivated is that you have to have a concrete goal. So things like learning a language or finding a job aren't really concrete goals, but something like I want to develop an android app that does "X" would be a concrete goal.

Also, I have found it easier to learn the more I learn. So that is pretty motivating as well. If you need a good resource and you are willing to spend money, [this book] (https://www.amazon.com/Intro-Java-Programming-Comprehensive-Version/dp/0133761312) is what I am using for my java class right now and it is excellent.

u/theimp_ · 3 pointsr/orlando

If this is your first programming language its a tad unfortunate that it has to be C++ but by no means does it mean it is bad or anything. In fact its the language most aspiring computer scientists started out with in college prior to the 2000s.

You can start off with
Programming: Principles and Practice Using C++
and then going onto The C++ Programming Language, 4th Edition after completing the first one. There is also C++ Primer that is also highly recommended as another book for starting out.

A book along with web searches when you have questions will get you pretty far. Having someone to ask questions if you get stuck on something conceptually is also useful. The best advice I can give you is to really play around with the language as you are learning and do most of the practice exercises too. Stroustrup also has solutions to the exercises from the first book I mentioned online. Hopefully you have some months available to learn the language. On top of that you might need to learn some computer science topics like data structures as well. You just can't rush these things but you can accelerate it a little.

As for me, my C++ knowledge is 'rusting away' by the day. I learned the STL with C++ when it was made official only a couple years after (like over 10 years ago). Nowadays you have Boost and the language itself has changed. I have not presently needed to update my C++ knowledge to what is latest and greatest but I shall.

Also worth pointing out is that In my experience, when you work with different companies you might find that you never use official C++ libraries and most current language features, but you are supporting legacy stuff that was first written maybe 20 years ago when not even built-in STL was available. This means either you are going to use some now-arcane implementation of someone's version of base libraries or the company rolled their own from the ground up many years ago, and because its so well entrenched in the code-base it continues to be used many years later. Not a big deal, but you might want to find that out for yourself, that if you are learning the latest and greatest of library and language features - you might or might not be using it in practice with your company.

You can PM me if you have questions but I'm not sure I can commit the amount of time you might need in a tutor role.

u/fiftycircles · 16 pointsr/gis

The first programming-related thing a company would look for in a candidate for a purely GIS job is Python, no doubt. Especially if you're brand new to programming, start with Python. If you're proficient in ArcGIS already, I recommend this book. You can also start with the easy online tutorials like Korlyth mentioned, but remember that you won't truly learn Python unless you apply it. Come up with a project and practice using your new skills. Then, if an employer asks for a portfolio, you have some good examples to share! A good example would be to analyze a large Excel file, import that data into ArcGIS, make some shapefiles from the data, and then maybe run some spatial analysis on those shapefiles-- ALL within your Python script (you don't even have to open ArcMap!). The big advantage is using Python for automation of repetitive tasks. It's tedious to do some analysis for all the individual counties in a state by hand, but you could practice doing this analysis in a script.

After that, I recommend learning some geospatial R. More and more organizations are starting to use R, and it can be helpful to learn some languages/packages that are not strictly used by ArcGIS. I recommend this book.

SQL might be good to learn since GIS tends to be all about databases. It might be tough to learn if you don't already have a huge database/server to work with, but try to learn what you can. I feel like Python, R, and SQL cover a lot of the non-web aspects of GIS programming.

If you want to take it to the next level, then you could learn some web-based programming. It can be tricky to learn this because there are several languages that work together (ex. HTML puts the content on the web page, CSS edits the content to make it look nice, and JavaScript manipulates the behavior of the content). You could start by building a basic web page (non-GIS) so you can learn these languages individually. Once you have a better idea about syntax and how they work together, you could move to GIS stuff. You could start by using a pre-existing web map service such as CartoDB and using HTML, CSS, JavaScript, etc. to put the web map on your own website and edit it.

u/mrmonkeyriding · 2 pointsr/webdev

I buy books because they go into a lot more details, or often are written really well, and easy to follow. Also, it's really nice to read paper. Often I keep books in the office as it's a quick and reliable way to research a topic in-depth without scrolling through hundreds of shit articles on a particular (and even controversial subject).

I really recommend these:

High Performance MySQL: Optimization, Backups, and Replication - I've read snippets, but it's recommended a lot and very good for more advanced readers.

SQL Antipatterns: Avoiding the Pitfalls of Database Programming - VERY beginner friendly, easy to read, follow, provides real and common scenarios and explains the anti-pattern, it's problems, the reasons to sometime excuse their use, and solutions. I love this book.

The Go Programming Language - Very good read, not TOO technical jargon, very nice to read, explains in depth and in an understandable way.

I've had plenty more over the years, but these are my current I have at home. Still more on order. :)

u/euphbriggs · 14 pointsr/elm

In some ways, I can sympathize for your frustrations; it doesn't seem like releases happen very quickly. On the other hand, I don't feel the struggle when I'm actually developing in Elm. If the language stayed the same as it is today, I'd still continue to use it for quite a while.

Where I feel there's room for growth is around tooling and libraries. The tools that are out there aren't bad, but (like everything) they can improve and expand. We as a community can start working on this and let Evan continue to deliver the quality he has been at the pace that's been working.

I think the trouble is that Elm competes with JS technologies. Love it or hate it, JS is probably the fastest moving community ever.

Its hard to ignore JS market share, but I don't personally feel its because of the outstanding merits of the language, its because everyone who is involved with frontend web development HAS to touch it at some point or another so there's a lot of effort around improving their experience. I chose to use Elm because its brings sanity to the browser and the predictability of the language.

I think a comparable situation on the backend is Go. Both Elm and Go are engineered languages (versus languages that evolve as needs change). Even now, the book recommended to most beginner is The Go Programming Language, which was published in October of 2015. Find a JS book published two and a half years ago that's still the #1 recommend book for people to learn the language.

I'm sure this relates a lot to my personality type, but I use both Elm and Go because of the consistency. Elm programming at one job is VERY similar to Elm programming at another job. JS programming at one job may be a completely difference experience than you'll find at another job (or even another team within the same company).

I view the price of consistency and good design is slower release cycles.

All that said, I don't blame you semorg, you seem genuinely interested in helping, not just complaining. Your post has me thinking of things I can do to help the community out with adoption. I'll let that idea simmer a bit and try to think of what I can do too.

u/no_life_coder · 2 pointsr/androiddev

Kotlin in Action seems to be the best reviewed on Amazon. I believe that anything specific to Android and Kotlin is not necessary since they're separate things that will convert pretty seamlessly. As for learning Kotlin, I'd recommend the Kotlin reference and good ol' google for any questions you might have. For a tutorial type series, Kotlin koans seems to be the best bet.

I personally came from Java then Swift within the last year. Kotlin so far has just been trial and error but not terribly difficult. If you want to buy a book to help with Kotlin, I'd do the koans series then buy something for functional programming. Possibly Functional Programming in Scala or the Java book from the same publisher. I've read a lot on functional programming and some stuff on lambda calculus. Outside of picking up haskell, just programming it the best you can and learning some of the basics from something like the funfunfunction series then build from there. Books can tell you theory but program design comes from experience.

EDIT: One thing that hasn't been inherently obvious so far was lambda expressions in Android. They seem like a powerful way to get things done effectively. Make sure you're using them when it seems appropriate.

u/JonKalb · 28 pointsr/cpp

Modern C++ (C++11 or later) books are not nearly as plentiful as those for Classic C++, but there are a few notables.

Bjarne's college text may be what you are looking for:

Programming: Principles and Practice Using C++ https://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784/ref=pd_sim_14_2/144-7765085-0122037

It is aimed at engineers, which makes it less general, but might be good for you.

Of course his general intro is also updated to C++11.

The C++ Programming Language https://www.amazon.com/C-Programming-Language-4th/dp/0321563840/ref=pd_sim_14_2/144-7765085-0122037

This is aimed at experienced systems programmers, so it may be a bit heavy for students, which makes the Primer (that you mentioned attractive).

C++ Primer https://www.amazon.com/Primer-5th-Stanley-B-Lippman/dp/0321714113/ref=pd_bxgy_14_img_2/144-7765085-0122037

Be certain to get the 5th edition.

Of Scott's books only the latest is Modern.

Effective Modern C++ https://www.amazon.com/Effective-Modern-Specific-Ways-Improve/dp/1491903996/ref=pd_sim_14_2/144-7765085-0122037?_encoding=UTF8

This is less an introduction for students than for Journeymen (Journeypeople?) programmers.

For just plain good programming style consider Ivan's book.

Functional Programming in C++ https://www.amazon.com/gp/product/1617293814

Don't be put off by "Functional." This style of programming will make your students excellent programmers.

There are some modern books of high quality that are niche.

The ultimate guide to templates:
C++ Templates https://www.amazon.com/C-Templates-Complete-Guide-2nd/dp/0321714121/ref=pd_sim_14_1/144-7765085-0122037

The ultimate guide to concurrency:
C++ Concurrency in Action https://www.amazon.com/C-Concurrency-Action-Anthony-Williams/dp/1617294691/ref=pd_sim_14_1/144-7765085-0122037

Some library options:

Despite its name, this is mostly reference. A very good reference.
The C++ Standard Library: A Tutorial and Reference (2nd Edition) https://www.amazon.com/Standard-Library-Tutorial-Reference-2nd/dp/0321623215/ref=pd_sim_14_2/144-7765085-0122037

Arthur's book covers C++17, which makes it one of the most modern on this list:
Mastering the C++17 STL: Make full use of the standard library components in C++17 https://www.amazon.com/Mastering-17-STL-standard-components-ebook/dp/B076CQ1RFF/ref=sr_1_fkmrnull_1

To what extent are you teaching C++ and to what extent are you teaching programing?

Good luck and have fun!

u/yamamushi · 11 pointsr/cpp

I would supplement your class with one of the many great C++ books out there, because there are many ways to learn C++ but few of them are good (or even "right") ways.

You should be careful to distinguish between best practices from C++ and the new ones in C++11, and I've found that many courses tend to teach C++ as if it's just C with some extra features.

Of note, some really good books are:

u/srblan · 1 pointr/csharp

I'm 35, no degree, 2 young kids, little time to study. I had an interest in coding but have done nothing more than an intro to HTML/CSS and Javascript while in community college.

I got a job as a tester/DBA support. I expressed interest in learning to develop as we were short staffed (still are).

I started with Udemy.com, C# Beginner with Mosh. I liked this course but felt it was a bit disjointed. His lectures did not always cover the material used in his challenges, but I will go back into his other two courses eventually.
Next I watched the Bob Tabor videos others have mentioned. I liked these, they were a little more direct and showed more actual coding than the Mosh vids.
Third - I read the first 20 chapters of this book: https://www.amazon.com/C-Players-Guide-3rd/dp/0985580135/ref=sr_1_1?ie=UTF8&qid=1521128465&sr=8-1&keywords=C%23+Players+Guide (most of this would be a review, but I like seeing how other people teach the same material)
Now, I'm working through this book:

After this book, i will move onto Pluralsight.

I am very much still a beginner, probably still a year or more away from supporting our devs at work. But the best advice I got was to code every day. You won't learn it if you don't do it. I don't know if any of this will help you get "job ready" super fast, but its the advice I was given and I just wanted to pass it along.

u/kitanata2 · 3 pointsr/personalfinance

I mentored at DevBootcamp localhost here in Columbus, Ohio and have worked as a software developer for the last 10 years (6 of which in consulting for startup companies). I don't know what program you'll be attending, or the curriculum they teach. Not all bootcamps are created equal, and if you have a scholarship I HIGHLY RECOMMEND you do extensive research into which program you'll be attending.

So first off, I want to say beyond a reasonable doubt, you should do it if you have an interest in software development. I don't want to discourage you from wanting a better life, and it's absolutely true that the best companies hiring devs don't give a shit about your degree or lack of it. The best developer I ever met had a Masters in Psychology, and I've met PLENTY of devs with CS Master degrees that couldn't code their way out of a paper bag.

A degree has no bearing on your ability to be a great developer.

That said, there are three things that will. Practice, patience, and passion. Software development isn't for everyone, and staring at a computer for 8 hours a day desperately trying to get something "simple" to work, that isn't working (sometimes for weeks at a time on a single bug) can be incredibly frustrating. It requires patience, very strong problem-solving skills, lateral thinking, creativity and a DEDICATION to life-long learning.

What you learn in your bootcamp will be invalid (or rather legacy code) in 2-3 years. You must keep learning, above all else.

That said, as much as I believe great developers can come from anywhere, I honestly think you need to have a mind for it. A sort of natural talent. It is completely possible, that you'll find you if you do this, that you're not cut out for it. If you go to a good program, they will guide you through that. Do not let it discourage you in your goals for a better life. For me personally, I struggled a lot in the beginning. I almost dropped out of college, twice. But I kept going, and that innate talent started showing itself.

For some people, they get programming right away. For others, like me, it takes awhile. And for others still, no matter how hard they try they just aren't capable of it. Walk this thread carefully. At first, it will seem like you understand 2% of what people are teaching you. It's like going to China without learning mandarin first. Everything will be confusing as fuck. You're going to think "This isn't for me. I can't do it", but odds are you can. If you are struggling seriously think "I can do this" over "I'm not cut out for it", especially if that 2% starts turning into 10% and then 15% and so on. In this case, it just means you need to get across some barriers to learning. Keep at it.

On the other hand, if you are doing everything you can to learn, and you've put in a TON of work and time and you're not retaining 5% of the stuff you're learning (or keep forgetting the same simple concepts over and over) after you've been doing it for awhile, do not be ashamed to throw in the towel. You gave it a shot. The only way to know if this line of work is for you, is to try it.

Here's how.

Before you start this bootcamp you need to start programming today. Like right now. Seriously. NOW. I don't give a shit about how your situation might be holding you back. Crash in the park. Start couch surfing. Go to the library. Find local tech events. Buy a shitty laptop off craigslist and dump linux on it, and start hacking. Go through this and this and this and this and this and this and buy this book. Start EASY. Pick the simplest looking thing, something targeted to kids, or middle-schoolers and start there and work your way through whatever you can. DO IT SLOWLY. Understand the fundamentals. It will seem like your not accomplishing anything for awhile (as far as writing cool looking apps). It's not a race. Understand what is going on with the code. Why does it do what it does? Why does it keep erroring? Why isn't the compiler doing what I think it's doing? Ask Questions. If you don't understand something, and you get stuck, go learn something else about coding, and come back. Learn to walk around problems. You're not going to get everything all at once. Some concepts are REALLY hard at first. Go learn the easier stuff first, then come back and try to climb that mountain again.

One of the most common thing people learning programming have told me, is that they did not realize it took so much effort just to do seemingly simple things. You will be surprised at the amount of code you have to write to get something to work, and you will beat your head against the wall every step of the way while you're learning. The compiler will fight you. The program will crash. The code just won't work, and it will seem completely unreasonable why. Shit will break without telling you, or giving you obvious error messages. Just realize, that every problem is a wall, and every wall you knock down gets you closer to your goal.

Once you feel like you can't learn anymore on your own. THEN start your bootcamp. Have a list of questions ready for the bootcamp. Write down specific things you weren't able to learn on your own, that you need help with there. ASK A SHIT TON OF QUESTIONS. Get a mentor and bug the ever living shit out of them.

Top 5 things that will fuck with you while you're learning.

  1. Basic control flow. (Loops, if statements, and shit)
  2. By reference / By value.
  3. Stack traces & Debugging.
  4. Object Oriented Thinking.
  5. Functional programming (Closures specifically).


    Now, for the reality check, after you graduate. It's extremely unlikely you'll get a job as an entry-level dev in Omaha (I looked up the stats) for more than $60k/year. It will take you at least 5 years to work up to $100k/year and that will require you to learn at an incredibly breakneck pace (and to hop jobs about once every 2.5 years). To get to that level of skill you will need to be writing code, on average 60 hours or more a week, and you'll need to experiment with shit that you aren't using at work and work on side projects at home. You'll need to do this non-stop.

    Lastly, even with DevBootcamp (which I think is an absolutely great program), the graduation rate was around 60%. Not everyone makes it, and even of those that did, not everyone got jobs. You need to go in there with everything you got, and even if it doesn't work out at the bootcamp, DON'T STOP PROGRAMMING. If this is what you want to do, and you keep learning, you can do it. I promise you. Just don't pump yourself up thinking it will be a cakewalk and you'll make out with a nice job in the end. It might not happen. If it does and you find yourself at a nice company, and you aren't putting in the work to learn, and grow, soon you'll be without a job and without the ability to find one. But if you work hard, and break through every wall that is holding you back, and you persevere you will make it in the end.

    The life of a developer is incredibly rewarding, and I would love to use some library you write in 3 or 4 years that makes my life easier. So go give it a shot, give it everything you go. Don't let failure (or the fear of it) hold you back.

    Good luck.
u/RangerPretzel · 1 pointr/learnpython

Sure, I'm self-taught, but I've been in software engineering for a while.

Python is like a lot of other languages. It has its own vocabulary for some things, but it also uses the vocabulary for most other things in the industry.

Mostly, I just picked up a book and started reading and coding. It also helps to have someone to chat with, too.

My one co-worker and I like to geek out about Python nuances. He's a big fan of it. I like Python, too, but prefer statically typed languages, like C# and Scala. Although I do code in Python daily.

So we have interesting debates about things. It's not that we're diametrically opposed about things, it's that we have subtle differences that we like to discuss.

And we both learn about the language this way.

So yeah: recommendation: Get someone to talk to about this. Also read other people's code.

Also, I like the book Effective Python: 59 Specific ways to write better Python

u/BirthdayBuffalo · 3 pointsr/androidapps

If you're starting completely from scratch (no programming knowledge at all), then learn Java. Intro to Java Programming is a pretty good and in depth book. Chapters 1-13 should be good enough to get started with Java programming.

If you want something faster or just need a refresher, than the Java tutorials from TutorialsPoint could work.

Other wise, if you already know Java, the BNR Android Programming book is a really good book for Android programming. It covers a lot of topics; the basics all the way to the more advanced, real world applications.

The Android Developers site is incredibly useful as well. The training and API guide sections do a good job at explaining more specific things and some sections include code snippets.

The biggest hurdle for me when I started was just setting everything up. Installing Java and Android studio was a pain because all the hiccups. It's more stable and straight forward to install now though. I'm pretty sure the intro chapter in the BNR book covers installation as well.

u/GameDevsQuest · 1 pointr/gamedev

Looks like this topic is pretty well answered, but I always like to plug the book that helped me learn C#, The C# Player's Guide by RB Whitaker. It's very readable and covers everything you need to be pretty well versed in C#. It isn't exhaustive by any means, but will get you comfortable enough to do quite well with C# in Unity. Alternatively, you can go through the tutorials RB Whitaker has in his website for free. It covers most of everything in the book, but is a little more brief. Also, check out the unity tutorials. They'll get you up to speed pretty quickly.

u/proverbialbunny · 0 pointsr/cpp_questions

Someone might recommend better but The C++ Programming Language has been well received as a modern introductory C++ book. You might want to consider starting with that. Also, picking an IDE can make life easy, but isn't a requirement. Of the IDEs to choose from: CLion is popular but costs. I think Visual Studio is popular, but I believe it costs too (Not to be mistaken with VS Code). Qt Creator is pretty popular as is KDevelop. Both are free.

u/javaxnerd · 2 pointsr/javahelp

> Effective Java - This has historically been an excellent reference for Java. It's not entirely beginner friendly, but if you have at least a working knowledge of Java it's an excellent book to have around. Note: The link is for the 3rd edition which is coming out soon, I assume it will be as good as the previous editions, but in any case the information from the previous editions is still worthwhile even if there are newer features in Java 7/8/9 which is covered by the 3rd edition

I agree with this. Since 3rd edition is only a month away now after years of not knowing if/when there would be another edition, I'd probably say pre-order it and hold out for 3rd. But yes, 2nd has been a great help to me.

u/dysfunctionaltrav · 1 pointr/cscareerquestions

Absolutely, it's a very clean and easy to use language. It is object oriented and functional which allows someone who has never done functional programming to ease themselves in. Before I started learning scala I only knew python so it was nice that brackets and semicolons weren't really necessary. Higher-order functions are fantastic. /u/bananaboatshoes brings up a good point that scala builds on the jvm so it's usability is the same as java. It also allows you to use java libraries in scala pretty easily. Once you have learned scala going back and picking up java is fairly easy if you find it necessary.


I'll see if I can't conjure up a few resources.

Scala website

The book I read

A good book on functional programming


I hope this all is formatted correctly I'm fairly new to commenting on reddit.

*Edited my formatting

u/ixAp0c · 2 pointsr/learnprogramming

Yes, it's possible, especially with something like Amazon where the syntax is relatively simple. If you view the HTML source for a page like this, and press CTRL + F (find/search page) and search for the price of the item ($59.87 in this case), you'll see that the price is in the HTML tag:

<span class="a-size-medium a-color-price offer-price a-text-normal">$59.87</span>

With a simple script in Python you could just pull the HTML from the web page, and parse the text for that sub-string and return the value after the substring. This script will read the HTML from the site:

!/usr/bin/env python

import urllib.request<br />

page = urllib.request.urlopen("http://www.amazon.com/item&quot;)
text = page.read().decode("utf8")


You just need to add in a few lines to make it get the value for the item. You can use string indexing and slicing to pull the value out of the HTML tag, by doing something like:

priceStartOffset = text.find('"a-size-medium a-color-price offer-price a-text-normal"&gt;$' # Find string index where price starts
priceStart = priceStartOffset + 1 # Index where price begins (numbers)
priceEnd = priceStart + 4 # Index where price ends (other ways to implement, this is simple way)
price = text[priceStart:priceEnd] # Pull price substring out of HTML by using slicing
print(price) # Display the price

Once you have the price value you can do whatever you want with it, print it to the screen, save it in a file for later use/computation, etc. Note that this is just a basic example of pulling some data from an HTML page, the logic that you implement on that data is up to you.

If you want the program to collect the price every X amount of seconds, you could put the code that gets the price in a loop (a while loop would be good in this case), with something like the 'time.sleep(seconds)' at the bottom of the loop block, so you aren't collecting thousands of the same price value every minute.

Since you have little to no experience coding (and might not really understand any of what I just said unless you're already coding), I'd recommend you read a book like Head First Programming, which goes over the basics of programming using Python 3 (but the concepts can be applied to any language, Python was simply chosen for the examples).

u/samort7 · 3 pointsr/learnprogramming

I saw someone posting Head First Java and you might want to take a look at this thread and this thread in regards to that book. Here's my opinion from those threads:

Headfirst Java was published in 2005. It's 13 years old. If you're looking to learn Java, there are plenty of excellent resources that also cover the latest features of the language:

u/Breaking-Away · 1 pointr/Python

There are plenty of good books, but the obvious one to mention is The C++ Programming Language 4th Edition. I'm still a relative novice at C++ but the book has been recommended by a lot of people much more versed in C++ myself and it is written by Creator and maintainer of C++.

Also, the book is up to date. Writing good idiomatic C++ has changed significantly over the years and so a lot of older resources will not accurately teach modern best practices.

I also really like his intro chapter. He does a really good job of explaining the best "mindset" to use when learning C++, the reasons he initially wrote the language and how it has grown from where it started to where it is now.

u/aLogicalOperator · 2 pointsr/learnprogramming

First off I messed with a lot of languages before I think I really grasped the basics. I'll note that I used some Qbasic and Lua before starting my CS degree but I don't think they taught me good fundamentals because they are a little more "simple" and left me confused looking at lower level languages which is pretty much anything else.

I just started my CS degree recently and finished the first class which was in C#. I felt like this language really gave me a better grasp on the fundamentals.

More importantly than the language though I'd say get yourself a good book. For my C# class we used this book which is really good but kind of expensive. If you are interested in C++ many people recommend C++ Primer or The C++ Programming Language.

In taking my C# class I realized I thought I knew a lot about the basics of programming but actually didn't fully understand some very basic stuff, even things I had used a lot before.

u/kevinlamonte · 4 pointsr/linux

I both agree and disagree.

I agree that it is unlikely to happen, certainly nowhere near the scale of the BBS scene. But I disagree that all of the conveniences you outline (which BTW are fictionalized quite well in Daniel Suarez' Daemon and Freedom novels) are absolutely necessary to make it big enough to make a difference.

Indra Sinha's book Cybergypsies is an interesting read from the era of the late 80's. Most of it revolves around MUDs, viruses, and the interesting people online at the time, but Indra's BBS connections were very important in supporting his political activism, leading to some influence on real events related to the Kurds in Iraq War I.

&gt; An alternative network like that won't going to matter much if only the technically inclined can use it.

Depends on what you value. If you just want a few dozen people to talk to on a regular basis, the "technically inclined" is still a pretty big pool to find friends in. If you are involved in real journalism or political activism, you only need about a hundred thousand people in the network to make a very strong impact. Look at TOR and I2P today: almost no one relative to the total population use them, yet they are in the news pretty frequently.

u/Shackelbot · 1 pointr/AndroidStudio

to further the conversation on the forum and offer some assistance to everyone out there.

  • Java is indeed a primary component of Android Studio along with XML for formatting and defining actions.

  • Android is unique from java in that you must declare every action you are going to take in the XML file before it can be recognized/run.

  • Java may be a primary language however C and C+ can be used as well (there may be more however this is information learned on passing not actively sought out)

    If you do have a beginner textbooks worth of knowledge on Java then I would recommend starting with Android Application Fundamentals
    and familiarize yourself with the content or use this as a reference.

    if you are new to programming and you want to get started with learning Java then I would recommend (again) Head First: Java 2nd edition, this book is very good if you want a k-12 approach in that it isn't word heavy and it makes you find the solution more often than not.
    if you do love word heavy content and love taking notes then I would recommend: Core Java Volume I--Fundamentals (9th Edition)

    free pdf versions of both books can be found so please do not limit yourself.

    Thank you for taking the time to read and please Never stop moving forward.

    edit:spellcheck and link added
u/reposefulGrass · 7 pointsr/learnjava

There are tons of resources in many different formats of many different qualities.

On the sidebar to the right, there are quite a few. You should pick the format you're most comfortable with -- book, video, course, etc.

As I've read a few books, for absolute beginners, Intro to java: Comprehensive was pretty good. Very easy to get into to.

Thinking in Java or The Java Reference Book are pretty good for people who already know the concepts of programming.

I haven't watched videos for learning java or taken any courses, so this is all I can give you.


I've found a playlist on YouTube, I've only watched the two first videos, but they seem great.

As a beginner, you'd first have to install Java and also a tool to easy use java -- an IDE (Integrated Development Environment) for example. Plenty of YouTube videos covering that.

Here is a course that alot of people seem to like and recommend: MOOC

Lastly, some advice: Stick through with it if you really want to program. Learning to program at first is the hardest part on the journey.

u/seraph77 · 1 pointr/books

I never had this problem until I read "The Passage". If it were just a long, boring book, I could simply put it down. The problem was that I loved it. However, Cronin seemed to go into far too much detail over small things, or too much backstory for insignificant characters, etc. I definitely got the "rambling" feeling quite often in this book, but I was afraid to skim/skip anything, thinking I might miss something important.

When it was all said and done, even though I absolutely loved the book overall, I almost felt cheated at the time spent on what I considered "rambling". It's like I could have read another book entirely with that time, and still not missed any of what made The Passage as good as it was.

So, yeah- Definitely do your research into the author's style first, but there are certainly numerous &gt;400 books you should be enjoying. Suarez's Daemon was 650 pages and I never wanted to put it down for a second.

u/jjniev01 · 1 pointr/gis

Here is what it sounds like to me what you are wanting to do, correct me if I'm wrong:

  • Input a list of coordinates in some format (e.g. table view, csv file, etc) along with a search radius value

  • Have something, ArcMap or a python script, go through each set of coordinates and return pertinent information within the designated search radius for each input coordinate

    You could possibly do this in model builder using a table object, table view, or a linked Access database as the input object containing the coordinates. Honestly, I have never been able to figure out the iteration tool in model builder and find it much easier to write everything in Python. Perhaps another user could be of assistance if you take the model builder route.

    If you were to go about it in Python, as a script in a custom ArcTool, you would have the user put in a table object of some sort as mentioned above and could also go the CSV file route which would allow you to easily convert Excel related files to a more friendly file type. You could also make a standalone script which would allow you to do everything without having to open ArcMap.
    However, if you are very new to Python and are not familiar with object oriented program, I would say that model builder is your best bet as what you describe is very likely outside of your current programming capabilities.

    Here are some great books for learning Python and using Python within ArcGIS.
    Python Scripting for ArcGIS
    Introduction to Computing Using Python: An Application Development Focus
u/slayerming2 · 1 pointr/learnpython

Okay yeah sorry, I'll try to do more research on the reddit next time. A less knowledagable friend suggested I try my hands on with VBA and, I asked my more knowledgable friends about that and php. He said that VBA is kind of outdated and PHP, although easier, is really specific for what you want, and Python encompass both VBA and PHP better. Do you agree with that?

Also is this the book you were talking about? https://www.amazon.com/Learn-Python-Hard-Way-Introduction/dp/0321884914

My friend said he said he heard good things about this book https://www.amazon.com/Automate-Boring-Stuff-Python-Programming/dp/1593275994?ref_=nav_signin&amp;amp;

What do you recommend?

u/GlitteringSkeleton · 4 pointsr/javahelp

I'd start with this article. Finding newer versions of the books mentioned here is going to get you going on the right path. Here's a few I've picked out that I've personally read over the years.

Java: A Beginners Guide - Doesn't really get much better than this as far as an introduction into Java. Clean examples, pretty easy to follow. Would be a great place to start

Effective Java - This has historically been an excellent reference for Java. It's not entirely beginner friendly, but if you have at least a working knowledge of Java it's an excellent book to have around. Note: The link is for the 3rd edition which is coming out soon, I assume it will be as good as the previous editions, but in any case the information from the previous editions is still worthwhile even if there are newer features in Java 7/8/9 which is covered by the 3rd edition

Java Concurrency in Practice - As you become more advanced this book can help guide you along the ways of concurrent operations in Java and pitfalls/issues you'll run into (and how to avoid them)

u/jesyspa · 1 pointr/learnprogramming

I should probably clarify what bothers me. I find that programming is a creative activity, and what while attention to detail is important, it's just as important to have a large-scale overview of what you are doing. You're going to have practical problems if you can't write an if statement correctly, but making the goal of the exercise to write an if statement doesn't sound much better to me.

In this regard, LPTHW reminds me of secondary school maths classes: you're shown how certain basic problems are solved, and then told to use that formula to solve more problems of the same style, perhaps with some variation. Yes, there will be people who can put these blocks together and see the beautiful structure that they add up to, and yes, learning how to plug numbers into an equation is easier than solving problems yourself. Still, it doesn't work well in mathematics, and I am sceptical of it in programming.

I by far prefer books like Invent With Python, where it is immediately clear that the things you learn aren't just features in isolation, and where the whole-program structure is emphasised. An even better book (though not about Python) is The C++ Programming Language; reading that truly gives the feeling of a coherent system. (Not to imply that it's a good first introduction to programming in general, but neither was it meant as one.)

TL;DR: Do what works, but if you're not making a project of your own, I'd consider starting on one.

u/septaaa · 91 pointsr/golang

Golang is a great choice for getting started on backend dev!

u/Arisu_Mizuki · 1 pointr/PS4

Are you an engine programmer or gameplay programmer? If not, I encourage you to pursue it as a career option.

I say this because your comment expresses some pretty passionate opinions regarding how games should allocate their CPU processing tasks. If you are not currently working as a programmer in the games industry, and if this is truly your passion, there is truly nothing holding you back from achieving your dreams. Thankfully you have many free tools available to get started prototyping your own games using Unity, Unreal, or other engines. If you want to work as a game programmer, I suggest studying C++ at your earliest opportunity, and I recommend the book C++ Primer Plus as a decent place to start.

u/RexDaemonia · 2 pointsr/hacking

I second Python as a great beginner language.

Here you go /u/moonknightspidey - http://learnpythonthehardway.org/

You don't have to buy the book, it's available through the web site for free. If you prefer a physical book: https://www.amazon.com/Learn-Python-Hard-Way-Introduction/dp/0321884914

The person I'm replying to also recommended Ruby. Zed Shaw also wrote a ruby book.

Online (free): http://learnrubythehardway.org/book/

Print: https://www.amazon.com/Learn-Ruby-Hard-Way-Computational/dp/032188499X

And if you're feeling crazy then you can learn you a haskell (don't do this).

Bookmark these for when you get into C later:
http://c.learncodethehardway.org/book/ Same guy who wrote Learn Python the Hard Way. The online (free) copy of Learn C etc is incomplete, but is now available in print in full: https://www.amazon.com/Learn-Hard-Way-Practical-Computational/dp/0321884922

Then there's beej: http://beej.us/guide/

And the obligatory TCP/IP book: https://www.nostarch.com/tcpip.htm

If anyone's wondering about why I just spammed the shit out of Zed Shaw's books, it's because his writing style is very easy to get into and keeps your attention. It's anything but dry, and focuses on making you write code, break it, and figure out why it broke.

There are other good Python books as well, like this one: https://www.nostarch.com/automatestuff

And here's another No Starch book on Ruby (I like No Starch - Absolute OpenBSD is a great reference) - https://www.nostarch.com/ruby

u/pgrizzay · 1 pointr/javascript

Yup, you're right! It looks like MDN recommends + over concat for performance reasons, but both are functionally equivalent.

And thanks for the kind words, they mean a lot!

The one book that really helped me was Functional Programming in Scala, I can't recommend it enough. It takes a very 'exploratory' approach, and has lots of exercises which are very helpful.

Scala was probably the best language for me to learn fp in, since I had lots of experience with JS &amp; the syntax is very similar to it, hope that helps!

u/djcp · 2 pointsr/rails

That article is specifically about legacy apps, and as such the good examples can be a little out of date. For instance:

class User &lt; ActiveRecord::Base
scope :active, -&gt; { where(active: true) }
scope :by_last_login_at, -&gt; { order(:last_login_at) }

would just be:

class User &lt; ActiveRecord::Base
def self.active
where(active: true)
def self.by_last_login_at

in a more modern codebase. Also, I think it's perfectly fine to use sql outside of models when you've extracted a bit of functionality into a service object. I think the nuance here might be articulated as "don't use sql in controllers, views, or other places it doesn't belong."

I agree with most of it, especially "extracting rake tasks to classes". If you're in the habit of extracting service objects to define interactions between things, you can frequently use these to make writing rake tasks easier, too and vice-versa.

Random things:

We created Hound as a hosted style checker, and I'm pretty fond of our guides.

I've worked on projects where we ran rubocop as part of a default rake. Took some care and feeding but it was handy.

You might also check out bundle-audit and brakeman.

Codeclimate does some very clever static analysis to find issues too, very worth it.

If you're looking for info about design patterns, I love Design Patterns in Ruby.

u/OtavioHenrique · 9 pointsr/rails

I advise you to learn ruby first, it will be good for your understanding, rails is a huge framework that helps the developer a lot, but on my opinion, know Ruby is a key for pretty understanding Rails.

I usually recommend eloquent ruby: https://www.amazon.com/Eloquent-Ruby-Addison-Wesley-Professional/dp/0321584104

But the are a lot of good books.

Some free content:



Some Udemy courses are good too.

u/johnnydsick · 13 pointsr/csharp

I really enjoyed the C# Player's Guide. There's a newer version now but this is what I got.

Edit: I'm glad you guys liked this book as much as I did. To OP, I would offer two more suggestions.

  1. Clean Code This book is NOT specific to C#. However, it gives you a holistic understanding of how to write code that is readable and effective. This is how I was able to transition from writing code that simply functioned (primarily for school) to code that my coworkers could pick up and run with. The book is the bible of software style where I work.

  2. C# and the .NET Framework This is a very optional book in my opinion. It is also a little pricy, very long, more intermediate than beginner and you can gather much of its information from MSDN. However, I prefer looking things up and reading them in a book where possible. I also like having all this information in one location. When I have free time at work, I find myself more likely to flip to an unread section and skim over it than I would with the same information online.
u/jwcrux · 1 pointr/sysadmin

Absolutely! I recommend this book as a good general-purpose resource.

Then, I recommend reading source code, especially the Golang stdlib. IMO, one of Go's biggest strengths is the readability of the stdlib as a resource to find code that can help you do what you want to do.

If you want something fun to try and learn Golang, you might be interested to check out the CryptoPals challenges. They can be done in any language, but they're a good excuse to learn a new language. Plus, you get to learn some neat crypto :)

u/The_Binding_Of_Data · 1 pointr/csharp

I found The C# Player's Guide (3rd Ed.) to be pretty solid at teaching the basics of the C# language. I particularly liked how they diagrammed the various data types.

Head First C# (3rd Ed.) was also good, but it's pretty out of date at this point. If you can use Visual Studio 2015 or earlier, you should still be able to follow along without too much trouble. After that, the templates they use for doing UI are no longer available, so you'd have to do some extra work there.

That said, Head First C# includes a lot more general Computer Science information the Player's Guide, and includes UI design and implementation.

I think one issue with hard copy books is that C# and .NET are evolving really really fast currently, which makes it hard to keep up to date.

As far as projects go, I totally know how difficult it can be to think of something when you're specifically trying to.

Several projects I've made ended up being due to some need. For example, I have a project idea I really need to get started at some point for a recipe book for Breath of the Wild. I want something light weight that I can use to record the recipes I find in game, as well as being able to store additional useful information (such as places where ingredients drop or can be purchased, purchase prices, etc).

Another project idea that I've played with a bit here and there is a basic character stat generator for an RPG. This is something that can be super simple, but can also be expanded a great deal into a complex program.

u/tkellogg · 2 pointsr/programming

I think you're entirely correct about this. There is definitely a lot of value in being precise in our words. Paul is an exceptional writer - very experienced and accomplished in writing with great precision. His book about functional programming is one of the best books I've ever read, period. Believe me, he understands your point very well.

However, this kind of writing is not fun and we end up sacrificing true innovation for the sake of "correctness". I've spent a lot of time blogging. All of the high-traffic posts I've written received the same kinds of nitpicking that Paul is writing about. I've noticed that I now spend a lot more time revising my words - and with each revision the words become tamer and tamer until there's often no real substantial content left. At this point, the joy of writing is gone and it feels impossible to explore the interesting topics that make programming fun. Often I don't even post my writing because the painful thought of the unsubstantial nitpicking feels like a bigger burden than the joy that comes from expressing the ideas.

I wonder how many great ideas never made it into the public light due to fear of this type of nitpicking. I understand the quality impact of nitpicking, but I often wonder if the cost is greater than the value.

u/nameless912 · -3 pointsr/UIUC

Go out and buy K&amp;R's "The C Programming Language". It's about 50 bucks on Amazon, and it's the definitive guide to C.

C++ is a derivation (and in fact, a strict superset) of C. So, anything that works in C works in C++. The book will get you acquainted with pointers, structs, and all the things that make C totally different than Java.

The best way I can describe C++ is if Java and C had a bastard child-a lot of the concepts from Java (object orientation, a class library, etc.) translate pretty directly, but a lot of stuff (pointers, memory allocation/deallocation, structs, unions) come from C. I find that these topics are much easier to learn through C rather than C++.

C doesn't contain much resemblance to Java because it has no object orientation (i.e. you can't have "objects", nor can you have "object methods" which only act upon the data in that object) which makes it a very weird experience for someone with only Java programming experience, but being able to program in straight ANSI C is an invaluable skill and it will put you WAY ahead in 225.

Here's a link. Trust me, don't rent this book, BUY it. You will use it for years to come.

Also, if you want a book that strictly covers C++ (I would only recommend this after you go through all of K&amp;R), go ahead and get this one. It's easily the best C++ reference I know of.

u/wnavarre · 3 pointsr/Cplusplus

Ok. I would probably recommend A Tour of C++. It is a short book because it doesn't go on and on about stuff you already know, but is still friendly to C++ beginners.

EDIT: Read the description here &lt;https://www.amazon.com/Tour-2nd-Depth-Bjarne-Stroustrup/dp/0134997832/ref=sr_1_1?ie=UTF8&amp;amp;qid=1527540269&amp;amp;sr=8-1&amp;amp;keywords=a+tour+of+C%2B%2B&amp;gt; and see if it describes what you want.

In particular:

&gt; This guide does not aim to teach you how to program (for that, see Stroustrup’s Programming: Principles and Practice Using C++, Second Edition), nor will it be the only resource you’ll need for C++ mastery (for that, see Stroustrup’s The C++ Programming Language, Fourth Edition, and recommended online sources). If, however, you are a C or C++ programmer wanting greater familiarity with the current C++ language, or a programmer versed in another language wishing to gain an accurate picture of the nature and benefits of modern C++, you can’t find a shorter or simpler introduction than this tour provides.

u/Mydrax · 118 pointsr/learnprogramming

Well, this is usually because C++ is not really a beginner friendly language. You need to understand the architecture/fundamentals of a computer system at times to understand certain concepts and are often difficult to understand ex: pointers, dynamic memory allocation etc. and with C++ you never finish learning!

Yes, you are very correct about understanding basics before doing actual game-based programming, C++ Primer is pretty old but it's definitely a golden book alongside it though for someone like you I will suggest some of the books I read a couple years back and some that I believe are better for beginners:

Accelerated C++: Practical Programming by Example

Programming: Principles and Practice Using C++

The C++ Programming Language, 4th Edition- Very big book, read this after you've read the rest.

And a book that I've heard is pretty good for game development with c++: https://www.amazon.com/Mastering-Game-Development-professional-realistic/dp/1788629221

u/shoalmuse · 17 pointsr/Cplusplus

If you aren’t very familiar with C++, my advice would be to admit it at the outset. Modern C++ is a huge, complicated (and often convoluted) language and they will be able to poke holes in your seeming expertise unless you admit it at the outset. I’ve interviewed people who claim to be a 9 out of 10, but if that is the case you should probably know most of the standard by heart.

That out of the way, I would say that Bjarne’s “Tour of C++” is a great read that can easily be done in a week (I did and I wasn’t cramming for an interview). It gives a nice introduction to modern C++ features for a well-versed programmer coming from another language:

u/atech087 · 2 pointsr/computerscience

This is the book we're using at my university, this is only my second semester, but we're still using the book. It's pretty good and hits all the basics, it has a lot of good examples too that you can reference when you're coding. It is a bit pricey, but there are "other means of obtaining it" if you catch my drift. Good luck!

u/d_clef · 1 pointr/jobs

There's tons of resources online, and it's a huge subject domain. I suggest you start by teaching yourself C++, if you can manage that you'll have no problems in the field. I strongly recommend getting a book to work through. Something like C++ Primer Plus should do you well, by covering the language completely, and providing exercises to actually write some code (extremely important).

From there you will get a sense if you like the field enough to continue.

26 is not too old. I started programming at that age myself, with an arts background. One thing led to another, and I picked up a second Masters Degree in CS, and then a very high paying job in NYC as software developer. So I like to think that if I can do it, so can most people - but it was very hard work! Don't underestimate that part.

I suggest you try out C++ for a couple of months, and see if you enjoy building software. Once you start working with classes (a concept in software development), and recursive data structures &amp; algorithms, you will begin to see the elegance that can be expressed with software. It's pretty cool.

Plus, the software industry is incredibly diverse - you could go on to work for NASA, Wall Street, Government, Medicine, University, Gaming, to name a few.

u/cscanlin · 10 pointsr/learnpython

Sorry you had to go through that. Zed Shaw is pretty widely discredited among a big portion of the community for stuff like this, and the fact that he still wants the world to stay in the past on Python 2.

Automate the Boring Stuff is extremely well regarded as a learning resource on this subreddit, which can definitely not be said about LPTHW. It's free online, but you'll probably only really need to skim through it if you feel pretty comfortable with the basics.

I've also seen Effective Python and Fluent Python recommended as good intermediate books if you want something a little more challenging, but I haven't read either so YMMV.

u/HumanSuitcase · 2 pointsr/learnprogramming

With c++ you're probably going to have to get a pretty thick book for it. Don't let this derail you from doing it. In fact I highly suggest learning lower level languages first. Specifically C but C++ is probably a good middle ground if you're going to other languages like java. I recently went back to University to learn CS/IA. Most of the programming that I've "learned" at University is based strongly off of C and because of my strong programming experience in C since I was about 14 I've had literally zero problems getting full points on all of the assignments I've submitted for grading up to this point. Now, the downside to almost a decade of on and off C experience is that I pull so much from C that it makes Object Oriented Programming like java some what of a mind bender for me, but for the most part I can get through it pretty easily.

I recommend Stephen Prata's C++ Primer Plus (only because his C primer is absolutely fantastic) He relates things really plainly and meets students on their level in regards to really difficult concepts like pointers.

u/pornlord · 2 pointsr/learnprogramming

Depends what you want to do in long run. If you are interested in System administration or networking, learn Perl.

If you just want a job and learn a cool scripting language, go for Python. Since you have done Python, it should not be hard for you to pick up. Start with this, that would be my advice.

If you are looking for web development, go for Ruby. Ruby is a bit more object oriented than Python or rather too high level abstraction. So to appreciate Ruby code and exploit its abstraction and not get overwhelmed, it would do good, if you did Python at first. It will make learning or appreciating Ruby easier. It will be a good foundation to learning Rails, a web framework. Do, Ruby if you are interested in web development and so holds for Python. Anyways Ruby is fun to learn. If you are comfortable with Java and just want a quick start, I recommend eloquent ruby.

You may have programmed in C++ but going back from Java, you may feel awkward. I will put the C++ as the last language in the list of priority of learning.

So in order of prioritising what you want to learn, my list would be

  • Python
  • Perl / Ruby depending on whether you like networking or web applications.
  • C++

    On a side note, if you are going for software engineering. It does no harm to learn another paradigm. You are only familiar with object oriented and procedural paradigm. If you are interested in broadening your SE skills try to sharpen up on functional programming. Haskell or Clojure (JVM implementation of Lisp and somewhat favoured by web developers) are good starting points.
u/ziptofaf · 3 pointsr/learnprogramming

&gt; Right now I don't even know the limit of what can be done with Python. Idk what it is used for.

Literally anything - Django is one of the most popular web frameworks. You have PyGame if you want to make video games. Heck, it's even used in Deep Learning via Theano. You can also use it as a script language - be it as an "addition" to a different language in your application or a separate script to run. Easily ones of the most versatile languages.

Of course there are certain aspects of a language that might make it not suitable for specific tasks too. You do need a Python interpreter installed on your computer to make use of programs written in it after all (meaning it's pretty much useless for embedded devices), it's raw performance is but a small fraction of what C++ can do (but in exchange it's much easier and faster to code) so it's probably not the best choice if you want to write your own server/game engine/computation heavy application.

As for where to find some tutorials - I would look for Learn Python the Hard Way, it's pretty often recommended. Despite the name, it's not hard. There's also Automate the Boring Stuff with Python.

But learning of a language itself is like knowing words in a foreign language. But you still need to understand how to make sentences in it. So I also suggest visiting /r/dailyprogrammer to do their beginner and intermediate level quizes and/or eventually getting a book on algorithms and data structures. This should be enough for you to understand how to actually program things.

Afterwards it's a question of what you WANT to do, it will be a good time to pick up a project to work on. Be it a game, website, some kind of a program - whatever. This is where you learn the most but also a time when you won't find answers lying directly in the books and you will need to self study while understanding how to use google/ask correct questions.

u/yyzdslr · 1 pointr/learnpython

If you are a beginner coder like myself (someone who procrastinates and is distracted very easily, most of the time by random subreddits :) This method of learning python has helped me tremendously:

  1. Find your nearest book store and locate a copy of ['Learn Python the Hard' Way by Zed Shaw] (http://www.amazon.com/Learn-Python-Hard-Way-Introduction/dp/0321884914)

  2. Find a nice comfortable spot in the Bookstore (DO NOT connect to the wifi)

  3. Go through 5-7 exercises a day initially and then set your own pace as you pick it up.

    Shaw does a great job at breaking it down into small chunks to consume and a lot of repetition typing code so you get familiar and comfortable before he moves on to more difficult concepts; at which stage if you follow the exercises and do the study drills the concepts should be easier to understand.

    Learning python the hard way actually turns out to be the easier way in the end
u/Kackboy · 1 pointr/learnpython

Thanks, I will check those out m8! A question on c++. I want to get better at Java first since that is what i started as but a guy told me to quit java and go with c++ because according to me java is dying. Now if that is true or not, which I dont really believe in, I would still like to learn c++ later on aswell. Could you tell me how you got good at it? Books or online? Also, when I decide to pick up c++ should I go with c sharp or c++? Thanks if you can answer this :)

Do you know anything about this book

u/CinnamonHeart · 2 pointsr/learnprogramming

Read books! Implement small projects.

Underscore.io recently open-sourced all of their books. Essential Scala is quite good imo: http://underscore.io/books/essential-scala/

Another great book is Scala for the Impatient, but it's more of a crash course in scala than a book on FP in scala.

If you want a great book on functional programming as an idea, 'Functional Programming in Scala' is great. It's not really a book on how to program in scala, but more of a general FP book which happens to be in scala. Many of its ideas can be translated into C#.

Underscore.io's other book, Advanced Scala With Cats is good too, but imo should wait until you've read 'Functional Programming in Scala'.

u/ProvenDantheman · 3 pointsr/Cplusplus

Posting this as a top level comment so people can see this without digging. Here are some of the resources I have used plus additional ones I've found that may be useful:

  • cplusplus.com - Goes over the basics, I've personally used this a lot.
  • learncpp.com - Goes more in depth with standard library functionality.
  • udemy - Here's a free C++ udemy course. Udemy is a great resource for learning languages and game engines.
  • Effective Modern C++ - Book - A great book that acts more of a reference to C++ functionality. It also goes over best practices.
  • The C++ Programming Language, 4th Edition - Book - A reference on the C++ programming language.
u/TechStudent007 · 2 pointsr/QualityAssurance

Thanks for the compliment! and compliments right back at you Sir, for your hard work doing all that on evenings after work. I never had enough energy to get past Hello World doing that. Instead I straight up quit manual QA, moved back home, and am doing oddjobs for cash while I study 40 hours a week.

I spent 5 years in manual QA at Blizzard and Microsoft going absolutely nowhere making shit money and getting pissed on by everybody else there as the lowest man on the totem pole- getting a paycheck that was 30%-40% of what everyone else in the Corporation was making despite me grinding away the same 50 hours a week same as devs, producers, artists, and marketing people. Even when I finally made Test Lead, I was in shock to realize I was still lower paid and less respected than the secretaries and parking lot security guy.

I realized the only way I was ever going to make a liveable paycheck to accomplish my dreams of home ownership and having children was to get out of that toxic lifestyle, and get job as a Dev or TestDev.

It's not easy but it's doable yourself. I'm particularly fond of Jon Sonmez inspirational videos, Brian Duggan uni lectures and RB Whitaker's textbook for Year One of C# programming. It's a wonderful regimen.

u/Knott00 · 1 pointr/learnprogramming

C# a players guide. It got some good reviews on amazon. However, while going through the book, when writing things from console, I see the author write code like this

Console.WriteLine("Hello " + userName + " have a nice day!");
Is using a + like that an accepted way to write these little snippits? Everywhere else when I see this kind of thing written now, I see one of the following.

Console.WriteLine($"Hello {userName} have a nice day!");

Console.WriteLine("Hello {0} have a nice day!", userName);

I know that the way the author writes the code, it works. But I don't want to learn a way that works if it's not really the correct way you should be doing things.


u/ehochx · 4 pointsr/cscareerquestions

I wouldn't recommend any websites for C++ because most tutorial authors seem to be stuck in the 90s. Take a look at some good books.

A Tour of C++ is pretty short but gives you a good overview over the language and some STL-features.

Scott Meyers wrote some books about best practices.

If you have a bit more time to spend: C++ Primer 5th edition explains pretty much everything (except concurrency). I read the book (took me a month) and was then able to write solid C++11 code.

u/JohnScott623 · 58 pointsr/raspberry_pi

If you want to get her a Raspberry Pi, you will need a couple of things. (I will assume that you intend to get her a Raspberry Pi 3 Model B, more commonly referred to as just the Raspberry Pi 3.)

For one, you'll almost certainly want a mouse, and a keyboard is a must-have. You need a microSD card (at least 8GB recommended) for her to keep files on, though you may want to get her a larger one if she will benefit from having more space. (You will also want to get an adapter like this if your microSD card doesn't come with one to make the microSD card easier to connect to some computers.)

Finally, you will need to find a power source of some sort. You will probably want one that connects with micro USB, though other adapters can work (though they're a little more complicated, so I won't get into that). A good adapter should be about five volts (nearly all micro USB adapters are about five volts, so this shouldn't be a problem), but it should also be at least 1.5A (1500mA) or 2A (2000mA) to be usable. More is better. (For more detailed information regarding power supplies, see the FAQ.)

Some Raspberry Pi starter guides state that you should buy a USB Wi-Fi adapter as well, but this is usually not needed to maintain a Wi-Fi connection with the Raspberry Pi 3, as it comes with a built-in Wi-Fi adapter (and a Bluetooth adapter, too).

If she wants to get into coding or programming, she should learn a little bit about various programming languages and decide which one she wants to learn first. The steps that must be taken to learn programming vary greatly upon the language she chooses. Below, I have listed some resources for the most popular ones.

HTML, CSS, and/or JavaScript: W3Schools, Codecademy, Khan Academy

C and/or C++: Tutorials Point, Head First C

Edit: I made it more clear that one amp power supplies are minimalist and their use should be discouraged.

u/retrojoe · 7 pointsr/AskAcademia

I'm about to graduate in Geography (GIS) from a very, very human/critical theory focused dept at state school.

My favorite GIS text so far has been Nicholas Chrisman's Exploring Geographic Information Systems. It's not super exciting, but it's kind of historical, covers a huge number of basic elements of information science, and situates it as technical discipline that serves/is grounded in socio-political things. Great for people who've seen the very basics of clip/overlay/make layer in a GIS, but don't have much understanding of the why/how.

Plus there are no fucking screenshots of software menus.

If you've never seen those on a screen, try Price's Mastering ArcGIS series, comes with data and is basically just lots of long, in-depth tutorials. No need to buy the newest version, the software doesn't change that quickly.

It's not a 'beginner' book per se, but a pretty comprehensive coverage of the concepts of Nature and the nature of geography in anglophone traditions plus a number of historical and current takes on the matter: Noel Castree's Nature.

For those interested in scripting/Python with ArcGIS, I can recommend Zandbergen's Python Scripting for ArcGIS and Pimpler's Programming ArcGIS 10.1 with Python Cookbook. The former is a textbook proper, teaches some theory, lots of contextual (in terms of the program) information, the later is much more of a straight recipe/how to, with a few pointers about how things might get messed up or why you're seeing that error in that place.

u/NudeRanch · 1 pointr/cpp_questions

&gt;Someone might recommend better but The C++ Programming Language has been well received as a modern introductory C++ book.


That book is a reference book; it would be like trying to learn a language to by reading a dictionary. Perhaps you are thinking of Bjarne's "Programming: Principles and Practice Using C++" (his textbook for an intro to programming class), or his "A Tour of C++" (which is targeted to experienced programmers who wish to learn C++).

"Programming: Principles and Practice Using C++" is great because it teaches with modern C++.

u/PixelPartisans · 2 pointsr/learnprogramming

I honestly recommend The C# Player's Guide 3rd Edition

The way the code is presented and explained I think is one of the best out there, with challenges at the end of almost every chapter. There's a healthy amount of theory and programming with the author also having a good sense of humor without overdoing it. It'll get you through the basics and even a little more advanced material.

u/Jake1055 · 3 pointsr/cpp_questions

I learned for a while off of learncpp, which served me pretty well. I eventually consulted this sub and /r/cpp and discovered it wasn't really held in high regard due to some errors in some of it's early lessons. I eventually bought C++ Primer by Stephen Prata. It's a really long book—quite thorough. The book has a lot of code examples to demonstrate the concepts. I'm about 150 pages in, and I hope to read it more when summer hits(I'm graduating high school). I think both learncpp and C++ Primer are going to give you a good experience, but C++ Primer is going to be more polished and thorough.

My advice would be to learn some things peripheral to c++ before really trying to deep dive. You might be served by researching how computers work at a very low level(like how things are stored in RAM, CPU cycles, basic assembly language, etc. In addition, you should understand the difference between a compiled language and an interpreted language and know what compilers do. C++ is all about memory management, so understanding what RAM is and how the computer uses it will help a lot.

There are people a lot smarter than me on this topic. I would search this sub and /r/cpp for "resources to learn c++" posts. You're likely to find something that will work for you. Good luck!

u/kanjibandit · 2 pointsr/rails

How well do you know Java? I suspect you may be overestimating the time to it will take you to get comfortable in Ruby. Learning your first language is always harder than the second, because you're really learning two separate things: 1) how to program, and 2) the language syntax. The second time around, it's largely just a new syntax. Most of your knowledge of how to code will transfer. True, Ruby will introduce you to new concepts, but I think you'll find them rather more like new superpowers than like new obstacles.

Specific recommendations:

For Ruby, I like the book Eloquent Ruby

For Rails, I like Michael Hartl's Rails Tutorial

For fun and practice, look at Ruby Koans

u/Gaff_Tape · 6 pointsr/ECE

Not sure about EE-related topics, but for CE you're almost guaranteed to use these textbooks:

u/cheeseburger_humper · 1 pointr/Random_Acts_Of_Amazon


All of me, loves all of you

/u/martysthreegirls You're pretty awesome. Thanks for checking on me today. :)

u/road_to_life · 2 pointsr/learnjava

Depending on how much C++ you know, I believe it would be best to start with one of the introductory books and skim real fast through parts which are perfectly clear to you, as a learning resource I can suggest either: https://www.amazon.com/Intro-Java-Programming-Comprehensive-Version/dp/0133761312 I even decided to buy physical book in order to get all the extra content, if you finish that book from cover to cover, do all the exercises and do online quizes and read bonus chapters you will have I dare to say "godlike" foundation in JavaSE and some decent introductory JavaEE knowledge as well (bonus chapters), or if you prefer to read something a bit more modern (Java 8/9) I would suggest: https://www.amazon.co.uk/Java-Program-Early-Objects-Deitel/dp/0134743350/ref=dp_ob_title_bk

u/terivia · 3 pointsr/Teachers

I have my degree in Computer Science, so my path is probably not ideal for you at this point. However, that does not mean that you can't do it!

My honest recommendation at this point is to just jump in and get started. I've been recommending this book as a start for friends and fellow teachers https://www.amazon.com/Python-Crash-Course-Hands-Project-Based/dp/1593276036.

Alternatively, if python isn't your thing, grab a textbook for c or java. These are the ones I used for my degree and still keep as desk references.



Once you have gotten started and are fairly comfortable doing the exercises in books, I suggest these websites for additional problems to explore:







If you are going to go for it, make sure to join some communities. Familiarize yourself with stackoverflow.com (ask jeeves for programming, with some proper wizards to answer questions). /r/programming is pretty good too.

Finally, never stop to sit on somebody else's problems and projects. Pick something that you want to make but have no idea how to make it. Then do it. And don't stop. See the project all the way through even though your code will be HIDEOUS and unattainable by the end. There is a lot to be learned from finishing a project.

The formal logic stuff is the root of computation, but if you are using your cell phone without understanding it, then it follows that you should be able to write programs without understanding it. There is a depth of programming where it becomes important, but I would say that 90% or more of developers don't really need to understand the underlying processes by which processors process.

Good luck!

u/maredsous10 · 1 pointr/ECE

My General Thought

I find it is best to learn and get exposure from several book/media sources coupled with actual application of things learned.


Introductory Texts/Links

Short Intro

C Programming: A Modern Approach

Head First C (Different Presentation Style, check amazon preview)

Programming in C

PDF Tutorial
Original Here &gt; http://www.tutorialspoint.com/cprogramming/index.htm

C The HardWay (Mostly complete)

Zed's K&amp;R Critique

Practical C Programming

Ben Klemens Modeling with Data book has a short C introductory section.


Harbison and Steele C Reference Manual

Plan on developing on Linux?
The Linux Programming Interface: A Linux and UNIX System Programming Handbook

Didn't get Pointers?

21st Century C, This book got dogged a lot, but I think its a nice text.

K&amp;R Scan (If you want an idea what's inside K&amp;R)


Need an Editor?
VIM Book

Vim Video Tutorials


Back in the Day
I used these books years ago. They're somewhat dated, but still useful and cheap.
Programming in ANSI C
Advanced C: Tips and Techniques (Hayden Books C Library)


C Language Basics
How do I read/write files
How things are implemented at a lower level
Compiler Options and Functionality
What is a make file?
Debugging... How to do it... How do I use a standard debugger like GDB?

u/postmodern · 27 pointsr/ruby


  • Link to /r/rails and /r/ruby_proposals. Encourage all Rails-centric posts/questions to go in /r/rails.
  • Remove some of the Rails-centric books from the sidebar, add more Ruby-centric books (such as The Well Grounded Rubyist and Eloquent Ruby).
  • Link to TryRuby.
  • Link to the GitHub (Free) Sign-Up page.
  • Link to the RubyGems Sign-Up page.
  • Link to RVM.


    Remove link/blog-spam. It's kind of pointless to read a summary on RubyInside, when I can read the original full-article written by the primary-author/project-lead on their own blog. Summaries of complex issues which span multiple blog-posts are OK though, I enjoy reading those.

    Also, please no more articles about simple things like recursion or Arrays (that's what TryRuby and RubyKoans are for).

    What's this about a Contest? Sounds fun.
u/seigneur101 · 2 pointsr/gamedev

Oh yes they are. The last one I had (the one that passed in April) was by far the best cat I've had.

I looked at all the engines available, and I decided I would use Unity. I used to do Java, but never did any C#, but when I started I'd read some C# scripts and they were basically the same as in Java, so I figured I could learn it.

I read one for Unity, and one for C#.

Here are the links to the books I've read (they're from amazon.ca because I'm a frog/canuck):


I've also changed jobs in October, a job in which I'll do programming. So I've read other books in the past few months pertaining to development in general, not just games. (Long story short: I've studied actuarial sciences, always have had a keen interest in IT, and I got hired at a consulting firm where they hire actuaries to do some of their IT development).

I tried to learn Gimp and Blender, but I can't seem to transform into an artist overnight lol :P

u/xovertheyearsx · 0 pointsr/learnprogramming

I'd suggest getting a book if you've never programmed before. Any tutorials online will give you a hint/clue and get you started, but the rest is up to you.

C++ Primer Plus is a good start: http://www.amazon.com/Primer-Plus-Edition-Developers-Library/dp/0321776402

If not, then you can use references like ianhedoesit suggested. This site is pretty cool and they provide tutorials for a lot of common programming languages:

u/jb3689 · 6 pointsr/ruby

All of the OO stuff is great but I've found it to be mostly subjective and repeating a lot of the same old boring stuff. I've always felt that programming with heuristics works better for me (e.g. least-visibility principle, sprinkling design patterns where it makes sense, focusing on interfaces, doing mostly TDD but trying to test meaningful contracts instead of being hardcore about red-green-refactor, etc)

Russ Olsen's Eloquent Ruby is still, and will probably always be, my favorite. It taught me how to right Ruby "the right way" by teaching me to learn the core libraries in-depth and explaining what the conventions were in them

Outside of that, Jesse Storimer's books are all good for learning how to use OS features from Ruby which is something I find critically lacking instruction of in the Ruby community

u/Liquidretro · 2 pointsr/AutoDetailing

Haha well it's more than that. I have listened to more of the best sellers or other series I am interested in. I recommend this one for a tech thriller http://www.amazon.com/Daemon-Daniel-Suarez/dp/0451228731

u/rodreegez · 1 pointr/rails

I second the comment to learn SQL really well. Also regular expressions come up frequently enough to be worth learning a bit about. Some familiarity with data structures is worth picking up, and getting a grasp on some common design patterns is well worth the time.

On the last point, I’d recommend Design Patterns in Ruby and Refactoring Ruby

Hope that helps.

u/mitchell271 · 1 pointr/Python

Been using python for 5 years, professionally for 1. I learn new stuff every day that makes my python code more pythonic, more readable, faster, and better designed.

Your first mistake is thinking that you know the "things that every python programmer should know." Everyone has different opinions of what you should know. For example, I work with million+ entry datasets. I need to know about generators, the multiprocessing library, and the fastest way to read a file if it's not stored in a database. A web dev might think that it's more important to know SQLAlchemy, the best way to write UI tests with selenium, and some sysadmin security stuff on the side.

If you're stuck with what to learn, I recommend Effective Python and Fluent Python, as well as some Raymond Hettinger talks. You'll want to go back through old code and make it more pythonic and efficient.

u/loamfarer · 2 pointsr/learnprogramming

The C++ Programming Language, 4th Edition - Bjarne Stroustrup
Effective Modern C++ - Scott Meyers
21st Century C - Ben Klemens
Learn You A Haskell For Great Good - Miran Lipovača
The Book &amp; Rustinomicon - Rust Contributors
A Byte of Python - Swaroop Chitlur
Java The Complete Reference 9th Edition - Herbert Schildt

These are the books I got the most out of. None of them are good for beginners to programming, except maybe A Byte of Python.
But they have given me deeper essential knowledge over the tools that I'm working with than any sort of "zen of patterns" or "corporate feng shui" style book has offered.

Of course I have also come across other computer science books that are fantastic, namely AI and machine learning stuff. I know a handful of solid game engine and graphics books have also come out in the past few years.

u/drboyfriend · 1 pointr/androiddev

Keep working at it. Launch a few apps in the app store, no matter how basic and try to get some users and address their feedback.

Go through Udacity's free Android dev course. Another good resource is CodePath's Android guide and Effective Java.

It's a lot of hard work but being able to point someone to something you've published and talking through developing it and decisions you had to make will help a lot more than just having a degree.

Good luck!

u/chris-herring · 1 pointr/learnprogramming

There are great Ruby books that aren't aimed squarely at newbies. Just a couple are:

Practical Object-Oriented Design in Ruby is excellent.

Eloquent Ruby is great as well.

u/1000Parsecs · 1 pointr/gamedev

If you want to be a programmer, most people are going to tell you to learn C++. But you're going to need to invest plenty of time in it and don't expect to build anything awesome shortly after until you have gained more experience. If you don't have anyone knowledgeable and experienced to teach you, you must learn it from reading some good C++ books like this.

AFAIK most people are gonna tell you to not learn C++ online because online tutorials always lack information or are outdated, and the wiki at /r/learnprogramming even has a section about discouraged resources.

However, you can also choose to learn C, if you want. C is not exactly C++, but if you want to learn C, there is Handmade Hero, which is great, but again, you need to invest a portion of your life in it. Learning C/C++ and attempting to master it is absolute time consuming and will drain a significant portion of your sanity.

If you're an absolute beginner, some people are going to tell you to not start with C++, because.

u/sh0rug0ru · 1 pointr/java

You can also check out the Java tutorials and the Java EE tutorials, but these might be a little on the light side compared to books devoted to the topic.

The Core Java Volume I and Core Java Volume II by Cay Horstmann are the best books I've read for learning Java. Some people like the Head First series.

Effective Java is a must read.

u/InanePenguin · 2 pointsr/ruby

Are you looking for something to teach you specifically ruby syntax or something a little less syntax heavy? I'd HIGHLY recommend Design Patterns in Ruby by Russ Olsen.

It's answered so many common problems I have run into and have to work around. To me it seems like pretty advanced thinking/techniques but I'm not sure your level. Either way, it should provide some great insight! He dedicates a chapter to reviewing Ruby so maybe that would at least help some.

u/MyWorkID · 3 pointsr/gis

You can definitely script this.

This is a really, really great book- I think:


Check the sidebar at /r/GISscripts if you haven't. You might find something helpful.

Otherwise, just figure out the exact workflow you need to do and then Google stuff like "ArcGIS 10.1 select by location" which would lead you to this:


And just learn from there.

You might take a look at ModelBuilder as well.

u/lost_in_trepidation · 3 pointsr/learnjava


  1. go through both courses on mooc.fi

  2. read/work through Thinking in Java

    -- You should "know" Java pretty well at this point

    if you want another resource/a large number of exercises and are willing to spend the money get this book


    From here you can move on to more intermediate/advanced books like:

  • Effective Java
  • Java Concurrency in Practice

  • Design Patterns: Elements of Reusable...

    At this point you should be good.

u/BUTTS_L0L · 4 pointsr/todayilearned

Not trying to be a pedant but for anyone trying to find the book the title is spelled Daemon. Definitely second the recommendation though, I loved the book. I'd also recommend the sequel, Freedom^^TM.

u/tayo42 · 1 pointr/cscareerquestions

I liked https://www.amazon.com/Functional-Programming-Scala-Paul-Chiusano/dp/1617290653 and https://underscore.io/books/advanced-scala/

Underscore has other free books too.

I did what I could from those books , wrote Scala and then went back to the those books. Haskell is cool too. I've found it pretty hard even though I'm comfortable in Scala. There's r/Scala too

u/dstrott · 4 pointsr/aerospace

Look at using the Eigen library for linear algebra in C++. Its used extensively in CV and AI settings, so there is a lot of info floating about it and lots of examples. It does take some getting used to coming from MATLAB though.

Here are some C++ books that have proven useful to me:
The Bible,
Very Useful,
My favorite data structures book,
[Maybe of interest] (https://www.amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X/ref=sr_1_25?ie=UTF8&amp;amp;qid=1484332390&amp;amp;sr=8-25&amp;amp;keywords=data+structures+in+C%2B%2B)

Also, keep in mind that the C++17 standard should be released this year, and there will be a new deluge of books.

Probably want to learn something about numerical analysis:
Numerical analysis

For vehicle dynamics and propulsion, are you thinking more FEA and CFD? If so, learning about GPU programming is probably more interesting since there is so much parallelization...
I recently picked this up but havent really worked through it yet...
but keep your expectations low, it is definitely non-trivial to try to spin your own packages, and it might be more worth your while to look at integrating with something like OpenFOAM for CFD, or to look into some of these packages for FEA. There are a lot of people who have spent a long time making these sorts of tools.

u/mart7n · 4 pointsr/cpp

Thanks for your input.

I saw Meyers new book and I have a great respect him (I have other books he has written) but his new book seems more focused on "does and don'ts" rather than syntax for the new standard (based on his own words). I want to concentrate on the basics first.

According to amazon and reviews on amazon, Stroustrups book is heavily C++ 11 focused...

What makes you believe otherwise? Have you checked out this title?

u/Bashota · 1 pointr/cpp_questions

OK, I put up some of the directions that should clear it up. It is basically one of these cheats for words with friends or scrabble. You input letters and it searches a file for matches based on what you entered.

Yeah, our book has some C++11 stuff, but not a whole lot. I am reading C++ Primer Plus along with what we are going over in class. So I definitely will update my knowledge! Thanks!

u/oaddit · 2 pointsr/ruby

Design patterns in Ruby is great for this. Much more lighter and entertaining than it sounds, and a fantastic introduction to both OOP design patterns and more advanced Ruby techniques.

u/cannibalbob · 3 pointsr/cscareerquestions

The feedback about "jargon for development" can be solved by going through some books cover to cover, making sure you understand the theory, and implementing the exercises. I understand that feedback to mean that the person who gave the feedback believes there is too high a chance you will inflict damage on the codebase by making decisions not grounded in solid theory.

Examples of titles that are classics and widely known:
Algorithms (4th Edition): https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X (there is an accompanying coursera course).

Code Complete: https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1469249272&amp;amp;sr=1-1&amp;amp;keywords=code+complete

Clean Code: https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1469249283&amp;amp;sr=1-1&amp;amp;keywords=clean+code

Functional Programming in Scala: https://www.amazon.com/Functional-Programming-Scala-Paul-Chiusano/dp/1617290653/ref=sr_1_2?s=books&amp;amp;ie=UTF8&amp;amp;qid=1469249345&amp;amp;sr=1-2&amp;amp;keywords=scala

Learning Python: https://www.amazon.com/Learning-Python-5th-Mark-Lutz/dp/1449355730/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1469249357&amp;amp;sr=1-1&amp;amp;keywords=learning+python

Effective Java: https://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683/ref=sr_1_5?s=books&amp;amp;ie=UTF8&amp;amp;qid=1469249369&amp;amp;sr=1-5&amp;amp;keywords=java

Haskell Programming From First Principles: http://haskellbook.com/

I included multiple languages as well as language-agnostic ones. Functional programming is the near-to-medium term future of software engineering, and most languages converging towards that as they add functional features.

I don't think bootcamp is required. Learning how to learn is the most important thing. If you get into these books, lose track of time, and feel "aha! that's how these things that I previously thought were unrelated are actually the same thing!", and are able to keep it up for weeks, then that is a good sign that you can get to where you want to be.

u/the_stanley_duck · 1 pointr/learnpython

I like this book:


I'd rank myself as an intermediate Python programmer, and it's pretty handy for me. But I can see it being great for beginners as well, as it introduces a few advanced topics without delving too much into them. It mostly provides specific, functional usages of Python in real-world development.

u/vaxinate · 2 pointsr/ruby

this is kind of a silly book, but it's about ruby. and pretty entertaining honestly. Why's Poingniant Guide to Ruby

EDIT: i hadn't read this in a long time so i was skimming it, but seriously if you can get past how out there the book is, its honestly a pretty legit way to learn ruby.

EDIT AGAIN SHIT: also Eloquent Ruby

u/colonelflounders · 1 pointr/learnprogramming

I haven't done much with C++ so I don't know how much has changed. Everything that was part of the ISO 98 standard should still be applicable though some bits may have been deprecated since 2011. As far as idiomatic C++ goes, I don't know if that has changed much either. I own the fifth edition of this, which helped get me started with programming in general. I never ended up finishing it, but it was pretty good. My one complaint is the chapters can be super long.

u/iameha · 6 pointsr/cpp_questions

Why pay when you can do it for FREE?

| Instructor| Course | Link &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; | Other |
|Kevin and Bryan|Programming in C++|http://www.wibit.net/| - |
|Carl Herold| Computer Science for Everyone|http://www.computerscienceforeveryone.com/| /r/carlhprogramming |
|Bucky Roberts| C++ |http://thenewboston.org/tutorials.php | - |
|Bill Weinman| C/C++ Essential Training |http://www.lynda.com/Eclipse-tutorials/CC-Essential-Training/94343-2.html | Not Free |
|Damien| Introduction to C++|http://ureddit.com/class/23620l | /r/CppForBeginners|
|XoaX| C++ Video Tutorials |http://xoax.net/cpp/index.php | -|
|Barbara Hecker| OO Design in C++ |http://www.youtube.com/playlist?list=PLB6053C17AB31C6CF | -|
|Stephan T. Lavavej| Core C++|http://channel9.msdn.com/Series/C9-Lectures-Stephan-T-Lavavej-Core-C- | -|
|Jeremy Siek| C++, Short and Sweet |https://www.udemy.com/cpp-short-and-sweet/ | -|
|University of Illinois | CS 225 |http://www.cs.uiuc.edu/class/fa05/cs225/cs225/_videos/lecture.html | -|
|University of Wisconsin| ME 964 |http://sbel.wisc.edu/Courses/ME964/2012/ | -|
|GoingNative| C++11 |http://channel9.msdn.com/Events/GoingNative/GoingNative-2012 | -|
|Stanford University | Programming Abstractions |http://see.stanford.edu/see/lecturelist.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e | -|
|Stanford University | Programming Paradigms |http://see.stanford.edu/see/lecturelist.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee | -|


  • Here is a list of recommended C/C++ books from the /r/cpp sidebar

  • Legally Free Programming e-books
  • My favorite book is C++ Primer Plus 6th Edition (Buy it here from Amazon)

  • Need help with C++? /r/cpp_questions
u/fiveofakind · 1 pointr/learnjava

I used Core Java Vol 1 9th edition by Cay Horstmann: http://www.amazon.com/Core-Java-I--Fundamentals-9th/dp/0137081898/

I thought it was pretty good as a beginner. Chapters 3 to 6 are especially useful and good.

u/Chee5e · 1 pointr/learnprogramming

While watching some talks from cppcon Herb Sutter, part of the ISO C++ standards commite, swore on A Tour of C++ by Bjarne Stroustrup who is pretty much the inventor of C++. I didn't read the book, but by the way these kinda important C++ figures talk it about it it should be pretty good, here is the part: http://youtu.be/xnqTKD8uD64?t=5m40s

u/aparadja · 2 pointsr/ruby

Eloquent Ruby is one of the best programming books I've ever read. I highly recommend it. It'll get you started quickly with the basics, and then make you fall in love by showing the simple and powerful beauty of the language's design.

The poignant guide (the cartoon fox thing) is funny and smart, but Eloquent Ruby will make you really grok Ruby.

u/mcbacon123 · 10 pointsr/csharp

I disagree with the other commenter. Books aren’t boring and slow, they can be more interesting and immersive than video tutorials. Different people learn differently so books are great for some (like myself) and not so great for others.

That being said, this is the book you want.

It’s very well written and easy to follow for beginners. I find it more useful than most video tutorials for beginners.

If books aren’t your thing try pluralsight.com’s course for beginners

u/PooBiscuits · 1 pointr/EngineeringStudents

Let me recommend a very good book to use: https://www.amazon.com/Head-First-C-Brain-Friendly-Guide/dp/1449399916

This will teach you the basics of C, and just how computers work in general. I found it immensely useful when I was taking a class in C last summer. Any book in the Head First series is fantastic.

u/anim8 · 1 pointr/AskReddit

I just read Daemon, and the sequel Freedom(TM) by daniel Suarez and they are both excellent. The deal with corporate control in the government and the future of the internet. It also makes heroes out of WoW players.

u/vxxn · 1 pointr/ruby

I mispoke (somebody else in thread linked it), but Russ Olsen most definitely wrote a great book on patterns.


u/ctangent · 2 pointsr/Python

You (the programmer) will be partially responsible for any memory that crosses from python to C/C++. Python does this by reference counting: https://docs.python.org/3.5/c-api/refcounting.html . It is your responsibility to increase/decrease the reference count of an object as it moves between python and C.

If learning C++ is your goal and you'd like to use Python while doing it, I'd recommend Boost.Python: http://www.boost.org/doc/libs/1_57_0/libs/python/doc/ . The tutorial is good, although it does assume that you have a basic understanding of C++: http://www.boost.org/doc/libs/1_57_0/libs/python/doc/tutorial/doc/html/index.html . I'd recommend reading a book if you want to dive into C++, such as http://www.amazon.com/gp/product/0321563840/ref=pd_lpo_sbs_dp_ss_1?pf_rd_p=1944687602&amp;amp;pf_rd_s=lpo-top-stripe-1&amp;amp;pf_rd_t=201&amp;amp;pf_rd_i=0201889544&amp;amp;pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_r=1C9XVC14E3BDBBF8VKP5 .

u/skarlso · 3 pointsr/golang

Did you do research on your customer base? Is there really a need for yet another Learn Go for a Beginner style of book? I'm really struggling to actually find some good advanced material about Go being used in production environment. And production level architecture and deployment systems and builds with jenkins, or whatever. But there are many beginner guides out there already.

It's fine if you want to, I'm just saying, that something a bit more advanced might sell better? Or would be altogether beneficial?

u/Steve_the_Scout · 2 pointsr/learnprogramming

I've been writing C++ for about three years now, so I'm mostly familiar with C++11 (one of the newer updates that added quite a bit of functionality and sort of "updated" the language to make it more modern), though there are definitely people with way more experience in it than me on here.

C++ is a language with a very steep initial learning curve that drops drastically once you understand the basic concepts and write a few programs to practice the concepts involved. If you feel like it's too difficult at some point, take a break, then come at it from a different approach (and of course write a few tests to make sure you're getting it). This applies to other languages almost equally, of course.

You should try to learn C++11 (and C++14, a minor update) more than older variations of the language because it added quite a bit to make it easier to read and write with.

Online guides for C++ tend to be outdated or just plain wrong, it's actually one of the few languages with that quality (although that's changing slowly). It's best to get a book like The C++ Programming Language or Programming Principles and Practice Using C++ (which I would recommend for you over the former, which is actually more of a reference book). By the way, they're both authored by the initial creator of the language, so they also explain some of the design choices and details of the language which may or may not help you better understand it.

Beyond that, just do what's suggested for any other programming language (look at references, read actual programs written in it, etc.)/

u/jquiqu · 3 pointsr/pcmasterrace

coding isn't bad. just get a good book, actually read it, and do programming exercises daily (some can be found at the end of sections in a book if you find a good one). You'll get good in no time.

If you want to learn C++, which is what I learned as my first language, good beginner books are:




u/PSNB · 13 pointsr/cpp

Honestly, your best bet would probably be to read a textbook/reference on the language.

Stroustrup's "The C++ Programming Language" is quite good. If you want something more condensed, you could also check out his "A Tour of C++", which is much of the same material in a much smaller package.

u/Ursium · -3 pointsr/ethereum

Good point, for accuracy I should probably have written "Cyberpunk" however a) I was being a bit facetious/lose b) I see both cypher and cyber punk as one movement these days, probably because i'm getting old c) my preference goes to Daemon by Daniel Suarez.

Littérature Bonus points: Karl Schroeder from "I am the mighty brick" fame is an Ethereum fan.

u/ITGZachATTACK · 2 pointsr/java

I'm only about 6 chapters into volume 1, but I'm really enjoying Core Java by Cay Horstman and Gary Cornell. It assumes previous programming knowledge. My only issue with it so far is that there are no exercises to work through.

I also hear Thinking in Java is the defacto standard on how to learn it though, but I don't know if it assumes previous programming knowledge or not.

I started with C++ so the C++ comparisons throughout are helpful to me.

If you're interested in Core Java:

Volume I - http://www.amazon.com/Core-Volume-I-Fundamentals-Edition-Series/dp/0137081898/ref=dp_ob_title_bk

Volume II - http://www.amazon.com/Volume-II-Advanced-Features-Edition-Series/dp/013708160X/ref=pd_sim_b_1

u/JAguilon · 3 pointsr/gatech

If you can already program, the most important thing is to get a good handle on modern C++. I can't think of a good class at GT that emphasizes things like smart pointers, multi-threading, or the modern standard lib. I learned from A Tour of C++:


u/rekt_brownie · 2 pointsr/programmingcirclejerk

I like https://www.amazon.com/Tour-2nd-Depth-Bjarne-Stroustrup/dp/0134997832/ref=sr_1_3?keywords=C%2B%2B+in+depth&amp;qid=1562532539&amp;s=gateway&amp;sr=8-3, the Tour of C++.

I learned C++ in a really unstructured way, I learned C++11, and I basically just kept at looking at new proposals that were being introduced into the language and I was like hey these are pretty nice, I'll use them.

u/danwin · 1 pointr/ruby

Well, while we're on the topic, I'll recommend another book I've liked ;)

"Design Patterns in Ruby" by Russ Olsen


It covers Gang of Four patterns (well, most of them) except in Ruby...an extremely helpful reference and very readable...my only caveat is that if you get it for Kindle, the code is not particularly well-formatted.

u/ThunderMountain · 1 pointr/gis

Thanks! I have a student license, I've been working my way throught the GIS Tutorial Series and will be getting Python Scripting for ArcGIS. Do you have any recommendations for any other books in perticular? Personal projects sound like a great option too.

u/optimal_persona · 3 pointsr/ruby

I'm getting good mileage out of David Copeland's Build Awesome Command-Line Applications in Ruby 2 (2013). For Ruby-specific best practices (I'm coming from PHP), Sandi Metz' Practical Object-Oriented Design (2019) and Russ Olsen's Eloquent Ruby (2011) are opening my eyes to how it's done here. In particular, Metz' focus on the role of messages in OO design has changed my approach to planning and testing - just in time for a critical project.

u/PolyglotPirate · 3 pointsr/golang

I guess it depends on how far along you are with Go. I used the following:

"The Go Programming Language" from Addison-Wesley, one of the authors Kernighan, co-authored the "C Programming Language" book. I'm kinda a programming language theory nerd, so I loved it. https://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440/

I really got a lot out of "Go in Practice" from Manning Publications, especially liked the Concurrency + Concurrency Patterns chapters.


Since we almost always need some web programming these days, I used "Web Development with Go" for learning some basics and more advanced Go web programming. The code from the book is in github here: https://github.com/Apress/web-dev-w-go. It was good to get started with some APIs in the Go ecosystem.

Next I'm going to start on GUI development with go from Packt: https://www.packtpub.com/application-development/hands-gui-application-development-go

I've also been going through the O'Reilly learning path for Go from Rachel Roumeliotis. https://learning.oreilly.com/videos/learning-path-go/9781491958100/

Some others:

Profiling Go applications: https://www.integralist.co.uk/posts/profiling-go/

I always love the Java/JavaScript/Groovy/Ruby/Python "puzzlers" talks, check out the go puzzlers here: https://talks.godoc.org/github.com/davecheney/presentations/gopher-puzzlers.slide#1

u/funkybside · 4 pointsr/booksuggestions

I enjoyed Daemon by Daniel Saurez. Freedom was worth the follow up as well. Might not be exactly the VR world you have in mind, but I thought it fun.

u/BurpsWangy · 1 pointr/golang

I applied as well. If you haven't, look at courses and video from Todd McLeod. I think most of his Udemy courses were fairly cheap, and he offers a lot of valuable information on his YouTube channel. "The Go Programming Language" is a great book too.


Worth it.

u/AnTaRes27_ · 1 pointr/utdallas

the books i have:

C++ 8th edition by Tony Gaddis amazon link

C 8th edition by Paul &amp; Harvey Deitel amazon link

Schaum's Outline: Advanced Mathematics for Engineers and Scientists amazon link

the books i want:

Shigley's Mechanical Engineering Design (in SI units); ISBN 978-9339221638

Machinery's Handbook; ISBN 978-0831130916

Machine Shop Trade Secrets by James Harvey; ISBN 978-0831132279 or 978-0831134778 (prefer second edition)

*CNC Trade Secrets by James Harvey; ISBN 978-0831135027

you can PM me your offer and we'll negotiate from there :) note it doesnt really need to be a 1:1 trade. if you have other things in mind PM me anyway i might be interested

i'll delete the post when it's all out. thanks!

u/greatAlexander · 2 pointsr/transhumanism


That two part series has a lot of things like this. Virtual objects interacting with the real world etc... Definitely a neat idea and a good read.

u/khedoros · 3 pointsr/golang

I started with the Tour of Go, and continued with The Go Programming Language, along with playing with the AWS Go SDK examples and code in my employer's repositories.

Coming from a C++-ish background, it was pretty easy to read a bit about, then start writing. There are things that are obviously inspired by object orientation, both in the class-based and message-passing-based senses.

u/Shredforgirls · 0 pointsr/learnjava

Introducion to Java is pretty nice. Before Oracle bought Sun Microsystems, an engineer friend who works at Sun recommended me Thinking in Java.

u/thedracle · 2 pointsr/SaltLakeCity

Depending on what you want to learn, books are a very good resource.

The downside of many internet resources is they are sparse, and lack introduction to simple subjects.

Some of the most effective books I have found for really teaching you how to think like a programmer in various languages are:

u/mapImbibery · 2 pointsr/geography

tl;dl - GIS is here to stay, learn computer skills, and consider where you want to apply your skills.

I just graduated with a BA in Geography and I kinda feel bad for those few students that dodged any GIS classes. It seems to be where geography is going, if not already there, so make sure you at least take the intro course. If GIS is what you decide to focus on, it is an ever-and-rapidly-evolving thing so computer languages are more frequently required by employers (check out r/gisjobs). My department focused on python and my prof was super stoked about this book.
I have one regret, and that's not minoring or double majoring in biology. I took a biogeography course (distributions, island biogeography, etc) and a pyrogeography &amp; fire science course. Biology would have really given me nice credentials to apply GIS to specific things a "geographer" or "GIS analyst" might not have the credentials for.
Have fun and embrace your inner geonerd!
(editted: manbearcat might like the python book I mentioned.)

u/REAL_CONSENT_MATTERS · 2 pointsr/learnprogramming

maybe the liang java book if you want an actual textbook? it's a pretty thorough introductory book and even gets some algorithm practice in, so you could solidify old concepts and fill in any gaps in your knowledge before moving on to a specialization.

otherwise the bot knows whats up and you could check the online resources it linked to.

for motivation what worked for me was promising myself i'd do a certain number of hours per day (i picked 3). if you have trouble finding the time, what i recommend is resetting your sleep schedule so that you get up 3 hours early (or however much you want to do it).

then you make yourself do 3 hours of focused practice when you're at you're most well rested and focused and when you're guaranteed not to have unexpected interruptions. do this for 3 months. congratulations, you've now picked up the programming habit.

for me i no longer worry about hours per day because it's just become what i do for fun when i'm by myself, but committing to 3 hours per day for 3 months is how i got here. from a fellow learner.

u/fiercealfalfa · 1 pointr/Unity3D

What do you think help is?
Seriously, stop fighting the advice you are getting. There is a minimum level of C# knowledge you should have so that you can understand the tutorials.
I am going to recommend a book to you, it is very good for helping beginners understand the basics.
It is called "The C# Player's Guide (3rd Edition)" I recommend reading about the first half of it before you continue with Unity.
Take my advice or not, that is a choice for you to make. But like many of the others in this thread, I have learned how to code already, I have been where you are in the process, this will help.


u/zoug · 8 pointsr/Omaha

You honestly need to change your attitude if you want a successful career in development.

Red flags from this and your post in cscareerquestions:

  • My periods of motivation to work on code at home are infrequent
  • have no interest in full-stack or front end work
  • completely behind on using things like Ant/Maven, JUnit and other recent additions to Java
  • I'm interested in programming in a Unix/Linux environment.

    If you don't have motivation to learn new tools and languages, that's bad. Good developers need to be innovating, creative and always learning (even if it's just on the job)
    Ant/Maven are simply build tools, and relatively archaic ones at that. JUnit has been around for 20 some years and unit testing in general, way longer than that.
    Why care what environment you program in? Every system has an ability to run bash. While some may be more frustrating than others, it shouldn't be something you tell a company or a recruiter or even a discriminator. It'd make sense if you were looking at system administration but not programming.

    To start, I'd say you should grab a couple programming books and see if you actually want to do/work in this field.


    If you read something like the pragmatic programmer and find it boring/uninteresting - find another field.

    If you decide you want to continue, learn:

    unit testing - Junit, Mockito, etc.

    functional programming - Java 8+ streams, lamdas, write some javascript

    spring - dependency injection, inversion of control, annotations

    That said, the job you're looking for probably does exist if you brush up on basic java skills. It's pretty much a nightmarish hellscape of unmotivated developers and maintaining shitty code with people unwilling to keep their toolsets up to date while they watch the clock til retirement.

u/Styrofoam--Boots · 2 pointsr/Ni_no_Kuni

Effective Java 3rd Edition by Joshua Bloch is wonderful:


He helped implement features for the language when working at Sun and has also worked at Google. :)

u/mohself · 3 pointsr/cpp_questions

I enjoyed reading A Tour of C++ by Bjarne Stroustrup. It is short of 200 pages, recommended by Herb Sutter in one of his CppCon talks as the bare minimum every C++ programmer should now, and touches the basics of modern C++ (up to C++11).

Scott Meyer's books are highly revered in the industry as well, based on what I have fathomed. I am gonna read this next.

u/SpagNMeatball · 2 pointsr/AskMen

Daemon and Freedom. Great books about a game developer that dies and leaves behind a Daemon that does some cool stuff (no spoilers).

Highly Recommended if you are a tech/geek/science/internet fan. It is based in the real world, current time and technology so it is really believable.

u/LegionSB · 15 pointsr/ruby

&gt; Where can I learn the ruby way of things? for ex: I think ruby does str.reverse! rather than str = str.reverse()

You want Eloquent Ruby. It's a book about writing idiomatic Ruby, which is what you're asking about.

The Pickaxe book and POODR are both excellent books that you also want, but Eloquent Ruby is probably the best book for what you're specifically asking about.

u/KaroshiNakamoto · 1 pointr/Monero

This sounds a lot like Daemon, by Daniel Suarez, a read that I fully recommend. The book was published before even Bitcoin was a thing (late 2006), so the AI had to be a bit more creative about the incentives.

u/ztherion · 2 pointsr/learnprogramming

The C++ Programming Language is a good reference. If you want something more beginner friendly, C++ Primer is good.

u/ACoderGirl · 1 pointr/learnprogramming

Books for one thing. Bjarne Stroustrup's own book is somewhat up to date (C++11). The differences since C++11 (which is something that'd be considered "modern C++") can be picked up in a few ways, but StackOverflow is particularly good for explaining the new features in single, well written articles. That works well for "bridging the gap", since books are typically slow to adjust for this and there's always new language features being added.

u/arp242 · 4 pointsr/golang


In the specific case of Go, The Go Programming Language is the best book that I know of. It does assume some programming knowledge though.

As for Go vs. Python vs. Perl, I agree with the commenters that it would depend a lot on what you're hoping to do with it.

u/ElDiablo666 · -1 pointsr/programming

I absolutely love Stephen Prata's C++ Primer Plus. This is the sixth edition, which I've not read, but I can attest for how great the fifth edition is.

u/Truth_Be_Told · 1 pointr/C_Programming

First note that Career/Job/Market is quite different from Knowledge/Intellectual satisfaction. So you have to keep "earning money" separate from "gaining knowledge" but do both parallely. If you are one of the lucky few who has both aligned in a particular job, you have got it made. Mostly that is never the case and hence you have to work on your Motivation/Enthusiasm and keep hammering away at the difficult subjects. There are no shortcuts :-)

I prefer Books to the Internet for study since they are more coherent and less distracting, allowing you to focus better on a subject. Unless newer editions are reqd. buy used/older editions to save money and build a large library. So here is a selection from my library (in no particular order);

u/Chrinkus · 8 pointsr/cpp

This is about where I'm at, building with CMake, testing with Catch, trying to use different libraries as often as I can.

I would add the following books:

  • A Tour of C++ (2nd ed) - The C++ Programming Language is exhaustive but unfortunately getting old. The original "Tour" was an excerpt fromTCPL but the second edition has C++17 and 20 additions. Its a nice supplement to the big beast.
  • Professional CMake - This is an excellent, modern book on how to use CMake.
u/IntOverflowException · 1 pointr/learnprogramming

That's completely fine.

Here is an excellent book on learning C. I really enjoyed this book, it might be up your alley.

u/redditthinks · 3 pointsr/C_Programming

I used Head First C which has a friendly style. Just yesterday I found Beginning C which looks pretty good.

u/akb960 · 2 pointsr/golang

An Introduction to Programming in Go by Caleb Doxsey


I'm not sure if one can go through it in 30 minutes though. It took me a long afternoon. Neither is it very comprehensive.

The best book in my opinion, however, is The Go Programming Language by K&amp;D. Clear and crisp!

u/CapableCounteroffer · 2 pointsr/golang

You can read the go book which I think is a pretty good source. If you don't have the money for that I would do the go tour, read the Go language specification, and then read Effective Go.

u/adscott1982 · 3 pointsr/csharp

I didn't like it - I thought the demo examples were the most boring thing ever.

I prefer the 'C# Player's Guide' as a beginner book. I really thought he explained the concepts very well and for whatever reason was able to get through pretty much the entirety of it, which is a first for me as I don't usually have much stamina for these things.


I remember I got the first edition a few years ago and I took the time to message RB Whitaker at the time how good I thought his book was. It is on to the third edition now so other people must agree.

u/UpAndDownArrows · 2 pointsr/cscareerquestions

I dropped out of highschool because of books (can't stand them, failed History and Literature). I am at university though now and currently self-learning Java with this book


It is really great with tons of fully working code-samples and tasks after each chapter. And what is important, it's a really new edition, with JavaFX as a GUI building library instead of Swing. If you want Swing, you can choose the 9th edition. But yeah, I am not sure it will help with the architect stuff, if you mean the design patterns (there are other books for this stuff, but I haven't read them yet, so can't recommend anything particular, except that I have heard about Head First Design Patterns but yeah I have like 4 books more to name but no opinion on them)

currently on a page 760

hit the books man, don't make excuses

u/Jerzeem · 19 pointsr/todayilearned

Well, he could also turn his mansion into a deathtrap to try to get lots of publicity for his video game company. Have his daemon short buy his own video game company right before issuing a press release indicating that that company has a backdoor in it, tanking the stock and giving the daemon a tremendous amount of money to enact the rest of his plan.
If that story sounds exciting, I suggest reading the novel it's from, Daniel Suarez's Daemon.

u/DarkDev · 1 pointr/gameDevClassifieds

I'm in the same situation as you and can recommend some good books I started reading:

The C++ Programming Language

Effective C++

Effective Modern C++

You can also find other good books here -&gt; http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list

u/Voley · 1 pointr/programming

A tour of C++ by Bjarne Stroustrup is pretty nice. It is a condensed version of his larger book. Gives a nice overview.


u/TracerBulletX · 2 pointsr/golang

I have a few recommendations from someone who started with go about 2 years ago. Get https://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440 book and work through the whole thing, then work with go for a little on something, then go find https://www.oreilly.com/library/view/ultimate-go-programming/9780135261651/ course by Bill Kennedy and go through the WHOLE thing. Also while you're doing that listen to the Go Time podcast, check out @francesc https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSw youtube channel, and do some https://gophercises.com/ from @joncalhoun These were all the best things I found to successfully animorph into a gopher. Also mandatory recommendation to read the standard library source as you get into things and https://golang.org/doc/effective_go.html

u/alexsparty243 · 3 pointsr/learnprogramming

And it's awesome and accessible because its free! Check it out here. There's also a physical book you can buy here.

u/jbos1190 · 4 pointsr/learnprogramming

This book is made for the absolute beginner in programming. I found it very useful when I learned c++. You can get the 7th (older) edition on amazon used for relatively cheap, if price is a factor for you. Using that book, and getting familiar with an IDE or compiler will definitely prepare you well for your course.

u/farmerje · 5 pointsr/learnprogramming

I recommend Practical Object-Oriented Design in Ruby (aka POODR) and Eloquent Ruby.

I'm expert at C, Ruby, and Python, so if you post code examples of Ruby code you feel isn't idiomatic to gist.github.com I'm happy to take a look and offer feedback. I co-founded Dev Bootcamp, so I'm also familiar with the bumps along the way folks have when learning Ruby, even (and sometimes especially) if they're coming from another language.

The main thing to understand about Ruby is that everything is an object. To wit,

Foo = Class.new
foo = Foo.new
puts foo.object_id

Particular classes are instances of the class "Class," if you can wrap your head around that. Objects talk to each other by passing messages around, i.e., methods. In fact, you can define methods on individual objects (although nobody ever does this):

name = "Jesse"
def name.bark!
puts "woof woof"

But this is what's happening when you see code like

class Foo
def self.bark!
puts "woof woof"

The "self.bark!" sometimes seems like arbitrary syntax used to define class methods (or static methods as they're called in some OOP languages), especially to people coming from Java where you have these seemingly-magical keyword preludes. In Ruby you just define methods on objects, period. Classes are objects, too, and "def self.whatever" is the same as "def Foo.whatever". There's a nice nod to referential transparency there that you don't see in many OOP languages.

Every method is defined on some object, even "global" methods. Exercise: when you define a global method in Ruby what object does it get defined on?

When you need higher-order functions Ruby uses blocks, which are more like functions in JavaScript than lambdas in Python (e.g., they can contain arbitrary code, not just a single expression).

If you understand those three things -- everything is an object, objects communicate via messages called "methods", higher-order functions can be defined using blocks -- you understand about 95% of how Ruby thinks about the world.

I'll add, just because you're a C guy, Ruby "pretends" it doesn't really have a class/object distinction, but the default Ruby interpreter (MRI or sometimes CRuby) does actually have separate structs for classes and objects. It's really a language-level thing.

u/Fiend · 6 pointsr/ruby

Design Patterns In Ruby - Russ Olsen

u/-jp- · 1 pointr/computerscience

Josh Bloch's Effective Java is also really good. Maybe the best book you can buy if you want to understand Java.

u/TheMartyr5 · 1 pointr/learnprogramming

Then learn c++ as it's the most commonly used language in the industry. Also learn how game engines and games work though. Go on amazon pick up a few books on game development, then try using a few game engines like unity3d and unreal engine. create stupid basic games just so you have a feel of how the engine works, then Get the book Game Engine Architectures 2nd edition by Jason Gregory, it gives the ultimate description on how engines work at the low level and high level. Give your self a few months to a few years to fully understand games, game engines, programming and everything I just said as it takes a while to master these subjects. I started learning c++ two years ago and now I'm starting to write my first real software ( A 3D Rendering Engine). But if you stay focused and it's interesting to you time won't matter. These are my steps:

  1. Take a few months to learn C++, these are some good books (in the order they should be read) http://www.amazon.com/Jumping-into-C-Alex-Allain/dp/0988927802/ref=sr_1_2?ie=UTF8&amp;amp;qid=1420731768&amp;amp;sr=8-2&amp;amp;keywords=c%2B%2B and http://www.amazon.com/C-Programming-Language-4th/dp/0321563840/ref=sr_1_1?ie=UTF8&amp;amp;qid=1420731824&amp;amp;sr=8-1&amp;amp;keywords=c%2B%2B

  2. Learn how 2d games and engines work (plenty of source online)
  3. Learn how 3d game engines work (unity3d, unreal engine)
u/MetaKazel · 3 pointsr/learnprogramming

Sorry to hear that, friend.

I would definitely try to get your hands on a copy of The C++ Programming Language, it's got enough content to last you a while and it'll definitely show you all the ins-and-outs of C++.

u/Zoomerdog · 1 pointr/AskReddit

Books! Yeah, baby! Here are three:

Daemon and

by Daniel Suarez. The first was self-published, became a hit, and the second is the recently-released sequel. Excellent near-future SciFi about a tech billionaire who sets up an internet daemon to take over the world, basically, after he dies of cancer. Violent, thought-provoking, and absolutely worth reading. My wife liked them also.

The Unincorporated Man by the Kollin brothers -- also new authors; also very talented. The chapter on the "virtual reality plague" alone is worth the time and price of the book, but the whole thing is very compelling.

[Edit because I can't type more than a sentence w/o a typo]

u/visene · 3 pointsr/learnpython

Effective python is an awesome book if you already know programming or if you already know python.


u/bithush · 5 pointsr/C_Programming

Head First C is very good. It not only covers C but also valgrind, make, threads, sockets and networking, etc. It is a great introduction to C and commonly used tools. I was surprised at how much they covered as normally a beginners book in a lower level language do not cover the more complicated things such as networking and threads.

u/berzerKunt · 1 pointr/Unity3D

I would recommend this book: https://www.amazon.com/C-Players-Guide-2nd/dp/0985580127.As a beginner myself, I am still getting back to it when I'm in doubt about smth.It is very comprehensive and very well organized and helps you to understand the C# language as a whole rather than learning straight unity's monobehaviour.

u/rashidnaushad · 1 pointr/slavelabour

Hi. Happy new year! How are you doing?

Do you need this book?

If yes. I have it.

u/aw4y_z · 2 pointsr/golang

I started with this book:


very very good. And then a lot of resource around the web.

Then it depends on what kind of backend you wanna do. Have fun!

u/trytodothis · 2 pointsr/gis

I think the answer to your question is "yes" (I think--question has awkward wording), to a certain degree. Page 39 of the book Python Scripting for ArcGIS explains Python vs ModelBuilder well enough. I'll try to summarize:

  • Some lower-level geoprocessing tasks are only possible in scripts (i.e. using cursors to manipulate rows in an attribute table).

  • Scripting allows for advanced programming logic such as error handling and more advanced data structures

  • A script can run outside of ArcGIS; a ModelBuilder "script" cannot.

  • Scripts can be scheduled to run, Models to my knowledge, can't.

  • ModelBuilder "models" cannot be intergrated with other software.

    In general, a script allows you more flexibility in both where/how/in what situation you need to use it. Creating a model in ModelBuilder and then converting it into a (python) script can give you the framework/basic idea of how a process may need to be automated.
u/NicholasTheGr8t · 1 pointr/compsci

The Go Programming Language by Alan Donovan, and Brian Kernighan is a start.

I wouldn't seriously use Go for gaming or mobile, maybe as an experiment but you'll have to get used to using the best tool for the job.

Web development: Javascript/HTML for Front-end, Python/Ruby/Javascript/PHP/Go/Java for the back-end work
Mobile: Android(Java), iOS(Objective-c, Swift)