Page 1 of 1 [ 6 posts ] 

K_Kelly
Veteran
Veteran

User avatar

Joined: 18 Apr 2014
Age: 32
Gender: Male
Posts: 1,452

20 Dec 2014, 10:16 pm

What makes a specific computer programming language "click" with you? I want to start coding stuff, so everyone is recommending I start coding Python. It sounds ok, but I want to begin by developing apps for Android operating system, because I happen to have an Android phone. I read that Android native apps are developed in the Java language, so I need to download those tools.

My weak suit is that I am not a very imaginative person whenever it comes to conceiving new programming projects. My "tunnel vision" is too narrow my imagination and creativity is dumber than an average person's. Even if I could read someone else code, I can't figure it out what to add or change to make it "better".



SweetTooth
Snowy Owl
Snowy Owl

User avatar

Joined: 7 Oct 2014
Gender: Male
Posts: 148
Location: The Netherlands

21 Dec 2014, 7:43 am

K_Kelly wrote:
What makes a specific computer programming language "click" with you? I want to start coding stuff, so everyone is recommending I start coding Python. It sounds ok, but I want to begin by developing apps for Android operating system, because I happen to have an Android phone. I read that Android native apps are developed in the Java language, so I need to download those tools.

My weak suit is that I am not a very imaginative person whenever it comes to conceiving new programming projects. My "tunnel vision" is too narrow my imagination and creativity is dumber than an average person's. Even if I could read someone else code, I can't figure it out what to add or change to make it "better".


Nice that you would like to start programming. I don't have experience with smartphone coding, but yes, Android apps are typically written in Java. There is also a so-called "native development kit" that allows you to use C or C++, but I think that for beginners the standard S(oftware) D(development) K(it) is the way to go. A lot of information on both Java in general as well as the android SDK is available, and there may even be texts that teach you Java on your Android phone from scratch.

One way to come up with ideas for projects is to think about what your environment (your phone, in this case) is lacking and then write that yourself. Of course, you could just download it from Google Play, but the point here is that you want to learn writing software. Start with small, managable tasks and gradually increase the complexity. A complimentary way is to invest in a good book (see the first paragraph) that comes with exercises. They can be motivating and also help to memorise what you just learned.

Finally, to answer your question, a programming languague "clicks" with me, when it allows me to express my programming solution to a certain problem succinctly and in a way that is close to how I would express myself on paper. For example, if A and B are two compatible matrices, then it's great when I can just write "A*B" for the matrix-matrix product instead of having to implement a triple "for loop". A corollary of this is that whether or not a certain language "clicks" with me depends a lot on the type of problem I'm trying to solve.



K_Kelly
Veteran
Veteran

User avatar

Joined: 18 Apr 2014
Age: 32
Gender: Male
Posts: 1,452

21 Dec 2014, 6:59 pm

In the past I usually just code out the "hello world" program and nothing else. I'd get easily distracted.

And my Android has all the apps that perform the function I am content with for now. The problem is that there is an app for everything out there.



Deuterium
Deinonychus
Deinonychus

User avatar

Joined: 7 Jul 2011
Gender: Male
Posts: 360
Location: United States, GA

22 Dec 2014, 5:37 pm

If you cannot think of something to write for your phone then you have little reason to be set on learning how to write something for your phone.

That said, C# or Java are what I would recommend. They are memory managed, high-level, and portable, which lets you focus on understanding the basic logic of programming more easily. They also have solid IDEs that let you easily build interfaces with, compile, and distribute your executables out-of-the-box. The downside is that they can encourage you to write messy or inefficient code, but on modern hardware, for the kinds of projects hobbyists will tend to work on, this will probably lead to no perceivable impact. As you progress learning you will better understand how to write cleaner code over time, and your first projects won't be anything you sell or that any notable number of people actually use and will be hideously designed.

If you become reasonably knowledgeable with either of these you do not actually need to learn a lower-level language like C/C++ as they are probably more than capable of filling your needs. However, there is no question that if you had to pick a single language for every possible purpose then C/C++ would be what to learn - it is the de facto of languages that can do anything if you know how to tell it to, but I would not recommend it as a first language for the same reason I would not recommend someone start learning mathematics by taking a course in calculus - you should start with something simpler to understand, and (most importantly in my opinion) something that gives you more 'fun' results in a shorter time-frame. Fun results motivate you to keep learning.



SweetTooth
Snowy Owl
Snowy Owl

User avatar

Joined: 7 Oct 2014
Gender: Male
Posts: 148
Location: The Netherlands

22 Dec 2014, 6:16 pm

Deuterium wrote:
If you cannot think of something to write for your phone then you have little reason to be set on learning how to write something for your phone.

That said, C# or Java are what I would recommend. They are memory managed, high-level, and portable, which lets you focus on understanding the basic logic of programming more easily. They also have solid IDEs that let you easily build interfaces with, compile, and distribute your executables out-of-the-box. The downside is that they can encourage you to write messy or inefficient code, but on modern hardware, for the kinds of projects hobbyists will tend to work on, this will probably lead to no perceivable impact. As you progress learning you will better understand how to write cleaner code over time, and your first projects won't be anything you sell or that any notable number of people actually use and will be hideously designed.

If you become reasonably knowledgeable with either of these you do not actually need to learn a lower-level language like C/C++ as they are probably more than capable of filling your needs. However, there is no question that if you had to pick a single language for every possible purpose then C/C++ would be what to learn - it is the de facto of languages that can do anything if you know how to tell it to, but I would not recommend it as a first language for the same reason I would not recommend someone start learning mathematics by taking a course in calculus - you should start with something simpler to understand, and (most importantly in my opinion) something that gives you more 'fun' results in a shorter time-frame. Fun results motivate you to keep learning.


Two remarks:

1. I don't think it matters that the OP cannot think of "original ideas". For example, writing your own (simple) text editor can be very instructive, even when there are already a million different and probably superior editors out there. So maybe the OP could still find something he'd like to know how to code for his phone.

2. This is perhaps pedantic, but I could not resist pointing out to the OP that C and C++ are in fact not one but two different (and of course closely related) languages. The reason I would like to make this remark, is because in my opinion code written as "C with a bit of C++" or vice versa often (but not always) tends to be bad code. The conceptual foundations and perspectives of the two languages are quite different and each language has its merits, but please, if you ever feel like picking up one of the two, learn either language proper. Which one you should pick, depends on your problem.

Sorry for sounding like a school teacher :wink: Otherwise, I completely agree with you.

Best wishes,

ST.



guitarman2010
Veteran
Veteran

User avatar

Joined: 12 May 2012
Gender: Male
Posts: 578
Location: Erie, PA

24 Dec 2014, 3:14 pm

You can develop apps for Android using only Python, Google it if you don't believe me.


_________________
When u hit the walls of sanity, u have no-where to go....