Jump to content

Want To Learn Programming

ArnieCarnie

Did I say they were? One would of easily inferred that I was indicating I made an attentive mistake from me stating I was tired, but you are a special one aren't you.

I don't take kindly to people misrepresenting the facts.

"You have got to be the biggest asshole on this forum..."

-GingerbreadPK

sudo rm -rf /

Link to comment
Share on other sites

Link to post
Share on other sites

I don't take kindly to people misrepresenting the facts.

That's great for you, take your mental anguish elsewhere.

Link to comment
Share on other sites

Link to post
Share on other sites

Well, this thread devolved into personal attacks rather fast. *adds one user to ignore* That's better. True, programmers are more expensive than the code they produce. But, if you want to be a 'slow' programmer who doesn't understand *why* their code works they way it does, by all means, learn an abstract language like LISP or haskell. If you want to be a good programmer, because you understand what the CPU and other resources are doing while your code runs, then learn C. From whatever base you choose, you can learn other languages to increase your programming speed from there. The concepts you learn in C you can use in Bash or Python. The concepts you learn in Python you will struggle to implement in C.

 

The choice is yours OP. I just want you to understand *why* I am suggesting you start the game on Hard instead of Easy. You end up being a better player, in the end.

Link to comment
Share on other sites

Link to post
Share on other sites

Well, this thread devolved into personal attacks rather fast. *adds one user to ignore* That's better. True, programmers are more expensive than the code they produce. But, if you want to be a 'slow' programmer who doesn't understand *why* their code works they way it does, by all means, learn an abstract language like LISP or haskell. If you want to be a good programmer, because you understand what the CPU and other resources are doing while your code runs, then learn C. From whatever base you choose, you can learn other languages to increase your programming speed from there. The concepts you learn in C you can use in Bash or Python. The concepts you learn in Python you will struggle to implement in C.

 

The choice is yours OP. I just want you to understand *why* I am suggesting you start the game on Hard instead of Easy. You end up being a better player, in the end.

Most people haven't been programming for very long if they think that LISP and Haskell will make you understand your code less.

 

LISP is frequently suggested because learning it makes you a better coder in all languages, same with Haskell. Imperative languages ask you what the answer looks like, functional languages ask you to describe the problem. In describing the problem you get better at figuring out what the answer looks like, hence making you better in imperative languages.

 

The world is moving on from C. Hardware prices are declining ad infinitum, there will come a time when C's performance is no longer needed, and that time is sooner than you think. 

 

We get to a point here in programming where we have a conflict of philosophies. Some say it's about learning how to figure out what makes your code faster, what every part is doing on a hardware level, really getting to know your hardware. Others say it's about learning to think and solve problems in different ways using an incredibly powerful vehicle of communication.

 

I try and strike a balance between the two. I'm not going to say "don't learn C," I can't tell you what to do. What I can say is that learning the broadest possible scope of languages is a very good thing, it all is reciprocal and everything reinforces each other. I'd even say learn Perl and PHP if you get the chance, because people still use them and those people will need help porting their code to other languages. Python is a good place to start because it allows you to think as a programmer without having to understand concepts like memory management that are rapidly becoming obsolete.

"You have got to be the biggest asshole on this forum..."

-GingerbreadPK

sudo rm -rf /

Link to comment
Share on other sites

Link to post
Share on other sites

C++, thats a MUST !! then go C# and Java and there is nothing more you need really

Link to comment
Share on other sites

Link to post
Share on other sites

The main rig A8-5600K | 12GB RAM | AsRock FM2A88XM Extreme 4+ | HD 7950 with custom cooler | 2x 120GB Crucial M4's in RAID 0 | more storage | Corsair CX600M | Fractal Design Define R4| QPAD MK-85 | Logitech G502 | 2.1 speakers | 2x 1080p monitors (1x IPS and 1x TN :'( )

The Laptop Asus X550LB i5-4200u | GT-740m | 256GB Crucial MX 100 | the crustiest 1366x768 panel ever :'(

Link to comment
Share on other sites

Link to post
Share on other sites

Alright, I've answered this question here in the past, but here it goes.

