How to learn a programming language well

Hey guys,

I know the syntax to Java, C++, python, Javascript, visual basic, mySQL, and HTML/CSS. The issues is all I know is the syntax. I do not know anything beyond that. I learned these languages at my 2 year college and have not had time to practice and get good at any one of them. I know basic of each pretty much no advance level topics. Like C++ did not teach memory management did not have time to learn it on my own.

Right now I have extra time to practice. What language should I continue with? I know about the same amount of each.
I have no idea what kind of developer I want to be, I am interested in developing for Linux, but do not know where to start. I like the idea behind open source projects and want to get involved with open source projects, but I also want to learn something to get a job in. Where I live the job market seems to be most Java and .NET, but those seem to be for Senior developers.

Should I care about what I want to develop now or just code to learn and worry what kind of developer I want to be later?
( I have 3 years until I am out of school, 2 at local college 3 at university, had shit highschool grades)

What are some good ways to practice, just random application that do things or better ways.

I am thinking about taking classes on Pluralsight or other online programming classes. Best ways to learn? thinking of picking up a book on what ever language I pick as well.

I feel like I got stuck in a trap I wish instead of learning random languages piss poor I could have learned one well.

tl:dr

What language to continue. How to practice.

Best way to learn a language well is to have challenging projects.

If something seems kludgy but works, push yourself to research and find a better way to do things.

I can’t just give you a bunch of coding problems to work though… you need to be inspired to find your own projects.

5 Likes

Read the man pages a lot.

2 Likes

So just take what I know pick and do not be lazy.

Fix problem then find what i think is the best way. Will do.

Understand that, not looking for the projects them self just really debating on relearning a language or just dive in. and what language I should continue with if I want to developer for Linux.( or if I should worry about that later)

Will do.

Which language to use depends on what you’d like to develop. For low level / performance critical applications go C++, for Desktop/Mobile applications python. Web is obviously JavaScript.

Jumping between languages is easy once you know any one of them so I wouldn’t worry about the language choice too much though.

1 Like

Understood, So just pick one that is cross platform and move on get good at it then worry about what language later, since right now i want to get into desktop development for linux and windows python or java would be a great place to start.

Exactly. I missed java in your list of languages, but its obviously also a good language for desktop applications. Java also makes it easier to write maintainable code due to the static typing and heavy use of interfaces imho

1 Like

I would be slightly hesitant to start learning Java if you want to do web development, as the majority of places it has been used is now dwindling (See Firefox dumping NPAPI, creating ESR). Using Java as a base coding language is still highly sought after, just as C++ will continue to be.

I’m a pretty big fan of Python, since it has some pretty extreme flexibility in what you can do with it, without much headache. It’s also very readable for troubleshooting. I would highly recommend starting with that if you are simply wanting to learn how to program, as you can learn the basics and the complexities pretty quickly. Please read the docs and learn to follow coding guidelines though. It’s always painful to read a new programmer’s code if they don’t follow any of the standards. That’s true no matter which language you learn.

From there, I would recommend learning Bash, or at least playing around in Linux for a while.

Lastly, what @pFtpr says is true, learning one programming language well is the key to understanding most of the rest. There is a caveat: that they are similar. Java and C++ are easy to transition between because they are nearly identical object oriented languages. But going from something like Java to something like Bash or R (Data Science language) can be a pain.

1 Like

fwiw I took an object-oriented programming class in college and learned a ton about Java. Syntax is easy, but the teacher mostly taught us a billion design patterns so that our programs could be concise and modular. Completely changed the way I programmed.

Noted, it seem to be what most places hire for around me.

From what I have learned in python it seems to be the easiest to learn the syntax of for me, it just makes since it feel less like programing syntax and more like learning MLA or paper formatting and then the keywords are pretty self explanatory from the limited amout i have used it. It seems the be 3ed most hire for around where I live and the pay seems to be the highest ( but that is anecdotal). Also guidelines i assume can be found on pythons website and python 2 or 3 i know there is a difference, but not sure what it is. I will do more research on it.

I have picked up the basic of Bash over the last few months using it in Arch Linux and fedora. My UNIX class has helped me program more than my programming classes since I have actually had to solve problems. I forgot the mention Bash as a language i have played with.

I wish I had a class like that. All the classes i have had teach us up to what inheritance and classes are maybe a bit more. Then stops without explaining how to actually implement any of it.

Yep, these are called Python Enhancement Proposals. Most are passed through, but they essentially have a sort of voting process. PEP8 is the general style guide that is handy for how to design your code. I wouldn’t expect anyone to know half of the standards, but it’s a helpful place to start conforming your code.

Pycharm is a great IDE that incorporates PEP standards and intuitive code improvement. The community edition has everything you should need, and it’s free.

Stick with 3.6.3 for now (obviously update as needed/desired). It would be a good idea to know the differences so that you can reference and utilize code explanation or snippets that were created with earlier code, but it generally comes down to syntax and formatting/encoding of strings.
https://wiki.python.org/moin/Python2orPython3

