ScholRLEA's fetish for licensing and LISP thread



  • OK, I was busy all morning and didn't have the time to reply, so I'll try to get a few responses in:

    @blakeyrat said:

    You know what helps me solve actual problems? When you use C# to connect to databases, it does connection-pooling by default (where applicable). Because there's no reason not to do it, Microsoft just shrugged and said, "hey why not?" and so it does. That's code that I, as an application developer, don't have to write. When I write my code in C#, my database accesses are just automatically many times faster than other languages, and I didn't have to do shit.

    You aren't arguing the language, you're arguing the libraries. As others have already said, this is apples and oranges.

    I'll admit that the standard libraries for both Common Lisp and Scheme are shit, each for their own reasons (CL because it is simply old and hasn't been updated since the late 1980s, Scheme because the maintainers are a bunch of ivory-tower fanatics who care less about being useful than they do about being 'pure'). Worse, the language standards are so loosely interpreted that third-party libraries almost never work on more than a few specific implementations. One of my goals with Thelema is to address exactly those problems, with a fully modernized library and a single definitive implementation a la Perl or Python.

    @blakeyrat said:

    The purpose of programming isn't to wank-around writing "clever" shit. (For the nerdy-geek programmer's definition of "clever", which is pretty much the opposite of the normal person's.)

    I have to agree that this is a common problem among Lisp coders, especially when they are trying to impress non-Lispers. Again, part of my goal is to make the new dialect more practical and usable.
    @blakeyrat said:
    Right; but then you leave the company, and who maintains it? Sounds like LISP is a write-only language, like Perl only more irritating.

    Again, this is a common problem, but it is as much because of the limits of the existing library support, as it is about the language itself. It does take a certain amount of discipline to use it well, but isn't that true of any language?.



  • @blakeyrat said:

    ScholRLEA said:
    but the Lisper sneers at the limitations of these,

    You ain't gonna make any friends by sneering.

    That's actually why I said it; Lisp has had a real problem with self-righteous advocates. I'm trying to rein in any tendencies towards that, in myself, though I doubt I've succeeded.



  • It, um, sort of went the other way, I'm afraid.


  • ♿ (Parody)

    @ScholRLEA said:

    I have to agree that this is a common problem among Lisp coders, especially when they are trying to impress non-Lispers. Again, part of my goal is to make the new dialect more practical and usable.

    Have you tried Go?



  • @ScholRLEA said:

    You aren't arguing the language, you're arguing the libraries.

    If the language (in this case, C#) invariably comes with the libraries, I don't see the point in differentiating between the two.

    Compare that to, for example, JavaScript which definitely can and is used in tons of places without the DOM library attached, which is why I'm always pedantic dickweedish about people making complaints about "JavaScript" that are actually complaints about DOM.

    @ScholRLEA said:

    Worse, the language standards are so loosely interpreted that third-party libraries almost never work on more than a few specific implementations.

    Uh-huh.

    @ScholRLEA said:

    One of my goals with Thelema is to address exactly those problems,

    Mmm. Someone link this kid to that famous blog posting about RSS syndication standards-- or the XKCD comic based on it works, too.

    @ScholRLEA said:

    with a fully modernized library and a single definitive implementation a la Perl or Python.

    You're gonna need a lot more than $50k. You'll spend $50k on the date/time stuff alone.

    @ScholRLEA said:

    Again, part of my goal is to make the new dialect more practical and usable.

    Mmm.

    @ScholRLEA said:

    Again, this is a common problem, but it is as much because of the limits of the existing library support, as it is about the language itself. It does take a certain amount of discipline to use it well, but isn't that true of any language?

    The problem is, here in the real world, programmers don't have "a certain amount of discipline". You were just criticizing people for being ivory-tower a few paragraphs ago, and now you're pulling the same shit.

    Can I ask a serious question? Have you ever worked at a medium/large company that writes software?

    @boomzilla said:

    Have you tried Go?

    LISP versus GoLang.

    In this corner, weighing-- well I don't know but let's assume it's in the 95 lb range-- Ben L., the Gosling GoLanger! In this corner, weighing-- well again I don't know but let's assume 350 lbs min.-- ScholRLEA, the Light-Headed LISPer!

    *ding*

    Fight!



  • @cartman82 said:

    There are better reasons why C# is better than Lisp. Like how you don't need to be a math genius, and yet are able to write better performing and cleaner code than in Lisp.

    I would disagree on the 'cleaner' issue, but that's a subjective matter; what isn't is performance. While Lisp (especially Scheme) has a terrible reputation for inefficiency, a lot of that is due to really poorly written, naively implemented interpreters written by students. If your impression of C++ was based on the compilers produced during a semester undergrad class, what would you think of the language's performance? Also, many implementations - especially Racket and MIT Scheme - are focused on being easy to use by students rather than fast and tight, and as a result have terrible performance. A good Scheme or Common Lisp compiler such as Ypsilon or Allegro produces object code comparable to GCC, or better (not that GCC is a paragon of efficient compilation). Compare the results of Scheme code massaged by the Stalingrad compiler to C++ code compiled by Visual C++ and tell me whether it is close or not.

    OK, I'm getting a bit overwrought here; the point is that implementations vary greatly in their performance. If IronScheme had the same performance on the CLR as C#, you would be able to judge the languages on their respective merits, and while I don't doubt that most people would still prefer C#, I think you'd be surprised how many converts Scheme would get.


  • ♿ (Parody)

    @ScholRLEA said:

    Stalingrad compiler

    I didn't think it was possible to have something with a worse name than GIMP, but now I know.



  • I think Git is worse than Gimp, personally. Now that I think about it, Lisp is pretty bad if you type it as a non-acronym. Scheme's a pretty good name though.


  • BINNED

    You spent two long paragraphs addressing the excuse for not using Lisp (slow performance) and completely ignored the reason for not using Lisp (the perception that you have to be a math genius to use it). For someone who is actively working on a Lisp implementation, this is a very bad thing.

    Filed under: have fun in the Lisp dialect graveyard



  • @blakeyrat said:

    I think Git is worse than Gimp, personally. Now that I think about it, Lisp is pretty bad if you type it as a non-acronym. Scheme's a pretty good name though.

    Don't forget that Linus Torvalds apparently made it self-referential just like he did in naming Linux but it's always been kind of suspected he had one of the other core kernel devs in mind after their issues with BitKeeper.



  • I can't get too annoyed, because back in the day I had an idea to create a programming environment like RealBasic (for those who remember that-- I think it's called like Xojo now?), but using JavaScript as the underlying language. I even wrote some code towards it when Google made their V8 engine public.

    The workload in creating a useful standard library for desktop apps is really what killed off the project and all enthusiasm for it. And V8 includes the Date/Time and Math stuff, so it was already taking a lot of work off the plate.



  • @antiquarian said:

    You spent two long paragraphs addressing the excuse for not using Lisp (slow performance) and completely ignored the reason for not using Lisp (the perception that you have to be a math genius to use it). For someone who is actively working on a Lisp implementation, this is a very bad thing.

    True. Performance is nice, but the look & feel is much more important for long term success. See ruby.



  • Not that I endorse the insanity by the OP in this thread, but JavaScript was based somewhat on Scheme .... and JavaScript is being (ab)used for almost every programming purpose these days.

    As for the other nonsense about there being chartered programmers, there is almost no-correlation I have seen between self-taught developers and developers who did a related course at University ... fuck I pretty much got through my degree from reading the docs and Googling.

    As other have said in this thread a lot of the big shake-ups in the industry is by start-ups that just have a great idea, otherwise we would have a world where there was IBM and Oracle with horrendously expensive underpowered hardware and the micro-computer revolution would have never happened.

    Yeah most code isn't ideal but it gets the job done nonetheless and that is what matters at the end of the day.



  • I have to admit, I have come to see the flaws in my (admittedly extreme) views about licensing and software quality requirements; the idea simply isn't workable, and would be disastrous in practice.

    On the aesthetics and efficacy of programming notations, however, I keep my own counsel. I don't have any real intention of changing your minds, either; I was asking for advice on how to fund my project, after all, not proselytizing for my work or soliciting opinions as to whether it should proceed or not. Shall we agree to disagree on this matter, then?


  • Grade A Premium Asshole

    When it comes to funding something, there are a lot of avenues. None of them would work for you though. No bank, VC or Angel will touch you because it has very little likelihood of ever making money. Kickstarter and the like will not work because it is not cool enough, but is as preposterous as potato salad, so who knows? Roll the dice.

    The only possible way I see to fund something like this is with income and positive cashflow from something else. It is the only option I see being viable. But you may as well take the money and burn it. At least it would keep you warm and light the room for a short period of time?



  • There's no shortcut to wisdom.

    You're back to "big-ass loan".



  • What about if this was done as a university project? They might like the Lisp revolution thing and have some money to throw away at projects from which there's no expected profits.

    Although the lonely spinster and the bank loan ideas might be easier to pull off from the practical side.


  • Discourse touched me in a no-no place

    @Intercourse said:

    The only possible way I see to fund something like this is with income and positive cashflow from something else. It is the only option I see being viable.

    Or get lucky and have an early success. That's why Javascript got real traction. That's why most successful languages got that way. (Possibly even all.) You'll never understand how to succeed if you only look at post-selected winners; you gotta look at the losers too (even if to find out things to avoid).

    @ScholRLEA said:

    I have to admit, I have come to see the flaws in my (admittedly extreme) views about licensing and software quality requirements; the idea simply isn't workable, and would be disastrous in practice.

    It definitely wouldn't work without at the very least having some legal changes in there, and the size and profitability of the software industry is such that getting those changes through now is… quite thoroughly unlikely. ;-)

    My key advice is this: don't try to build out the standard library by yourself. It's too much work, tens of thousands of man-years of work. By comparison, a language can be implemented by one person in a few weeks (but it might take quite a bit longer to do an efficient implementation). Leveraging an existing environment and its libraries will accelerate things to the point of being useful enormously. You can always go back and replace things piecemeal later once you're past the initial hump.

    Aside from that, define your USP, your goals and (critically) your non-goals before you go further. You can revise them later, but understand why someone else would want to use your system (as opposed to the thousands of competitors), what you're trying to do and what you refuse to do (so limiting scope creep, which is a project killer).



  • Yeah and come up with a much better elevator pitch. One that doesn't rely on the elevator being a Ramada Inn model climbing up the Burj Khalifa. Hook 'em in the first hundred words.


  • Grade A Premium Asshole

    Hundred words? Your elevator pitch better be a LOT shorter than that.



  • Nah, if you can say it all in one breath you're good.


  • Grade A Premium Asshole

    I am coming down with some sort of chest cold. I would be lucky to say 10 words without a breath right now.


  • Discourse touched me in a no-no place

    @Matches said:

    Nah, if you can say it all in one breath you're good.

    Do it like Eminem…


  • Grade A Premium Asshole

    @dkf said:

    Do it like Eminem…

    I fail to see how spousal abuse will help the situation.



  • @cartman82 said:

    So while we may flirt with functional paradigm, I don't think we will ever accept it the way we did OO.

    The venerable master Qc Na was walking with his student, Anton. Hoping to prompt the master into a discussion, Anton said "Master, I have heard that objects are a very good thing - is this true?" Qc Na looked pityingly at his student and replied, "Foolish pupil - objects are merely a poor man's closures."

    Chastised, Anton took his leave from his master and returned to his cell, intent on studying closures. He carefully read the entire "Lambda: The Ultimate..." series of papers and its cousins, and implemented a small Scheme interpreter with a closure-based object system. He learned much, and looked forward to informing his master of his progress.

    On his next walk with Qc Na, Anton attempted to impress his master by saying "Master, I have diligently studied the matter, and now understand that objects are truly a poor man's closures." Qc Na responded by hitting Anton with his stick, saying "When will you learn? Closures are a poor man's object." At that moment, Anton became enlightened.

    From: http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg03277.html

    @cartman82 said:

    True. Performance is nice, but the look & feel is much more important for long term success. See ruby.


  • Discourse touched me in a no-no place

    @Intercourse said:

    I fail to see how spousal abuse will help the situation.

    No, I was referring to how he's the record holder for most words per second in a piece of popular “music”, which I was reading about in the newspaper recently. No idea what he was talking about in it, of course.


  • Grade A Premium Asshole

    @dkf said:

    No idea what he was talking about in it, of course.

    Coincidentally, neither did he.



  • @ScholRLEA said:

    Does the industry need slowing down? I would say yes.

    I would say no, because engineering is an expression of human evolution. To slow a part of it down reduces the chances of our survival as a species in the long term.

    The modern issues with software engineering, such as persisting old and broken technology, and poor quality code, are likely to work themselves out eventually. There will always be barely-reliable cutting-edge software until somebody makes something better, and old, broken technology still exists for a reason. I'd like to be learning python, but I couldn't get the webserver to work, meanwhile apache/PHP just about works. There might be other reasons for persisting PHP as well (I hear it's pretty old and broken) other than legacy systems.

    I've written bad quality code because the deadline is yesterday and I had to fit a month of work into a week. Would a license have gotten the code out sooner and in better quality? No, but the guy setting the deadline actually listening to me when he specifically asked the question and not countering my answer with "but that's too long!" would have resulted in better quality code. Maybe there should be a license to be a manager.

    There might be some problems that software engineering licensing could fix, but the vast, vast majority of issues I've seen were to do with somebody senior being a very poor strategist, long before we got actually coding the software. When I finally got to working in a place where the 3rd-party provider was generally the problem, I would say sales and advertising standards (he basically lied about what they could provide) could have been a better-regulated area. Maybe salesmen should have licenses.

    Overall this might be a big-government vs small-government debate, but I don't think slowing down the software industry will solve anything. I say more engineers and more competition will resolve the issues. I currently work in a stimulating utopia where 80% of the company knows how to do advert tags, and I get the impression that this is the modern way we should be doing things.


  • Grade A Premium Asshole

    Just be honest with customers. Like everything else you have three possibilities: high-quality, fast and cheap. You get to choose two of those. We can write high-quality software quickly, but it will cost a mint. We can write high-quality software cheaply, but it will take forever as we fit it in during lulls in other projects. Most people choose fast and cheap though, which means they get a crap product in the end.


  • BINNED

    As I mentioned before, I have long suspected, and @cartman82 seems to have confirmed, that the real reasons why people don't use Lisp are more psychological than technical. The biggest reason is the perception that you need to be some kind of genius to program in Lisp. That isn't true, but it is the perception, and Lisp advocates are most likely making it worse. They will typically answer the question "why should I use Lisp instead of x?" with a demonstration of something that is relatively easy in Lisp that would take a lot of work in other languages. Which technically does the job, but the average developer looks at the code and thinks "there's no way I could have ever come up with that."

    So that's the problem. I'm not sure how you fix it, though I'm sure creating yet another Lisp is not the answer. Even if you think you can do better than Rich Hickey did with Clojure, there's still the issue above.

    What to do then? A good place to start would be telling the truth about macros: if you're writing application code, you don't need to write macros to be effective in Lisp. Even if you're writing a library, you shouldn't be writing a ton of macros, and the ones you do write should be aimed at making life easier for the people who will use your library.


  • Discourse touched me in a no-no place

    @Intercourse said:

    three possibilities: high-quality, fast and cheap. You get to choose two of those.

    You get to choose at most two of those, but often you only actually have one. Occasionally you end up with none, which is when the project should FOAD for the good of humanity…


  • Discourse touched me in a no-no place

    @antiquarian said:

    A good place to start would be telling the truth about macros: if you're writing application code, you don't need to write macros to be effective in Lisp. Even if you're writing a library, you shouldn't be writing a ton of macros, and the ones you do write should be aimed at making life easier for the people who will use your library.

    A bit like templates in C++ ought to be treated then.



  • The thing about php is that I can build something relatively quickly and decently if I use a decent framework.

    While python is a better language, I don't know it well enough to write good python code. I can write sensible code, but it certainly isn't pythonic, it looks like someone trying c# in python.

    Php is good enough for 95% of web work, it doesn't matter if there is something better ... It is good enough most of the time.



  • @antiquarian said:

    As I mentioned before, I have long suspected, and @cartman82 seems to have confirmed, that the real reasons why people don't use Lisp are more psychological than technical. The biggest reason is the perception that you need to be some kind of genius to program in Lisp. That isn't true, but it is the perception, and Lisp advocates are most likely making it worse.

    I actually gave it a go, as I did with most languages (maybe not Lisp itself, but one of the clones / variants). I can understand the normal functional stuff and I actually use that all of the time in other languages. But as you start adding layers and making non-trivial programs composed solely of functions, I get lost.

    Furthermore, while I like functional snippets used here and there, I don't see what I gain by giving up all the super-useful OO and procedural stuff. For me, it's like making a meal entirely out of spices. I'm sure there are gourmands who can handle that, but for most people, a little salt on top of their cheeseburger is good enough.

    I fully admit that if I started learning programming through Lisp instead of procedural and objective languages, I might GET it. Investing more time and effort might also get me there. But to get me to do that at this point, you'd need to give me something really special. As in, a practical thing, that would make my job demonstratively easier than it is now. And so far, the only functional language that comes even close is Erlang. Lisp is nowhere near there.


  • BINNED

    @cartman82 said:

    Furthermore, while I like functional snippets used here and there, I don't see what I gain by giving up all the super-useful OO and procedural stuff.

    This sounds like you have Lisp (was it Scheme?) confused with Haskell. Common Lisp supports both OO and procedural programming, and both are commonly used.



  • @antiquarian said:

    This sounds like you have Lisp (was it Scheme?) confused with Haskell. Common Lisp supports both OO and procedural programming, and both are commonly used.

    Hmm, ok, I tried a bunch of these. I think one of them was full of corners.

    I'm not going to critique the language any further, as I obviously don't know enough. I'll just reiterate that I'd need

    • a good understandable syntax
    • good community support (docs, help, libraries, editors)
    • a killer app / feature that will make my actual tasks easier

    to adopt a new language. From what I've seen, Lisp has none of this.


  • BINNED

    The first two things are examples of what I've been saying are excuses for not using Lisp. I'm not saying they aren't issues; I'm saying people won't use Lisp even if those issues are fixed. Clojure has made changes to make the syntax friendlier, and Clojure programs can access everything in Java, but it's still a niche language at best.

    I'm curious about the third thing. What would count as a killer app/feature in your opinion?



  • @antiquarian said:

    I'm curious about the third thing. What would count as a killer app/feature in your opinion?

    HA! That's the trick, isn't it? Many maintainers throw some money and talent at the problem, and fix issues #1 and #2. But #3 is a bitch. I bet authors of Clojure would pay good money if you could tell them what is the secret sauce they're missing.


  • BINNED

    Ruby obviously has Rails, but what were the killer apps/features for Perl and Python? What about C# and Java?


  • ♿ (Parody)

    @antiquarian said:

    What about C# and Java?

    Corporate behemoths.



  • @antiquarian said:

    Ruby obviously has Rails, but what were the killer apps/features for Perl and Python? What about C# and Java?

    • Perl: strings
    • Python: radical shift in syntax, math
    • Java: garbage collection, powerful mentor
    • C#: tooling, .NET libraries, powerful mentor


    • PHP: available just about everywhere


  • Correct. Also, could run as module in apache, which was also exploding at the time.



  • @cartman82 said:

    - Perl: strings

    • Python: radical shift in syntax, math
    • Java: garbage collection, powerful mentor
    • C#: tooling, .NET libraries, powerful mentor

    Don't forget Spring and Hibernate for Java. At least if you're writing webapps.


  • Discourse touched me in a no-no place

    @powerlord said:

    Don't forget Spring and Hibernate for Java. At least if you're writing webapps.

    Actually, the whole JEE space (including Spring and Hibernate) is part of Java's secret sauce. The language itself is fussy and bureaucratic, with some horrible mistakes in some low level APIs1, but the JEE ecosystem is too good to ignore. (C# also does well in this space; which people go for tends to depend on the platform that they're preferring to deploy on.)


    1 If I find the idiot that fucked up java.lang.Process in a dark alley, only one of us will be coming out alive.



  • @dkf said:

    Actually, the whole JEE space (including Spring and Hibernate) is part of Java's secret sauce. The language itself is fussy and bureaucratic, with some horrible mistakes in some low level APIs1, but the JEE ecosystem is too good to ignore.

    But to what extent do the deficiencies of the Java language and it's idioms make things like Spring and Hibernate even necessary?

    Maybe the ecosystem only seems great because the language is so miserable.



  • @Bort said:

    But to what extent do the deficiencies of the Java language and it's idioms make things like Spring and Hibernate even necessary?

    Maybe the ecosystem only seems great because the language is so miserable.

    This. Besides, Clojure has no issues interacting with the JEE ecosystem (not that you always need to).

    Most Lisps simply don't have the full palette of libraries a more mainstream language has, which makes it very hard to get real work (tm) done with them. Clojure, by virtue of being a JVM language, is probably the closest anyone will ever come to fixing that. (And this is speaking of someone who has a backend ETL + eventually statistics job in the pipeline, written in Clojure.)



  • TBH I find these days the language is somewhat irrelevant when doing webapps ... it is all about the framework you are using unless you are doing something like WebRTC or High Frequency push applications (and then it still doesn't matter that much).



  • You've given me quite a bit to think about, actually. One of the problems I have had is the scope of the projects - an assembler and linker, libraries for supporting ELF and PE object file generation, a multiboot-compatible boot loader, the Thelema language itself, a vast and modern library to go with it, and as piece de resistance, a radically new operating system employing most of those tools for development. I'm projecting a good ten years out before I start to see the real results I am aiming for, even with full-time funding. Realistically, I am hoping at best that I will get at least one or two pieces of it done in my lifetime.

    I desperately need to focus on the shorter term, and I know it. I have written out a series of milestones for the rest of the year, but even those are likely to be too ambitious. I haven't thought nearly enough about why and what it is all for, beyond my personal satisfaction and ego gratification.

    I am beginning to think that I should focus mainly on Assiah (and to a lesser extent, Alfheim, which Assiah will require later), as it fits a fairly unique niche - a very tiny one, true, but a unique one. While there are a few high-level assemblers out there (including at least one by that very name), and s-exp based assemblers have existed before (but never caught on - who wants an assembler that is more verbose than the conventional ones?), I don't know of any modern multi-platform assemblers with a low-level base but really high-level macro facilities. If nothing else, I'll take the lessons learned from it in my later work, and hopefully get a small core of users in the process. More likely, this will simply remain a hobby project for me.



  • @Bort said:

    But to what extent do the deficiencies of the Java language and it's idioms make things like Spring and Hibernate even necessary?

    Maybe the ecosystem only seems great because the language is so miserable.

    Hibernate is a replacement for JDBC as a cleaner way to do database access. JDBC is itself technically part of J2EE, but parts of J2EE have been sliding back into the core Java distribution for a while now... the web services stack arrived in Java6 for instance.

    Spring is just a better way to do web pages instead of the old Servlet/JSP pair.


Log in to reply