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.
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.
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
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
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
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.
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)
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 .
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
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" )
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.
Comment has been collapsed.
Yeah, but unfortunately Processing is very limited when it comes to input. Thank you.
Comment has been collapsed.
It's hard to answer your question without knowing the specifics.
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 :)
Comment has been collapsed.
OK, here you go:
Thanks.
Comment has been collapsed.
Hmm.
I re-read your post; what I'd recommend for you now is:
Regarding your answers to my questions:
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.
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.
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.
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.
Comment has been collapsed.
something weird, just type theodinproject.com - it is more a way for webdevelop, but python etc included
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 :)
Comment has been collapsed.
not my first thread without trolling (by the way, there's nothing wrong with unharmful trolling ;D)
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?
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.
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.
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.
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.
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.
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).
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.
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-
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.
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).
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.
Comment has been collapsed.
Also, you can try http://www.pythonchallenge.com it is a fun way to learn a language :-)
Comment has been collapsed.
I think https://learnxinyminutes.com/ is good to get into the basics
Comment has been collapsed.
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)
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.
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.
Comment has been collapsed.
Don't worry, I'll keep on shitposting in order to not disappoint my fans
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
Comment has been collapsed.
If you dont mind paying for a sub. I recommend https://www.pluralsight.com/
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)
Comment has been collapsed.
www.codingame.com great place to learn and practice programming
Comment has been collapsed.
1 Comments - Last post 1 minute ago by EobardThawne
6 Comments - Last post 11 minutes ago by OneManArmyStar
0 Comments - Created 28 minutes ago by OneManArmyStar
13 Comments - Last post 30 minutes ago by Mohamed74
0 Comments - Created 37 minutes ago by Reidor
12 Comments - Last post 40 minutes ago by Bentosan
24 Comments - Last post 53 minutes ago by Arvennios
383 Comments - Last post 1 minute ago by ThePonz
1 Comments - Last post 2 minutes ago by Golwar
384 Comments - Last post 13 minutes ago by Mikurden
88 Comments - Last post 13 minutes ago by tarikgoethe
74 Comments - Last post 14 minutes ago by druminy
11,234 Comments - Last post 18 minutes ago by Reimaishere
42 Comments - Last post 37 minutes ago by Mitsukuni
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:
Comment has been collapsed.