4 ms·
In terms of actual programming, I would start with Python. It's easier to carry momentum and work through fun projects with high velocity. Starting with C, you
by leon_sbt 9y ago
In terms of actual programming, I would start with Python. It's easier to carry momentum and work through fun projects with high velocity. Starting with C, you get a great foundation, but it is a lot of time and work with less instant gratification when compared to Python..
To learn the actual "art of compute". Go from bare metal and then up. In your free time casually learn about logic gates, SR latches and clock cycles. Then to Registers, ALU, Instruction Sets and pushing/popping things on stacks. Then to memory mapping and data buses.Work your way up to the C level of abstraction.
It is a long and brutal road, but it gives a great CS/EE foundation.
I am recommending this route since when they talk about pointers, references,heaps in the C world. It will give you a tangible foundation to built these abstract ideas on.
I vaguely learned the "art of compute" from college via Digital Logic, Microprocessors, and other related classes. Since your in college, I would just sit-in the EE/Comp Sci classes. It is much easier to learn from lectures when you don't care about tests/notes or labs. Then use the internet/office hours to supplement your curiosity/questions.
In conclusion,I recommend casually learning from bare metal and then go up to C then Python. But in terms of actual programming, do Python and work your way down to the assembly level as needed.
I like Python since their are "defacto" ways of doing things. Matrix Math -> Numpy. Lightweight HTTP framework -> Flask. Everything-include web framework -> Django. Web scraper->Scrapy. Need packages -> pip. I know there are other contenders for the things I mentioned, but based on my perception, this is what the Python community is rolling with.
I wanted to recommend doing Javascript/HTML/CSS. It's really cool to work on a project, then publish it on the internet for the world to use/see. But things change so fast, it's hard for a beginner to "sort" through what's needed/useful. React or Vue? Grunt or Gulp? Packages npm,bower,yarn? Async/Promises or callbacks? Don't forget about webpack. Ember or Angular? But wait. There is Typescript,CoffeeScript,JSX which needs to be transpiled. ES6? Here comes Babel. Want to make dev process quicker. Start hot reloading.
The point is,it is a little tough to "sift learn" when picking up Javascript and friends.. The community is moving fast, but it incredibily exciting to watch/participate. But I don't reccomend starting with it.
If you really want to learn HTML/CSS/JS. Start at the Mozilla Developer Network and use vanilla JavaScript. Ignore all the trick frameworks and tools until you understand the problems they are solving. Use them only if they solve problems that you are having.
To go from Python to C. Write some Python app. Profile it. Then write optimized C functions to replace the slow parts of your Python program. Make a Python wrapper with SWIG. Best of both worlds in my opinion.
- philonoist 9y agoWow! I am grateful to you for taking time to write this. You have been very lucid and resourceful on this. I never knew programming community could be this gooood and welcoming. Thanks a ton man!
- leon_sbt 9y agoNo problem! I'm glad to help. Aim to build something cool and useful, the rest of the pieces will figure itself out. Enjoy your Sunday!