14 ms·
It's cool to see an organization working with CL in production. I totally understand why more companies don't follow (and honestly I'm not sure I'd want to coex
by ravi-delia 5y ago
It's cool to see an organization working with CL in production. I totally understand why more companies don't follow (and honestly I'm not sure I'd want to coexist in a CL codebase with more than a few programmers) but it's still encouraging.
- linkhem 5y ago> (and honestly I'm not sure I'd want to coexist in a CL codebase with more than a few programmers) What are your thoughts here? I’ve found lisps to be my favorite languages to read other people’s code in.
- threatofrain 5y agoPerhaps it's because of typing. Personally I find that structural insights on code from static analysis to be just as important if not more than local readability. I also generally find that it's the complexity of program strategy that impairs local readability more than syntax or style.
- reikonomusha 5y agoThis may help: https://github.com/coalton-lang/coalton https://github.com/coalton-lang/coalton
- brabel 5y agoCommon Lisp has type declarations and I think on a big code base, I would want to declare most if not all of my function types. And the types are not just for information: the compilers can and do optimise heavily if you ask for it with `(optimise 3)`! You can get nearly as fast as C.
- reikonomusha 5y agoWithout a library like Coalton, the type system built into Lisp is pretty limited. (It feels pretty similar to C's.) So you can't[1] declare types like "list of foo" or "function that takes any type and returns the same type". [1] There is something called a SATISFIES type which lets you turn any globally defined predicate function into a type, but I don't find that it's used widely in practice, because the compiler can't reason about it.
- wiz21c 5y agoNot sure if separating the language from its available libraries is really helpful...
- reikonomusha 5y agoIt is, because libraries like Coalton don't give you an expressive type system "for free", you also have to agree to write your code in a certain way. As such, it's completely reasonable for Lispers to opt out of using such opinionated libraries, and instead using only what's provided by the standard. If you do use a library like Coalton, then you get a type system pretty close to Haskell's.
- threatofrain 5y agoHey, do you use Coalton, and how mainstream would you say it is?
- gmfawcett 5y agoI'm fairly sure that their company created Coalton: https://coalton-lang.github.io/20211010-introducing-coalton/ https://coalton-lang.github.io/20211010-introducing-coalton/
- reikonomusha 5y agoIt's pretty new and not yet considered mainstream. But it's under active development and is used for real commercial projects.
- deleted 5y ago[deleted]
- medo-bear 5y agoyou don't need to run lisp in a large team. if you adopt lisp you only need 10 programmers to do what 100 will do in another language :)
- ducharmdev 5y agoI hear sentiments like this often with lisp, but if this were the case, why isn't everyone using lisp?
- mrcode007 5y agoLargely because of myths surrounding it, for example parenthesis syntax and lack of editor support. With paredit, you get meta level direct AST manipulation support in emacs that is still light years ahead of any programming IDE out there. I think the other fear factor is you have to think a lot more about how to approach the problem when writing Common Lisp and it requires a more complete engineer due to a smaller library ecosystem. Usually there is one and sometimes two libraries for doing X and if not you’re up for making a library yourself. I’m attaching an example of how quickly you can write TLS 1.3 by a single person in Common Lisp. At the time I wrote this library most websites still struggled with TLS 1.3 support. The point is that most software creators don’t have the breath and depth of knowledge required to be proficient in LISP if they only posses siloed domain knowledge. Links: https://github.com/mateuszb/tls1.3 https://github.com/mateuszb/tls1.3 If you want an example of expressivity you can take a look at EC crypto with a full NIST test vector set in about 300 lines of code https://github.com/mateuszb/tls1.3/blob/master/elliptic-curves.lisp https://github.com/mateuszb/tls1.3/blob/master/elliptic-curv...
- bmitc 5y ago> With paredit, you get meta level direct AST manipulation support in emacs that is still light years ahead of any programming IDE out there. Do you happen to know of a video or article with visual examples that demonstrates this? I always hear about these things with Common Lisp, but I have personally never seen it. I’d love to understand how this works or enables people.
- na85 5y agoI started a project in 2021 using CL. I'm solo, but I think if your team adhered to a style guide that (among other things) enforces use of Quicklisp or similar for managing dependencies, and puts strict^H^H^H^H^H^H draconian limits on when macros are acceptable, it would be no worse than many other languages.
- quickthrower2 5y agoMacros (and in other languages meta programming) should only be allowed when the writer is going to produce top notch documentation ^H write a oreilly-publish-worthy book on how the hell their thing works. With beginner tutorials! You write DSL, you write book!
- ravi-delia 5y agoI guess when I say I wouldn't want to work on a CL project with other programmers, it's more for their benefit than mine :)
- galaxyLogic 5y agoJust a thought: Writing micro-services might be of some help. Let each programmer write their own micro-service
- hardwaresofton 5y agoAdditionally limiting people to only writing own micro-services if all the platform guarantees (guard rails, really) are implemented is a good idea. If the platform-standard tooling still works -- expected logging libs, tracing, etc -- you can use what you like to do the actual work.
- DerArzt 5y agoAw yes, the hellscape that will exist when someone's pet micro-service losses it's creator as they leave for another org. They decided to write it in a language that nobody else on the team is familiar with, and now that decision has come home to roost.