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.