Upvote Upvoted 13 Downvote Downvoted
I want to learn programming
posted in Off Topic
1
#1
0 Frags +

Any good sites and/or programming languages i should start with?

Any good sites and/or programming languages i should start with?
2
#2
15 Frags +

codeacademy.com is pretty decent

Once you do it you can basically make anything you want with just a little googling and reading

Language doesn't really matter much, but you probably want to pick something fairly high level and object oriented (eg C++, C#, Java, Python). Most of the concepts you learn will apply to most languages.

Also check out https://www.reddit.com/r/learnprogramming/wiki/faq

codeacademy.com is pretty decent

Once you do it you can basically make anything you want with just a little googling and reading

Language doesn't really matter much, but you probably want to pick something fairly high level and object oriented (eg C++, C#, Java, Python). Most of the concepts you learn will apply to most languages.

Also check out https://www.reddit.com/r/learnprogramming/wiki/faq
3
#3
0 Frags +

That reddit programming faq is OP. Thanks for showing that one. Even an experienced programmer would like those tips for brushing up on languages. Thanks deetr.

That reddit programming faq is OP. Thanks for showing that one. Even an experienced programmer would like those tips for brushing up on languages. Thanks deetr.
4
#4
3 Frags +

http://www.cs.rpi.edu/~goldsd/spring2015-csci1100.php

everything is there for you but the teacher, complete what you can

its pretty much all python

http://www.cs.rpi.edu/~goldsd/spring2015-csci1100.php

everything is there for you but the teacher, complete what you can

its pretty much all python
5
#5
3 Frags +

I would try to start with C++. Yes language isn't important but doing C++ makes learning other languages a lot easier and you learn important concepts that really are not touched on in Java/Python.

I would try to start with C++. Yes language isn't important but doing C++ makes learning other languages a lot easier and you learn important concepts that really are not touched on in Java/Python.
6
#6
0 Frags +

everything deetr said.

you might want to consider javascript as your first language though. the community of js developers is massive, its relatively easy to learn, and it has a more immediate payoff. for people looking to pick up coding as a hobby, you can't beat it. if you're only going to learn one language, javascript is the best.

however, if you're considering programming as something that could become more than a hobby, python might be the wiser choice. its much easier to learn additional languages with the foundation that python provides vs javascript.

everything deetr said.

you might want to consider javascript as your first language though. the community of js developers is massive, its relatively easy to learn, and it has a more immediate payoff. for people looking to pick up coding as a hobby, you can't beat it. if you're only going to learn one language, javascript is the best.

however, if you're considering programming as something that could become more than a hobby, python might be the wiser choice. its much easier to learn additional languages with the foundation that python provides vs javascript.
7
#7
5 Frags +

Don't choose to learn a language. Find a specific project for which you need to program and learn the best language for it. While it's true that there are better first languages to learn than others (C(++) for theory, Python for ease, js for dev base), you won't really learn a language until you have to accomplish something with it.

Don't choose to learn a language. Find a specific project for which you need to program and learn the best language for it. While it's true that there are better first languages to learn than others (C(++) for theory, Python for ease, js for dev base), you won't really learn a language until you have to accomplish something with it.
8
#8
1 Frags +
BobbyTablesI would try to start with C++. Yes language isn't important but doing C++ makes learning other languages a lot easier and you learn important concepts that really are not touched on in Java/Python.

I dont know. Learning C first also helps a lot, since C++ is somewhat different than many programming languages with the OOP already. Also you need to learn about Header Guards etc, might be a bit frustrating? But learning C is hard and can easily be punishing, so starting with a script language for basic principles might be less frustrating and lead faster to results, I am aware that he wouldn't learn memory management and pointer arithmethic with that, but TBH, thats rarely required nowadays.

However, as Waldo said, think about a project you would like to do. Then pick a language. Python is great for beginners, I agree. I wouldn't recommend JS because the language is somewhat dirty and weird too. PHP leads to fast results, it CAN be a good choice if you want to focus on webprojects, but be careful about horrible resources out there. The web can be scary. Thats a general advice, there are a lot of resources in the web but some lack quality, some links posted above should really help you out.

[quote=BobbyTables]I would try to start with C++. Yes language isn't important but doing C++ makes learning other languages a lot easier and you learn important concepts that really are not touched on in Java/Python.[/quote]

