4 ms·
> It appeared to be on a good track to dethroning C++ in the domain I work in (video games)... but they locked it a while before figuring out the ergonomics to
by pcwalton 2y ago
> It appeared to be on a good track to dethroning C++ in the domain I work in (video games)... but they locked it a while before figuring out the ergonomics to make it workable for larger teams.
There are million-line Rust projects now. Rust is obviously workable for larger teams.
> Any language that imbues the entire set of special characters (!#*&<>[]{}(); ...etc) with mystical semantic context is, imo, more interested in making its arcane practitioners feel smart rather than getting good work done.
C uses every one of those symbols.
I think you're talking about @ and ~ boxes. As I recall, those were removed the same year the iPad and Instagram debuted.
- hoelle 2y ago> I think you're talking about @ and ~ boxes. As I recall, those were removed the same year the iPad and Instagram debuted. Take criticism better. A language choice on a project means the veterans are indefinitely charged with teaching it to newbies. For all Rust's perks, I judge that it would be a time suck for this reason. Browsing some random rust game code: [https://github.com/bevyengine/bevy/blob/8c7f1b34d3fa52c007b2bd3585446ec1b0234a65/crates/bevy_animation/src/transition.rs#L77 https://github.com/bevyengine/bevy/blob/8c7f1b34d3fa52c007b2...] pub fn play<'p>( &mut self, player: &'p mut AnimationPlayer, new_animation: AnimationNodeIndex, transition_duration: Duration, ) -> &'p mut ActiveAnimation { [https://github.com/bevyengine/bevy/blob/8c7f1b34d3fa52c007b2bd3585446ec1b0234a65/crates/bevy_input/src/button_input.rs#L123 https://github.com/bevyengine/bevy/blob/8c7f1b34d3fa52c007b2...] #[derive(Debug, Clone, Resource)] #[cfg_attr(feature = "bevy_reflect", derive(Reflect), reflect(Default, Resource))] pub struct ButtonInput<T: Copy + Eq + Hash + Send + Sync + 'static> { /// A collection of every button that is currently being pressed. pressed: HashSet<T>, ... Cool. Too many symbols.
- pcwalton 2y agoThat first "random Rust game code" is in fact code I wrote :) It's the same amount of punctuation as C++, or really any other language with C-like syntax.
- needlesslygrim 2y agoI think this criticism is silly. Here's what your first example would look like in a language with keywords (where reasonable, perhaps like C#) instead: pub fn play<lifetime p>(in out self, player: mut ref AnimationPlayer lifetime p, new_animation: AnimationNodeIndex, transition_duration: Duration) -> mut ref AnimationPlayer lifetime p But, this is still confusing! Let's remove even more symbols, and make the syntax more obvious by removing abbreviations: PUBLIC FUNCTION Play LIFETIMES P PARAMETERS IN OUT Self Player AS MUTABLE REFERENCE TO AnimationPlayer WITH LIFETIME P NewAnimation AS AnimationNodeIndex TransititionDuration AS Duration RETURNS MUTABLE REFERENCE TO ActiveAnimation BEGIN ... END IMO, using keywords instead of symbols for references, lifetimes, etc, would just make Rust overly verbose, and there's a reason BCPL used braces instead of BEGIN/END :^)