Bro, do you even Haskell? :)

https://www.facebook.com/notes/juan-carlos-kuri-pinto/how-to-program-stateful-intertwined-ai-networks-graphs-in-stateless-modular-prog/10151687175972712

http://www.computerworld.com.au/article/261007/a-z_programming_languages_haskell/

On Thu, Aug 13, 2015 at 2:01 AM, Steve Richfield <[email protected]>
wrote:

> Mike,
>
> On Mon, Aug 3, 2015 at 12:34 PM, Mike Archbold <[email protected]>
> wrote:
>
>> This is a great classic book on programming languages, the Programming
>> Language Landscape.
>>
>>
>> http://www.amazon.com/Programming-Language-Landscape-Semantics-Implementation/dp/0023758716/ref=sr_1_1?ie=UTF8&qid=1438630302&sr=8-1&keywords=programming+language+landscape
>>
>> My favorite chapter is "The Swamp of Complexity."  In a nutshell --
>> too many languages with too much crap in them!
>
>
> The author completely missed the REAL problem with language complexity -
> that when it becomes necessary to radically alter the execution, e.g.
> vectorize the program to run on a supercomputer, then the size of the
> compiler grows as the SQUARE of the size of the language (actually,
> n*(n-1)/2, the number of interactions of components). Where more than two
> elements must be considered together, there is often a cubic component that
> can swamp even the quadratic component. If you have twice the language
> complexity, it takes four (or eight) times as much compiler code to compile
> it to a radically different architecture than that of the language. THAT is
> why so many supercomputers start out with APL and FORTRAN compilers, and
> why C compilers only vectorize simple loops that utilize a small subset of
> the language.
>
> Of course, having lots of cute statements that all translate to arithmetic
> and IF statements don't affect the compiler complexity much at all.
>
> Unfortunately, this book never considered truly parallel implementations,
> where everything runs at once - but rather they considered "parallel"
> programming to be simple multi-threaded programing.
>
> Indeed, on page 6 they list "the" dozen classes of computer languages,
> none of which come close to what I am trying to create.
>
> Still - I got my dollar's worth.
>
> Thanks.
> Steve
> ================
>
>> It looks like you can
>> get a copy for less than a buck....
>> Mike A
>>
>>
>> On 8/3/15, Steve Richfield <[email protected]> wrote:
>> > Hi all,
>> >
>> > I am working on a high-level FPGA programming language, that should also
>> > serve better than existing languages as an AGI implementation language
>> and
>> > a robotics programming language. This is designed to be executed on
>> FPGAs
>> > rather than CPUs, though a PC version is contemplated.
>> >
>> > Here are my early thoughts. All comments are welcome.
>> >
>> > Parallel Computing Language
>> > *Design Notes by Steve Richfield *as of Aug 2, 2015
>> >
>> > The goal of PCL is to provide a language to express algorithms in
>> parallel
>> > form for easy compilation to either parallel or sequential platforms,
>> > rather than forcing programmers to express their algorithms in a
>> probably
>> > inefficient sequential form, for a (nonexistent) compiler to translate
>> to a
>> > parallel form.
>> >
>> >
>> > The special need is to be able to translate to FPGA implementations,
>> which
>> > presently require efficient translation to be able to fit into existing
>> > hardware.
>> >
>> >
>> > *Existing Technology from which to Borrow*
>> >
>> > *APL structure:* In APL, everything is a matrix of varying
>> dimensionality,
>> > including zero dimensions (a simple variable). It includes numerous
>> array
>> > operations as operators in the language. Unfortunately, its promoters
>> have
>> > adopted syntax reminiscent to Sanskrit, which is enough to chase away
>> > anyone not well versed in matrix inversions, etc. Some of the IBM-360
>> > architecture was first worked out in APL.
>> >
>> >
>> > *Dartmouth BASIC MAT statements: *The original Dartmouth BASIC
>> recognized
>> > MAT at the beginning of statements to indicate that the statements
>> > specified matrix operations, rather than operations on variables. Hence,
>> > *MAT
>> > C=A*B* multiplied matrix *A* by matrix *B*, and stored the result in
>> matrix
>> > *C*. APL-like procedure is MUCH less opaque in this syntax.
>> >
>> >
>> > *COBOL PICTURE clauses:* COBOL provided an easy (though now arcane) way
>> of
>> > easily describing variable structure, which could be easily extended to
>> > meet present needs. Specifying *PICTURE 9999*, which could be
>> abbreviated
>> > *PIC
>> > 9(4)*, a programmer could easily state that a variable had to hold 4
>> > decimal digit values. In our implementation, *PICTURE 111111111111* or
>> *PIC
>> > 1(12)* could specify a 12-bit field, as could *PICTURE 7777* or *PICTURE
>> > FFF*. COBOL also allowed for fixed-point notation, which is also
>> important
>> > in FPGA context, e.g. with *PICTURE 999V99* to represent 3 digits to the
>> > left and two digits to the right of the implied decimal point. Provision
>> > would have to also be made for logarithmic notation. Note that in
>> addition
>> > to precisely specifying “variables”, this also guides debuggers on how
>> to
>> > display what they find. This approach would allow for specifying
>> pipeline
>> > widths to be as narrow as possible for each operation.
>> >
>> >
>> > *FORTRAN Arithmetic Statement Functions:* FORTRAN provides a one-line
>> way
>> > of specifying simple function subroutines, e.g.
>> > *RMS(A,B)=SQRT((A**2)+(B**2))* that are usually implemented by simple
>> > string substitution into their references, so they are executed as an
>> > in-line subroutine in C, but without the need to specify they are
>> in-line.
>> > Data chaining in complex operations would be easy to specify with such
>> > syntax.
>> >
>> >
>> > *Eliminating **GOTO** statements: *Parallel processing aside, there are
>> > plenty of good reasons to eliminate *GOTO* statements. In the process,
>> we
>> > should probably eliminate everything else that specifies anything
>> > conditional beyond conditional storage of computed results. The
>> presence of
>> > a particular condition that necessitates particular processing should be
>> > handled as an event, though it would be possible to fake it by
>> translating
>> > conditional logic into an event handler.
>> >
>> >
>> > *All “procedure” will be event-driven:* Where sequence is needed, it
>> will
>> > be triggered step-by-step, e.g. by *WHEN* statements. Where a long
>> sequence
>> > is needed, each step must be triggered by completing the previous step.
>> To
>> > avoid programming flags and *WHEN* clauses for each step, a *PROCEDURE*
>> > will be declared, that necessarily starts with a *WHEN* clause, after
>> which
>> > the compiler will assume that each step starts when the previous step
>> has
>> > completed. There may be any number of procedures simultaneously active
>> at
>> > any one time, but only one instance of any particular procedure, unless
>> it
>> > is declared as being *RECURSIVE* and/or *REENTRANT*. Where a procedure
>> > requires conditional operation within it, the conditional operation
>> will be
>> > triggered and entered via a *WHEN* statement. Note that complex *WHEN*
>> > statements, when implemented in hardware, only cost gates and NOT any
>> time.
>> >
>> >
>> > *Familiar Operations: *Familiar operations like SELECT ... CASE
>> statements
>> > will be provided, though they will “execute” in unfamiliar ways. For
>> > example, a SELECT statement will simultaneously “execute” all CASEs for
>> > which the stated conditions are satisfied.
>> >
>> >
>> > *Syntax:* Three different syntaxes will be supported, which can be
>> > intermixed on input. They are mathematical, familiar (similar to C), and
>> > verbose (similar to COBOL). For example, familiar *MAT C=A*B *in the
>> > example above would be simply *C=A*B* in mathematical form, and
>> *Multiply
>> > matrix A by matrix B giving matrix C*  in verbose form. Error messages
>> from
>> > the compiler would show both the input and the equivalent verbose
>> forms, to
>> > show how the compiler interpreted the statements.
>> >
>> >
>> > *Early implementations:* Initially this PCL will be a publication
>> language
>> > to specify the construction of complex programmable logic. Then, a
>> > translator will be written in a portable language like C to translate
>> > programs from PCL to C so that programs can be tested on personal
>> > computers, etc. Then, translators will be written to translate to FPGAs
>> > programming languages *Verilog* and *VHDL*, and finally, FPGAs will be
>> > adapted to become better targets for code produced by this process,
>> much as
>> > IBM 360/370 mainframes were designed as prime targets for COBOL
>> programs.
>> >
>> >
>> > *Other Applications:* This language comes VERY close to also meeting the
>> > needs for robotics applications, with many simultaneous tasks and close
>> > coupling to I/O, so it should be expanded to include anything that
>> might be
>> > missing to also serve robotics.
>> >
>> >
>> > *Comments:*  PLEASE comment on this at any level, most especially what
>> > other languages might serve this need, what features of other languages
>> > should be incorporated, what it might be missing, what might be wrong,
>> etc.
>> >
>> >
>> > Steve
>> >
>> >
>> >
>> > -------------------------------------------
>> > AGI
>> > Archives: https://www.listbox.com/member/archive/303/=now
>> > RSS Feed:
>> https://www.listbox.com/member/archive/rss/303/11943661-d9279dae
>> > Modify Your Subscription:
>> > https://www.listbox.com/member/?&;
>> > Powered by Listbox: http://www.listbox.com
>> >
>>
>>
>> -------------------------------------------
>> AGI
>> Archives: https://www.listbox.com/member/archive/303/=now
>> RSS Feed:
>> https://www.listbox.com/member/archive/rss/303/10443978-6f4c28ac
>> Modify Your Subscription: https://www.listbox.com/member/?&;
>> Powered by Listbox: http://www.listbox.com
>>
>
>
>
> --
> Full employment can be had with the stoke of a pen. Simply institute a six
> hour workday. That will easily create enough new jobs to bring back full
> employment.
>
> *AGI* | Archives <https://www.listbox.com/member/archive/303/=now>
> <https://www.listbox.com/member/archive/rss/303/23601136-e0982844> |
> Modify
> <https://www.listbox.com/member/?&;>
> Your Subscription <http://www.listbox.com>
>



-------------------------------------------
AGI
Archives: https://www.listbox.com/member/archive/303/=now
RSS Feed: https://www.listbox.com/member/archive/rss/303/21088071-f452e424
Modify Your Subscription: 
https://www.listbox.com/member/?member_id=21088071&id_secret=21088071-58d57657
Powered by Listbox: http://www.listbox.com

Reply via email to