On Wed, 13 Feb 2019 15:24:41 +0000, Stephen De Gabrielle
<spdegabrie...@gmail.com> wrote:

>As far as when to consult a specialist/expert I didn't mean a programming
>languages researcher, I was more referring to when you were designing a
>little language like a templating system or config file.  Would that be
>covered by the compilers course? My alma-mater doesn't offer a compilers
>course in their compsci degree
><https://www.cdu.edu.au/study/bachelor-computer-science-wcoms1-2018#!study-plan>


Disclaimer: I'm not an academic, and my own CS education was ~30 years
ago ... but I do look up occasionally to see what is being taught to
modern CS students.

Compiler courses usually are much more about the compiler than the
language being compiled.  Most often the students work to implement
some subset of an existing language, rather than designing a new one.

IMO, a compiler course or three is not going to make a good language
designer.  What makes a good designer is a lot of personal experience
with many different languages - and with different KINDS of languages
- seeing what works, what doesn't work, and what is confusing to
themselves and others.


>I suppose there is a scale:
>
>   1. programmer (without compilers course)

I began as a self taught programmer:  I knew several languages already
and had read texts on compilers and operating systems before I took my
first CS course.

At one time or another I have learned and used:

   BASIC       BASIC-11 [PDP],Commodore,Apple,Microsoft
   assembler   6502,8086,68K,ADSP21K
   Pascal      UCSD, Borland
   C           K&R .. current, 
   Modula-2 
   Scheme      R3RS .. R5RS, PLT, Racket
   Smalltalk   PARC Place
   C++         2.0 (pre ANSI) .. current
   C*          Connection Machine C
   SQL         SQL-86 .. current
   Common Lisp 
   ML          Edinburgh
   Prolog      Edinburgh
   Modula-3
   Java        1.4 .. current
   Python      2.6 / 3.0 .. current

This list includes only languages I've actually learned enough to use:
for school, for work, or for my own hacking.  I've investigated more
languages than I've bothered to really learn.

The order I learned them in sort of is reflected in the list above.
Obviously variants were picked up along the way as languages evolved
and as I encountered new implementations.  But I knew 3 varieties of
BASIC, 6502 assembler, UCSD and Borland Pascal, and ANSI C(89) before
I took any CS courses.


Even with this experience, I would hesitate before taking on design of
a new language.  Certainly I would draw from existing languages I
thought were relevant, and unless I strongly disagreed with some
choice they made, I would try to stick to their existing syntax and
semantics as much as possible.



>   2. did compilers at degree level (can still remember it and it covered
>   design decisions, as opposed to algorithms and data structures)

My course covered compiler implementation, not language design.
Obviously, by implementing a compiler for a language you can get a
feel for what is right and wrong with it.


>   3. Beautiful Racket and/or/ https://school.racket-lang.org/#brw
>   4. Racket School 'How to design Languages'
>   https://school.racket-lang.org/#htdl
>   5. http://cs.brown.edu/courses/cs173/ , PLAI, PAPL or a postgraduate
>   level (masters?)
>   6. PhD and beyond
>
>( I have no idea if the order I made up is right - and I don't remember the
>dragon book covering the HCI aspects of language design)

I have the 2nd edition and I've seen the 1st.  There was little or
nothing said in either about user issues.  I haven't seen the 3rd
edition. [Are there more now?]


On my shelf, I have 7 texts on compilers ranging from beginner to
advanced;  3 texts covering computation theory, type theory, and
semantics;  2 texts on garbage collection;  and the classics: SICP and
EoPL.

For the most part, the compiler books cover only how various language
design decisions affect the compiler and/or runtime support for the
language.  The only mention of how language features affect the user
is to note that if a feature presents ambiguity problems for the
compiler [in parsing or understanding], then that feature probably
also will be confusing to the user.


>I suppose if you are If you are at (1) and you need help you ask someone at
>(2) or above.
>
>I'd pay if PLT/Racket offered different levels of certification in
>DSL/Language design at different levels, or licensed someone do do it on
>their behalf for a percentage of the income.  (I regret not doing the mooc
>version of cs173/ <http://cs.brown.edu/courses/cs173/>PLAI when it was
>offered)
>
>S.


I would have little problem coding a standalone compiler in Racket, or
translating some other language into Racket as the target.

But so far as #lang or other advanced macrology intended to integrate
with other Racket code ... there I still would have to call myself an
amateur: for whatever reason I have yet to fully grasp Racket's syntax
objects and (meta)programming with them.


YMMV,
George

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to