OK, I've got some - very limited - knowledge about programming. I've learnt the basics of algorithms in the school. It was hard to get used, but somehow I've got to learn more or less how programming logic works using Processing language (my main source was Daniel Shiffman's book Learning Processing).

Well, Processing did a good job showing me the basics, but, as you programmers may know, it's a poor language and no one really uses it to make their stuff most of times. So I don't feel like reading the rest of Shiffmans' book, since I already got the hang of the basic programming elements like variables, functions, conditionals, loops, arrays and even a bit of objects (though I haven't made a profound study of it yet, but the idea does not look complicated).

I know there is still a lot of stuff to learn about (especially objects, which are so important), but the limitations of Processing and my lack of time make me feel like I'm wasting my time if I insist on using that language. I'll still need Processing to do some university work, but I reckon that if I really learn how to program, doing anything on Processing won't be a problem.

Some people told me the best way would be learning C language. It'll be tough, but it would help me to learn everything that's related to a program running on a computer.

What do you think about? What is the best book to learn C/programming? Which language would help me more if you think C is not the proper one? Which elements of programming should I focus on next? How can I find exercises good enough to practise?

My objective is being able to work with programming and do whatever I need to with the help of the programs I'll make - at this point somebody will probably tell me to go through some low-level languages. I'm not close minded to them, but I'm still a beginner and that is not my purpose yet.

Please, help me. Since I got attention deficit disorder, I'd prefer reading stuff over watching stuff. That's why I can't simply take classes to learn it, 'cause I am unable to pay attention. But if you think it's really indispensable or that would really turn things a lot better, you can also recommend video stuff.

I'm most used to learn stuff by myself, that's how I've been surviving with learning pretty much everything since highschool. I know that learning programming will demand a damn lot of practice. I'm not afraid of it. I just need to know what to read, how to practise and what I shouldn't waste my time on. And I'm pretty sure that Processing is one of the things I shouldn't be wasting my short time if I really want to make big progress with the lack of the time I have.

P.S.: By the way, beside helping me, I hope this thread will help other people which want to learn how to program or how to make progress with it. Let's share some knowledge here, since, perhaps, it may become a very useful thread.

Edit:
I'll answer some questions, since crazoter said:

It's hard to answer your question without knowing the specifics.
[...]Hopefully these questions can help others make their answer more specific and tailored to your needs.

  1. Why do you want to learn programming?
    • Because I want to make things possible without help. I don't want to be the person who always waits for a programmer to join my party in order to make projects. OK, I know big projects demand many programmers. But I've seen people doing pretty good stuff all alone, like programs, bots, websites, webradios, auto-organizing data. By the way, I believe that's an extremely useful ability, maybe the most important ability for the future. Even if I'm working with multimedia and designing, programming is the foundation for the application of all that. So I want to do my own stuff to improve and create all the sorts of things you mentioned (apps, computer programs, websites, even games). I want my weakness to become my strength.
  2. How much time (e.g. a day or a week) are you willing to dedicate to studying programming?
    • I would practise programming all the day if I could, but I can't. I don't have how to foresee how much time I'll have everyday, but someone told me that if I wanted to learn how to program, I should program every day. I'm willing to practise every day, even if time is as short as 1 hour a day. I know it will be difficult, but I'm starting to get used to the idea that little progress everyday is way better than no progress at all. Anxiety is a dangerous trap that makes you give up easily if you are not aware of your progress. Stopping is the worst thing that could happen to anyone.
  3. How quickly do you want to be able to apply your new found programming knowledge?
    • I think it's always temptating to everyone to answer this question telling they want to do magic ASAP, especially because I'm looking for a job right now, and that would make me able to get it more easily. Though it just doesn't work like that (I suppose, at least). Real solid programming learning will take me more than some weeks or a few months. However, I hope I'll be able to make my own useful programs within one year, so I'll be prepared to make even more profound studies on programming from there. I don't know if it's a realistic goal, but if it takes some more time, it will be fine too, since I think a solid learning is built with time and practice. Of course I can't tell you I can wait all my life to start to make advanced stuff, since there are lots of other things I need to learn as well. Though it will be a constant learning for life, indeed, since we'll always have something else to learn about everything in life.
