Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)S
Posts
25
Comments
115
Joined
3 yr. ago

  • I hope you both receive the help you obviously need, you two snowflakes.

  • Donating to that shell script collection of this weird right-wing millionaire guy from Ruby on Rails.

  • I wonder if there will be an equivalent AMD offering ...

  • Are they no longer funding them, or are they just not reporting it anymore?

  • Cal down you clown. People can decide to spend their own money in whatever way they see fit.

  • Framework CEO has been busy last year losing trust, to be honest.

  • It's layers and layers of indirections with no clear need and technical decisions that make things unnecessarily complex.

    So your basically writing Regexes in a custom DSL in JavaScript, combined with custom hooks written in C, from which a megabytes-large native-code parser is generated.

    The complexity of the solution does not fit the niche between dead-easy TextMate grammars and plugging into an LSP.

    Don't misunderstand me, I wish there was something filling that niche, but TreeSitter 100% certainly isn't it.

  • Nix / NixOS @programming.dev

    LixCon 2026

    media.ccc.de /c/lixcon2026
  • Well done!

  • The point I’m trying to make is that this is a very incomplete article, as it doesn’t seem that much thought was put on the downsides.

    I could mentioned additional points in favor for the same reason you mentioned your points against, but at some point one has to stop and decide whether any minor, additional points made would sway the overall verdict.

    Many of the most popular languages have both modifiers and annotations:

    I have a separate blog post in which I consider when "popularity" or "familiarity" should be considered when it comes to language design.

    C doesn’t have both because it doesn’t even have annotations. Idk about C++, but it either doesn’t have annotations (like C)

    Both C and C++ have annotations. They are called "attributes" in their language, as mentioned in the footnote linked from the blog post's first sentence.

    People genuinely don’t believe this to be an issue. The closest is public static int main() for java.

    If you look at Java-inspired languages like Scala or Kotlin, neither of them have public (made the default) nor static (replaced by companion objects).

  • I spent the necessary effort to experiment/work with the various approaches to form an opinion, and your main counter argument is largely ... being sarcastic, trying the hardest to misunderstand things to ridicule them and being generally offended?

    Let's end this here, your comments are a poor use of my time.

  • Ok, then here's a short answer to your points:

    Aesthetics. Annotations are just uglier than modifiers. Due to their special syntax instead of just a naked keyword.

    If the language has annotations already, then you have paid the tax of having "special syntax" in your language in any case.(Except Swift maybe, which has "attributes" and more than 200 keywords.)

    Annotations take up more space

    I don't consider this a drawback. In fact, many languages with modifiers have the same rules about modifier placement.I actually want annotations on their own line, such that all my actual keywords start at the same column.

    Disorder

    Many languages with modifiers have the exact same issue, and address the issue the same way I'd address it for annotations:Define a desired order of annotations and let the compiler/linter/IDE/formatter deal with it.

    Downgrading

    Let the IDE/editor pick a different color for you "more important" annotations, if you like.

    “your language should not have modifiers, do annotations instead” instead of “if your language has both, remove modifiers”

    That's just nitpicking the wording. Ok.

    Namespacing ... is not objectively better. I don’t want to import “public” in every single file.

    Then don't? Most languages don't make you import String either.

    Namespacing ... Or even worse, a non-annotation (function, class) named “public”.

    Have a separate namespace for for annotations, or treat @ as part of the name.Though it's not something I would spend effort on – sometimes the best answer to "X does not work" is "then don't".

    Variable declarations do have modifiers too (for example “const” in C).

    I replaced ...

     
        
    const foo: Foo = ...
    
    
      

    ... with ...

     
        
    @constantValue
    let foo: Foo = ...
    
    
      

    ... in my language a short while ago. It's fine.

  • The whole TreeSitter architecture is such a trash fire, the faster people stop building things with it, the better.

  • I believe that if you start from an annotation-only stance, then you will look at the language, its defaults and possible extensions differently, because annotations are "visually" more expensive than slapping yet-another keyword on something.

    I. e.:

    • "no visibility modifier" should probably mean "public"
    • defining the external API should move to the module-level altogether
    • we should probably use var instead of let mut
    • #[cfg(target_os = "windows")] is just bad design overallinstead put different targets into different folders: much easier, works better
    • async should not exist at all(though not related to annotations vs. modifiers, but because the whole idea is a language design dead-end)

    So the code from your example would literally be ...

     
        
    fun some_func: Unit = {
        var my_var = 3u2
        // ...
    
    
      

    ... in my design.

    Rust's syntax with #[...] is not that great in this regard, as it triples the amount of symbol involved for simple annotations compared to something using @....

  • You do not have to agree with every blog post found on the internet.I think you make a few good arguments, but you are way too angry for me to engage.

  • Programming @programming.dev

    Language Design: Annotations Obsolete Modifiers

    soc.me /languages/annotations-obsolete-modifiers
  • Programming Languages @programming.dev

    Language Design: Annotations Obsolete Modifiers

    soc.me /languages/annotations-obsolete-modifiers
  • Programming @programming.dev

    It's OK to compare floating-points for equality

    lisyarus.github.io /blog/posts/its-ok-to-compare-floating-points-for-equality
  • Then keep deceiving yourself. 🤷

  • If you haven't gotten the point by now, it's not a good investment of my time. Bye.

  • The window's title bar shows the tab's title.

  • "Let's not have rules, because some may break them!"

    🤡

  • The Hacker News thread sided overwhelmingly with the maintainer. Hard to disagree.

    Not sure I'd buy that line of thought.

  • Programming @programming.dev

    Why I am moving away from Scala

    arbuh.medium.com /why-i-am-moving-away-from-scala-7a9d3dca17b9
  • Talks @programming.dev

    39C3: Power Cycles – Live-Streams

    streaming.media.ccc.de /39c3
  • Programming Languages @programming.dev

    Concrete syntax matters

  • Programming Languages @programming.dev

    Library Design: Naming Conventions – Streaming

    soc.me /languages/naming-conventions-streaming
  • Compilers @lemmy.ml

    Super-flat ASTs

    jhwlr.io /super-flat-ast/
  • Programming Languages @programming.dev

    Language Design Notes

    cs.lmu.edu /~ray/notes/languagedesignnotes/
  • Programming Languages @programming.dev

    Library Design: Naming Conventions – Lookup

    soc.me /languages/naming-conventions-lookup
  • Programming Languages @programming.dev

    losing language features: some stories about disjoint unions

    graydon2.dreamwidth.org /318788.html
  • Programming @programming.dev

    Intel's original 64bit extensions for x86

    soc.me /interfaces/intels-original-64bit-extensions-for-x86
  • Programming Languages @programming.dev

    X Design Notes: Unifying OCaml Modules and Values

    blog.polybdenum.com /2025/08/19/x-design-notes-unifying-ocaml-modules-and-values.html
  • Programming Languages @programming.dev

    The Core of Rust

    jyn.dev /the-core-of-rust/
  • Programming Languages @programming.dev

    Zig's Lovely Syntax

    matklad.github.io /2025/08/09/zigs-lovely-syntax.html
  • Programming Languages @programming.dev

    Library Design: Naming Conventions – Option & Result

    soc.me /languages/naming-conventions-option-and-result
  • Programming Languages @programming.dev

    (Quite) A Few Words About Async

    yoric.github.io /post/quite-a-few-words-about-async/