Jump to content

Hello from North Carolina


Chad Windham
 Share

Recommended Posts

Stumbling across this is one of the happier moments in my life. I'm a professional web/app dev for 3+ years now with no computer science background (I went through a coding bootcamp) and I've been struggling to find different ways of "teaching" myself computer science. While I've found lots of great resources and have started toying with the idea of fiddling with assembly on the raspberry pi, I've been jealous of everyone that "got started" on all these old systems from the 80's where you "had" to use BASIC or assembly. This is literally a dream come true for me!

  • Like 2
Link to comment
Share on other sites

"Learning Computer Science" is a pretty broad goal and, short of getting an actual degree, is difficult to quantify. If you want to learn the basics of computer science, like why languages do what they do, there a lot of things to explore. A lot of great content on YouTube, actually, as good as any University lecture. Chances are, coming from web stack straight into 8-bit assembly, you'll be hopelessly lost. You may want to try gradually stepping down your level of abstraction. Build a console-based program with Python, then try to do the same thing with C. Learning the different languages and seeing how they deal with data should help you connect the dots. If you want to press further down the ladder of abstraction, then try assembly. Doing ARM assembly for a Raspberry Pi is not the best idea, as that is a platform designed to have many layers of abstraction between bare metal and userspace. The X16, however, is a perfect platform for learning assembly. It was designed to have you directly access everything, not depend on a big operating system and countless drivers and services.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

On 11/24/2020 at 9:13 PM, SlithyMatt said:

Doing ARM assembly for a Raspberry Pi is not the best idea, as that is a platform designed to have many layers of abstraction between bare metal and userspace.

I have not dug into many assemlies yet, but wait. Are you saying that in some systems (like RPi) I will not get to the lowest programming level, even if I'm coding in assembly?

Edited by Cyber
  • Like 1
Link to comment
Share on other sites

8 minutes ago, Cyber said:

I have not dug into many assemlies yet, but wait. Are you saying that in some systems (like RPi) I will not get to the lowest programming level, even if I'm coding in assembly?

It depends. You can create an assembly program that runs entirely within Raspbian userspace, just like you would with C. But if you are looking to get all the way down to bare metal, you can do that, too, but the platform is not meant for that, so it will be an exercise in frustration more than anything, unless you were actually trying to create your own custom kernel. Either way, the experience of writing in ARM assembly for a complex (it's small but INVOLVED) system like the RPi will be a far cry from a simple system that's meant to be an assembly programming target like the X16 or any other 8-bit system.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

On 11/24/2020 at 2:13 PM, SlithyMatt said:

"Learning Computer Science" is a pretty broad goal and, short of getting an actual degree, is difficult to quantify. If you want to learn the basics of computer science, like why languages do what they do, there a lot of things to explore. A lot of great content on YouTube, actually, as good as any University lecture. Chances are, coming from web stack straight into 8-bit assembly, you'll be hopelessly lost. You may want to try gradually stepping down your level of abstraction. Build a console-based program with Python, then try to do the same thing with C. Learning the different languages and seeing how they deal with data should help you connect the dots. If you want to press further down the ladder of abstraction, then try assembly. Doing ARM assembly for a Raspberry Pi is not the best idea, as that is a platform designed to have many layers of abstraction between bare metal and userspace. The X16, however, is a perfect platform for learning assembly. It was designed to have you directly access everything, not depend on a big operating system and countless drivers and services.

Hey thanks for the advice, you're spot on in every way. I've been at this for a while actually and have done all the things!

  • EdX is the best free online video based stuff I've found, plus the speaker acts likes he's on crack so it never gets boring lol
  • Code the Hidden Language of Computer Hardware and Software is a book that has been great for starting from absolutely nothing
  • Inside the Machine is a book that is awesome but not for starting from scratch, you gotta know some stuff first
  • Haven't messed with Python much, but have created various CLI's via Node, Ruby and Rust
  • Also a huge fan of shell scripting (Bash in my case)
  • Currently fiddling with the Rust language more and more, playing with libraries that interface with openGL to try and make some crappy 2D games

You're very right about assembly not being great on the pi, I fiddled with an Arduino 3+ years ago and was pleasantly surprised how easy it was to program (thought it would be harder going into it). I don't really have that anymore but I do have a pi lying around which is why I started seeing about fiddling with that for some basic assembly stuff. I'm probably gonna put that on hold now though and just wait for the X16 release, since it is literally everything I've been wanting.

  • Like 1
Link to comment
Share on other sites

13 hours ago, Chad Windham said:

Haven't messed with Python much, but have created various CLI's via Node, Ruby and Rust

Python and Ruby are pretty interchangeable, but Python just has more traction now. So then, I would suggest taking some of your simpler CLI programs and try doing them in C before doing them in assembly.

Link to comment
Share on other sites

13 hours ago, SlithyMatt said:

Python and Ruby are pretty interchangeable, but Python just has more traction now. So then, I would suggest taking some of your simpler CLI programs and try doing them in C before doing them in assembly.

Unless I'm missing something, wouldn't Rust pretty much check all the boxes that C would?

Link to comment
Share on other sites

3 hours ago, Chad Windham said:

Unless I'm missing something, wouldn't Rust pretty much check all the boxes that C would?

Not quite. Rust still has a bunch of black magic behind it managing memory and references. C is just you and the bare metal with syntax making it easier than assembly programming. Rust may be a good intermediary between Python and C, if that's too large a step to take, or a good starting point if you are already comfortable with it.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

Please review our Terms of Use