[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: C and Emacs Lisp code parts
From: |
Andreas Röhler |
Subject: |
Re: C and Emacs Lisp code parts |
Date: |
Sat, 2 Jul 2016 08:34:43 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux i686; rv:45.0) Gecko/20100101 Icedove/45.1.0 |
On 01.07.2016 22:31, Davis Herring wrote:
BTW think at the fate of bazaar. Here Python was at stake and for a time
it growed quickly. Assume the easiness of Python as a factor of success.
But finally a C-based tool won the race, while bazaar went into bigger
and bigger issues. Why? :-)
This has officially gotten ridiculous beyond the reach of emoticons.
$ cd /usr/libexec/git-core
$ file * | grep text
git-add--interactive: a /usr/bin/perl -w script text executable
git-am: POSIX shell script text executable
git-bisect: POSIX shell script text executable
git-difftool: a /usr/bin/perl script text executable
git-difftool--helper: POSIX shell script text executable
git-filter-branch: POSIX shell script text executable
git-instaweb: POSIX shell script text executable
git-lost-found: POSIX shell script text executable
git-merge-octopus: POSIX shell script text executable
git-merge-one-file: POSIX shell script text executable
git-merge-resolve: POSIX shell script text executable
git-mergetool: POSIX shell script text executable
git-mergetool--lib: POSIX shell script text executable
git-parse-remote: POSIX shell script text executable
git-pull: POSIX shell script text executable
git-quiltimport: POSIX shell script text executable
git-rebase: POSIX shell script text executable
git-rebase--interactive: POSIX shell script text executable
git-relink: a /usr/bin/perl script text executable
git-repack: POSIX shell script text executable
git-request-pull: POSIX shell script text executable
git-sh-setup: POSIX shell script text executable
git-stash: POSIX shell script text executable
git-submodule: POSIX shell script text executable
git-web--browse: POSIX shell script text executable
Git, like init (and /etc/init.d), Emacs, NumPy, and basically every
other non-trivial software system in existence, consists of a mix of
compiled and interpreted code according to the strengths and
weaknesses of each. Everyone knows this.
So why you tell that?
My suggestion is about re-considerating, reversing a kind of dogmatic
pro-elisp policy - as I felt it.
While completely agree with Clément's posts here --stressing the
benefits of Lisp debugging etc.--
these strength is less important WRT lifetime of core functions.
The idea is about reflecting the reasons which part to keep in C, which
in Lisp. Don't have a quick answer for that. Roughly would favor to look
what belongs to user-space, what not. Also stuff which is used seldom
probably doesn't deserve C, etc.
Everyone also knows that no practical benefit is to be had from the
(substantial!) effort of rewriting all the high-level code in C (or
why not hand-tuned assembler?) because of
<https://en.wikipedia.org/wiki/Amdahl's_law>. The numbers that govern
your life in that law are the ones that, erm, everyone has told you
need to be measured in order to make any kind of useful decisions.
Amdahl is about processing power raised by number of kernels, no idea
what the example should contribute here.
Git is widely celebrated for its efficiency. Much of that comes from
the design of its (on-disk) data structures; minimizing the cost of
disk access is rather more important than the language that is used to
search them.
Davis
Still don't understand why qualifying git "C-based" should be wrong.
$ cd git
$ ls
abspath.c mailinfo.h
aclocal.m4 mailmap.c
advice.c mailmap.h
advice.h Makefile
alias.c match-trees.c
alloc.c merge-blobs.c
archive.c merge-blobs.h
archive.h merge.c
archive-tar.c merge-recursive.c
archive-zip.c merge-recursive.h
argv-array.c mergesort.c
argv-array.h mergesort.h
attr.c mergetools
attr.h name-hash.c
base85.c notes.c
bisect.c notes-cache.c
bisect.h notes-cache.h
blob.c notes.h
blob.h notes-merge.c
block-sha1 notes-merge.h
branch.c notes-utils.c
branch.h notes-utils.h
builtin object.c
builtin.h object.h
bulk-checkin.c pack-bitmap.c
bulk-checkin.h pack-bitmap.h
bundle.c pack-bitmap-write.c
bundle.h pack-check.c
cache.h pack.h
cache-tree.c pack-objects.c
cache-tree.h pack-objects.h
check_bindir pack-revindex.c
check-builtins.sh pack-revindex.h
check-racy.c pack-write.c
ci pager.c
color.c parse-options.c
color.h parse-options-cb.c
column.c parse-options.h
column.h patch-delta.c
combine-diff.c patch-ids.c
command-list.txt patch-ids.h
commit.c path.c
commit.h pathspec.c
commit-slab.h pathspec.h
compat perl
config.c pkt-line.c
config.mak.in pkt-line.h
config.mak.uname po
configure.ac ppc
connect.c preload-index.c
connected.c pretty.c
connected.h prio-queue.c
connect.h prio-queue.h
contrib progress.c
convert.c progress.h
convert.h prompt.c
copy.c prompt.h
COPYING quote.c
credential.c quote.h
credential-cache.c reachable.c
credential-cache--daemon.c reachable.h
credential.h read-cache.c
credential-store.c README.md
csum-file.c ref-filter.c
csum-file.h ref-filter.h
ctype.c reflog-walk.c
daemon.c reflog-walk.h
date.c refs
decorate.c refs.c
decorate.h refs.h
delta.h RelNotes
diff.c remote.c
diffcore-break.c remote-curl.c
diffcore-delta.c remote.h
diffcore.h remote-testsvn.c
diffcore-order.c replace_object.c
diffcore-pickaxe.c rerere.c
diffcore-rename.c rerere.h
diff-delta.c resolve-undo.c
diff.h resolve-undo.h
diff-lib.c revision.c
diff-no-index.c revision.h
dir.c run-command.c
dir.h run-command.h
Documentation send-pack.c
editor.c send-pack.h
entry.c sequencer.c
environment.c sequencer.h
ewah server-info.c
exec_cmd.c setup.c
exec_cmd.h sha1-array.c
fast-import.c sha1-array.h
fetch-pack.c sha1_file.c
fetch-pack.h sha1-lookup.c
fmt-merge-msg.h sha1-lookup.h
fsck.c sha1_name.c
fsck.h shallow.c
generate-cmdlist.sh shell.c
gettext.c sh-i18n--envsubst.c
gettext.h shortlog.h
git-add--interactive.perl show-index.c
git-archimport.perl sideband.c
git-bisect.sh sideband.h
git.c sigchain.c
git-compat-util.h sigchain.h
git-cvsexportcommit.perl split-index.c
git-cvsimport.perl split-index.h
git-cvsserver.perl strbuf.c
git-difftool--helper.sh strbuf.h
git-difftool.perl streaming.c
git-filter-branch.sh streaming.h
git-gui string-list.c
git-instaweb.sh string-list.h
gitk-git submodule.c
git-merge-octopus.sh submodule-config.c
git-merge-one-file.sh submodule-config.h
git-merge-resolve.sh submodule.h
git-mergetool--lib.sh symlinks.c
git-mergetool.sh t
git-p4.py tag.c
git-parse-remote.sh tag.h
git-quiltimport.sh tar.h
git.rc tempfile.c
git-rebase--am.sh tempfile.h
git-rebase--interactive.sh templates
git-rebase--merge.sh thread-utils.c
git-rebase.sh thread-utils.h
git-relink.perl trace.c
git-remote-testgit.sh trace.h
git-request-pull.sh trailer.c
git-send-email.perl trailer.h
git-sh-i18n.sh transport.c
git-sh-setup.sh transport.h
git-stash.sh transport-helper.c
git-submodule.sh tree.c
git-svn.perl tree-diff.c
GIT-VERSION-GEN tree.h
gitweb tree-walk.c
git-web--browse.sh tree-walk.h
gpg-interface.c unicode_width.h
gpg-interface.h unimplemented.sh
graph.c unix-socket.c
graph.h unix-socket.h
grep.c unpack-trees.c
grep.h unpack-trees.h
hashmap.c update_unicode.sh
hashmap.h upload-pack.c
help.c url.c
help.h url.h
hex.c urlmatch.c
http-backend.c urlmatch.h
http.c usage.c
http-fetch.c userdiff.c
http.h userdiff.h
http-push.c utf8.c
http-walker.c utf8.h
ident.c varint.c
imap-send.c varint.h
INSTALL vcs-svn
khash.h version.c
kwset.c versioncmp.c
kwset.h version.h
levenshtein.c walker.c
levenshtein.h walker.h
LGPL-2.1 wildmatch.c
line-log.c wildmatch.h
line-log.h worktree.c
line-range.c worktree.h
line-range.h wrap-for-bin.sh
list-objects.c wrapper.c
list-objects.h write_or_die.c
ll-merge.c ws.c
ll-merge.h wt-status.c
lockfile.c wt-status.h
lockfile.h xdiff
log-tree.c xdiff-interface.c
log-tree.h xdiff-interface.h
mailinfo.c zlib.c
$
- Re: C and Emacs Lisp code parts, (continued)
- Re: C and Emacs Lisp code parts, Eli Zaretskii, 2016/07/01
- Re: C and Emacs Lisp code parts, Andreas Röhler, 2016/07/01
- Re: C and Emacs Lisp code parts, Eli Zaretskii, 2016/07/01
- Re: C and Emacs Lisp code parts, Fabrice Popineau, 2016/07/02
- Re: C and Emacs Lisp code parts, Eli Zaretskii, 2016/07/02
- Re: C and Emacs Lisp code parts, Alan Mackenzie, 2016/07/01
- Re: C and Emacs Lisp code parts, Andreas Röhler, 2016/07/01
- Re: C and Emacs Lisp code parts, Alan Mackenzie, 2016/07/01
- Re: C and Emacs Lisp code parts, Andreas Röhler, 2016/07/01
- Re: C and Emacs Lisp code parts, Davis Herring, 2016/07/01
- Re: C and Emacs Lisp code parts,
Andreas Röhler <=
- Re: C and Emacs Lisp code parts, Paul Eggert, 2016/07/02
- Re: C and Emacs Lisp code parts, Davis Herring, 2016/07/05
- Re: C and Emacs Lisp code parts, Andreas Röhler, 2016/07/05
- Re: C and Emacs Lisp code parts, Eli Zaretskii, 2016/07/02
- Re: C and Emacs Lisp code parts, Andreas Röhler, 2016/07/02
- Re: C and Emacs Lisp code parts, Eli Zaretskii, 2016/07/02
- Re: C and Emacs Lisp code parts, Tom Tromey, 2016/07/01