Ultimately, it doesn't matter what language you start with, what REALLY matters is how you write your code. The only scenario where the language you start with matters is if you're not looking to truly learn to write code, but want to learn a few tricks to do some half-ass specific thing (which really isn't a good idea most of the times).

 

That said, there are languages that are conceptually better than others (JavaScript is an example of bad language design). I would tell you to choose between one of the following:

 

- Python: Regardless of what anyone says, Python is one of the most elegant languages there are. It forces you to do something critical to writing good code: good indentation. Anyone that knows good indentation has no trouble whatsoever with Python's syntax. Python is also a scripting language, which can be a good thing for beginners if you don't want to meddle with low-level stuff, or even if you just want to learn how to think code and don't want to make sure types are compatible (it has variable type conversion). 

It is easier, and faster, to write working code with Python.

It has weak Object-Oriented Programming support though, which is a widely used programming paradigm.

 

- C or C++: This is "sort of old school" coding. To write good C/C++ code, you need to understand how a computer works (CPU, Memory). These languages are great for efficient fast code. You'll learn more with this than you will with Python, because aside from writing algorithm implementations, you'll have to manage memory, and work at an overall low-level. By the way, don't get confused: low-level code does not mean inferior knowledge. :P It just means that you're working closer to the hardware.

 

- Java: Java is the embodiment of Object-Oriented Programming. If you do it right, you'll learn how to write good Object-Oriented code, which is a crucial (and very structured way) to writing good code. Most Universities work with Java throughout many courses.

 

But like I said, in the end, it doesn't really matter, you can easily transfer your skills from one language to the other if they use similar paradigms.

 

I started writing code solving problems, when I was 7 years old (or 8, I'm not entirely sure). That's how I recommend everyone to start. Once you've grabbed the basics of programming, check out ProjectEuler, USACO, or even TopCoder if you're interested.

A good book on good software development principles is Code Complete, Steve McConnell.

Want to solve problems? Check this out.

Link to comment
Share on other sites

Link to post
Share on other sites

It has weak Object-Oriented Programming support though, which is a widely used programming paradigm.

? What's wrong with Python OOP?

1474412270.2748842

Link to comment
Share on other sites

Link to post
Share on other sites

? What's wrong with Python OOP?

 

It's a matter of design patterns. The fact that Python is not strictly typed makes hierarchy definition less strict, and thus less desirable for OOP. 

Want to solve problems? Check this out.

Link to comment
Share on other sites

Link to post
Share on other sites

For your question I'll use an answer I already posted for another thread, but it seems highly applicable to this; and, in the true style of a programmer, I would want to avoid redundancies like typing a whole new paragraph.

 

"If your an aspiring programmer I suggest you take CS50 ( https://www.edx.org/...22#.U6D1F_ldVv0 ) it's an intro to computer science. I've taken it and it's really fun. You'll first learn C in there but it doesn't just show you programming languages. You'll learn the ins and outs of computing and how memory works as well like hash tables, stack/heap, ect... all of which empower you as a programmer and ultimately a problem solver. (anyone can learn a language, but few can write a New York Times Best Seller.) Once you finish the course, if you do indeed take it, you should move on to C++. With C securely under your belt learning C++ will be cinch. I highly suggest this http://www.learncpp.com/ these tutorials are so easy to wrap your head around and absorb that you'll be done before you know it. A programmer is a problem solver who can brake down a complicated task into simple, smaller solutions to make something beautiful, and his/her tools are the simple yet extremely powerful commands given to them by other programmers before them in the form of the languages we use today"

 

I would also like to add that once you do, if you decide to, what I aforementioned you could move onto java which is a popular language; but that is entirely up to you. Once you finish the CS50 course and learn C++, you'll be fairly capable programmer (not nearly at the level as someone with a bachelors degree in it or someone with years of experience, but nonetheless you will have a firm foot in the ground). You'll have to continue to grow as a problem solver and become better through the years and projects you do. 

No... I'm not ready for my thread to die, not yet.... nooooo......

Link to comment
Share on other sites

Link to post
Share on other sites

I would like to quote a post that I put on a different thread, but it seems to be very applicable for this topic; and, in the style of a programmer, in order to avoid redundancies like writing an entirely new paragraph that will compose of the same points.

 

"If your an aspiring programmer I suggest you take CS50 ( https://www.edx.org/...22#.U6D1F_ldVv0 ) it's an intro to computer science. I've taken it and it's really fun. You'll first learn C in there but it doesn't just show you programming languages. You'll learn the ins and outs of computing and how memory works as well like hash tables, stack/heap, ect... all of which empower you as a programmer and ultimately a problem solver. (anyone can learn a language, but few can write a New York Times Best Seller.) Once you finish the course, if you do indeed take it, you should move on to C++. With C securely under your belt learning C++ will be cinch. I highly suggest this http://www.learncpp.com/ these tutorials are so easy to wrap your head around and absorb that you'll be done before you know it. A programmer is a problem solver who can brake down a complicated task into simple, smaller solutions to make something beautiful, and his/her tools are the simple yet extremely powerful commands given to them by other programmers before them in the form of the languages we use today"

 

I would also like to add that once you do, if you decide to, what I aforementioned you could move onto java which is a popular language; but that is entirely up to you. Once you finish the CS50 course and learn C++, you'll be fairly capable programmer (not nearly at the level as someone with a bachelors degree in it or someone with years of experience, but nonetheless you will have a firm foot in the ground  ) 

No... I'm not ready for my thread to die, not yet.... nooooo......

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

×