7 years ago*

Comment has been collapsed.

7 years ago
Permalink

Comment has been collapsed.

Thanks, I already know the website, but I think I underestimated it, since I didn't know if it was really useful. Maybe I should take a further look.

7 years ago
Permalink

Comment has been collapsed.

The textbook recommended in uni for C was Computer Science - A Structured Programming Approach Using C by Forouzan and Gilberg.

7 years ago
Permalink

Comment has been collapsed.

Thanks. But is it really that good?

7 years ago
Permalink

Comment has been collapsed.

EsE beat me to it 8)

I'm fairly new myself, but codecademy seems to be helpful!

7 years ago
Permalink

Comment has been collapsed.

I knew I was forgetting something and I had to find it!

You should definitely check out http://www.learn-c.org/ . It's a step by step introduction to C , with an embedded emulator to check the exercises.

They also seem to have tutorials for Python Java HTML & CSS C C++ JavaScript PHP Shell C# Perl Ruby.

7 years ago
Permalink

Comment has been collapsed.

Thank you!

7 years ago
Permalink

Comment has been collapsed.

ignore all the websites and focus on logic thinking first, without a proper logic of thinking, you'll have issues even if you learned all of it, and you need to improve your though process in improvision. Hope that helps <3

7 years ago
Permalink

Comment has been collapsed.

As I said, I think I got the hang of logic. But I know most of books teach the tools instead of logic. But since I've already gone through a long tough time to get used to the logic, which is simpler than I thought, I suppose I'm prepared for the next step

7 years ago
Permalink

Comment has been collapsed.

I hope so, most of my colleagues said so and has horrible logic. I hope you did not mix up logic with what the elements do, they're 2 totally different things

7 years ago
Permalink

Comment has been collapsed.

If i have been trying to get into coding myself aswell. Most people recommend codeacedemy but it helps if you know a project you want to work on. I also saw some videos from microsoft for Python Coding they seem pretty decent aswell.

7 years ago
Permalink

Comment has been collapsed.

I would recommend to go for Python. It is free object-oriented language, and it has a lot of support (libraries) these days, probably already more than C++. Computer Science and Machine Learning companies use it a lot.
I didn't program much in C++ but according to my experience, Python is more convenient (easy to use). If you choose Python, go straight for 3.6 (there are a lot of people who recommend to learn 2.7 and then differences with 3.6 but.. few years have passed since these advices were timely).

There is a free beginner level course (based on videos!) of Python on DataCamp (with interactive compilers)
Also there is a book Learn Python the Hard Way, which is not hard, but it is written in a bit irritating manner and for Python 2.7 (there is really not much differences, you can read some article about differences separately to grasp it). But for beginner who does not have much experience in other languages, it is useful to follow advices and to write everything you read yourself and to see how it works. When you only read quickly but not code it, you will forget. It is healthy practice to code some examples of everything you learn and save them separately, so that later you can reuse(and improve) your own code.

I program on Linux laptop, and find Linux(or IOS) more convenient for this than Windows. But if you have only possibility to learn on Windows computer, it is completely okay. You can choose either some shell or even combination of terminal + editor. Also interactive notebooks like jupyter are great (you can program and execute code in small pieces) both for learning and working (adult researchers use it to plot result visualization, for instance), but I don't know if there is something exactly the same in Windows.

