Live data from Hacker News

I finally understand why I'm not allowed to use Lisp

groups.google.com

21–30 of 121 posts

Re: I finally understand why I'm not allowed to use Lisp

#21
post #16
post #14

Earlier quoted context omitted.

Re Mono: Microsoft is not suing Google for patents on operating systems but instead pressures the handset manufacturers using Android. Is there a guarantee that a customer can use Mono for commercial applications, without a shake down from Microsoft?

* Mono is backed by Novell and not Google * From the Mono Licensing FAQ [1]: "Microsoft has announced that the ECMA standards for C# and the CLI are covered under the Community Promise patent license. Basically a grant is given to anyone who want to implement those components for free and for any purpose." * The Novell-Microsoft agreements provide further protection for companies that choose to use Mono. [1] * Many c…

There's been some criticism of Microsoft's "Community Promise", such as this:

http://techrights.org/2009/07/09/community-promise-sham/

and

http://www.fsf.org/news/2009-07-mscp-mono

and of Mono in general:

http://www.fsf.org/news/dont-depend-on-mono

Re: I finally understand why I'm not allowed to use Lisp

#22
post #17

I find nothing interesting in the original post to be honest. Just somebody that has a superficial impression about C# is complaining. Even the first 25 comments that I read are of no particular interest. Meta: I wildly guess the HN post gets all the upvotes because initally people think that it will be about a google employee not allowed to use Lisp in google.

For this reason, I wrote a chrome extension that shows more of the subdomain on hacker news: https://chrome.google.com/extensions/detail/amenlkcfjlmchdpo...

Re: I finally understand why I'm not allowed to use Lisp

#23
post #20