I dont know. Learning C first also helps a lot, since C++ is somewhat different than many programming languages with the OOP already. Also you need to learn about Header Guards etc, might be a bit frustrating? But learning C is hard and can easily be punishing, so starting with a script language for basic principles might be less frustrating and lead faster to results, I am aware that he wouldn't learn memory management and pointer arithmethic with that, but TBH, thats rarely required nowadays.

However, as Waldo said, think about a project you would like to do. Then pick a language. Python is great for beginners, I agree. I wouldn't recommend JS because the language is somewhat dirty and weird too. PHP leads to fast results, it CAN be a good choice if you want to focus on webprojects, but be careful about horrible resources out there. The web can be scary. Thats a general advice, there are a lot of resources in the web but some lack quality, some links posted above should really help you out.
9
#9
1 Frags +
iamRootif you're only going to learn one language, javascript is the best.

This is extremely objectivesubjective. I'd personally disagree and say Python is the best, and I'm sure you could find people who would argue for almost any language.

[quote=iamRoot]if you're only going to learn one language, javascript is the best.[/quote]

This is extremely [s]objective[/s]subjective. I'd personally disagree and say Python is the best, and I'm sure you could find people who would argue for almost any language.
10
#10
1 Frags +
deetriamRootif you're only going to learn one language, javascript is the best.
This is extremely objective. I'd personally disagree and say Python is the best, and I'm sure you could find people who would argue for almost any language.

You mean subjective? Otherwise it might be worth arguing tbh.

[quote=deetr][quote=iamRoot]if you're only going to learn one language, javascript is the best.[/quote]

This is extremely objective. I'd personally disagree and say Python is the best, and I'm sure you could find people who would argue for almost any language.[/quote]
You mean subjective? Otherwise it might be worth arguing tbh.
11
#11
1 Frags +

