Remix.run Logo
▲ hatefulheart 4 hours ago

Everyone in this thread is going to call out issues with writing a Web application using C.

Refer to the newest Talk Python podcast where a core CPython developer was told that Python is memory safe and his response was “is it?”.

At some point we need to be more sophisticated about this, our hardware is fundamentally unsafe, anything we build on it is fundamentally unsafe and there are degrees to which things are better or worse and that’s it. All that matters is the love, rigour and care you put into your work.

Proceed as you wish, a backend in C is valid a backend in LISP is valid.

▲networked an hour ago | parent | next [-]

> anything we build on it is fundamentally unsafe and there are degrees to which things are better or worse and that’s it.

This doesn't mean C is an equally valid choice for a web backend as Common Lisp when you care about development speed and don't want to get pwned. It's justified(ish) if you are Fossil SCM but much less so if you are a random website. When you need high performance, it's more justified, especially if it's 2006. When you can afford to use bindings for your C libraries, it's less. Etc.

To shift your perspective, replace C with x86-64 assembly. AsmBB (https://board.asm32.info/) is undeniably a cool thing. Is it valid to develop an e-commerce site the same way?

There is a general pattern of "there are degrees, so basically anything goes". It's important to recognize it and resist its siren song.

> The Sophisticate: “The world isn’t black and white. No one does pure good or pure bad. It’s all gray. Therefore, no one is better than anyone else.”

> The Zetet: “Knowing only gray, you conclude that all grays are the same shade. You mock the simplicity of the two-color view, yet you replace it with a one-color view . . .”

> —Marc Stiegler, David’s Sling

https://www.greaterwrong.com/w/fallacy-of-gray

▲doublerabbit 43 minutes ago | parent [-]

> Is it valid to develop an e-commerce site the same way?

Sure why not. If it can process my transaction cleanly and securely why not?

▲networked 33 minutes ago | parent [-]

If.

▲doublerabbit 17 minutes ago | parent [-]

Why couldn't it?

▲hatefulheart 3 minutes ago | parent [-]

Because he claims you cannot. Pretty much.

▲rfgplk 3 hours ago | parent | prev [-]

People don't realize how much performance they're leaving on the table by not using C/C++/Rust. Get uWebSockets and set up a demo server, it's going to be 10-50x faster than a Node.js server. Quite literally the performance delta is that drastic.

▲mpweiher 2 hours ago | parent | next [-]

Objective-C is still a sweet spot for this, if you wield it right.

It can get you most of the Smalltalk (Python/Ruby) conveniences with most of C's speed. In fact, if you do it really well you can leverage them together to get better than both. Simultaenously.

Doesn't mean that people don't manage to wield it in such a way as to get all the convenience of C combined with the performance of Python/Ruby. Which always baffles me. You .... did .... WAT?

To me the Right Thing™ here always seemed the obvious and simple thing to do, as in: just don't spend extra effort to mess it up and you'll be fine. YMMV.

Plug: my book gives fairly detailed instructions on how to achieve the positive combination. [1]

Other plug: Making it easier to get this right is the 2nd of the four stages of Objective-Smalltalk. [2][3]

[1] https://www.amazon.com/Cocoa-Objective-C-Performance-Tuning-...

[2] https://blog.metaobject.com/2019/12/the-4-stages-of-objectiv...

[3] https://objective.st/

▲thevillagechief 2 hours ago | parent | prev | next [-]

People do actually realize. It's just that people have decided it's not the most important thing when it comes to delivering software. There's a reason Node and Python are the most popular ecosystems.

▲lukaslalinsky 2 hours ago | parent | prev | next [-]

You would be surprised how fast Node/Bun can be if you scale them properly. If you use Bun, you are using uWebSockets already. If what you are doing in your application is database queries and some template rendering, you might not actually gain that much from these compiled languages.

▲nightfly 2 hours ago | parent | prev | next [-]

Most people don't need to care about that. If you're writing something that's gonna be used by a fixed number of real humans a few times (or a even a few 1000) times a day the overhead isn't gonna matter

▲pjmlp 3 hours ago | parent | prev [-]

Or Go, OCaml, Haskell, Java, C#, D, Ada,....