D&C GLug - Home Page

[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]

Re: [LUG] Language wars was Re: Global variables in Python?

 

On 28/04/13 10:31, Gordon Henderson wrote:
> 
> At the risk of simply repeating xkcd...
> 
> http://xkcd.com/927/

Love it.

Anyone want to volunteer some languages to die.

I'll offer up these to start with....

PHP -> just learn Perl.

C -> you've had C++ for 30 years, really you can carry on much the same
if you really have to.

csh -> Just stop it.

M4 -> No idea - but it made sendmail config files as easy as writing
assembler macros, and I don't think it improves the readability of
autoconf. Maybe it just needs to be fenced into only being used for
assembly language macro creation.

Having pondered Lex/Flex & Yacc/Bison a few times, I think I can safely
say if there aren't better tools for compiler creation it is time
someone made some (I'm pretty sure there are, but a lot of the books
refer back to these inspite of that).

Makefile (?)

Not sure on this, I suspect it may me that you can "write bad makefiles
in any language", and even where they are used I rarely have to look at
them these days except to check flags were passed appropriately etc.
Then again if we had to automate it all perhaps it was too hard in the
first place.

They started of looking like:

---------- snip -----------------
     edit : main.o kbd.o command.o
             cc -o edit main.o kbd.o command.o

     main.o : main.c defs.h
             cc -c main.c
     kbd.o : kbd.c defs.h command.h
             cc -c kbd.c
     command.o : command.c defs.h command.h
             cc -c command.c
     clean :
             rm edit main.o kbd.o command.o
------------- snip--------------------

Which is fine although possibly a little non-descriptive, anyone who
knows what a compiler does, and the compiler command syntax can grasp it
instantly.

And these days they look like this:


---------snip---------------
...
am__nobase_list = $(am__nobase_strip_setup); \
  for p in $$list; do echo "$$p $$p"; done | \
  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
    if (++n[$$2] == $(am__install_max)) \
      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
    END { for (dir in files) print dir, files[dir] }'
am__base_list = \
  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
...
---------snip---------------

Anyone want to bet there isn't an exploitable security flaw in there? No
you can't have 30 minutes to answer.

Although maybe if I added "awk" and "sed" to the list, and said even if
they are better than Perl for some things they aren't better enough to
justify the cognitive overhead.

Those who started in the 1960s and even myself, have had years to become
familiar with this stuff (or in some cases just loathe it - moi?), but
anyone coming afresh will throws their hands up in horror and recreate
it in Python or some such, and then the next generation faced with 50
years of Python tool creation, and people still using all the above will
throw their hands up in horror and get their IBM Watson2 instance to
sort it out for them.

It is even hard to lose a lot of this, because it is easier to take sed,
M4 or awk to a new platform and then at some low critical mass you get
all of the software packaged in the GNU style, than rewrite all the
current packaging and compiling stuff. So even if we all agree never to
create any new bits, we'll still have the overhead of maintaining it all
for decades. Roll on the AI programmers, it'll be so much easier to
recode it all at Watson style speeds of comprehension.

-- 
The Mailing List for the Devon & Cornwall LUG
http://mailman.dclug.org.uk/listinfo/list
FAQ: http://www.dcglug.org.uk/listfaq