Announcement

Collapse
No announcement yet.

Futhark: A Pure, Functional Language For GPU Computing

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #21
    Originally posted by smitty3268 View Post
    You could say the same thing about any turing complete language. If you don't think Rust is unique enough to exist, then I'm not sure what you do think is appropriate. C, Haskell, maybe Python and nothing else?
    I understand your point but I wouldn't say it's that simple. I do feel that most languages don't really have a good reason to exist [anymore] (including many ancient ones that are effectively obsoleted, like Perl), but there are plenty that are distinct in a way that can be advantageous depending on your usage. For example, even though I don't like Java, being a runtime machine makes it pretty interesting and useful, where it's kind of a hybrid of compiled and interpreted code. Coding in Java to intentionally take advantage of this trait is a bit niche, but it does have its benefits that may not be so easily accomplished in other languages. As another example, PHP could easily be replaced by Perl, Ruby, or Python, but it was built with web servers and less-experienced programmers in mind, where it's quick to get going, easy to understand, and has a lot of integration that other languages would be burdensome to deal with. Functionally, PHP is useless (arguably, it's even bad), but in practice it's very useful. There's also shell or batch scripting, which has many distinct advantages and disadvantages over interpreted languages.

    In other words, it's not so much that I dislike Rust because it isn't unique enough, but rather it doesn't have enough advantages over alternatives. For me personally, I like things to have distinct purposes, and Rust's just doesn't seem distinct enough. It doesn't offer anything that people have been asking for for years. If anything, it just encourages lazy programming.

    Comment


    • #22
      Originally posted by carewolf View Post
      C++ is the most used language on embedded platforms.
      In safety-conscious application areas (e.g. automotive), there are standards for permitting C code to be used, but not C++.

      Comment


      • #23
        Originally posted by carewolf View Post
        What in God's name are you blathering about? C++ is the most used language on embedded platforms.
        I'm not sure if we're referring to the same definition of embedded, or it could just be my experience with them was about 3 months. I'm referring to MCUs where you can have an 8-bit processor and no OS like RTOS. It's been a while but I recall not being able to use C++ libs that I'd find online for speeding up development either because some features that were used in the lib would not work/compile for the hardware I had or the file size was too large due to the much more limited resources. At the time Rust still wasn't quite there for embedded so I used C and loathed it. Much of that pain I experienced with C I could have avoided with the language/syntax features of Rust. There is not many languages that would work on embedded platforms, some were developed to cater to the niche like running lua or python but they had their own problems/limitations.

        For some insight from others as well, see https://www.quora.com/Why-is-C-used-...bedded-systems

        Faster, Simpler and the output file is smaller.

        keep in mind most of the C++ advantages over C can’t be used on a 8-bit MCUs probably 16-bit too so, there is no need for the overhead.
        A common question, here and elsewhere. Is C++ suitable for embedded systems? Microcontrollers? RTOSes? Toasters? Embedded PCs? Is OOP useful on microcontrollers? Does C++ remove the programmer t...


        In my experience, C++ is usually ill-suited to small embedded systems. By which I mean, microcontrollers and OS-less devices.

        Many C++ OOP techniques rely on dynamic memory allocation. This is often missing in small systems.

        STL and Boost really demonstrate the power of C++, both are huge in footprint.
        I used Arduino at one point and I think this uses a little C++ but was still limited, you mostly had to write C. ARM has their mbed platform that seems C++ oriented, I didn't have the time to delve further into that(limited C/C++ experience), it seems to be growing in popularity and being pretty useful if you've got more recent hardware with 32-bit ARM MCU to work with. Lot of nice libraries to make development easier.

        Still I would prefer Rust, if Rust can later support C++ interoperability better then perhaps it could leverage mbeds libraries and I'd be really happy with that. Likewise I prefer modern javascript over python or ruby, it's come a long way since ES5 and is a joy to work with. I'm not a big fan of Java, but like Lua and C#. Some languages are going to have overlaps, but I'm happy we have the variety to choose from like we do within Linux ecosystem. At a broad view they may appear the same and little reason to have multiple languages, our biases would say otherwise though?

        Comment


        • #24
          Originally posted by schmidtbag View Post
          In other words, it's not so much that I dislike Rust because it isn't unique enough, but rather it doesn't have enough advantages over alternatives. For me personally, I like things to have distinct purposes, and Rust's just doesn't seem distinct enough. It doesn't offer anything that people have been asking for for years. If anything, it just encourages lazy programming.
          Made a slight mistake with my last post, the end of it was meant to be targeted at you :P Rust makes certain development more accessible/friendly to me to work with. It's features pickup on any mistakes I might make far better than C was for me, it also allowed me to use certain features that C did not support directly. So from someone who's a bit spoilt using mostly dynamically typed scripted languages, Rust is far nicer over C on embedded hardware with no OS and limited resources. I love what Cargo brings, the much nicer to read documentation and live example snippets that can be run in the browser(yes there are plenty of C/C++ REPLs too, it's just nice that this is embedded into the official documentation), easy testing of packages/libraries.

          Comment


          • #25
            Originally posted by schmidtbag View Post
            See, this is what people should be working on - we need to see things that take advantage of existing languages and ABIs/APIs, rather than find a slightly varying (yet backward-incompatible) approaches that just add unnecessary fragmentation. If this was "yet another standalone language+compiler to write GPGPU applications" I'd be pretty annoyed.

            I'm tired of seeing languages pop up that could easily be replaced by a library for another language (like Vala), or languages that seem to have no advantage over any other except a well-made compiler (like Rust or Go), or languages that will likely never see any real-world adoption despite their ambitions (like Dart). I don't really like languages that are platform-specific either (like Swift) but at least they have specific benefits that other languages may not offer for their specified platform.
            The ideas and time spent developing these languages could've been used to improve existing ones. One of the reasons I like Python is because instead of people trying to create their own slightly tweaked version of it, people write their own interpreters for it instead. Different interpreters have different pros and cons over alternatives, so it allows people to stick with what they know and/or use the same code they've always been using, but can completely change the outcome of their programs. In other cases, some people write their own libraries that act as better or more advanced alternatives to the stock ones. This just makes life easier and keeps the community strong and growing.
            </rant>
            Though i violently disagree with your belief regarding rust, i think your statements about go/vala make sense (if you hadn't said swift was platform specific i would've added that to the list --- swift 3.0 was a big step towards making Foundation cross platform).
            js has taught me that you can cover up language ick with transpiling. With that in mind, as long as you don't stray from the intents of the language (once transpiled, it should be, roughly idiomatic $targetLang) you can find the language that offers the features you need and create a nice overlay. Yes, vala is that for C...sort of...but it REALLY shouldn't have been written on top of C (they did it backwards by implementing more features in the source language than the target language natively supports), rather, they should've gone with gobject mono (i know the some of the restrictions they had, but if you want c#, and it's actually available for your platform, you have to pay the price).
            ​​​​Regarding futhark, I'm pretty excited, but i don't know how they are going to map a functional calculus to an (implicit) state machine.

            Comment

            Working...
            X