Any problem with programming/shells/implementing something you get: google for similar issues on Stack Overflow or GitHub. First has topics on solving almost any problem encountered by programmers in last 10 years, latter is a bit similar but rather as a discussions of some algorithms/approaches (you don't have to search explicitly on these pages - just specify request in google and choose topics on these two sites, then inside topics there may be links to similar issues/solutions)

7 years ago*
Permalink

Comment has been collapsed.

Deleted

This comment was deleted 4 years ago.

7 years ago
Permalink

Comment has been collapsed.

Thank you. The reason why I was thinking of going for C is that someone told me that to be a good programmer, you need to have total control over CPU and GPU memory, which is less manageable at higher level languages, and C helps you to learn how to do it. I don't know if Python is higher or if it's the more or less same level as C. But since it's so used, I definitely consider learning it .

7 years ago
Permalink

Comment has been collapsed.

Deleted

This comment was deleted 4 years ago.

7 years ago
Permalink

Comment has been collapsed.

Firmware. Devices are optimized for manufacturing costs (and power consumption for battery powered). Both imply limited cpu power and memory size.
Hard real-time applications require total control over all hardware parts, not only memory.

On PC you would want control memory to keep data within cpu cache, that's huge boost to application performace. RAM is slow as snail compared to modern CPU's

7 years ago
Permalink

Comment has been collapsed.

Deleted

This comment was deleted 4 years ago.

7 years ago
Permalink

Comment has been collapsed.

You would be surprised. Just look at the development boards available, from tiny DSPs to full-fledged general purpose machines. With minimal knowledge of electronics, you can build and program robots, LED lighting of pc case, build CNC carver, and so on, and so forth.

No offence taken, OP is not the only one reading the thread, so I thought I'd mention other fields of interest. Perhaps I should have added +1 (again, as the subject comes back regularly) under previous post. I agree that C and C++ are possibly the worst languages to start coding. There is a lot of undefined/unspecified/platform defined behaviour that not many remember about ("It works on my PC, so it must be good code" )

7 years ago
Permalink

Comment has been collapsed.

If u want to make real program i recommend learning C++ or C#. Those are pretty modern languages you can do any kind of stuff with them. There are also thousands of libraries for them.
When I do learn programming its like I have an idea about a program (not too complicated, for example there is a part that you already know and you add some more that you want to learn) and browse Google/Stackoverflow until you can do this little addition that you didn't know before. This helps memorizing the purpose of the functions too. If you miss some functions this way but you really need them you can do some little demos for them to understand how those work.

The best thing about processing you can do demos/tests/experiments pretty fast with it. Honestly every programming language similar the only difference is the syntax if you know an algorithm in one language it will work the same in an other one.

7 years ago
Permalink

Comment has been collapsed.

Yeah, but unfortunately Processing is very limited when it comes to input. Thank you.

7 years ago
Permalink

Comment has been collapsed.

It's hard to answer your question without knowing the specifics.

  1. Why do you want to learn programming?
  2. How much time (e.g. a day or a week) are you willing to dedicate to studying programming?
  3. How quickly do you want to be able to apply your new found programming knowledge?
  4. Edit: For future reference, you may also want to ask yourself "How much programming do you know now", so you can know what to do next. e.g. do you know what is a variable? Do you know if-else statements and loops? What about methods/functions, classes and objects? Can you generate 10 prime numbers in sequence using any programming language? Stuff like that.

Why do you want to learn programming?
Your purpose is important for 2 reasons: One, it will motivate you to continue even when it gets boring and aggravating (and it will, because you will encounter all sorts of problems and have to debug like hell) and two, knowing why you want to program (and what you want to program) can help people suggest more focused methods / programming languages. Creating your own website is pretty of different from programming your own keyboard macro, or setting up a server for example. A good programming foundation can cover all that, but that takes time. Which brings me to my next point.

How much time (e.g. a day or a week) are you willing to dedicate to studying programming?
Not everyone can spend a few hours in front of a PC learning how to code on a daily basis. Knowing how much time you can spend will help others help you find a solution tailored to your needs; whether you should go for short brief lessons like CodeAcademy and quick hands-on, or content heavy courses from edX or MIT.

How quickly do you want to be able to apply your new found programming knowledge?
Lastly, this point is tied to point number 1. Do you want to learn the gist of programming and programming logic and build on your programming foundation, or do you have deadlines to meet and need to write magic from your hands ASAP?

Hopefully these questions can help others make their answer more specific and tailored to your needs.

As a generic answer, CodeAcademy (like the rest have mentioned) is a pretty good site for to get yourself into programming quickly; just choose one of the languages and you can start whetting your programming appetite in a few minutes. I wouldn't really recommend C or C++ for new programmers as they are more strict syntax-wise (and have a lot of other stuff like memory management and pointers etc which can be quite daunting when you're still learning the ropes) and not as easy to learn as compared to languages like Javascript / Python / C# / Java.

