Announcement

Collapse
No announcement yet.

Leaf: A New "Soon To Be Great" Programming Language

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

  • #21
    Originally posted by YoungManKlaus View Post
    Apart from a bulky syntax for declaring typed variables ("var a : integer 32bit") and nullables ("optional" - compare that to C#'s "int?") nothing noteworthy pokes me in the eye yet...
    Oh man, that sounds horrible. It's like a strain injury waiting to happen (from all the superfluous typing, you see).

    On the other hand, if it provides some good default macros that shorten those to something reasonable ("int32" sounds good), then I don't see it as much of a problem. C has "unsigned long long int" too but you can shorten it to "uint64_t" so it's all right.

    Comment


    • #22
      Originally posted by Detructor View Post
      well, the combination of code suggestion, the easy access to MSDN (just press F1 on a keyword/method and you get the definition), the extension system, viewing 3rd party assemblies (it's namespaces/methods), just clicking a small button and a missing using statement is added and the (for the most part) useful error messages make it an awesome IDE. And while Eclipse has a similiar extension system, the IDE itself feels just...unprofessional...interestingly I get the same feeling when seeing/using a KDE desktop, but not with Gnome. I get it on Windows XP, Windows 8, Apple's operating systems and Xfce but not on Windows 7. I guess I'm just weird.
      I've found that Vim actually comes quite close to being as powerful an IDE as Visual Studio, when programming Python (and presumably other languages with the requisite plugins).
      • code suggestion - ctags
      • the easy access to MSDN - pyref
      • the extension system - there are more plugins for Vim than for Visual Studio, although they're limited by the textual interface (unless you keep them in their own windows)
      • viewing 3rd party assemblies (it's namespaces/methods) - ctags
      • just clicking a small button and a missing using statement is added - as far as I'm aware there's no plugin for this, but it probably wouldn't be hard to write one
      • the (for the most part) useful error messages - pylint


      Obviously you'll still want something else if you're designing GUIs (I'm quite fond of QtCreator for this), but Vim is extremely powerful with the right set of plug-ins. That said, it's definitely a DIY approach to an IDE and combined with the steep learning curve, I can understand why most people don't use it.

      Comment


      • #23
        Originally posted by Detructor View Post
        as a software developer I don't care much about how 'great' or 'hipster' a programming language is. The important things are: Is the documentation useable and how good are the available IDEs. And as long as there is nothing that comes even remotely close to Visual Studio in combination with the MSDN, it's not worth it to discuss the language.
        Visual Studio is a piece of crap and a waste of my time. There's nothing normal about lock ups, freeze ups, glitches, large debug/meta data files, false positive red squiggly lines, inability to find template definitions, 15 minute link times, needing plugins because features that should be there aren't, or the numerous standards-violating handling of templates.

        And don't even get me started on TFS (also a piece of crap and a waste of time).

        Comment


        • #24
          I can understand you sometimes have to break conventions to improve, but you should have a good explanations as to why you're doing so. From the examples shown on the webpage, I get the feeling Leaf breaks many conventions, all in the wrong places. I mean, what's wrong with if, why do they feel the need to call it do? How is "do x be less than y" better than "if x is less than y"?

          The variable declarations are overly wordy (when you're not using type-inference), and they seem to make up for it by using things like the pipe-character to mean "else", instead of say simply using else. I feel it doesn't really add to the language's readability and also breaks with most other languages where a pipe is a binary-or and a double-pipe is a logical or.

          I mean, sure it's nice you can write
          var a = [ 1, 2, 3 ]
          var b = [ a, [ 5 ] ]

          instead of
          var a = new List<List<int>>(){ { 1, 2, 3 }, { 5 } };

          But I think type-inference for things like this can easily get out of hand since you never truly know what a and b. I mean, I can assume they're arrays of integers but sneak a ".3" in there somewhere and suddenly it's an array of floats or doubles. By the way, how would I go about explicitly declaring the variable type for b in Leaf? Something like "b : array of array of integer 32bit"?

          One other thing they haven't shown so far is loops like for and while. Guess they're still trying to come up with fancy new names...

          Originally posted by Leaf in Launchpad
          Leaf is the language we always wanted. Drawing from a half century?s worth of collective knowledge, Leaf incorporates the best ideas into a unified whole. A language with the willingness to rebuild everything and examine the deep foundations of every issue.

          All programmers will feel at home with Leaf.
          Wow... they sure are awfully sure about what they're doing. And no, so far I'm not feeling "at home" going from the examples they've shown. Hm, a handful of examples, big words, a professional looking webpage... could you be a start-up in need of a sponsor? Are you trying to be bought for a few millions so you can sit back and laugh at the investor trying to capitalize on their useless investment? All of the stuff surrounding the language looks far too professional to be the work of a lone developer.

          Comment


          • #25
            If there's one thing the world needs, it's more programming languages!

            Comment


            • #26
              Originally posted by Wildfire View Post
              I can understand you sometimes have to break conventions
              They're not really breaking conventions, they're just using Pascal-like syntax. Apart from the if=do thing, which doesn't make sense any way you cut it...

              The type declaration syntax is straight from pascal, though. Pascal was always a wordy language, it was designed to be a sort of advanced basic, a language for learning programming. If this language aims to do the same, then the wordiness at least makes sense on some level.

              But personally I have to sort of question the idea of using a language like this for teaching programming... isn't it better to just teach the languages that are actually used right from the start?

              Comment


              • #27
                Originally posted by dee. View Post
                They're not really breaking conventions, they're just using Pascal-like syntax. Apart from the if=do thing, which doesn't make sense any way you cut it...

                The type declaration syntax is straight from pascal, though. Pascal was always a wordy language, it was designed to be a sort of advanced basic, a language for learning programming. If this language aims to do the same, then the wordiness at least makes sense on some level.

                But personally I have to sort of question the idea of using a language like this for teaching programming... isn't it better to just teach the languages that are actually used right from the start?
                Yeah, I was reminded of that, I did use Pascal back in school (or had to). Our teacher was a big fan, because "x := 1" is "more correct" than "x = 1" in a semantic kind of way...

                As far as learning to program goes, I guess picking a simple language does help (but really, Java or C# aren't that bad in this regard). What's far more important than language is developing the right mindset, problem solving skills, deduction, algorithms, etc.

                Comment


                • #28
                  Driver language?

                  I would prefer a functional language compiling to platform specific C code for making device driver writing portable and easier.

                  Something like OCaml but for drivers. Write once generate everywhere. Probably it would be a DSL but it should allow true portable device drivers.

                  And why not?

                  The specifications do not mandate an OS and in the majority of cases not even a specific CPU architecture. Imagine a program that generates C code for a USB stack in different OSes like minix3/reactos/illumos.

                  Moreover it could hook via C to natural semi cross-platform specifics. Like import opengl.kms or import sound.alsa and so on. These things are cross-platform.

                  I do not see why something like that cannot happen. Even if performance is a concern it could co-exist with natural platform drivers. But in principle one could write specific hooks in his hobby/professional/research kernel user/kernel space like client/server and have crossplatform kernel/user space management of the device. Do not have a driver for your windows box or minix3 box?

                  Download the programs / generate and compile.

                  One should also be the ability to verify. For example one could simulate hooks in software and verify the driver in his IDE in user space.
                  Moreover the impendance matching from specification to driver should be also minimized and for this reason it should be fairly high level (the code generation should find a performant solution). Keep in mind that much of the concurrency in specs could be grasped with joint calculus.

                  Do you know of any such effort?

                  Comment


                  • #29
                    On modern windows I think that you have to get your drivers signed by Ms if you don't want to reboot and enable a special boot flag only for this purpose. And I'm pretty sure ALSA isn't on OSX.

                    Comment


                    • #30
                      No chance as for me

                      Disclaimer: As a compiler writer myself (somewhat) I can say that even as my project (in which I do believe in) does not have a clear (good) future, I think Leaf will also not have it either.

                      The reasons are basically: marketing, frameworks, tools, support, scientific papers.

                      Marketing:
                      - languages like C#, Go, Java, and even Python and Ruby they surged when they were really heard everywhere. Phoronix means some exposure, but if is not Apple, MS, etc. or another company is a dead start
                      - marketing itself is circular: people using the language L (no pun intended) even they are happy with it they cannot change already set mindsets that C++ is the best language, Java is the best language, Python is ... etc. When the manager hears about this L language, he doesn't understand know it, and he will be afraid to invest in it

                      Frameworks:
                      - there are many clean languages (Ruby, Python, or D comes first to mind) but without frameworks they are not mainstream or not enough mainstream. If you have to make an application with an window to get some data to fill a form, people don't care if is ugly XML + C++ (Xaml and C++ for example, or ObjectiveC + UI Builder) as users don't care about the language. Not having web/UI frameworks do not justify anyone to start using any language for real work int he first place

                      Tools:
                      - a syntax highlighting fixes typos at least
                      - code completion can expose a different API than we usually go

                      Support:
                      - let's say I like the language, and tomorrow I am sure that my project will be written in Leaf. I start implementing, and after 2 months, there is an "in-production bug" and there is just one person that can fix it (the maintainer). But the maintainer is busy with a new syntax to write a mixin. He fixes after a month my bug which I had to work around it and when I updated to LLVM 3.8, everything crashed again. I need this to support iOS 9.0, and the maintainer is too busy because the fix for the first bug gives a performance regression in parsing mixins. After another three months the bug is fixed. But I lost the opportunity window of the iOS 9 launch

                      Scientific papers:
                      - some languages do succeed "through the back door". Languages come and go, but a theoretically powerful language can get acceptance at least for a class of problems. Leaf doesn't seem to be this language for now. I looked for any papers supporting Leaf and are not so many to be found.

                      Comment

                      Working...
                      X