Live data from Hacker News

Lispers

lispers.org

81–90 of 110 posts

Re: Lispers

#81
post #79
post #72

Earlier quoted context omitted.

That depends. Several mildly large programs have been written in Lisp. There should be code bases for applications reaching or surpassing ten million lines of Lisp code. There also should be code bases with relatively complex code, which have been maintained for more than a decade. For example the Cyc system is under continuous development since the mid 80s. A dialect like Common Lisp was designed such that applicati…

>A dialect like Common Lisp was designed such that applications in the large are possible. Interesting. Can you mention some of the Lisp language or other features that help with that?

Note that in a large Lisp system you need certain features at compile time, but some will help at runtime (like the error handling system) to make large software debuggeable, more robust, or both.

* namespaces for symbols, in earlier days Lisp had a flat namespace

* compilation of files, means in a large system you can use 'ahead of time' compilation, where the compiler might give a lot of diagnostic messages. There is very little penalty to that, basically one can compile always and interactively.

* type declarations/hints which can be used for optimization, type checks -> see SBCL and CMUCL, and documentation

* lots of declaration forms which can be checked at compile time or runtime

* macros which can be expanded at compile-time. This can create early warnings/errors.

* function arglists, where the usage can be checked at compile-time (missing arguments, added arguments, ...)

* keyword arguments, which makes code more readable

* a very elaborate error handling system, which can not only catch errors, but which can be used to interactively or automatically repair some errors. Thus you don't get 'program crashed', but a handler gets called in the error context, which than can use provided explicit restarts. Errors types can be organized in an ontology with inheritance.

* runtime assertions and type checks work with the error system

* documentation features included: many declarations allow documentation strings

* robust runtimes which by default prevent corrupting the running Lisp as much as possible. Some earlier Lisps created unsafe compiled code. By default I would expect a Common Lisp system to detect all kinds of wrong access to data structures at runtime.

* optimizations, which can be restricted to certain code blocks

Plus

* an object system which can be used to provide extensible software, typically used to structure larger software. Also provides multi-methods which prevent being called with arguments of wrong types at runtime. Multiple inheritance. This allows a lot explicit structure in larger applications, which also can explored by reflection and which can be tailored for specific needs.

* features like macros and reader macros can increase the code density in larger software -> fewer lines of code and domain level code. By default Common Lisp favors larger identifies, but in larger codebases macros can significantly reduce code size and make external tools like preprocessors obsolete.

A different development methodology:

In static languages you tend to statically compile a program, build it, start it, test it. May be in some debug mode or with some kind of extension language interface.

In Common Lisp one may develop with a build while it is running and then make sure that these builds can be reproduced by compiling/loading the whole thing. This can reduce the typical development cycle time drastically. But different development models are possible: fully batch, pre-compiled + interactive, fully interactive.

Re: Lispers

#82
post #64
post #57

Earlier quoted context omitted.

Real apps has been built with lisp so therefore it's at least some what practical. On the other hand I just cannot see anything fundamental which makes lisp lot less practical from many commonly used business languages. Well ecosystem size may not same but on day one most languages haven't Hugo ecosystem. There are lot of schools and if you are "be a cool web app developer"-school where you learning direct skills rea…

> But if you are "computer SCIENCE"-school and you targeting variety of fundamental cocepts of field I say that lisp is quite essential. I'm sure you've nothing to do with compsci because lisp is a useless language family. If anything is recommended than it's rust, c and idris.

> I'm sure you've nothing to do with compsci because lisp is a useless language family. If anything is recommended than it's rust, c and idris.

Scheme is particularly suited to parsing, interpreting and compiling.[0][1] There's a reason GCC's internals often look like Lisp.

If you exclude language design from computer science, then maybe Lisp becomes a "useless language family", but there's a reason MIT Scheme was created.

[0] https://mitpress.mit.edu/sicp/

[1] https://en.wikipedia.org/wiki/Lisp_in_Small_Pieces

Re: Lispers

#83
post #66

Earlier quoted context omitted.

> Javascript IS a powerful language with features that were not in other mainstream language for decades and some still don't have: first class functions, dynamic typing, lambda functions, closures etc. You only have to look at the diverse uses of Javascript to appreciate how far that power goes. This is ridiculous and it just shows how you don't have any experience with ML languages. > As for the warts of JS any exp…

Your only criticism of anything is "you don't have any experience in that" which is quite hilarious. Thanks for the trolling.