For people new to programming I usually recommend learning Javascript (JS) simply because of how accessible it is; all you need to do is a browser and you already have a way to test your code through the console. (Shift+Ctrl+I is the shortcut to bring it up)
Additionally, Javascript is pretty versatile; you can create software for most of your needs (e.g. websites,servers, mobile apps, desktop apps) with just the knowledge of this language.
The problem with learning using Javascript is that variable types are not really taught since you declare everything as "var" which can make it pretty bad for a programming language to use for programming foundation. If you're concerned about that, I'd recommend Python/C#. Java is also a good choice but it's not as popular as the other 2 as starter languages these days.
I must emphasize that Javascript is hardly the best option every time but with its versatility and accessibility makes it pretty appealing to new programmers.

If you encounter bugs and errors, use Google and StackOverflow; there's usually someone who encountered the same (or similar) problem before you.

Once you've gotten the hang of a language, I would recommend learning Object Oriented Programming (OOP) and subsequently Object-oriented Analysis and Design (OOAD). The Daily Programmer is also a great place; they offer plenty of challenges for you to hone your programming skills further by sharpening your programming logic and thinking, not so much by asking you questions on syntax.

Once you're done with that, I would recommend going further like looking through MIT course notes and stuff like Data Structures and Algorithms and further studies.

I hope this helps :)

7 years ago*
Permalink

Comment has been collapsed.

OK, here you go:

  1. Because I want to make things possible without help. I don't want to be the person who always waits for a programmer to join my party in order to make projects. OK, I know big projects demand many programmers. But I've seen people doing pretty good stuff all alone, like programs, bots, websites, webradios, auto-organizing data. By the way, I believe that's an extremely useful ability, maybe the most important ability for the future. Even if I'm working with multimedia and designing, programming is the foundation for the application of all that. So I want to do my own stuff to improve and create all the sorts of things you mentioned (apps, computer programs, websites, even games). I want my weakness to become my strength.
  2. I would practise programming all the day if I could, but I can't. I don't have how to foresee how much time I'll have everyday, but someone told me that if I wanted to learn how to program, I should program every day. I'm willing to practise every day, even if time is as short as 1 hour a day. I know it will be difficult, but I'm starting to get used to the idea that little progress everyday is way better than no progress at all. Anxiety is a dangerous trap that makes you give up easily if you are not aware of your progress. Stopping is the worst thing that could happen to anyone.
  3. I think it's always temptating to everyone to answer this question telling they want to do magic ASAP, especially because I'm looking for a job right now, and that would make me able to get it more easily. Though it just doesn't work like that (I suppose, at least). Real solid programming learning will take me more than some weeks or a few months. However, I hope I'll be able to make my own useful programs within one year, so I'll be prepared to make even more profound studies on programming from there. I don't know if it's a realistic goal, but if it takes some more time, it will be fine too, since I think a solid learning is built with time and practice. Of course I can't tell you I can wait all my life to start to make advanced stuff, since there are lots of other things I need to learn as well. Though it will be a constant learning for life, indeed, since we'll always have something else to learn about everything in life.

Thanks.

7 years ago*
Permalink

Comment has been collapsed.

Hmm.

