X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-TCPREMOTEIP: 207.224.51.38 X-Authenticated-UID: jpd AT noqsi DOT com Content-Type: multipart/signed; boundary="Apple-Mail=_8FF2230B-0A65-4F36-A62C-DC1682FCF008"; protocol="application/pgp-signature"; micalg=pgp-sha512 Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\)) Subject: Re: [geda-user] A fileformat library X-Pgp-Agent: GPGMail 2.5.2 From: John Doty In-Reply-To: Date: Sat, 2 Jan 2016 22:19:37 -0700 Message-Id: References: <1512221837 DOT AA25291 AT ivan DOT Harhan DOT ORG> <20151222232230 DOT 12633 DOT qmail AT stuge DOT se> <0F6F1D0F-4F07-48EA-90FE-836EAD4E2354 AT noqsi DOT com> <0FCF3774-F93C-4BFF-BB61-636F75DCCACB AT noqsi DOT com> To: geda-user AT delorie DOT com X-Mailer: Apple Mail (2.1878.6) Reply-To: geda-user AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: geda-user AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk --Apple-Mail=_8FF2230B-0A65-4F36-A62C-DC1682FCF008 Content-Type: multipart/alternative; boundary="Apple-Mail=_32E0A445-4093-4F42-A102-540C2F3DFCE4" --Apple-Mail=_32E0A445-4093-4F42-A102-540C2F3DFCE4 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=windows-1252 On Jan 2, 2016, at 9:27 PM, Britton Kerin (britton DOT kerin AT gmail DOT com) [via = geda-user AT delorie DOT com] wrote: >=20 >=20 > On Sat, Jan 2, 2016 at 6:07 PM, John Doty wrote: >=20 > On Jan 2, 2016, at 7:47 PM, Britton Kerin (britton DOT kerin AT gmail DOT com) = [via geda-user AT delorie DOT com] wrote: >=20 >>=20 >>=20 >> On Sat, Jan 2, 2016 at 4:38 PM, John Doty wrote: >>=20 >> On Jan 2, 2016, at 6:07 PM, Britton Kerin (britton DOT kerin AT gmail DOT com) = [via geda-user AT delorie DOT com] wrote: >>=20 >>> Personally I find formats like this: >>>=20 >>> device=3DRESISTOR >>> T 44400 49300 5 10 1 1 90 0 1 >>>=20 >>> substantially less readable than ones with field names, but they are = indeed easy to parse. >>=20 >> Personally, I rarely edit these things manually except for the text = fields, which are not difficult to find. The fact that they=92re easy to = parse is handy for automation. >>=20 >>> The pcb format is quite a bit more elaborate and the savings from = not rolling your own parser are more significant. >>>=20 >>> I think you're criteria for what should go in libgeda are spot-on = btw. Nor do I have any problem with a C interface calling python or = gschem or for that matter C++. I do think providing a clean C interface = to libgeda gets by far the best return on investment, since it's so = widely known and with a little care wrappers can then be provided almost = automatically for a wide variety of languages (via SWIG or some other = similar mechanism -- or maybe Xorn facilitates this, I'm a little = unclear). >>=20 >> I don=92t find deconstructing C data structures particularly easier = than parsing the format above. Just another layer I have to penetrate to = get to the data. I do significant processing with simple things like = sed, which don=92t handle binary data. >>=20 >> Wrappers CAN be provided, but will they? FFI programming is not the = easiest thing. I hear complaints about the need for developers to = maintain code. It seems to me that one way to address these concerns is = to avoid and eliminate unnecessary code. >>=20 >> Good question. It's a great result if you get it but a lot more work = than using a serialization library, which is why the latter approach = seems to me like a useful step in the right direction. > Serialization library? Why do you want a extra, unnecessary, opaque = interface? What, exactly, are you trying to accomplish? >=20 > Two things: >=20 > 1. A human- and partial-parser-script-readable format We have that, I think. But you left out the most important virtue: = *simple*. >=20 > 2. Full parsers for as many languages as possible without writing = them by hand So instead, you need to write an interface between a complicated parser = and every application by hand. Where=92s the gain? >=20 > Now take a look at the design goals for YAML: >=20 > http://www.yaml.org/spec/1.2/spec.html#id2708649 >=20 > It's a good fit. If it was only a matter of the technical merits I = would say as close to perfect as it gets with software. Compare it to http://wiki.geda-project.org/geda:file_format_spec YAML is enormously more complex to no advantage for us. > Unfortunately there's the usual good-versus-most-popular trade-off in = deciding between YAML and JSON. I still favor YAML in this case, = largely because I can't look at people like you and honestly claim that = JSON is in all respects fun to read/edit/sed over etc., and because my = personal experience with JSON is that although the parsers are truly = ubiquitous they have some annoying characteristics (at least the Perl = one does). But since it doesn=92t relieve the need of the application programmer to = understand the interface, it is merely adding more code for no gain (or = even negative gain, given the added complexity). And neither YAML nor = JSON is as universally readable and processable as the format we have. >=20 > Britton >=20 John Doty Noqsi Aerospace, Ltd. http://www.noqsi.com/ jpd AT noqsi DOT com --Apple-Mail=_32E0A445-4093-4F42-A102-540C2F3DFCE4 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=windows-1252
On Jan 2, 2016, at 9:27 PM, Britton = Kerin (britton DOT kerin AT gmail DOT com) = [via geda-user AT delorie DOT com] = <geda-user AT delorie DOT com>= wrote:



On Sat, Jan 2, 2016 at 6:07 PM, John Doty <jpd AT noqsi DOT com> wrote:

On Jan 2, 2016, at 7:47 PM, = Britton Kerin (britton DOT kerin AT gmail DOT com) [via geda-user AT delorie DOT com] <geda-user AT delorie DOT com> = wrote:



On Sat, Jan 2, 2016 = at 4:38 PM, John Doty <jpd AT noqsi DOT com> wrote:

On Jan 2, 2016, at = 6:07 PM, Britton Kerin (britton DOT kerin AT gmail DOT com) [via geda-user AT delorie DOT com] <geda-user AT delorie DOT com> = wrote:

Personally I find formats like this:

  = device=3DRESISTOR
  T 44400 49300 5 10 1 1 90 0 = 1

substantially less readable than ones with field names, but = they are indeed easy to = parse.

Personally, I rarely edit = these things manually except for the text fields, which are not = difficult to find. The fact that they=92re easy to parse is handy for = automation.

  The pcb format is quite a bit more elaborate and the = savings from not rolling your own parser are more = significant.

I think you're criteria for what should go in libgeda are = spot-on btw.  Nor do I have any problem with a C interface calling = python or gschem or for that matter C++.  I do think providing a = clean C interface to libgeda gets by far the best return on investment, = since it's so widely known and with a little care wrappers can then be = provided almost automatically for a wide variety of languages (via SWIG = or some other similar mechanism -- or maybe Xorn facilitates this, I'm a = little unclear).

I don=92t find = deconstructing C data structures particularly easier than parsing the = format above. Just another layer I have to penetrate to get to the data. = I do significant processing with simple things like sed, which don=92t = handle binary data.

Wrappers CAN be provided, = but will they? FFI programming is not the easiest thing. I hear =  complaints about the need for developers to maintain code. It = seems to me that one way to address these concerns is to avoid and = eliminate unnecessary = code.

Good question.  = It's a great result if you get it but a lot more work than using a = serialization library, which is why the latter approach seems to me like = a useful step in the right = direction.
Serialization library? = Why do you want a extra, unnecessary, opaque interface? What, exactly, = are you trying to = accomplish?

Two = things: 

    = 1.  A human- and partial-parser-script-readable = format

We have = that, I think. But you left out the most important virtue: = *simple*.


    2.  = Full parsers for as many languages as possible without writing them by = hand

So instead, you = need to write an interface between a complicated parser and every = application by hand. Where=92s the gain?


Now take = a look at the design goals for YAML:


It's a good fit.  If it was only a matter of the = technical merits I would say as close to perfect as it gets with = software.

Compare it = to http://wiki.ge= da-project.org/geda:file_format_spec
YAML is enormously = more complex to no advantage for us.

Unfortunately there's the usual = good-versus-most-popular trade-off in deciding between YAML and = JSON.  I still favor YAML in this case, largely because I can't = look at people like you and honestly claim that JSON is in all respects = fun to read/edit/sed over etc., and because my personal experience with = JSON is that although the parsers are truly ubiquitous they have some = annoying characteristics  (at least the Perl one = does).

But since it = doesn=92t relieve the need of the application programmer to understand = the interface, it is merely adding more code for no gain (or even = negative gain, given the added complexity). And neither YAML nor JSON is = as universally readable and processable as the format we = have.


Britton


John = Doty        =       Noqsi = Aerospace, Ltd.

http://www.noqsi.com/

jpd AT noqsi DOT com



= --Apple-Mail=_32E0A445-4093-4F42-A102-540C2F3DFCE4-- --Apple-Mail=_8FF2230B-0A65-4F36-A62C-DC1682FCF008 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIcBAEBCgAGBQJWiK9qAAoJEF1Aj/0UKykR/mUQAK38Q0qvQzd/vcVZJQjMD3T2 osTxJ5XUTQ0qDrD2tsYQvTXyEXZ4G3U2JMvVbyWchkLBxLVW7sFqBGHUur9nZYhl m6ZM6NW6Sh8Yyud0ljrIyvfM1RVlov5ZEYdnoDyii9nF1nig8+Lb+bMQ+7a+8G8c 6fqGLgS4gBeV0he9fiCc69B8AzW80wKP9F79QUBpAZRtT7Na4w9TcfhD6jMQTcJb TX0bPN4GlLUhb9YdXKNuDUSyNDZS+tR5MnLJLWZlSPTa0OzGhSaYHvh7PJryzYTa NUgQTnIO0JOa0ONG5BvFtt3Xfph7p8h7OsGLQ4/8xQfSs6mk+TcEU+UozNKac0RQ aBew4tOuDR9hMiyfZPNgLpy/mmgPVboCXyl3Jj1xac/sMpZQrr+O886SgRSGz+HO pS2sblwuBv9JqgX1Rq1pQ0e6R8rEW1j3WJ5zT+g18899qVYXS5Uc1AoyHwNzG9aO 5YGp/x4SSJ418yUPX47dlw3mx2t0DG2/REC2jggJANwSGxsWo+N+I60tikphPu1C qRwJPVS7EhPm7hv6LOSi87tT1lkBEtCuzpLreB4Yu6ZIR40BAb7XWH/EwlCUE265 fuXaJgl9n+cXjzd/JVll1H7aU4cr6syWF+Mdlhxn0RPqI+kYR1LJA5t5oTWYInut iQDLr1NtDgajMRO1LMS3 =/yty -----END PGP SIGNATURE----- --Apple-Mail=_8FF2230B-0A65-4F36-A62C-DC1682FCF008--