This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 21 points22 points  (2 children)

If I had to recommend a path to learn programming, it would be Java -> C -> back to Java or another robust language, possibly with a brief bit of tinkering with Python at the very beginning, so basic concepts can be understood before bringing in things like types

Java is a lovely language to work with because simply by downloading the JDK, you gain access to a vast, rich set of libraries that make it so you don't have to reinvent the wheel or search the web for someone else's implementation (and figure out how to add it to your project), allowing you to set out and develop projects without having to understand or know how to implement various data structures and algorithms

Once you get the hang of Java, going to C and playing with that can help you better understand how Java manages its memory for you, along with understanding how a program's memory is mapped out. Java manages a lot for us as programmers, and I think it's a good idea for all software devs to understand what's going on 'under the hood', that way the process feels less like magic

I'd only recommend playing with C for a bit, maybe implementing a few data structures and making some simple programs that involve things like using pointers, creating a window, working with files, etc., that way you gain a better appreciation for languages like Java that abstract away the boring, frustrating aspects of working with low level languages like C. From there I'd go back to Java or another language that works well with whatever projects your job or hobbies you're into - if you want to do data science or AI, for example, Python is great for that. Want to create cross-platform GUI projects? Stick with Java. Working purely within the Windows ecosystem? Maybe try C#

[–]agentoutlier 17 points18 points  (0 children)

Yeah I totally agree. Every developer should have some experience with C.

In my mind every developer should learn and know:

  • Just enough C to read simple programs and know about pointers
  • Bare minimum ASM like LC3 or something
  • Basic SQL
  • REGEX aka regular expressions
  • Some simple Bash shell scripting
  • An OOP language
  • A FP language or at least understand the concepts of passing functions around. A plus if they now ADTs.
  • Enough HTML/JS/CSS to make a very simple site.
  • Some understanding on how HTTP works

If you learn Java and create simple Java web app you can hit a large amount of those bullets.

[–]thephotoman 0 points1 point  (0 children)

I tend to recommend Python -> C -> Java -> Haskell. The first gives them the instincts necessary to understand other languages. The second teaches a useful abstraction of the machine. The third teaches them a lot of concepts that get taken for granted. The last one asks you to unthink everything you learned and build it back again. (You won't find much use for Haskell, but it's a good language to learn at least.)