I re-read your post; what I'd recommend for you now is:

  1. Stick with Processing. It may not be very usable outside of visual design programming but you'll be able to focus on programming basics; you can learn the syntax of other languages later. Its syntax is not that different from the likes of other languages like Java/Python; you should be able to port the knowledge you learn via Processing over to other languages quite easily. It's also easier since you already have the development environment for Processing setup and already have some experience using it.
    Unless, of course, you only briefly used Processing; in which case, I'd recommend swapping it for another language like Python/Java/C# like the rest have mentioned.
  2. Learn about objects. It's a basic but important concept. There's a tutorial of it in Processing: https://processing.org/tutorials/objects/
  3. Practice by solving simple abstract solutions. I would recommend focusing on programming logic more than anything else at this point. For example, use Processing to print 10 even numbers (0,2,4,6...) in sequence starting from 0. If that's too easy, maybe try 10 prime numbers, etc. If you run out of ideas, you can always check out Daily Programmer.
  4. In your line of work you've probably encountered programmers who have worked with you on projects before. You may want to ask them about what program they use, what language they use etc. so that you can also look into them; after all, their tools are the tools that really apply to you and what you want to do. You may not be able to use them now, but once you've gotten the hang of programming basics you'd be able to know where your next steps are.

Regarding your answers to my questions:

  1. Good reasons. Don't forget that by learning programming, you'll actually gain a better understanding (and appreciation) for your programmers and their work and thus be able to better work with them. Try to incorporate the element of fun/interest in your learning. For example, try to work on a programming project (suitable for your proficiency) that you are very interested in. By tapping on your interests and passions, you can make learning that much easier. For example, I picked up programming by making flash games and tampermonkey scripts for browser games because I thought it was fun to do so.

  2. Programming (or learning anything, really) on a daily basis is a good idea but there's no need to force it. Just make sure you don't put it aside for too long or you may end up forgetting everything.

  3. Learning to program will take time as you say. You can get some basic know-how in a matter of weeks but knowing how to debug and solve the syntax and logic errors that come your way will take longer and that's not including learning about the more complicated programming concepts. Depending on what you want to create and how fast you learn, you can do it in a few months to a year.

7 years ago*
Permalink

Comment has been collapsed.

Thank you.

I will follow your recommendation of sticking with Processing, since I'm currently obliged to use it on some works at university. Though I'm still disappointed with the language usability (especially because it has very limited input possibilities) and their books (the Processing creators' book sounds like a joke, doesn't really teach you a thing; Daniel Shiffman's book is better, but... I had to look somewhere else to learn arrays, since it does not teach them properly - it's really weak at it). I will make further studies about it, though.

When I'll have finished with my obligations related to Processing, I will try to learn Python, C and C++, which were recommended here.

I'm not really good at creating my own exercises, so I'll try to use the book and look for more on Daily Programmer.

Well, about how good I am... it's hard to tell. I don't know if it's a Processing problem, but I may be able to solve all the exercises about a topic from the book and... at the same time, be completely unable when it comes to a real case. I really think Processing sources of studying mislead you a lot.

7 years ago*
Permalink

Comment has been collapsed.

7 years ago
Permalink

Comment has been collapsed.

link didn't go anywhere for me - other than the standard steamgifts page not found

7 years ago
Permalink

Comment has been collapsed.

something weird, just type theodinproject.com - it is more a way for webdevelop, but python etc included

7 years ago
Permalink

Comment has been collapsed.

thanks - interesting site :)

7 years ago
Permalink

Comment has been collapsed.

Just add "www." at the beginning

7 years ago
Permalink

Comment has been collapsed.

no you don't need to with modern browsers - just copy paste theodinproject.com into the url bar - that www bit is a bit of a hangover - my comment though was reflected at the fact that the hyperlink beneath theodinproject.com is currently https://www.steamgifts.com/discussion/6XnBy/theodinproject.com and thus leads nowhere for anyone wanting to just click and go :)

7 years ago
Permalink

Comment has been collapsed.

Thank you

7 years ago
Permalink

Comment has been collapsed.

The first thread you don't troll about it it's because you want / need help. You have also made a PS with some friendly and sympathetic ideas.

7 years ago
Permalink

Comment has been collapsed.

