Excuse me, when I said "Vertex3f" I meant "Vector3f". суббота, 14 сентября 2013 г., 15:14:01 UTC+4 пользователь Alex Fowler написал: > > Timothy, thanks,for giving a thorough answer to my questions, I appreciate > this! As far as I understood, you did some work for Clojure team, and you > have the necessary knowledge to express a knowing opinion on what are the > implications of the matter. That was one of the things I wanted to know - > the cause of the present situation. However, still I don't understand > (although you mentioned a reason) why no one from the core team gives a > definite, cut-off answer, like the one, Mikera is also asking for - what is > for the future? Probably, as somebody mentioned here (sorry, I look and > can't find the message, deleted?), the question would probably be better > addressed to clojure-dev. But I have no good knowledge of Clojure internals > and would be easily suppressed by an answer of a person, showing a > technical knowledge, like yours. Yes, I understand what you're saying, but > I do not have knowledge of Clojure or JVM to answer you on par. Simply I do > not know what to say, although I feel there is a break between JVM and > Clojure that should not be. And I feel, that you have a right in what > you're saying - you know the language, you know the people here, more than > me. But not to let a discussion on such a topic to die, here I am glad that > Mikera, someone who has that knowledge, can sympathise me and say what I > cannot say. > > James, for some numbers on OpenGL penalties, please refer to message #6 in > thread (my initial answer for Timothy). You can also google on it, I am > sure, you will find more information, or, why not, simply call NVIDIA or > ATI support lines, and ask them. A perfectly valid question for them to > consult you on :) As for more Java-friendly answers, you might also be > interested in asking on LWJGL or JOGL forums. Personally I work with OpenGL > for quite a long time already. Even when we were on C/C++ we never used > doubles. Then we went Java, and there too, doubles are nowhere. One of the > cornerstone computational workhorses of LWJGL, for example, the class > Vertex3f, has no double version. And that is for a reason, not because Java > bindings are bad and we must go C-plus-plusing now. Probably, after 10 > years we will have only doubles and longs on GPUs... do you believe in it? > Why we need them there at all? > > I still strongly believe that primitives support should be made one of the > highest priorities to support. > > Lets look from a perspective of someone who researches the language, > considering if to adhere to it. Here is a couple of frustrations that hit > me so much that I think could even diverse somone from using the language. > Warning: the following three points may cause rage in some individuals > (they do cause a rage in me at least, because I really like Clojure) : > > 1) Clojure is said to be "data-oriented". Rich Hickey says that in the > videos. Cool! I have a stream of millions floats and ints to be processed > on the fly! Now we find that it is not data-oriented. It is double, long > and Object oriented. Data does not just come as "information" it comes with > its data-type. Bending data-sources and data-consumers to your will usually > does not sign a good data-processing. > 2) Clojure is said to make simple things easy. Alright, that's a PC in > front of me? With a JVM? Alright, I want to add,multiply, divide and > subtract some billion floats. What could be simpler?... Uh... typehints.. > alright, sure JVM is typed, we have types in Java and Scala, that's ok! Oh, > only local... oh, still always returns doubles... err.. boxed? Cast? Oh... > 3) As Mikera pointed out, some libraries, like "fast arrays on Clojure" > is just.. a little bit too much. Are they faster than Java arrays? A > library that implements fast arrays for a language that runs on a VM that > has fast arrays? For a language, claimed to be perfect for data-processing? > There is nothing wrong with the library, I think it is a masterpiece, but > something scares me here. > > Surely, preserving semantics while letting full primitives support for > Clojure, as it is right now, is a challenge. I really like the symantics as > it is now, but the cost is too great. The examples that Timothy and Mikera > are discussing right now is a problem. Some my ideas, although I am not as > professional with them and some of them might not make sense at all (sorry): > 1) In computations you do not often use functions that compute floats to > compute ints instead. Usually you know what are you computing. I wouldn't > switch, say spatial vector calculations from floats to ints under any > circumstances. Remember Java - when you write signatures of your > computational functions - how often do you change types? float<->double or > int<->long maybe, but still not likely. Even on a lisp. > 2) That leads to the other question - what if you *still* somehow want to > reuse a computational function for other types? Well, maybe you could make > functions named (+f) or (+i)? Or have a macros that builds them for you and > calls them for you? > 3) To simplify furhter: can a primitive typization of a function be > specified by some clever tag in metadata? > 4) Can functions working with primitives and the other functions be > separated? I.e. functions working with primitives only take in primitives. > 5) If working with primitives would introduce more burden to the user, > could macros help? > 6) To avoid the aforementioned explosion, can a functional interface, as > proposed, be synthesized, with some static field hint for Java to not lose > the interop? > >
-- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.