freenode/#lisp - IRC Chatlog
Search
23:48:16
borei
i just did timing for nested loops for 4x4 - best i was getting ~2700 cycles, in most cases it's in 4-5k range
0:40:09
drmeister
ACTION is a daily 5+year slime/emacs user who switched 5 years ago after 20 years as a vi/vim user.
0:40:56
drmeister
I'm giving a talk next week to non-lisp people many of whom use vi and I want to check out slimv
2:08:01
shrdlu68
How widely used are non-free implementations, and what is attractive about them over free implementations?
2:13:21
aeth
shrdlu68: Probably hard to tell because this is Freenode, and that gives us a skewed view.
2:15:02
aeth
shrdlu68: The advantages of proprietary CLs are, afaik: (0) IDEs that aren't emacs, (1) graphics toolkits, (2) standalone binaries with tree shaking.
2:17:14
aeth
shrdlu68: The advantages of proprietary CLs are, afaik: (0) IDEs that aren't emacs, (1) graphics toolkits, (2) standalone binaries with tree shaking.
2:18:36
aeth
Not too surprising that the idea came from Lisp. You're probably not going to use the majority of the large language in any application.
2:19:57
Pixel_Outlaw
Seems like with functions being first class data types that would be difficult since they could be bound and executed at runtime.
2:20:54
Pixel_Outlaw
You may have a slot in a CLOS instance a user is allowed to assign but may not.
2:21:12
shrdlu68
Tree-shaking sounds like a rather attractive feature. Is is particularly difficult to implement?
2:24:17
aeth
Oh, I forgot. There are some other value-added things that a proprietary CL might have. They might embed a database or a Prolog, etc.
2:26:28
sjl
drmeister: a few of us have switched to VLIME from SLIMV, so that's something to check out as well
2:29:16
aeth
shrdlu68: If no one can answer your question, you could try asking in the implementations' IRC channels about what it would take in a particular implementation.
3:17:47
pierpa
shrdlu68: commercial implementations all have free limited versions to try, so just try them
3:36:26
rme
Somehow, the LispWorks people are able to make a living selling a CL implementation. I think that's amazing (and admirable).
3:36:39
pjb
shrdlu68: tree shaking is not more complicated than the garbage collector. eg. ccl has a :purge option to save lisp image. The only difference is that with tree shaking you will start from a smaller root set, assuming that you won't have to further reference any interned symbol.
3:39:20
rme
And Clozure's business has never been selling a CL implementation (namely Clozure CL) as a product.
3:40:00
pjb
Indded, they cheated with consulting. (But Franz does consulting too AFAIK, and probably Lispworks also).
3:49:57
aeth
pjb: There are a surprising number of commerical Lisps. At least Allegro, LispWorks, Scieneer, and mocl. Genera might also still count, since I think it's still being sold.
3:59:35
rme
If you can get $3000/yr/copy for 200 or 300 copies, you'd be doing OK. You won't be earning big money, but that would be enough for a sustainable little business.
4:01:26
pjb
rme: that said if the business sells free-software implementation, it remains in the charter AFAIK.
4:43:52
pjb
JuanDaugherty: remove taxes, overhead, shareholders' share, I'm not even sure you can pay 2 engineers with that…
4:44:38
pjb
And contractors are not cheaper than employeers. The advantage of contractor is that you don't have to pay them when you don't have work for them.
4:49:34
JuanDaugherty
which is why the major firms virtually all supplement their wage slaves with contractors
4:53:24
loke
pjb: WHat kind of buffer do you have? In the sense that if you stopped getting contracts tomorrow, how long would you last before having to look for wage-slavery?
4:53:56
JuanDaugherty
however to directly deal with free labor would be like tolerating the striking of a white man, so they virtually all deal with front firms that actually hire the contractors
4:54:06
pjb
loke: of course it's variable. From a few months to almost one year, depending on the previous project…
4:54:44
pjb
wxie: well, it was so long ago, I don't know if it would still be meaningful. Basically, at that time, there were so few programmers, that just announcing you were one, you'd get calls.
4:55:17
loke
That means I have enough buffer in cash (about a year or two on current burn-rate) to actually go ahead and do what you're doing.
4:55:40
JuanDaugherty
and even in 2018 said firms, which uniformly add nothing to the labor they resell, in general, operate at unknown markups
4:55:44
pjb
JuanDaugherty: And foremost, to deal with the details of the hiring process. Only programmers can hire programmers; customers rarely are in the programming business.
4:56:13
pjb
wxie: it happens some times. But it's not worth it, since being employed is usually being paid less…
4:57:09
pjb
JuanDaugherty: it's not the worst: you may be at the end of a long chain of subcontractors…
4:57:23
JuanDaugherty
the firms that hire contract labor are almost always either as their main line of biz or defacto in IT
4:58:25
JuanDaugherty
uh, that may be one thing that's changed somewhat, more parties than 3, 4 at most
4:58:26
pjb
For example, a bank wouldn't care hiring programmers. Instead they contract with a company to furnish the programmers. This company may be lazy and hire head hunters to find them, and so on.
4:58:54
loke
pjb: Actually, many banks have their own programmers. Some banks have more than others.
4:59:19
loke
pjb: Certain banks have more well-staffed development teams than major banking software makers.
4:59:23
pjb
Also for the bank, if they need to change the work load, or need to replace a programmer, it's simplier for them to delegate the HR problems to the contracted company.
5:00:12
pjb
Of course, a company that realize that software is the core of their know-how would want to have the development done in-house…
5:02:06
pjb
wxie: in general, you can use MIT or BSD -like license, but if you want to contribute back, you have to go thru their legal departments, and you never hear back from them.
5:05:35
pjb
wxie: if you remain the owner of the software, then you can license it as you wish. Very few (ie. none) customers are aware enough of the licensing question to care.
5:07:02
pjb
wxie: basically, if you sell a proprietary license to your software, you can sell cheap a non-exclusive license, but then you can sell copies to their competition!
5:10:24
wxie
pjb: I do not have any software to sell, and would never sell any under non-free license.
5:12:00
wxie
pjb: Maybe we can think over a time-bounded free license: if the customer owns the software, she should agree that you can publish it under free license after a certain time.
5:28:34
Xach
Shinmera: Thanks. I didn't realize that's how it works. The example in the readme didn't drive it home for me.
5:28:56
borei
read some perfomance reports in regards to matrix multiplication and CPU performance. found that what i got now is 1% of possible performance
5:29:56
beach
borei: I think you are working in a highly competitive domain. A lot of smart people with a lot of money have worked on this problem for a very long time.
5:32:05
beach
borei: I don't think such performance is reachable using only the standardized features of any language, Common Lisp included.
5:34:53
beach
Like I said, you have chosen a very competitive domain. You have a lot of reading to do if you want to compete.
5:43:13
pierpa
btw, wikipedia says the best known algorithm for matrix multiplication is O(n^2.3728639)
5:44:38
pjb
It's worth implementing it, it looks like. (/ (expt 1000 2.3728639) (expt 1000 3)) #| --> 0.013139899 |#
5:45:54
rme
IIRC, the magnitude of the constant factor is so high for the O(n^2.4) algorithm that it is totally impractical.
5:46:38
pjb
Of course, if you're doing 4x4 it's probably not worth it. But for 1000 or 1000000, I'd bet any overhead is worth it.
5:49:19
rme
Strassen's algorithm, which is O(n^2.8) IIRC, is actually worth it for relatively small matrices. But I'm remembering this from quite a while ago.
5:50:26
pierpa
I heard Prof Romani (whose algorithm was for a period of time, in the '80s the best known) talk about this topic.
5:51:16
pierpa
his opinion was that algorithms asyntotically faster than Strassen are not usable in practice
5:52:05
pjb
Well, "However, the constant coefficient hidden by the Big O notation is so large that these algorithms are only worthwhile for matrices that are too large to handle on present-day computers." so perhaps we'll have to wait a little ;-)
7:08:26
Shinmera
Xach: Yeah, I realise that should be clarified. I can also see a point to your attempted use-case, but I don't know if it would lead to more or less confusion in the long run.
8:39:37
loginoob
I don't know lisp and javascript and i heard someone in my office saying js is a lot like lisp. Is it true?if it is then how?
8:41:24
Shinmera
Okey: JS is a horrible mess of a language that was born out of a mistake. Common Lisp is a carefully crafted language designed by a committee of experienced and intelligent people.
8:41:37
beach
I don't know JavaScript, but I think I have heard that its object system is prototype based as opposed to that of Common Lisp that is class based.
8:43:10
Shinmera
People like to think that JS is like Lisp because it has closures, but almost every language nowadays has closures, so really that's not an argument.
8:46:56
loginoob
I am new to programming and i trying to learn haskell first and then i will learn lisp
8:50:18
loginoob
Code can be treated as data. Is this ex correct of former?We can add a functionality to emacs by writing lisp macros.
8:51:18
beach
loginoob: Common Lisp macros provide a mechanism for syntactic abstractions that is absent in most other languages.
8:53:51
beach
Macros are used when new syntax is desired. One can view macros as a way of programming the compiler to recognize new special forms.
8:55:38
beach
A "special form" is a form that is typically fixed in most languages, such as WHILE or FOR or IF. In other words, it has an evaluation rule that is different from that of a function call, so it can't be programmed as a function.
8:56:13
beach
In Common Lisp, macros make it possible to create new operators that have a specific evaluation rule.
8:57:29
beach
So in most languages, it would be impossible to create a new operator like for instance IFNOT that reverses the order of the THEN and ELSE branches. But in Common Lisp it is trivial to create such a thing.
8:58:30
beach
loginoob: Also, some languages such as C claim to have macros, but those macros are text transformers, making it very hard to create robust and correct macros.
8:59:32
beach
Common Lisp macros work on code as S-expressions which is how Common Lisp defines the internal representation of code.
9:19:50
aeth
Lisp has syntax made from s-expressions (with lists made from conses; macros follow directly from this), symbols, a read-eval-print-loop, garbage collection, closures, the numeric tower, etc.
9:20:29
aeth
Some things like REPLs, GC, and closures are in most languages now so they're not really notable features anymore.
9:23:18
aeth
A lot of other things are still (afaik) rare outside of Lisp, e.g. the numerical tower. https://en.wikipedia.org/wiki/Numerical_tower
9:24:12
aeth
That's what people were talking about when they said JS just has (double) floats and doesn't have rational numbers.
9:26:26
aeth
In CL (/ 4 3) is 4/3, compared with 4 / 3 producing 1 (e.g. Python 2) or 1.3333333333333333 (most scripting languages, including JavaScript)
9:33:26
loginoob
only fractions with denominator which has power of 2 can be stored finitely in binary form ?
9:34:53
Shinmera
rational numbers require finite storage. irrational numbers require infinite storage.
9:36:28
beach
Since 0.1 and 0.2 do not have exact representations in binary floating point, the sum will not be exactly 0.3.
9:37:22
beach
loginoob: When we say "rational numbers" in relation to Common Lisp, we mean numbers that are stored as such, with exact values, so that 1/3 * 3 = 1 exactly as an integer.
9:37:33
aeth
You can express any rational, as long as you're willing to store it as arbitrarily long data. e.g. (/ (expt 2 320) (1+ (expt 2 320))) produces a very long rational number in CL. Try to convert it to a double float and you'll just get 1.0d0 because it's too big for the finite representation of double float.
11:26:44
JuanDaugherty
ftr, there are a number of famous relations between two integers, so it's not just, it's them and that relation
11:44:01
Shinmera
Xach: I updated the readme with an additional note about it. Hopefully it's clearer now.