not my first thread without trolling (by the way, there's nothing wrong with unharmful trolling ;D)

7 years ago
Permalink

Comment has been collapsed.

First still waits to come ;3

7 years ago
Permalink

Comment has been collapsed.

I can only recommend FreeCodeCamp website for learning stuff and bump the thread since I'm still a beginner myself.

Bump.

7 years ago
Permalink

Comment has been collapsed.

Try reading Introduction to Algorithm by Cormen first then you can learn any language you want. Language doesn't really matter as long as you understand the how do you want the program to work. And what kind of programming are you interested in? What kind of thing do you want to create?

7 years ago
Permalink

Comment has been collapsed.

^This is a great book. I'd be inclined to recommend it even if you're not going to be programming. I don't know if I'd read it before trying out some Hello World or other simple programs in a language of your choice, but reading it early on, I think, is great if you want the mindset.

7 years ago
Permalink

Comment has been collapsed.

Wow, this thread and all the comments are actually really helpfull. I was trying to find some books or websites where I could start learning too. I know it's another guys thread, but I feel I should and want to thank everyone for their recommendations.

7 years ago
Permalink

Comment has been collapsed.

I know, right?

It's amazing what can happen to a discussion when it starts with something more relevant than "what if zelda was a girl??"

7 years ago
Permalink

Comment has been collapsed.

Hahaha, yeah you're right.

7 years ago
Permalink

Comment has been collapsed.

There are some solid suggestions here. If you really want to have an intuition for programming, there's one book I'd like to recommend before starting. It's not too long, but I feel it should be required reading for anyone starting CS.

Code: The Hidden Language of Computer Hardware and Software by Charles Petzold.

It's a little old so some of the examples are dated. But it's one of the best books I've ever read. It teaches you how a computer does what it does and why it does it. It's a book about code, not how to code. An important distinction which I think will be greatly beneficial if you wish to pursue programming.

After that, I think there are upsides and downsides to starting with C versus starting with a language with a higher level of abstraction, like Python or Ruby. I think other posters here have covered that pretty well.

7 years ago
Permalink

Comment has been collapsed.

Thank you.

So Python is higher than C, indeed, huh?

As I answered above, the reason why I was thinking of going for C was that a programmer told me that to be a good programmer, you need to have total control over CPU and GPU memory, which is less manageable at higher level languages, and C helps you to learn how to do it, even if you will have a hard time trying to learn it.

7 years ago
Permalink

Comment has been collapsed.

They're both technically high level programming languages since, historically, anything that abstracts over assembly is high level. However, Python is certainly more high level than C. Food for thought: the Python interpreter is written in C.

Having the control over everything can certainly be beneficial, especially if you're looking to create fast applications or make use of every last kilobyte. In C/C++, you can actually use inline assembly with some compilers. This basically means you can write machine code, telling the CPU exactly what function to perform. I think that's all worth learning, it's just a question of if that's the best way to start. Honestly, I wish I learned a little bit more about computer architecture before I first tried out C a few years ago. Even if I had read the book I linked to, I think I'd be better off.

The perk of using Python is that you can focus on logic flow and algorithms, without having to deal with memory management or such a rigid design. The syntax isn't particularly complicated, and if you're just scripting, dealing with data, solving math problems, or other similar tasks, it's very easy to write effective code quickly. For me, I learned Python after Java and C/C++, so there were some oddities. I felt like it was making too many assumptions. And the fact that whitespace (spaces, tabs, link breaks) carried semantic information was a bit weird at first. But, in a way, it's kind of like modern day BASIC, where you can do some neat stuff with only a few lines of code.

Ultimately, once you start programming, you'll likely end up learning both C and Python. You'll probably also come across Java (Android, servlets), C++ (high performance software, operating systems, game engines, embedded systems), C# (Windows desktop applications, games), Javascript (front-ends, scripting), Swift (iOS), PHP (server-side software), and others. The great thing is that if you know both C and Python, the rest will be easy to pick up. Heck, I've had assignments that required us to complete them in a completely new language (such as Go) and we had like a week to do it. Most of us had no issues because it's really just a matter of seeing the syntax and picking up on best practices. The logic is basically the same.

The school I went to recently switched from Java to Python to teach introductory programming classes. I'd say it is a step in the right direction because, for most students, it's the only programming class they'll ever take, and Python doesn't bog you down with difficult syntax. Java was the introductory language for me in both high school and college - and I don't think it was the best choice. The only thing is that was easy to draw with it. So, there was noticeable glee when something colorful would be drawn on the screen. The final projects in both cases was a video game, as a result. That said, the same can be done in Python and with a bit more ease.

I really don't think there's any right answer to which of the two you should start with. If you are interested in learning how a computer works and, C/C++ is definitely the way to go. From all the projects you've listed, it also sounds like you want to do quite a few things, and therefore are motivated to learn a fair bit. C will be much harder to pick up than Python, and that can break people's spirits (especially if they're scientists/engineers and don't need to learn a whole lot). But if you're willing to persevere, I think you can handle C. The transition from C to Python isn't that difficult. The benefit of Python is that it's very easy to pick up. You can get a lot done with very little effort. It's a very motivating language with instantaneous rewards and, for most people, it will get the job done. However, it isn't the best language to learn if you want to learn how a system works, and the transition from Python to C can be quite baffling, once you realize how many foundations of programming you didn't have to deal with in Python.

7 years ago
Permalink

Comment has been collapsed.

I tried https://www.sololearn.com/ and was nice, also i downloaded 25GB of books related to computing, i feel more comfortable reading a book than using the "learn websites" (maybe because my weak will).

7 years ago
Permalink

Comment has been collapsed.

Thanks.

I'm also like that, but because of my attention deficit. I can't retain what I listen to as well as when I read it. It's annoying to have to stop videos and rewinding them to see again because of my deficit or just because I really need to stop it to code and see how it works.

I think it has something to do with the way brain works, maybe. Thinking, reasoning, imagining and, thus, creating, solving are easier when you read anything, when you don't have an image doing it for you. If you watch it, you lose a big part of that experience.

7 years ago
Permalink

Comment has been collapsed.

I'm not sure if this is the best advice because I don't fully understand your situation but my advice would be to pick a project- find a program that you want to make (my first thought is a game but anything would work) then break it down into parts and try and learn each part with heavy use of stack overflow when you get stuck.

I personally don't do as well with simply reading a textbook on it beacause I'll understand all the concepts as I read them and think-oh I know how to do that-but then when actually put into a position to code can't for the life of me remember what to do.

if a large project is out of the question then I agree with what others have said and finding abstract problems to solve is best.
for example trying to complete problems from computing contests-

View attached image.
7 years ago
Permalink

Comment has been collapsed.

Once you get skilled enough, you can use almost any programming language in 15 min. (expertise comes after)
What I mean is that you will find that languages share same concepts, and that learning about those concepts are a must/mandatory : algorithms, functional programming, oriented object programming. (Use any popular languages to learn and experiment that)
And later, learn Design Patterns, programming solutions that applies for almost programming languages, and recognizing patterns helps understanding how a language work : what is a singleton, a listener/observer, an object factory, proxy, client/server etc.

Rest of things are just syntactical.
For online learning resources, check for MOOCs, there are plenty of educative platforms.
You don't need to program everyday, but yes, commitment is required.

So from one language you learnt, like Processing, you can probably use some other languages already.
Actually... Processing is Java... in a simple and accessible programming environment, useful for artistic coding and fast prototyping.
There are many things you can already do with Java... (like... android apps...)

The main difference between other languages are available tools and libraries, development softwares, etc.

There are so many paths to explore, but to help you prioritize, what is your straight goal now ?

Yes, I read your answers above, but it is too vague.
You want to do websites ? You read websites everyday, so learning how they are made should feed your curiosity.

In addition to learning or just use a given language, you have too setup a good programming environment, find and install best tools, etc.
Finding existing libraries to avoid coding things already canonically implemented by others...

So... what is your straight goal now ?
If you really don't know and just want to improve your general computer science knowledges and skills :
I would advise learning HTML/CSS (web pages) and Python for his propaedeutic value (yay, I placed this word in a discussion!), it is quite use in real world and taught in computer science schools.
Or start to use Java directly instead of Processing.

7 years ago
Permalink

Comment has been collapsed.

Thank you.

I don't really know what I want to do, but I want to be able to do when I need it. Yeah, I know it's too vague. As I said, there are people who already do really cool stuff all alone, you can consider I want to do all the stuff I mentioned (programs, apps, bots, websites, webradios, auto-organizing data...). And, for example, if there's a job which says "We look for a programmer" with some specifications, but not many, I want to be able to say "Hey, I can be your programmer!" without fear.

About webdesigning, I'm already taking a course which will teach me (as I said, I suck at paying attention to classes, but I'll have sources to learn by myself and will have to do it in order to get good grades, so you may assume I'll eventually learn it).

7 years ago
Permalink

Comment has been collapsed.

I didn't read everything, but if this is of any help:
https://www.memrise.com/course/700092/introduction-to-programming/
You can also find other courses related to it.

7 years ago
Permalink

Comment has been collapsed.

Also, you can try http://www.pythonchallenge.com it is a fun way to learn a language :-)

7 years ago
Permalink

Comment has been collapsed.

I think https://learnxinyminutes.com/ is good to get into the basics

7 years ago
Permalink

Comment has been collapsed.

  1. Programming is 80 percent logic, 20 percent code. So focus on logic.
  2. Everything is build on basic elements. With If, For, While, base data types and functions you can create almost everything.
  3. Dont try to understand program code as whole. Try understand program flow. What you send to functions, what they return. What objects are use and how they are used and manipulated. Not for what, but how.
  4. Everything rewrite. Dont only read books. Write. Write your own code. If you dont know how exactly is something working, write small code and see what happend. It take a time, but this will be a big help in future.

And make comments!!! I dont do and forgot what I already used. Its working, but I dont know why and is pain to rewrite it.
(sorry for my english)

7 years ago
Permalink

Comment has been collapsed.

Thank you for your answer. As I said, I think I got the logic and the program flow. I know how if, for, while and functions work and stuff. Even so, I can't make any useful program! I'd like to be able to create things. I can actually create things, simple things, but not useful programs right now.

7 years ago
Permalink

Comment has been collapsed.

Are you angry about something? If not, you probably dont create anything useful. You can do only for yourself. Programming is not about creating something useful, but creating something I or someone else use. Programming is not finish, is a shortway with thorns to finish.

7 years ago
Permalink

Comment has been collapsed.

wheres the shitposting :<
wheres the fun!?

unless you are learning to program bots to shitpost for you, PS i didnt read anything above this comment that didnt seem like shitposting

View attached image.
7 years ago
Permalink

Comment has been collapsed.

Don't worry, I'll keep on shitposting in order to not disappoint my fans

7 years ago
Permalink

Comment has been collapsed.

This two-part course teaches the fundamentals of programming using Python to implement game projects. It starts with Rock Paper Scissors Lizard Spock, includes Pong, and finishes with Asteroids. It also teaches the basics of using a debugger. The course can be taken for free. I took it for the halibut and it's a lot of fun!
https://www.coursera.org/learn/interactive-python-1
https://www.coursera.org/learn/interactive-python-2

7 years ago
Permalink

Comment has been collapsed.

If you dont mind paying for a sub. I recommend https://www.pluralsight.com/

7 years ago
Permalink

Comment has been collapsed.

Thank you... but I don't have money ):

7 years ago
Permalink

Comment has been collapsed.

Try to register on msdn microsoft site as developer, you can get some free stuf for learning, visual studio community (fre either way) and as i remember they give you free 3 months of pluralsight. [https://www.visualstudio.com/dev-essentials/](dev essentials)

7 years ago
Permalink

Comment has been collapsed.

www.codingame.com great place to learn and practice programming

7 years ago
Permalink

Comment has been collapsed.

Sign in through Steam to add a comment.