Your sentences are the same : "it's so powerful" - it's ridiculous that there are ppl who call themselves programmers and still like js.

Re: Lispers

#84
post #82
post #64

Earlier quoted context omitted.

> But if you are "computer SCIENCE"-school and you targeting variety of fundamental cocepts of field I say that lisp is quite essential. I'm sure you've nothing to do with compsci because lisp is a useless language family. If anything is recommended than it's rust, c and idris.

> I'm sure you've nothing to do with compsci because lisp is a useless language family. If anything is recommended than it's rust, c and idris. Scheme is particularly suited to parsing, interpreting and compiling.[0][1] There's a reason GCC's internals often look like Lisp. If you exclude language design from computer science, then maybe Lisp becomes a "useless language family", but there's a reason MIT Scheme was cr…

You can do that more efficiently with any ML language.

> There's a reason GCC's internals often look like Lisp.

Dude, that notation is not original to lisp...

Re: Lispers

#85
post #81
post #79

Earlier quoted context omitted.

>A dialect like Common Lisp was designed such that applications in the large are possible. Interesting. Can you mention some of the Lisp language or other features that help with that?

Note that in a large Lisp system you need certain features at compile time, but some will help at runtime (like the error handling system) to make large software debuggeable, more robust, or both. * namespaces for symbols, in earlier days Lisp had a flat namespace * compilation of files, means in a large system you can use 'ahead of time' compilation, where the compiler might give a lot of diagnostic messages. There…

That's a lot of points. A few of them are there in other languages (e.g. compilation, keyword arguments, etc.) but I can see that there are many points which I am not aware of in some other languages. Thanks for the detailed reply.

Re: Lispers

#87
post #85
post #81

Earlier quoted context omitted.

Note that in a large Lisp system you need certain features at compile time, but some will help at runtime (like the error handling system) to make large software debuggeable, more robust, or both. * namespaces for symbols, in earlier days Lisp had a flat namespace * compilation of files, means in a large system you can use 'ahead of time' compilation, where the compiler might give a lot of diagnostic messages. There…

That's a lot of points. A few of them are there in other languages (e.g. compilation, keyword arguments, etc.) but I can see that there are many points which I am not aware of in some other languages. Thanks for the detailed reply.

Many things (like compilation) are not that special, but having it in a dynamic (-> at runtime changeable) language with a lot of flexibility is slightly different.

Re: Lispers

#88
post #84
post #82

Earlier quoted context omitted.

> I'm sure you've nothing to do with compsci because lisp is a useless language family. If anything is recommended than it's rust, c and idris. Scheme is particularly suited to parsing, interpreting and compiling.[0][1] There's a reason GCC's internals often look like Lisp. If you exclude language design from computer science, then maybe Lisp becomes a "useless language family", but there's a reason MIT Scheme was cr…

You can do that more efficiently with any ML language. > There's a reason GCC's internals often look like Lisp. Dude, that notation is not original to lisp...

> You can do that more efficiently with any ML language.

So first you say Lisp is useless in compsci because of the existence of "rust, c and idris", and now its pointless to use it because of ML?

> Dude, that notation is not original to lisp...

Firstly: Have you actually looked at an MD file? [0] RTL is a Lisp dialect.

Secondly: The first paper on S-Expressions appeared in November, 1997. McCarthy's first paper on what would become Lisp in 1982. I'm aware of no language, and can find reference to no language, that used that notation before Lisp did, so yes it is original to Lisp.

[0] https://gcc.gnu.org/git/?p=gcc.git;a=blob_plain;f=gcc/config...

Re: Lispers

#89
post #65

Earlier quoted context omitted.

This book is very very very old. It basically belongs to an era when AI was mostly concerned with symbolic computation. AI nowadays has taken a whole different path with neural networks.

I'm curious: does "Artificial Intelligence: A Modern Approach" by Russell and Norvig also belong to a long-gone era?

That book is in Python. The argument here was about using Lisp for AI.

Re: Lispers

#90
post #65

Earlier quoted context omitted.

I'm curious: does "Artificial Intelligence: A Modern Approach" by Russell and Norvig also belong to a long-gone era?

That book is in Python. The argument here was about using Lisp for AI.

So you mean that had it been "Paradigms of Artificial Intelligence Programming: Case Studies in Python" it would not be a very old book, belonging to an era when AI was mostly concerned with symbolic computation? Ok.
Post reply on HN