23 ms·
I certainly am, yes. Spent about 12 years in the wrong career and then realised my love for programming (after a lifelong love of computers. Not sure how I miss
by throwaway77384 5y ago
I certainly am, yes. Spent about 12 years in the wrong career and then realised my love for programming (after a lifelong love of computers. Not sure how I missed that...)
I started with Python (and Kivy). Then went on to Go (which felt like a revelation over Python. For me, anyway). Along with that came JS, HTML, CSS and React.
Because of Go, I had become prejudiced against interpreted, dynamically typed languages. But over time I actually came to quite like JS. If wielded correctly, it can be very quick to get stuff working in JS and now I think either kinds of languages have their merits. Though, admittedly, React still eludes me. It feels incredibly confusing to me.
My next port of call will probably be something like Rust, but I have a product that takes up all of my time, so it's a bit tricky to find the time to catch up on my CS learning.
There is probably nothing that can replace a full-on university education in CS, but I'm not sure when or where I'd fit that into my life (I have a degree and thus know what it takes). I really hope to be able to do as much of that education on my own, however.
Any tips or hints welcome!
- holografix 5y agoThat’s a cool background. Can you share more about your product? I’m also struggling to see the great benefit of generics apart from “it’s quicker than using interface types, trust us”. I didn’t know a ring buffer was a “formal” data structure thingy but implemented one for a toy multiplayer game I’m building very slowly. There’s a “circular list” of the 5 last received messages from the server and if the position as indicated by the server deviated above a certain threshold I warp the player back to where they should be according to the server. I knew these message objects were gonna be allocated/nuked constantly so I just have 5 one pointing to the other and the last pointing back to the first and I go around overwriting them.
- styluss 5y ago> "it’s quicker than using interface types, trust us During runtime, the program doesn't know the actual type of the variable, it just knows it's a io.Reader and dereferences to the actual type vs generating the code for the type that is actually being used. Here's an interesting read on issues with interfaces at scale https://segment.com/blog/allocation-efficiency-in-high-performance-go-services/ https://segment.com/blog/allocation-efficiency-in-high-perfo...
- lijogdfljk 5y agoBoy your progress sounds super similar to mine. Though with swapped order on JS and Go. Mine was primarily Python->JS->Go->Rust. I've been a Rust fanatic for maybe ~2 years now. It was a natural progression for me, and i quite enjoyed it. I also love Rust, the stdlib (and supporting crates) gave me a UX quite similar to Go's batteries-included stdlib.
- throwaway77384 5y agoHow did you find learning Rust? You hear a lot about how steep the learning curve is. How suitable is it for web backends? I am just dying to get started with it.
- lijogdfljk 5y agoNot bad, or bad, depending on how you learn it, what you try to do, etc. In my experience, you can write Rust a lot like you write Go. A little more learning perhaps, because Go will do things "automagically", but you can reference count just like you would in Go/Python and it makes your code _far, far_ simpler. You also can use Rust's "interfaces" (`dyn Foo`) which behave a lot like Go's interfaces of `Foo { }`. You waste a bit of memory, but who cares when you're coming from Go or Python. You aren't trying to write the most efficient program ever (usually). As far as web backends, it's what we use it for at my shop. The only rough part there is framework maturity. The best novice framework (imo) is Rocket, though it's not quite mature. The "best" framework is probably Actix, but it's a bit more complex for newcomers. So yea, my advice is to be careful to learn only what you think you need to know. Don't bite off everything at once. Generics is the same story, learn the basics of what a generic is, how to use it, etc, and then rarely use it. You didn't have them in Go, right? Write Rust like Go. Learning a pinch of everything is useful though so that when a complex annoying thing occurs you have some idea how to handle it or where your knowledge is deficient. Also embracing Rust communities like /r/learnrust/ is useful too. Very friendly. Hope this helps :)
- FractalHQ 5y agoIf React doesn’t click for you, try out Svelte! You can do the interactive tutorial in one sitting[0]. It’s a breath of fresh air, incredibly productive, and countless React developers express intense feelings of joy and relief when describing their transition. Many people report that React feels outdated, convoluted and unintuitive in comparison. [0] https://svelte.dev/tutorial https://svelte.dev/tutorial