Slashdot Mirror


Tao3D: a New Open-Source Programming Language For Real-Time 3D Animations

descubes (35093) writes "Tao3D is a new open-source programming language designed for real-time 3D animations. With it, you can quickly create interactive, data-rich presentations, small applications, proofs of concept, user interface prototypes, and more. The interactivity of the language, combined with its simplicity and graphical aspects, make it ideal to teach programming.

Tao3D also demonstrates a lot of innovation in programming language design. It makes it very easy to create new control structures. Defining if-then-else is literally a couple of lines of code. The syntax to pass pass blocks of code to functions is completely transparent. And it is fully reactive, meaning that it automatically reacts as necessary to external events such as mouse movements or the passage of time.

The source code was just made available under the GNU General Public License v3 on SourceForge [as linked above], GitHub and Gitorious."

158 comments

  1. Most uninteresting by MichaelSmith · · Score: 1

    It looks like an INI file for describing different layers in windows.

    1. Re:Most uninteresting by Anonymous Coward · · Score: 0

      Yea who wants some lame toolkit that could be used to make games and interactive presentations

    2. Re:Most uninteresting by Anonymous Coward · · Score: 0

      Seconded. I'd much rather code in C++ and make high-performance applications instead of using some bloated toolkit. Also, SystemD, and it's getting cold and dark as winter approaches.

    3. Re:Most uninteresting by Dutch+Gun · · Score: 2

      Where did you see an example of the language? The links went to sourceforge (I didn't want to install the package just to see the language) and a marketing video.

      Defining if-then-else is literally a couple of lines of code.

      I'm curious how anyone thought that if/then/else was a difficult enough construct in popular languages such that it needed improving. I mean, it's a couple of lines of code in *any* language, isn't it? Anyone know how this language supposedly improved on the concept?

      The syntax to pass pass blocks of code to functions is completely transparent.

      So, functions are first class data members? Is it weakly typed then, like Lua? In that language, defining a function is just syntactic sugar for assigning a chunk of code to a variable of the assigned name, so you can use it just like any other variable.

      I'm also curious what this particular brings to the table that a library couldn't have accomplished. Learning a new language is a fairly big hurdle for someone to take to develop for a particular platform. Part of the reason I think we have so many computer languages is that programmers simply love writing new languages, not that it really solved any new problem. Nothing wrong with that, but then again, don't expect us to care unless there was a good reason for the new language.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    4. Re: Most uninteresting by Anonymous Coward · · Score: 0

      I'd rather program in a high level language and finish my work twice as fast (and therefore get paid twice as much) while you fool around with pointers just to get a few millisecond speech increase that no one will notice anyway.

      Take that, suckers.

    5. Re:Most uninteresting by descubes · · Score: 4, Interesting

      Where did you see an example of the language? The links went to sourceforge (I didn't want to install the package just to see the language) and a marketing video.

      There are a few code examples in the marketing video. There are several additional examples on the Taodyne web site, but I'm pretty sure it can't take a slashdotting.

      I'm curious how anyone thought that if/then/else was a difficult enough construct in popular languages such that it needed improving. I mean, it's a couple of lines of code in *any* language, isn't it? Anyone know how this language supposedly improved on the concept?

      The idea is that in other languages, if-then-else is a built-in construct. You can't do something similar yourself without hacking the compiler. In Tao3D, if-then-else is a library element like printf in C. So you can change it.

      Let's say you often use a specific kind of for loop. In Tao3D, you simply add the notation you need, and now your code is shorter and more concise. Once you decide that one of the language objectives is that you can extend it yourself and create your own domain-specific languages, it's obvious that a good test for that feature is to use the basic programming language constructs found in other languages, like if-then-else or for loops.

      So, functions are first class data members? Is it weakly typed then, like Lua? In that language, defining a function is just syntactic sugar for assigning a chunk of code to a variable of the assigned name, so you can use it just like any other variable.

      The part that is always verbose in existing functional languages (except maybe Lisp) is how you pass code to another function. For example, in Javascript, you'd pass a callback with 'function() { ... }'. In Tao3D, I got rid of everything but ..., and the language is smart enough to figure things out. This means that you can define a slide by passing bullet points, and it almost looks like Markdown, whereas if I was in JavaScript, I would need layers and layers of code. This particular aspect is detailed in an article called "Storytelling, the web is doing it wrong"

      In Tao3D, you define the notations you want first, you design the (domain-specific) language around your notations second. In existing languages, it's the other way round, the notation is imposed by the language you chose.

      I'm also curious what this particular brings to the table that a library couldn't have accomplished. Learning a new language is a fairly big hurdle for someone to take to develop for a particular platform. Part of the reason I think we have so many computer languages is that programmers simply love writing new languages, not that it really solved any new problem. Nothing wrong with that, but then again, don't expect us to care unless there was a good reason for the new language.

      That's a very good point. The reason for XLR (the language underlying Tao3D) was that we have to invent new languages all the time, not because we like to, but because existing languages are very bad at accepting something that is not already in their DNA. You could not get lambda functions in C++ until the language committee sat around a table, standardized it, and then all compiler vendors had to implement it. But if what you need is for example a notation for symbolic derivative, or a notation for slides, or a notation for a specific kind of for-loop, you are stuck. So progress in programming languages is very slow, because each language adds its own little features, but drops tons of other features that already exist in other languages.

      The idea with XLR was to create a language where the fundamental process was extending the language. And Tao3D is an example of a relatively large scale domain-specific language (specifically around 3D and animations). Most of it is precisely in a library. But you wouldn't know from using it. It feels "native".

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    6. Re:Most uninteresting by Anonymous Coward · · Score: 0

      I think it is a mistake to look at it as a language. You will find this a lot more useful if you think of it as a file format to represent 3D-objects.
      Then you can compare it to other file formats like the one used for povray.

    7. Re:Most uninteresting by narcc · · Score: 1

      In Tao3D, you define the notations you want first, you design the (domain-specific) language around your notations second. In existing languages, it's the other way round, the notation is imposed by the language you chose.

      If by "existing languages" you're purposefully ignoring the countless languages that did this before, like Joy, Forth, Rebol, etc.

    8. Re:Most uninteresting by owl57 · · Score: 1

      I'm really curious not about enumerating prior art, but the opposite: can GP name "existing functional languages" (except JS) which don't have a decent lambda syntax?

    9. Re: Most uninteresting by Anonymous Coward · · Score: 0

      Hahaha, because you're getting paid twice as much if you finish your work twice as fast .... LOL, dream on boy.

    10. Re: Most uninteresting by Anonymous Coward · · Score: 0

      Methinks one has never been a consultant on a fixed-fee project.

    11. Re: Most uninteresting by Anonymous Coward · · Score: 0

      I AM because I am freelancer getting paid by the project. So twice as fast means twice as many projects means twice as much money. Or if I don't want the money that means more time to travel the world or fuck wild bitches or anything else the fuck I wanna do.

      Suck on that, you moronic jizzrag.

    12. Re:Most uninteresting by descubes · · Score: 1

      OK, game on. Give me the syntax for the following in Lisp, Scheme, OCaml, whatever:


      import Slides
      slide "Example",
              * "First bullet point, with seconds: " & seconds
              * "Second bullet point"
              ** "Second level bullet point"
              blink
                      * "Third level bullet point"
              anchor
                      translate mouse_x, mouse_y, 200 * sin time
                      color "white"
                      texture "http://www.planetaryvisions.com/images_new/4128.jpg"
                      rotate_y 20 * time
                      sphere 200

      Things like blink, anchor or slide are all functions, of course.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    13. Re:Most uninteresting by K.+S.+Kyosuke · · Score: 1

      What? In Lisp, you'd just parenthesize the whole thing. Plus the availability of macros and quasiquotations allows you to shuffle functionality between functions, macros, and data to your heart's content.

      --
      Ezekiel 23:20
    14. Re:Most uninteresting by Smallpond · · Score: 1

      That's a very good point. The reason for XLR (the language underlying Tao3D) was that we have to invent new languages all the time, not because we like to, but because existing languages are very bad at accepting something that is not already in their DNA. You could not get lambda functions in C++ until the language committee sat around a table, standardized it, and then all compiler vendors had to implement it. But if what you need is for example a notation for symbolic derivative, or a notation for slides, or a notation for a specific kind of for-loop, you are stuck. So progress in programming languages is very slow, because each language adds its own little features, but drops tons of other features that already exist in other languages.

      The idea with XLR was to create a language where the fundamental process was extending the language. And Tao3D is an example of a relatively large scale domain-specific language (specifically around 3D and animations). Most of it is precisely in a library. But you wouldn't know from using it. It feels "native".

      Common Lisp macros allow you to create complex language extensions which are not library functions. They perform as though they are built in. Before anyone writes a "new" language they should at least survey the already existing solutions.

    15. Re:Most uninteresting by K.+S.+Kyosuke · · Score: 1

      Well, the POV-Ray format includes a full programming language. That's one of the reasons why POV-Ray has been considered very powerful for hand-authored contents - you just automate stuff instead of doing everything by hand. (That goes at least for static contents - the lack of any animation solver makes making a lot of animation types moot.)

      --
      Ezekiel 23:20
    16. Re:Most uninteresting by descubes · · Score: 1

      Common Lisp macros allow you to create complex language extensions which are not library functions. They perform as though they are built in. Before anyone writes a "new" language they should at least survey the already existing solutions.

      Yes. You can actually see XLR as a Lisp without the parentheses.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    17. Re:Most uninteresting by Dutch+Gun · · Score: 1

      Thanks for the blog link and detailed responses - that gives me a lot more information than the summary for digestion.

      After an admittedly quick read over the blog post, I would suspect that perhaps most of what Taos3D does could be done through libraries, but it would probably sacrifice some elegance and require a lot more boilerplate code. Domain-specific languages do have the advantage of being able to tailor the language for specific use cases, of course, and XLR seems like a pretty interesting way to do that. You're right that the code samples feel very concise and "native", as you put it. For example, generally speaking, it's relatively difficult for many languages to deal with events over time in an elegant fashion.

      Does that balance out the hurdle imposed of learning a language for a specific application? Hard to say, really. I suppose it's a bit like ActionScript in that regard, as it demonstrates a language that fits its specific domain environment pretty well, and was useful enough that it got a good amount of traction.

      Regarding getting this onto the web: I think you're right in that creating a plug-in is very 90's (probably not a good idea just for the security implications alone), and directly adding it to the browser is a no-go unless it's mainline and standardized across all of them - unlikely to happen. So you're left with trying to reimplement this for the web using HTML-5 standards, which is pretty difficult if all your work to date has been in C++.

      Maybe the solution isn't necessarily porting the entire spec, but taking the work you've done and creating a web-specific product that's a bit easier to port to that platform. You can then use your native tools to perform a subset of what you can currently do natively and export it to the web - maybe even generate Javascript from Tao3D instead of trying to write a runtime interpreter.

      Another alternative idea: Maybe it's feasible to use a server-based runtime component to translate OpenGL and Javascript instructions based on Tao3D and then send that to a client as Javascript and WebGL. Again, this could theoretically bypass the need to port the entire engine, which seems like it would be a pretty huge endeavor.

      Anyhow, best of luck with your endeavors.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    18. Re:Most uninteresting by Anonymous Coward · · Score: 0

      So, functions are first class data members? Is it weakly typed then, like Lua? In that language, defining a function is just syntactic sugar for assigning a chunk of code to a variable of the assigned name, so you can use it just like any other variable.

      That's not quite the case in Lua, where a function can be a closure.

      Most modern dynamic languages support closures, as do several statically typed ones (e.g. F#, OCaml, Scala).

    19. Re:Most uninteresting by PvtVoid · · Score: 1

      The idea is that in other languages, if-then-else is a built-in construct. You can't do something similar yourself without hacking the compiler. In Tao3D, if-then-else is a library element like printf in C. So you can change it.

      Let's say you often use a specific kind of for loop. In Tao3D, you simply add the notation you need, and now your code is shorter and more concise.

      Am I the only one who thinks this is a fucking terrible idea? It's a recipe for obfuscated, unmaintainable code.

      Dear Programmers: Quit filling your code with goddamn macros. Use the language as implemented, so everybody else can figure out what the fuck you're doing.

      Thank you.

    20. Re: Most uninteresting by ahoffer0 · · Score: 1

      I need to start growing my gray beard.
      http://en.m.wikipedia.org/wiki...

    21. Re:Most uninteresting by Jeremi · · Score: 1

      Dear Programmers: Quit filling your code with goddamn macros. Use the language as implemented, so everybody else can figure out what the fuck you're doing.

      What, and make ourselves easily replaceable? In the absence of unions, code obfuscation is the only job security we've got. ;^)

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    22. Re: Most uninteresting by Anonymous Coward · · Score: 2, Interesting

      I recoded a 25-hour number crunching app at work in C++ with lock-free threaded workers that trimmed that job down to 17 minutes. I then made them purchase Intel Compiler (ICC) and a simple recompile brought that time down to 13 minutes.

      The machine it ran on has top of the line Xeons with a terabyte of memory and redundant PSU's along with some GPU code.... An unexpected side-effect of my optimizations was that the power bill dropped on our cage by an order of magnitude.

      So enjoy your huge power bills with all that quickly churned out inefficient code..... No one talks about that as a developer but literally C++ is green and saves some of that extra development cost by allowing for cheaper power bills if the machine isn't doing anything else but your app.

    23. Re:Most uninteresting by Anonymous Coward · · Score: 0

      I'd rather just use Unreal Engine. It's easier and quicker to make 3D animations and/or games with.

    24. Re:Most uninteresting by ultranova · · Score: 1

      Well, the POV-Ray format includes a full programming language. That's one of the reasons why POV-Ray has been considered very powerful for hand-authored contents - you just automate stuff instead of doing everything by hand.

      POV-Ray programming language is roughly equivalent to C precompiler. Calling it "powerful" says more about the competition than the language itself.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    25. Re:Most uninteresting by K.+S.+Kyosuke · · Score: 1

      Well, this day and age, Houdini is certainly better. :-) But what I meant was that POV-Ray is hardly just a "data format". It's Turing-complete, it has variables, loops, named subroutines, arrays, file I/O, etc. (Where did that "C precompiler" thing even come from? As far as I know, D is the closest thing to C that has roughly similar features, in form of CTFE.) "Parser" basically means "interpreter", and you won't be able to round-trip anything complex, at least not automatically.

      --
      Ezekiel 23:20
    26. Re: Most uninteresting by Anonymous Coward · · Score: 0

      Except not every application is cpu bound. And especially with things involving user interaction, like games, the basic idea can be fleshed out with or without a fair amount of overhead. No one is going to notice if their cpu load goes from 5% to 3% for library overhead in a game. Of course there are plenty of number crunching applications where considerable optimization effort will be worth it. But a large number of applications are not like that, with the cost ultimately coming down to developer time. Or in the case of prototyping games, there is no sense in optimizing it until you've figured out what you want to do first.

    27. Re:Most uninteresting by owl57 · · Score: 1

      And I heard of Readable Lisp for those of us who don't like so much parens. Sure, still need some inside lines, but why would you want a language that seems to parse "200 * sin time" and "rotate_y 20 * time" at the same time?

      And of the things I have played with recently, the example looks just like layout definition in Scaloid.

    28. Re:Most uninteresting by K.+S.+Kyosuke · · Score: 1

      I've recently had thoughts about how Lisp-like "syntax", structured editors, and mobile devices nicely converge. Unless you have microscopic fingers, manipulating code on a pocket device using fingers is easier at the "atom" level rather than on character level. And the structure could be nicely imposed by the editor, without forcing you to as much as see the parentheses.

      --
      Ezekiel 23:20
    29. Re: Most uninteresting by Prune · · Score: 1

      I suggest you look at how functional reactive programming, which is the architecture used for this language, is implemented under the hood. FRP implementations are notoriously inefficient.

      --
      "Politicians and diapers must be changed often, and for the same reason."
    30. Re:Most uninteresting by Half-pint+HAL · · Score: 1
      I think you need to reread the question:

      can GP name "existing functional languages" (except JS) which don't have a decent lambda syntax?

      I don't see the lambda calculus in your example.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    31. Re:Most uninteresting by Half-pint+HAL · · Score: 1

      Common Lisp macros allow you to create complex language extensions which are not library functions. They perform as though they are built in. Before anyone writes a "new" language they should at least survey the already existing solutions.

      Yes, but unfortunately it still leaves you programming in Common Lisp. Lisp was not designed for humans -- it was designed to be easy for the computer to parse. Worse, ukasiewicz's prefix notation may be known as "Polish notation" now, but he called it "parenthesis-free notation" when he invented it (and that was his whole purpose in inventing it), and yet the guys who invented Lisp used prefix with mandatory parenthesis. Lisp was an interesting idea at the time, and dealt with the constraints of the time, but now it's of more use as a study of why the distinction between a "high-level" and "low-level" language isn't exactly clear cut....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    32. Re:Most uninteresting by Half-pint+HAL · · Score: 1

      Nah, I have found that English doesn't really suit my needs, so over time I've have extended it with additional info-enhancefic-features that allow me to wrt +>concs.ly n x that m.mess.g is +>qwk.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    33. Re:Most uninteresting by Smallpond · · Score: 1

      You are correct that Lisp was not designed for humans. It was designed for mathematicians.

    34. Re:Most uninteresting by descubes · · Score: 1

      I don't see the lambda calculus in your example.

      There was none, indeed. In reality, Tao3D is based on tree rewrites, not lambda calculus.

      I'm exploring a bit here what the implications are. Quite frankly, the type system as implemented is totally incomplete and still largely broken at the moment. I understood what needed to be done after 5 years of experimentation, and never got the time to actually implement it. Similarly, the language reference describes a runtime environment for functions, how closures and symbol tables are defined, etc. I prototyped this and got a basic compiler half working, so I know it will work. But the symbol table in Tao3D is a more ancient design, in C++, not visible to the program.

      That being said, there are "anonymous tree rewrite" notations very similar to lambda calculus. For example, here is how you can draw an almost convincing Christmas tree:

      color "darkgreen"
      foo with (X -> 3*X^2+7) with 1..8, 2..4

      foo R ->
              rectangle 0, 0, R, 18
              translate_y -20

      The with operator here implements a map, i.e. we apply foo with the result of an anonymous rewrite (that's the "lambda") with a list made of values 1 through 8 and then 2 through 4.

      The filter operation is implemented with another syntactic form:

      foo with (X where X mod 2 = 0) with (X -> 3*X^2+7) with 1..8, 2..4

      There's also a reduce operation, but it crashes the compiler at the moment, need to see why:

      foo (X,Y->X+Y) with (X where X mod 2 = 0) with (X -> 3*X^2+7) with 1..8, 2..4

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
  2. Where is IF-THEN-ELSE more verbose than that? by Brulath · · Score: 1

    Defining if-then-else is literally a couple of lines of code.

    I'm curious, when is the definition of a content-free if-then-else statement more than a couple of lines? A random line from a .ddd template (end of file) in their source code seems to indicate they're using an if( <condition> ) then block with no attached end statement, with whitespace presumably being meaningful (though in the sample I linked the indenting doesn't seem to be very consistent at the end). This seems like an odd thing to boast.

    1. Re: Where is IF-THEN-ELSE more verbose than that? by Anonymous Coward · · Score: 0

      Just what was thinking. Even in most assembly languages, and if then else statement consists of a few lines. One way of counting would be that an if then else statement takes exactly one line, which is a conditional jump.

    2. Re:Where is IF-THEN-ELSE more verbose than that? by Anonymous Coward · · Score: 0

      The assignments ranges and control structures look like Ada code. Good to see a departure from the stain of C style syntax : p

    3. Re:Where is IF-THEN-ELSE more verbose than that? by descubes · · Score: 1

      I'm curious, when is the definition of a content-free if-then-else statement more than a couple of lines?

      The point is that you define the if-then-else control structures. If you wish, if-then-else is a macro in Tao3D, not a built-in.

      (though in the sample I linked the indenting doesn't seem to be very consistent at the end)

      Can you tell me where you think it's not consistent?

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    4. Re:Where is IF-THEN-ELSE more verbose than that? by descubes · · Score: 3, Informative

      The actual definition of if-then-else can be found here. It looks like this:

      // If-then-else statement
      if true then TrueBody else FalseBody -> do TrueBody
      if false then TrueBody else FalseBody -> do FalseBody

      if true then TrueBody -> do TrueBody
      if false then TrueBody -> false

      The definition of the 'for' loop is more convoluted and is actually found in C++ code. It looks like this:


      FORM(IntegerForLoop, tree,
                "for Var in Low:integer..High:integer loop Body",
                PARM(Var, tree, "")
                PARM(Low, integer, "")
                PARM(High, integer, "")
                PARM(Body, source, ""),
                return xl_integer_for_loop(context,self, &Var, Low, High, 1, &Body), )
      FORM(IntegerForLoopStep, tree,
                "for Var in Low:integer..High:integer by Step:integer loop Body",
                PARM(Var, tree, "")
                PARM(Low, integer, "")
                PARM(High, integer, "")
                PARM(Step, integer, "")
                PARM(Body, source, ""),
                return xl_integer_for_loop(context,self, &Var, Low,High,Step, &Body), )
      FORM(RealForLoop, tree,
                "for Var in Low:real..High:real loop Body",
                PARM(Var, tree, "")
                PARM(Low, real, "")
                PARM(High, real, "")
                PARM(Body, source, ""),
                return xl_real_for_loop(context,self, &Var, Low, High, 1.0, &Body), )

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    5. Re:Where is IF-THEN-ELSE more verbose than that? by roger10-4 · · Score: 1

      Me thinks "descubes" has a vested interest in the language being the poster and responding to posts in an inquisitive manner. The quote "Defining if-then-else is literally a couple of lines of code." is silly (as already mentioned). Is there a formal language definition? The documentation for the language seems to be lacking.

    6. Re:Where is IF-THEN-ELSE more verbose than that? by descubes · · Score: 1

      Yes, of course, I have a vested interest. But I'm not inquisitive, I want to know if there is a (real or perceived) inconsistency in the indentation.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    7. Re:Where is IF-THEN-ELSE more verbose than that? by Anonymous Coward · · Score: 0

      Oh look descubes is back with more shill! Fuck man, nobody else knows about this yet and sample code is too hard to find. You stick out pretty bad there, buddy.

      How about something USEFUL, like SAMPLE CODE? You know, HELLO WORLD, front and center, on the MAIN PAGE, in PLAIN OLD TEXT, the kinda shit I can COPY and PASTE?

      Yes, I'm SHOUTING the RELEVANT WORDS because YOU DON'T SEEM TO GET IT.

    8. Re:Where is IF-THEN-ELSE more verbose than that? by narcc · · Score: 1

      From the (horrible) documentation:

      3.1.1Rewrite declarations
      The infix -> operator declares a tree rewrite. Figure 21 repeats the code in Figure 3 illustrating how rewrite declarations can be used to define the traditional if-then-else statement.

      if true then TrueClause else FalseClause -> TrueClause
      if false then TrueClause else FalseClause -> FalseClause

      Figure 21. Examples of tree rewrites

      The tree on the left of the -> operator is called the pattern. The tree on the right is called the implementation of the pattern. The rewrite declaration indicates that a tree that matches the pattern should be rewritten using the implementation.

      Not exactly what I expected. For example, in Forth, you'd do something like this:
      : branch fromr dup tor @ fromr + tor ;
      : notbranch not fromr dup tor @ 1 - * fromr + 1 + tor ;
      : if immediate ' notbranch , here 0 , ;
      : else immediate ' branch , here 0 , swap dup here swap - swap ! ;
      : then immediate dup here swap - swap ! ;

      Less clear, without question, but also way less magic. The documentation, unfortunately, doesn't provide enough information for me to have implemented their example on my own, or even understand it fully. I'm sure playing around with it a bit would clear that up, but I already regret the time I've spent on this. I'll let whoever ends up being downloader #47 answer that.

      This seems like an odd thing to boast.

      Well, it make me dig through that abomination of a website to find out. If that's what they wanted to achieve, they've done it. Unfortunately, I also discovered that this is just a sad attempt to gain attention for a commercial product from a (failing?) 3-year-old start-up.

    9. Re:Where is IF-THEN-ELSE more verbose than that? by Dutch+Gun · · Score: 1

      Well, nothing wrong with that, but if that's the case, I think that a link to a blog post or article that introduces or describes the language along with it's features and benefits would be a lot more interesting than posting a link to sourceforge and saying "look, new language". The marketing video is slick, but tells us zero about the language, which seemed to be the point of the posting.

      I don't think there's anything wrong with being inquisitive either. I'm not sure why you denied that, since you're wanting to solicit feeedback - sort of the definition of inquisitive.

      Seems like a bit of a wasted opportunity for some good exposure. It's hard enough getting people to read TFA. Asking readers to search for info on their own goes means most of them won't bother.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    10. Re:Where is IF-THEN-ELSE more verbose than that? by descubes · · Score: 1
      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    11. Re:Where is IF-THEN-ELSE more verbose than that? by danknight48 · · Score: 1

      I'm curious, when is the definition of a content-free if-then-else statement more than a couple of lines? A random line from a .ddd template (end of file) in their source code seems to indicate they're using an if( <condition> ) then block with no attached end statement, with whitespace presumably being meaningful (though in the sample I linked the indenting doesn't seem to be very consistent at the end). This seems like an odd thing to boast.

      Looks like the "then" is the same as running code inside "{ }". Could be wrong, then again, couldn't care less about whitespace reduction, it usually costs in readability for minimal gains. I like my Brackets, makes code clear and concise.

  3. The Republicans... by Anonymous Coward · · Score: 0

    will never allow this to work so what is the point? When I learned Logo along with three other teachers in my district, they put all of us in prison for over seven months. They so hated the idea of us teaching secondary students that they destroyed our lives. They made on of the other teacher I taught with give her baby up for adoption. While I lost my car and house, they made her give-up her child. I will never forgive them for that. Their kind is so hateful.

    1. Re:The Republicans... by Anonymous Coward · · Score: 0

      You know there's a murderous warmongering demmycrat in the big bro house now, right? Haven't updated your little trolling rant in ten years, fuckface?

    2. Re:The Republicans... by Anonymous Coward · · Score: 0

      Oh darn, you're right! Let me upgrade my trollbot.

      $ sudo apt-get upgrade systemd

      There we go, much bett

      KERNEL PANIC

    3. Re:The Republicans... by jones_supa · · Score: 2

      Americans can twist any topic to be a battle between democrats and republicans. Actually, a fun party game would be one where someone tries to make up a topic that cannot be made into such a battle, such as "eyeglasses". Then the opponent tries to refute that by making it a political turmoil such as "we would get much higher quality and cheaper eyeglasses if the republican clowns were not cruising the ship".

    4. Re:The Republicans... by Anonymous Coward · · Score: 0

      Make sure to involve guns and booze somehow. I think the drinking game edition will prove popular.

    5. Re:The Republicans... by Anonymous Coward · · Score: 0

      +1 Funny. That bar game sounds awesome.

    6. Re:The Republicans... by Anonymous Coward · · Score: 0

      The Republicans make everything into that. Their kind makes everything into a political game. Their kind can't do anything without turning into something political. That is the way of their kind.

    7. Re:The Republicans... by BitZtream · · Score: 1

      Let me guess ... you're a democrat ...

      Seriously, pot meet kettle, you're both black as night.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    8. Re:The Republicans... by peragrin · · Score: 1

      Well that's a racist statement.how do you know they are not fat white slobs sitting in their respective mothers basements?

      --
      i thought once I was found, but it was only a dream.
    9. Re:The Republicans... by Anonymous Coward · · Score: 0

      You missed where GP was being satirical, I think.

    10. Re: The Republicans... by Anonymous Coward · · Score: 0

      Democrat in name only. He in reality is a lying cocksucker like the rest of the GOP.

    11. Re:The Republicans... by Foresto · · Score: 1

      "Democrats and republicans can twist any topic to be a battle between democrats and republicans."

      FTFY. :)

    12. Re:The Republicans... by swillden · · Score: 1

      You missed where GP was being satirical, I think.

      I missed it, too. In fact, I still miss it when I re-read the post. I miss it so hard I'm pretty sure it isn't there.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  4. More Than 3 Clicks by Anonymous Coward · · Score: 0

    More than three clicks to get to example code (excluding one screenshot of something). Too hard to overcome the, "meh, fuck this" barrier.

    Fuck this.

    1. Re:More Than 3 Clicks by Anonymous Coward · · Score: 0

      Yeah, but enough spare time to write insults on Slashdot.

    2. Re:More Than 3 Clicks by Anonymous Coward · · Score: 0

      No insults here, just facts. Try to get sample code you can copy and paste, in less than three clicks, starting from this page. This is the worst slashvertisement in at least a week. Maybe descubes will get off his fat ass and fix it, now. Sample code should be up front, on the main page. And why the fuck are there no links in TFS to the actual homepage (just the sourceforge page)?!

      I'm being serious. You want this to succeed, you need to make it easy for people to get started. I don't need handholding--but I do need the 30 second copy and paste smoke test to decide if it's watching some tutorial video.

    3. Re:More Than 3 Clicks by descubes · · Score: 1

      I put the sample code on http://tao3d.sourceforge.net/ closer to the beginning. Hope that helps.

      That being said, people don't seem to like the "Reveal.js" form factor too much overall. I may have to change that.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
  5. Video tutorials by Anonymous Coward · · Score: 1

    If you try it right out of the bat, you'll get tons of error messages like "no form match". Seems to be the good old "Huh?" in Tao3D.

    But there are a few interesting video tutorials on the YouTube channel. This one is to build a DNA strand. Another one shows how you can animate 3D objects. And there's an couple of interesting ones about GLSL real-time shaders.

    Apparently, it's quite powerful, but it may take quite a bit of learning to master.

    1. Re:Video tutorials by Anonymous Coward · · Score: 0

      Okay descubes, we get it. Shuddup already. We don't want video tutorials. I want CODE I can COPY and PASTE. Where the fuck is that? It's too damn hard to find, is where it is.

    2. Re:Video tutorials by roger10-4 · · Score: 1

      "right out of the bat"? I think you meant "box".

    3. Re:Video tutorials by Anonymous Coward · · Score: 0

      Hey dude, I heard you like to eat guano right of the bat.

    4. Re:Video tutorials by descubes · · Score: 2

      Here are a few links:

      Tao3D documents on Gitorious

      Taodyne tutorials usually have the code corresponding to the videos. But I'm pretty sure our small server won't take a slashdotting. Use it while it lasts.

      There are also a few examples in the source tree itself.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    5. Re:Video tutorials by Anonymous Coward · · Score: 1

      Your mistake is making people dig through a source repository to find something. You need a snippet of code, not a lot of links to code, but an actual snippet of code, on your main page, front and center. Don't make me work to decide if it's even worth pursuing your language, because that'll instantly earn you a "nope, next please".

    6. Re:Video tutorials by tshawkins · · Score: 1

      Its "right off the bat" , which means immeatiate, straight away. http://www.thesaurus.com/brows... Its a term that comes from cricket that made its way into common language.

    7. Re:Video tutorials by Half-pint+HAL · · Score: 1

      Consider it a "video demonstration" then, and consider that it demonstrates some curious weaknesses in the language. (I watched the DNA strand video.)

      I don't like subroutine names that include something that looks like a parameter, so things like rotatex and rotatey set me on edge a bit. It gets worse when this is inconsistent, and you see a subroutine called vertical_align for vertical alignment, where the seeming parameter (vertical) is now before the generic (align), and separated by an underscore instead of run together. Not only is this an internal inconsistency, but it's inconsistent with English, as "align" is a verb, and we would put in an adverb "vertically" after the verb normally. And then it gets worse again, as the command for horizontal alignment is... "align".

      The grammatical inconsistency continues with other commands/subroutines taking on names with no verb component at all (eg the command color, with no verb or assignment operator.

      I'm really not happy with the way pattern matching is used as overloading:

      dna_base_color 0 -> color "red"
      dna_base_color 1 -> color "blue" ...

      rather than a single structure with explicit choices, eg

      dna_base_color :
      0 -> color "red"
      | 1 -> color "blue" ...

      ...because you can get yourself in a mess if you split it up into different parts of the code and accidentally overwrite stuff.

      I'm completely baffled why the whole demo recreates the shapes for every single redraw frame rather than keeping them as persistent objects (which necessitates adding a random seed in order to fake them being persistent by pulling up the same colours each time.

      (The demo also demonstrates the whole potential of doing too much and drowning yourself in flash -- notice how DNA letter codes are added, then promptly disappear in a black-on-black clash and are forgotten about.)

      But the worst part is the way these rotations and coloring statements create a hidden state that affects things below in an opaque manner... and I'm not even sure it might not effect stuff above it.

      There's a remarkable similarity between everything I've just said and the criticisms I've read of processing/processing.js (eg Bret Victor's opinions on Khan Academy's coding tutorials), so I'm guessing this was very heavily inspired by Processing's 2D canvasses....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    8. Re:Video tutorials by descubes · · Score: 1

      I don't like subroutine names that include something that looks like a parameter, so things like rotatex and rotatey set me on edge a bit.

      If you prefer, you can use the plain rotate. But rotating along X, Y or Z is frequent enough to deserve a shortcut. Not different from CSS transform, by the way.

      It gets worse when this is inconsistent, and you see a subroutine called vertical_align for vertical alignment, where the seeming parameter (vertical) is now before the generic (align), and separated by an underscore instead of run together. Not only is this an internal inconsistency, but it's inconsistent with English, as "align" is a verb, and we would put in an adverb "vertically" after the verb normally. And then it gets worse again, as the command for horizontal alignment is... "align".

      You are right, align_vertically would be more sensible. Exercise for you: fix it ;-) As for align, that's the common case, so I'd rather keep it that way.

      The grammatical inconsistency continues with other commands/subroutines taking on names with no verb component at all (eg the command color, with no verb or assignment operator.

      That derives from OpenGL, which has glRotate and glTranslate, but glColor and not glColorize. BUT it's not inconsistent. It's actually fairly smart. The color is an attribute, and glColor just sets it. So the name is the name of the attribute you set. glRotate and glTranslate modify an attribute (the current model/view matrix), so they are verbs. Unwittingly, I applied the same logic for things that change the color state, e.g. show. Since show changes the color state, it is a verb.

      I'm really not happy with the way pattern matching is used as overloading ...because you can get yourself in a mess if you split it up into different parts of the code and accidentally overwrite stuff.

      How is this different from overloading? That's a FUD argument. In reality, its distributed nature is exactly what makes the construct powerful. It offers a very flexible dynamic dispatch mechanism.

      For example, the Slides module draws a background for slides using theme_background. That function is provided by the default theme. But most themes will override it.

      In general, this override happens only on part of the pattern. For example, most slide elements are defined by (theme, master), sometimes (theme, master, style). The "master" is the equivalent of the Powerpoint "slide master", i.e. it defines the layout, etc. If you define a new theme, you'll typically define overrides that catch everything for a given theme (e.g. for "BrightRectangles" in the last link). But you may also want to override for a specific combination.

      I'm completely baffled why the whole demo recreates the shapes for every single redraw frame rather than keeping them as persistent objects (which necessitates adding a random seed in order to fake them being persistent by pulling up the same colours each time.

      The Tao3D drawing model is a feature, not a bug. If you write rectangle 0, 0, 320, 200, it draws the rectangle once, and that's

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    9. Re:Video tutorials by Half-pint+HAL · · Score: 1

      Thought for the day: whenever designing something for other people to use, you should take all feedback from your potential users and prove to yourself why the feedback is correct before attempting to show the giver why it's wrong.

      Why? Firstly, because nobody will give you any feedback at all if your default response is to prove to everyone that their feedback is so valueless to you (and if you don't want feedback, then this whole thread is just self-promotion, which isn't popular here).

      Secondly, because we all make mistakes, so there are bound to be things in our work that are suboptimal. Admitting to yourself that there is a mistake doesn't necessarily mean having to change it -- if you honestly assess the impact of the mistake and say it's something your happy to live with, great. But it has to be a conscious decision, not denial of the problem.

      Thirdly, both sides can be right, and often are. If our disagreement comes from different assumptions and use cases, you might find that if you open the dialogue (rather than shouting "FUD"), you might hear of a problem you hadn't thought of. You need to see it from not only the angle you choose to follow, but also the angle you have already rejected.

      Now...

      I don't like subroutine names that include something that looks like a parameter, so things like rotatex and rotatey set me on edge a bit.

      If you prefer, you can use the plain rotate. But rotating along X, Y or Z is frequent enough to deserve a shortcut. Not different from CSS transform, by the way.

      It gets worse when this is inconsistent, and you see a subroutine called vertical_align for vertical alignment, where the seeming parameter (vertical) is now before the generic (align), and separated by an underscore instead of run together. Not only is this an internal inconsistency, but it's inconsistent with English, as "align" is a verb, and we would put in an adverb "vertically" after the verb normally. And then it gets worse again, as the command for horizontal alignment is... "align".

      You are right, align_vertically would be more sensible. Exercise for you: fix it ;-)

      Exercise for you: go **** yourself. That's just patronising. I'm giving you feedback, and the implication of your statement -- regardless of the smiley -- is that my feedback is valueless if I'm not willing to code it up myself. I'll say it again: if you want feedback, don't tell people you don't care about their feedback.

      As for align, that's the common case, so I'd rather keep it that way.

      [Citation needed] If we were just talking about text flow in a 2D page, I would agree with you, but there's so much geometry in here, I personally don't see any default.

      The grammatical inconsistency continues with other commands/subroutines taking on names with no verb component at all (eg the command color, with no verb or assignment operator.

      That derives from OpenGL, which has glRotate and glTranslate, but glColor and not glColorize. BUT it's not inconsistent. It's actually fairly smart. The color is an attribute, and glColor just sets it. So the name is the name of the attribute you set. glRotate and glTranslate modify an attribute (the current model/view matrix), so they are verbs.

      I understand that, but it's wrong. I know a lot of people laugh at the idea of using setColor and getColor as per so many OO style guides, but really, you either need to use assignments or use verb-based names, or the syntax is broken from a human cognitive perspective. It is very difficult to reason about a grammar

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    10. Re:Video tutorials by descubes · · Score: 1

      Thought for the day: whenever designing something for other people to use, you should take all feedback from your potential users and prove to yourself why the feedback is correct before attempting to show the giver why it's wrong.

      Oh, I got it backwards then. I thought you had been trying to prove me wrong all that time... Sometimes, you were right (e.g. black characters on black background). Sometimes, you've made a good point (e.g. align_vertically). Sometimes, I feel your point is less convincing (glTranslate and glColor). Sometimes, I think you are plain wrong (global state is evil), and I express disagreement. That's how a discussion goes. I enjoyed it, sorry to hear that you did't seem to.

      if your default response is to prove to everyone that their feedback is so valueless to you

      If it felt so valueless to me, do you think I'd still be watching for your answers and typing this in the middle of the night? I don't claim to be perfect. Please reciprocate.

      Exercise for you: go **** yourself. That's just patronising.

      No, that's trying to help you become an early contributor. I would not have spent the time locating the exact line to patch otherwise. Remember, open source is about you and others being able to influence Tao3D. But since you obviously don't want to do it this time, I patched it myself. Your name in lights, tadaaa.

      If we were just talking about text flow in a 2D page, I would agree with you

      Well, text layout is still done in a 2D text box. So align specifies the horizontal alignment and justification within a line (the frequent case), and align_vertically the alignment and justification of the lines and paragraphs vertically.

      I understand that, but it's wrong. I know a lot of people laugh at the idea of using setColor and getColor as per so many OO style guides, but really, you either need to use assignments or use verb-based names, or the syntax is broken from a human cognitive perspective

      It's an interesting point. Tao3D actually went the other way. A setter and a getter for a property typically have the same name. So to adjust the stereoscopic effect, you can say something like eye_distance 20, and that adjusts the property you get with eye_distance. To get the current theme of a slide, you use theme, and to set it theme "Master". I personally see the 'set' and 'get' in that case as noise. But I will admit it's a matter of personal taste. I hope you will understand that Tao3D reflects my tastes and not yours.

      At the limit, we began implementing (but never finished) a system of properties named x, y, width, top and so on for coordinates. You could then use any of the following three, to your liking:

      rectangle 10, 20, 30, 40
      rectangle { x 10; y 20; width 30; height 40; }
      rectangle { left -5; y 20; width 30; bottom 0; }
      x 10; y 20; width 30; height 40; rectangle

      Much like for color, the last one would also set the properties in a persistent way for following shapes to use, much like color or texture today. This means you would then be able to say something like left 20 to left-align a bunch of shapes. It's not done yet, but still in the plans.

      They are broken. If you aren't willing to fix the real problems with languages, why write a new one in the first place? Why not just write a library?

      I find your use of bold font and "broken" quite antagonistic to your statement that two people can be correct at the same time. You call this a real problem with languages. I just don't see it. Specifically, I don't see color "red" or glColor as broken. In doing so, I'm not saying that you are w

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    11. Re:Video tutorials by Half-pint+HAL · · Score: 1
      Sorry -- I'm tired and angry about various things, and taking it out on strangers on the internet isn't really the right way to deal with it.

      No, that's trying to help you become an early contributor. I would not have spent the time locating the exact line to patch otherwise. Remember, open source is about you and others being able to influence Tao3D. But since you obviously don't want to do it this time, I patched it myself. Your name in lights, tadaaa.

      I have my own coding project on the go at the moment, so I'm not looking to contribute to anything else at the moment.

      Well, text layout is still done in a 2D text box. So align specifies the horizontal alignment and justification within a line (the frequent case), and align_vertically the alignment and justification of the lines and paragraphs vertically.

      You'll probably hate me for saying this, but why not just write text elements in an established format... like HTML?

      I also realise that this flies in the face of my own moaning about internal consistency, but I see it as valid in this case mainly because of separation of concerns. I believe that the typical usage of presentations will see a lot of minor adjustment of the most PowerPoint-like elements, and very little adjustment of the 3D environment and animations. For one thing, reusing existing collateral would be more of a cut-and-paste affair, and for another, the DOM, while not perfect, is fairly well understood by a lot of admin staff who have no understanding of code.

      [Added later:] Actually, after writing this bit (so thinking about the DOM), a thought came to me that's discussed further on: the language confuses the two metaphors of series-of-commands vs collection-of-properties. It's not really about pre-existing formats vs new ones.

      It's an interesting point. Tao3D actually went the other way. A setter and a getter for a property typically have the same name. So to adjust the stereoscopic effect, you can say something like eye_distance 20, and that adjusts the property you get with eye_distance. To get the current theme of a slide, you use theme, and to set it theme "Master". I personally see the 'set' and 'get' in that case as noise.

      Ah... what I hadn't noticed was the lack of assignment operator in the language. I see exactly what you mean about getters and setters -- my view was always that if public object properties are dangerous (and I believe they are) then the best approach would be for a code to forbid public properties, but for getters and setters to simulate properties. If that's what you've done, in theory you have completed the abstraction of objects -- if the caller doesn't need to know how an object works, it shouldn't need to know that it's not changing the properties directly.

      But without an operator, how is it obvious the difference between an assignment, a function passed as argument, a function call and a looked-up value?

      But I will admit it's a matter of personal taste. I hope you will understand that Tao3D reflects my tastes and not yours.

      As a developer, you should be avoiding personal taste.

      At the limit, we began implementing (but never finished) a system of properties named x, y, width, top and so on for coordinates. You could then use any of the following three, to your liking: rectangle 10, 20, 30, 40 rectangle { x 10; y 20; width 30; height 40; } rectangle { left -5; y 20; width 30; bottom 0; } x 10; y 20; width 30; height 40; rectangle

      Much like for color, the last one would also set the properties in a persistent way for following shapes to use, much like color or texture today. This means you would then be able to say something like

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    12. Re:Video tutorials by Half-pint+HAL · · Score: 1

      Another point arising from the "introduction" video... the use of implicit lists for function arguments seems very, very weird. Yes, it's a "powerful feature", not a bug, I get that, but this is another example of how the language becomes opaque to reading and reasoning. Your recursive call looks for all the world like single recursion over two arguments, not list recursion.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    13. Re:Video tutorials by descubes · · Score: 1

      It's not implicit lists. Tao3D, like Lisp, is strongly homoiconic. In other words, it's primary data structure is used both for programs and data. In Lisp, that primary structure is the list. In Tao3D, it's the parse tree. Manipulating parse tree structures is fundamental in Tao3D programming.

      Now, conceptually, you can correctly think of 1,2,3 as a list. But you could as well have 1;2;3, which is also a "list", except it's built with a different infix operator.

      So when I write something like:
      foo X,Y -> bar X; blob Y
      I'm really describing is a parse tree transform recognising a prefix foo, which matches only if the right is infix with a comma, and will split that infix into its left and right components, and call bar, then blob with the components.

      I could similarly do something like that:
      [A..B where C] -> A-B
      and that would only match a [ ] block with a child that is an infix "where", when the left child of that infix is an infix "..".

      So it's very regular. It does what other languages call function calls, operator overloading, or even macros (because that process also lets you precisely control when arguments are evaluated).

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    14. Re:Video tutorials by descubes · · Score: 1

      Sorry -- I'm tired and angry about various things

      Really sorry to hear that. But apology gladly accepted ;-)

      You'll probably hate me for saying this, but why not just write text elements in an established format... like HTML?

      Now you can. But HTML is not a very good format for dynamic text. How do you represent the following with HTML?

      paragraph "It is currently " & hours & ":" & zero minutes & ":" & zero seconds
      zero N -> if N < 10 then "0" & N else N

      I believe that the typical usage of presentations will see a lot of minor adjustment of the most PowerPoint-like elements

      This is true with what Powerpoint can do. With Tao3D, when you discuss a simulation, a lot of time is spent refining the simulation.

      For one thing, reusing existing collateral would be more of a cut-and-paste affair

      Even without the patch above, you can copy-paste HTML into Tao3D.

      the language confuses the two metaphors of series-of-commands vs collection-of-properties.

      There is no confusion, there are only series of commands, although with a homoiconic language, they are also data, so you can view them as properties and make them behave like properties if you want to. The fundamental paradigm remains sequential evaluation (using parse tree rewrites in that case).

      Ah... what I hadn't noticed was the lack of assignment operator in the language.

      There is an assignment operator in the language. The theme getter/setter is define as follows:

      theme -> "default"
      theme T -> theme := T

      If that's what you've done, in theory you have completed the abstraction of objects -- if the caller doesn't need to know how an object works, it shouldn't need to know that it's not changing the properties directly.

      I may not have made the abstraction exactly like you wanted, but I've made abstraction more practical than in most languages. The theme "variable" could be a function, I would not know. And the theme T "setter" could do some validation or anything else, same thing, you would not know.

      But without an operator, how is it obvious the difference between an assignment, a function passed as argument, a function call and a looked-up value?

      The real abstraction is precisely that it is not obvious at the call site. If you have something like do_something theme, it's do_something that decides for example if it evaluates theme or not. If not, it gets the unevaluated name, and it can decide to do something with it, like using it as a prefix for a "function call".

      As a developer, you should be avoiding personal taste.

      That makes no sense to me. While it's a good thing to be able to fit in an existing environment, when you design from scratch, you have to make choices. And those choices are based on your own taste. Who gets to decide for you if you prefer to write runThing, run_thing(); or (run-thing) or, Knuth forbid, <thing EVALUATION_MODE="run" @ARGS[$nil]>?

      That last one, while I don't like it, at least looks consistent

      In the Tao3D evaluation model, they are all consistent.

      at other times a bag of object properties.

      This only shows that imperative is superior to declarative. You can make imperative feel like declarative, not the other way round.

      If I edit the attributes of an HTML tag via javascript, it shouldn't really matter which order I edit them in -- the end result is the same.

      A

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    15. Re:Video tutorials by Half-pint+HAL · · Score: 1

      First up, can I suggest adding the word "visualisation" to your standard blurb? A lot of our differences arose from the word "presentation", and my interpretation of that as low complexity. Your stargazing example was very impressive, but I was led to expect something on a very different scale from your wording and the focus on slides in your introduction videos. The graphical rendering of a huge astrological database is definitely what I would consider "visualisation".

      the language confuses the two metaphors of series-of-commands vs collection-of-properties.

      There is no confusion, there are only series of commands, although with a homoiconic language, they are also data, so you can view them as properties and make them behave like properties if you want to. The fundamental paradigm remains sequential evaluation (using parse tree rewrites in that case).

      I'm talking about a visual confusion. The reason I keep using the word "opaque" is that when I look at the code, the intended (semantic) behaviour is obscured. You've suggested several times that having effectively only one syntactic structure in the language makes it more consistent, but my object with regards to consistency is precisely the contrary: that the syntactic rule is inconsistent because there is no clear mapping of syntax->semantics.

      Ah... what I hadn't noticed was the lack of assignment operator in the language.

      There is an assignment operator in the language. The theme getter/setter is define as follows:

      theme -> "default" theme T -> theme := T

      So ":=" is the assignment operator, but in all your examples you've sugared it over, and basically obscured the logic of your code...?

      I may not have made the abstraction exactly like you wanted, but I've made abstraction more practical than in most languages. The theme "variable" could be a function, I would not know. And the theme T "setter" could do some validation or anything else, same thing, you would not know.

      I don't think it's more practical, because it massively less readable.

      If I use object.setColor("green"), it's easy to read the intended meaning.

      I would prefer the abstraction object.color = "green" because getter/setter is usually implemented by convention rather than rule (leaving things open to programmer error).

      But your solution offers less clarity than either. And now you're going to say that's OK, because it's a dynamic language and therefore you can write your own rules, but that doesn't solve the problem, because then the person trying to work out the original coder's meaning also has to work out the whole language before he can think about the code.

      But without an operator, how is it obvious the difference between an assignment, a function passed as argument, a function call and a looked-up value?

      The real abstraction is precisely that it is not obvious at the call site. If you have something like do_something theme, it's do_something that decides for example if it evaluates theme or not. If not, it gets the unevaluated name, and it can decide to do something with it, like using it as a prefix for a "function call".

      You're talking about the computer. A programming language has to serve the programmer. They say Lisp is "clear" because it reveals the tree structure that the computer will parse. I find it unclear because we humans haven't lived in trees for many thousands of years. I need to see the behavioural logic, not the execution logic.

      ...but then again, I didn't think we were talking about processor-bound, high performance simulations, but "presentations" and "3D animations".

      As a developer, you should be avo

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    16. Re:Video tutorials by descubes · · Score: 1

      First up, can I suggest adding the word "visualisation" to your standard blurb?

      Good idea, done. It was hidden in the middle. Renaming Tao Presentations to Tao3D is similarly an attempt to avoid the misconceptions about "presentations".

      I'm talking about a visual confusion. The reason I keep using the word "opaque" is that when I look at the code, the intended (semantic) behaviour is obscured.

      Are you sure this has nothing to do with you not being familiar with the language?

      You've suggested several times that having effectively only one syntactic structure in the language makes it more consistent, but my object with regards to consistency is precisely the contrary: that the syntactic rule is inconsistent because there is no clear mapping of syntax->semantics.

      Maybe the word you are looking for is not "consistency" then. "Consistent" means there are no exceptions to the rule, which is easier to achieve when there are few rules. In C++, f(x,y) may be a macro invocation, a function call, a constructor, and there are different rules in all three cases. In HTML, the "a" tag refers to its URL as "href", but the "img" tag calls it "src". Consistency with the "real world" also matters. In SmallTalk, 2+3*5 is 25, not 17, so SmallTalk is consistent with itself (everything is an object, etc), but not with the rest of the world.

      Something helped me immensely in your last post: you put a few code examples. I think that code examples help me figure out what you really mean or what you care about much better.

      So ":=" is the assignment operator, but in all your examples you've sugared it over, and basically obscured the logic of your code...?

      Why do you call this "sugaring over" now, and not "building an abstraction" (from your previous posts)?

      The abstraction for attributes, used consistently, is: each attribute has a name from the real-world, you set the attribute "attr" with "attr value", you get the value of the attribute with "attr", and attributes apply to things that are evaluated later. Not obscure, and consistent, both internally and externally (e.g. with OpenGL).

      I don't think it's more practical, because it massively less readable.If I use object.setColor("green"), it's easy to read the intended meaning.

      Can't agree on that one. It's totally unreadable (ask any 10 years old kid without a deep training in JavaScript). And for productive programmers, it has the following useless characters: "object.set()".

      I would prefer the abstraction object.color = "green" because getter/setter is usually implemented by convention rather than rule (leaving things open to programmer error).

      There, you went down three steps down the abstraction ladder. Why not MOV $green.str0, color[object] while you are at it?

      But your solution offers less clarity than either.

      I have trouble arguing if you tell me that object.color = "green" is a better abstraction than color "green". It's terribly inefficient when you have multiple shapes and multiple attributes, and I have proven with rotation that it does not work for some complex attributes.

      You're talking about the computer.

      No, I'm talking about the abstraction level, meaning you hide what is irrelevant.

      Imperative is superior to declarative only in terms of optimisability

      Also in terms of expressive power, in terms of the ability to build abstractions incrementally, in terms of ... well... everything ;-) Imperative can also describe computations, tests, loops, and so on. Remember my question about how you'd represent repeated divs with HTML alone (no JavaScript)?

      a declarative language should be easier to code in,

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
  6. Point? by Pino+Grigio · · Score: 1

    Good effort but I really don't see the point. What you have here is a scripting language sitting on top of a 3D engine. It would be more useful to produce a rich interface to a 3D engine that could be used by existing scripting languages, like JS, than to create a whole different one.

    1. Re:Point? by Anonymous Coward · · Score: 0

      Yeah, no point in shell scripts either. I'd much rather write everything in assembly language and get high performance. Ah, wait, someone has done that, it's called systemd.

    2. Re:Point? by descubes · · Score: 1

      Porting to a web platform is something I'd like to see happen. When we started Tao3D, WebGL and even Javascript were not mature enough, and it would have been unreasonable to do so. Today, I don't know. There are still a few things in Tao3D I think Javascript would have a hard time doing. Feel free to try. That's one of the reasons we opened the code.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    3. Re:Point? by narcc · · Score: 1

      Not mature enough it 2011? My BlackBerry Playbook had excellent support for WebGL in 2011. Not a whole lot has changed since then. Hell, my old Playbook still handles modern WebGL demos without a hitch. What, exactly, were you missing back then?

    4. Re:Point? by descubes · · Score: 1

      The project actually started in 2009. And I'm not even sure that WebGL is mature enough today for some of the things we do. It's not so long ago that Microsoft adopted it. And hey, it can't even display the background shaders on http://tao3d.sourceforge.net..... Enough people started complaining that I had to remove them.

      So if WebGL is not good enough for a web page, I doubt it would be good enough for many of the features in Tao3D. But one benefit of open source is that you can try and transcode it in JavaScript and see how well it works. I'm really interested to see you display 3D extruded arabic text on your 2011 Blackberry ;-)

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    5. Re:Point? by Pino+Grigio · · Score: 1

      OK, I don't want to be critical because I like to see a diverse ecosystem in software with lots of developers all working on different ideas. Some will be a success. But as a developer myself I think if you can't explain the problem this is a solution for, it's going to be hard to persuade people they should use it. Of course coding something just for the pleasure you get from doing so is also a kind-of justification in itself.

    6. Re:Point? by narcc · · Score: 1

      I'm really interested to see you display 3D extruded arabic text on your 2011 Blackberry ;-)

      Why would that be complicated? 3D extruded text is pretty simple, and handling RTL has nothing to do with WebGL.

    7. Re:Point? by descubes · · Score: 1

      Sorry, my example was confusing. It's not about RTL it's about number of polygons. Writing most non-latin scripts in small font size tends to create zany numbers of polygons. Same thing with a few contorted latin fonts.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    8. Re:Point? by narcc · · Score: 1

      What algorithm are you using? There may be a more efficient approach (er, as in fewer triangles, not less time).

      That still doesn't answer my question about what you think is lacking in WebGL.

    9. Re:Point? by descubes · · Score: 1

      For the algorithms, I'll let you look at the code :-) It's mostly in path3d.cpp, text_drawing.cpp and glyph_cache.cpp.

      There are several algorithms that are activated separately depending on: whether you draw flat text or extruded 3D text; whether there's a texture or not; the size of the font; and more. The primary ones are: render to textures and draw quads, render polygons for the outline and play that back, or extrude the outline with triangle strips. Then there are some tricks to minimize the number of triangles emitted. I also tried an approach where we rendered triangles and there was a fragment shader doing the bezier curve inside each triangle. That was surprisingly very inefficient on many low-end graphic cards, so I stashed it without going through with it.

      That being said, if you want the text to look any good, you have to emit a large number of triangles for even relatively simple text. The text of the previous paragraph is 69475 triangles in Arial, 138950 when extruded, 171298 polygons in font "Amaze" not even extruded, 265636 with the font "Be safe", 561930 with font IthornÎt, and ... a whopping 2171202 with Apple's "Chalkduster" font.

      That still doesn't answer my question about what you think is lacking in WebGL.

      1. Performance (which is getting good on desktop-class devices thanks to improvements in Javascript compilation, but still terrible e.g. on mobile devices).
      2. Portability. I gave as an example the fact that using a mere GLSL shader as a background on my tutorial page made it unusable for a good fraction of the readers.
      3. At the time we started, Microsoft still had the position that they would never support it. They changed their mind only last year, remember? So anybody using IE before 11 has no WebGL.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    10. Re:Point? by narcc · · Score: 1

      The text of the previous paragraph is 69475 triangles in Arial, 138950 when extruded, 171298 polygons in font "Amaze" not even extruded,

      Not extruded? Why not render the text as a texture and slap it on a triangle strip? Why not render the glyphs as a large texture and make clever use of UV's? (You'd use more triangles, 2 per character, but that's still way fewer than the approach you're using.)

      You might also want to look at other, clearly more efficient, solutions. Take a look at three.js's ShapeGeometry. and ExtrudeGeometry -- A quick test shows great quality, with far fewer triangles.

      That being said, if you want the text to look any good, you have to emit a large number of triangles for even relatively simple text.

      On the basis of my experience, I strongly disagree.

    11. Re:Point? by descubes · · Score: 1

      Just to clarify, the poly counts I gave were actual triangles processed by the card when disabling texture-based rendering in Tao3D. This is the only case that always works, so it's both the fallback scenario and the worst case scenario. Therefore, that's the one I'm most interested in.

      Not extruded? Why not render the text as a texture and slap it on a triangle strip?

      Obviously, Tao3D does that when that's possible.

      Why not render the glyphs as a large texture and make clever use of UV's?

      Tao3D also does that when it makes sense.

      (You'd use more triangles, 2 per character

      Hmm, how do you draw a glyph with only one triangle per character? Or do you mean that we can use two triangles for multiple characters? We also can store full words in the glyph cache. But currently, we only use that for languages with ligatures such as Arabic.

      but that's still way fewer than the approach you're using.

      May I suggest that you should study how the Tao3D code works a little more before being so dismissive ;-)

      You might also want to look at other, clearly more efficient, solutions. Take a look at three.js's ShapeGeometry. and ExtrudeGeometry -- A quick test shows great quality, with far fewer triangles.

      Quick test with what? How did you create a text mesh with Three.js to start with?

      Furthermore, as soon as you extrude, you need true polygonal rendering. You can't draw on a texture and render quads or two triangles as you suggested. Or if there's a way, I don't know it. So you end up with roughly the number of polygons in the base glyph x N, where N depends on extrusion parameters, e.g. if you create a bezel or not, if you round the bezel, and so on.

      That being said, if you want the text to look any good, you have to emit a large number of triangles for even relatively simple text.

      On the basis of my experience, I strongly disagree.

      Would you please be kind enough to share your experience? That's a hot topic for me.

      First, I'd like to point out that even if you can do texture-based rendering, you still need to first render to a texture with polygons or, alternatively, with triangles and a shader doing the Bezier fill.

      Let's deal with two cases here. The first case is when texture-based glyph caching applies. In that case, polygon count is rarely a problem for alphabetic languages. For ideographic languages, or languages with ligatures such as Arabic, the chances of finding what you need in the glyph cache are lower, but you can still assume you will draw the same text several frames in a row, so that's still a net win. The animation may skip a bit when the text changes though... So basically, the glyph polygon count defines the worst case "skip" you can get. And westerners don't care, since they use a Latin alphabet with an appropriately low number of glyphs. So in general, we can reuse entries in the glyph cache.

      Second case is when you can't use textures. Extruded 3D text is one scenario, that's hardly the only one. Then, you need true polygonal rendering. And the number of basic triangles you had for the front face is multiplied by N, which depends on the shape of the extrusion path (bezel, rounded bezel, etc). Plus this time, you need to render the polygons at every single frame, so polygon counts start playing a big role in performance.

      In all cases, even with an curvature-dependent algorithm, you still need a decent number of polygons per glyph or any non-basic font looks like crap. I think the best you can do is something like one triangle per Bezier curve in the glyph (un

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    12. Re:Point? by narcc · · Score: 1

      May I suggest that you should study how the Tao3D code works a little more before being so dismissive

      I can only go by what you tell me. I have no interest in digging through your code base for Slashdot discussion.

      Quick test with what? How did you create a text mesh with Three.js to start with?

      With my computer, a code editor, and the (easily accessible) documentation. It took about 10 minutes. Interestingly, it took less time to write and run that test than it took to find the bit of the documentation for Tao3D I quoted in another post.

      First, I'd like to point out that even if you can do texture-based rendering, you still need to first render to a texture with polygons or, alternatively, with triangles and a shader doing the Bezier fill.

      That statement is either completely false or incoherent. Care to give it another go?

      you still need a decent number of polygons per glyph or any non-basic font looks like crap.

      Sure. What I'm saying is that, from the numbers you've provided, your product clearly lots of room for improvement. Even with basic Latin, you're averaging 128 triangles/character for flat text!

      At least, that's my opinion today. You may easily prove me wrong by porting Tao3D to a Blackberry

      Why would I do that? I'm still not convinced the project offers anything over existing solutions. I'm even less convinced, after our discussion here, that it's even a good solution. Further, porting Tao3D would only show that Tao3D was incapable of working on the hardware in question, not that a different program couldn't produce acceptable output.

      Look, I understand that you have a lot invested in this product. I can understand your need to defend it against any and all criticism, real and perceived. I really do. So, before this devolves any further, how about we change the subject to something more relevant to readers here? How is your startup going? What markets have you found the most success? Where do you see the product in the future?

    13. Re:Point? by descubes · · Score: 1

      With my computer, a code editor, and the (easily accessible) documentation. It took about 10 minutes.

      I meant: you probably have some code that looks like:
      var geom = new THREE.TextGeometry(T, { size : S, height: H, curveSegments: CS, font: F });
      I was interested in the parameters to that code.

      That statement is either completely false or incoherent. Care to give it another go?

      Unless you are rendering bitmap fonts, at some points, your glyph outlines are first rendered to the texture. It may be 2D, chances are it's still done by the graphic card on modern systems.

      Sure. What I'm saying is that, from the numbers you've provided, your product clearly lots of room for improvement. Even with basic Latin, you're averaging 128 triangles/character for flat text!

      Actually, you are right, the code I quickly implemented was counting the array elements, not the polygons. So, roughly, the number of edges, but counting terminating edges in triangle strips multiple times. My bad. I guess I'm getting tired. The point I was trying to make remains valid: some real fonts (as opposed to the toy fonts in Three.js) quickly generate huge amounts of polygons.
      As another illustration of my point about WebGL, I can see the Three.js geometry / text example on my iPad, but not on my iPhone 4 or my Android tablet. Maybe you are more lucky with your BlackBerry...

      I'm still not convinced the project offers anything over existing solutions.

      I'm sorry I did not convince you. But Tao3D does offer a lot over existing solutions.

      First, Tao3D is the only practical solution I know for delivering interactive 3D animations, simulations or presentations quickly. What you can do with Tao3D in 25 lines of code is nearly impossible today with Three.js: no support for real TruType fonts, no text layout for 3D meshes, no RTL text support, etc. And I'm just talking about text here. We can do full slides in 3D with 25 lines of code when Three.js is barely capable of doing one line of text in 600+ lines of code at the moment, and then only with relatively serious 3D programming. Tao3D requires 24 times less lines of code. And you say we bring nothing new?

      That brings me to the second big contribution. Even if you add text layout features to Three.js, you will still be working at the wrong semantic level, talking about meshes and renderers and such. Again, someone might work this out the way Reveal.js attempted to do for slides. But Tao3D does this today. Today, with Tao3D, you talk about "slides" and "paragraphs" and "color", because that's what you care about.

      Finally, a third innovation in Tao3D (though not in the libre edition) is transparent support for practically every stereoscopic or auto-stereoscopic screen under the sun. So you can playback 3D movies without glasses, superimpose 3D text and logos, etc. In the digital signage space, Tao3D brings glasses-free 3D screens at feature parity with 2D screens. And that's also a pretty significant contribution.

      I can understand your need to defend it against any and all criticism, real and perceived

      Not any criticism. Against uninformed criticism, of which there is a lot on Slashdot, unfortunately.

      How is your startup going? What markets have you found the most success? Where do you see the product in the future?

      I noticed your "failing" startup comment earlier, don't worry. Like any startup, not enough cash, too many ideas, not enough people, too many things to do, not enough time.

      Our current markets include exhibitions, e.g. tr

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    14. Re:Point? by narcc · · Score: 1

      I'm not comparing three.js to Tao3D. I was using it as an example of a system that, from the information I had from you, produced 3d extruded text more efficiently.

      There are other 3d presentation offerings: Aurora 3D, intuiFace, Presente3D, Ventuz, and a host of others -- no programming language (obscure or otherwise) required -- that support video & display walls, live data driven graphics and video feeds, etc.

      What does Tao3D offer over competing products like these?

    15. Re:Point? by descubes · · Score: 1

      Ah, I missed your point completely in the GP. Sorry.

      The problem it addresses is the complexity of creating the simplest 2D or 3D scripted animation, and how this process does not scale or compose well.

      Here are a few random examples:
      * Create Christmas card pictures for all my friends that are automatically tailored for each of them.
      * Display fragile objects in a museum, photographed in 3D (or scanned), shown in 2D, in 3D or in glasses-free 3D
      * Display complex data or simulations for a scientist, in a way that can be explored interactively or shown at conferences.
      * Teach about fractals by showing interactive models of various fractals.

      I'm conscious that with enough effort, some of these can be done with other tools. The purpose of Tao3D is to reduce the effort manyfold.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    16. Re:Point? by descubes · · Score: 1

      from the information I had from you, produced 3d extruded text more efficiently.

      Then you misinterpreted the information I gave you, because my point was that designer, ideographic or Arabic font have complex outlines. AFAICT, Three.js cannot use such fonts (maybe there's a trick I don't know).

      What does Tao3D offer over competing products like these?

      These are all great products. What Tao3D offers is:
      1. It's notably cheaper, and now there's also a free software version.
      2. It's a programming language. That being said, I know Ventuz can at least be scripted, not sure about the other two.
      3. Stereoscopy and auto-stereoscopy are just a mouse click away. Ventuz can do some, but it was convoluted last time I checked.
      4. Tao3D automatically checks if media, files, sources changed, and reloads them. Great for remote-controlled updates.
      5. No need to import media, Tao3D uses media in place (that used to be an issue in Ventuz and Aurora3D, not sure if that's still true).

      In a sense, Tao3D is to these tools what a web browser is to Powerpoint: open, extensible, flexible, but harder to get started with. And in this analogy, we see the web-based interface in Tao3D as the equivalent of Wordpress, i.e. a solution to separate concerns between editors, page designers and media content producers.

      Does that make sense?

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    17. Re:Point? by descubes · · Score: 1

      Sure. What I'm saying is that, from the numbers you've provided, your product clearly lots of room for improvement. Even with basic Latin, you're averaging 128 triangles/character for flat text!

      While it's only 128 edges (not triangles, I had misinterpreted what I was counting), it was still worth investigating. And I modified the way Tao emits polygons to be more aggressive for small sizes. I also added user-controllable parameters in case the defaults are not suited for a specific use case. Code reviews and comments are welcome.

      Thank you for your input.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
  7. Not the right way, descubes by vikingpower · · Score: 1

    This is not going to do your project a lot of good. You author the post, and put it on Slashdot, being lucky that you got on the front page. From that point on, it is *very* counterproductive to interfere with the discussion yourself. As other commenters already pointed out: you appear to have a vested interest in your subject, which - in the minds of many /.ers - influences the discussion in an unwanted, "steering" sort of way. Don't be surprised if your post goes into the history of Slashdot with a low number of comments. Next time, refrain from interfering. Good luck.

    --
    Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
    1. Re:Not the right way, descubes by descubes · · Score: 1

      I try to answer questions to be helpful. Sorry if that bugs you.

      BTW, some people see 'descubes' where he isn't ;-)

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    2. Re:Not the right way, descubes by descubes · · Score: 1

      By the way, what I'm looking for is contributors to the project. So yes, I steer. I don't care about the whiners on Slashdot. Their numbers increased steadily over the past few years. It's too bad. I still remember when it was not hard to find interesting comments on Slashdot.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    3. Re:Not the right way, descubes by vikingpower · · Score: 1

      Agree with your remark on the number of whiners, wholeheartedly even. Yet, any message should be tailored, in form and in content, to its potential public; a thing that, I think, you treated a bit lightheartedly. Moreover, if you want contributors, "steering" is going to bring you nowhere. If what you want is the open source paradigm, then give up steering. If you absolutely want to steer, then give up on the whole open source idea. Speaking from experience here.

      --
      Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
    4. Re: Not the right way, descubes by Anonymous Coward · · Score: 0

      I've read this whole thread and I do not see that. descrubs has been upfront about having a vested interest.

      he has replied to questions and has added a good amount of info because he has that background. I think the person involved should be required to take part in the discussions. it helps clear up confusion. keep doing what your doing descrubs. I see nothing wrong with it.

  8. Things you need to fix if you want users by BitZtream · · Score: 1, Informative

    Drop GPL v3, most everyone I know isn't going to touch you with a 10 foot pole if you use GPLv3. Just like using GPL is a matter of principle, NOT using v3 is a matter of principle for many people. Yes, some people like GPLv3, most don't. Do you really want your entire user base to be composed of rabid fanboys?

    Fix your shitty website. You point people to source forge ... which is crappy by modern standards, and then link to your website ... which has basically no useful information what so ever on the front page ... and a link back to sourceforce ... wtf?

    Your website uses arrow keys to navigate? Seriously? Not sure how you could make it any less usable. This alone tells me I don't want to bother with your software any further, you clearly have no concept of staying within established design paradigms and think you can do something better than the standard when you clearly can't. I don't have to go any further to know that you are bad at designing something. You're changing things for the sake of change, not because it does something better. Have you actually used the Internet in the last 10 years? This website is a shining example of how to do it wrong ... and you're trying to push technology when you clearly don't know how to use technology? To use words that match your dated website ... epic fail.

    You're deriving your template language from XL? No point in bothering to continue this discussion, you ... like the authors of XL ... don't get it. Just stop.

    --
    Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    1. Re:Things you need to fix if you want users by Anonymous Coward · · Score: 0

      Your post reeks of envy and has very little actual substance. You can't stand that someone has made something better than you have, so you want to attack it, but all you can come up with are ridiculous complaints about what their website looks like, and not a single thing of substance on the actual programming language and environment.

      Did you use your other accounts to up-vote your own post?

    2. Re:Things you need to fix if you want users by Anonymous Coward · · Score: 0

      Drop GPL v3, most everyone I know isn't going to touch you with a 10 foot pole if you use GPLv3.

      I'd love to know who IS going around touching things with 10 foot poles

    3. Re:Things you need to fix if you want users by Anonymous Coward · · Score: 1

      The person who created it can use whatever license they damn well choose. Many people choose V3 over 2 because it prevents tossers from taking the code and locking it up so it cannot be changed in their products. Many of us do not want that. So do us all a favor, and piss off.

    4. Re:Things you need to fix if you want users by descubes · · Score: 1

      What are the objections of the people you know to GPLv3 for a new project? I know of the objections for Linux. I also know why I like GPLv3.

      The website uses Reveal.js, a presentation framework for the web. I find it useful for tutorials and such. You don't have to like it any more than you have to like the GPL v3.

      I am the author of XL. So I guess I don't get it twice then ;-)

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    5. Re:Things you need to fix if you want users by Anonymous Coward · · Score: 0

      That depends. Ada's failure can to a large extent be attributed that AdaCore's main open source release is under GPL and the runtime needs to be included into any binary executable -- meaning that you can only distribute program compiled with it under GPL! Nobody wants that except people who already GPL everything they do. FSF GNAT comes with a less restrictive license called mGPL that allows you to distribute Ada programs without the source code, but there are still many problems with it. For example, mGPL does not allow you to license your binary under LGPL or BSD, only mGPL again or GPL is an option. The only way you can distribute an Ada program with GNAT that is not license encumbered is to buy a super expensive commercial license from AdaCore. No wonder people lost interest in Ada and it is slowly rotting away into digital nirvana.

      So to summarize, the license matters a lot if you want your language to be successful if binaries have a runtime. I bet Tao3D has a runtime. If so, your binaries will have to be under GPL3 if you distribute them, no matter what the author thinks or claims. Not many people are aware of these little caveats, but for commercial users they can be real pitfalls.

    6. Re:Things you need to fix if you want users by Anonymous Coward · · Score: 0

      The main drawbacks I know of are:

      1) Incompatible with GPLv2 (partly mitigated by the "or, at your option, any later version" language recommended by the FSF, but a bunch of packages don't have that, most notably Linux)
      2) Incompatible with some patent license agreements
      3) Automatically conveys patent licenses to all recipients of the software (I think this is the one that usually makes corporate lawyers go "LOL NOPE")
      4) The anti-tivoization language means that you can't ship the code on some platforms (e.g. game consoles)

    7. Re:Things you need to fix if you want users by tshawkins · · Score: 1

      Lumber jacks, they use them for breaking logjams when floating trees downriver.

    8. Re:Things you need to fix if you want users by Anonymous Coward · · Score: 0

      The core principle of the tool is about design and presentation. In other words, Marketing.
      I think the critique is spot-on, in that if you can't even sell yourself well, how am I to believe the developer to know how we designers work and want in a tool? It doesn't seem like they had a single UX designer on board or even consult.

      On the other hand, this is more comparable to LaTex if it had a PowerPoint equivalent.

    9. Re:Things you need to fix if you want users by Anonymous Coward · · Score: 0

      Those aren't drawbacks. Those are the entire point.

    10. Re:Things you need to fix if you want users by Anonymous Coward · · Score: 0

      The 3D animated backgrounds on your website run at less than 1 FPS in my browser. This makes reading the content almost impossible. The slide system is also quite confusing. I've never seen a website before that tells you to navigate it using the keyboard.

      I recommend making the code examples more prominent (assuming they exist, I couldn't even find them).

    11. Re:Things you need to fix if you want users by Anonymous Coward · · Score: 0

      They are a pity though. We have an in house developed thing with some GPLv3 and GPLv2 in it (only a violation if you distribute it) that could be useful and we would release to the public, but now we cannot do it.

    12. Re:Things you need to fix if you want users by ultranova · · Score: 1

      Drop GPL v3, most everyone I know isn't going to touch you with a 10 foot pole if you use GPLv3. Just like using GPL is a matter of principle, NOT using v3 is a matter of principle for many people.

      Perhaps. But the important question is: are these the kind of people you want within 10 feet of your code, or anything valuable for that matter? After all, GPLv3 was made to close loopholes in GPLv2, so the cynic in me wonders just why one would object to it, unless one was looking towards to exploiting these loopholes.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    13. Re:Things you need to fix if you want users by Half-pint+HAL · · Score: 1

      Punters use them to propel their boats. Actually, 12 foot poles are more common, and that's another variation of the phrase. I suspect the phrase refers to punters using their poles to fend off other boats....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    14. Re: Things you need to fix if you want users by Anonymous Coward · · Score: 0

      it's not just him tho that doesn't like the website. your website is your first line. if that sucks everything else you make people will assume sucks. there have been over 20 comments about how the website sucks, has no clear direction, and finding workin examples
      is a pain in the ass. learn to take criticism, it will help in the future.

  9. Grammar ? by vikingpower · · Score: 1

    Descubes, did you think of putting up a formal grammar for your "language"? E.g. one in BNF ? Or a grammar readable by a widely-used parser generator tool such as ANTLR ? Seriously... !

    --
    Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
    1. Re:Grammar ? by descubes · · Score: 1

      It's a recursive descent parser, which is technical jargon for "I know enough about parsing to drop Lex and Yacc".

      There is a for XLR, work in progress (both the language and the doc).

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    2. Re:Grammar ? by vikingpower · · Score: 1

      Don't care if it's recursive descent or not ( having noted the somewhat high-nosed, arrogant tone of your answer ). I want a grammer. BNF, EBNF, whatever. Anyone into compiler construction and wanting to / trying to use your language would want a grammar.

      --
      Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
    3. Re:Grammar ? by descubes · · Score: 1

      having noted the somewhat high-nosed, arrogant tone of your answer

      Too bad you failed to note how high-nosed and arrogant your own "Seriously...!" sounded :-)

      Anyone into compiler construction and wanting to / trying to use your language would want a grammar

      Let me disappoint then. I don't think you can even write a valid EBNF for XL, it's too dynamic for that. Let me explain why.

      First, scanning and parsing are really very simple. The scanner is 747 lines of code with comments. The parser is 659 lines of code with comments. The scanner produces a stream of tokens. The parser produces an abstract syntax tree built with exactly 8 node types: integer, real, text, name, infix, prefix, postfix or block. The abstract syntax tree is used both for code and for data. A list such as 1,2,3,4 is really a sequence of infix "comma" nodes with integers as leafs.

      What makes it difficult to produce a valid EBNF for XL is that the precedence rules between operators are dynamic. They are initialised from a file called xl.syntax, but they can be changed at run-time. So, of course, I can write an EBNF for if-then-else that would be something like:

      if then else = "if" condition "then" statement "else" statement

      But that would be imprecise. In reality, with the default syntax, if X then Y else Z parses as (infix else (infix then (prefix if X) Y) Z) (using a Lisp-like notation). That happens because of the specifications of infix priorities for then and else given in xl.syntax. Furthermore, the meaning of this particular parse tree is only given by a "rewrite", i.e. a definition such as if X then Y else Z -> ifthenelse(X,Y,Z). It is intentionally not given by a grammar of any kind. Definitions like this are even more dynamic than the priorities. They are the XL equivalent of functions, so you use them all the time.

      Even writing a valid EBNF for integer literals would be hard. XL accepts 16#FFFF_FFFF as a valid integer, but 12#FFFF is not valid because F is not a valid digit in base 12. Ada has the same problem, and most EBNF descriptions of based literals for Ada are wrong. This one for example over-simplifies things and considers 12#FF# as a valid number when I assume any valid Ada compiler would reject it. Of course, you could enumerate all the 36 cases to have a valid EBNF that actually represents the language, but at some point, you have to ask: "what's the point"? And if the idea is to describe a language that is only approximately XL, taking more space to do so than the valid C++ code describing what XL actually is, then that's another big "what's the point" in my book.

      Finally, there are a number of priority-based shenanigans that were introduced to make the language easier to use, but make it even more complicated to describe in EBNF or anything like it. Here are two examples.

      When you read write -A, you normally read this as "write(minus(A))". On the other hand, if you write A-B, you probably read this as "minus(A,B)". It's not logical, but that's how we read. That leads XL to pay attention to spaces surrounding operators to decide what you mean. I hear you "yuck", but it just works.

      Another scenario is even worse. Consider write sin x, sin y. All the people I tried that with read it as "write(sin(x), sin(y))". Problem is that this reveals a priority inversion in our brain. If the comma has lower precedence than function calls, then it should read as write(sin(x)), sin(y). If it has higher precedence, then it should read as write(sin(x,sin(y)). None of them

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    4. Re:Grammar ? by Anonymous Coward · · Score: 0

      Too bad you failed to note how high-nosed and arrogant your own "Seriously...!" sounded :-)

      If you have this kind of attitude, I can see why no one would touch your shit. Have fun going out of business.

      I don't think you can even write a valid EBNF for XL, it's too dynamic for that. Let me explain why.

      First, scanning and parsing are really very simple.

      He asked for any grammar. See, "whatever". Sadly, you're too much of a stuck up prick to be able to cope.

      Again, it's "yuck" for formal grammar nazis. But again, I don't care

      And neither do we. Take your defensive bullshit somewhere else, you stuck up piece of trash.

    5. Re:Grammar ? by Half-pint+HAL · · Score: 1

      Let me disappoint then. I don't think you can even write a valid EBNF for XL, it's too dynamic for that. Let me explain why.

      [....]

      Again, it's "yuck" for formal grammar nazis. But again, I don't care, because it just works.

      Except when it doesn't just work and you have to debug, because then what you describe as "dynamic" starts to feel like "unpredictable" and it takes far longer to work through than it should. I've only looked at a very small example, but I cannot imagine myself ever trying to teach how to program in this language. How do you teach someone to think like something with very little internal logic or consistency?

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    6. Re: Grammar ? by Anonymous Coward · · Score: 0

      hear hear.

    7. Re:Grammar ? by descubes · · Score: 1

      Except when it doesn't just work and you have to debug, because then what you describe as "dynamic" starts to feel like "unpredictable" and it takes far longer to work through than it should. I've only looked at a very small example, but I cannot imagine myself ever trying to teach how to program in this language. How do you teach someone to think like something with very little internal logic or consistency?

      The fact that its grammar cannot be expressed as EBNF (like Ada) does not mean that it's not precise and consistent. You look at some input and at the xl.syntax file, and you know exactly what parse tree you are getting out of that input. You look at the various rewrite rules (the things given by the rewrite operator -> and you know exactly what's going to be executed and why.

      Overall, the grammar is much more consistent than most other languages, if only because it's so small. As I indicated elsewhere in this discussion, scanner and parser together represent some 1500 lines of C++ code, and a syntax file that is currently 62 lines long. A complete and precise description of the core language in plain english takes about 50 pages. Compare that to the 700 pages for the C++ standard, and tell me which one is easier to teach?

      If you want to look at your input in a Lisp-ish syntax, you can, there's an option in the compiler to dump the parse tree in such a format. If you build the command-line compiler for XLR, it will be xlr -parse file.xl -style debug -show. You can also try -style dbghtml to see it create HTML coloured boxes corresponding to the program structure. For example, if you have the default syntax file, input http://pastebin.com/TTbCKshW turns into http://pastebin.com/wxZX2Fc0. It's absolutely deterministic.

      The additional grammar rules I mentioned earlier, e.g. the distinction between statement and expression, are there to match the way we humans read code. That's what concept programming is about.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
    8. Re:Grammar ? by Half-pint+HAL · · Score: 1

      The fact that its grammar cannot be expressed as EBNF (like Ada) does not mean that it's not precise and consistent.

      I wasn't objecting to the fact that it can't be expressed in EBNF, but the reason you gave -- that so much of the language can be redefined at will. Suddenly you have to look in dozens of different places to verify what the most basic features of the language are.

      Overall, the grammar is much more consistent than most other languages, if only because it's so small. As I indicated elsewhere in this discussion, scanner and parser together represent some 1500 lines of C++ code, and a syntax file that is currently 62 lines long. A complete and precise description of the core language in plain english takes about 50 pages. Compare that to the 700 pages for the C++ standard, and tell me which one is easier to teach?

      Lisp has a tiny grammar and a small standard, and that leaves us buggering about with a visual confusion of brackets and parentheses. The point of high-level languages is to impose a more human-freindly logic over the CPU's instruction set.

      What I need is not so much a consistent grammar as a consistent behaviour -- the expressive logic of the language must be consistent, and if the basic behaviour of the language is overridable at will, then it is not consistent from day to day, or from job to job.

      Metaprogramming is a powerful paradigm, because it allows you to take a general purpose language and make out of it a language optimised to the particular task you are trying to achieve. But Tao3D (as you present it) is a language with a very narrow, dedicated purpose: it's 3D-Powerpoint-on-steroids. Why on Earth is anyone going to want to override operator precedence for making a presentation? And once they've done it, are they going to remember they've done it? Are they going to remember the next time?

      If you want to look at your input in a Lisp-ish syntax, you can, there's an option in the compiler to dump the parse tree in such a format.

      That's technically possible with any language. But if I need that to debug my code, then the published spec is inadequate.

      Anyway, I've got a more specific critique here. I'd like to see your response to that.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    9. Re:Grammar ? by descubes · · Score: 1

      Suddenly you have to look in dozens of different places to verify what the most basic features of the language are.

      Not really. The parsing is defined by xl.syntax, a file that currently contains 62 lines, so it's not complicated. The semantics, on the other hand, comes from libraries, including some that are built-in. In the case of base XL, the library components implemented in XL are in builtin.xl, and the components implemented in C++ are in basics.tbl.

      But XL and Tao3D put way more in libraries than regular languages. Remember when we moved from BASIC to C? In BASIC, the 'PRINT' statement was a keyword. In C, 'printf' was a library routine. I argue that the C approach is superior. So of course, an exhaustive catalog of C libraries today is a bit difficult. And there are inconsistencies. But it's still superior.

      Lisp has a tiny grammar and a small standard, and that leaves us buggering about with a visual confusion of brackets and parentheses.

      And XL as a grammar that is just a little bit less tiny, just enough so that you can get rid of the parentheses.

      if the basic behaviour of the language is overridable at will, then it is not consistent from day to day, or from job to job.

      That's already the case in any language today that has libraries provided by more than one person. Where is the consistency between C's printf, C++'s iostream and Qt's logging facilities?

      XL helps you create new notations that are well suited to the task at hand. It does help you make these notations consistent or useful, not any more than a C compiler makes the name of your C functions consistent or useful.

      Why on Earth is anyone going to want to override operator precedence for making a presentation?

      Because it lets me define operators such as * ** and *** for bullet points, for example, so now I can write slides like this:


      slide "Example",
      * "First level bullet"
      ** "Second level bullet"

      There are more interesting things you can do with custom notations. Here is an example using the Animate module:


      import Slides
      import Animate

      picture_slide "Page 1",
      page_duration 10
      [0..3, ]
      color "red"
      circle 300 * smooth_ratio, 100, 20
      [0..3, ]
      color "blue"
      circle 300 * ratio, 0, 20

      [0..6, 9..10]
      color "green"
      circle 300 * down_ratio, 0, 20

      mouse_x in [0..1000]
      color "pink", 0.3
      rotate_z 90 * ratio
      rectangle 0, 0, 300, 200

      picture_slide "Page 2",
      page_duration 2, "Page 1"
      story
      text "We'll return to page 1 shortly"

      Once you have learned that Animate gives you a notation [A..B] to indicate when to do something, that the notation X in [A..B] is the same thing with arbitrary values (not just the page time), and that there are variants such as [A..B, C..D] for back-and-forth motion, it becomes really useful, easy to read and quick to write. I can't voucher for your capability to remember this notation, but it turns out this one I did not invent, yet I use it regu

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
  10. More annoying presentations by umafuckit · · Score: 1

    In my experience, a lot of the best talks I see are the ones with the most simple slides (e.g. little text and little distracting material). Speakers who pull this off are generally the ones who know their shit and are good at conveying it. Talks with too much text, too many images on one slide, or too many effects (ahem) are less likely to be good. These really over-the-top presentations are like excalamation marks after the punchline of jokes. If what you have to say isn't interesting then you won't make it so by embelishing it with irrelevent crap. For this reason I have not motivation whatsoever to invest time in making flashy presentations.

    1. Re:More annoying presentations by Anonymous Coward · · Score: 0

      You don't get it. He's not trying to tell you that presentations everywhere are supposed to look like what he demos on the screen, and that everybody must change, he's showing you that there is a great language and environment for making interactive presentations in 3D.

    2. Re:More annoying presentations by Anonymous Coward · · Score: 0

      descubes, give it a rest. You're the ONLY ONE HERE saying it's a great language, because you're the only one who knows how to use the damn thing. How stupid do you think we are? You stick out like a horse's dick.

      This sockpuppet bullshit doesn't help your image. Which is already shit. You're a stuck up prick who can't take constructive criticism and have NO idea what other developers want.

    3. Re:More annoying presentations by Half-pint+HAL · · Score: 1

      You don't get it. He's not trying to tell you that presentations everywhere are supposed to look like what he demos on the screen, and that everybody must change, he's showing you that there is a great language and environment for making interactive presentations in 3D.

      But in his own demos, he trips into the "too much potential results in too much noise" trap -- he adds letter codes to the base proteins in the DNA helix, in default black, then forgets to change the colour before applying the space theme, at which point they're hidden and promptly forgotten about.

      Besides, that whole demo has no persistent representation of the structure, except one that is hacked in by spiking the random number generator with a seed so that when the 3D objects are generated from the ground up on every redraw, they look like the same thing. This isn't user-friendly logic.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  11. More Than 3 Clicks by Anonymous Coward · · Score: 0

    I second this. There should be examples on the first page, so can so how the language looks and feels. For example, looks like ALGOL-68 and feels like Logo.

  12. Unity + (JavaScript | Boo | C#) by Flammon · · Score: 1

    I wonder if the Unity + (JavaScript | Boo | C#) combination would produce better results and in less time. The nice thing about using Unity is that you will eventually be able to run the apps in a browser without a plugin. http://arstechnica.com/gadgets...

  13. Smalltalk made new keyword creation easy in 1980 by Paul+Fernhout · · Score: 3, Interesting

    http://en.wikipedia.org/wiki/S...
    "Control structures do not have special syntax in Smalltalk. They are instead implemented as messages sent to objects."

    Smalltalk still has one of the best programming syntaxes, IMHO because it clearly tags each argument in a complex message like "widget placeAtX: 10 y: 20.". And Smalltalk is gradually being reinvented piece by piece ranging from things like the Java JVM to things like JavaScript's object literals and JSON, e.g. the Smalltalk looking: {x: 10, y: 20}. As another comment pointed out, Forth, Joy, Lisp and other languages also support this in various ways (Lisp very painfully compared to the others via hard-to-write macros).

    Also, why do people keep making new languages with new syntax (generally with poor to missing error messages, debuggers, IDEs, documentation, and libraries) when we would so much more benefit from improved FOSS libraries for existing ones? I'd be a lot more excited about Tao if it was a JavaScript library that just supported some special format INI files. It seems like Tao has some impressive libraries for real time graphics that would be nice for anyone to use. Why hide the library for most users behind some new syntax? Most of the hard work must have been creating the library I would guess?

    Of course, I know the answer to that. :-) Writing new programming languages is fun, and I have done it before myself more than once. I still have some more ideas I'd like to try out, like to take Smalltalk and have it use C-like comments and string and have a different (hopefully faster) approach to dispatching messages. And to some extent, every major programming problem we solve requires writing a sort of mini-language in terms of function names and such to define a problem space and possible solutions.

    It's sad that we got stuck with JavaScript and all its warts just because someone had to rewrite Scheme from scratch with a C syntax in two weeks to stick it in an early browser. Brendan Eich made an unfortunate choice about default variable scope and not including modules from the start based on the idea it would only be for small one page scripts (plus various other warts and complexities like relating to closures and variable scopes, variable hoisting, and so on).

    Looking at a bit of the Tao overview video on SourceForge, it looks like variables don't need to be declared (ick!). Also, requiring "locally" seems to imply that it has one of the worst "features/bugs" of JavaScript design for default globals? Or maybe I did not understand "locally". The main aspects of the language (like what is a code block, what is an argument) don't seem clear at first glance to me, perhaps because of various keywords being defined or seeing commas some places and not others?

    I find the use of a comma without inner parentheses interesting for functions and arguments, where the comma in a sense is doing what Smalltalk keyword colons are doing. Still, it misses labelling arguments like Smalltalk, and why not drop the commas and just have all arguments separated by spaces and instead require nested expressions to be surrounded by parentheses if you are going in that direction? For example: "translate -500 100 (10 + x)"

    I like the clean looking syntax without semicolons at the end of lines. I'm assuming it uses indentation after a comma to define code blocks? Although maybe not, since I only see that at the top level? So, some interesting ideas and I wish it well. It it ran on JavaScript, maybe I'd try it today...

    If you're the author, despite any criticism above (just half-baked opinions from watching the video for a few minutes on-and-off while writing this), I'd still encourage you to keep moving forwards with it. Looks like a lot of fun! And it is exploring some new ideas and the library looks amazing. There is no question popular computer languages (Java, JavaScript, C++) have many warts and someday it would be great to have better langua

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  14. Funny!!! by Paul+Fernhout · · Score: 1

    "Oh darn, you're right! Let me upgrade my trollbot.
    $ sudo apt-get upgrade systemd
    There we go, much bett
    KERNEL PANIC"

    LOL!!!

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  15. asm.js and emcriptem by Paul+Fernhout · · Score: 1

    I looked at the link you mentioned in another post: http://www.taodyne.com/shop/de...
    "Taodyne's current technology is written in C++. It uses Qt for the user interface, and OpenGL for the drawing code. It also uses other components that might be a bit difficult to adapt to a web environment, notably LLVM. We can think of a few possible strategies to adapt this technology to the web: ..."

    For a port to the web, you could try asm.js and emscriptem:
    http://en.wikipedia.org/wiki/A...
    http://en.wikipedia.org/wiki/E...

    Here is an example:
    https://blog.mozilla.org/blog/...
    "Mozilla and Epic Games have showed the power of the Web as a platform for gaming by porting Unreal Engine 3 to the Web and showcasing Epic Citadel, using asm.js, a supercharged subset of JavaScript pioneered by Mozilla. In less than 12 months, optimizations have increased the performance of Web applications using asm.js from 40% to within 67% of native, and we expect it to get even faster. This performance opens up new opportunities for giving users an astonishing and delightful experience, from within their choice of Web browser. Any modern browser can run asm.js content, but specific optimizations currently present only in Firefox, ensure the most consistent and smooth experience. "This technology has reached a point where games users can jump into via a Web link are now almost indistinguishable from ones they might have had to wait to download and install," said Brendan Eich, CTO and SVP of Engineering at Mozilla. "Using Emscripten to cross-compile C and C++ into asm.js, developers can run their games at near-native speeds, so they can approach the Web as they would any other platform.""

    You could also help Chrome improve its asm.js speed and get at least two major browser to have better 3D support, which would help everyone. Why not ask Google for some funding to do that, building on what you have so far? Good luck!!!

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  16. Related issue to your insightful point by Paul+Fernhout · · Score: 1

    http://www.npr.org/blogs/allte...
    "He says it was as if "we removed the PowerPoint slide, and like a big glass barrier was removed between the speaker and the audience. "The communication became a lot more two-way instead of just the speaker speaking at length for 15, 20 minutes. The audience really started to come alive, to look up from their laptop computers and actually start participating in the discussion, which is what we were really trying to foster.""

    That said, I still think more tools for empowering people to more easily make educational 3D presentations and such is a good thing. I think the long-term potential of something like Tao3D could be along those lines. Of course, there is already Alice and some other similar things:
    http://www.alice.org/index.php
    "Using an innovative programming environment to support the creation of 3D animations, the Alice Project provides tools and materials for teaching and learning computational thinking, problem solving, and computer programming across a spectrum of ages and grade levels."

    Although, I don't think Alice runs in a web browser, and it Tao3D moved to run in a browser that might be interesting (although it does not now).

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  17. Re:Smalltalk made new keyword creation easy in 198 by descubes · · Score: 2

    Your post is long, so I'll only address a few snippets by lack of time.

    Also, why do people keep making new languages with new syntax (generally with poor to missing error messages, debuggers, IDEs, documentation, and libraries) when we would so much more benefit from improved FOSS libraries for existing ones? I'd be a lot more excited about Tao if it was a JavaScript library that just supported some special format INI files.

    The answer is complex. I try to address it in this article. It's not just for the sake of inventing a new language, it's because what I wanted to do I could not do with JavaScript.

    Looking at a bit of the Tao overview video on SourceForge, it looks like variables don't need to be declared (ick!).

    Variables need to be declared, but an assignment does declare a variable in that scope.

    Also, requiring "locally" seems to imply that it has one of the worst "features/bugs" of JavaScript design for default globals? Or maybe I did not understand "locally".

    The 'locally' function does not concern variables, but graphic state. It's a way to say "I don't want this rotation to escape this block". In OpenGL terminology, you can think of it as a PushMatrix/PopMatrix pair (and same for other attributes).

    The main aspects of the language (like what is a code block, what is an argument) don't seem clear at first glance to me, perhaps because of various keywords being defined or seeing commas some places and not others?

    I find the use of a comma without inner parentheses interesting for functions and arguments, where the comma in a sense is doing what Smalltalk keyword colons are doing. Still, it misses labelling arguments like Smalltalk, and why not drop the commas and just have all arguments separated by spaces and instead require nested expressions to be surrounded by parentheses if you are going in that direction? For example: "translate -500 100 (10 + x)"

    If you define something like:

            translate X Y Z -> translate X, Y, Z

    then you probably are close to what you want. In practice, this forced me to add many parentheses (as you just did), and I found using a low-priority comma to separate arguments was much more practical.

    I like the clean looking syntax without semicolons at the end of lines. I'm assuming it uses indentation after a comma to define code blocks?

    Yes.

    It it ran on JavaScript, maybe I'd try it today...

    If someone wants to give Emscripten a try ;-)

    If you're the author, despite any criticism above (just half-baked opinions from watching the video for a few minutes on-and-off while writing this), I'd still encourage you to keep moving forwards with it. Looks like a lot of fun! And it is exploring some new ideas and the library looks amazing. There is no question popular computer languages (Java, JavaScript, C++) have many warts and someday it would be great to have better languages (again though, Smalltalk and message passing is my favorite, even as I move to JavaScript now for various reasons).

    Thanks for the encouragements.

    Still, if you haven't already, you might want to make an ANTLR ( http://www.antlr.org/ ) grammar for Tao3D and generate JavaScript for a backend to the animations which uses asm.js for speed and so it can run easily in a web browser. Then people with a compatible recent browser could just click on a link and be up and running with Tao.

    I have other plans to achieve that same effect. What out for Buddda ;-)

    --
    -- Did you try Tao3D? http://tao3d.sourceforge.net
  18. XL looks pretty neat! by Paul+Fernhout · · Score: 1

    http://xlr.sourceforge.net/

    I like expandable languages (although they can suffer from developer confusion reading new constructs and now knowing what they do, depending on how easy it is to go to the source of the new construct, which is why I like Smalltalk's keyword approach integrated with its code browser). When I made another comment above about creating an ANTLR grammar for Tao3D to make it more portable, I did not realize you had created XL and it underlies much of the Tao3D language. So, I'd suggest instead you could add a new backend for XL so it can output JavaScript (ideally in asm.js format). Then, if you could compile your C++ to asm.js with emscripten, with a little bit of JavaScript framework magic, you might quickly have a version of TaoJS that runs in a web browser.

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  19. Also on indentation-based languages like XL by Paul+Fernhout · · Score: 1

    A thread started by me in 2000 to comp.lang.lisp: https://groups.google.com/foru...

    A site on indentational Lisp by someone else: http://readable.sourceforge.ne...

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  20. Re:Smalltalk made new keyword creation easy in 198 by Paul+Fernhout · · Score: 2

    Thanks for the reply, especially explaining "locally" (I was starting to wonder afterwards if it indeed was about 3D transformations not variables). Interesting point on commas vs. parens for clarity; I'll have to think about that.

    Could not easily find a Google ref for "Buddda". :-)

    On JavaScript, it is a frustrating language to work with, with several major design flaws. I'm using it right now for a mid-size project (dozens of pages in a single-page app, collecting 500+ different pieces of data, using Dojo) and it is painful and dragging on (even in just Java, it would have been done much faster). But, inspired in part by Dan Ingall's work on the Lively Kernel, plus what many other peopel say and do who all agree how badly JavaScript sucks, the fact that it runs (in theory) everywhere with one click is the big win. The URL is the biggest innovation there. As I've said before, if it does not have (or run from) a URL it is broken.

    Everyone agrees JavaScript sucks:
    https://www.google.com/search?...

    There are many such things on the web:
    "Why JavaScript Sucks And You Should Use It Everywhere"
    http://www.youtube.com/watch?v...

    It mentions asm.js, BTW.

    Check out where the implementer of Smalltalk (Dan Ingalls) is doing now (very dynamic JavaScript): http://www.lively-kernel.org/

    Perhaps the fairest thing to say about JavaScript though is:
    https://news.ycombinator.com/i...
    "[JavaScript] is actually a very strong language with a few very well known warts (like every other language on the planet has). The problem is that people try to use it as if it were Ruby, PHP, Python, Java. One can do that, but just know that it is an exercise in futility. It will cause frustration and one will come to the conclusion that JavaScript sucks when in fact, it is just that most people don't really take the time to _understand_ JavaScript."

    A big issue with JavaScript in practice for simulation (typical to go with 3D) though is that, by default, it is essentially single-threaded (yes, other things are possible with webworkers and separate processes and such, but not in practice for most users). Having spent years debugging subtle issues with Java threading in a huge real-time-ish high-visibility high-availability app, I'm not fully sure that's a bad thing though. :-)

    BTW, I think there are lots of value to making a big project FOSS, but rapidly getting contributors to do major changes right away (like a move to a web browser via JavaScript and emscripten) is generally not one of them. The big win is often when being free and available brings in small polishing changes and add-ons and also, if the software is written in a modular way to begin with, getting major new modules as part of an ecosystem -- as well as getting broader adoption by being free and open to increase demand for the core developers' other services and related books and training and other addons and so on. In practice, the learning curve for any major project is just too high for a casual use to make a significant core change, and even if they do, the core maintainers may reject the change or make other changes separately that cause bitrot in the change. If emscripten would just run on the core code, maybe someone would try it. But my guess is it require some code changes to the C++, changes to XL as mentioned elsewhere to output JavaScript, other changes to work with OpenGL as you mention on the page, and some JavaScript glue code to have an app, so non-trivial enough that few people will try it as a first thing (unless maybe they already have used emscripten several times). With an expected big effort, then the question is, what is the payoff for taking the risk? That payoff is going to be much bigger for the original authors probably than for some ra

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  21. Tao3d Comments by Anonymous Coward · · Score: 0

    What kind of people are these that use vulgar, profane language in these posts. Personally, such people's critiques should be ignored and consigned to the local sewage inlet. A very sad comment on contemporary society.

    1. Re:Tao3d Comments by Paul+Fernhout · · Score: 1

      "What kind of people are these that use vulgar, profane language in these posts. Personally, such people's critiques should be ignored and consigned to the local sewage inlet. A very sad comment on contemporary society."

      Just as a guess, putting any person-to-person (mis)communication or personality aspects aside, I think a lot of programmers are frustrated with the state-of-the-art in programming. Examples include the proliferation of JavaScript despite its needlessly confusing warts and missing pieces (same and worse for PHP), Java not fulfilling its promise of ease of installation with lots of versions despite stealing Smalltalk's thunder and having vast amounts of money poured into it, C++ being so confusing and easy to shoot yourself in the foot with, a huge proliferation of half-finished languages, Python and Perl splitting with major new not-backwardly-compatible versions, version, a proliferation of mostly similar FOSS licenses and yet incompatibly-licensed code you can't legally use or distribute together, too many buggy libraries that do almost the same thing and much of what you want but have somewhat different bugs, entrenched awkward "scripting" languages with low performance and are not really much easier to use than other languages for anything substantial or that needs to be maintained or debugged, lack of good documentation for so many projects, badly written software that is hard to understand yet does useful things, lack of tests, vast amounts of computing power in hardware but seeing it frittered away or not being able to easily access it or it being wasted on supporting huge amounts of duplicated inefficient code including likely several different interpreters, library dependency hell, bit rot including of FOSS contributions getting left behind, layer upon layer of abstraction ignoring more abstraction can't solve the issue of too much abstraction, confusing conflict-of-interest marketing information to sort through, data encoded in proprietary or unusual formats and so hard to use, a proliferation of confusing or intentionally limited "standards", the frequent ignorance of the history of programming among programmers who have not lived it, and so on.

      For anyone who has programmed for decades and seen what it felt like to use Forth, Smalltalk, BASIC on a C64, or even an assembly language monitor, there is some huge mismatch these days between what we *feel* should be possible and the systems we are in practice forced to work with these days either for economic reasons or reasons of trying to get incremental changes adopted. Notice I said "feel should be possible", so it is a feeling or aspiration -- whether it is reasonable expectation is another issue.

      That frustration may express itself as profanity when a programmer see resources (including just getting a Slashdot discussion going) going to new projects that don't seem to really address or acknowledge these fundamental issues. Worse, new projects that don't recognize these issues may just be adding further to all the confusion and complexity (yet another syntax to learn and guess at for ambiguities, yet another lack of documentation, yet another maybe great library that is effectively unusable because of the complex interdependencies or choices about context like desktop vs. web, etc.).

      Contrast with Alan Kay's Fundamentals of New Computing (FONC) project which at least acknowledges some of these issues even if it may not fully deliver on all or even many of them (and I have my own criticisms on stuff FONC has ignored).
      https://mail.python.org/piperm...
      https://www.mail-archive.com/f...

      I 've suggested it's possible Linus Torvald's profanity also has some of the same roots of frustration at overwhelming complexity and harder-to-manage risks because of it:
      "[fonc] Linus Chews Up Kernel Maintainer For Introducing Userspace Bug - Slashdot"

      --
      A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  22. Re:Unity + (JavaScript | Boo | C#) by LifesABeach · · Score: 1

    I'm just considering "Responsive Design," maybe someone could demonstrate?

  23. Tried to install on Yosemite - failed: by Anonymous Coward · · Score: 0

    Application Specific Information:
    dyld: launch, loading dependent libraries

    Dyld Error Message:

        Library not loaded: @rpath/QtWebKitWidgets.framework/Versions/5/QtWebKitWidgets

        Referenced from: /Applications/Tao3D.app/Contents/MacOS/Tao3D

        Reason: image not found

    1. Re:Tried to install on Yosemite - failed: by descubes · · Score: 1

      Sorry about that. Bug in the packaging script. Should be fixed now.

      --
      -- Did you try Tao3D? http://tao3d.sourceforge.net
  24. Sigh. Another useless programming language by Anonymous Coward · · Score: 0

    Really? You want to go back to re-inventing the wheel just because you can?
    From reading the specification, it is less useful, slower, and require more bizarre "features" of the host than existing languages.

  25. Elm by stephenmac7 · · Score: 1

    So, this is basically an open core version of Elm but with an emphasis on 3D and presentations.

    --
    "No man's life, liberty, or property are safe while the legislature is in session." -- Judge Gideon J. Tucker
    1. Re:Elm by Half-pint+HAL · · Score: 1

      If it is, then the Elm is a lie. Elm claims to be functional, but Tao3D certainly isn't, with prodecures changing obscured persistent state.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  26. Re:Smalltalk made new keyword creation easy in 198 by Half-pint+HAL · · Score: 1

    Also, requiring "locally" seems to imply that it has one of the worst "features/bugs" of JavaScript design for default globals? Or maybe I did not understand "locally".

    The 'locally' function does not concern variables, but graphic state. It's a way to say "I don't want this rotation to escape this block". In OpenGL terminology, you can think of it as a PushMatrix/PopMatrix pair (and same for other attributes).

    So does this mean that Tao3D is call-by-value by default, and this explicitly breaks it to (effectively) call-by-value, rather than leaving the programmer to hack around with statics or constants and individual copies of arguments?

    I like the clean looking syntax without semicolons at the end of lines. I'm assuming it uses indentation after a comma to define code blocks?

    Yes.

    Semantic whitespace makes me sad. :-(

    --
    Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  27. Re:Smalltalk made new keyword creation easy in 198 by descubes · · Score: 1

    Semantic whitespace makes me sad. :-(

    Maybe you never had to work in a large project where the project most productive guy did no care about indentation at all. Whitespace has a semantics for our brain, so we might as well make that consistent with the code. It reduces syntactic noise, in concept programming jargon.

    --
    -- Did you try Tao3D? http://tao3d.sourceforge.net
  28. Re:Smalltalk made new keyword creation easy in 198 by descubes · · Score: 1

    So does this mean that Tao3D is call-by-value by default, and this explicitly breaks it to (effectively) call-by-value, rather than leaving the programmer to hack around with statics or constants and individual copies of arguments?

    The locally function is conceptually equivalent to running its argument surrounding it with graphics state save/restore code. That's about it. So you can't deduce anything about call-by-value from it.

    Now, to address your question in short, XL uses call-by-reference, and lazily evaluates the arguments as required to perform the call. Cases where you need to evaluate include: having to check against a type that is not "tree", comparing against a pattern, comparing for identity between arguments. For more details, see section 3.3. "Evaluation" of https://raw.githubusercontent..... You can also explicitly evaluate something with 'do'. In the 'if-then-else' definition given elsewhere, there is a 'do' for the bodies, to force evaluation of only that argument to if-then-else corresponding to the condition. If the condition is true, you only evaluate the true clause. If it's false, you only evaluate the false clause.

    --
    -- Did you try Tao3D? http://tao3d.sourceforge.net
  29. Re:Smalltalk made new keyword creation easy in 198 by Half-pint+HAL · · Score: 1

    Semantic whitespace makes me sad. :-(

    Maybe you never had to work in a large project where the project most productive guy did no care about indentation at all. Whitespace has a semantics for our brain, so we might as well make that consistent with the code. It reduces syntactic noise, in concept programming jargon.

    I like to let my IDE correct my indentation in such situations. I know what's coming next... "ah, but the diffs..." but that's a problem with the diffs, not the code. If the diff algorithm treated non-semantic whitespace non-semantically (ie multiple whitespace treated as single whitespace, as an HTML parser does) then it wouldn't be a problem, and the diffs would show up the actual material differences (the changes in start-block and end-block markers), and my IDE could set the indentation depths to my preferences, and adjust them based on screen and font sizes (so that I can debug on a netbook what a colleague wrote on a 24" monitor.

    --
    Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'