2 ms·
What is “proficiency”? I think I could write a toy clone of React in the following languages: Typescript/JavaScript Golang Ruby Kotlin Python I think I w
by jitl 4y ago
What is “proficiency”?
I think I could write a toy clone of React in the following languages:
Typescript/JavaScript
Golang
Ruby
Kotlin
Python
I think I would struggle to write a toy clone of React in these languages, but I could probably write an animated gif viewer for the terminal:
Java
C
A lot of the languages on this list are extremely similar - Python, Ruby, JavaScript are all dynamic scripting languages with more or less equivalent expressivity although Ruby is substantially more fun. Golang, Kotlin, Typescript, and Java can all be written with roughly the same “structs with methods” style, although error handling in Go is more verbose, and Kotlin is much more fun.
I think once you have enough experience with the mainstream kind of imperative language listed above, getting up to speed on another variant in that category is pretty quick, especially for languages with modern and accessible tooling like Go.
C is the “most different” language here since it isn’t memory-safe, nor does it have easy access to closures. Without those it’s much more tricky for me to do fancy composition shenanigans… It’s straightforward to implement an OO classical inheritance system in any language with closures. Still, if you know C it’s super easy to understand Go, since Go is basically C on easy mode.
- gaws 4y agoIn your experience, is C still worth learning for a mid- or senior-level engineer usually involved with full-stack work?
- jitl 4y agoI learned C in school. I’ve never written it on the job, but knowing it & the general Unix programming model does mean I can debug weird build errors and have and understand the source code and documentation of C libraries like sqlite. Actually come to think of it, I did write some C style C++ to make a setuid binary at Airbnb for binding & forwarding some ports on developer laptops. I think C/C++ is very worth learning in general because the world’s most important and performant software is written in these languages. I wish I had a better command of C++; that language is the bar all others are measured against. “Is it faster than C? Is it more productive at maximum performance than C++? Is it safer than C++?” These are questions all other languages face.