I should note, if you want the best theoretical basis for programming (i.e. if you want to really know what you're doing), I would suggest getting an eval board for a small MCU and learning on that. Having direct access to hardware makes a world of difference when it comes to understanding how everything works at a low level (which can be pretty useful for optimization at a higher level). However, if your interest is mostly in making high-level applications, there's no need.

I should note, if you want the best theoretical basis for programming (i.e. if you want to really know what you're doing), I would suggest getting an [url=http://www.digikey.com/product-detail/en/MSP-EXP430G2/296-27570-ND/2331789]eval board[/url] for a small MCU and learning on that. Having direct access to hardware makes a world of difference when it comes to understanding how everything works at a low level (which can be pretty useful for optimization at a higher level). However, if your interest is mostly in making high-level applications, there's no need.
12
#12
0 Frags +
WaldoI should note, if you want the best theoretical basis for programming (i.e. if you want to really know what you're doing), I would suggest getting an eval board for a small MCU and learning on that. Having direct access to hardware makes a world of difference when it comes to understanding how everything works at a low level (which can be pretty useful for optimization at a higher level). However, if your interest is mostly in making high-level applications, there's no need.

Probably worth at least learning the basics of loops and such before spending money on that

[quote=Waldo]I should note, if you want the best theoretical basis for programming (i.e. if you want to really know what you're doing), I would suggest getting an [url=http://www.digikey.com/product-detail/en/MSP-EXP430G2/296-27570-ND/2331789]eval board[/url] for a small MCU and learning on that. Having direct access to hardware makes a world of difference when it comes to understanding how everything works at a low level (which can be pretty useful for optimization at a higher level). However, if your interest is mostly in making high-level applications, there's no need.[/quote]

Probably worth at least learning the basics of loops and such before spending money on that
13
#13
1 Frags +
PapaSmurf323I would focus on a side-project you want to do. Lets say you want to create a website. Then go learn the languages/material that you will need to complete that side-project. Don't go picking a language before you know what you want to do, that's backwards.

This is what I was told when I made a similar thread months back, and it's helped me out a lot in understanding what I want to do (PapaSmurf also said that it's best to go to school for this kinda stuff and learning all of this alone with google as my closest friend has honestly made me believe it). I was also told that Python would be a good place to start as it's a relatively clean and straightforward language, although I had already started it on my own with "Learn Python the Hard Way".

[quote=PapaSmurf323]I would focus on a side-project you want to do. Lets say you want to create a website. Then go learn the languages/material that you will need to complete that side-project. Don't go picking a language before you know what you want to do, that's backwards.[/quote]
This is what I was told when I made a similar thread months back, and it's helped me out a lot in understanding what I want to do (PapaSmurf also said that it's best to go to school for this kinda stuff and learning all of this alone with google as my closest friend has honestly made me believe it). I was also told that Python would be a good place to start as it's a relatively clean and straightforward language, although I had already started it on my own with "[url=http://lmgtfy.com/?q=Learn+Python+the+Hard+Way]Learn Python the Hard Way"[/url].
14
#14
3 Frags +

of course I was right

of course I was right
15
#15
1 Frags +

School? Studying Applied Comp. Science, cannot confirm its good for learning programming. But what you mean exactly by going to school? Maybe university / school is different tho in the US.

I think its something you can learn in a lot of ways. Some might start just writing programs and trying harder to get something running, others start from scratch with computer architecture, others start with a book or videos. One has to try what way he prefers, since that really depends on you as person.

The problem with school is that you are somewhat forced to learn, stuff gets different. While free time programming can be really relaxing, forced to program is imho not. Also you are not free to choose which projects to do often, which also can lead to being annoyed about programming.

School? Studying Applied Comp. Science, cannot confirm its good for learning programming. But what you mean exactly by going to school? Maybe university / school is different tho in the US.

I think its something you can learn in a lot of ways. Some might start just writing programs and trying harder to get something running, others start from scratch with computer architecture, others start with a book or videos. One has to try what way he prefers, since that really depends on you as person.

The problem with school is that you are somewhat forced to learn, stuff gets different. While free time programming can be really relaxing, forced to program is imho not. Also you are not free to choose which projects to do often, which also can lead to being annoyed about programming.
16
#16
4 Frags +

http://www.teamfortress.tv/post/403951/programming

PapaSmurf323but I don't want to lose sight of what I really want to do
If you want a career in CS/CE/EE you should go to school for it.

If you want to learn coding on the side because you enjoy computers and the problem solving that comes with programming there are plenty of resources online to help you.

I would focus on a side-project you want to do. Lets say you want to create a website. Then go learn the languages/material that you will need to complete that side-project. Don't go picking a language before you know what you want to do, that's backwards.
http://www.teamfortress.tv/post/403951/programming
[quote=PapaSmurf323][quote]but I don't want to lose sight of what I really want to do[/quote]

If you want a [b]career[/b] in CS/CE/EE you should go to school for it.

If you want to learn coding on the side because you enjoy computers and the problem solving that comes with programming there are plenty of resources online to help you.

I would focus on a side-project you want to do. Lets say you want to create a website. Then go learn the languages/material that you will need to complete that side-project. Don't go picking a language before you know what you want to do, that's backwards.[/quote]
17
#17
0 Frags +

Now I happily agree with you. :) That is really the best recommendation.

Now I happily agree with you. :) That is really the best recommendation.
18
#18
3 Frags +

+1 for just doing a project. Unless you have absurd will power and auto didactic abilities, you will motivate yourself to learn far, far more by simply trying to go do something.

I learned the basics of programming by solving the first 10 Project Euler problems in Java.
If that's a bit dry, consider programming a simple single player game in Processing.
You're goal with a project like this is to learn to think with loops, variables, and possibly recursion. This will give you a very basic (if patchy, simply because of its informal nature) understanding of programming.

Feel free to add me on Steam if you have any questions about getting started.

[b]+1 for just doing a project[/b]. Unless you have absurd will power and auto didactic abilities, you will motivate yourself to learn far, far more by simply trying to go do something.

