4 ms·
C is a good language, Rust is overengineered and rarely the right tool (in contrast to how often it's used), Go is a dumb language. Fight me.
by junon 5y ago
C is a good language, Rust is overengineered and rarely the right tool (in contrast to how often it's used), Go is a dumb language.
Fight me.
- fsflover 5y agoIt's expected that on HN you give your arguments first.
- junon 5y agoNot if I scream louder. I automatically win in that case.
- deleted 5y ago[deleted]
- the_only_law 5y agoI'll fight on the first one, don't care or know enough about Rust for the second and will agree on the third.
- 999900000999 5y agoC is hard. Very very hard. In fact, as a teenager I tired C++( I know it's not exactly the same, but lower level languages are difficult) and found it so hard I stopped trying to learn programing for years. JavaScript, specifically Unity's implementation was my first programing language. Even today, it's my go-to language to get something done quick. Anything larger, like a video game for example, I'll use C#. Even of C was amazing 30 years ago, we have better tools now. You can make 200k writing C#, Python or JavaScript. Why make life hard with a low level language !
- junon 5y ago> Why make life hard with a low level language Because I'm designing an operating system. None of those languages can do that. Also, I'm a maintainer of 2 of the top 10 packages on npm. Javascript is not a language I usually jump to when I care about performance or (extreme) portability. Lastly, C++ != C. They're similar and somewhat compatible, but entirely different at the same time.
- 999900000999 5y ago>Lastly, C++ != C. They're similar and somewhat compatible, but entirely different at the same time. I acknowledge this, but they're both very difficult if you're starting with that. To reframe my argument I'd say no new programmer should use a low-level language as it's so difficult you might just give up. The vast majority of jobs will not require you to build an operating system. I think it's a matter of what your goals are. If you want to build a website or a game, use a high level language, get it done fast and move on of your life. If you want to find a job, you're going to have much better luck using higher level languages and you'll still make just as much as an embedded C engineer ( if not more). For your specific use case,yes you need something like C.
- Jtsummers 5y agoSince this is a discussion of contrarian views, here's mine: Your statement regarding C and C++ for beginners isn't strong enough. No new programmer should program, period. That is, they should not be set in front of a computer to type out even a single line of code that is meant to be executed. They should be taught to think algorithmically, to express their intent in clear and precise language without the aid of a computer to evaluate what they've written and verify it for them, instead relying on their own mind. This doesn't need to last for long, perhaps just the first few weeks of instruction, but it should be present. The alternative is what I've seen throughout my career of people coding first and thinking later. They become dependent on the compiler, the type system, the test suite to do even the basic thinking for them. Those are useful tools (and essential once your programs start to take on any significant scale), but if they're what you reach for first, you're not thinking. And new people to programming should spend more time thinking and less time typing. In a college or high school course, this means assignments that require actual coding should be every 1-2 weeks, at best, and the rest of the assignments should be written. Again, having them express their understanding of the program's algorithms and data structures in clear and precise language first, before they ever type anything up.
- 999900000999 5y ago>This doesn't need to last for long, perhaps just the first few weeks of instruction, but it should be present. This assumes you're learning in an academic environment. I taught myself programming just because I wanted to make some video games. I've done very very well career wise. I will admit I do lack some fundamentals, but I can still get things done. I'm absolutely unashamed to rely upon modern conveniences. Yes I need the strong type system C# provides for any bigger project. I practically need autocomplete, particularly with C# to get anything done. If it's small I can hack it out in JavaScript. I still remember the three lines of code you need to stand up with NodeJS. One of my friends needed a small app done last year, I was able to build it for him and flutter in about a month. In fact modern programming languages are so much easier, I reckon this friend if he put the time into it could have built his own application in a few months. The old guard of Computer Science tendsl to have a very strange gatekeeping to them. Overall, I'd like programming to be less of a foreign thing to the general public. If you learn a little bit of python to reformat some old phone contacts you have, you're very much a programmer. Like not every single person with a driver's license can drive a big rig, not every programmer will be able to build their own operating system from scratch.
- jstx1 5y agoMy CS curriculum at school was basically data structures and algorithms in C++. I really appreaciate that that's how I got started and I think it made things easier later on.
- mbrodersen 5y agoC is easy. I learned it as a teenager just reading the K&R book and playing around with a compiler. I had no aces to the internet, no stack overflow etc. Lots of fun.
- codegeek 5y ago"Go is a dumb language." "Fight me" I like Dumb languages. Next.
- PenguinCoder 5y agoI think Go is a great language, with some dumb decisions.
- fzil 5y agoI thought this was the mainstream opinion of Go, outside of its own community?
- ghoward 5y agoI actually agree, though I would personally add stuff to C to make it a better foundation. I also want a boringcc C compiler, like djb asked for.
- junon 5y agoWhat's boringcc?
- ghoward 5y agoIt's basically a compiler that doesn't punish the developer for having undefined behavior in software. DJB described it at [1]. HN comments are at [2]. [1]: https://groups.google.com/g/boring-crypto/c/48qa1kWignU/m/o8GGp2K1DAAJ https://groups.google.com/g/boring-crypto/c/48qa1kWignU/m/o8... [2]: https://news.ycombinator.com/item?id=10772841 https://news.ycombinator.com/item?id=10772841
- junon 5y agoThanks!
- anta40 5y agoAt least writing REST API in Go is much easier compared to Rust. Since you are writing OS (which Go is not designed for), what's your thought on Pascal or Ada?
- cblconfederate 5y agothe obsession of programmers with languages is remarkable. Imagine if mathematicians spent most of their daily lives arguing if the leibnitz or the newton notation is better, and proposing new, slightly differently curved symbols every month. I think it just shows that the field doesn't have productive results to show so it's preoccupied with meta discussions.