An example of a reason to use python 2 would be if you needed to support older hardware/software. I recently had to build a database that was compatible between new versions of Linux and Windows, and ALSO Windows XP SP1 (could not upgrade due to breaking their ancient software). If I remember correctly, I had to use Python 2.5.4 (This was when 2.7 and 3.5 were both in existence already). If anyone is curious, between other limitations and small data capacity for the database, I ended up using sqlite with a bit of script that only allowed one user to access it simultaneously, with a short queue, because of the potential data loss otherwise.

2 Likes

I have seen it before as PEP8, but had no idea what is was thanks for that, I am going to take a class on pluralsight and apparently they go over it from what i have watched so far of the introductory lesson.

I have the JetBrains pro version for free since I am a student, never have used any other than intellij

Alright I just read over the documentation from python.org it explained the basic of it. It is so weird that python 2 is still used after almost 8 years since the release of 3. (other than for legacy support)

Thanks, that explains it as much as i need to for now worry about it later

IDE
I highly recommend PyCharm as well, or any other JetBrains IDE, depending on which language you decide on. Some (including PyCharm) have a perfectly sufficient free version, though you can even get the paid one for free as student.

There is also PyCharm EDU, which contains built-in learning resources: https://www.jetbrains.com/pycharm-edu/learners/
I have never used it myself, but you may want to give it a try anyway.

Coding Style
In addition to PEP-8 google has published guidelines for many languages. Here’s the python one, just google for the others: https://google.github.io/styleguide/pyguide.html

Tutorials

For programming tutorials take look at http://programming-motherfucker.com/ (yes, I’m serious). Can’t vouch for the python tutorials in particular, but I’ve found that site to often have aggregated the best tutorials out there.

2 Likes

There are a lot of sites that offer projects, but personally I prefer to think of projects myself, and just try myself. I feel like doing all these projects on course sites kills my creativity.

1 Like

You learn programming just like every other thing in the world: imitation then experimentation.

Start by reading the source code from successful open source programs and then try to contribute to them. Is there a program that you feel that you need but can’t find? Write it yourself.

Also, IDEs are awful when you are trying to learn to program. You won’t learn anything if you are spoon-fed.

2 Likes

I am taking a tutorial on Pluralsight, they uye PyCharm following along will that for now, After I plan to switch to VIM since I use it for most everything else. Want to learn how the language looks first that way I know I have VIM set up correctly. Still new to VIM, have never had to add a where it helps with a language before or even if you have to set that up, need to research.

Will look into, I do not plan to just do one tutorial, will use this resource after pluralsight (the videos are nice to follow with for me) then will look into programming-motherfucker. I haven’t seen it before, but it made me laugh with the site.

Yeah could be my problem after you look into projects that are meant to be projects I just think “100’s of other people have solved this for the purpose of solving it” then it feels pointless and even when I push though the project. It feels sub-par to what you could have done, because it feels pointless. Probably bad mindset for me to have about it.

I kind of share this same idea, I am going to use an IDE for a bit to know what it looks like and then since i am still learning VIM set it up so that vim will help with keywords have no idea how to do that yet (should be a good learning experience), just switched from atom.io to VIM as my main text editor, so have a lot to learn how it works completely.

I recommend the daily programmer subreddit for a daily dose of programming challenges of varying degrees of difficulty

1 Like

I strongly disagree. Perhaps some people learn differently, but I learned about several PEP8 standards that I hadn’t previously abided by when I started using Pycharm. It helpfully points out where you messed up, and how to fix it. These are crucial things that you need to know in programming. If you are unfamiliar with a language, you may not know where to start in the troubleshooting process. Should you be able to fix issues yourself after you are familiar with a language? Sure, but not immediately after writing “HelloWorld.py” or other first script.

Thank you for that did not know that was a thing do not use reddit often. Will look into this for challenges.

I can see both, my plan to to learn the syntax first using pycharm then move on after I have a decent understanding of python syntax. I can see the argument for either using IDE vs not using IDE, Like you said people can learn differently. I feel like personally PyCharm will be better for me until I have a good, if not great understanding of how it is wrote and how it is wrote properly, then transition into VIM. IDE’s so far have felt like they get more in my way than help me, but this is completely anecdotal because I have failed to successfully learn a programming language well. I like PyCharm so far it seem pretty out of my way and works really well, but I feel like it may baby me a bit.

1 Like

I’d recommend using Pycharm until it stops correcting you frequently, at which point you can probably use VIM or any other text editor without any worries. If you want to challenge yourself, you could try weaning yourself from using an IDE over time, until you stop using it altogether. Granted, if you only ever use a text editor, you generally should check for updates/new versions frequently. One recent update/PEP that is super handy fixes string formatting so it doesn’t look ridiculous. I didn’t know about it until a coworker who uses Pycharm religiously had informed me.