I learned the basics of programming by solving the first 10 [url=https://projecteuler.net/]Project Euler[/url] problems in Java.
If that's a bit dry, consider programming a simple single player game in [url=https://processing.org/]Processing[/url].
You're goal with a project like this is to learn to think with [b]loops[/b], [b]variables[/b], and possibly [b]recursion[/b]. This will give you a very basic (if patchy, simply because of its informal nature) understanding of programming.

Feel free to add me on Steam if you have any questions about getting started.
19
#19
4 Frags +

skool is kool
have to work a lot, but you miss out on a lot without a good education
algorithms, time & space complexity, multithreading, memory management, compilers
there are a lot of things that an amateur programmer will have no idea how to tackle without proper reading material & pacing. it's also fairly common for beginners to stumble in the transition from procedural to OOP simply because they're not reading good material or looking up the right things

you can't really become a good programmer without becoming an efficient programmer first

i recommend starting out with C++. i wholly recommend the books i used my freshman year, in the following order:
Starting Out with C++ From Control Structures to Objects (8th Edition) - Tony Gaddis
Absolute C++ - Walter Savitch
Data Structures and Other Objects using C++ 4th Edition (read simultaneously with Absolute C++)

you should also get acquainted with some architecture & logical math, in the following order:
Digital Design By Morris Mano 5th Edition (read simultaneously with Starting out with C++, and i recommend using OrCAD to play with the logic gates)
KIP R. IRVINE - Assembly Language for x86 Processors (read simultaneously with Absolute C++)

you have to go out of your way to try implementing the examples & practice problems they assign to compensate for the lack of formal homework

you should become familiar with using a text editor to write up your language first before hopping into IDE's if you want to replicate the old school method of programming (which i highly highly highly recommend before you get into the latter part of data structures & C++). my school's policy is that freshmen are prohibited from coding in IDE's until the very end of their first semester, and i think it's really for the better. at the latest, switch over once you get to the assembly book.

compile using g++, input/output via files & console (command prompt) until you get to GUI's and interfaces, answer questions the book provides you, take detailed notes like as if you were studying in a class, and most importantly, work your butt off young man!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

if you haven't been in school for a while, here is how i recommend you structure your notes (this example is from Starting Out with C++): https://drive.google.com/file/d/0B911a_7xx2ysT2R1eEJqbjJaeW8/view?usp=sharing

don't worry about the material above; i purposefully gave you a later chapter so you can look at it from an abstraction rather than merely as a template. bold your keywords & key phrases, bold & underline any clarifications, and tabulate to represent a relationship. format code as accurately as possible to the standards given in the book.

read 1 or 2 chapters a week, try doing 1 or 2 programming assignments from the book each week, stay away from using libraries as much as possible when starting out & try to confine your available methods & code to the materials given in each chapter.

need to read in formatted data & parse it? do it with a char* instead of a String. you'll learn a lot about pointers & memory management that way.

have bounds/limits on your data, or no? understand what data structures are appropriate for your algorithm, and weigh their advantages/disadvantages accordingly (do you need to insert/remove a lot, do you need to sort/search a lot, do you want data to have priority over others, do you need to grow or compress your data structure, etc.)

when you get to data structures, take great care in abstracting your methods. with that said, templates are your friend, but understand when, why, and how to use them.

don't cop out in assembly and use the high-level methods to get around coding more. use the lowest level methods that the book laboriously details. recognize when something is introduced as an efficient high-level workaround, and restrain from using it until you truly get it. don't be arrogant; you can always improve your algorithm. think about the lowest level way of implementing it.

if you have no idea what most of the advice i just gave means, that's great. i didn't either when i first started! i was literally completely and utterly new to programming my freshman year; up to that point, i was just a "power user" that played games. programming has been an utterly humbling, yet utterly rewarding avenue for me.

there is no "get smart quick" method to programming. it is academic, it is laborious, but it is so much fun.

pretend that you've literally never seen any code before and you'll get the most out of your education.

now get to reading already!

p.s. after you get through all this, it's all about problem solving. you will effectively be "syntax fluent" in assembly & C++, and you shouldn't have any issue transferring to higher level languages if necessary. you'll still be missing out on a lot of architecture & formal mathematics to really go super low-level (OS, compilers, etc.), but you'll be able to work on problems more efficiently & effectively. talk to me when you're done and i can guide you further.

skool is kool
have to work a lot, but you miss out on a lot without a good education
algorithms, time & space complexity, multithreading, memory management, compilers
there are a lot of things that an amateur programmer will have no idea how to tackle without proper reading material & pacing. it's also fairly common for beginners to stumble in the transition from procedural to OOP simply because they're not reading good material or looking up the right things

you can't really become a good programmer without becoming an efficient programmer first

i recommend starting out with C++. i wholly recommend the books i used my freshman year, in the following order:
Starting Out with C++ From Control Structures to Objects (8th Edition) - Tony Gaddis
Absolute C++ - Walter Savitch
Data Structures and Other Objects using C++ 4th Edition (read simultaneously with Absolute C++)

you should also get acquainted with some architecture & logical math, in the following order:
Digital Design By Morris Mano 5th Edition (read simultaneously with Starting out with C++, and i recommend using OrCAD to play with the logic gates)
KIP R. IRVINE - Assembly Language for x86 Processors (read simultaneously with Absolute C++)

you have to go out of your way to try implementing the examples & practice problems they assign to compensate for the lack of formal homework

you should become familiar with using a text editor to write up your language first before hopping into IDE's if you want to replicate the old school method of programming (which i highly highly highly recommend before you get into the latter part of data structures & C++). my school's policy is that freshmen are prohibited from coding in IDE's until the very end of their first semester, and i think it's really for the better. at the latest, switch over once you get to the assembly book.

compile using g++, input/output via files & console (command prompt) until you get to GUI's and interfaces, answer questions the book provides you, take detailed notes like as if you were studying in a class, and most importantly, work your butt off young man!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

if you haven't been in school for a while, here is how i recommend you structure your notes (this example is from Starting Out with C++): https://drive.google.com/file/d/0B911a_7xx2ysT2R1eEJqbjJaeW8/view?usp=sharing

don't worry about the material above; i purposefully gave you a later chapter so you can look at it from an abstraction rather than merely as a template. bold your keywords & key phrases, bold & underline any clarifications, and tabulate to represent a relationship. format code as accurately as possible to the standards given in the book.

read 1 or 2 chapters a week, try doing 1 or 2 programming assignments from the book each week, stay away from using libraries as much as possible when starting out & try to confine your available methods & code to the materials given in each chapter.

need to read in formatted data & parse it? do it with a char* instead of a String. you'll learn a lot about pointers & memory management that way.

have bounds/limits on your data, or no? understand what data structures are appropriate for your algorithm, and weigh their advantages/disadvantages accordingly (do you need to insert/remove a lot, do you need to sort/search a lot, do you want data to have priority over others, do you need to grow or compress your data structure, etc.)

when you get to data structures, take great care in abstracting your methods. with that said, templates are your friend, but understand when, why, and how to use them.

don't cop out in assembly and use the high-level methods to get around coding more. use the lowest level methods that the book laboriously details. recognize when something is introduced as an efficient high-level workaround, and restrain from using it until you truly get it. don't be arrogant; you can always improve your algorithm. think about the lowest level way of implementing it.

if you have no idea what most of the advice i just gave means, that's great. i didn't either when i first started! i was literally completely and utterly new to programming my freshman year; up to that point, i was just a "power user" that played games. programming has been an utterly humbling, yet utterly rewarding avenue for me.

there is no "get smart quick" method to programming. it is academic, it is laborious, but it is so much fun.

pretend that you've literally never seen any code before and you'll get the most out of your education.

now get to reading already!

p.s. after you get through all this, it's all about problem solving. you will effectively be "syntax fluent" in assembly & C++, and you shouldn't have any issue transferring to higher level languages if necessary. you'll still be missing out on a lot of architecture & formal mathematics to really go super low-level (OS, compilers, etc.), but you'll be able to work on problems more efficiently & effectively. talk to me when you're done and i can guide you further.
20
#20
0 Frags +

I would hire joshuawn in a heart beat, wouldn't you ? I have no idea what the fuck I just read but it sounded awesome. I keep picturing Egon from Ghostbusters. Good work I hope your hard work & determination serves you well in life.

I would hire joshuawn in a heart beat, wouldn't you ? I have no idea what the fuck I just read but it sounded awesome. I keep picturing Egon from Ghostbusters. Good work I hope your hard work & determination serves you well in life.
21
#21
5 Frags +

dolphin rider is as mathematically close to a perfect human being as possible

dolphin rider is as mathematically close to a perfect human being as possible
22
#22
1 Frags +

dolphin rider is a legend he speaks words of wisdom

dolphin rider is a legend he speaks words of wisdom
23
#23
1 Frags +

dolphin rider's picture is very unsettling

dolphin rider's picture is very unsettling
Please sign in through STEAM to post a comment.