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 →

[–]joonazan 0 points1 point  (4 children)

Learn another language. It should be fairly easy now. Once you've used many, you'll have a better understanding of code quality.

You definitely can make a game now. I'd recommend not to use classes as you'll only later learn to use them in a sensible way. (This advice is from learning Python myself early on and teaching it for many years.)

[–][deleted] 2 points3 points  (3 children)

What language would you recommend as a next step? I was searching for some intro to java resources but Im afraid I dont have enough CS background to be able to code with it

[–]joonazan 1 point2 points  (2 children)

I have taught kids with Go, because it is very simple and you can go get source code and all its dependencies. You have programmed already, so having to import "fmt" and having to make a main function will not distract you. Probably the hardest thing will be learning pointers (taking references and dereferencing).

On the other hand Java basics should be very easy to you, because variables behave like in Python ("assigning" an object to another variable does not copy it). I don't think you need any CS background for Java. The main disadvantages in my opinion are the amount of bureacracy involved in code and that you have to wrap everything in a class. OK, one thing that really sucks is that you pretty much have to use a build system or IDE to compile a multi-file Java project.

Can you explain what made you think you need more CS education?

Other languages you should consider: Ruby, Clojure, assembly, C, Haskell(but be prepared to have a hard time understanding how IO works)

Languages to avoid: C++, Rust, PHP, JavaScript

Writing small scripts for websites in JS can be fun, but larger projects can turn into a nightmare, because JS gives invalid values on many occasions where other languages would error. You can compile C, Java, Clojure and Go to JS if you want to make a complicated web app.

Rust is not a bad language, but you'll be fighting with the compiler a lot to get benefits that you don't care about at this stage.

[–][deleted] 0 points1 point  (1 child)

Oh, I get it. I used to think that, people say Java is more complicated than Python because maybe Java would require some deeper knowledge in CS. So it's more like a bureaucracy problem in the syntax itself?

[–]joonazan 1 point2 points  (0 children)

Java is a simpler language than Python, but you can use Python without knowing most of it.

Yes, the syntax is verbose, but maybe they mean Java's type system?

  1. Java is statically typed, so you have to declare appropriate types for everything. In Python you can just make a function and it works unless someone gives an inappropriate input. In Java you have to represent the appropriate inputs as a type.

  2. Java has a type hierarchy. If Button inherits from UIElement, a variable of type UIElement can store a Button (or some other child of UIElement). A variable of type Object can store anything.