Jump to content

is it a bad idea to teach myself a programming language?

mythicalbeast

Python is best way to go for beginners, it incorporates both linear and OOP (for when you're ready to got into that) styles, it's also very simple to understand compared to more complex languages such as Java (where OO is prominent) .

Link to comment
Share on other sites

Link to post
Share on other sites

Not a bad idea, I myself started learning programming with the online lessons,

then eventually decided to take a degree for for formality

Link to comment
Share on other sites

Link to post
Share on other sites

As many people here have said (and many more will tell you through out your life) in programming, it's most important to learn concepts.

My personal suggestion (from experience) would be to start you off with this book: https://pine.fm/LearnToProgram/ (don't worry, it's free to read online).

It offers good explanations for people who are just starting out in programming and features a relatively new programming language called Ruby which is becoming pretty popular, it's easy to grasp (no stubborn syntax rules like java or javascript requiring you to finish most lines with ';' ) and is built and used around the oh-so-famous "OOP" everyone here keeps bringing up. It's the most used style of programming, so you're not learning something outdated either.

 

Good luck!

[spoiler=pc specs:]cpu: i5-4670k | mobo: z87-pro | cpu cooler: h100i | ram: 8gb vengeance pro | gpu: gtx770 ftw 4gb | case: nzxt switch 810 matte black | storage: 240gb ssd; 1tb hdd | psu: 750w corsair rm |
keyboards: max nighthawk x8 mx brown + blue led; corsair k60 mx red; ducky shine 3 tkl mx blue + orange led | mouse: deathadder black edition | audio: FiiO E10; sennheiser hd558; grado sr80i; sony mdr-nc200d; blue snowball |

Link to comment
Share on other sites

Link to post
Share on other sites

I'm going to chime in on my own opinion from programming for many years and working two years professionally as well as starting my undergrad in computer science. I would recommend you start learning C++, not C, not Java, not Python, but C++. The reason why is because C++ is a modern language, teaches good habits, educates you about memory management and lower level optimization while offering the higher level abstractions that Java does as well as mixed paradigm programming (OO and non-OO, which in my opinion is important because purely OO languages are fundamentally flawed because not everything fits in an OO hierarchy). I recommend against C because it has a more niche purpose in system-level programming (kernels, integrated systems, etc) anymore. It's not old by any means, but C++ is a better general purpose language for most jobs.

 

Learn Java,it's an OOP(Object-oriented programing) language,and it will help you understand the OOP concept and how a programming language works.

C++ and Java mainly have libraries and syntax as a difference.

 

See my above comments about C++. On top of those, Java is cross-platform, but it's fundamentally slower and abstracts memory management, which is crucial to learn first before you learn higher level languages. It's harder to learn those lower level concepts from moving downward. It's important to build a solid base of skill in lower level languages before moving up in level of abstractions.

 

And pointers and memory management.

 

I always recommend Python as a first language (it's also OO), it just seems like the easiest for beginners to learn. And once you learn 1 language learning the syntax of another shouldn't be hard.

 

I wouldn't recommend Python. The syntax is pretty confusing, to be honest, and it's another interpreted language. I would only recommend learning Python after learning C++ and Java.

 

Try not to restrict yourself to a programming language; instead, learn common programming concepts. Different languages implement these concepts differently, but they're all essentially the same. Once you've gotten a good grasp of the concepts, and how to fully take advantage of it (as well as when it's not appropriate), learning one or more languages is trivial. 

 

Good places to start: C. It's basic, but can be powerful when used right. Java, Python, and C++ are three other languages that'll help explain many common programming concepts. 

 

Refer to my original two parts, C isn't where you should start.

 

Good suggestion. Would not start with python and not because I'm a ruby developer. High level languages hide basics so Java or C++ in my opinion would be better starting point. Of course in high level languages you can visible results faster (like Rails 5 min blog) but I don't think it's best for learning principles.

 

Java qualifies as a high level language. It hides a TON of stuff. C++ would be better because it hides as much as you want it to hide.

Link to comment
Share on other sites

Link to post
Share on other sites

Refer to my original two parts, C isn't where you should start.

Second paragraph is more of an aside really. And if you actually read the post, I don't isolate C, it's simply one place to start. The concepts in C are very basic and universal - every language has its own variation of it. C is fine for initial learning, and quick. Can easily blaze through the concepts in a few short days and get a good grasp of the fundamentals which are also applicable to C++ (and seeing as how C code is valid C++ code, it's not necessarily a bad thing to learn C). 

 

Either way, I'm not emphasizing programming languages; the concepts are fairly universal and mastering a language is just a matter of knowing and practising the different syntax for different languages. 

Interested in Linux, SteamOS and Open-source applications? Go here

Gaming Rig - CPU: i5 3570k @ Stock | GPU: EVGA Geforce 560Ti 448 Core Classified Ultra | RAM: Mushkin Enhanced Blackline 8GB DDR3 1600 | SSD: Crucial M4 128GB | HDD: 3TB Seagate Barracuda, 1TB WD Caviar Black, 1TB Seagate Barracuda | Case: Antec Lanboy Air | KB: Corsair Vengeance K70 Cherry MX Blue | Mouse: Corsair Vengeance M95 | Headset: Steelseries Siberia V2

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

There is no BEST language to learn.  Do something that you're interested in.  With the proper commitment and interest, anything can be the "easiest" to learn. 

 

The idea is that each of the languages has a strength.  Usually the tradeoff is simplicity vs power - simple languages are less powerful and vice versa.  Obviously there are exceptions to this. 

 

I would say if you want to create an app that does something simple in Windows, try learning C# in Visual Basic.  If you want something to go on the web, try HTML, Java, or JavaScript.  

 

Whatever language you learn will be useful and will make learning other languages possible.  

 

Personally I started with Java then on to HTML, C++, C#, PHP, SQL, then everything else. But every learning path has it's own advantages and disadvantages.  If you try to tackle a hard language, it will make other languages seem easy BUT you may never be able to master it, but again with the proper motivation, you can do it.

@TechBenchTV

 

Ex-NCIX Tech Tips Producer.  Linus hates my scripts. 

Link to comment
Share on other sites

Link to post
Share on other sites

Second paragraph is more of an aside really. And if you actually read the post, I don't isolate C, it's simply one place to start. The concepts in C are very basic and universal - every language has its own variation of it. C is fine for initial learning, and quick. Can easily blaze through the concepts in a few short days and get a good grasp of the fundamentals which are also applicable to C++ (and seeing as how C code is valid C++ code, it's not necessarily a bad thing to learn C). 

 

Either way, I'm not emphasizing programming languages; the concepts are fairly universal and mastering a language is just a matter of knowing and practising the different syntax for different languages. 

 

I would argue it's actually detrimental to learn C before C++ because even though C and C++ are interchangeable, C teaches bad C++ habits. The biggest that come to mind is the unneeded malloc() calls in C++ (new and delete, respectively, or unique_ptr and shared_ptr in C++11) and C-style casting, not to mention the void* data type. In C, given kernel-level development, it makes sense to have void* but in a general purpose application, you better not be using that. And the C-style cast is dangerous in C++. Instead you should be using static_cast, dynamic_cast, reinterpret_cast, and const_cast. C-style strings are also deprecated in C++. Sure, the std::string class is just a wrapper for C-style strings, but it makes it a ton easier to manipulate and work with strings in an abstracted way. Another thing is the difference between cout and printf. Printf is unsafe, cout is just better as far as type enforcement and overflow is concerned. Same goes for scanf and cin. Not to mention streams are infinitely better than "scanned" input because you don't have to take in words. It makes processing binary data THAT much easier (especially if you're messing with endianness as well). There are just far too many benefits to learning C++ first, that learning C first if C++ is your goal doesn't make any sense anymore.

Link to comment
Share on other sites

Link to post
Share on other sites

Okay, let me be specific once and for all.

 

I am NOT referring to language features specific to C or C++. I'm talking about BASIC CONCEPTS. Variables. Loops. Printing data. Arrays. File IO. You don't ever have to touch the C syntax to learn how the above concepts work. You don't ever need to write C code to understand them. You don't ever need to "pick up bad habits" to understand them. 

 

What you're going into is syntax. Different languages do the same things differently. I'm not focusing on syntax. 

 

Concepts. Not Syntax or language features. Concepts are more important. Syntax is secondary. Once you have a grasp of the concepts (any language will do for that), you can focus on syntax and other language-specific features. C and C++ teach the same overall concepts, but in application, they're different. 

Interested in Linux, SteamOS and Open-source applications? Go here

Gaming Rig - CPU: i5 3570k @ Stock | GPU: EVGA Geforce 560Ti 448 Core Classified Ultra | RAM: Mushkin Enhanced Blackline 8GB DDR3 1600 | SSD: Crucial M4 128GB | HDD: 3TB Seagate Barracuda, 1TB WD Caviar Black, 1TB Seagate Barracuda | Case: Antec Lanboy Air | KB: Corsair Vengeance K70 Cherry MX Blue | Mouse: Corsair Vengeance M95 | Headset: Steelseries Siberia V2

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

Okay, let me be specific once and for all.

 

I am NOT referring to language features specific to C or C++. I'm talking about BASIC CONCEPTS. Variables. Loops. Printing data. Arrays. File IO. You don't ever have to touch the C syntax to learn how the above concepts work. You don't ever need to write C code to understand them. You don't ever need to "pick up bad habits" to understand them. 

 

What you're going into is syntax. Different languages do the same things differently. I'm not focusing on syntax. 

 

Concepts. Not Syntax or language features. Concepts are more important. Syntax is secondary. Once you have a grasp of the concepts (any language will do for that), you can focus on syntax and other language-specific features. C and C++ teach the same overall concepts, but in application, they're different. 

 

If you're talking concepts, you don't even need to touch a real language then. Why not play with pseudocode to learn these concepts? Memory management is only teachable in a language that has manual memory management which really narrows down the options to C or C++ which then comes back to my point I made about bad programming habits and things. So I really fail to see your argument here.

Link to comment
Share on other sites

Link to post
Share on other sites

If you're talking concepts, you don't even need to touch a real language then. Why not play with pseudocode to learn these concepts? Memory management is only teachable in a language that has manual memory management which really narrows down the options to C or C++ which then comes back to my point I made about bad programming habits and things. So I really fail to see your argument here.

Learning concepts in the context of any language makes it easier; it also makes it easier spotting similarities in syntax, allowing you to pick up a new language quicker. 

 

I'm not saying "Learn C, then only program in C for the rest of your life". I'm saying "Learn enough C to grasp the basics, then move onto another language with similar syntax, aka C++". C and C++ share enough syntax to make learning C++ a breeze after blazing through the concepts of C. 

Interested in Linux, SteamOS and Open-source applications? Go here

Gaming Rig - CPU: i5 3570k @ Stock | GPU: EVGA Geforce 560Ti 448 Core Classified Ultra | RAM: Mushkin Enhanced Blackline 8GB DDR3 1600 | SSD: Crucial M4 128GB | HDD: 3TB Seagate Barracuda, 1TB WD Caviar Black, 1TB Seagate Barracuda | Case: Antec Lanboy Air | KB: Corsair Vengeance K70 Cherry MX Blue | Mouse: Corsair Vengeance M95 | Headset: Steelseries Siberia V2

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

It depends what you're programming, if it's video games I recommend C++ or C#.

I learned C# here:

 

http://unity3d.com/learn/tutorials/modules/beginner/scripting

 

You can also scroll down below the tutorials and it shows you a Java version.

 

Edit: I'm 15 too, I found that C# was easier than Javascript for some reason...

C# was also the first language I learned.

Link to comment
Share on other sites

Link to post
Share on other sites

In my opinion, the best learning is EXPERIENCE.  But you have to get started somewhere right?

 

If your not going to take classes in programming (I never did), then yeah... totally teach yourself.  I began my career in 1990, before internet.  I began by studying books, reference books... basically just diving in head first and learning from my circa 80's PC, whatever programming software I could get my hands, and books.  

 

Eventually I was wanting to begin looking for work in programming (instead of working as bus-boy or making pizzas).  After alot of driving around to interviews and passing around my resume (which was pretty much empty), and tons of phone calls (phone calls I initiated, not received), I finally got a  job as a junior programmer in a small company.  I stayed with that company for 5 years and became a senior programmer and team lead.   Most everything I learned in the years since then is from self teaching and on-job experience.  

 

Now I'm certified in Oracle and have a small business and doing pretty well.  I'm still teaching myself as I did years ago.  I LOVE learning new things and studying, but I HATED school. lol.  So for me, self teaching was the way to go.

 

*Funny thing was that all my early studying was unrelated to what I ended up doing at my first job.  I was studying C and C#, but my 1st job in programming was with an Informix database on IBM AIX (and I'd never used unix before then).  But that was good because it got me interested in what I'm doing today.

Link to comment
Share on other sites

Link to post
Share on other sites

No, I taught my self. When I got into college I knew a lot of what they were teaching. I started with VB (VB6... am I showing my age again...)and worked up to C++ C# etc etc. Anyhow it will helping you learn from the right sources. 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×