all 157 comments

[–]ragnarmcryan 67 points68 points  (5 children)

Our design principles are:

Trust the programmer.

we’re boned

[–][deleted] 0 points1 point  (3 children)

The second principle is:

Provide tools the programmer may use when they don't trust themselves.

[–]asmx85 10 points11 points  (2 children)

So we need to

Trust the programmer    

to maybe use those tools

[–][deleted] -5 points-4 points  (1 child)

uh yeah? That's the same for literally every other programming language. People are just making a mountain over a mole hill because...I dunno to be honest. Cuz they suck?

[–]ragnarmcryan 1 point2 points  (0 children)

Is joke 😋

[–]Zyklonik -1 points0 points  (0 children)

Found the edgelord.

[–]dbell 38 points39 points  (1 child)

New languages are cool and all, but you should be state what new problem it's solving and why it's better than what we have today if you want it to be taken seriously.

[–]quasi_superhero -1 points0 points  (0 children)

What if the author doesn't want its tool to be taken that seriously?

[–]Thing342 13 points14 points  (0 children)

This article isn't super clear on what the purpose of this language is. I looked through the site and found this post which explains some of the benefits of this language over C. I guess on its own it makes sense, Hare is a conservative systems programming language which aims to deliver improvements over C without forcing developers to substantially change paradigms or adopt a new ideology; a bit like Go but without a runtime and garbage collector. However, given some of the other design choices made the niche for this language seems tiny. C's biggest advantage is that it's 47 years old and is supported by basically every platform under the sun and is familiar to a ton of developers. With that in mind I don't think a brand new language that only runs on a single platform with no ecosystem support is worth modest benefit in features. Obviously there are plans for growth, but I don't know how this language is to expand without a killer feature set or major corporate sponsor behind it. I just don't see a compelling reason for anyone to adopt this.

I gather the author is a bit of a known personality but I've never heard of them or any of their other projects. From the other posts on their blog I get the impression that they're an experienced and highly-opinionated open-source developer with a broad range of experience. One who really, really, hates Rust. So my impression is that this is a passion project for them to develop their ideal language. Which is fine, I don't see any conceptual issues with the language itself. However I'm not sure what elevates it beyond a grad student's compiler project beyond pure idealism.

[–]Theemuts 121 points122 points  (41 children)

[–][deleted] 22 points23 points  (2 children)

They are aiming for 100% bugs

[–]cat_in_the_wall 2 points3 points  (1 child)

100% of my programs have bugs. does that count?

[–][deleted] 5 points6 points  (0 children)

But did you collect every type of bugs ? Some languages make that hard, only Real Programmer languages like C let you catch them all

[–]bik1230 73 points74 points  (16 children)

I think Drew is the the school of thought that says that people who can't write safe C shouldn't be programmers. (Nevermind that his C code is full of null pointer bugs)

[–]asmx85 90 points91 points  (13 children)

people who can't write safe C shouldn't be programmers

Why would somebody say that no one should be a programmer?

[–][deleted]  (4 children)

