I should have clarified more—I am not a beginner programmer; I am (debatably) capable of procedural programming. Been spending the past few days wondering how I managed to go as far as understanding procedural programming and never go any further into OOP. Starting to question both my brain and the sanity of anyone who ever tried to teach me anything relevant to programming; and how we all missed that I was unclear about what OOP is.
I will spend no more than 3 more hours on this reading before trying an alternative like the other textbook suggested by Douglas_Knight; or restart with an intro to programming guide.
I am confused about your goals, then. So you have some experience programming in an imperative (procedural) language. You want to figure out the OOP paradigm? That’s a good idea, but what in the world are you doing in Java, then?
For figuring out how OOP works I’d actually recommend a more-or-less pure OOP language. Ruby is a good choice. If you have a very twisted mind (it’s LW, after all), there is an… unconventional but interesting guide to Ruby written by a person who goes by the name of Why The Lucky Stiff X-)
If you don’t want to do Ruby, Python is also fine. Smalltalk is cute, but… is of mostly academic interest by now. In any case I’d avoid Java if you’re trying to understand the OOP paradigm and how it’s different from imperative.
Original goal: make an android app that does something (specific and not particularly important right now).
My path: try to use android studio via developer.android training (as linked in the first comment). Get lost. Try to work out what was going on. Discover what OOP actually is. Read more and more. Roughly get to where I am now.
Important question: Is there are better/smarter/faster/easier way to be making an app? I figured android studio would be the most easy to use (where I was previously not sure how to get an app onto the phone) because its built to go with android devices.
Just make sure you don’t try going too meta too soon, otherwise you may lose touch with reality.
1) The “hello world” app you made—did you have anyone review your code? Maybe it contains obvious errors you didn’t notice. Maybe learning about them could be very beneficial in long term. Having an improvement shown in a program you already spent a lot of time thinking about could be better (more motivating, easier to remember) than reading about a similar technique in a book illustrated with a fictional example.
2) Every time you learn something new—do you also make another “hello world” app to test this new knowledge? Otherwise you may get a fake understanding. Also, if you learn about cool new techniques, but never use them, you may not understand the trade-offs. By making sample applications you test your new models against the reality.
I figured android studio would be the most easy to use (where I was previously not sure how to get an app onto the phone) because its built to go with android devices.
I agree.
Unless you want to make a game, in which case Unity is probably a better option. It is not Android-specific, but it can compile to Android platform.
EDIT: Feel free to ask me specific things about Java or Android.
it took hours to figure out how to correctly install Android Studio and get it to compile. Including completely starting again; installing extra packages and accepting that some errors will exist.
eventually most of the hello world app was a sample program; so I didn’t really write it; just worked out how each part went together and how the files were stored in the weird app-code-files folders.
I will be making test programs along the way hopefully. Thanks
Sorry, I haven’t played in the Android world so I’m useless there.
As a general piece of advice about an easier way of making an app—find an open-source app that does something in the same ballpark as what you want your app to do, understand how the relevant parts of it work, then modify them to make the app do your stuff.
I tried looking at a bit of github; but found I lacked fundamentals of OOP to make any sense of what I was looking at. I will see if my final construction is within my reach (after some more reading); if not—I will head back to the gits and fork someone else’s code.
I should have clarified more—I am not a beginner programmer; I am (debatably) capable of procedural programming. Been spending the past few days wondering how I managed to go as far as understanding procedural programming and never go any further into OOP. Starting to question both my brain and the sanity of anyone who ever tried to teach me anything relevant to programming; and how we all missed that I was unclear about what OOP is.
I will spend no more than 3 more hours on this reading before trying an alternative like the other textbook suggested by Douglas_Knight; or restart with an intro to programming guide.
I am confused about your goals, then. So you have some experience programming in an imperative (procedural) language. You want to figure out the OOP paradigm? That’s a good idea, but what in the world are you doing in Java, then?
For figuring out how OOP works I’d actually recommend a more-or-less pure OOP language. Ruby is a good choice. If you have a very twisted mind (it’s LW, after all), there is an… unconventional but interesting guide to Ruby written by a person who goes by the name of Why The Lucky Stiff X-)
If you don’t want to do Ruby, Python is also fine. Smalltalk is cute, but… is of mostly academic interest by now. In any case I’d avoid Java if you’re trying to understand the OOP paradigm and how it’s different from imperative.
I too am confused about my goal.
Original goal: make an android app that does something (specific and not particularly important right now).
My path: try to use android studio via developer.android training (as linked in the first comment). Get lost. Try to work out what was going on. Discover what OOP actually is. Read more and more. Roughly get to where I am now.
Important question: Is there are better/smarter/faster/easier way to be making an app? I figured android studio would be the most easy to use (where I was previously not sure how to get an app onto the phone) because its built to go with android devices.
Just make sure you don’t try going too meta too soon, otherwise you may lose touch with reality.
1) The “hello world” app you made—did you have anyone review your code? Maybe it contains obvious errors you didn’t notice. Maybe learning about them could be very beneficial in long term. Having an improvement shown in a program you already spent a lot of time thinking about could be better (more motivating, easier to remember) than reading about a similar technique in a book illustrated with a fictional example.
2) Every time you learn something new—do you also make another “hello world” app to test this new knowledge? Otherwise you may get a fake understanding. Also, if you learn about cool new techniques, but never use them, you may not understand the trade-offs. By making sample applications you test your new models against the reality.
I agree.
Unless you want to make a game, in which case Unity is probably a better option. It is not Android-specific, but it can compile to Android platform.
EDIT: Feel free to ask me specific things about Java or Android.
Thanks!
it took hours to figure out how to correctly install Android Studio and get it to compile. Including completely starting again; installing extra packages and accepting that some errors will exist.
eventually most of the hello world app was a sample program; so I didn’t really write it; just worked out how each part went together and how the files were stored in the weird app-code-files folders.
I will be making test programs along the way hopefully. Thanks
Not a game; shouldn’t have to worry about it.
Will ask if I need. Thanks!
Sorry, I haven’t played in the Android world so I’m useless there.
As a general piece of advice about an easier way of making an app—find an open-source app that does something in the same ballpark as what you want your app to do, understand how the relevant parts of it work, then modify them to make the app do your stuff.
I tried looking at a bit of github; but found I lacked fundamentals of OOP to make any sense of what I was looking at. I will see if my final construction is within my reach (after some more reading); if not—I will head back to the gits and fork someone else’s code.
Also thanks for the help!