From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Arne Babenhauserheide Newsgroups: gmane.lisp.guile.user Subject: Re: How to make GNU Guile more successful Date: Mon, 13 Feb 2017 23:54:41 +0100 Message-ID: <87vasdaeha.fsf@web.de> References: <87lgtajpkc.fsf@web.de> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-Trace: blaine.gmane.org 1487026522 22356 195.159.176.226 (13 Feb 2017 22:55:22 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 13 Feb 2017 22:55:22 +0000 (UTC) User-Agent: mu4e 0.9.16; emacs 25.1.1 Cc: "guile-user@gnu.org" To: Panicz Maciej Godek Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Mon Feb 13 23:55:16 2017 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cdPWc-0005HX-BS for guile-user@m.gmane.org; Mon, 13 Feb 2017 23:55:14 +0100 Original-Received: from localhost ([::1]:59999 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cdPWh-0001o7-Vi for guile-user@m.gmane.org; Mon, 13 Feb 2017 17:55:20 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44759) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cdPWK-0001o0-2w for guile-user@gnu.org; Mon, 13 Feb 2017 17:54:58 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cdPWG-0001Hh-QP for guile-user@gnu.org; Mon, 13 Feb 2017 17:54:56 -0500 Original-Received: from mout.web.de ([212.227.15.3]:49721) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cdPWG-0001HY-Do for guile-user@gnu.org; Mon, 13 Feb 2017 17:54:52 -0500 Original-Received: from fluss ([85.212.69.50]) by smtp.web.de (mrweb003 [213.165.67.108]) with ESMTPSA (Nemesis) id 0Lw0vl-1cL8XF0x8X-017lB1; Mon, 13 Feb 2017 23:54:48 +0100 In-reply-to: X-Provags-ID: V03:K0:rIBYiZG1z/yue2jyuNueflhehIY7FjoAowhzEd4yiUjJCYbfem6 SUmZsdPz9X65j0RGGSQIMdvSKXPJoQNZO49dGHXBxeNwuqPR8P7FbHL3GmjehiXXN8Ys7N2 zhjVPtlse/qMTua4gF/VHsgxVRdSfEsUa3viFT7JAmjiwmGzo6Y3hNwf6kJUktHWME3QIxn MNNBr3LhucB8ZpX4SLKyQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:BQs12tCQHfw=:dojsLqBi/nhPUX1P0ttud5 pNTVuLT6YZ6uJRQk0G2qyh/XfYwCCEJ3xRLv7yxeYKxGDr4wT0M1VSBZzeCmt/5lsUzKYTbFQ rHYUTgCtTC8wH1KX6aCBbop6BNtUxb5sU7m4WnLNFhu6WgbQTM3F3hLzaowwNyOXJdz2zI2aN sb/S+gguveGbu8rAw0WwM8waQZrsu3wxGgQvTmJqNonndbq7LZ6qsBK3ZlRJ6LVM2GNvR6zgU BfSkDJwf+YfYi3Mi6yKzKVLhGnONQH/CqPSJrQvyXN+itDR27b13g7HgqCMu6vwh6Bpx4elyk E/zQtdvLjF4NMdQK0aikJUYNZBWU0iKiTgBEWja7pGa5DyM/QV1HhpI14TU/F6N3Sm7zyXHcC qmQ7AJBpwwW9WfMgZdL5fEZAjOKzzdp8mE2sbV7jT4nXPmv742dhWyFcYZPhQyIykLjM24xSC xzN1YLtjFQgHKvihKt/d37ke3ryzaFGd9L5VPFAO2qye6U6wGByaGQ7zHUKsqqtSf5rFtvMFp cGBqJUbPCN1qf3VqeSsaCuzV2Sj6WNLeahok30Wa0VC54Tf31gDvFMa9ATQd/JLIfsGqlLpb4 LSkHK1Wlc05M/VyokfJnd3bg0l6AQIz4h/ugnuIZ7UxwN/EJoJXmRdGlVl5wZTC16Dj4so3P/ ueJutyMiVcr3b2lwhcWoKOK34IyfYtzH+VtmWmSWk6svJD0hdLP6KieRt3XYsLXcyFIChP45O mau/lXaf483LBNVjqnG0BR7kHsGNHAW/mQrZ9Pf1QFE/IQ5uAjMKDEiygBo= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.15.3 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.org gmane.lisp.guile.user:13187 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Panicz Maciej Godek writes: > 2017-02-13 12:06 GMT+01:00 Arne Babenhauserheide : > There's also this problem with Scheme that it is a very diverse > community with plethora of implementations. And while I use Guile, I > don't mind using Chicken or Chez or Gambit for various purposes. Or > even Stalin sometimes. Maybe, instead of getting a better compiler, we > should focus on integrating existing compilers? You=E2=80=99ll have to ask Andy Wingo about all the hidden complexity in ju= st wiring in a compilier. I assume it=E2=80=99s pretty big. I think the r7rs folks are working in that regard, to make it possible to write code which you can simply run through another Scheme implementation if you need those strengths. I started to use (import (...)) to get closer to that: Getting used to the portable stuff (also it=E2=80=99s shorter than (use-modules (...)). But= not everything is portable, and performance critical stuff most definitely isn=E2=80=99t. And for the stuff I do, most things get performance critical at some point. Even looking for null-bytes in a file becomes a bottleneck if you have a few hundred TiB to check. Though I mainly need to write Python at work (Scheme isn=E2=80=99t widespre= ad enough for the folks there =E2=80=94 Python is everywhere in science nowadays). It=E2=80=99s still efficient to do that and I enjoy it, but not = as much as writing Scheme. >> And it's easy to packages. >> > >> > =3D> Another pain topic. In reality it's very easy to package >> > all sort of guile programs for guix. But guix itself needs >> > to be more stable. >> >> I wish I had guildhall ready. Got hit by >> time-eaten-by-other-project-because-guildhall-was-priority-three. >> >> It needs to be easy to not just package some code, but also to share >> that package without hitting a bottleneck. >> > What happened to initiatives like Scheme NOW, that tried to integrate > various groups of developers. I did not hear from that. > Or why can't we just "steal" eggs from Chicken? (I mean it. They already > have that problem solved) Do you mean, integrating eggs into Guile so we could just use them? Conceptually what would be needed for that is a metadata field: "Works with Guile". And practically someone to write the integration. We could also have guildhall working, and add a tool for converting chicken eggs into guildhall packages (and ideally vice versa). Then people could do the required Guile integration steps once and provide the packages to all who might want them. >> > Python is successful because it has a massive number >> > of libraries. >> > >> This is a social problem. For a deeper discussion why it is a problem, >> see http://winestockwebdesign.com/Essays/Lisp_Curse.html >> "Lisp is so powerful that problems which are technical issues in other >> programming languages are social issues in Lisp." >> >> We can counter this with easy tutorials and with writing something like >> canonical Scheme. But for this, we need to define a canonical Scheme >> which is hits the performance and readability sweet-spot for >> Guile. Canonical code must be close to the fastest code. >> > Practically put: We need Andy Wingo to nitpick the tutorial about things >> which will cause overheads the compiler cannot fix easily =E2=80=94 incl= uding >> expensive use of macros. > I definitely oppose. If Chez has something solved better, why not use > Chez? It=E2=80=99s not "why not use Chez", but rather "what should I teach new people?" They are already learning a new language. When I now go and point them towards many different implementations which differ in details of stuff I teach them, I=E2=80=99m throwing more complexity at them. More things to understand before even starting to write working code. Maybe it would already help to mark the code which will work the same in all (r7rs) Schemes. Is there stuff which is well optimized in all Schemes? Who knows that? The r7rs benchmarks look like this is very much not the case: http://ecraven.github.io/r7rs-benchmarks/benchmark.html (Or rather, the benchmarks would ask: "why should I *not* use Chez or stalin for everything I do?" Because those are the fastest for most tasks.) But that might mean to write less elegant or efficient code to keep it cross-implementation. Should I rather teach new people to solve a problem as well as possible, or teach them to solve a problem in a portable way? In my case, I decided to use Guile by checking Scheme implementations. There were three with roughly equal activity and features. I chose Guile, because it=E2=80=99s a GNU project and it has a lo= ng history of surviving changing maintainers, so my skills are most likely to stay useful. > The ultimate goal is not to optimize programs, but programmers. I=E2=80=99m not sure that I want to optimize them, I want to teach them too= ls to be more efficient and enjoy their work more (and teach myself the same). > But I agree on the point of the canonical code. I think that the "zen > of python" is one of important factors of making it popular. I think > it could be the same with Scheme, but here the problem is that people > have various ideas with regard to how the "ideal" program should look > like. I think one important point for Scheme would be to gather some consensus points. The Zen of Python is part of what made that one community strong. There is no reason why there should not be a Zen of Scheme, along with implementation-specific Koans which extend it. Do you have ideas for principles which could be shared by most Schemers? > For example, I have a very strong opinion with regard to the use of > pattern matching and restructuring -- I try to use destructuring > almost everywhere (from what I've seen, Clojure programmers are alike > with this regard). However, I am aware that there are people who don't > like it that much, like Taylan or Barry Margolin. > > Also, I think that the astounding success of R provides hints with > regard what is needed for a programming language to gain popularity. R > has a large repository of packages that fills a certain niche. When I > advertised my Pamphlet on Hacker News, someone responded critically: > "are there out of the box libraries to estimate a zero inflated > negative binomial regression model in guile". Of course, if I knew > what a zero-inflated negative binomial regression model, I could > deliver an implementation by just explaining the notions used in that > phrase. I think there=E2=80=99s a quote which applies here: "Most people only use 2= 0% of the capabilities of any program, but they do not use the same 20%." =E2=80=94 Joel Spolksy, if I remember correctly. And to make people really dig into it, a programming language must work well for all tasks they might encounter. That=E2=80=99s why a comprehensive standard library is important: It gives the assurance that the skills you learn will stay useful wherever you go. There=E2=80=99s a nice quote from Rust folks: "people started to feel safe = when we told them about unsafe" =E2=80=94 someone on GNU social. This essentially says: they then saw that Rust could work in the uncomfortable way some of their tasks might require. That they could take it into harsher territory, if needed. > (But then again, I try to write functional programs whenever > possible, often consciously sacrificing time complexity of my > solutions, and I'm aware that not everybody will like it.) I look for ease of understanding, with functional programming techniques being a useful tool to reduce complexity and to simplify refactoring. But then, this is a point where we actually move into a similar direction out of different motives. I think the only problem here is the danger of assuming contradiction where there does not need to be any. Just different nuances of Zen :) Best wishes, Arne =2D-=20 Unpolitisch sein hei=C3=9Ft politisch sein ohne es zu merken --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIcBAEBCAAGBQJYojkzAAoJEBPvjUUkA8ProP8P/ihQZ2/Xph1Z22CXmIbGsFDZ K84T2EMp1y7tj3UuRTtj7ZleOdlbKDahGpMNCL4EJpF9stkAbYU1NmHaq/Xyrl5h BYU/aJwntzJ5QUFn8qut1L6SmDuXhDgjehYi1PvuDRsKPkf/VKII9Qr0D3+0kszZ 1zipsJHTGHesEYCNHFYZy9KtTT8x46KIs5++xcwhUVlv919QI/eAZ7q70j6t1q+y zmO6KXcbt+RlRK/gB/msIlXUp7uXzOgzzjr0d3lZ/nxLqiKHYQJpyvA69m44YZeS /eDTumy/knWP8sLu8WOi4lCtj0C++qVQStuAhwJ1Zql+8BEvGXp6Lm+/dPpdNCZR GWcBt1FqrsZEmuLGYNenQXatcxqVD8II9Elv205ojawL6MBaJAODoqK7sSCC2lO5 50EvZfZgIqjBTro/XrD/3R/hgeajM90E0hJGXh0EbIdhooO3RkKeVguSE+VRfUpN kFKR89z4haC14iWbnjbw4RxiS6YXs3gLPRsNeMlqAaBRzQ/88R+CQ8QTxmAWacn0 U/nzreMhgwi+lM0VIm87vo40WDTGhsHq5Iq0mHE/wf2+BfIHmCHCaHso0Y/xTpwD 7e5ZDMx4oHyMWMzKgjinXsBUxEJjYcUaOEgcXy+3VK+4oH2sWQFoaA7gGs1SAg1M YmbKScyJnSQshOxPnl1A =rew9 -----END PGP SIGNATURE----- --=-=-=--