Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!news.iecc.com!lnews.iecc.com!nerds-end From: Kaz Kylheku Newsgroups: comp.compilers Subject: Re: New Programming Language: Salmon Date: Thu, 3 Nov 2011 04:37:18 +0000 (UTC) Organization: A noiseless patient Spider Lines: 60 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <11-11-020@comp.compilers> References: <11-11-016@comp.compilers> NNTP-Posting-Host: lnews.iecc.com X-Trace: gal.iecc.com 1320349696 9272 64.57.183.34 (3 Nov 2011 19:48:16 GMT) X-Complaints-To: abuse@iecc.com NNTP-Posting-Date: Thu, 3 Nov 2011 19:48:16 +0000 (UTC) Keywords: design Posted-Date: 03 Nov 2011 15:48:16 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: x330-a1.tempe.blueboxinc.net comp.compilers:322 On 2011-11-02, Chris wrote: > I've created a new general purpose programming language and a full > interpreter for it. I'm looking for early adopters to give it a try > and give feedback. I had a good look at your reference manual, etc. My honest opinion is that you've created a fairly uninteresting 'blub' language, with new syntax and terminology for doing pretty ordinary things. For instance: quarks: objects that enumerate and identify, such that two quarks are either equal or unequal. New term for "symbol", with limitations. tagalongs: your new term for "property lists" that can be attached to objects, easily created with a couple of macros in Lisp and either weak hash tables or finalizations (non-ANSI, but common extensions) to build the assocation in a way that doesn't prevent garbage collection of unused objects. In about 15 minutes of coding, I can make myself the syntax which supports the following: (define-tagalong foo nil) ;; establish default value ;; associate some-object with 42 under the key 'foo (setf (get-tagalong some-object 'foo) 42) ;; retrieve it: (get-tagalong some-object 'foo) ;; retrieve unassigned tagalong (get-tagalong "string" 'foo) ;; yields nil, the default value ;; retrieve undeclared tatalong (get-tagalong "string" 'blah) ;; error: blah has no default value ;; shorthand macro (with-tagalongs (foo bar) some-object ;; now local symbols foo and bar alias for tagalongs 'foo and 'bar ;; of some-object (setf foo 42) ;; same as (setf (get-tagalong some-object 'foo) 42) ) (do-tagalongs some-object (indicator value) ;; this body iterates over the key/value tagalog pairs of some-object ) You've bogged down tagalongs with the possiblity of static type declarations, which don't really add much value; they are just ways to make the language get in your way. > I believe there's always room for new ideas, Why don't you introduce Salmon on Rosetta Code and try implementing a few of the tasks, so people can get some rough idea for how it stacks up against numerous other languages? In Rosetta, on the same page, people can see how a given task is solved in Python, Lisp, SNOBOL 4 (!), Visual Basic, Salmon, C++, you name it.