Previous Entry Share Next Entry

The Lisp Curse

...inability to finish things off properly. The phrase 'throw-away design' is absolutely made for the BBM and it comes from the Lisp community. Lisp allows you to just chuck things off so easily, and it is easy to take this for granted. I saw this 10 years ago when looking for a GUI to my Lisp. No problem, there were 9 different offerings. The trouble was that none of the 9 were properly documented and none were bug free. Basically each person had implemented his own solution and it worked for him so that was fine. This is a BBM attitude; it works for me and I understand it. It is also the product of not needing or wanting anybody else's help to do something.

Есть подозрение, что чувак чертовски прав.

zabivator, ау! у меня есть подозрение, что примерно об этом шла речь когда мы флеймили про Linux vs Windows – поскольку в никсах проще имеющимися тулзами быстро состряпать что-то под конкретную задачу, для них и нету по-настоящему хороших тулзов – поскольку плюс-минус опытным пользователям они уже не нужны, они свои нужды кое-как решают.

и у них не набирается критическая масса желания для того ,чтобы собираться в кучки и что-то делать – “зачем? и так всё есть”.

This entry was originally posted at It has comment count unavailable comments. Please comment there using OpenID.

  • 1
lionet April 16th, 2011
Это же самое справедливо для всех мощных языков. Питон, Хаскель, Эрланг. Куча поделок, но нет действительно всеохватывающих фреймворков.

На ассемблере (или C++ каком нибудь) цена любой фичи настолько высока, что поневоле хочется её сделать "правильно", задокументировать, продать кому-нибудь. Будучи проданной, у фичи возникает своя жизнь и своё рыночное давление, повышающее её качество.

На более мощных инструментах всё настолько быстро делается (посмотри на количество веб серверов для эрланга — их не делает только ленивый), что нет смысла оформлять поделки качественно. Стыдно брать деньги за десять строчек кода.

Сравни какие-нибудь Qpid и RabbitMQ: разницы в фичах почти нет, а размер code base — просто на порядки разный!

wizzard0 April 16th, 2011
> Будучи проданной, у фичи возникает своя жизнь и своё рыночное давление, повышающее её качество.

ППКС. Жаль, что про это редко думают.

dmytrish April 17th, 2011
Yes, it is a very honest and painful analysis of Lisp mindset. I've been lurking around some time at the Freenode's #lisp channel and its air is quite similar to one described above. Now I am still hoping that the Scheme community is much more Python-ish than Lisp-ish.
I can remember being stuck with ASDF, absence of proper documentation, archaic and ugly rudiments in Common Lisp, which its proponents refuse to perceive, absence of a simple and consistent GUI binding together with assurances of the superhuman power and flexibility of Lisp.

And I would like to know what do you mean by "really good tools"? I understand that I'm completely spoiled with One True Unix philosophy, but maybe you can show what's wrong with it?

wizzard0 April 17th, 2011
From my Unix experience, most things in it are more like a "proof of a concept". Of a really good concept. But only a concept, not a full-blown implementation.

It's very inconsistent, contrary to its adepts; inconsistent in UI, in API, in everything. Okay, this is called "Customization". But then everybody screams at me when I ask "Is there a way to make a package for every desktop linux in the world?" -> "You can't, you shouldn't!". Why? Windows, Mac, Android, iOS - everybody else got this stuff right.
On Windows, to use a specific feature of Windows Installer, you will need some minimum OS version or an update. But it's at least documented!

About tools... Look at the debuggers for Smalltalk and C#. Both are FAR superior to gdb, for example.

Okay, some may argue that a debugger is not needed. Show me a decent graph editor, at least? Everybody tells me to use Vim/Emacs + ancient GraphViz which is ancient, SLOW, buggy (including security bugs), and because it's slow we can't do WYSIWYG - I need to wait entire relayout-rerender cycle each time.

3D API? OpenGL? Don't make me laugh, OpenGL is THE API only because there is NO OTHER API. Same with sound - 3 (or 4) incompatible implementations, all with mysterious bugs, just great.
Same with async I/O.
Same with lots of scattered configuration files with TONS of bug-ridden incompatible syntax parsers