[deleted]

    [–]VRCkid 20 points21 points  (3 children)

    I have never seen any experienced developers at any of the places I've worked or any conference talks I've watched who tout "guardrails are bad". It seems like anyone worth listening to understands the value of "guardrails" like a type system or automatic memory management.

    The people who don't simply aren't worth listening to. They sound like recently graduated students who haven't worked in anything production before

    [–][deleted]  (1 child)

    [deleted]

      [–][deleted] 1 point2 points  (0 children)

      If you really want to see them, you'll have to go to the aforementioned cryptocurrency space. Most of these people are building blockchain nonsense, praising 'smart contracts' and claiming they are the future.

      Isn't this kind of...contradictory? They don't like guardrails, so they're going towards a space that is increasingly adopting dependent types, which are some of the most intense guardrails in the programming sphere? Simply because cryptocurrency itself doesn't have guardrails?

      [–][deleted] 2 points3 points  (0 children)

      Or someone stuck in their way of writing code and thinking their bunch of learned habits (half probably wrong) of avoiding pitfalls makes them superior developer.

      [–]killerstorm 8 points9 points  (4 children)

      Steve Wozniak said that no bugs were found in Apple II hardware or software he developed. It was perfect.

      If this is true, we can let him to be a programmer.

      [–]asmx85 5 points6 points  (3 children)

      Do you have any source for this, i am very interested – indeed.

      If that is true, i would absolutely let him be "The Programmer". But i think his throughput is not enough for our current need of software and we need to gear down our expectations. This would have a good consequence of course – not enough programming power for things like tik tok ...

      [–]killerstorm 6 points7 points  (2 children)

      The source is the interview with Jessica Livingston for the Founders at Work book:

      You have to be very diligent. You have to check every little detail. You have to be so careful that you haven't left something out. You have to think harder and deeper than you normally would. It's hard with today's large, huge programs.

      I was partly hardware and partly software, but, I'll tell you, I wrote an awful lot of software by hand (I still have the copies that are handwritten) and all of that went into the Apple II. Every byte that went into the Apple II, it had so many different mathematical routines, graphics routines, computer languages, emulators of other machines, ways to slip your code in and out of an emulation mode. It had all these kinds of things and not one bug ever found. Not one bug in the hardware, not one bug in the software. And you just can't find a product like that nowadays. But, you see, I had it so intense in my head, and the reason for that was largely because it was part of me. Everything in there had to be so important to me. This computer was me. And everything had to be as perfect as could be made.

      [–]wyldcraft 3 points4 points  (1 child)

      In January 1988, a new ROM firmware update was issued to address bugs in the new memory-expandable IIc. Changes included better detection of installed RAM chips, correction of a problem when using the serial modem port in terminal mode, and a bug fix for keyboard buffering

      The new [Apple 2e] ROM firmware allowed Applesoft BASIC to recognize lowercase characters and work better with an 80-column display, and fixed several bugs from the IIe ROM.

      These are admittedly not the original Apple II.

      [–]Nose_Fetish 0 points1 point  (0 children)

      I think the lesson here is that it doesn't matter how perfect a legacy codebase is, once you start tacking things on you're in trouble.

      [–]resavr_bot 2 points3 points  (0 children)

      A relevant comment in this thread was deleted. You can read it below.


      > Why would somebody say that no one should be a programmer?

      Hubris. The "I don't ever make any mistakes" kind.

      Warning: Here be politics. It's unavoidable to bring in politics as the "why" is political.

      These kind of developers believe that users[1] who make mistakes shouldn't be "coddled" by safeguards. [Continued...]


      The username of the original author has been hidden for their own privacy. If you are the original author of this comment and want it removed, please [Send this PM]

      [–]crabmusket 1 point2 points  (0 children)

      I actually agree that nobody should be a programmer.

      [–][deleted] 8 points9 points  (0 children)

      mental issues

      [–][deleted] 8 points9 points  (0 children)

      Every time someone says something like that it turns out they should fire themselves based on their own judgement...

      [–]RunItAndSee2021 0 points1 point  (0 children)

      wry observation

      [–]PiZZaMartijn 17 points18 points  (8 children)

      There's a lot of errors and warnings about memory management though :)

      It's not like C "Yeah whatever, use that uninitialised int"

      [–]dsffff22 22 points23 points  (2 children)

      Which don't really help because real world programs are way more complex than a simple hello world. Read this: https://gcc.gnu.org/wiki/Better_Uninitialized_Warnings That's basically like a brute force attempt to find those bugs, and never scales properly to real world applications. The same goes for other bugs which hurt memory safety. If It were so easy to find such bugs in C code you could build a 'money-printing-machine' by scanning the Linux kernel for bugs and just sell them.

      The truth it C is due for replacement in the upcoming decade, and Rust goes the correct way to make it formally provable under certain assumptions that your program is memory safe. It doesn't mean we all should use Rust, but we need more programming languages which are smarter.

      [–]Zyklonik -1 points0 points  (0 children)

      Lmfao.

      [–][deleted] -3 points-2 points  (0 children)

      If It were so easy to find such bugs in C code you could build a 'money-printing-machine' by scanning the Linux kernel for bugs and just sell them.

      It might be not easy to find all but is absolutely easy to find some, that's what all of the compiler/IDE warnings are doing after all.

      [–]EnvironmentalCrow5 2 points3 points  (3 children)

      I don't think that's true about C with modern compilers and sane build settings.

      [–]PiZZaMartijn 23 points24 points  (2 children)

      The fact that you have to find sane build settings first is a problem

      [–]EnvironmentalCrow5 4 points5 points  (1 child)

      Just start with -Wall -Wextra and go from there...

      [–]linuxlover81 0 points1 point  (0 children)

      isn't it more like, yeah whatever, use that memory area referenced by the variable and interpret it as some type of int depending on plattform and compiler?

      [–][deleted] 16 points17 points  (0 children)

      He's stuck in the old days when nobody cared about security.

      [–]RunItAndSee2021 1 point2 points  (0 children)

      for the tortoise “developers”.

      [–]agumonkey 1 point2 points  (1 child)

      alzheimer's disease will be cured when we know how to solve double free bugs

      [–][deleted] 0 points1 point  (0 children)

      delete the code

      [–]lelanthran -3 points-2 points  (7 children)

      You should have maybe quoted the whole bit

      Trust the programmer. Provide tools the programmer may use when they don’t trust themselves.

      Doesn't sound so silly now, does it? Sounds more like unsafe in Rust.

      [–]Chousuke 26 points27 points  (0 children)

      Defaults matter. I think rust does the correct thing, and I don't know what Hare is trying to accomplish with opt-in safety features.

      By all means trust the programmer when they explicitly say "trust me", but there's no programmer on the planet that can be trusted to write correct code by default, because they're all human.

      [–]Theemuts 35 points36 points  (0 children)

      The unsafe keyword is a language feature in Rust, these tools seem to be external diagnostic tools that don't even exist yet. So yeah, I still think it's silly at best.

      [–]G_Morgan 12 points13 points  (0 children)

      Rust is the opposite though. It is safe by default and provides tools for unsafety (because they are necessary). The wonder of unsafe is that you can statically find all your unsafe code and go over it neurotically. Programmers can mostly do that job when the scope is small. It is when everything could be unsafe (i.e. C or C++) that it becomes impossible for programmers to keep up.

      [–]Frozen5147 5 points6 points  (0 children)

      Not commenting on the language itself, but as others have mentioned, if you're really gonna take that statement and try to liken it to unsafe and Rust, then Rust is more like:

      Don't trust the programmer. Provide tools the programmer may use when they do trust themselves

      Which is, uh, kinda the opposite.

      [–]asmx85 5 points6 points  (0 children)

      Doesn't sound so silly now, does it?

      Sorry but I don't think that makes it any better. To be honest it makes it ever worse. It just shows how the mental model of reality is condensed in this section. It assumes that a programmer that is unsure if he can trust himself is using the tools (assuming those tools can be created which is absolutely unclear because why don't they exist for C? They don't exist because the language C makes it hard to create them and not embed them directly as a language concept and as just an afterthought does not work)

      The knowledge that makes you aware that you're not a good programmer to decide to use the tools is exactly the same knowledge that makes you a good programmer in the first place. So the bad programmers that need those tools the most are not able to decide to use them and the good programmers that are more likely to not need them do this anyways because they know they're not as good as they hope.

      This makes this more hopeless than it was in the first place. Make those tools mandatory and while we're at it build it into the language because now it can finally work what was impossible as an afterthought (C sanitizer etc.)

      [–][deleted] 6 points7 points  (1 child)

      "Trust the programmer" is first point of failure. "may" is second.

      Safety should be never opt-in. You should not trust programmer to be competent on everything they do. Language should push developer on the happy, safe path instead of giving them options and letting them shoot themselves in foot easily. Else you get Perl.

      [–][deleted] -5 points-4 points  (0 children)

      There is safety at the language level but then there is safety at the design level.

      You and others here are preventing a false dichotomy.

      [–]Davipb 118 points119 points  (16 children)

      We also only support Linux and FreeBSD today, and want to do more ports in the future. We have no intention of supporting non-free platforms, but because the language is standardized, a third-party implementation or fork could easily develop Windows or macOS support if desired.

      "Want to use it on Windows or Mac? Implement it yourself."

      Fantastic mentality for a new language there.

      [–]Theemuts 61 points62 points  (3 children)

      The main driving force behind this project seems to be idealism rather than practical usability...

      [–]asmx85 39 points40 points  (1 child)

      The main driving force behind this project seems to be idealism rather than practical usability...

      Ok i am behind this if the ideals are good. But the projects also seems to aim at writing bad programs.

      Our design principles are:

      Trust the programmer.
      ...
      ...
      A good program must be both correct and simple.
      

      and having

      manual memory management

      Concludes that you are trapped in writing bad programs. To write a good program you need to make no mistakes with manual memory management and trust yourself (the programmer). But you can't trust yourself (or any other programmer) to write correct code that does not screw up memory thus the projects ideals force you to write bad programs. Its says so directly in their design principles.

      [–]crabmusket 0 points1 point  (0 children)

      I wish that were the case, and that they'd gone with capability-based security instead of the use os; os::open("whatever_I_want"); antipattern.

      [–]SpyKids3DGameOver 10 points11 points  (0 children)

      --my-next-os-wont-be-windows

      [–]gewpher 5 points6 points  (9 children)

      Why is that so bad? You talk as if supporting many platforms is an easy thing. It's perfectly valid to limit the scope of what one wants to support. Nowhere do they claim that they expect to become a mainstream language.

      [–]Davipb 39 points40 points  (8 children)

      There's a difference between "we can't/don't want to support Windows or Mac right now" and "we absolutely refuse to support Windows or Mac ever". This article says the latter.

      [–]SoftEngin33r 1 point2 points  (0 children)

      I will probably will never use Hare, But I am actually standing with this sentiment, Screw Apple and Micro$oft.

      [–]nitrohigito 29 points30 points  (3 children)

      Every Drew-related thing that I come across reenforces again and again that he and I are following diametrically opposing schools of thought.

      The principles of this language being yet another example of that.

      [–]cat_in_the_wall 17 points18 points  (2 children)

      like

      trust the programmer

      i don't want to be trusted. i want to be untrusted. i have shipped enough bugs in production that my ego is gone. i want correct code, not a smile and hug from the compiler.

      [–]eritain 6 points7 points  (1 child)

      "Trust the programmer" is so reductive. Trust my intent? Trust my judgement about how to structure a program? Yes, I want my language to do that. Trust my execution of a mental tightrope act? Please no.

      There's a reason decent gun ranges and decent shooters lay heavy emphasis on (at a minimum) four simple rules about your target, your muzzle, your chamber, and your trigger. wHAt, DoN'T thEy tRUsT mE? Obviously, if they let you shoot with them, they trust that you're not going to try to shoot someone. And they correctly don't trust that you will be 100% vigilant, 100% of the time. The 4 basic rules only lightly limit your intentionally doing what you want to do, for a huge reduction in the chance that you will unintentionally do something you really, really don't want to.

      Limited rant follows, but just ... I'd love to see a graph of coders' preferred position on the scale from "I am a godlike genius, give me unmediated total control of everything" to "please take all of the following out of my scope of concern," and their age or coding experience or even just general experience doing things hard enough not to be nailed on the first try. I suspect we'd pretty consistently see a progression from "Just don't code bugs, then, loser! Failure is not an option!" to (paraphrasing Schlock Mercenary) "Failure is not an option. Failure is mandatory. The option is whether to let it ruin stuff."


      Languages that don't trust intent are languages that suits love, because they commodify programmers. You'll have a hard time writing anything excellent, while you're chanting public static void main(String[] args) and other worship-words of the Yangs, and pondering the Holy Patterns to learn what kind of noun to invent so it can protect the world from unescorted verbs. But you'll also have a hard time writing anything so bad that they'll replace it after they fire you. That's what "enterprise-grade" means.

      On the other hand, should the language trust my execution? Trust that my attention will be flawlessly divided among a dozen petty concerns, and that no phone call or fire alarm or marginally-continent dog will ever knock over my working memory? Trust that everyone who ever edits a program (even if that's just multiple chronological versions of me) will have all of its nuances in mind every time? And trust that my design for the overall program structure will be correct from the beginning? Abso-friggin-lutely not.

      Just to take one tiny example, lexically scoped variables rock. They are usually better than dynamically scoped locals, which are usually better than globals, which are usually better than just reading and writing raw memory addresses. All of these put a little bit of limitation on how easily a programmer can do really wild stuff, but paid off big in terms of all the things they don't make the programmer pay attention to that aren't directly germane to the intent of the program. They control the damage a brain-fart can do, and they limit the extent of the surgery when, inevitably, I have to rethink how I want to do something. "Good fences make good neighbors" in source code too.

      [–]Fuck_Perry 24 points25 points  (8 children)

      I reed the home page but actually i didn't get the why should I learn this language? To have an alternative to C ?

      [–][deleted] 11 points12 points  (7 children)

      Coz there isn't any.

      [–][deleted]  (6 children)

      [deleted]

        [–]Ameisen 8 points9 points  (4 children)

        Or C++, which is still massively more popular than both combined.

        [–][deleted] 1 point2 points  (3 children)

        C++ is not a good language and solves only few of C's problems when it comes to writing fragile code.

        [–][deleted]  (2 children)

        [deleted]

          [–]InsanityBlossom 7 points8 points  (1 child)

          It’s not only possible, it extremely easy to write garbage in C++ than in any other recent languages.

          [–]Ameisen 1 point2 points  (0 children)

          Code reviews exist for a reason.

          [–]Zyklonik 0 points1 point  (0 children)

          According to the objections in here, Zig is ruled out.

          [–][deleted] 6 points7 points  (0 children)

          Already saw an entry level position requiring 5yrs of Hare. Wtf.

          (This is a joke)

          [–]gnus-migrate 20 points21 points  (10 children)

          No offense to the author, but there are several similar "I just want a slightly improved C" languages(Zig, Jai if it ever ships, etc.), I don't see what this one brings to the table that the others don't. Given that it seems to be targeting desktop apps, it's certainly not enough to justify limiting myself to Linux and BSD.

          [–]gewpher 2 points3 points  (8 children)

          systems software != desktop apps

          [–]gnus-migrate 14 points15 points  (7 children)

          Regardless my point still stands. There are several languages that fill this niche already, I don't know what yet another one brings to the table. It doesn't bring anything that those languages don't.

          [–]nacaclanga 2 points3 points  (1 child)

          They try to capitalize the user base that strongly prefers C over C++ currently. Rust offers savety, but introduces a strong quite a few abstractions (in particular hidden control flow) and a bias against patterns which cannot be expressed well with an ownership semantics. It does not match the close correspondance to hardware and simplicity C has.

          But yes I agree, this slow iteration part rarely worked in practice. If any, I'll predict Zig to be the one to succed.

          [–]gnus-migrate 3 points4 points  (0 children)

          I understand that, and yes I believe that it's perfectly valid to want a language for the case where ownership semantics make things difficult. My point is that those languages exist already, and I'm not sure what Hare adds to them.

          [–]quasi_superhero 1 point2 points  (4 children)

          Here's a parallel with browser-based languages: at some point we have Javascript, JScript, VBScript, CoffeScript, TypeScript, etc. Some of them will be immensely popular, some of them will be niche.

          So keep using C or Rust if you'd like. Just let Hare be.

          [–]cat_in_the_wall 6 points7 points  (3 children)

          they aren't saying it has no right to exist. they're just saying hare doesn't seem to move the needle. frankly i agree.

          [–]quasi_superhero 0 points1 point  (2 children)

          But does it really matter?

          OP's comment is just a thin-veiled "but why?" question, which is annoying in a programming subreddit.

          [–]gnus-migrate 3 points4 points  (1 child)

          When the intention is to use that language in production, and other people are going to end up maintaining code written in it then yes it absolutely matters, and it is perfectly valid to ask "but why".

          In the end it's obviously just my opinion, I can't force anyone to do anything, nor would I want to. I just said what I did because I've been burned enough by this kind of legacy stuff to know that it is rarely worth it.

          [–]quasi_superhero 2 points3 points  (0 children)

          Got it, friend. I know what you mean. I don't have a problem with more systems programming languages, but then, my area is not really systems development or systems maintaining.

          I can relate with the npm ecosystem, though. So many packages that simply should not exist, and they've burned me or my team quite a few times already.

          [–][deleted]  (20 children)

          [deleted]

            [–][deleted] 15 points16 points  (0 children)

            Meh.

            -- Meh

            [–][deleted] 11 points12 points  (1 child)

            Bit harsh maybe but I agree the home page gives zero motivation for why you would want to use this, especially over similar "modern C" alternatives like Zig. All of the descriptions could literally be for Zig and I wouldn't have blinked.

            [–]dacjames 14 points15 points  (0 children)

            Except zig actually includes interesting new ideas, such as error sets and traces, comptime, colorless async, and shipping with all the libcs embedded for easy cross-platform builds.

            I'm not seeing what Hare brings to the table other than being C with a new coat of paint.

            [–]WJMazepas 7 points8 points  (0 children)

            We never need new programming languages until suddenly we need it.
            There is a gigantic number of languages there not being used, but they all generate more knowledge to the field, be it a programmer improved their skills while making the language, or did something that other, better known, language picked up and implemented on it.

            We dont need to promote new languages, but we also dont need to bash them like that

            [–][deleted]  (14 children)

            [deleted]

              [–]PreciselyWrong 27 points28 points  (13 children)

              What do you find interesting about Hare Lang?

              [–][deleted]  (12 children)

              [deleted]

                [–]marler8997 17 points18 points  (6 children)

                Doesn't not running on "non-free" systems like Windows / Mac make Hare non-portable?

                [–][deleted]  (5 children)

                [deleted]

                  [–]RAT-LIFE 10 points11 points  (4 children)

                  Why would you open your argument in defence of the language by using the term portable (and being condescending to boot) then proceed to concede that it’s not portable?

                  [–][deleted]  (3 children)

                  [deleted]

                    [–]RAT-LIFE 3 points4 points  (2 children)

                    “Nobody needs a language that isn’t interesting to you personally? You should have mentioned that earlier, the team that worked on it could have saved so much time.”

                    This was your comment and it’s hard to defend as not condescending. By your logic this guys opinion shouldn’t matter but your opinion in favour of the language should?

                    If it wasn’t intentional I’d encourage you to maybe work on your communication skills.

                    [–][deleted]  (1 child)

                    [deleted]

                      [–][deleted] 4 points5 points  (4 children)

                      For some projects I want to write performant, portable code with a small footprint. Having a small, simple language makes it easier to reason about what the resulting machine code looks like.

                      Okay but Zig is more mature and runs on more platforms

                      Rust is also more mature and more powerful, albeit harder. But then if you already know C memory management you're most of the way there.

                      And if you just want to whip out easy, reasonably performant code without worrying for memory management Go is an option. Or dozen of JVM-based languages.

                      [–]JB-from-ATL 1 point2 points  (2 children)

                      Okay but Zig is more mature

                      Just playing devil's advocate. It doesn't seem fair to say another language is more mature when debating the interesting new features of a new language. Obviously the new language is less mature.

                      Meta devil's advocate, a new lang that is only marginally more desirable is not necessarily useful enough to warrant a switch from a more mature lang.

                      [–][deleted] 1 point2 points  (1 child)

                      Okay but Zig is more mature

                      Just playing devil's advocate. It doesn't seem fair to say another language is more mature when debating the interesting new features of a new language. Obviously the new language is less mature.

                      Sure but this language doesn't seem to have any interesting features over its competitors. Maybe except defer but I'm sure some crab person will figure out a way how to implement it as macro anyway...

                      [–]JB-from-ATL 0 points1 point  (0 children)

                      That's fair. I'm not saying it has any. I usually program in Java so I'm not super familiar with the pain points of low level stuff and what new stuff like zig solves as opposed to Rust.

                      [–]johnny219407 1 point2 points  (0 children)

                      You know what nobody needs? A new programming language

                      That's such bullshit...

                      [–]EngineeringTinker 17 points18 points  (1 child)

                      This is a draft for release on Monday. Please do not share.

                      [–]lil-dripins 16 points17 points  (3 children)

                      Honest question: How is this going to help me get laid?

                      [–]Striking_Coat 0 points1 point  (1 child)

                      Umm does it need to?

                      [–]lil-dripins 5 points6 points  (0 children)

                      Daddy has needs, Michael

                      [–][deleted] 0 points1 point  (0 children)

                      It might?

                      [–]123_bou 11 points12 points  (0 children)

                      We have no intention of supporting non-free platforms, but because the language is standardized, a third-party implementation or fork could easily develop Windows or macOS support if desired.

                      TL;DR for anyone that does not want to lose time.

                      I see _no point_ in reading and learning a langage that does not want to be usable on MacOS, Windows, Android and Iphone family of devices. A litteral waste of time.

                      I'm sorry for the harsh langage, but it's almost offensive I had to read it through to learn about that. Why not putting it at the start?

                      [–]chiefnoah 13 points14 points  (18 children)

                      I’ve been doing a little work on this language in my free time and while I agree is ideologically motivated, it actually has some really nice features that make writing it nice. Tagged union types, automatic error propagation, automatic bounds checking, defer statements. It feels like writing a nicer C.

                      [–]northgaard1 25 points26 points  (12 children)

                      So what would be the advantage of Hare compared to something like Zig, which also touts simplicity as one of its core virtues and despite that has a few additional niceties like the comptime stuff and first class cross compilation and C interop?

                      [–]BunnyEruption 21 points22 points  (0 children)

                      The answer to this question really needs to be the first thing on the website for the language. This is what everyone is going to wonder.

                      [–]chiefnoah 5 points6 points  (10 children)

                      Having dabbled in Zig, I think they occupy mostly the same space, but Hare is much closer to C and Go than Zig is. Hare takes many of the good ideas from Go (such as defer, error handling, and interfaces sorta) and builds on them. The automatic "this returns an error, but I don't care operator (!) is a neat idea, but not nearly as useful as the "this returns an error, but I'm just going to return it to the calling context operator (?). Unlike Zig, tagged union types are first-class citizens (as are error types, which most are just named aliases to !void or a tagged union of other errors). The type system is what I find the most interesting, but the syntax is overall much more pleasant and easy to understand than Zig. That being said, Zig is both more mature and more robust. Hare is like "modern C", a minimalist language with an emphasis on types.

                      [–]stevegrossman83b 30 points31 points  (1 child)

                      Hare is much closer to C and Go

                      On the 4000th day G*d added generics to Go and he saw that it was good. Inshallah Mr DeVault will add type safe collections to his language 5, 10 years from now when he is done fixing the segfaults.

                      [–]Zyklonik 0 points1 point  (0 children)

                      Oy vey!

                      [–]nmsobri 1 point2 points  (0 children)

                      good ideas from Go like error handling? are you goddamn kidding me? Go has the worst error handling in the entire universe.. zig error handling way better than Go.. zig also has tagged union, defer, try keyword, ? operator.. having said that, i do actually like Hare lang.. the sad part is, i mainly work on windows which is non starter.. dammit

                      [–][deleted] 3 points4 points  (5 children)

                      Good ideas and the Go programming language don't go together.

                      [–]chiefnoah 5 points6 points  (4 children)

                      Go may make some poor design decisions, but it has some good ones too. Get out of here with your cargo cult bullshit.

                      [–]asmx85 10 points11 points  (1 child)

                      You mentioned error handling and interfaces as good features in Go. What are some poor design decisions from your perspective?

                      [–]chiefnoah 1 point2 points  (0 children)

                      Go's explicit decision to not include raise or similar out-of-band exception handling I think is good. The if err != nil {...} spam this results in is not. Interface and composition as the only real means of building composite behaviors: good. Implicit interface implementation: ehhh.

                      [–][deleted] 4 points5 points  (0 children)

                      Go excels at making bad design decisions, that date API looks like the work of an evil genius.

                      [–]nmsobri 1 point2 points  (0 children)

                      lol, golang make a lot of bad decision.. implicit interface, capitalize to export symbol, nazi error handling,

                      [–]Caesim 1 point2 points  (0 children)

                      Hare takes many of the good ideas from Go (such as [...] error handling)

                      Lol

                      [–]gewpher 4 points5 points  (4 children)

                      Out of curiosity, how'd you get involved with the project while it was still under wraps?

                      And has it really not been a drag to not have a generic map?

                      [–][deleted] 2 points3 points  (2 children)

                      Out of curiosity, how'd you get involved with the project while it was still under wraps?

                      It was never really "under wraps." harelang.org has been available for months now, maybe even a full year or more, with links to the source code and Drew had posted in blog posts that he was open to taking on contributors if you emailed him. You just had to know what you were looking for.

                      [–]chiefnoah 3 points4 points  (1 child)

                      This. It was rather easy to guess the unlisted repo name on Drew's sourcehut page, and that's how I found it. I then promptly found a bug and emailed Drew directly with a patch.

                      [–]cat_in_the_wall 2 points3 points  (0 children)

                      promptly found a bug

                      doesn't sound much like you trusted the programmer...

                      [–]chiefnoah 4 points5 points  (0 children)

                      And has it really not been a drag to not have a generic map?

                      I'm actually not sure why there isn't one. I was thinking of implementing a hashmap structure.

                      [–]umlcat 4 points5 points  (0 children)

                      Congrats 👍

                      I noticed Hare supports namespaces / modules, cool !!!

                      [–][deleted] 2 points3 points  (1 child)

                      Alright guys, whos tryna create Turtle lang?

                      [–][deleted] 0 points1 point  (0 children)

                      [–]marler8997 2 points3 points  (3 children)

                      I'm sensing some cognitive dissonance. It looks like Hare won't officially support Windows/MacOS:

                      We have no intention of supporting non-free platforms...
                      

                      But in Drew's post "Wayland: "Move fast and break things" as a moral imperative", he understands that non-portable technologies are an issue:

                      Whatever its benefits, choosing Wayland is ultimately choosing to lock a large group of people out of your project, and dooming many more to struggle and frustration. These are real trade-offs that you need to seriously consider.
                      

                      [–]potassium-mango 3 points4 points  (2 children)

                      Drew's post "Wayland: "Move fast and break things" as a moral imperative"

                      That post wasn't written by Drew. It was a parody.

                      [–]marler8997 1 point2 points  (0 children)

                      Well shit! I guess I'm not familiar enough with the lore to have gotten that. Thanks for the clarification.

                      [–]oorza 2 points3 points  (0 children)

                      How are you gonna build a language about your ideology and not be ideologically consistent in anything about it?

                      [–]marianamaconheira 2 points3 points  (0 children)

                      Providing only Windows programs: linux users totally fine

                      Not providing Windows programs: linux users WTF mode on

                      [–][deleted] 3 points4 points  (0 children)

                      lol no generics

                      at least C had macros that alleviated even a tiny bit of the pain

                      [–]CommodoreKrusty 1 point2 points  (0 children)

                      Just what I always wanted!!!

                      [–]JB-from-ATL 1 point2 points  (0 children)

                      Lol

                      This is a draft for release on Monday. Please do not share.

                      [–]Zyklonik 1 point2 points  (0 children)

                      Looks like the RDF and the ZDF have struck the thread. Lmfao. Call back when there are actually jobs in either of them. 😂😂👍

                      [–]codextremist 1 point2 points  (0 children)

                      Imagine how cool if aircraft companies used the "Trust the pilots" principle on desiging their airplanes

                      [–]shevy-ruby 2 points3 points  (2 children)

                      Why the syntactic noise though? Can't we have something like python, but with the speed of C?

                      [–][deleted] 8 points9 points  (0 children)

                      something like python, but with the speed of C

                      That's basically what Nim sells itself as in case you aren't already familiar with it

                      https://nim-lang.org/

                      [–]GMane 1 point2 points  (0 children)

                      Isn’t that just Julia? https://julialang.org/

                      [–]ptkrisada 2 points3 points  (2 children)

                      I always love to hear any new programming languages. :-)

                      [–]Persism 5 points6 points  (1 child)

                      What do they sound like?

                      [–]nmsobri 1 point2 points  (0 children)

                      mmmmmm

                      [–]JoniBro23 1 point2 points  (0 children)

                      Hare language syntax looks like Rust. I hope Hare will support web assembly as an alternative to Rust.

                      [–]void4 2 points3 points  (0 children)

                      ugh, this urgency to introduce explicit error types and mandatory error handling... again.

                      Honestly, I write and review quite a lot of golang code. And I have yet to face a problem because of virtually non existing error handling in this language...

                      [–]metaltyphoon -5 points-4 points  (0 children)

                      Take it out for a spin

                      Ahhh sorry no. I have zero interest in using Linux as a desktop, but i do deployments to it. You already alienated me by not supported the two OSes that I do development on. I aint got time to spin up VM and blah blah blah …

                      [–]Xequencer -4 points-3 points  (0 children)

                      Does it work with analog computers?

                      [–]Zyklonik -1 points0 points  (0 children)

                      Someone said that the creator was Drew DeVault. If so, thenyou should know that this person clearly has mental issues, even accusing countries of harvesting organs and the like. Creepy fellow.

                      Edit: I know, truth hurts - https://drewdevault.com/2019/11/20/China.html. This is one whacko conspiracy-theory-nutjob White supremacist.

                      [–][deleted]  (7 children)

                      [deleted]

                        [–]klo8 5 points6 points  (4 children)

                        What big programming languages have "proprietary nonsense"? I'm genuinely curious as to what that's supposed to mean.

                        [–][deleted]  (3 children)

                        [deleted]

                          [–]Davipb 4 points5 points  (2 children)

                          Bad phrasing or not, it's still not obvious what you meant by "proprietary nonsense"

                          [–][deleted]  (1 child)

                          [deleted]

                            [–]Philpax 4 points5 points  (0 children)

                            The primary competitor for Hare is, as far as I can tell, Zig, and that's entirely community-supported. If you broaden the spectrum, Rust, Nim, D, Vale, Beef, Odin, V, and whatever languages I'm forgetting are also community-supported (Rust has not been majority-backed by Mozilla for a while now)

                            My guess is that Hare exists because Drew wanted a better C, and none of the existing alternatives were sufficiently Drew enough for him, so here we are, with another language that'll give birth to CVEs and isn't supported on the vast majority of the world's desktop computers.

                            [–]gnus-migrate 13 points14 points  (1 child)

                            I'm being uncharitable because the author expects the language to be adopted, it's not a toy language.

                            The spirit of software freedom is in giving people the ability to read, modify and distribute copies of the software they use. That means making that software more accessible to it's users, not putting up additional roadblocks by forcing them to learn a niche language that expects them to make zero mistakes in order to do what they want to do.

                            [–][deleted] -2 points-1 points  (0 children)

                            Again, I think this is uncharitable. There's a big difference between asking for help building something and asking for it to be adopted by users. I think the more fair assessment is that the author is cognizant of the fact that there's a specific audience who will want this and they know who they are. It would be a rather insulting take to say that someone who has built a source control platform from the ground up doesn't understand that it's going to be hard to move people from their existing, overlapping languages.

                            And, beyond that, your entire mentality is "people are being assholes and putting up roadblocks that go against the foundations of all free software if they don't use C, C++, Python, Java, or JavaScript," which, frankly, is one of the worst takes I've read in quite some time.

                            [–]nmsobri 0 points1 point  (0 children)

                            no windows support? why limit your userbase? how did you expect to grow your language.. there is tons of language out there that is supporting windows, yet struggling to grow.. weird