Kudos to his manager for actually looking at the code and recognizing the problem. Maintainable code is extremely important. Just keep your code simple. Adding another layer of abstraction instead of writing a simple and readable loop (if the language doesn't have accumulators) is not a good solution. I've seen this too many times. Smart developers write complex code, just because they can (and often it does make it…

Whether your "simple loop" is actually simple depends on the complexity of the underlying problem. At a certain point, it takes less time to understand the abstraction + the code using that abstraction than to understand the fully-expanded code without the abstraction.

If you're just adding up the elements of an array, no big deal use a simple loop. If you're iterating through three lists of potentially unequal length processing some triplets and skipping others and returning some data structure based on that iteration, a raw loop is going to be anything but simple and readable while using an abstraction like CL's LOOP is going to result in something very manageable.

To give an empirical example off the top of my head, look at any compiler code written in C. Iterating over flow graphs is a big PITA because they're nested heterogenous structures (a procedure has basic blocks which has instructions which has uses and defs). You iterate over them a lot and a lot of iterations end up being complex triply-nested affairs. Nearly all compilers written in C use some sort of abstraction to deal with this complexity. Eg: GCC has a bunch of macros of the form FOR_EACH_ that use the pre-processor.

Re: I finally understand why I'm not allowed to use Lisp

#24
post #3

> I work in C# (worst language EVER!) You lose all credibility right there. C# is far from the worst language ever, and a pretty decent one among mainstream object oriented languages.

As soon as I read that I looked for the date of the post. May, 2007. This is before C# 3.0 was released and chances are he was even using 1.0 based on impressions from his boss. C# isn't half bad now, but back then, I agree it was fairly crummy.

IIRC generics came in 2.0 which narrows it a little.

Re: I finally understand why I'm not allowed to use Lisp

#25
post #21
post #16

Earlier quoted context omitted.

* Mono is backed by Novell and not Google * From the Mono Licensing FAQ [1]: "Microsoft has announced that the ECMA standards for C# and the CLI are covered under the Community Promise patent license. Basically a grant is given to anyone who want to implement those components for free and for any purpose." * The Novell-Microsoft agreements provide further protection for companies that choose to use Mono. [1] * Many c…

There's been some criticism of Microsoft's "Community Promise", such as this: http://techrights.org/2009/07/09/community-promise-sham/ and http://www.fsf.org/news/2009-07-mscp-mono and of Mono in general: http://www.fsf.org/news/dont-depend-on-mono

> techrights.org

That's where I stopped reading, but I'll say this: Nowhere in the FSF's critique of the MCP is it mentioned whether or not the promise itself is legally binding. From a bunch of people who are supposed to be legal experts. What does that tell you?

Re: I finally understand why I'm not allowed to use Lisp

#26
post #18
post #13

The same can be said for any statically typed language. Any language that binds types as late as possible is infinitely more enjoyable to work with than one that fixes types at compile time. Short of developing missile guidance systems I don't think static types are warranted for anything.

For me type inference changes the picture, since it reduces the duplication you see throughout Java-style statically typed code, but doesn't give up all the benefits.

The only benefit I'm aware of is slightly faster code and even then the dynamic version is almost always more readable and easier to maintain and refactor. The ideal would be a dynamic language with optional static typing but I have yet to see a language like that.

Re: I finally understand why I'm not allowed to use Lisp

#27
post #21
post #16

Earlier quoted context omitted.

* Mono is backed by Novell and not Google * From the Mono Licensing FAQ [1]: "Microsoft has announced that the ECMA standards for C# and the CLI are covered under the Community Promise patent license. Basically a grant is given to anyone who want to implement those components for free and for any purpose." * The Novell-Microsoft agreements provide further protection for companies that choose to use Mono. [1] * Many c…

There's been some criticism of Microsoft's "Community Promise", such as this: http://techrights.org/2009/07/09/community-promise-sham/ and http://www.fsf.org/news/2009-07-mscp-mono and of Mono in general: http://www.fsf.org/news/dont-depend-on-mono

In the professional Linux community, almost everyone views Mono-haters as nutters/trolls. If you have real concerns about Mono, I suggest that you contact Miguel de Icaza directly.

Email: miguel@gnome.org

Twitter: @migueldeicaza (http://twitter.com/#!/migueldeicaza)

Blog: http://tirania.org/blog/index.html

Re: I finally understand why I'm not allowed to use Lisp

#28
post #21
post #16

Earlier quoted context omitted.

* Mono is backed by Novell and not Google * From the Mono Licensing FAQ [1]: "Microsoft has announced that the ECMA standards for C# and the CLI are covered under the Community Promise patent license. Basically a grant is given to anyone who want to implement those components for free and for any purpose." * The Novell-Microsoft agreements provide further protection for companies that choose to use Mono. [1] * Many c…

There's been some criticism of Microsoft's "Community Promise", such as this: http://techrights.org/2009/07/09/community-promise-sham/ and http://www.fsf.org/news/2009-07-mscp-mono and of Mono in general: http://www.fsf.org/news/dont-depend-on-mono

You lost all credibility by citing techrights (AKA boycott novell).

Re: I finally understand why I'm not allowed to use Lisp

#29
post #18
post #13

The same can be said for any statically typed language. Any language that binds types as late as possible is infinitely more enjoyable to work with than one that fixes types at compile time. Short of developing missile guidance systems I don't think static types are warranted for anything.

For me type inference changes the picture, since it reduces the duplication you see throughout Java-style statically typed code, but doesn't give up all the benefits.

The main thing that make programming in statically typed languages painful isn't the additional type declarations (which, as you rightly point out, need not even exist in languages that do competent type inference), but with the constant need to wrestle with the type system to get your code to compile at all.

This is made doubly painful by the incredibly obtuse error messages spat out by some compilers, like:

  This expression has type   ((int * int) * string * string * channel) list
  but is here used with type ((int * int) * string * string * channel) list
or even more baroque and confusing monstrosities.

Programming in OCaml made me feel like I'd need to take years of type theory classes in order to feel really comfortable in the language.

In comparison, programming in Lisp is a joy, and very easy.

But, in defense of the modern statically typed languages like OCaml and Haskell, I'll have to admit that once you've finished wrestling with the type system and actually gotten your program to compile, you've probably eliminated whole classes of bugs that might still exist in a similar dynamically typed language program. Not to mention that it will save you the writing a ton of unit tests.

Re: I finally understand why I'm not allowed to use Lisp

#30
post #3

> I work in C# (worst language EVER!) You lose all credibility right there. C# is far from the worst language ever, and a pretty decent one among mainstream object oriented languages.

As soon as I read that I looked for the date of the post. May, 2007. This is before C# 3.0 was released and chances are he was even using 1.0 based on impressions from his boss. C# isn't half bad now, but back then, I agree it was fairly crummy.

[deleted]
Post reply on HN