Shell and pipes? Oh. A stringly-typed mess which lacks meaningful error handling, multithreading (make -j ? how I supposed to debug THAT?), mixes API with UI (and forces app developers to minimalize and freeze output to stdout, because it's SUDDENLY supposed to be parsed by programs, not only by user), which in turn kills localizability and makes it VERY funny to process multibyte (UTF-8, etc) string encodings.

I can continue for an entire book, probably :)

dmytrish April 17th, 2011
Your comparison gdb vs Smalltalk/C# debugger is not quite correct: things are at different level, how can you compare unification and abundance of metainfonformation of latter languages/platforms with C/machine code? Yes, it's not an argument for you, but every task needs its means and way of realization: if an OS is written is C, there are reasons for it. Show me a popular OS implemented in C# nowadays.

I don't think the binary compatibility is so cool - maybe because of fact that I charmed with all those string-text-oriented stuff and expressive power of C at its level.
Unix had crossplatformness, standards, IPC, it's own native and ubiquitous scripting, integration of all parts (though it's stringly-typed, yes) far before any popular OS did (notwithstanding OpenVMS and other mainframe OSes). Its brilliant ideas were really implemented as for the previous generation of OSes - ideas that still is not implemented in any modern OS sufficiently. And yes, it's annoying that old, somewhat archaic OS has all this things that modern ones can't fully implement till now. Any OS written in dynamic, reflective, high-level, bytecode-compiled language, is still a proof of concept now and nothing more (it's a pity for me, indeed). I don't assert that Unix is modern, but it is brilliant anyway. Maybe, the fragmentation today caused by the fact that existing implementations are deprecated, but if there is a nice modern OS, it'll still be an Unix.

wizzard0 April 17th, 2011
Linux has one killer feature. It's free. zOS is better than either nix or win, but costs a LOT. Same thing with other productized OSes, like QNX, Nucleus, etc.

And it's very hard to develop a full-blown OS from scratch and still have it be free. You need billions of dollars (to cover reasonable range of hardware and software requirements that are expected to be 'taken for granted' now)

dmytrish April 17th, 2011
We just have different ideas what Unix is. I speak about the philosophy, not implementations. Orthogonality, clearness of main parts and principles. I don't even take into account its C infrastructure which is (or rather was) pretty good, though deprecated.

But I would like to see this nice design in the new modern OS, all nicety of Plan 9 (which is much more a Unix-for-me than Unix-for-you is Unix-for-me) combined with modern binary and language infrastructure.

dmytrish April 17th, 2011
On Windows, you must have all libraries with your program or make user to install it manually ("This app needs .NET framework version 3+").

You have all those undocumented and weird WinAPI and Natve API (yes, MSDN is great, but not so clear and comprehensive, as POSIX, SUSV and even manpages), sudden and significant changes in DirectX API;

You have no automation and cooperation between big programs (I don't speak about PowerShell), except manually copypaste needed information.
There's no adequate shell (powershell can not be used routinely).
Windows registry is really monstrous and its corruption affects the whole system.
Microsoft Visual C++ IDE without plugins? This Notepad with syntax highlighting? Every linux editor (except ed and cat) can do that!

So, your arguments is just a matter of taste. Let's speak about ideas.

wizzard0 April 17th, 2011
> all libraries with your program

There are far more vendors for Windows software than those for linux, that's why. Also, .net is distributed thru Windows Update (oh, unless you fear MSFT discovers you use crack and disable it)

Also, Windows has a working SxS implementation while most Linux distributions explode if I fiddle with multiple Python versions at the same time.

> all those undocumented and weird WinAPI

And an uniform object-oriented modular kernel. (This had hugely improved in Windows 7; situation has been worse before)


POSIX is really ancient standard that continues to set industry back dozens of years. Unfortunately, TRON, Plan9, and others have been crushed by the combined power of OSS and MSFT community.

> sudden and significant changes in DirectX API;

You can STILL use DirectX 5,6,7,8,9,10 in Windows 7, not only DX 11.

> no automation and cooperation

OLE anyone? It's a bad implementation too, but I greatly miss the abilities it provides in KDE/Gnome
Have you ever heard about WMI? Active Directory? MSMQ?

> no adequate shell
There was Javascript and VBScript scripting since Windows 98; a notable amount of Windows Server management scripts (from Resource Kit, etc) are written in JS/VBS.
But yes, the CMD is a horrible CP/M legacy.

> Windows registry is really monstrous

That's more a matter of taste - one homogeneous registry versus dozens of heterogeneous configs.

> Microsoft Visual C++ IDE without plugins

I don't develop in C++ a lot, so you may be right. But the C# IDE is good.

> Let's speak about ideas.

Windows is *only slightly* better than *nix. If you want to look at better ideas, look at PalmOS (original, webOS is nice outside but ugly inside), TRON (MTRON/BTRON), Plan9, Etoys, STEPS project.

dmytrish April 17th, 2011
thanks, it'll be an incentive to delve into Plan 9 :)

dmytrish April 20th, 2011
BTW, I understand now why some people prefer FreeBSD over Linux (it really puzzled me) - the former is mush less fragmented and for this kind of people it matters more than Linux features.

wizzard0 April 20th, 2011

kunaifusu April 17th, 2011
По-моему, чувак серьезно путает причину со следствием - Лисп маргинальный и поэтому хаотичный, а не маргинальный из за того, что хаотичный. Та же самая фигня с любым маргинальным языком - если в мире всего 1000 человек знают язык на серьезном уровне и из этой 1000 его как-то используют 100 то есть большие шансы, что к любой проект будет сделан в одиночку и не будет документирован/отлажен до уровня любого проекта в мэйнстриме где как минимум бедет 10 контрибьюторов и еще 100 человек будут файлить баги и писать доки.

wizzard0 April 17th, 2011
Хм. Здравое зерно есть, но полностью согласиться я не могу. Через стадию маргинальности проходили все языки, но не все остались хаотичными :)

Скорее уж, тогда цепочка выглядит так: "мощный -> сложный в освоении И требует меньшего кол-ва человек в среднем на проект -> маргинальный -> хаотичный

kunaifusu April 17th, 2011
Нет, мэйнстрим языки еще не прошли через стадию маргинальности Лиспа. У них она еще впереди.

wizzard0 April 17th, 2011
Поясни, пожалуйста.

kunaifusu April 17th, 2011
Лисп - маргинальный потому что им *уже* никто не пользуется, есть большая разница с языком, которым *еще* никто не пользуется. С++ 90х не страдал особой чистотой и стройностью, о том времени нам напоминают шедевры вроде MFC. Но потом он стал популярным и к нему написали boost и прочия ништяки. А вот Лисп популярным уже побыл и о того времени остался Common Lisp и прочия Максимы, больше популярным он не будет и ожидать появления чего-то подобного не стоит.

wizzard0 April 17th, 2011
> уже никто не пользуется

Возможно, вики гонит. Но если нет, тогда это идеально согласуется с автором. Ибо

> Dan Weinreb lists in his survey of Common Lisp implementations eleven actively maintained Common Lisp implementations
> The Scheme community actively maintains over twenty implementations

Это же пиздец. По своей реализации лиспа на каждых 100 человек (если я правильно понимаю масштабы его популярности).

(Deleted comment)
(Deleted comment)
wizzard0 April 18th, 2011
Посмотри на Pharo?

(Deleted comment)
wizzard0 April 18th, 2011
Нормальный дебаггер, например.

(Deleted comment)
wizzard0 April 18th, 2011
Какое отношение step-by-step имеет к heap snapshot'ам и рефлексии?

(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)
(Deleted comment)

Пределы совершенства

pingback_bot April 18th, 2011
User justy_tylor referenced to your post from Пределы совершенства saying: [...] ( Навеяно темой "мощных языков" в [...]

  • 1

Log in

No account? Create an account